diff options
-rw-r--r-- | package-lock.json | 821 | ||||
-rw-r--r-- | package.json | 5 | ||||
-rw-r--r-- | src/components/settings/settings/EditSettingsForm.js | 21 | ||||
-rw-r--r-- | src/config.js | 3 | ||||
-rw-r--r-- | src/containers/settings/EditSettingsScreen.js | 21 | ||||
-rw-r--r-- | src/electron/ipc-api/download.js | 43 | ||||
-rw-r--r-- | src/electron/ipc-api/index.js | 2 | ||||
-rw-r--r-- | src/features/spellchecker/index.js | 28 | ||||
-rw-r--r-- | src/features/spellchecker/styles.js | 26 | ||||
-rw-r--r-- | src/helpers/i18n-helpers.js | 27 | ||||
-rw-r--r-- | src/i18n/languages.js | 80 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 1 | ||||
-rw-r--r-- | src/index.js | 14 | ||||
-rw-r--r-- | src/stores/AppStore.js | 64 | ||||
-rw-r--r-- | src/stores/DictionaryStore.js | 45 | ||||
-rw-r--r-- | src/stores/ServicesStore.js | 12 | ||||
-rw-r--r-- | src/stores/SettingsStore.js | 11 | ||||
-rw-r--r-- | src/stores/index.js | 2 | ||||
-rw-r--r-- | src/webview/contextMenu.js | 175 | ||||
-rw-r--r-- | src/webview/plugin.js | 29 | ||||
-rw-r--r-- | src/webview/spellchecker.js | 111 |
21 files changed, 1188 insertions, 353 deletions
diff --git a/package-lock.json b/package-lock.json index 6f1f11eba..ee8b20adf 100644 --- a/package-lock.json +++ b/package-lock.json | |||
@@ -1107,6 +1107,15 @@ | |||
1107 | "integrity": "sha512-EibsnbJerd0hBFaDjJStFrVbVBAtOy4dgL8zZFw0uOvPqzBAX59Ci8cgjg3+RgJIWhsB5A4c+pi+D4P9tQQh/A==", | 1107 | "integrity": "sha512-EibsnbJerd0hBFaDjJStFrVbVBAtOy4dgL8zZFw0uOvPqzBAX59Ci8cgjg3+RgJIWhsB5A4c+pi+D4P9tQQh/A==", |
1108 | "dev": true | 1108 | "dev": true |
1109 | }, | 1109 | }, |
1110 | "JSONStream": { | ||
1111 | "version": "1.3.5", | ||
1112 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", | ||
1113 | "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", | ||
1114 | "requires": { | ||
1115 | "jsonparse": "^1.2.0", | ||
1116 | "through": ">=2.2.7 <3" | ||
1117 | } | ||
1118 | }, | ||
1110 | "abbrev": { | 1119 | "abbrev": { |
1111 | "version": "1.1.1", | 1120 | "version": "1.1.1", |
1112 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | 1121 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", |
@@ -1168,6 +1177,22 @@ | |||
1168 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", | 1177 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", |
1169 | "dev": true | 1178 | "dev": true |
1170 | }, | 1179 | }, |
1180 | "agent-base": { | ||
1181 | "version": "4.2.1", | ||
1182 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", | ||
1183 | "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", | ||
1184 | "requires": { | ||
1185 | "es6-promisify": "^5.0.0" | ||
1186 | } | ||
1187 | }, | ||
1188 | "agentkeepalive": { | ||
1189 | "version": "3.5.2", | ||
1190 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", | ||
1191 | "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", | ||
1192 | "requires": { | ||
1193 | "humanize-ms": "^1.2.1" | ||
1194 | } | ||
1195 | }, | ||
1171 | "ajv": { | 1196 | "ajv": { |
1172 | "version": "5.5.2", | 1197 | "version": "5.5.2", |
1173 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", | 1198 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", |
@@ -1354,8 +1379,7 @@ | |||
1354 | "aproba": { | 1379 | "aproba": { |
1355 | "version": "1.2.0", | 1380 | "version": "1.2.0", |
1356 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", | 1381 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", |
1357 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", | 1382 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" |
1358 | "dev": true | ||
1359 | }, | 1383 | }, |
1360 | "archy": { | 1384 | "archy": { |
1361 | "version": "1.0.0", | 1385 | "version": "1.0.0", |
@@ -1805,11 +1829,6 @@ | |||
1805 | "integrity": "sha1-NqS6tZTAUP17UHvKDbMMLZKvT/I=", | 1829 | "integrity": "sha1-NqS6tZTAUP17UHvKDbMMLZKvT/I=", |
1806 | "dev": true | 1830 | "dev": true |
1807 | }, | 1831 | }, |
1808 | "bcp47": { | ||
1809 | "version": "1.1.2", | ||
1810 | "resolved": "https://registry.npmjs.org/bcp47/-/bcp47-1.1.2.tgz", | ||
1811 | "integrity": "sha1-NUvjMH/9CEM6ePXh4glYRfifx/4=" | ||
1812 | }, | ||
1813 | "bcrypt-pbkdf": { | 1832 | "bcrypt-pbkdf": { |
1814 | "version": "1.0.2", | 1833 | "version": "1.0.2", |
1815 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | 1834 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", |
@@ -2155,8 +2174,40 @@ | |||
2155 | "builtin-modules": { | 2174 | "builtin-modules": { |
2156 | "version": "1.1.1", | 2175 | "version": "1.1.1", |
2157 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", | 2176 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", |
2158 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", | 2177 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" |
2159 | "dev": true | 2178 | }, |
2179 | "builtins": { | ||
2180 | "version": "1.0.3", | ||
2181 | "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", | ||
2182 | "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=" | ||
2183 | }, | ||
2184 | "cacache": { | ||
2185 | "version": "11.3.1", | ||
2186 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.1.tgz", | ||
2187 | "integrity": "sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA==", | ||
2188 | "requires": { | ||
2189 | "bluebird": "^3.5.1", | ||
2190 | "chownr": "^1.0.1", | ||
2191 | "figgy-pudding": "^3.1.0", | ||
2192 | "glob": "^7.1.2", | ||
2193 | "graceful-fs": "^4.1.11", | ||
2194 | "lru-cache": "^4.1.3", | ||
2195 | "mississippi": "^3.0.0", | ||
2196 | "mkdirp": "^0.5.1", | ||
2197 | "move-concurrently": "^1.0.1", | ||
2198 | "promise-inflight": "^1.0.1", | ||
2199 | "rimraf": "^2.6.2", | ||
2200 | "ssri": "^6.0.0", | ||
2201 | "unique-filename": "^1.1.0", | ||
2202 | "y18n": "^4.0.0" | ||
2203 | }, | ||
2204 | "dependencies": { | ||
2205 | "y18n": { | ||
2206 | "version": "4.0.0", | ||
2207 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", | ||
2208 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" | ||
2209 | } | ||
2210 | } | ||
2160 | }, | 2211 | }, |
2161 | "cache-base": { | 2212 | "cache-base": { |
2162 | "version": "1.0.1", | 2213 | "version": "1.0.1", |
@@ -2531,7 +2582,6 @@ | |||
2531 | "version": "1.6.2", | 2582 | "version": "1.6.2", |
2532 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", | 2583 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", |
2533 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", | 2584 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", |
2534 | "dev": true, | ||
2535 | "requires": { | 2585 | "requires": { |
2536 | "buffer-from": "^1.0.0", | 2586 | "buffer-from": "^1.0.0", |
2537 | "inherits": "^2.0.3", | 2587 | "inherits": "^2.0.3", |
@@ -2917,6 +2967,19 @@ | |||
2917 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", | 2967 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", |
2918 | "dev": true | 2968 | "dev": true |
2919 | }, | 2969 | }, |
2970 | "copy-concurrently": { | ||
2971 | "version": "1.0.5", | ||
2972 | "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", | ||
2973 | "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", | ||
2974 | "requires": { | ||
2975 | "aproba": "^1.1.1", | ||
2976 | "fs-write-stream-atomic": "^1.0.8", | ||
2977 | "iferr": "^0.1.5", | ||
2978 | "mkdirp": "^0.5.1", | ||
2979 | "rimraf": "^2.5.4", | ||
2980 | "run-queue": "^1.0.0" | ||
2981 | } | ||
2982 | }, | ||
2920 | "copy-descriptor": { | 2983 | "copy-descriptor": { |
2921 | "version": "0.1.1", | 2984 | "version": "0.1.1", |
2922 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", | 2985 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", |
@@ -2940,8 +3003,7 @@ | |||
2940 | "core-util-is": { | 3003 | "core-util-is": { |
2941 | "version": "1.0.2", | 3004 | "version": "1.0.2", |
2942 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | 3005 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", |
2943 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", | 3006 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" |
2944 | "dev": true | ||
2945 | }, | 3007 | }, |
2946 | "cosmiconfig": { | 3008 | "cosmiconfig": { |
2947 | "version": "5.0.7", | 3009 | "version": "5.0.7", |
@@ -3032,6 +3094,11 @@ | |||
3032 | "array-find-index": "^1.0.1" | 3094 | "array-find-index": "^1.0.1" |
3033 | } | 3095 | } |
3034 | }, | 3096 | }, |
3097 | "cyclist": { | ||
3098 | "version": "0.2.2", | ||
3099 | "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", | ||
3100 | "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" | ||
3101 | }, | ||
3035 | "cz-conventional-changelog": { | 3102 | "cz-conventional-changelog": { |
3036 | "version": "2.1.0", | 3103 | "version": "2.1.0", |
3037 | "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.1.0.tgz", | 3104 | "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-2.1.0.tgz", |
@@ -3384,7 +3451,6 @@ | |||
3384 | "version": "3.6.1", | 3451 | "version": "3.6.1", |
3385 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", | 3452 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", |
3386 | "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", | 3453 | "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", |
3387 | "dev": true, | ||
3388 | "requires": { | 3454 | "requires": { |
3389 | "end-of-stream": "^1.0.0", | 3455 | "end-of-stream": "^1.0.0", |
3390 | "inherits": "^2.0.1", | 3456 | "inherits": "^2.0.1", |
@@ -3677,6 +3743,16 @@ | |||
3677 | } | 3743 | } |
3678 | } | 3744 | } |
3679 | }, | 3745 | }, |
3746 | "electron-dl": { | ||
3747 | "version": "1.12.0", | ||
3748 | "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-1.12.0.tgz", | ||
3749 | "integrity": "sha512-UMc2CL45Ybpvu66LDPYzwmDRmYK4Ivz+wdnTM0eXcNMztvQwhixAk2UPme1c7McqG8bAlKEkQpZn3epmQy4EWg==", | ||
3750 | "requires": { | ||
3751 | "ext-name": "^5.0.0", | ||
3752 | "pupa": "^1.0.0", | ||
3753 | "unused-filename": "^1.0.0" | ||
3754 | } | ||
3755 | }, | ||
3680 | "electron-download": { | 3756 | "electron-download": { |
3681 | "version": "3.3.0", | 3757 | "version": "3.3.0", |
3682 | "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-3.3.0.tgz", | 3758 | "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-3.3.0.tgz", |
@@ -3736,6 +3812,17 @@ | |||
3736 | "encoding": "^0.1.12" | 3812 | "encoding": "^0.1.12" |
3737 | } | 3813 | } |
3738 | }, | 3814 | }, |
3815 | "electron-hunspell": { | ||
3816 | "version": "0.1.1", | ||
3817 | "resolved": "https://registry.npmjs.org/electron-hunspell/-/electron-hunspell-0.1.1.tgz", | ||
3818 | "integrity": "sha512-B3nOQqHexIX+8bz72FZkNk+iFBrdqS9DpV2SaH+t7T9SLbONBVBRLJ2Jj2ytXFUzvw81q7vz2dfxPCddh/E3ww==", | ||
3819 | "requires": { | ||
3820 | "hunspell-asm": "1.0.2", | ||
3821 | "lodash": "^4.17.11", | ||
3822 | "tslib": "1.9.3", | ||
3823 | "unixify": "1.0.0" | ||
3824 | } | ||
3825 | }, | ||
3739 | "electron-osx-sign": { | 3826 | "electron-osx-sign": { |
3740 | "version": "0.4.11", | 3827 | "version": "0.4.11", |
3741 | "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz", | 3828 | "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz", |
@@ -3845,80 +3932,6 @@ | |||
3845 | } | 3932 | } |
3846 | } | 3933 | } |
3847 | }, | 3934 | }, |
3848 | "electron-remote": { | ||
3849 | "version": "1.3.0", | ||
3850 | "resolved": "https://registry.npmjs.org/electron-remote/-/electron-remote-1.3.0.tgz", | ||
3851 | "integrity": "sha512-i00MD42fzlmyhsYRUDrMM104OQTT/soEmBmZ707CZ3k/nwa0rrB3a3mpxvR0EI2Q+Xw2VBdhWbk2gYmyg0PS0g==", | ||
3852 | "requires": { | ||
3853 | "debug": "^2.5.1", | ||
3854 | "hashids": "^1.1.1", | ||
3855 | "lodash.get": "^4.4.2", | ||
3856 | "pify": "^2.3.0", | ||
3857 | "rxjs": "^5.0.0-beta.12", | ||
3858 | "xmlhttprequest": "^1.8.0" | ||
3859 | } | ||
3860 | }, | ||
3861 | "electron-spellchecker": { | ||
3862 | "version": "1.1.2", | ||
3863 | "resolved": "https://registry.npmjs.org/electron-spellchecker/-/electron-spellchecker-1.1.2.tgz", | ||
3864 | "integrity": "sha512-AdzD/Q82Svk9EDTc65vRr271UPLVIxsruKJM0iwqxEG9Y/CogNhEAJz/asV0BFWom4tpdB6cHcLbYePb11Musw==", | ||
3865 | "requires": { | ||
3866 | "@paulcbetts/cld": "^2.4.6", | ||
3867 | "@paulcbetts/spellchecker": "^4.0.6", | ||
3868 | "bcp47": "^1.1.2", | ||
3869 | "debug": "^2.6.3", | ||
3870 | "electron-remote": "^1.1.1", | ||
3871 | "keyboard-layout": "^2.0.7", | ||
3872 | "lru-cache": "^4.0.2", | ||
3873 | "mkdirp": "^0.5.1", | ||
3874 | "pify": "^2.3.0", | ||
3875 | "rxjs": "^5.0.1", | ||
3876 | "rxjs-serial-subscription": "^0.1.1", | ||
3877 | "spawn-rx": "^2.0.7" | ||
3878 | }, | ||
3879 | "dependencies": { | ||
3880 | "@paulcbetts/cld": { | ||
3881 | "version": "2.4.6", | ||
3882 | "resolved": "https://registry.npmjs.org/@paulcbetts/cld/-/cld-2.4.6.tgz", | ||
3883 | "integrity": "sha1-qZL2vEPKshKsLESIpnHPMC+LYuc=", | ||
3884 | "requires": { | ||
3885 | "glob": "^5.0.10", | ||
3886 | "nan": "^2.0.5", | ||
3887 | "rimraf": "^2.4.0", | ||
3888 | "underscore": "^1.6.0" | ||
3889 | } | ||
3890 | }, | ||
3891 | "@paulcbetts/spellchecker": { | ||
3892 | "version": "4.0.6", | ||
3893 | "resolved": "https://registry.npmjs.org/@paulcbetts/spellchecker/-/spellchecker-4.0.6.tgz", | ||
3894 | "integrity": "sha512-9lhLEvWfAB00n2oOM/S08sna9AuFk+b+bPk8ficpSa2X0Ll40PahMwfFS3G54nqQBIFFZgTPrhoHtCLAao0xmg==", | ||
3895 | "requires": { | ||
3896 | "nan": "^2.0.0" | ||
3897 | } | ||
3898 | }, | ||
3899 | "glob": { | ||
3900 | "version": "5.0.15", | ||
3901 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", | ||
3902 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", | ||
3903 | "requires": { | ||
3904 | "inflight": "^1.0.4", | ||
3905 | "inherits": "2", | ||
3906 | "minimatch": "2 || 3", | ||
3907 | "once": "^1.3.0", | ||
3908 | "path-is-absolute": "^1.0.0" | ||
3909 | } | ||
3910 | }, | ||
3911 | "keyboard-layout": { | ||
3912 | "version": "2.0.14", | ||
3913 | "resolved": "https://registry.npmjs.org/keyboard-layout/-/keyboard-layout-2.0.14.tgz", | ||
3914 | "integrity": "sha512-QuCfpEC8oai6F8oaNQdxi5+1QIpaQu9HSVI9yzkC2HbIXeBnahzHFDRVGUtwwAWiNnzjNBjUI/djsrMGUTgK1w==", | ||
3915 | "requires": { | ||
3916 | "event-kit": "^2.0.0", | ||
3917 | "nan": "^2.10.0" | ||
3918 | } | ||
3919 | } | ||
3920 | } | ||
3921 | }, | ||
3922 | "electron-to-chromium": { | 3935 | "electron-to-chromium": { |
3923 | "version": "1.3.80", | 3936 | "version": "1.3.80", |
3924 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.80.tgz", | 3937 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.80.tgz", |
@@ -3972,6 +3985,15 @@ | |||
3972 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", | 3985 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", |
3973 | "dev": true | 3986 | "dev": true |
3974 | }, | 3987 | }, |
3988 | "emscripten-wasm-loader": { | ||
3989 | "version": "1.1.0", | ||
3990 | "resolved": "https://registry.npmjs.org/emscripten-wasm-loader/-/emscripten-wasm-loader-1.1.0.tgz", | ||
3991 | "integrity": "sha512-kXR3lT/900WjvhpdhaNSuD6WJKpd4ZlMh/ZaRM0rp82uKoGBq7Ud/u0GVIxQD15cqsShCKEHOpd3bZypvft9Lw==", | ||
3992 | "requires": { | ||
3993 | "getroot": "^1.0.0", | ||
3994 | "tslib": "^1.8.0" | ||
3995 | } | ||
3996 | }, | ||
3975 | "encoding": { | 3997 | "encoding": { |
3976 | "version": "0.1.12", | 3998 | "version": "0.1.12", |
3977 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", | 3999 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", |
@@ -3984,7 +4006,6 @@ | |||
3984 | "version": "1.4.1", | 4006 | "version": "1.4.1", |
3985 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", | 4007 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", |
3986 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", | 4008 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", |
3987 | "dev": true, | ||
3988 | "requires": { | 4009 | "requires": { |
3989 | "once": "^1.4.0" | 4010 | "once": "^1.4.0" |
3990 | } | 4011 | } |
@@ -4092,6 +4113,11 @@ | |||
4092 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", | 4113 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", |
4093 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" | 4114 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" |
4094 | }, | 4115 | }, |
4116 | "err-code": { | ||
4117 | "version": "1.1.2", | ||
4118 | "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", | ||
4119 | "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=" | ||
4120 | }, | ||
4095 | "error-ex": { | 4121 | "error-ex": { |
4096 | "version": "1.3.2", | 4122 | "version": "1.3.2", |
4097 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", | 4123 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", |
@@ -4148,8 +4174,15 @@ | |||
4148 | "es6-promise": { | 4174 | "es6-promise": { |
4149 | "version": "4.2.5", | 4175 | "version": "4.2.5", |
4150 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", | 4176 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", |
4151 | "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", | 4177 | "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" |
4152 | "dev": true | 4178 | }, |
4179 | "es6-promisify": { | ||
4180 | "version": "5.0.0", | ||
4181 | "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", | ||
4182 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", | ||
4183 | "requires": { | ||
4184 | "es6-promise": "^4.0.3" | ||
4185 | } | ||
4153 | }, | 4186 | }, |
4154 | "es6-symbol": { | 4187 | "es6-symbol": { |
4155 | "version": "3.1.1", | 4188 | "version": "3.1.1", |
@@ -4548,11 +4581,6 @@ | |||
4548 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", | 4581 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", |
4549 | "dev": true | 4582 | "dev": true |
4550 | }, | 4583 | }, |
4551 | "event-kit": { | ||
4552 | "version": "2.5.3", | ||
4553 | "resolved": "https://registry.npmjs.org/event-kit/-/event-kit-2.5.3.tgz", | ||
4554 | "integrity": "sha512-b7Qi1JNzY4BfAYfnIRanLk0DOD1gdkWHT4GISIn8Q2tAf3LpU8SP2CMwWaq40imYoKWbtN4ZhbSRxvsnikooZQ==" | ||
4555 | }, | ||
4556 | "execa": { | 4584 | "execa": { |
4557 | "version": "0.7.0", | 4585 | "version": "0.7.0", |
4558 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", | 4586 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", |
@@ -4667,6 +4695,23 @@ | |||
4667 | "homedir-polyfill": "^1.0.1" | 4695 | "homedir-polyfill": "^1.0.1" |
4668 | } | 4696 | } |
4669 | }, | 4697 | }, |
4698 | "ext-list": { | ||
4699 | "version": "2.2.2", | ||
4700 | "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", | ||
4701 | "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", | ||
4702 | "requires": { | ||
4703 | "mime-db": "^1.28.0" | ||
4704 | } | ||
4705 | }, | ||
4706 | "ext-name": { | ||
4707 | "version": "5.0.0", | ||
4708 | "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", | ||
4709 | "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", | ||
4710 | "requires": { | ||
4711 | "ext-list": "^2.0.0", | ||
4712 | "sort-keys-length": "^1.0.0" | ||
4713 | } | ||
4714 | }, | ||
4670 | "extend": { | 4715 | "extend": { |
4671 | "version": "3.0.2", | 4716 | "version": "3.0.2", |
4672 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", | 4717 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", |
@@ -4848,6 +4893,11 @@ | |||
4848 | "pend": "~1.2.0" | 4893 | "pend": "~1.2.0" |
4849 | } | 4894 | } |
4850 | }, | 4895 | }, |
4896 | "figgy-pudding": { | ||
4897 | "version": "3.5.1", | ||
4898 | "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", | ||
4899 | "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" | ||
4900 | }, | ||
4851 | "figures": { | 4901 | "figures": { |
4852 | "version": "2.0.0", | 4902 | "version": "2.0.0", |
4853 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", | 4903 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", |
@@ -5007,7 +5057,6 @@ | |||
5007 | "version": "1.0.3", | 5057 | "version": "1.0.3", |
5008 | "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", | 5058 | "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", |
5009 | "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", | 5059 | "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", |
5010 | "dev": true, | ||
5011 | "requires": { | 5060 | "requires": { |
5012 | "inherits": "^2.0.1", | 5061 | "inherits": "^2.0.1", |
5013 | "readable-stream": "^2.0.4" | 5062 | "readable-stream": "^2.0.4" |
@@ -5057,6 +5106,15 @@ | |||
5057 | "integrity": "sha1-lzHc9WeMf660T7kDxPct9VGH+nc=", | 5106 | "integrity": "sha1-lzHc9WeMf660T7kDxPct9VGH+nc=", |
5058 | "dev": true | 5107 | "dev": true |
5059 | }, | 5108 | }, |
5109 | "from2": { | ||
5110 | "version": "2.3.0", | ||
5111 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", | ||
5112 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", | ||
5113 | "requires": { | ||
5114 | "inherits": "^2.0.1", | ||
5115 | "readable-stream": "^2.0.0" | ||
5116 | } | ||
5117 | }, | ||
5060 | "fs-extra": { | 5118 | "fs-extra": { |
5061 | "version": "7.0.1", | 5119 | "version": "7.0.1", |
5062 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", | 5120 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", |
@@ -5106,6 +5164,17 @@ | |||
5106 | "through2": "^2.0.3" | 5164 | "through2": "^2.0.3" |
5107 | } | 5165 | } |
5108 | }, | 5166 | }, |
5167 | "fs-write-stream-atomic": { | ||
5168 | "version": "1.0.10", | ||
5169 | "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", | ||
5170 | "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", | ||
5171 | "requires": { | ||
5172 | "graceful-fs": "^4.1.2", | ||
5173 | "iferr": "^0.1.5", | ||
5174 | "imurmurhash": "^0.1.4", | ||
5175 | "readable-stream": "1 || 2" | ||
5176 | } | ||
5177 | }, | ||
5109 | "fs.realpath": { | 5178 | "fs.realpath": { |
5110 | "version": "1.0.0", | 5179 | "version": "1.0.0", |
5111 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | 5180 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
@@ -5755,6 +5824,11 @@ | |||
5755 | "globule": "^1.0.0" | 5824 | "globule": "^1.0.0" |
5756 | } | 5825 | } |
5757 | }, | 5826 | }, |
5827 | "genfun": { | ||
5828 | "version": "5.0.0", | ||
5829 | "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", | ||
5830 | "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==" | ||
5831 | }, | ||
5758 | "get-caller-file": { | 5832 | "get-caller-file": { |
5759 | "version": "1.0.3", | 5833 | "version": "1.0.3", |
5760 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", | 5834 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", |
@@ -5787,6 +5861,14 @@ | |||
5787 | "assert-plus": "^1.0.0" | 5861 | "assert-plus": "^1.0.0" |
5788 | } | 5862 | } |
5789 | }, | 5863 | }, |
5864 | "getroot": { | ||
5865 | "version": "1.0.0", | ||
5866 | "resolved": "https://registry.npmjs.org/getroot/-/getroot-1.0.0.tgz", | ||
5867 | "integrity": "sha512-W9Q31kOv921dQuZBeAbK4R/dAPbC0WkhZD3alLcdVwjSkEtS1aX8twrzG3I5yo0sQ88M/d4JOqVbRiCuI/XPNA==", | ||
5868 | "requires": { | ||
5869 | "tslib": "^1.7.1" | ||
5870 | } | ||
5871 | }, | ||
5790 | "glob": { | 5872 | "glob": { |
5791 | "version": "7.1.3", | 5873 | "version": "7.1.3", |
5792 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", | 5874 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", |
@@ -6753,11 +6835,6 @@ | |||
6753 | } | 6835 | } |
6754 | } | 6836 | } |
6755 | }, | 6837 | }, |
6756 | "hashids": { | ||
6757 | "version": "1.2.2", | ||
6758 | "resolved": "https://registry.npmjs.org/hashids/-/hashids-1.2.2.tgz", | ||
6759 | "integrity": "sha512-dEHCG2LraR6PNvSGxosZHIRgxF5sNLOIBFEHbj8lfP9WWmu/PWPMzsip1drdVSOFi51N2pU7gZavrgn7sbGFuw==" | ||
6760 | }, | ||
6761 | "hex-rgb": { | 6838 | "hex-rgb": { |
6762 | "version": "3.0.0", | 6839 | "version": "3.0.0", |
6763 | "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-3.0.0.tgz", | 6840 | "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-3.0.0.tgz", |
@@ -6802,8 +6879,7 @@ | |||
6802 | "hosted-git-info": { | 6879 | "hosted-git-info": { |
6803 | "version": "2.7.1", | 6880 | "version": "2.7.1", |
6804 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", | 6881 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", |
6805 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", | 6882 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" |
6806 | "dev": true | ||
6807 | }, | 6883 | }, |
6808 | "htmlparser2": { | 6884 | "htmlparser2": { |
6809 | "version": "3.10.0", | 6885 | "version": "3.10.0", |
@@ -6830,6 +6906,30 @@ | |||
6830 | } | 6906 | } |
6831 | } | 6907 | } |
6832 | }, | 6908 | }, |
6909 | "http-cache-semantics": { | ||
6910 | "version": "3.8.1", | ||
6911 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", | ||
6912 | "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" | ||
6913 | }, | ||
6914 | "http-proxy-agent": { | ||
6915 | "version": "2.1.0", | ||
6916 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", | ||
6917 | "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", | ||
6918 | "requires": { | ||
6919 | "agent-base": "4", | ||
6920 | "debug": "3.1.0" | ||
6921 | }, | ||
6922 | "dependencies": { | ||
6923 | "debug": { | ||
6924 | "version": "3.1.0", | ||
6925 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", | ||
6926 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", | ||
6927 | "requires": { | ||
6928 | "ms": "2.0.0" | ||
6929 | } | ||
6930 | } | ||
6931 | } | ||
6932 | }, | ||
6833 | "http-signature": { | 6933 | "http-signature": { |
6834 | "version": "1.2.0", | 6934 | "version": "1.2.0", |
6835 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", | 6935 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", |
@@ -6841,6 +6941,69 @@ | |||
6841 | "sshpk": "^1.7.0" | 6941 | "sshpk": "^1.7.0" |
6842 | } | 6942 | } |
6843 | }, | 6943 | }, |
6944 | "https-proxy-agent": { | ||
6945 | "version": "2.2.1", | ||
6946 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", | ||
6947 | "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", | ||
6948 | "requires": { | ||
6949 | "agent-base": "^4.1.0", | ||
6950 | "debug": "^3.1.0" | ||
6951 | }, | ||
6952 | "dependencies": { | ||
6953 | "debug": { | ||
6954 | "version": "3.2.6", | ||
6955 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", | ||
6956 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", | ||
6957 | "requires": { | ||
6958 | "ms": "^2.1.1" | ||
6959 | } | ||
6960 | }, | ||
6961 | "ms": { | ||
6962 | "version": "2.1.1", | ||
6963 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", | ||
6964 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" | ||
6965 | } | ||
6966 | } | ||
6967 | }, | ||
6968 | "humanize-ms": { | ||
6969 | "version": "1.2.1", | ||
6970 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", | ||
6971 | "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", | ||
6972 | "requires": { | ||
6973 | "ms": "^2.0.0" | ||
6974 | } | ||
6975 | }, | ||
6976 | "hunspell-asm": { | ||
6977 | "version": "1.0.2", | ||
6978 | "resolved": "http://registry.npmjs.org/hunspell-asm/-/hunspell-asm-1.0.2.tgz", | ||
6979 | "integrity": "sha512-UTLBvc0yZiIcHl9qrgxnFTZbX3zF4CprzEY+u+N0iXlUKZnUJRIgvgppTdgiQTsucm5b0aN/rHsgXz2q/0kBRA==", | ||
6980 | "requires": { | ||
6981 | "emscripten-wasm-loader": "^1.0.0", | ||
6982 | "nanoid": "^1.0.2", | ||
6983 | "tslib": "^1.9.0", | ||
6984 | "unixify": "^1.0.0" | ||
6985 | } | ||
6986 | }, | ||
6987 | "hunspell-dict-downloader": { | ||
6988 | "version": "1.0.0", | ||
6989 | "resolved": "https://registry.npmjs.org/hunspell-dict-downloader/-/hunspell-dict-downloader-1.0.0.tgz", | ||
6990 | "integrity": "sha512-HKVIcQPG8/S3lv+zAsD0dDqDCPM+ICFBUIUqcCTgE6WNDqMYc34pi1XuVjQGhMD901UxcTA+cns/PMoNLGPBJA==", | ||
6991 | "requires": { | ||
6992 | "fs-extra": "^7.0.0", | ||
6993 | "lodash.includes": "^4.3.0", | ||
6994 | "md5-file": "^4.0.0", | ||
6995 | "pacote": "^9.1.0", | ||
6996 | "pify": "^4.0.1", | ||
6997 | "tslib": "^1.9.3" | ||
6998 | }, | ||
6999 | "dependencies": { | ||
7000 | "pify": { | ||
7001 | "version": "4.0.1", | ||
7002 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", | ||
7003 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" | ||
7004 | } | ||
7005 | } | ||
7006 | }, | ||
6844 | "husky": { | 7007 | "husky": { |
6845 | "version": "1.1.4", | 7008 | "version": "1.1.4", |
6846 | "resolved": "https://registry.npmjs.org/husky/-/husky-1.1.4.tgz", | 7009 | "resolved": "https://registry.npmjs.org/husky/-/husky-1.1.4.tgz", |
@@ -6999,12 +7162,25 @@ | |||
6999 | "safer-buffer": ">= 2.1.2 < 3" | 7162 | "safer-buffer": ">= 2.1.2 < 3" |
7000 | } | 7163 | } |
7001 | }, | 7164 | }, |
7165 | "iferr": { | ||
7166 | "version": "0.1.5", | ||
7167 | "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", | ||
7168 | "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" | ||
7169 | }, | ||
7002 | "ignore": { | 7170 | "ignore": { |
7003 | "version": "3.3.10", | 7171 | "version": "3.3.10", |
7004 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", | 7172 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", |
7005 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", | 7173 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", |
7006 | "dev": true | 7174 | "dev": true |
7007 | }, | 7175 | }, |
7176 | "ignore-walk": { | ||
7177 | "version": "3.0.1", | ||
7178 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", | ||
7179 | "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", | ||
7180 | "requires": { | ||
7181 | "minimatch": "^3.0.4" | ||
7182 | } | ||
7183 | }, | ||
7008 | "import-fresh": { | 7184 | "import-fresh": { |
7009 | "version": "2.0.0", | 7185 | "version": "2.0.0", |
7010 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", | 7186 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", |
@@ -7041,8 +7217,7 @@ | |||
7041 | "imurmurhash": { | 7217 | "imurmurhash": { |
7042 | "version": "0.1.4", | 7218 | "version": "0.1.4", |
7043 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", | 7219 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", |
7044 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", | 7220 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" |
7045 | "dev": true | ||
7046 | }, | 7221 | }, |
7047 | "in-publish": { | 7222 | "in-publish": { |
7048 | "version": "2.0.0", | 7223 | "version": "2.0.0", |
@@ -7212,6 +7387,11 @@ | |||
7212 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", | 7387 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", |
7213 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" | 7388 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" |
7214 | }, | 7389 | }, |
7390 | "ip": { | ||
7391 | "version": "1.1.5", | ||
7392 | "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", | ||
7393 | "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" | ||
7394 | }, | ||
7215 | "is": { | 7395 | "is": { |
7216 | "version": "0.3.0", | 7396 | "version": "0.3.0", |
7217 | "resolved": "http://registry.npmjs.org/is/-/is-0.3.0.tgz", | 7397 | "resolved": "http://registry.npmjs.org/is/-/is-0.3.0.tgz", |
@@ -7269,7 +7449,6 @@ | |||
7269 | "version": "1.0.0", | 7449 | "version": "1.0.0", |
7270 | "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", | 7450 | "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", |
7271 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", | 7451 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", |
7272 | "dev": true, | ||
7273 | "requires": { | 7452 | "requires": { |
7274 | "builtin-modules": "^1.0.0" | 7453 | "builtin-modules": "^1.0.0" |
7275 | } | 7454 | } |
@@ -7675,8 +7854,7 @@ | |||
7675 | "json-parse-better-errors": { | 7854 | "json-parse-better-errors": { |
7676 | "version": "1.0.2", | 7855 | "version": "1.0.2", |
7677 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", | 7856 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", |
7678 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", | 7857 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" |
7679 | "dev": true | ||
7680 | }, | 7858 | }, |
7681 | "json-schema": { | 7859 | "json-schema": { |
7682 | "version": "0.2.3", | 7860 | "version": "0.2.3", |
@@ -7737,6 +7915,11 @@ | |||
7737 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", | 7915 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", |
7738 | "dev": true | 7916 | "dev": true |
7739 | }, | 7917 | }, |
7918 | "jsonparse": { | ||
7919 | "version": "1.3.1", | ||
7920 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", | ||
7921 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" | ||
7922 | }, | ||
7740 | "jsonwebtoken": { | 7923 | "jsonwebtoken": { |
7741 | "version": "7.4.3", | 7924 | "version": "7.4.3", |
7742 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", | 7925 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", |
@@ -8108,7 +8291,8 @@ | |||
8108 | "lodash.assign": { | 8291 | "lodash.assign": { |
8109 | "version": "4.2.0", | 8292 | "version": "4.2.0", |
8110 | "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", | 8293 | "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", |
8111 | "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" | 8294 | "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", |
8295 | "dev": true | ||
8112 | }, | 8296 | }, |
8113 | "lodash.camelcase": { | 8297 | "lodash.camelcase": { |
8114 | "version": "4.3.0", | 8298 | "version": "4.3.0", |
@@ -8136,10 +8320,10 @@ | |||
8136 | "lodash._root": "^3.0.0" | 8320 | "lodash._root": "^3.0.0" |
8137 | } | 8321 | } |
8138 | }, | 8322 | }, |
8139 | "lodash.get": { | 8323 | "lodash.includes": { |
8140 | "version": "4.4.2", | 8324 | "version": "4.3.0", |
8141 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", | 8325 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", |
8142 | "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" | 8326 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" |
8143 | }, | 8327 | }, |
8144 | "lodash.isarguments": { | 8328 | "lodash.isarguments": { |
8145 | "version": "3.1.0", | 8329 | "version": "3.1.0", |
@@ -8344,6 +8528,24 @@ | |||
8344 | } | 8528 | } |
8345 | } | 8529 | } |
8346 | }, | 8530 | }, |
8531 | "make-fetch-happen": { | ||
8532 | "version": "4.0.1", | ||
8533 | "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz", | ||
8534 | "integrity": "sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==", | ||
8535 | "requires": { | ||
8536 | "agentkeepalive": "^3.4.1", | ||
8537 | "cacache": "^11.0.1", | ||
8538 | "http-cache-semantics": "^3.8.1", | ||
8539 | "http-proxy-agent": "^2.1.0", | ||
8540 | "https-proxy-agent": "^2.2.1", | ||
8541 | "lru-cache": "^4.1.2", | ||
8542 | "mississippi": "^3.0.0", | ||
8543 | "node-fetch-npm": "^2.0.2", | ||
8544 | "promise-retry": "^1.1.1", | ||
8545 | "socks-proxy-agent": "^4.0.0", | ||
8546 | "ssri": "^6.0.0" | ||
8547 | } | ||
8548 | }, | ||
8347 | "make-iterator": { | 8549 | "make-iterator": { |
8348 | "version": "1.0.1", | 8550 | "version": "1.0.1", |
8349 | "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", | 8551 | "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", |
@@ -8397,6 +8599,11 @@ | |||
8397 | "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", | 8599 | "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", |
8398 | "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" | 8600 | "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" |
8399 | }, | 8601 | }, |
8602 | "md5-file": { | ||
8603 | "version": "4.0.0", | ||
8604 | "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-4.0.0.tgz", | ||
8605 | "integrity": "sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg==" | ||
8606 | }, | ||
8400 | "mdi": { | 8607 | "mdi": { |
8401 | "version": "1.9.33", | 8608 | "version": "1.9.33", |
8402 | "resolved": "https://registry.npmjs.org/mdi/-/mdi-1.9.33.tgz", | 8609 | "resolved": "https://registry.npmjs.org/mdi/-/mdi-1.9.33.tgz", |
@@ -8505,14 +8712,12 @@ | |||
8505 | "mime-db": { | 8712 | "mime-db": { |
8506 | "version": "1.37.0", | 8713 | "version": "1.37.0", |
8507 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", | 8714 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", |
8508 | "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", | 8715 | "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" |
8509 | "dev": true | ||
8510 | }, | 8716 | }, |
8511 | "mime-types": { | 8717 | "mime-types": { |
8512 | "version": "2.1.21", | 8718 | "version": "2.1.21", |
8513 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", | 8719 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", |
8514 | "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", | 8720 | "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", |
8515 | "dev": true, | ||
8516 | "requires": { | 8721 | "requires": { |
8517 | "mime-db": "~1.37.0" | 8722 | "mime-db": "~1.37.0" |
8518 | } | 8723 | } |
@@ -8560,6 +8765,34 @@ | |||
8560 | "minipass": "^2.2.1" | 8765 | "minipass": "^2.2.1" |
8561 | } | 8766 | } |
8562 | }, | 8767 | }, |
8768 | "mississippi": { | ||
8769 | "version": "3.0.0", | ||
8770 | "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", | ||
8771 | "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", | ||
8772 | "requires": { | ||
8773 | "concat-stream": "^1.5.0", | ||
8774 | "duplexify": "^3.4.2", | ||
8775 | "end-of-stream": "^1.1.0", | ||
8776 | "flush-write-stream": "^1.0.0", | ||
8777 | "from2": "^2.1.0", | ||
8778 | "parallel-transform": "^1.1.0", | ||
8779 | "pump": "^3.0.0", | ||
8780 | "pumpify": "^1.3.3", | ||
8781 | "stream-each": "^1.1.0", | ||
8782 | "through2": "^2.0.0" | ||
8783 | }, | ||
8784 | "dependencies": { | ||
8785 | "pump": { | ||
8786 | "version": "3.0.0", | ||
8787 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", | ||
8788 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", | ||
8789 | "requires": { | ||
8790 | "end-of-stream": "^1.1.0", | ||
8791 | "once": "^1.3.1" | ||
8792 | } | ||
8793 | } | ||
8794 | } | ||
8795 | }, | ||
8563 | "mixin-deep": { | 8796 | "mixin-deep": { |
8564 | "version": "1.3.1", | 8797 | "version": "1.3.1", |
8565 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", | 8798 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", |
@@ -8625,11 +8858,29 @@ | |||
8625 | "resolved": "https://registry.npmjs.org/mobx-react-router/-/mobx-react-router-3.1.2.tgz", | 8858 | "resolved": "https://registry.npmjs.org/mobx-react-router/-/mobx-react-router-3.1.2.tgz", |
8626 | "integrity": "sha1-gzKLEIOTAXFI2G/qF/YR3i0qrNw=" | 8859 | "integrity": "sha1-gzKLEIOTAXFI2G/qF/YR3i0qrNw=" |
8627 | }, | 8860 | }, |
8861 | "modify-filename": { | ||
8862 | "version": "1.1.0", | ||
8863 | "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", | ||
8864 | "integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE=" | ||
8865 | }, | ||
8628 | "moment": { | 8866 | "moment": { |
8629 | "version": "2.22.2", | 8867 | "version": "2.22.2", |
8630 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", | 8868 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", |
8631 | "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" | 8869 | "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" |
8632 | }, | 8870 | }, |
8871 | "move-concurrently": { | ||
8872 | "version": "1.0.1", | ||
8873 | "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", | ||
8874 | "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", | ||
8875 | "requires": { | ||
8876 | "aproba": "^1.1.1", | ||
8877 | "copy-concurrently": "^1.0.0", | ||
8878 | "fs-write-stream-atomic": "^1.0.8", | ||
8879 | "mkdirp": "^0.5.1", | ||
8880 | "rimraf": "^2.5.4", | ||
8881 | "run-queue": "^1.0.3" | ||
8882 | } | ||
8883 | }, | ||
8633 | "ms": { | 8884 | "ms": { |
8634 | "version": "2.0.0", | 8885 | "version": "2.0.0", |
8635 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | 8886 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
@@ -8660,6 +8911,11 @@ | |||
8660 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", | 8911 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", |
8661 | "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==" | 8912 | "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==" |
8662 | }, | 8913 | }, |
8914 | "nanoid": { | ||
8915 | "version": "1.3.4", | ||
8916 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-1.3.4.tgz", | ||
8917 | "integrity": "sha512-4ug4BsuHxiVHoRUe1ud6rUFT3WUMmjXt1W0quL0CviZQANdan7D8kqN5/maw53hmAApY/jfzMRkC57BNNs60ZQ==" | ||
8918 | }, | ||
8663 | "nanomatch": { | 8919 | "nanomatch": { |
8664 | "version": "1.2.13", | 8920 | "version": "1.2.13", |
8665 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", | 8921 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", |
@@ -8725,6 +8981,16 @@ | |||
8725 | "is-stream": "^1.0.1" | 8981 | "is-stream": "^1.0.1" |
8726 | } | 8982 | } |
8727 | }, | 8983 | }, |
8984 | "node-fetch-npm": { | ||
8985 | "version": "2.0.2", | ||
8986 | "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", | ||
8987 | "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", | ||
8988 | "requires": { | ||
8989 | "encoding": "^0.1.11", | ||
8990 | "json-parse-better-errors": "^1.0.0", | ||
8991 | "safe-buffer": "^5.1.1" | ||
8992 | } | ||
8993 | }, | ||
8728 | "node-gyp": { | 8994 | "node-gyp": { |
8729 | "version": "3.8.0", | 8995 | "version": "3.8.0", |
8730 | "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", | 8996 | "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", |
@@ -8846,7 +9112,6 @@ | |||
8846 | "version": "2.4.0", | 9112 | "version": "2.4.0", |
8847 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", | 9113 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", |
8848 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", | 9114 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", |
8849 | "dev": true, | ||
8850 | "requires": { | 9115 | "requires": { |
8851 | "hosted-git-info": "^2.1.4", | 9116 | "hosted-git-info": "^2.1.4", |
8852 | "is-builtin-module": "^1.0.0", | 9117 | "is-builtin-module": "^1.0.0", |
@@ -8857,8 +9122,7 @@ | |||
8857 | "semver": { | 9122 | "semver": { |
8858 | "version": "5.6.0", | 9123 | "version": "5.6.0", |
8859 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", | 9124 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", |
8860 | "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", | 9125 | "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" |
8861 | "dev": true | ||
8862 | } | 9126 | } |
8863 | } | 9127 | } |
8864 | }, | 9128 | }, |
@@ -8890,6 +9154,54 @@ | |||
8890 | "once": "^1.3.2" | 9154 | "once": "^1.3.2" |
8891 | } | 9155 | } |
8892 | }, | 9156 | }, |
9157 | "npm-bundled": { | ||
9158 | "version": "1.0.5", | ||
9159 | "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", | ||
9160 | "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==" | ||
9161 | }, | ||
9162 | "npm-package-arg": { | ||
9163 | "version": "6.1.0", | ||
9164 | "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", | ||
9165 | "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", | ||
9166 | "requires": { | ||
9167 | "hosted-git-info": "^2.6.0", | ||
9168 | "osenv": "^0.1.5", | ||
9169 | "semver": "^5.5.0", | ||
9170 | "validate-npm-package-name": "^3.0.0" | ||
9171 | } | ||
9172 | }, | ||
9173 | "npm-packlist": { | ||
9174 | "version": "1.1.12", | ||
9175 | "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.12.tgz", | ||
9176 | "integrity": "sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g==", | ||
9177 | "requires": { | ||
9178 | "ignore-walk": "^3.0.1", | ||
9179 | "npm-bundled": "^1.0.1" | ||
9180 | } | ||
9181 | }, | ||
9182 | "npm-pick-manifest": { | ||
9183 | "version": "2.2.3", | ||
9184 | "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", | ||
9185 | "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", | ||
9186 | "requires": { | ||
9187 | "figgy-pudding": "^3.5.1", | ||
9188 | "npm-package-arg": "^6.0.0", | ||
9189 | "semver": "^5.4.1" | ||
9190 | } | ||
9191 | }, | ||
9192 | "npm-registry-fetch": { | ||
9193 | "version": "3.8.0", | ||
9194 | "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.8.0.tgz", | ||
9195 | "integrity": "sha512-hrw8UMD+Nob3Kl3h8Z/YjmKamb1gf7D1ZZch2otrIXM3uFLB5vjEY6DhMlq80z/zZet6eETLbOXcuQudCB3Zpw==", | ||
9196 | "requires": { | ||
9197 | "JSONStream": "^1.3.4", | ||
9198 | "bluebird": "^3.5.1", | ||
9199 | "figgy-pudding": "^3.4.1", | ||
9200 | "lru-cache": "^4.1.3", | ||
9201 | "make-fetch-happen": "^4.0.1", | ||
9202 | "npm-package-arg": "^6.1.0" | ||
9203 | } | ||
9204 | }, | ||
8893 | "npm-run-path": { | 9205 | "npm-run-path": { |
8894 | "version": "2.0.2", | 9206 | "version": "2.0.2", |
8895 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", | 9207 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", |
@@ -9197,14 +9509,12 @@ | |||
9197 | "os-tmpdir": { | 9509 | "os-tmpdir": { |
9198 | "version": "1.0.2", | 9510 | "version": "1.0.2", |
9199 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", | 9511 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", |
9200 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", | 9512 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" |
9201 | "dev": true | ||
9202 | }, | 9513 | }, |
9203 | "osenv": { | 9514 | "osenv": { |
9204 | "version": "0.1.5", | 9515 | "version": "0.1.5", |
9205 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", | 9516 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", |
9206 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", | 9517 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", |
9207 | "dev": true, | ||
9208 | "requires": { | 9518 | "requires": { |
9209 | "os-homedir": "^1.0.0", | 9519 | "os-homedir": "^1.0.0", |
9210 | "os-tmpdir": "^1.0.0" | 9520 | "os-tmpdir": "^1.0.0" |
@@ -9264,11 +9574,88 @@ | |||
9264 | "semver": "^5.1.0" | 9574 | "semver": "^5.1.0" |
9265 | } | 9575 | } |
9266 | }, | 9576 | }, |
9577 | "pacote": { | ||
9578 | "version": "9.2.3", | ||
9579 | "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.2.3.tgz", | ||
9580 | "integrity": "sha512-Y3+yY3nBRAxMlZWvr62XLJxOwCmG9UmkGZkFurWHoCjqF0cZL72cTOCRJTvWw8T4OhJS2RTg13x4oYYriauvEw==", | ||
9581 | "requires": { | ||
9582 | "bluebird": "^3.5.2", | ||
9583 | "cacache": "^11.2.0", | ||
9584 | "figgy-pudding": "^3.5.1", | ||
9585 | "get-stream": "^4.1.0", | ||
9586 | "glob": "^7.1.3", | ||
9587 | "lru-cache": "^4.1.3", | ||
9588 | "make-fetch-happen": "^4.0.1", | ||
9589 | "minimatch": "^3.0.4", | ||
9590 | "minipass": "^2.3.5", | ||
9591 | "mississippi": "^3.0.0", | ||
9592 | "mkdirp": "^0.5.1", | ||
9593 | "normalize-package-data": "^2.4.0", | ||
9594 | "npm-package-arg": "^6.1.0", | ||
9595 | "npm-packlist": "^1.1.12", | ||
9596 | "npm-pick-manifest": "^2.2.3", | ||
9597 | "npm-registry-fetch": "^3.8.0", | ||
9598 | "osenv": "^0.1.5", | ||
9599 | "promise-inflight": "^1.0.1", | ||
9600 | "promise-retry": "^1.1.1", | ||
9601 | "protoduck": "^5.0.1", | ||
9602 | "rimraf": "^2.6.2", | ||
9603 | "safe-buffer": "^5.1.2", | ||
9604 | "semver": "^5.6.0", | ||
9605 | "ssri": "^6.0.1", | ||
9606 | "tar": "^4.4.6", | ||
9607 | "unique-filename": "^1.1.1", | ||
9608 | "which": "^1.3.1" | ||
9609 | }, | ||
9610 | "dependencies": { | ||
9611 | "get-stream": { | ||
9612 | "version": "4.1.0", | ||
9613 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", | ||
9614 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", | ||
9615 | "requires": { | ||
9616 | "pump": "^3.0.0" | ||
9617 | } | ||
9618 | }, | ||
9619 | "minipass": { | ||
9620 | "version": "2.3.5", | ||
9621 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", | ||
9622 | "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", | ||
9623 | "requires": { | ||
9624 | "safe-buffer": "^5.1.2", | ||
9625 | "yallist": "^3.0.0" | ||
9626 | } | ||
9627 | }, | ||
9628 | "pump": { | ||
9629 | "version": "3.0.0", | ||
9630 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", | ||
9631 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", | ||
9632 | "requires": { | ||
9633 | "end-of-stream": "^1.1.0", | ||
9634 | "once": "^1.3.1" | ||
9635 | } | ||
9636 | }, | ||
9637 | "yallist": { | ||
9638 | "version": "3.0.3", | ||
9639 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", | ||
9640 | "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" | ||
9641 | } | ||
9642 | } | ||
9643 | }, | ||
9267 | "pako": { | 9644 | "pako": { |
9268 | "version": "1.0.6", | 9645 | "version": "1.0.6", |
9269 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", | 9646 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", |
9270 | "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" | 9647 | "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" |
9271 | }, | 9648 | }, |
9649 | "parallel-transform": { | ||
9650 | "version": "1.1.0", | ||
9651 | "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", | ||
9652 | "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", | ||
9653 | "requires": { | ||
9654 | "cyclist": "~0.2.2", | ||
9655 | "inherits": "^2.0.3", | ||
9656 | "readable-stream": "^2.1.5" | ||
9657 | } | ||
9658 | }, | ||
9272 | "parse-color": { | 9659 | "parse-color": { |
9273 | "version": "1.0.0", | 9660 | "version": "1.0.0", |
9274 | "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", | 9661 | "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", |
@@ -9449,7 +9836,8 @@ | |||
9449 | "pify": { | 9836 | "pify": { |
9450 | "version": "2.3.0", | 9837 | "version": "2.3.0", |
9451 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", | 9838 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", |
9452 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" | 9839 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", |
9840 | "dev": true | ||
9453 | }, | 9841 | }, |
9454 | "pinkie": { | 9842 | "pinkie": { |
9455 | "version": "2.0.4", | 9843 | "version": "2.0.4", |
@@ -9646,6 +10034,20 @@ | |||
9646 | "asap": "~2.0.3" | 10034 | "asap": "~2.0.3" |
9647 | } | 10035 | } |
9648 | }, | 10036 | }, |
10037 | "promise-inflight": { | ||
10038 | "version": "1.0.1", | ||
10039 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", | ||
10040 | "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" | ||
10041 | }, | ||
10042 | "promise-retry": { | ||
10043 | "version": "1.1.1", | ||
10044 | "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", | ||
10045 | "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", | ||
10046 | "requires": { | ||
10047 | "err-code": "^1.0.0", | ||
10048 | "retry": "^0.10.0" | ||
10049 | } | ||
10050 | }, | ||
9649 | "prop-types": { | 10051 | "prop-types": { |
9650 | "version": "15.6.2", | 10052 | "version": "15.6.2", |
9651 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", | 10053 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", |
@@ -9663,6 +10065,14 @@ | |||
9663 | "invariant": "^2.2.0" | 10065 | "invariant": "^2.2.0" |
9664 | } | 10066 | } |
9665 | }, | 10067 | }, |
10068 | "protoduck": { | ||
10069 | "version": "5.0.1", | ||
10070 | "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", | ||
10071 | "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", | ||
10072 | "requires": { | ||
10073 | "genfun": "^5.0.0" | ||
10074 | } | ||
10075 | }, | ||
9666 | "proxy-middleware": { | 10076 | "proxy-middleware": { |
9667 | "version": "0.15.0", | 10077 | "version": "0.15.0", |
9668 | "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", | 10078 | "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", |
@@ -9684,7 +10094,6 @@ | |||
9684 | "version": "2.0.1", | 10094 | "version": "2.0.1", |
9685 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", | 10095 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", |
9686 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", | 10096 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", |
9687 | "dev": true, | ||
9688 | "requires": { | 10097 | "requires": { |
9689 | "end-of-stream": "^1.1.0", | 10098 | "end-of-stream": "^1.1.0", |
9690 | "once": "^1.3.1" | 10099 | "once": "^1.3.1" |
@@ -9694,7 +10103,6 @@ | |||
9694 | "version": "1.5.1", | 10103 | "version": "1.5.1", |
9695 | "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", | 10104 | "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", |
9696 | "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", | 10105 | "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", |
9697 | "dev": true, | ||
9698 | "requires": { | 10106 | "requires": { |
9699 | "duplexify": "^3.6.0", | 10107 | "duplexify": "^3.6.0", |
9700 | "inherits": "^2.0.3", | 10108 | "inherits": "^2.0.3", |
@@ -9707,6 +10115,11 @@ | |||
9707 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", | 10115 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", |
9708 | "dev": true | 10116 | "dev": true |
9709 | }, | 10117 | }, |
10118 | "pupa": { | ||
10119 | "version": "1.0.0", | ||
10120 | "resolved": "https://registry.npmjs.org/pupa/-/pupa-1.0.0.tgz", | ||
10121 | "integrity": "sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y=" | ||
10122 | }, | ||
9710 | "qs": { | 10123 | "qs": { |
9711 | "version": "6.5.2", | 10124 | "version": "6.5.2", |
9712 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", | 10125 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", |
@@ -10028,7 +10441,6 @@ | |||
10028 | "version": "2.3.6", | 10441 | "version": "2.3.6", |
10029 | "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | 10442 | "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", |
10030 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | 10443 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", |
10031 | "dev": true, | ||
10032 | "requires": { | 10444 | "requires": { |
10033 | "core-util-is": "~1.0.0", | 10445 | "core-util-is": "~1.0.0", |
10034 | "inherits": "~2.0.3", | 10446 | "inherits": "~2.0.3", |
@@ -10042,8 +10454,7 @@ | |||
10042 | "process-nextick-args": { | 10454 | "process-nextick-args": { |
10043 | "version": "2.0.0", | 10455 | "version": "2.0.0", |
10044 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", | 10456 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", |
10045 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", | 10457 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" |
10046 | "dev": true | ||
10047 | } | 10458 | } |
10048 | } | 10459 | } |
10049 | }, | 10460 | }, |
@@ -10361,6 +10772,11 @@ | |||
10361 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", | 10772 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", |
10362 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" | 10773 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" |
10363 | }, | 10774 | }, |
10775 | "retry": { | ||
10776 | "version": "0.10.1", | ||
10777 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", | ||
10778 | "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" | ||
10779 | }, | ||
10364 | "right-pad": { | 10780 | "right-pad": { |
10365 | "version": "1.0.1", | 10781 | "version": "1.0.1", |
10366 | "resolved": "https://registry.npmjs.org/right-pad/-/right-pad-1.0.1.tgz", | 10782 | "resolved": "https://registry.npmjs.org/right-pad/-/right-pad-1.0.1.tgz", |
@@ -10395,6 +10811,14 @@ | |||
10395 | "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", | 10811 | "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", |
10396 | "dev": true | 10812 | "dev": true |
10397 | }, | 10813 | }, |
10814 | "run-queue": { | ||
10815 | "version": "1.0.3", | ||
10816 | "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", | ||
10817 | "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", | ||
10818 | "requires": { | ||
10819 | "aproba": "^1.1.1" | ||
10820 | } | ||
10821 | }, | ||
10398 | "rx-lite": { | 10822 | "rx-lite": { |
10399 | "version": "4.0.8", | 10823 | "version": "4.0.8", |
10400 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", | 10824 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", |
@@ -10414,18 +10838,11 @@ | |||
10414 | "version": "5.5.12", | 10838 | "version": "5.5.12", |
10415 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", | 10839 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", |
10416 | "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", | 10840 | "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", |
10841 | "dev": true, | ||
10417 | "requires": { | 10842 | "requires": { |
10418 | "symbol-observable": "1.0.1" | 10843 | "symbol-observable": "1.0.1" |
10419 | } | 10844 | } |
10420 | }, | 10845 | }, |
10421 | "rxjs-serial-subscription": { | ||
10422 | "version": "0.1.1", | ||
10423 | "resolved": "https://registry.npmjs.org/rxjs-serial-subscription/-/rxjs-serial-subscription-0.1.1.tgz", | ||
10424 | "integrity": "sha1-pCsdsL8QlLCSMRkeJ3jKP8+e0Uc=", | ||
10425 | "requires": { | ||
10426 | "rxjs": "^5.0.0-beta.12" | ||
10427 | } | ||
10428 | }, | ||
10429 | "safe-buffer": { | 10846 | "safe-buffer": { |
10430 | "version": "5.1.2", | 10847 | "version": "5.1.2", |
10431 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | 10848 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", |
@@ -10683,6 +11100,11 @@ | |||
10683 | } | 11100 | } |
10684 | } | 11101 | } |
10685 | }, | 11102 | }, |
11103 | "smart-buffer": { | ||
11104 | "version": "4.0.1", | ||
11105 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz", | ||
11106 | "integrity": "sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg==" | ||
11107 | }, | ||
10686 | "smoothscroll-polyfill": { | 11108 | "smoothscroll-polyfill": { |
10687 | "version": "0.3.6", | 11109 | "version": "0.3.6", |
10688 | "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.3.6.tgz", | 11110 | "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.3.6.tgz", |
@@ -10927,6 +11349,24 @@ | |||
10927 | } | 11349 | } |
10928 | } | 11350 | } |
10929 | }, | 11351 | }, |
11352 | "socks": { | ||
11353 | "version": "2.2.2", | ||
11354 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.2.tgz", | ||
11355 | "integrity": "sha512-g6wjBnnMOZpE0ym6e0uHSddz9p3a+WsBaaYQaBaSCJYvrC4IXykQR9MNGjLQf38e9iIIhp3b1/Zk8YZI3KGJ0Q==", | ||
11356 | "requires": { | ||
11357 | "ip": "^1.1.5", | ||
11358 | "smart-buffer": "^4.0.1" | ||
11359 | } | ||
11360 | }, | ||
11361 | "socks-proxy-agent": { | ||
11362 | "version": "4.0.1", | ||
11363 | "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", | ||
11364 | "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", | ||
11365 | "requires": { | ||
11366 | "agent-base": "~4.2.0", | ||
11367 | "socks": "~2.2.0" | ||
11368 | } | ||
11369 | }, | ||
10930 | "sort-keys": { | 11370 | "sort-keys": { |
10931 | "version": "1.1.2", | 11371 | "version": "1.1.2", |
10932 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", | 11372 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", |
@@ -10935,6 +11375,14 @@ | |||
10935 | "is-plain-obj": "^1.0.0" | 11375 | "is-plain-obj": "^1.0.0" |
10936 | } | 11376 | } |
10937 | }, | 11377 | }, |
11378 | "sort-keys-length": { | ||
11379 | "version": "1.0.1", | ||
11380 | "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", | ||
11381 | "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", | ||
11382 | "requires": { | ||
11383 | "sort-keys": "^1.0.0" | ||
11384 | } | ||
11385 | }, | ||
10938 | "source-map": { | 11386 | "source-map": { |
10939 | "version": "0.5.7", | 11387 | "version": "0.5.7", |
10940 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", | 11388 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", |
@@ -10988,6 +11436,7 @@ | |||
10988 | "version": "2.0.12", | 11436 | "version": "2.0.12", |
10989 | "resolved": "https://registry.npmjs.org/spawn-rx/-/spawn-rx-2.0.12.tgz", | 11437 | "resolved": "https://registry.npmjs.org/spawn-rx/-/spawn-rx-2.0.12.tgz", |
10990 | "integrity": "sha512-gOPXiQQFQ9lTOLuys0iMn3jfxxv9c7zzwhbYLOEbQGvEShHVJ5sSR1oD3Daj88os7jKArDYT7rbOKdvNhe7iEg==", | 11438 | "integrity": "sha512-gOPXiQQFQ9lTOLuys0iMn3jfxxv9c7zzwhbYLOEbQGvEShHVJ5sSR1oD3Daj88os7jKArDYT7rbOKdvNhe7iEg==", |
11439 | "dev": true, | ||
10991 | "requires": { | 11440 | "requires": { |
10992 | "debug": "^2.5.1", | 11441 | "debug": "^2.5.1", |
10993 | "lodash.assign": "^4.2.0", | 11442 | "lodash.assign": "^4.2.0", |
@@ -10998,7 +11447,6 @@ | |||
10998 | "version": "3.0.2", | 11447 | "version": "3.0.2", |
10999 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", | 11448 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", |
11000 | "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", | 11449 | "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", |
11001 | "dev": true, | ||
11002 | "requires": { | 11450 | "requires": { |
11003 | "spdx-expression-parse": "^3.0.0", | 11451 | "spdx-expression-parse": "^3.0.0", |
11004 | "spdx-license-ids": "^3.0.0" | 11452 | "spdx-license-ids": "^3.0.0" |
@@ -11007,14 +11455,12 @@ | |||
11007 | "spdx-exceptions": { | 11455 | "spdx-exceptions": { |
11008 | "version": "2.2.0", | 11456 | "version": "2.2.0", |
11009 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", | 11457 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", |
11010 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", | 11458 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" |
11011 | "dev": true | ||
11012 | }, | 11459 | }, |
11013 | "spdx-expression-parse": { | 11460 | "spdx-expression-parse": { |
11014 | "version": "3.0.0", | 11461 | "version": "3.0.0", |
11015 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", | 11462 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", |
11016 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", | 11463 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", |
11017 | "dev": true, | ||
11018 | "requires": { | 11464 | "requires": { |
11019 | "spdx-exceptions": "^2.1.0", | 11465 | "spdx-exceptions": "^2.1.0", |
11020 | "spdx-license-ids": "^3.0.0" | 11466 | "spdx-license-ids": "^3.0.0" |
@@ -11023,8 +11469,7 @@ | |||
11023 | "spdx-license-ids": { | 11469 | "spdx-license-ids": { |
11024 | "version": "3.0.1", | 11470 | "version": "3.0.1", |
11025 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", | 11471 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", |
11026 | "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", | 11472 | "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==" |
11027 | "dev": true | ||
11028 | }, | 11473 | }, |
11029 | "speedometer": { | 11474 | "speedometer": { |
11030 | "version": "0.1.4", | 11475 | "version": "0.1.4", |
@@ -11067,6 +11512,14 @@ | |||
11067 | "tweetnacl": "~0.14.0" | 11512 | "tweetnacl": "~0.14.0" |
11068 | } | 11513 | } |
11069 | }, | 11514 | }, |
11515 | "ssri": { | ||
11516 | "version": "6.0.1", | ||
11517 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", | ||
11518 | "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", | ||
11519 | "requires": { | ||
11520 | "figgy-pudding": "^3.5.1" | ||
11521 | } | ||
11522 | }, | ||
11070 | "stack-trace": { | 11523 | "stack-trace": { |
11071 | "version": "0.0.10", | 11524 | "version": "0.0.10", |
11072 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", | 11525 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", |
@@ -11107,6 +11560,15 @@ | |||
11107 | "readable-stream": "^2.0.1" | 11560 | "readable-stream": "^2.0.1" |
11108 | } | 11561 | } |
11109 | }, | 11562 | }, |
11563 | "stream-each": { | ||
11564 | "version": "1.2.3", | ||
11565 | "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", | ||
11566 | "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", | ||
11567 | "requires": { | ||
11568 | "end-of-stream": "^1.1.0", | ||
11569 | "stream-shift": "^1.0.0" | ||
11570 | } | ||
11571 | }, | ||
11110 | "stream-exhaust": { | 11572 | "stream-exhaust": { |
11111 | "version": "1.0.2", | 11573 | "version": "1.0.2", |
11112 | "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", | 11574 | "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", |
@@ -11116,8 +11578,7 @@ | |||
11116 | "stream-shift": { | 11578 | "stream-shift": { |
11117 | "version": "1.0.0", | 11579 | "version": "1.0.0", |
11118 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", | 11580 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", |
11119 | "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", | 11581 | "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" |
11120 | "dev": true | ||
11121 | }, | 11582 | }, |
11122 | "strict-uri-encode": { | 11583 | "strict-uri-encode": { |
11123 | "version": "1.1.0", | 11584 | "version": "1.1.0", |
@@ -11197,7 +11658,8 @@ | |||
11197 | "symbol-observable": { | 11658 | "symbol-observable": { |
11198 | "version": "1.0.1", | 11659 | "version": "1.0.1", |
11199 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", | 11660 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", |
11200 | "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" | 11661 | "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", |
11662 | "dev": true | ||
11201 | }, | 11663 | }, |
11202 | "table": { | 11664 | "table": { |
11203 | "version": "4.0.2", | 11665 | "version": "4.0.2", |
@@ -11342,14 +11804,12 @@ | |||
11342 | "through": { | 11804 | "through": { |
11343 | "version": "2.3.8", | 11805 | "version": "2.3.8", |
11344 | "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", | 11806 | "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", |
11345 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", | 11807 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" |
11346 | "dev": true | ||
11347 | }, | 11808 | }, |
11348 | "through2": { | 11809 | "through2": { |
11349 | "version": "2.0.3", | 11810 | "version": "2.0.3", |
11350 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", | 11811 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", |
11351 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", | 11812 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", |
11352 | "dev": true, | ||
11353 | "requires": { | 11813 | "requires": { |
11354 | "readable-stream": "^2.1.5", | 11814 | "readable-stream": "^2.1.5", |
11355 | "xtend": "~4.0.1" | 11815 | "xtend": "~4.0.1" |
@@ -11504,8 +11964,7 @@ | |||
11504 | "tslib": { | 11964 | "tslib": { |
11505 | "version": "1.9.3", | 11965 | "version": "1.9.3", |
11506 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", | 11966 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", |
11507 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", | 11967 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" |
11508 | "dev": true | ||
11509 | }, | 11968 | }, |
11510 | "tunnel-agent": { | 11969 | "tunnel-agent": { |
11511 | "version": "0.6.0", | 11970 | "version": "0.6.0", |
@@ -11534,8 +11993,7 @@ | |||
11534 | "typedarray": { | 11993 | "typedarray": { |
11535 | "version": "0.0.6", | 11994 | "version": "0.0.6", |
11536 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", | 11995 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", |
11537 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", | 11996 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" |
11538 | "dev": true | ||
11539 | }, | 11997 | }, |
11540 | "ua-parser-js": { | 11998 | "ua-parser-js": { |
11541 | "version": "0.7.18", | 11999 | "version": "0.7.18", |
@@ -11553,11 +12011,6 @@ | |||
11553 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", | 12011 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", |
11554 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" | 12012 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" |
11555 | }, | 12013 | }, |
11556 | "underscore": { | ||
11557 | "version": "1.9.1", | ||
11558 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", | ||
11559 | "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" | ||
11560 | }, | ||
11561 | "undertaker": { | 12014 | "undertaker": { |
11562 | "version": "1.2.0", | 12015 | "version": "1.2.0", |
11563 | "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", | 12016 | "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", |
@@ -11641,6 +12094,22 @@ | |||
11641 | } | 12094 | } |
11642 | } | 12095 | } |
11643 | }, | 12096 | }, |
12097 | "unique-filename": { | ||
12098 | "version": "1.1.1", | ||
12099 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", | ||
12100 | "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", | ||
12101 | "requires": { | ||
12102 | "unique-slug": "^2.0.0" | ||
12103 | } | ||
12104 | }, | ||
12105 | "unique-slug": { | ||
12106 | "version": "2.0.1", | ||
12107 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", | ||
12108 | "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", | ||
12109 | "requires": { | ||
12110 | "imurmurhash": "^0.1.4" | ||
12111 | } | ||
12112 | }, | ||
11644 | "unique-stream": { | 12113 | "unique-stream": { |
11645 | "version": "2.2.1", | 12114 | "version": "2.2.1", |
11646 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", | 12115 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", |
@@ -11665,6 +12134,14 @@ | |||
11665 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", | 12134 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", |
11666 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" | 12135 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" |
11667 | }, | 12136 | }, |
12137 | "unixify": { | ||
12138 | "version": "1.0.0", | ||
12139 | "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", | ||
12140 | "integrity": "sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA=", | ||
12141 | "requires": { | ||
12142 | "normalize-path": "^2.1.1" | ||
12143 | } | ||
12144 | }, | ||
11668 | "unset-value": { | 12145 | "unset-value": { |
11669 | "version": "1.0.0", | 12146 | "version": "1.0.0", |
11670 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", | 12147 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", |
@@ -11706,6 +12183,22 @@ | |||
11706 | "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", | 12183 | "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", |
11707 | "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==" | 12184 | "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==" |
11708 | }, | 12185 | }, |
12186 | "unused-filename": { | ||
12187 | "version": "1.0.0", | ||
12188 | "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-1.0.0.tgz", | ||
12189 | "integrity": "sha1-00CID3GuIRXrqhMlvvBcxmhEacY=", | ||
12190 | "requires": { | ||
12191 | "modify-filename": "^1.1.0", | ||
12192 | "path-exists": "^3.0.0" | ||
12193 | }, | ||
12194 | "dependencies": { | ||
12195 | "path-exists": { | ||
12196 | "version": "3.0.0", | ||
12197 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", | ||
12198 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" | ||
12199 | } | ||
12200 | } | ||
12201 | }, | ||
11709 | "unzip-response": { | 12202 | "unzip-response": { |
11710 | "version": "2.0.1", | 12203 | "version": "2.0.1", |
11711 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", | 12204 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", |
@@ -11843,12 +12336,19 @@ | |||
11843 | "version": "3.0.4", | 12336 | "version": "3.0.4", |
11844 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", | 12337 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", |
11845 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", | 12338 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", |
11846 | "dev": true, | ||
11847 | "requires": { | 12339 | "requires": { |
11848 | "spdx-correct": "^3.0.0", | 12340 | "spdx-correct": "^3.0.0", |
11849 | "spdx-expression-parse": "^3.0.0" | 12341 | "spdx-expression-parse": "^3.0.0" |
11850 | } | 12342 | } |
11851 | }, | 12343 | }, |
12344 | "validate-npm-package-name": { | ||
12345 | "version": "3.0.0", | ||
12346 | "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", | ||
12347 | "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", | ||
12348 | "requires": { | ||
12349 | "builtins": "^1.0.3" | ||
12350 | } | ||
12351 | }, | ||
11852 | "value-or-function": { | 12352 | "value-or-function": { |
11853 | "version": "3.0.0", | 12353 | "version": "3.0.0", |
11854 | "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", | 12354 | "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", |
@@ -12186,11 +12686,6 @@ | |||
12186 | "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", | 12686 | "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", |
12187 | "dev": true | 12687 | "dev": true |
12188 | }, | 12688 | }, |
12189 | "xmlhttprequest": { | ||
12190 | "version": "1.8.0", | ||
12191 | "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", | ||
12192 | "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" | ||
12193 | }, | ||
12194 | "xmlhttprequest-ssl": { | 12689 | "xmlhttprequest-ssl": { |
12195 | "version": "1.5.3", | 12690 | "version": "1.5.3", |
12196 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", | 12691 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", |
diff --git a/package.json b/package.json index 8ec2d4f67..db5f70c70 100644 --- a/package.json +++ b/package.json | |||
@@ -36,19 +36,22 @@ | |||
36 | "classnames": "^2.2.5", | 36 | "classnames": "^2.2.5", |
37 | "debug-electron": "^0.0.4", | 37 | "debug-electron": "^0.0.4", |
38 | "du": "^0.1.0", | 38 | "du": "^0.1.0", |
39 | "electron-dl": "1.12.0", | ||
39 | "electron-fetch": "1.3.0", | 40 | "electron-fetch": "1.3.0", |
41 | "electron-hunspell": "0.1.1", | ||
40 | "electron-react-titlebar": "0.8.1", | 42 | "electron-react-titlebar": "0.8.1", |
41 | "electron-spellchecker": "^1.1.2", | ||
42 | "electron-updater": "^4.0.4", | 43 | "electron-updater": "^4.0.4", |
43 | "electron-window-state": "^4.1.0", | 44 | "electron-window-state": "^4.1.0", |
44 | "fs-extra": "7.0.1", | 45 | "fs-extra": "7.0.1", |
45 | "gulp-cli": "1.2.2", | 46 | "gulp-cli": "1.2.2", |
47 | "hunspell-dict-downloader": "1.0.0", | ||
46 | "ini": "^1.3.4", | 48 | "ini": "^1.3.4", |
47 | "jshashes": "^1.0.6", | 49 | "jshashes": "^1.0.6", |
48 | "jsonwebtoken": "^7.4.1", | 50 | "jsonwebtoken": "^7.4.1", |
49 | "keymaster": "^1.6.2", | 51 | "keymaster": "^1.6.2", |
50 | "lodash": "^4.17.4", | 52 | "lodash": "^4.17.4", |
51 | "mdi": "^1.9.33", | 53 | "mdi": "^1.9.33", |
54 | "mime-types": "2.1.21", | ||
52 | "minimist": "^1.2.0", | 55 | "minimist": "^1.2.0", |
53 | "mkdirp": "^0.5.1", | 56 | "mkdirp": "^0.5.1", |
54 | "mobx": "^3.1.0", | 57 | "mobx": "^3.1.0", |
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 280449ead..1ec2ab614 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js | |||
@@ -168,6 +168,18 @@ export default @observer class EditSettingsForm extends Component { | |||
168 | {/* Language */} | 168 | {/* Language */} |
169 | <h2 id="language">{intl.formatMessage(messages.headlineLanguage)}</h2> | 169 | <h2 id="language">{intl.formatMessage(messages.headlineLanguage)}</h2> |
170 | <Select field={form.$('locale')} showLabel={false} /> | 170 | <Select field={form.$('locale')} showLabel={false} /> |
171 | <PremiumFeatureContainer | ||
172 | condition={isSpellcheckerPremiumFeature} | ||
173 | > | ||
174 | <div> | ||
175 | <Toggle | ||
176 | field={form.$('enableSpellchecking')} | ||
177 | /> | ||
178 | {form.$('enableSpellchecking').value && ( | ||
179 | <Select field={form.$('spellcheckerLanguage')} /> | ||
180 | )} | ||
181 | </div> | ||
182 | </PremiumFeatureContainer> | ||
171 | <a | 183 | <a |
172 | href={FRANZ_TRANSLATION} | 184 | href={FRANZ_TRANSLATION} |
173 | target="_blank" | 185 | target="_blank" |
@@ -178,17 +190,8 @@ export default @observer class EditSettingsForm extends Component { | |||
178 | 190 | ||
179 | {/* Advanced */} | 191 | {/* Advanced */} |
180 | <h2 id="advanced">{intl.formatMessage(messages.headlineAdvanced)}</h2> | 192 | <h2 id="advanced">{intl.formatMessage(messages.headlineAdvanced)}</h2> |
181 | <PremiumFeatureContainer | ||
182 | condition={isSpellcheckerPremiumFeature} | ||
183 | > | ||
184 | <Toggle | ||
185 | field={form.$('enableSpellchecking')} | ||
186 | disabled | ||
187 | /> | ||
188 | </PremiumFeatureContainer> | ||
189 | <Toggle field={form.$('enableGPUAcceleration')} /> | 193 | <Toggle field={form.$('enableGPUAcceleration')} /> |
190 | <p className="settings__help">{intl.formatMessage(messages.enableGPUAccelerationInfo)}</p> | 194 | <p className="settings__help">{intl.formatMessage(messages.enableGPUAccelerationInfo)}</p> |
191 | {/* <Select field={form.$('spellcheckingLanguage')} /> */} | ||
192 | <div className="settings__settings-group"> | 195 | <div className="settings__settings-group"> |
193 | <h3> | 196 | <h3> |
194 | {intl.formatMessage(messages.subheadlineCache)} | 197 | {intl.formatMessage(messages.subheadlineCache)} |
diff --git a/src/config.js b/src/config.js index b5702a202..6d00b8670 100644 --- a/src/config.js +++ b/src/config.js | |||
@@ -17,6 +17,7 @@ export const DEFAULT_APP_SETTINGS = { | |||
17 | showDisabledServices: true, | 17 | showDisabledServices: true, |
18 | showMessageBadgeWhenMuted: true, | 18 | showMessageBadgeWhenMuted: true, |
19 | enableSpellchecking: true, | 19 | enableSpellchecking: true, |
20 | spellcheckerLanguage: 'en-us', | ||
20 | darkMode: false, | 21 | darkMode: false, |
21 | locale: '', | 22 | locale: '', |
22 | fallbackLocale: 'en-US', | 23 | fallbackLocale: 'en-US', |
@@ -35,3 +36,5 @@ export const FILE_SYSTEM_SETTINGS_TYPES = [ | |||
35 | ]; | 36 | ]; |
36 | 37 | ||
37 | export const SETTINGS_PATH = path.join(app.getPath('userData'), 'config'); | 38 | export const SETTINGS_PATH = path.join(app.getPath('userData'), 'config'); |
39 | |||
40 | export const DICTIONARY_PATH = path.join(app.getPath('userData'), 'dicts'); | ||
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 7da009c8b..ea1d319d9 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js | |||
@@ -7,7 +7,7 @@ import AppStore from '../../stores/AppStore'; | |||
7 | import SettingsStore from '../../stores/SettingsStore'; | 7 | import SettingsStore from '../../stores/SettingsStore'; |
8 | import UserStore from '../../stores/UserStore'; | 8 | import UserStore from '../../stores/UserStore'; |
9 | import Form from '../../lib/Form'; | 9 | import Form from '../../lib/Form'; |
10 | import { APP_LOCALES } from '../../i18n/languages'; | 10 | import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; |
11 | import { gaPage } from '../../lib/analytics'; | 11 | import { gaPage } from '../../lib/analytics'; |
12 | import { DEFAULT_APP_SETTINGS } from '../../config'; | 12 | import { DEFAULT_APP_SETTINGS } from '../../config'; |
13 | import { config as spellcheckerConfig } from '../../features/spellchecker'; | 13 | import { config as spellcheckerConfig } from '../../features/spellchecker'; |
@@ -60,8 +60,8 @@ const messages = defineMessages({ | |||
60 | id: 'settings.app.form.enableGPUAcceleration', | 60 | id: 'settings.app.form.enableGPUAcceleration', |
61 | defaultMessage: '!!!Enable GPU Acceleration', | 61 | defaultMessage: '!!!Enable GPU Acceleration', |
62 | }, | 62 | }, |
63 | spellcheckingLanguage: { | 63 | spellcheckerLanguage: { |
64 | id: 'settings.app.form.spellcheckingLanguage', | 64 | id: 'settings.app.form.spellcheckerLanguage', |
65 | defaultMessage: '!!!Language for spell checking', | 65 | defaultMessage: '!!!Language for spell checking', |
66 | }, | 66 | }, |
67 | beta: { | 67 | beta: { |
@@ -98,6 +98,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
98 | darkMode: settingsData.darkMode, | 98 | darkMode: settingsData.darkMode, |
99 | showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted, | 99 | showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted, |
100 | enableSpellchecking: settingsData.enableSpellchecking, | 100 | enableSpellchecking: settingsData.enableSpellchecking, |
101 | spellcheckerLanguage: settingsData.spellcheckerLanguage, | ||
101 | beta: settingsData.beta, // we need this info in the main process as well | 102 | beta: settingsData.beta, // we need this info in the main process as well |
102 | locale: settingsData.locale, // we need this info in the main process as well | 103 | locale: settingsData.locale, // we need this info in the main process as well |
103 | }, | 104 | }, |
@@ -123,6 +124,14 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
123 | }); | 124 | }); |
124 | }); | 125 | }); |
125 | 126 | ||
127 | const spellcheckingLanguages = []; | ||
128 | Object.keys(SPELLCHECKER_LOCALES).sort(Intl.Collator().compare).forEach((key) => { | ||
129 | spellcheckingLanguages.push({ | ||
130 | value: key, | ||
131 | label: SPELLCHECKER_LOCALES[key], | ||
132 | }); | ||
133 | }); | ||
134 | |||
126 | const config = { | 135 | const config = { |
127 | fields: { | 136 | fields: { |
128 | autoLaunchOnStart: { | 137 | autoLaunchOnStart: { |
@@ -165,6 +174,12 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
165 | value: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremiumFeature ? false : settings.all.app.enableSpellchecking, | 174 | value: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremiumFeature ? false : settings.all.app.enableSpellchecking, |
166 | default: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremiumFeature ? false : DEFAULT_APP_SETTINGS.enableSpellchecking, | 175 | default: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremiumFeature ? false : DEFAULT_APP_SETTINGS.enableSpellchecking, |
167 | }, | 176 | }, |
177 | spellcheckerLanguage: { | ||
178 | label: intl.formatMessage(messages.spellcheckerLanguage), | ||
179 | value: settings.all.app.spellcheckerLanguage, | ||
180 | options: spellcheckingLanguages, | ||
181 | default: DEFAULT_APP_SETTINGS.spellcheckerLanguage, | ||
182 | }, | ||
168 | darkMode: { | 183 | darkMode: { |
169 | label: intl.formatMessage(messages.darkMode), | 184 | label: intl.formatMessage(messages.darkMode), |
170 | value: settings.all.app.darkMode, | 185 | value: settings.all.app.darkMode, |
diff --git a/src/electron/ipc-api/download.js b/src/electron/ipc-api/download.js new file mode 100644 index 000000000..399ca6117 --- /dev/null +++ b/src/electron/ipc-api/download.js | |||
@@ -0,0 +1,43 @@ | |||
1 | import { ipcMain, dialog } from 'electron'; | ||
2 | import { download } from 'electron-dl'; | ||
3 | import mime from 'mime-types'; | ||
4 | import fs from 'fs-extra'; | ||
5 | |||
6 | const debug = require('debug')('Franz:ipcApi:download'); | ||
7 | |||
8 | function decodeBase64Image(dataString) { | ||
9 | const matches = dataString.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/); | ||
10 | |||
11 | if (matches.length !== 3) { | ||
12 | return new Error('Invalid input string'); | ||
13 | } | ||
14 | |||
15 | return new Buffer(matches[2], 'base64'); | ||
16 | } | ||
17 | |||
18 | export default (params) => { | ||
19 | ipcMain.on('download-file', async (event, { url, content, fileOptions = {} }) => { | ||
20 | try { | ||
21 | if (!content) { | ||
22 | const dl = await download(params.mainWindow, url, { | ||
23 | saveAs: true, | ||
24 | }); | ||
25 | debug('File saved to', dl.getSavePath()); | ||
26 | } else { | ||
27 | const extension = mime.extension(fileOptions.mime); | ||
28 | const filename = `${fileOptions.name}.${extension}`; | ||
29 | |||
30 | dialog.showSaveDialog(params.mainWindow, { | ||
31 | defaultPath: filename, | ||
32 | }, (name) => { | ||
33 | const binaryImage = decodeBase64Image(content); | ||
34 | fs.writeFileSync(name, binaryImage, 'binary'); | ||
35 | |||
36 | debug('File blob saved to', name); | ||
37 | }); | ||
38 | } | ||
39 | } catch (e) { | ||
40 | console.error(e); | ||
41 | } | ||
42 | }); | ||
43 | }; | ||
diff --git a/src/electron/ipc-api/index.js b/src/electron/ipc-api/index.js index 4ea6d1475..be8e0815a 100644 --- a/src/electron/ipc-api/index.js +++ b/src/electron/ipc-api/index.js | |||
@@ -1,9 +1,11 @@ | |||
1 | import autoUpdate from './autoUpdate'; | 1 | import autoUpdate from './autoUpdate'; |
2 | import settings from './settings'; | 2 | import settings from './settings'; |
3 | import appIndicator from './appIndicator'; | 3 | import appIndicator from './appIndicator'; |
4 | import download from './download'; | ||
4 | 5 | ||
5 | export default (params) => { | 6 | export default (params) => { |
6 | settings(params); | 7 | settings(params); |
7 | autoUpdate(params); | 8 | autoUpdate(params); |
8 | appIndicator(params); | 9 | appIndicator(params); |
10 | download(params); | ||
9 | }; | 11 | }; |
diff --git a/src/features/spellchecker/index.js b/src/features/spellchecker/index.js index 8b3fb7e00..8516f816c 100644 --- a/src/features/spellchecker/index.js +++ b/src/features/spellchecker/index.js | |||
@@ -12,26 +12,24 @@ export default function init(stores) { | |||
12 | reaction( | 12 | reaction( |
13 | () => stores.features.features.isSpellcheckerPremiumFeature, | 13 | () => stores.features.features.isSpellcheckerPremiumFeature, |
14 | (enabled, r) => { | 14 | (enabled, r) => { |
15 | if (enabled) { | 15 | debug('Initializing `spellchecker` feature'); |
16 | debug('Initializing `spellchecker` feature'); | ||
17 | 16 | ||
18 | // Dispose the reaction to run this only once | 17 | // Dispose the reaction to run this only once |
19 | r.dispose(); | 18 | r.dispose(); |
20 | 19 | ||
21 | const { isSpellcheckerPremiumFeature } = stores.features.features; | 20 | const { isSpellcheckerPremiumFeature } = stores.features.features; |
22 | 21 | ||
23 | config.isPremiumFeature = isSpellcheckerPremiumFeature !== undefined ? isSpellcheckerPremiumFeature : DEFAULT_IS_PREMIUM_FEATURE; | 22 | config.isPremiumFeature = isSpellcheckerPremiumFeature !== undefined ? isSpellcheckerPremiumFeature : DEFAULT_IS_PREMIUM_FEATURE; |
24 | 23 | ||
25 | autorun(() => { | 24 | autorun(() => { |
26 | if (!stores.user.data.isPremium && config.isPremiumFeature) { | 25 | if (!stores.user.data.isPremium && config.isPremiumFeature) { |
27 | debug('Override settings.spellcheckerEnabled flag to false'); | 26 | debug('Override settings.spellcheckerEnabled flag to false'); |
28 | 27 | ||
29 | Object.assign(stores.settings.all.app, { | 28 | Object.assign(stores.settings.all.app, { |
30 | enableSpellchecker: false, | 29 | enableSpellchecker: false, |
31 | }); | 30 | }); |
32 | } | 31 | } |
33 | }); | 32 | }); |
34 | } | ||
35 | }, | 33 | }, |
36 | ); | 34 | ); |
37 | } | 35 | } |
diff --git a/src/features/spellchecker/styles.js b/src/features/spellchecker/styles.js deleted file mode 100644 index 097368d9a..000000000 --- a/src/features/spellchecker/styles.js +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | export default (theme) => { | ||
2 | console.log(theme); | ||
3 | return ({ | ||
4 | container: { | ||
5 | background: theme.colorBackground, | ||
6 | position: 'absolute', | ||
7 | top: 0, | ||
8 | width: '100%', | ||
9 | display: 'flex', | ||
10 | 'flex-direction': 'column', | ||
11 | 'align-items': 'center', | ||
12 | 'justify-content': 'center', | ||
13 | 'z-index': 150, | ||
14 | }, | ||
15 | headline: { | ||
16 | color: theme.colorHeadline, | ||
17 | margin: [25, 0, 40], | ||
18 | 'max-width': 500, | ||
19 | 'text-align': 'center', | ||
20 | 'line-height': '1.3em', | ||
21 | }, | ||
22 | button: { | ||
23 | margin: [40, 0, 20], | ||
24 | }, | ||
25 | }); | ||
26 | }; | ||
diff --git a/src/helpers/i18n-helpers.js b/src/helpers/i18n-helpers.js new file mode 100644 index 000000000..afd28cab4 --- /dev/null +++ b/src/helpers/i18n-helpers.js | |||
@@ -0,0 +1,27 @@ | |||
1 | export function getLocale({ locale, locales, defaultLocale, fallbackLocale }) { | ||
2 | let localeStr = locale; | ||
3 | if (locales[locale] === undefined) { | ||
4 | let localeFuzzy; | ||
5 | Object.keys(locales).forEach((localStr) => { | ||
6 | if (locales && Object.hasOwnProperty.call(locales, localStr)) { | ||
7 | if (locale.substring(0, 2) === localStr.substring(0, 2)) { | ||
8 | localeFuzzy = localStr; | ||
9 | } | ||
10 | } | ||
11 | }); | ||
12 | |||
13 | if (localeFuzzy !== undefined) { | ||
14 | localeStr = localeFuzzy; | ||
15 | } | ||
16 | } | ||
17 | |||
18 | if (locales[localeStr] === undefined) { | ||
19 | localeStr = defaultLocale; | ||
20 | } | ||
21 | |||
22 | if (!localeStr) { | ||
23 | localeStr = fallbackLocale; | ||
24 | } | ||
25 | |||
26 | return localeStr; | ||
27 | } | ||
diff --git a/src/i18n/languages.js b/src/i18n/languages.js index 34b369da7..b262df01e 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js | |||
@@ -27,45 +27,43 @@ export const APP_LOCALES = { | |||
27 | es: 'Español', | 27 | es: 'Español', |
28 | }; | 28 | }; |
29 | 29 | ||
30 | export default APP_LOCALES; | 30 | // Hunspell compatible keys |
31 | export const SPELLCHECKER_LOCALES = { | ||
32 | 'bg-bg': 'български език', | ||
33 | 'ca-es': 'Català', | ||
34 | 'cs-cz': 'Čeština', | ||
35 | 'da-dk': 'Dansk', | ||
36 | 'de-de': 'Deutsch', | ||
37 | 'el-gr': 'λληνικά (Greek)', | ||
38 | 'en-us': 'English', | ||
39 | 'es-es': 'Español', | ||
40 | 'et-ee': 'Estonian', | ||
41 | 'fa-ir': 'فارسی (Persian)', | ||
42 | 'fo-fo': 'Faroese', | ||
43 | 'fr-fr': 'Français', | ||
44 | 'he-il': 'עברית (Hebrew)', | ||
45 | 'hr-hr': 'Hrvatski jezik', | ||
46 | 'hu-hu': 'Magyar', | ||
47 | 'it-it': 'Italiano', | ||
48 | ko: 'Korean', | ||
49 | 'lt-lt': 'Lietuvių kalba', | ||
50 | 'lv-lv': 'Latviešu valoda', | ||
51 | 'nb-no': 'Norsk bokmål', | ||
52 | 'nl-nl': 'Nederlands', | ||
53 | 'pl-pl': 'Język polski', | ||
54 | 'pt-br': 'Português (Brazil)', | ||
55 | 'pt-pt': 'Português', | ||
56 | 'ro-ro': 'Limba română', | ||
57 | 'ru-ru': 'Русский (Russian)', | ||
58 | 'sk-sk': 'Slovenčina', | ||
59 | 'sl-si': 'Slovenski jezik', | ||
60 | sr: 'Српски језик (Serbian)', | ||
61 | 'sv-se': 'Svenska', | ||
62 | 'ta-in': 'தமிழ் (Tamil)', | ||
63 | 'tg-tg': 'Тоҷикӣ (Tajik)', | ||
64 | tr: 'Türkçe', | ||
65 | 'uk-ua': 'Українська (Ukrainian)', | ||
66 | vi: 'Tiếng Việt', | ||
67 | }; | ||
31 | 68 | ||
32 | // export const SPELLCHECKER_LOCALES = { | 69 | export default APP_LOCALES; |
33 | // af: 'Afrikaans', | ||
34 | // sq: 'Albanian', | ||
35 | // ar: 'Arabic', | ||
36 | // bg: 'Bulgarian', | ||
37 | // zh: 'Chinese', | ||
38 | // hr: 'Croatian', | ||
39 | // cs: 'Czech', | ||
40 | // da: 'Danish', | ||
41 | // nl: 'Dutch', | ||
42 | // en: 'English', | ||
43 | // 'en-AU': 'English (AU)', | ||
44 | // 'en-CA': 'English (CA)', | ||
45 | // 'en-GB': 'English (GB)', | ||
46 | // fi: 'Finnish', | ||
47 | // fr: 'French', | ||
48 | // ka: 'Georgian', | ||
49 | // de: 'German', | ||
50 | // el: 'Greek, Modern', | ||
51 | // hi: 'Hindi', | ||
52 | // hu: 'Hungarian', | ||
53 | // id: 'Indonesian', | ||
54 | // it: 'Italian', | ||
55 | // ja: 'Japanese', | ||
56 | // jv: 'Javanese', | ||
57 | // ko: 'Korean', | ||
58 | // lt: 'Lithuanian', | ||
59 | // lv: 'Latvian', | ||
60 | // ms: 'Malay', | ||
61 | // no: 'Norwegian', | ||
62 | // pl: 'Polish', | ||
63 | // pt: 'Portuguese', | ||
64 | // ro: 'Romanian, Moldavian, Moldovan', | ||
65 | // ru: 'Russian', | ||
66 | // sk: 'Slovak', | ||
67 | // es: 'Spanish', | ||
68 | // sv: 'Swedish', | ||
69 | // uk: 'Ukrainian', | ||
70 | // vi: 'Vietnamese', | ||
71 | // }; | ||
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 8d82f98a4..864a18862 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -174,6 +174,7 @@ | |||
174 | "settings.app.form.runInBackground": "Keep Franz in background when closing the window", | 174 | "settings.app.form.runInBackground": "Keep Franz in background when closing the window", |
175 | "settings.app.form.language": "Language", | 175 | "settings.app.form.language": "Language", |
176 | "settings.app.form.enableSpellchecking": "Enable spell checking", | 176 | "settings.app.form.enableSpellchecking": "Enable spell checking", |
177 | "settings.app.form.spellcheckerLanguage": "Spell checking language", | ||
177 | "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", | 178 | "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", |
178 | "settings.app.form.showDisabledServices": "Display disabled services tabs", | 179 | "settings.app.form.showDisabledServices": "Display disabled services tabs", |
179 | "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", | 180 | "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", |
diff --git a/src/index.js b/src/index.js index 994531dbf..663f81cc9 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -1,10 +1,16 @@ | |||
1 | import { app, BrowserWindow, shell, ipcMain } from 'electron'; | 1 | import { app, BrowserWindow, shell, ipcMain } from 'electron'; |
2 | |||
2 | import fs from 'fs-extra'; | 3 | import fs from 'fs-extra'; |
3 | import path from 'path'; | 4 | import path from 'path'; |
4 | |||
5 | import windowStateKeeper from 'electron-window-state'; | 5 | import windowStateKeeper from 'electron-window-state'; |
6 | 6 | ||
7 | import { isDevMode, isMac, isWindows, isLinux } from './environment'; | 7 | import { isDevMode, isMac, isWindows, isLinux } from './environment'; |
8 | |||
9 | // DEV MODE: Save user data into FranzDev | ||
10 | if (isDevMode) { | ||
11 | app.setPath('userData', path.join(app.getPath('appData'), 'FranzDev')); | ||
12 | } | ||
13 | /* eslint-disable import/first */ | ||
8 | import ipcApi from './electron/ipc-api'; | 14 | import ipcApi from './electron/ipc-api'; |
9 | import Tray from './lib/Tray'; | 15 | import Tray from './lib/Tray'; |
10 | import Settings from './electron/Settings'; | 16 | import Settings from './electron/Settings'; |
@@ -13,6 +19,7 @@ import { appId } from './package.json'; // eslint-disable-line import/no-unresol | |||
13 | import './electron/exception'; | 19 | import './electron/exception'; |
14 | 20 | ||
15 | import { DEFAULT_APP_SETTINGS } from './config'; | 21 | import { DEFAULT_APP_SETTINGS } from './config'; |
22 | /* eslint-enable import/first */ | ||
16 | 23 | ||
17 | const debug = require('debug')('Franz:App'); | 24 | const debug = require('debug')('Franz:App'); |
18 | 25 | ||
@@ -21,11 +28,6 @@ const debug = require('debug')('Franz:App'); | |||
21 | let mainWindow; | 28 | let mainWindow; |
22 | let willQuitApp = false; | 29 | let willQuitApp = false; |
23 | 30 | ||
24 | // DEV MODE: Save user data into FranzDev | ||
25 | if (isDevMode) { | ||
26 | app.setPath('userData', path.join(app.getPath('appData'), 'FranzDev')); | ||
27 | } | ||
28 | |||
29 | // Ensure that the recipe directory exists | 31 | // Ensure that the recipe directory exists |
30 | fs.emptyDirSync(path.join(app.getPath('userData'), 'recipes', 'temp')); | 32 | fs.emptyDirSync(path.join(app.getPath('userData'), 'recipes', 'temp')); |
31 | fs.ensureFileSync(path.join(app.getPath('userData'), 'window-state.json')); | 33 | fs.ensureFileSync(path.join(app.getPath('userData'), 'window-state.json')); |
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 3e8b18801..45335c488 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -13,6 +13,7 @@ import { isMac, isLinux, isWindows } from '../environment'; | |||
13 | import locales from '../i18n/translations'; | 13 | import locales from '../i18n/translations'; |
14 | import { gaEvent } from '../lib/analytics'; | 14 | import { gaEvent } from '../lib/analytics'; |
15 | import { onVisibilityChange } from '../helpers/visibility-helper'; | 15 | import { onVisibilityChange } from '../helpers/visibility-helper'; |
16 | import { getLocale } from '../helpers/i18n-helpers'; | ||
16 | 17 | ||
17 | import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; | 18 | import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; |
18 | 19 | ||
@@ -59,6 +60,8 @@ export default class AppStore extends Store { | |||
59 | 60 | ||
60 | @observable isFocused = true; | 61 | @observable isFocused = true; |
61 | 62 | ||
63 | dictionaries = []; | ||
64 | |||
62 | constructor(...args) { | 65 | constructor(...args) { |
63 | super(...args); | 66 | super(...args); |
64 | 67 | ||
@@ -82,7 +85,7 @@ export default class AppStore extends Store { | |||
82 | ]); | 85 | ]); |
83 | } | 86 | } |
84 | 87 | ||
85 | setup() { | 88 | async setup() { |
86 | this._appStartsCounter(); | 89 | this._appStartsCounter(); |
87 | // Focus the active service | 90 | // Focus the active service |
88 | window.addEventListener('focus', this.actions.service.focusActiveService); | 91 | window.addEventListener('focus', this.actions.service.focusActiveService); |
@@ -169,11 +172,6 @@ export default class AppStore extends Store { | |||
169 | 172 | ||
170 | onVisibilityChange((isVisible) => { | 173 | onVisibilityChange((isVisible) => { |
171 | this.isFocused = isVisible; | 174 | this.isFocused = isVisible; |
172 | // debug('Last focus', moment().diff(this.timeLastFocusStart)); | ||
173 | |||
174 | // if (isVisible) { | ||
175 | // this.timeLastFocusStart = moment(); | ||
176 | // } | ||
177 | 175 | ||
178 | debug('Window is visible/focused', isVisible); | 176 | debug('Window is visible/focused', isVisible); |
179 | }); | 177 | }); |
@@ -322,31 +320,37 @@ export default class AppStore extends Store { | |||
322 | } | 320 | } |
323 | 321 | ||
324 | _getDefaultLocale() { | 322 | _getDefaultLocale() { |
325 | let locale = app.getLocale(); | 323 | return getLocale({ |
326 | if (locales[locale] === undefined) { | 324 | locale: app.getLocale(), |
327 | let localeFuzzy; | 325 | locales, |
328 | Object.keys(locales).forEach((localStr) => { | 326 | defaultLocale, |
329 | if (locales && Object.hasOwnProperty.call(locales, localStr)) { | 327 | fallbackLocale: DEFAULT_APP_SETTINGS.fallbackLocale, |
330 | if (locale.substring(0, 2) === localStr.substring(0, 2)) { | 328 | }); |
331 | localeFuzzy = localStr; | ||
332 | } | ||
333 | } | ||
334 | }); | ||
335 | |||
336 | if (localeFuzzy !== undefined) { | ||
337 | locale = localeFuzzy; | ||
338 | } | ||
339 | } | ||
340 | |||
341 | if (locales[locale] === undefined) { | ||
342 | locale = defaultLocale; | ||
343 | } | ||
344 | |||
345 | if (!locale) { | ||
346 | locale = DEFAULT_APP_SETTINGS.fallbackLocale; | ||
347 | } | ||
348 | 329 | ||
349 | return locale; | 330 | // if (locales[locale] === undefined) { |
331 | // let localeFuzzy; | ||
332 | // Object.keys(locales).forEach((localStr) => { | ||
333 | // if (locales && Object.hasOwnProperty.call(locales, localStr)) { | ||
334 | // if (locale.substring(0, 2) === localStr.substring(0, 2)) { | ||
335 | // localeFuzzy = localStr; | ||
336 | // } | ||
337 | // } | ||
338 | // }); | ||
339 | |||
340 | // if (localeFuzzy !== undefined) { | ||
341 | // locale = localeFuzzy; | ||
342 | // } | ||
343 | // } | ||
344 | |||
345 | // if (locales[locale] === undefined) { | ||
346 | // locale = defaultLocale; | ||
347 | // } | ||
348 | |||
349 | // if (!locale) { | ||
350 | // locale = DEFAULT_APP_SETTINGS.fallbackLocale; | ||
351 | // } | ||
352 | |||
353 | // return locale; | ||
350 | } | 354 | } |
351 | 355 | ||
352 | _muteAppHandler() { | 356 | _muteAppHandler() { |
diff --git a/src/stores/DictionaryStore.js b/src/stores/DictionaryStore.js new file mode 100644 index 000000000..b9c5f2abf --- /dev/null +++ b/src/stores/DictionaryStore.js | |||
@@ -0,0 +1,45 @@ | |||
1 | import { observable } from 'mobx'; | ||
2 | import { createDownloader } from 'hunspell-dict-downloader'; | ||
3 | |||
4 | import Store from './lib/Store'; | ||
5 | |||
6 | import { DICTIONARY_PATH } from '../config'; | ||
7 | |||
8 | const debug = require('debug')('Franz:DictionaryStore'); | ||
9 | |||
10 | export default class DictionaryStore extends Store { | ||
11 | @observable available = [] | ||
12 | @observable installed = [] | ||
13 | |||
14 | _dictDownloader = null | ||
15 | |||
16 | constructor(...args) { | ||
17 | super(...args); | ||
18 | |||
19 | this.registerReactions([ | ||
20 | this._downloadDictForUserLocale.bind(this), | ||
21 | ]); | ||
22 | } | ||
23 | |||
24 | async setup() { | ||
25 | this._dictDownloader = await createDownloader(DICTIONARY_PATH); | ||
26 | debug('dicts', this._dictDownloader); | ||
27 | |||
28 | this.available = this._dictDownloader.availableDictionaries; | ||
29 | this.installed = this._dictDownloader.installedDictionaries; | ||
30 | |||
31 | if (!this.installed.includes('en-us')) { | ||
32 | this._dictDownloader.installDictionary('en-us'); | ||
33 | } | ||
34 | } | ||
35 | |||
36 | _downloadDictForUserLocale() { | ||
37 | const spellcheckerLanguage = this.stores.settings.app.spellcheckerLanguage; | ||
38 | |||
39 | debug('trying to Downloading dict for', spellcheckerLanguage); | ||
40 | if (!this.installed.includes(spellcheckerLanguage) && this.available.includes(spellcheckerLanguage) && spellcheckerLanguage !== 'en-us') { | ||
41 | debug('Downloading dict for', spellcheckerLanguage); | ||
42 | this._dictDownloader.installDictionary(spellcheckerLanguage); | ||
43 | } | ||
44 | } | ||
45 | } | ||
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index e22b343e7..8f217ea94 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -67,9 +67,14 @@ export default class ServicesStore extends Store { | |||
67 | } | 67 | } |
68 | 68 | ||
69 | setup() { | 69 | setup() { |
70 | // Single key reactions | 70 | // Single key reactions for the sake of your CPU |
71 | reaction( | 71 | reaction( |
72 | () => this.stores.settings.all.app.enableSpellchecking, | 72 | () => this.stores.settings.app.enableSpellchecking, |
73 | () => this._shareSettingsWithServiceProcess(), | ||
74 | ); | ||
75 | |||
76 | reaction( | ||
77 | () => this.stores.settings.app.spellcheckerLanguage, | ||
73 | () => this._shareSettingsWithServiceProcess(), | 78 | () => this._shareSettingsWithServiceProcess(), |
74 | ); | 79 | ); |
75 | } | 80 | } |
@@ -590,9 +595,10 @@ export default class ServicesStore extends Store { | |||
590 | } | 595 | } |
591 | 596 | ||
592 | _shareSettingsWithServiceProcess() { | 597 | _shareSettingsWithServiceProcess() { |
598 | const settings = this.stores.settings.app; | ||
593 | this.actions.service.sendIPCMessageToAllServices({ | 599 | this.actions.service.sendIPCMessageToAllServices({ |
594 | channel: 'settings-update', | 600 | channel: 'settings-update', |
595 | args: this.stores.settings.all.app, | 601 | args: settings, |
596 | }); | 602 | }); |
597 | } | 603 | } |
598 | 604 | ||
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js index b62ac15e0..4a42ed924 100644 --- a/src/stores/SettingsStore.js +++ b/src/stores/SettingsStore.js | |||
@@ -5,8 +5,10 @@ import localStorage from 'mobx-localstorage'; | |||
5 | import Store from './lib/Store'; | 5 | import Store from './lib/Store'; |
6 | import Request from './lib/Request'; | 6 | import Request from './lib/Request'; |
7 | import CachedRequest from './lib/CachedRequest'; | 7 | import CachedRequest from './lib/CachedRequest'; |
8 | import { getLocale } from '../helpers/i18n-helpers'; | ||
8 | 9 | ||
9 | import { DEFAULT_APP_SETTINGS, FILE_SYSTEM_SETTINGS_TYPES } from '../config'; | 10 | import { DEFAULT_APP_SETTINGS, FILE_SYSTEM_SETTINGS_TYPES } from '../config'; |
11 | import { SPELLCHECKER_LOCALES } from '../i18n/languages'; | ||
10 | 12 | ||
11 | const { systemPreferences } = remote; | 13 | const { systemPreferences } = remote; |
12 | const debug = require('debug')('Franz:SettingsStore'); | 14 | const debug = require('debug')('Franz:SettingsStore'); |
@@ -41,7 +43,6 @@ export default class SettingsStore extends Store { | |||
41 | }); | 43 | }); |
42 | 44 | ||
43 | this.fileSystemSettingsTypes.forEach((type) => { | 45 | this.fileSystemSettingsTypes.forEach((type) => { |
44 | console.log(type); | ||
45 | ipcRenderer.send('getAppSettings', type); | 46 | ipcRenderer.send('getAppSettings', type); |
46 | }); | 47 | }); |
47 | } | 48 | } |
@@ -157,10 +158,18 @@ export default class SettingsStore extends Store { | |||
157 | 158 | ||
158 | // Enable dark mode once | 159 | // Enable dark mode once |
159 | if (!this.all.migration['5.0.0-beta.19-settings']) { | 160 | if (!this.all.migration['5.0.0-beta.19-settings']) { |
161 | const spellcheckerLanguage = getLocale({ | ||
162 | locale: this.stores.settings.app.locale, | ||
163 | locales: SPELLCHECKER_LOCALES, | ||
164 | defaultLocale: DEFAULT_APP_SETTINGS.spellcheckerLanguage, | ||
165 | fallbackLocale: DEFAULT_APP_SETTINGS.spellcheckerLanguage, | ||
166 | }); | ||
167 | |||
160 | this.actions.settings.update({ | 168 | this.actions.settings.update({ |
161 | type: 'app', | 169 | type: 'app', |
162 | data: { | 170 | data: { |
163 | darkMode: systemPreferences.isDarkMode(), | 171 | darkMode: systemPreferences.isDarkMode(), |
172 | spellcheckerLanguage, | ||
164 | }, | 173 | }, |
165 | }); | 174 | }); |
166 | 175 | ||
diff --git a/src/stores/index.js b/src/stores/index.js index 96b844c95..f547d0a7a 100644 --- a/src/stores/index.js +++ b/src/stores/index.js | |||
@@ -9,6 +9,7 @@ import UIStore from './UIStore'; | |||
9 | import PaymentStore from './PaymentStore'; | 9 | import PaymentStore from './PaymentStore'; |
10 | import NewsStore from './NewsStore'; | 10 | import NewsStore from './NewsStore'; |
11 | import RequestStore from './RequestStore'; | 11 | import RequestStore from './RequestStore'; |
12 | import DictionaryStore from './DictionaryStore'; | ||
12 | import GlobalErrorStore from './GlobalErrorStore'; | 13 | import GlobalErrorStore from './GlobalErrorStore'; |
13 | 14 | ||
14 | export default (api, actions, router) => { | 15 | export default (api, actions, router) => { |
@@ -26,6 +27,7 @@ export default (api, actions, router) => { | |||
26 | payment: new PaymentStore(stores, api, actions), | 27 | payment: new PaymentStore(stores, api, actions), |
27 | news: new NewsStore(stores, api, actions), | 28 | news: new NewsStore(stores, api, actions), |
28 | requests: new RequestStore(stores, api, actions), | 29 | requests: new RequestStore(stores, api, actions), |
30 | dictionary: new DictionaryStore(stores, api, actions), | ||
29 | globalError: new GlobalErrorStore(stores, api, actions), | 31 | globalError: new GlobalErrorStore(stores, api, actions), |
30 | }); | 32 | }); |
31 | // Initialize all stores | 33 | // Initialize all stores |
diff --git a/src/webview/contextMenu.js b/src/webview/contextMenu.js new file mode 100644 index 000000000..4dda51bde --- /dev/null +++ b/src/webview/contextMenu.js | |||
@@ -0,0 +1,175 @@ | |||
1 | // This is heavily based on https://github.com/sindresorhus/electron-context-menu | ||
2 | // ❤ @sindresorhus | ||
3 | |||
4 | import { clipboard, remote, ipcRenderer, shell } from 'electron'; | ||
5 | |||
6 | import { isDevMode } from '../environment'; | ||
7 | |||
8 | const debug = require('debug')('Franz:contextMenu'); | ||
9 | |||
10 | const { Menu } = remote; | ||
11 | |||
12 | // const win = remote.getCurrentWindow(); | ||
13 | const webContents = remote.getCurrentWebContents(); | ||
14 | |||
15 | function delUnusedElements(menuTpl) { | ||
16 | let notDeletedPrevEl; | ||
17 | return menuTpl.filter(el => el.visible !== false).filter((el, i, array) => { | ||
18 | const toDelete = el.type === 'separator' && (!notDeletedPrevEl || i === array.length - 1 || array[i + 1].type === 'separator'); | ||
19 | notDeletedPrevEl = toDelete ? notDeletedPrevEl : el; | ||
20 | return !toDelete; | ||
21 | }); | ||
22 | } | ||
23 | |||
24 | const buildMenuTpl = (props, suggestions) => { | ||
25 | const { editFlags } = props; | ||
26 | const hasText = props.selectionText.trim().length > 0; | ||
27 | const can = type => editFlags[`can${type}`] && hasText; | ||
28 | |||
29 | let menuTpl = [ | ||
30 | { | ||
31 | type: 'separator', | ||
32 | }, { | ||
33 | id: 'cut', | ||
34 | role: can('Cut') ? 'cut' : '', | ||
35 | enabled: can('Cut'), | ||
36 | visible: props.isEditable, | ||
37 | }, { | ||
38 | id: 'copy', | ||
39 | label: 'Copy', | ||
40 | role: can('Copy') ? 'copy' : '', | ||
41 | enabled: can('Copy'), | ||
42 | visible: props.isEditable || hasText, | ||
43 | }, { | ||
44 | id: 'paste', | ||
45 | label: 'Paste', | ||
46 | role: editFlags.canPaste ? 'paste' : '', | ||
47 | enabled: editFlags.canPaste, | ||
48 | visible: props.isEditable, | ||
49 | }, { | ||
50 | type: 'separator', | ||
51 | }, | ||
52 | ]; | ||
53 | |||
54 | if (props.linkURL && props.mediaType === 'none') { | ||
55 | menuTpl = [{ | ||
56 | type: 'separator', | ||
57 | }, { | ||
58 | id: 'openLink', | ||
59 | label: 'Open Link in Browser', | ||
60 | click() { | ||
61 | shell.openExternal(props.linkURL); | ||
62 | }, | ||
63 | }, { | ||
64 | id: 'copyLink', | ||
65 | label: 'Copy Link', | ||
66 | click() { | ||
67 | clipboard.write({ | ||
68 | bookmark: props.linkText, | ||
69 | text: props.linkURL, | ||
70 | }); | ||
71 | }, | ||
72 | }, { | ||
73 | type: 'separator', | ||
74 | }]; | ||
75 | } | ||
76 | |||
77 | if (props.mediaType === 'image') { | ||
78 | menuTpl.push({ | ||
79 | type: 'separator', | ||
80 | }, { | ||
81 | id: 'openImage', | ||
82 | label: 'Open Image in Browser', | ||
83 | click() { | ||
84 | shell.openExternal(props.srcURL); | ||
85 | }, | ||
86 | }, { | ||
87 | id: 'copyImageAddress', | ||
88 | label: 'Copy Image Address', | ||
89 | click() { | ||
90 | clipboard.write({ | ||
91 | bookmark: props.srcURL, | ||
92 | text: props.srcURL, | ||
93 | }); | ||
94 | }, | ||
95 | }, { | ||
96 | type: 'separator', | ||
97 | }); | ||
98 | } | ||
99 | |||
100 | if (props.mediaType === 'image') { | ||
101 | menuTpl.push({ | ||
102 | id: 'saveImageAs', | ||
103 | label: 'Save Image As…', | ||
104 | async click() { | ||
105 | if (props.srcURL.startsWith('blob:')) { | ||
106 | const url = new window.URL(props.srcURL.substr(5)); | ||
107 | const fileName = url.pathname.substr(1); | ||
108 | const resp = await window.fetch(props.srcURL); | ||
109 | const blob = await resp.blob(); | ||
110 | const reader = new window.FileReader(); | ||
111 | reader.readAsDataURL(blob); | ||
112 | reader.onloadend = () => { | ||
113 | const base64data = reader.result; | ||
114 | |||
115 | ipcRenderer.send('download-file', { | ||
116 | content: base64data, | ||
117 | fileOptions: { | ||
118 | name: fileName, | ||
119 | mime: blob.type, | ||
120 | }, | ||
121 | }); | ||
122 | }; | ||
123 | debug('binary string', blob); | ||
124 | } else { | ||
125 | ipcRenderer.send('download-file', { url: props.srcURL }); | ||
126 | } | ||
127 | }, | ||
128 | }, { | ||
129 | type: 'separator', | ||
130 | }); | ||
131 | } | ||
132 | |||
133 | if (suggestions.length > 0) { | ||
134 | suggestions.reverse().map(suggestion => menuTpl.unshift({ | ||
135 | id: `suggestion-${suggestion}`, | ||
136 | label: suggestion, | ||
137 | click() { | ||
138 | webContents.replaceMisspelling(suggestion); | ||
139 | }, | ||
140 | })); | ||
141 | } | ||
142 | |||
143 | if (isDevMode) { | ||
144 | menuTpl.push({ | ||
145 | type: 'separator', | ||
146 | }, { | ||
147 | id: 'inspect', | ||
148 | label: 'Inspect Element', | ||
149 | click() { | ||
150 | webContents.inspectElement(props.x, props.y); | ||
151 | }, | ||
152 | }, { | ||
153 | type: 'separator', | ||
154 | }); | ||
155 | } | ||
156 | |||
157 | return delUnusedElements(menuTpl); | ||
158 | }; | ||
159 | |||
160 | export default function contextMenu(spellcheckProvider) { | ||
161 | webContents.on('context-menu', (e, props) => { | ||
162 | e.preventDefault(); | ||
163 | |||
164 | let suggestions = []; | ||
165 | if (spellcheckProvider && props.misspelledWord) { | ||
166 | suggestions = spellcheckProvider.getSuggestion(props.misspelledWord); | ||
167 | |||
168 | debug('Suggestions', suggestions); | ||
169 | } | ||
170 | |||
171 | const menu = Menu.buildFromTemplate(buildMenuTpl(props, suggestions.slice(0, 5))); | ||
172 | |||
173 | menu.popup(remote.getCurrentWindow()); | ||
174 | }); | ||
175 | } | ||
diff --git a/src/webview/plugin.js b/src/webview/plugin.js index 427ec75ad..72530733d 100644 --- a/src/webview/plugin.js +++ b/src/webview/plugin.js | |||
@@ -1,12 +1,11 @@ | |||
1 | import { ipcRenderer } from 'electron'; | 1 | import { ipcRenderer } from 'electron'; |
2 | import { ContextMenuListener, ContextMenuBuilder } from 'electron-spellchecker'; | ||
3 | import path from 'path'; | 2 | import path from 'path'; |
4 | 3 | ||
5 | import { isDevMode } from '../environment'; | ||
6 | import RecipeWebview from './lib/RecipeWebview'; | 4 | import RecipeWebview from './lib/RecipeWebview'; |
7 | 5 | ||
8 | import Spellchecker from './spellchecker'; | 6 | import spellchecker, { switchDict, disable as disableSpellchecker } from './spellchecker'; |
9 | import { injectDarkModeStyle, isDarkModeStyleInjected, removeDarkModeStyle } from './darkmode'; | 7 | import { injectDarkModeStyle, isDarkModeStyleInjected, removeDarkModeStyle } from './darkmode'; |
8 | import contextMenu from './contextMenu'; | ||
10 | import './notifications'; | 9 | import './notifications'; |
11 | 10 | ||
12 | const debug = require('debug')('Franz:Plugin'); | 11 | const debug = require('debug')('Franz:Plugin'); |
@@ -34,19 +33,21 @@ ipcRenderer.on('initializeRecipe', (e, data) => { | |||
34 | } | 33 | } |
35 | }); | 34 | }); |
36 | 35 | ||
37 | const spellchecker = new Spellchecker(); | 36 | // Needs to run asap to intialize dictionaries |
38 | spellchecker.initialize(); | 37 | (async () => { |
38 | const spellcheckingProvider = await spellchecker(); | ||
39 | contextMenu(spellcheckingProvider); | ||
40 | })(); | ||
39 | 41 | ||
40 | const contextMenuBuilder = new ContextMenuBuilder(spellchecker.handler, null, isDevMode); | 42 | ipcRenderer.on('settings-update', async (e, data) => { |
41 | |||
42 | new ContextMenuListener((info) => { // eslint-disable-line | ||
43 | contextMenuBuilder.showPopupMenu(info); | ||
44 | }); | ||
45 | |||
46 | ipcRenderer.on('settings-update', (e, data) => { | ||
47 | debug('Settings update received', data); | 43 | debug('Settings update received', data); |
48 | 44 | ||
49 | spellchecker.toggleSpellchecker(data.enableSpellchecking); | 45 | if (data.enableSpellchecking) { |
46 | switchDict(data.spellcheckerLanguage); | ||
47 | } else { | ||
48 | disableSpellchecker(); | ||
49 | } | ||
50 | |||
50 | window.franzSettings = data; | 51 | window.franzSettings = data; |
51 | }); | 52 | }); |
52 | 53 | ||
@@ -64,7 +65,7 @@ ipcRenderer.on('service-settings-update', (e, data) => { | |||
64 | } | 65 | } |
65 | }); | 66 | }); |
66 | 67 | ||
67 | // Needed for current implementation of electrons 'login' event | 68 | // Needed for current implementation of electrons 'login' event 🤦 |
68 | ipcRenderer.on('get-service-id', (event) => { | 69 | ipcRenderer.on('get-service-id', (event) => { |
69 | debug('Asking for service id', event); | 70 | debug('Asking for service id', event); |
70 | 71 | ||
diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js index a504a4039..b0192b7ef 100644 --- a/src/webview/spellchecker.js +++ b/src/webview/spellchecker.js | |||
@@ -1,63 +1,92 @@ | |||
1 | import { SpellCheckHandler } from 'electron-spellchecker'; | 1 | import { webFrame } from 'electron'; |
2 | import fs from 'fs'; | ||
3 | import path from 'path'; | ||
4 | import { SpellCheckerProvider } from 'electron-hunspell'; | ||
2 | 5 | ||
3 | import { isMac } from '../environment'; | 6 | import { DICTIONARY_PATH } from '../config'; |
4 | 7 | ||
5 | export default class Spellchecker { | 8 | const debug = require('debug')('Franz:spellchecker'); |
6 | isInitialized = false; | ||
7 | handler = null; | ||
8 | initRetries = 0; | ||
9 | DOMCheckInterval = null; | ||
10 | 9 | ||
11 | get inputs() { | 10 | let provider; |
12 | return document.querySelectorAll('input[type="text"], [contenteditable="true"], textarea'); | 11 | let currentDict; |
13 | } | 12 | let _isEnabled = false; |
14 | 13 | ||
15 | initialize() { | 14 | async function loadDictionaries() { |
16 | this.handler = new SpellCheckHandler(); | 15 | const rawList = fs.readdirSync(DICTIONARY_PATH); |
17 | 16 | ||
18 | if (!isMac) { | 17 | const dicts = rawList.filter(item => !item.startsWith('.') && fs.lstatSync(path.join(DICTIONARY_PATH, item)).isDirectory()); |
19 | this.attach(); | 18 | |
20 | } else { | 19 | debug('Found dictionaries', dicts); |
21 | this.isInitialized = true; | 20 | |
22 | } | 21 | for (let i = 0; i < dicts.length; i += 1) { |
22 | const fileLocation = `${DICTIONARY_PATH}/${dicts[i]}/${dicts[i]}`; | ||
23 | debug('Trying to load', fileLocation); | ||
24 | // eslint-disable-next-line | ||
25 | await provider.loadDictionary(dicts[i], `${fileLocation}.dic`, `${fileLocation}.aff`); | ||
23 | } | 26 | } |
27 | } | ||
28 | |||
29 | export async function switchDict(locale) { | ||
30 | try { | ||
31 | debug('Trying to load dictionary', locale); | ||
24 | 32 | ||
25 | attach() { | 33 | if (!provider.availableDictionaries.includes(locale)) { |
26 | let initFailed = false; | 34 | console.warn('Dict not available', locale); |
27 | 35 | ||
28 | if (this.initRetries > 3) { | ||
29 | console.error('Could not initialize spellchecker'); | ||
30 | return; | 36 | return; |
31 | } | 37 | } |
32 | 38 | ||
33 | try { | 39 | if (!provider) { |
34 | this.handler.attachToInput(); | 40 | console.warn('SpellcheckProvider not initialized'); |
35 | this.handler.switchLanguage(navigator.language); | 41 | |
36 | } catch (err) { | 42 | return; |
37 | initFailed = true; | ||
38 | this.initRetries = +1; | ||
39 | setTimeout(() => { this.attach(); console.warn('Spellchecker init failed, trying again in 5s'); }, 5000); | ||
40 | } | 43 | } |
41 | 44 | ||
42 | if (!initFailed) { | 45 | if (locale === currentDict) { |
43 | this.isInitialized = true; | 46 | console.warn('Dictionary is already used', currentDict); |
47 | |||
48 | return; | ||
44 | } | 49 | } |
45 | } | ||
46 | 50 | ||
47 | toggleSpellchecker(enable = false) { | 51 | provider.switchDictionary(locale); |
48 | this.inputs.forEach((input) => { | ||
49 | input.setAttribute('spellcheck', enable); | ||
50 | }); | ||
51 | 52 | ||
52 | this.intervalHandler(enable); | 53 | debug('Switched dictionary to', locale); |
54 | |||
55 | currentDict = locale; | ||
56 | _isEnabled = true; | ||
57 | } catch (err) { | ||
58 | console.error(err); | ||
53 | } | 59 | } |
60 | } | ||
54 | 61 | ||
55 | intervalHandler(enable) { | 62 | export default async function initialize(languageCode = 'en-us') { |
56 | clearInterval(this.DOMCheckInterval); | 63 | try { |
64 | provider = new SpellCheckerProvider(); | ||
65 | const locale = languageCode.toLowerCase(); | ||
57 | 66 | ||
58 | if (enable) { | 67 | debug('Init spellchecker'); |
59 | this.DOMCheckInterval = setInterval(() => this.toggleSpellchecker(enable), 30000); | 68 | await provider.initialize(); |
60 | } | 69 | await loadDictionaries(); |
70 | |||
71 | debug('Available spellchecker dictionaries', provider.availableDictionaries); | ||
72 | |||
73 | switchDict(locale); | ||
74 | |||
75 | return provider; | ||
76 | } catch (err) { | ||
77 | console.error(err); | ||
78 | return false; | ||
61 | } | 79 | } |
62 | } | 80 | } |
63 | 81 | ||
82 | export function isEnabled() { | ||
83 | return _isEnabled; | ||
84 | } | ||
85 | |||
86 | export function disable() { | ||
87 | if (isEnabled()) { | ||
88 | webFrame.setSpellCheckProvider(currentDict, true, { spellCheck: () => true }); | ||
89 | _isEnabled = false; | ||
90 | currentDict = null; | ||
91 | } | ||
92 | } | ||