diff --git a/autodocs/other_docs.rst b/autodocs/other_docs.rst new file mode 100644 index 00000000..e69de29b diff --git a/extension/writing-process/.eslintrc.json b/extension/writing-process/.eslintrc.json new file mode 100644 index 00000000..923c0251 --- /dev/null +++ b/extension/writing-process/.eslintrc.json @@ -0,0 +1,30 @@ +{ + "env": { + "browser": true, + "es2021": true, + "node": true + }, + "extends": [ + "eslint:recommended" + ], + "globals": { + "document": false, + "escape": false, + "navigator": false, + "unescape": false, + "window": false, + "describe": true, + "before": true, + "it": true, + "expect": true, + "sinon": true, + "chrome": true + }, + "plugins": [], + "parserOptions": { + "ecmaVersion": 2020, + "sourceType": "module" + }, + "rules": { + } +} diff --git a/extension/writing-process/.gitignore b/extension/writing-process/.gitignore new file mode 100644 index 00000000..763301fc --- /dev/null +++ b/extension/writing-process/.gitignore @@ -0,0 +1,2 @@ +dist/ +node_modules/ \ No newline at end of file diff --git a/extension/writing-process/README.md b/extension/writing-process/README.md new file mode 100644 index 00000000..f1a35f29 --- /dev/null +++ b/extension/writing-process/README.md @@ -0,0 +1,43 @@ +# writing-process + +Tracks writing in Google Docs, and provides nifty insights to you and your teachers! + +## Development + +This extension directory structure was created with [Extension CLI](https://oss.mobilefirst.me/extension-cli/). +The original extension, which was just a handful of javascript files, were then copied into the structure. + +### To Begin + +To get started, run the following: + +```bash +cd extention/writing-process +npm install +``` + +### Available Commands + +| Commands | Description | +| --- | --- | +| `npm run start` | builds extension into `dist/`, watches for file changes | +| `npm run build` | generate release version - `release.zip` | +| `npm run docs` | generate source code docs into `public/documentation` | +| `npm run clean` | removes `dist/` directory | +| `npm run test` | run unit tests | +| `npm run sync` | update projects config files for `extension-cli` | + +For CLI instructions see [User Guide →](https://oss.mobilefirst.me/extension-cli/) + +### Learn More + +#### Extension Developer guides + +- [Getting started with extension development](https://developer.chrome.com/extensions/getstarted) +- Manifest configuration: [version 3](https://developer.chrome.com/docs/extensions/mv3/intro/) +- [Permissions reference](https://developer.chrome.com/extensions/declare_permissions) +- [Chrome API reference](https://developer.chrome.com/docs/extensions/reference/) + +#### Extension Publishing Guides + +- [Publishing for Chrome](https://developer.chrome.com/webstore/publish) diff --git a/extension/writing-process/assets/locales/en/messages.json b/extension/writing-process/assets/locales/en/messages.json new file mode 100644 index 00000000..04975919 --- /dev/null +++ b/extension/writing-process/assets/locales/en/messages.json @@ -0,0 +1,11 @@ +{ + "appName": { + "message": "writing-process" + }, + "appShortName": { + "message": "writing-process" + }, + "appDescription": { + "message": "Tracks writing in Google Docs, and provides nifty insights to you and your teachers!" + } +} \ No newline at end of file diff --git a/extension/extension/icons/lousy-fountain-pen-48.png b/extension/writing-process/assets/lousy-fountain-pen-48.png similarity index 100% rename from extension/extension/icons/lousy-fountain-pen-48.png rename to extension/writing-process/assets/lousy-fountain-pen-48.png diff --git a/extension/writing-process/package.json b/extension/writing-process/package.json new file mode 100644 index 00000000..8cd782ae --- /dev/null +++ b/extension/writing-process/package.json @@ -0,0 +1,76 @@ +{ + "name": "writing-process", + "description": "Tracks writing in Google Docs, and provides nifty insights to you and your teachers!", + "version": "1.0.0.2", + "homepage": "http://chrome.google.com/webstore", + "author": "Piotr Mitros, Bradley Erickson", + "repository": { + "type": "git", + "url": "https://github.com/ETS-Next-Gen/writing_observer/tree/master/extension/writing-process" + }, + "scripts": { + "start": "xt-build -e dev -w", + "start:firefox": "xt-build -e dev -p firefox -w", + "build": "xt-build -e prod", + "build:firefox": "xt-build -e prod -p firefox", + "clean": "xt-clean", + "docs": "xt-docs", + "test": "xt-test", + "coverage": "nyc --reporter=lcov npm run test", + "sync": "xt-sync" + }, + "babel": { + "presets": [ + "@babel/preset-env" + ] + }, + "eslintIgnore": [ + "test/**/*" + ], + "devDependencies": { + "extension-cli": "latest" + }, + "xtdocs": { + "source": { + "include": [ + "README.md", + "src" + ] + } + }, + "xtbuild": { + "copyAsIs": [ + "./src/pages/*" + ], + "js_bundles": [ + { + "name": "background", + "src": "./src/background.js" + }, + { + "name": "inject", + "src": "./src/inject.js" + }, + { + "name": "service_worker", + "src": "./src/service_worker.js" + }, + { + "name": "writing_common", + "src": "./src/writing_common.js" + }, + { + "name": "writing", + "src": "./src/writing.js" + }, + { + "name": "3rdparty/sha256", + "src": "./src/3rdparty/sha256.js" + }, + { + "name": "3rdparty/sha256", + "src": "./src/3rdparty/sha256.js" + } + ] + } +} \ No newline at end of file diff --git a/extension/extension/3rdparty/sha256.js b/extension/writing-process/src/3rdparty/sha256.js similarity index 100% rename from extension/extension/3rdparty/sha256.js rename to extension/writing-process/src/3rdparty/sha256.js diff --git a/extension/extension/background.js b/extension/writing-process/src/background.js similarity index 99% rename from extension/extension/background.js rename to extension/writing-process/src/background.js index c4fa4b91..75bc9de7 100644 --- a/extension/extension/background.js +++ b/extension/writing-process/src/background.js @@ -11,7 +11,7 @@ var RAW_DEBUG = false; */ var WEBSOCKET_SERVER_URL = "wss://learning-observer.org/wsapi/in/" - +import { googledocs_id_from_url } from './writing_common'; /* TODO: FSM @@ -111,7 +111,7 @@ function websocket_logger(server) { function are_we_done() { if (state.has("chrome_identity") && state.has("local_storage")) { - event = {}; + var event = {}; event = add_event_metadata('metadata_finished', event); socket.send(JSON.stringify(event)); state.add("ready"); diff --git a/extension/extension/inject.js b/extension/writing-process/src/inject.js similarity index 100% rename from extension/extension/inject.js rename to extension/writing-process/src/inject.js diff --git a/extension/writing-process/src/manifest.json b/extension/writing-process/src/manifest.json new file mode 100644 index 00000000..9d26efaa --- /dev/null +++ b/extension/writing-process/src/manifest.json @@ -0,0 +1,50 @@ +{ + "name": "__MSG_appName__", + "short_name": "__MSG_appShortName__", + "description": "__MSG_appDescription__", + "homepage_url": "https://github.com/ETS-Next-Gen/writing_observer/tree/master/extension/writing-process", + "incognito": "not_allowed", + "version": "1.0.0.2", + "version_name": "1.0.0.2", + "manifest_version": 3, + "default_locale": "en", + "minimum_chrome_version": "88", + "permissions": [ + "webRequest", + "declarativeNetRequest", + "identity", + "identity.email", + "storage", + "nativeMessaging", + "scripting", + "activeTab" + ], + "icons": { + "48": "assets/lousy-fountain-pen-48.png" + }, + "background": { + "service_worker": "service_worker.js" + }, + "action": { + "default_popup": "pages/settings.html", + "default_icon": { + "48": "assets/lousy-fountain-pen-48.png" + }, + "default_title": "__MSG_appName__" + }, + "content_scripts": [{ + "matches": ["*://docs.google.com/document/*"], + "js": ["3rdparty/sha256.js", "writing_common.js", "writing.js"] + }], + "web_accessible_resources": [{ + "resources": ["inject.js"], + "matches": ["*://docs.google.com/*"], + "use_dynamic_url": true + }], + "host_permissions": [ + "*://docs.google.com/document/*" + ], + "options_ui": { + "page": "pages/options.html" + } +} \ No newline at end of file diff --git a/extension/extension/pages/action.css b/extension/writing-process/src/pages/action.css similarity index 100% rename from extension/extension/pages/action.css rename to extension/writing-process/src/pages/action.css diff --git a/extension/extension/pages/options.html b/extension/writing-process/src/pages/options.html similarity index 100% rename from extension/extension/pages/options.html rename to extension/writing-process/src/pages/options.html diff --git a/extension/extension/pages/options.js b/extension/writing-process/src/pages/options.js similarity index 100% rename from extension/extension/pages/options.js rename to extension/writing-process/src/pages/options.js diff --git a/extension/extension/pages/settings.html b/extension/writing-process/src/pages/settings.html similarity index 100% rename from extension/extension/pages/settings.html rename to extension/writing-process/src/pages/settings.html diff --git a/extension/extension/service_worker.js b/extension/writing-process/src/service_worker.js similarity index 100% rename from extension/extension/service_worker.js rename to extension/writing-process/src/service_worker.js diff --git a/extension/extension/writing.js b/extension/writing-process/src/writing.js similarity index 100% rename from extension/extension/writing.js rename to extension/writing-process/src/writing.js diff --git a/extension/extension/writing_common.js b/extension/writing-process/src/writing_common.js similarity index 98% rename from extension/extension/writing_common.js rename to extension/writing-process/src/writing_common.js index 49c3a648..a805c2dd 100644 --- a/extension/extension/writing_common.js +++ b/extension/writing-process/src/writing_common.js @@ -52,7 +52,7 @@ function treeget(tree, key) { } -function googledocs_id_from_url(url) { +export function googledocs_id_from_url(url) { /* Given a URL like: https://docs.google.com/document/d/jkldfhjklhdkljer8934789468976sduiyui34778dey/edit/foo/bar diff --git a/extension/writing-process/test/sample.js b/extension/writing-process/test/sample.js new file mode 100644 index 00000000..d3f9a09f --- /dev/null +++ b/extension/writing-process/test/sample.js @@ -0,0 +1,6 @@ +describe('Test extension', () => { + + it('This is a dummy test', () => { + expect(true).to.be.true; + }); +});