/
package.json
156 lines (156 loc) · 15.9 KB
/
package.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
{
"name": "talkie",
"private": true,
"version": "4.1.2",
"description": "Text-to-speech (TTS) browser extension button.",
"scripts": {
"clean": "rimraf package/ && rimraf dist/ && rimraf web-ext-artifacts/ && rimraf lib/ && rimraf _locales/*/*.json~ _locales/*/messages.json _locales/*/messages.premium.json",
"build": "npm run --silent messages:refresh && npm run --silent build:copy:libs && rollup --config rollup.config.background.js && rollup --config rollup.config.popup.js && rollup --config rollup.config.options.js && rollup --config rollup.config.stay-alive.js && rollup --config rollup.config.extension-translator.js && npm run --silent build:chrome:free && npm run --silent build:webextension:free && npm run --silent build:chrome:premium && npm run --silent build:webextension:premium",
"build:copy:libs": "mkdirp lib/ && cp node_modules/webextension-polyfill/dist/browser-polyfill.min.js node_modules/webextension-polyfill/dist/browser-polyfill.min.js.map lib/ && npm run --silent build:copy:libs:react:min && npm run --silent build:copy:libs:react:dev",
"build:copy:libs:react:min": "cat node_modules/react/dist/react.min.js node_modules/react-redux/dist/react-redux.min.js node_modules/redux/dist/redux.min.js node_modules/prop-types/prop-types.min.js node_modules/react-dom/dist/react-dom.min.js node_modules/redux-thunk/dist/redux-thunk.min.js node_modules/redux-persist/dist/redux-persist.min.js > lib/react-libs.min.js",
"build:copy:libs:react:dev": "cat node_modules/react/dist/react.js node_modules/react-redux/dist/react-redux.js node_modules/redux/dist/redux.js node_modules/prop-types/prop-types.js node_modules/react-dom/dist/react-dom.js node_modules/redux-thunk/dist/redux-thunk.js node_modules/redux-persist/dist/redux-persist.js > lib/react-libs.js",
"build:chrome:free": "mkdirp package/chrome/ && rsync -a --files-from extension-files.txt . package/chrome/ && npm run --silent build:chrome:free:patch",
"build:chrome:free:patch": "npm run --silent build:patch:chrome:manifest -- package/chrome/manifest.json",
"build:chrome:premium": "mkdirp package/chrome-premium/ && npm run --silent build:patch:premium:filelist && rsync -a --files-from extension-files.premium.txt . package/chrome-premium/ && rename --force --delete '.premium' --glob 'package/chrome-premium/_locales/*/messages.premium.json' && npm run --silent build:chrome:premium:patch",
"build:chrome:premium:patch": "npm run --silent build:patch:chrome:manifest -- package/chrome-premium/manifest.json && npm run --silent build:patch:premium:manifest -- package/chrome-premium/manifest.json",
"build:webextension:free": "mkdirp package/webextension/ && rsync -a --files-from extension-files.txt . package/webextension/ && npm run --silent build:webextension:free:patch -- package/webextension/manifest.json",
"build:webextension:free:patch": "npm run --silent build:patch:webextension:manifest -- ",
"build:webextension:premium": "mkdirp package/webextension-premium/ && npm run --silent build:patch:premium:filelist && rsync -a --files-from extension-files.premium.txt . package/webextension-premium/ && rename --force --delete '.premium' --glob 'package/webextension-premium/_locales/*/messages.premium.json' && npm run --silent build:webextension:premium:patch",
"build:webextension:premium:patch": "npm run --silent build:webextension:free:patch -- package/webextension-premium/manifest.json && npm run --silent build:patch:premium:manifest -- package/webextension-premium/manifest.json",
"build:patch:chrome:manifest": "json -Ie \"this.version_name=this.version_name.replace(/ (Free|Premium) /, ' \\$1 Chrome Extension '); ['open-website-main', 'open-website-store-free', 'open-website-store-premium'].forEach((command) => delete this.commands[command].suggested_key); delete this.applications;\" -f",
"build:patch:webextension:manifest": "json -Ie \"this.version_name=this.version_name.replace(/ (Free|Premium) /, ' \\$1 WebExtension '); delete this.commands['read-clipboard'];\" -f",
"build:patch:premium:filelist": "sed -e 's/messages\\.json$/messages.premium.json/' -e '/^[^.]/ s_/free/_/premium/_' extension-files.txt > extension-files.premium.txt",
"build:patch:premium:manifest": "json -Ie \"this.description=this.description.replace('_Free','_Premium'); this.browser_action.default_title=this.browser_action.default_title.replace('_Free','_Premium'); this.version_name=this.version_name.replace(' Free ', ' Premium '); Object.keys(this.browser_action.default_icon).forEach((icon) => this.browser_action.default_icon[icon] = this.browser_action.default_icon[icon].replace('/free/', '/premium/')); Object.keys(this.browser_action.default_icon).forEach((icon) => this.icons[icon] = this.icons[icon].replace('/free/', '/premium/'));\" -f",
"rebuild": "npm run --silent clean && npm run --silent build",
"watch": "concurrently --prefix-colors cyan --kill-others --kill-others-on-fail --prefix '{index} {name} {time}' --names 'watch:background,watch:popup,watch:options,watch:stay-alive,watch:chrome:free,watch:chrome:premium,watch:webextension:free,watch:webextension:premium' 'npm run --silent watch:background' 'npm run --silent watch:popup' 'npm run --silent watch:options' 'npm run --silent watch:stay-alive' 'npm run --silent watch:chrome:free' 'npm run --silent watch:chrome:premium' 'npm run --silent watch:webextension:free' 'npm run --silent watch:webextension:premium'",
"watch:source": "concurrently --prefix-colors cyan --kill-others --kill-others-on-fail --prefix '{index} {name} {time}' --names 'watch:background,watch:popup,watch:options,watch:stay-alive' 'npm run --silent watch:background' 'npm run --silent watch:popup' 'npm run --silent watch:options' 'npm run --silent watch:stay-alive'",
"watch:tools": "concurrently --prefix-colors cyan --kill-others --kill-others-on-fail --prefix '{index} {name} {time}' --names 'watch:extension-translator' 'npm run --silent watch:extension-translator'",
"watch:background": "rollup --watch --config rollup.config.background.js",
"watch:popup": "rollup --watch --config rollup.config.popup.js",
"watch:options": "rollup --watch --config rollup.config.options.js",
"watch:stay-alive": "rollup --watch --config rollup.config.stay-alive.js",
"watch:extension-translator": "rollup --watch --config rollup.config.extension-translator.js",
"watch:chrome:free": "chokidar --silent 'dist/**/*.js' --command 'npm run --silent build:chrome:free'",
"watch:chrome:premium": "chokidar --silent 'dist/**/*.js' --command 'npm run --silent build:chrome:premium'",
"watch:webextension:free": "chokidar --silent 'dist/**/*.js' --command 'npm run --silent build:webextension:free'",
"watch:webextension:premium": "chokidar --silent 'dist/**/*.js' --command 'npm run --silent build:webextension:premium'",
"run:chrome:free": "mkdirp package/profiles/chrome/ && google-chrome --no-first-run --enable-logging=stderr --v=0 --enable-extension-activity-logging --error-console --user-data-dir=package/profiles/chrome/ --load-extension=package/chrome/",
"run:chrome:premium": "mkdirp package/profiles/chrome-premium/ && google-chrome --no-first-run --enable-logging=stderr --v=0 --enable-extension-activity-logging --error-console --user-data-dir=package/profiles/chrome-premium/ --load-extension=package/chrome-premium/",
"run:firefox:free": "web-ext --source-dir=package/webextension/ run --browser-console --start-url 'https://www.wikipedia.org/'",
"run:firefox:premium": "web-ext --source-dir=package/webextension-premium/ run --browser-console --start-url 'https://www.wikipedia.org/'",
"prepackage": "npm run --silent rebuild && npm run --silent test && npm run --silent messages:count",
"package": "npm run --silent package:chrome:free && npm run --silent package:webextension:free && npm run --silent package:chrome:premium && npm run --silent package:webextension:premium && npm run --silent package:sources",
"package:chrome:free": "rimraf web-ext-artifacts/ && web-ext --source-dir=package/chrome/ build && mv web-ext-artifacts/talkie*${npm_package_version}.zip \"talkie-joelpurra.com-${npm_package_version}-chrome-free.zip\"",
"package:chrome:premium": "rimraf web-ext-artifacts/ && web-ext --source-dir=package/chrome-premium/ build && mv web-ext-artifacts/talkie_premium*${npm_package_version}.zip \"talkie-joelpurra.com-${npm_package_version}-chrome-premium.zip\"",
"package:webextension:free": "rimraf web-ext-artifacts/ && web-ext --source-dir=package/webextension/ build && mv web-ext-artifacts/talkie*${npm_package_version}.zip \"talkie-joelpurra.com-${npm_package_version}-webextension-free.zip\"",
"package:webextension:premium": "rimraf web-ext-artifacts/ && web-ext --source-dir=package/webextension-premium/ build && mv web-ext-artifacts/talkie_premium*${npm_package_version}.zip \"talkie-joelpurra.com-${npm_package_version}-webextension-premium.zip\"",
"package:sources": "zip -r talkie-joelpurra.com-${npm_package_version}-sourcemaps.zip dist/ lib/",
"version:get": "git rev-parse --abbrev-ref HEAD | sed -n -e '/release/ s_release/v_v_ p'",
"version:update": "export TALKIE_VERSION=$(npm run --silent version:get | sed -e 's/^v//') && git diff-index --quiet HEAD -- && npm run --silent version:update:file -- manifest.json && npm run --silent version:update:file:free -- manifest.json && npm run --silent version:update:file -- package.json && npm run --silent version:update:file -- package-lock.json && git add manifest.json package.json package-lock.json && git commit -m \"${TALKIE_VERSION}\"",
"version:update:file": "json -Ie \"this.version='${TALKIE_VERSION}'\" -f",
"version:update:file:free": "json -Ie \"this.version_name='v' + this.version + ' Free (' + new Date().toISOString().substring(0,10) + ')'\" -f",
"test": "npm run --silent eslint",
"lint": "npm run --silent eslint && npm run --silent web-ext:lint && npm run --silent lint:copyright",
"lint:copyright": "grep -L 'This file is part of Talkie' $(find src -type f \\( -iname '*.js' -or -iname '*.jsx' -or -iname '*.html' \\)) | sed 's/^/File is missing copyright notice: /'",
"eslint": "eslint ./src",
"eslint:fix": "eslint --fix ./src",
"web-ext:lint": "npm run --silent web-ext:lint:chrome:free && npm run --silent web-ext:lint:webextension:free && npm run --silent web-ext:lint:chrome:premium && npm run --silent web-ext:lint:webextension:premium",
"web-ext:lint:chrome:free": "echo web-ext linting package/chrome/ && web-ext --source-dir=package/chrome/ lint --ignore-files ./resources/style/options.css ./resources/style/shared.css",
"web-ext:lint:chrome:premium": "echo web-ext linting package/chrome-premium/ && web-ext --source-dir=package/chrome-premium/ lint --ignore-files ./resources/style/options.css ./resources/style/shared.css",
"web-ext:lint:webextension:free": "echo web-ext linting package/webextension/ && web-ext --source-dir=package/webextension/ lint --ignore-files ./resources/style/options.css ./resources/style/shared.css",
"web-ext:lint:webextension:premium": "echo web-ext linting package/webextension-premium/ && web-ext --source-dir=package/webextension-premium/ lint --ignore-files ./resources/style/options.css ./resources/style/shared.css",
"chromestore": "npm run --silent chromestore:free && npm run --silent chromestore:premium",
"chromestore:free": "export WEBSTORE_TOKEN=$(chrome-webstore-manager refresh_token --client_id \"$CHROME_CLIENT_ID\" --client_secret \"$CHROME_CLIENT_SECRET\" --refresh_token \"$CHROME_REFRESH_TOKEN\") && npm run chromestore:free:update && npm run chromestore:free:publish",
"chromestore:free:update": "chrome-webstore-manager update enfbcfmmdpdminapkflljhbfeejjhjjk \"talkie-joelpurra.com-${npm_package_version}-chrome-free.zip\"",
"chromestore:free:publish": "chrome-webstore-manager publish enfbcfmmdpdminapkflljhbfeejjhjjk",
"chromestore:premium": "export WEBSTORE_TOKEN=$(chrome-webstore-manager refresh_token --client_id \"$CHROME_CLIENT_ID\" --client_secret \"$CHROME_CLIENT_SECRET\" --refresh_token \"$CHROME_REFRESH_TOKEN\") && npm run chromestore:premium:update && npm run chromestore:premium:publish",
"chromestore:premium:update": "chrome-webstore-manager update madmpgibncancdmkjflnifcdakndkngo \"talkie-joelpurra.com-${npm_package_version}-chrome-premium.zip\"",
"chromestore:premium:publish": "chrome-webstore-manager publish madmpgibncancdmkjflnifcdakndkngo",
"messages:translate": "npm run --silent messages:download && npm run --silent messages:refresh && npm run --silent messages:count",
"messages:download": "npm run --silent messages:sort && node ./dist/extension-translator.js . en base.json automatic.json && npm run --silent messages:sort",
"messages:refresh": "npm run --silent messages:sort && ./tools/translations/merge.sh && npm run --silent messages:sort && npm run --silent messages:override:refresh",
"messages:sort": "for MESSAGES in $(find ./_locales -name '*.json'); do jq --sort-keys '.' \"$MESSAGES\" > \"${MESSAGES}~\"; mv \"${MESSAGES}~\" \"$MESSAGES\"; done",
"messages:override:refresh": "for MESSAGES in $(find ./_locales \\( -name 'override.json' -or -name 'manual.json' \\)); do jq --slurp --sort-keys '.[0] as $en | .[1] | with_entries(.key as $key | .value |= (.original = $en[$key].message) + if $en[$key].description then { description: $en[$key].description } else {} end + if $en[$key].placeholders then { placeholders: $en[$key].placeholders } else {} end)' \"./_locales/en/messages.json\" \"$MESSAGES\" > \"${MESSAGES}~\"; mv \"${MESSAGES}~\" \"$MESSAGES\"; done",
"messages:count": "for MESSAGES in $(find ./_locales -name 'messages.json'); do jq 'to_entries | .[].key' \"$MESSAGES\"; done | sort | uniq -c"
},
"repository": {
"type": "git",
"url": "git+https://github.com/joelpurra/talkie.git"
},
"keywords": [
"tts",
"text-to-speech",
"browser",
"extension"
],
"author": {
"name": "Joel Purra",
"email": "code+github@joelpurra.com",
"url": "https://joelpurra.com/"
},
"license": "GPL-3.0",
"bugs": {
"url": "https://joelpurra.com/support/"
},
"homepage": "https://joelpurra.com/projects/talkie/",
"devDependencies": {
"@google-cloud/translate": "^0.8.1",
"babel-eslint": "^7.2.3",
"babel-plugin-external-helpers": "^6.22.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-object-rest-spread": "^6.23.0",
"babel-preset-env": "^1.5.1",
"babel-preset-react": "^6.24.1",
"bluebird": "^3.5.0",
"chokidar-cli": "^1.2.0",
"chrome-webstore-manager": "^0.4.1",
"concurrently": "^3.4.0",
"configvention": "^1.1.0",
"ent": "^2.2.0",
"eslint": "^3.12.2",
"eslint-config-standard": "^10.2.1",
"eslint-plugin-compat": "^1.0.2",
"eslint-plugin-import": "^2.3.0",
"eslint-plugin-no-unsafe-innerhtml": "^1.0.16",
"eslint-plugin-node": "^5.0.0",
"eslint-plugin-promise": "^3.4.0",
"eslint-plugin-react": "^7.0.1",
"eslint-plugin-standard": "^3.0.1",
"json": "^9.0.4",
"jsonfile": "^3.0.0",
"pre-commit": "^1.2.2",
"react": "^15.5.4",
"react-dom": "^15.5.4",
"react-redux": "^5.0.5",
"redux": "^3.6.0",
"redux-persist": "=4.8.0",
"redux-persist-crosstab": "=3.5.3",
"redux-thunk": "^2.2.0",
"rimraf": "^2.5.4",
"rollup": "^0.42.0",
"rollup-plugin-babel": "^2.7.1",
"rollup-plugin-buble": "^0.15.0",
"rollup-plugin-cleanup": "^1.0.0",
"rollup-plugin-commonjs": "^8.0.2",
"rollup-plugin-json": "^2.1.0",
"rollup-plugin-jsx": "^1.0.3",
"rollup-plugin-license": "^0.4.0",
"rollup-plugin-node-globals": "^1.1.0",
"rollup-plugin-node-resolve": "^3.0.0",
"rollup-plugin-replace": "^1.1.1",
"rollup-watch": "^4.0.0",
"rrssb": "^1.14.0",
"stream-to-promise": "^2.2.0",
"striptags": "^3.0.1",
"web-ext": "^1.8.1",
"webextension-polyfill": "^0.1.1"
},
"browserslist": [
"last 5 Chrome versions",
"last 5 Firefox versions"
],
"dependencies": {
"prop-types": "^15.5.10"
}
}