From 87999b347f25c835257a0450dd1e31b0cbcfc97a Mon Sep 17 00:00:00 2001 From: Mads Cordes Date: Mon, 22 Nov 2021 02:38:23 +0100 Subject: [PATCH 1/2] Add `dev` command for watching changes in any `.clio`-file --- package-lock.json | 2005 ++---------------------------- package.json | 1 + packages/cli/commands/build.js | 358 +++--- packages/cli/commands/dev.js | 64 + packages/cli/index.js | 36 +- packages/cli/lib/platforms.js | 43 +- packages/core/index.js | 199 +-- packages/run/src/runners/auto.js | 52 +- 8 files changed, 561 insertions(+), 2197 deletions(-) create mode 100644 packages/cli/commands/dev.js diff --git a/package-lock.json b/package-lock.json index 9424fd97..bfe7c094 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,43 +10,20 @@ "license": "Apache-2.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@rollup/plugin-alias": "^3.1.2", - "@rollup/plugin-commonjs": "^19.0.0", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^13.0.0", - "@surma/rollup-plugin-off-main-thread": "^2.2.2", - "babel-plugin-module-resolver": "^4.1.0", "bean-parser": "2.1.0", - "bluebird": "^3.7.2", - "buffer": "^5.7.1", - "bufferutil": "^4.0.3", "chalk": "4.1.2", - "chart.js": "^3.3.0", - "chartjs-plugin-datalabels": "^2.0.0", + "chokidar": "^3.5.2", "clio-lang-cli": "0.12.0", "decompress": "^4.2.1", "del": "6.0.0", "enquirer": "^2.3.6", - "fontfaceobserver": "^2.1.0", "merge": "2.1.1", - "nice-color-palettes": "^3.0.0", "node-fetch": "^2.6.1", "npm-registry-fetch": "^10.1.2", - "object-inspect": "^1.10.3", "ora": "^5.4.1", - "rollup": "^2.50.2", - "rollup-plugin-css-only": "^3.1.0", - "rollup-plugin-livereload": "^2.0.0", - "rollup-plugin-polyfill-node": "^0.7.0", - "rollup-plugin-svelte": "^7.1.0", - "rollup-plugin-terser": "^7.0.2", "sializer": "^0.1.1", - "sirv-cli": "^1.0.12", "source-map": "^0.7.3", - "svelte": "^3.43.1", "tmp": "0.2.1", - "vscode-languageserver": "^7.0.0", - "vscode-languageserver-textdocument": "^1.0.1", "ws": "^7.4.6", "yargs": "^17.0.1" }, @@ -71,6 +48,7 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, "dependencies": { "@babel/highlight": "^7.10.4" } @@ -339,6 +317,7 @@ "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -370,6 +349,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", @@ -383,6 +363,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -394,6 +375,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -407,6 +389,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -414,12 +397,14 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, "engines": { "node": ">=0.8.0" } @@ -428,6 +413,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, "engines": { "node": ">=4" } @@ -436,6 +422,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -2464,122 +2451,6 @@ "@octokit/openapi-types": "^10.6.4" } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" - }, - "node_modules/@rollup/plugin-alias": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.5.tgz", - "integrity": "sha512-yzUaSvCC/LJPbl9rnzX3HN7vy0tq7EzHoEiQl1ofh4n5r2Rd5bj/+zcJgaGA76xbw95/JjWQyvHg9rOJp2y0oQ==", - "dependencies": { - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.2.tgz", - "integrity": "sha512-gBjarfqlC7qs0AutpRW/hrFNm+cd2/QKxhwyFa+srbg1oX7rDsEU3l+W7LAUhsAp9mPJMAkXDhLbQaVwEaE8bA==", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^2.38.3" - } - }, - "node_modules/@rollup/plugin-inject": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.2.tgz", - "integrity": "sha512-TSLMA8waJ7Dmgmoc8JfPnwUwVZgLjjIAM6MqeIFqPO2ODK36JqE0Cf2F54UTgCUuW8da93Mvoj75a6KAVWgylw==", - "dependencies": { - "@rollup/pluginutils": "^3.0.4", - "estree-walker": "^1.0.1", - "magic-string": "^0.25.5" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/plugin-inject/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - }, - "node_modules/@rollup/plugin-json": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", - "dependencies": { - "@rollup/pluginutils": "^3.0.8" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz", - "integrity": "sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ==", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^2.42.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "engines": { - "node": ">=6" - } - }, "node_modules/@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -2598,27 +2469,6 @@ "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.2.tgz", - "integrity": "sha512-dOD6nGZ79RmWKDRQuC7SOGXMvDkkLwBogu+epfVFMKiy2kOUtLZkb8wV/ettuMt37YJAJKYCKUmxSbZL2LkUQg==", - "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -2668,11 +2518,6 @@ "@babel/types": "^7.3.0" } }, - "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - }, "node_modules/@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -2737,7 +2582,8 @@ "node_modules/@types/node": { "version": "16.10.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", - "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==", + "dev": true }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -2757,14 +2603,6 @@ "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", "dev": true }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -3195,11 +3033,6 @@ "node": ">=8" } }, - "node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3283,21 +3116,6 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/babel-plugin-module-resolver": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", - "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", - "dependencies": { - "find-babel-config": "^1.2.0", - "glob": "^7.1.6", - "pkg-up": "^3.1.0", - "reselect": "^4.0.0", - "resolve": "^1.13.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -3399,11 +3217,6 @@ "readable-stream": "^3.4.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3515,13 +3328,16 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/bufferutil": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.4.tgz", "integrity": "sha512-VNxjXUCrF3LvbLgwfkTb5LsFvk6pGIn7OBb9x+3o+iJ6mKw0JTUp4chBFc88hi1aspeZGeZG9jAIbpFYPQSLZw==", "hasInstallScript": true, + "optional": true, + "peer": true, "dependencies": { "node-gyp-build": "^4.2.0" }, @@ -3529,17 +3345,6 @@ "node": ">=6.14.2" } }, - "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -3591,53 +3396,6 @@ "node": ">= 10" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -3732,19 +3490,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "node_modules/chart.js": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.5.1.tgz", - "integrity": "sha512-m5kzt72I1WQ9LILwQC4syla/LD/N413RYv2Dx2nnTkRS9iv/ey1xLTt0DnPc/eWV4zI+BgEgDYBIzbQhZHc/PQ==" - }, - "node_modules/chartjs-plugin-datalabels": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chartjs-plugin-datalabels/-/chartjs-plugin-datalabels-2.0.0.tgz", - "integrity": "sha512-WBsWihphzM0Y8fmQVm89+iy99mmgejmj5/jcsYqwxSioLRL/zqJ4Scv/eXq5ZqvG3TpojlGzZLeaOaSvDm7fwA==", - "peerDependencies": { - "chart.js": "^3.0.0" - } - }, "node_modules/chokidar": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", @@ -3912,14 +3657,6 @@ "node": ">=0.10.0" } }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dependencies": { - "mimic-response": "^1.0.0" - } - }, "node_modules/cmd-shim": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", @@ -4021,11 +3758,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", @@ -4078,14 +3810,6 @@ "proto-list": "~1.2.1" } }, - "node_modules/console-clear": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", - "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -4427,17 +4151,6 @@ "node": ">=4" } }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -4525,6 +4238,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -4537,11 +4251,6 @@ "clone": "^1.0.2" } }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4706,11 +4415,6 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -4721,20 +4425,6 @@ "safer-buffer": "^2.1.0" } }, - "node_modules/ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", - "dependencies": { - "jake": "^10.6.1" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/electron-to-chromium": { "version": "1.3.857", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.857.tgz", @@ -5207,11 +4897,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -5455,14 +5140,6 @@ "node": ">=4" } }, - "node_modules/filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", - "dependencies": { - "minimatch": "^3.0.4" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -5483,34 +5160,6 @@ "node": ">=0.10.0" } }, - "node_modules/find-babel-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", - "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", - "dependencies": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-babel-config/node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/find-babel-config/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -5543,11 +5192,6 @@ "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true }, - "node_modules/fontfaceobserver": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz", - "integrity": "sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng==" - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -5623,7 +5267,8 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -6016,38 +5661,6 @@ "node": ">= 4" } }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", @@ -6119,6 +5732,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -6538,6 +6152,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -6609,11 +6224,6 @@ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=" }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" - }, "node_modules/is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", @@ -6703,14 +6313,6 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -6957,124 +6559,43 @@ "node": ">=8" } }, - "node_modules/jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "node_modules/jest": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", + "integrity": "sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==", + "dev": true, "dependencies": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "@jest/core": "^27.2.4", + "import-local": "^3.0.2", + "jest-cli": "^27.2.4" }, "bin": { - "jake": "bin/cli.js" + "jest": "bin/jest.js" }, "engines": { - "node": "*" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/jest-changed-files": { + "version": "27.2.4", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.4.tgz", + "integrity": "sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==", + "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@jest/types": "^27.2.4", + "execa": "^5.0.0", + "throat": "^6.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jake/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/jake/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/jake/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/jake/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", - "integrity": "sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==", - "dev": true, - "dependencies": { - "@jest/core": "^27.2.4", - "import-local": "^3.0.2", - "jest-cli": "^27.2.4" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.4.tgz", - "integrity": "sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.4", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-circus": { @@ -8008,7 +7529,8 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", @@ -8099,11 +7621,6 @@ "node": ">=4" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -8144,6 +7661,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, "dependencies": { "minimist": "^1.2.5" }, @@ -8205,14 +7723,6 @@ "verror": "1.10.0" } }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dependencies": { - "json-buffer": "3.0.0" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -8226,6 +7736,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, "engines": { "node": ">=6" } @@ -8437,28 +7948,6 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "node_modules/livereload": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", - "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", - "dependencies": { - "chokidar": "^3.5.0", - "livereload-js": "^3.3.1", - "opts": ">= 1.2.0", - "ws": "^7.4.3" - }, - "bin": { - "livereload": "bin/livereload.js" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/livereload-js": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz", - "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==" - }, "node_modules/load-json-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", @@ -8483,14 +7972,6 @@ "node": ">=8" } }, - "node_modules/local-access": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", - "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==", - "engines": { - "node": ">=6" - } - }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -8573,14 +8054,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -8592,14 +8065,6 @@ "node": ">=10" } }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, "node_modules/make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", @@ -8653,22 +8118,6 @@ "tmpl": "1.0.x" } }, - "node_modules/map-limit": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", - "integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=", - "dependencies": { - "once": "~1.3.0" - } - }, - "node_modules/map-limit/node_modules/once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -8803,7 +8252,8 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", @@ -8825,17 +8275,6 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/mime-db": { "version": "1.50.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", @@ -8865,14 +8304,6 @@ "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -8896,7 +8327,8 @@ "node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "node_modules/minimist-options": { "version": "4.1.0", @@ -9038,14 +8470,6 @@ "node": ">=0.10.0" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "engines": { - "node": ">=4" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -9112,25 +8536,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/new-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/new-array/-/new-array-1.0.0.tgz", - "integrity": "sha1-XbxjnZYerH8an7wacUbsEvKST78=" - }, - "node_modules/nice-color-palettes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/nice-color-palettes/-/nice-color-palettes-3.0.0.tgz", - "integrity": "sha512-lL4AjabAAFi313tjrtmgm/bxCRzp4l3vCshojfV/ij3IPdtnRqv6Chcw+SqJUhbe7g3o3BecaqCJYUNLswGBhQ==", - "dependencies": { - "got": "^9.2.2", - "map-limit": "0.0.1", - "minimist": "^1.2.0", - "new-array": "^1.0.0" - }, - "bin": { - "nice-color-palettes": "bin/index.js" - } - }, "node_modules/node-fetch": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", @@ -9190,6 +8595,8 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "optional": true, + "peer": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -9563,6 +8970,7 @@ "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9650,11 +9058,6 @@ "node": ">= 0.8.0" } }, - "node_modules/opts": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", - "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==" - }, "node_modules/ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -9705,14 +9108,6 @@ "os-tmpdir": "^1.0.0" } }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "engines": { - "node": ">=6" - } - }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -9726,6 +9121,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -9824,6 +9220,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "engines": { "node": ">=6" } @@ -10023,7 +9420,8 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", @@ -10106,59 +9504,6 @@ "node": ">=8" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10168,14 +9513,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", @@ -10299,15 +9636,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -10388,14 +9716,6 @@ "node": ">=8" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -10823,20 +10143,11 @@ "node": ">=0.10.0" } }, - "node_modules/require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=" - }, - "node_modules/reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" - }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -10875,14 +10186,6 @@ "node": ">=4" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -10900,147 +10203,32 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", - "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-css-only": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-css-only/-/rollup-plugin-css-only-3.1.0.tgz", - "integrity": "sha512-TYMOE5uoD76vpj+RTkQLzC9cQtbnJNktHPB507FzRWBVaofg7KhIqq1kGbcVOadARSozWF883Ho9KpSPKH8gqA==", - "dependencies": { - "@rollup/pluginutils": "4" - }, - "engines": { - "node": ">=10.12.0" - }, - "peerDependencies": { - "rollup": "1 || 2" - } - }, - "node_modules/rollup-plugin-css-only/node_modules/@rollup/pluginutils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", - "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/rollup-plugin-livereload": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.5.tgz", - "integrity": "sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==", - "dependencies": { - "livereload": "^0.9.1" - }, - "engines": { - "node": ">=8.3" - } - }, - "node_modules/rollup-plugin-polyfill-node": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.7.0.tgz", - "integrity": "sha512-iJLZDfvxcQh3SpC0OiYlZG9ik26aRM29hiC2sARbAPXYunB8rzW8GtVaWuJgiCtX1hNAo/OaYvVXfPp15fMs7g==", - "dependencies": { - "@rollup/plugin-inject": "^4.0.0" - } - }, - "node_modules/rollup-plugin-svelte": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz", - "integrity": "sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==", - "dependencies": { - "require-relative": "^0.8.7", - "rollup-pluginutils": "^2.8.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "rollup": ">=2.0.0", - "svelte": ">=3.5.0" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "engines": { - "node": ">= 10.13.0" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dependencies": { - "estree-walker": "^0.6.1" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -11084,17 +10272,6 @@ "npm": ">=2.0.0" } }, - "node_modules/sade": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", - "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -11130,14 +10307,6 @@ "seek-table": "bin/seek-bzip-table" } }, - "node_modules/semiver": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", - "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", - "engines": { - "node": ">=6" - } - }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -11152,14 +10321,6 @@ "node": ">=10" } }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -11227,48 +10388,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" }, - "node_modules/sirv": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.17.tgz", - "integrity": "sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw==", - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mime": "^2.3.1", - "totalist": "^1.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sirv-cli": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.14.tgz", - "integrity": "sha512-yyUTNr984ANKDloqepkYbBSqvx3buwYg2sQKPWjSU+IBia5loaoka2If8N9CMwt8AfP179cdEl7kYJ//iWJHjQ==", - "dependencies": { - "console-clear": "^1.1.0", - "get-port": "^3.2.0", - "kleur": "^3.0.0", - "local-access": "^1.0.1", - "sade": "^1.6.0", - "semiver": "^1.0.0", - "sirv": "^1.0.13", - "tinydate": "^1.0.0" - }, - "bin": { - "sirv": "bin.js" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sirv-cli/node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "engines": { - "node": ">=4" - } - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -11380,6 +10499,7 @@ "version": "0.5.20", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -11389,15 +10509,11 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -11713,14 +10829,6 @@ "node": ">=8" } }, - "node_modules/svelte": { - "version": "3.43.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.43.1.tgz", - "integrity": "sha512-nvPIaKx4HLzYlSdquISZpgG1Kqr2VAWQjZOt3Iwm3UhbqmA0LnSx4k1YpRMEhjQYW3ZCqQoK8Egto9tv4YewMA==", - "engines": { - "node": ">= 8" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -11907,22 +11015,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -11972,14 +11064,6 @@ "readable-stream": "3" } }, - "node_modules/tinydate": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", - "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==", - "engines": { - "node": ">=4" - } - }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -12011,14 +11095,6 @@ "node": ">=4" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -12030,14 +11106,6 @@ "node": ">=8.0" } }, - "node_modules/totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", - "engines": { - "node": ">=6" - } - }, "node_modules/tough-cookie": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", @@ -12285,17 +11353,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/utfz-lib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/utfz-lib/-/utfz-lib-0.2.0.tgz", @@ -12377,44 +11434,6 @@ "extsprintf": "^1.2.0" } }, - "node_modules/vscode-jsonrpc": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", - "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", - "engines": { - "node": ">=8.0.0 || >=10.0.0" - } - }, - "node_modules/vscode-languageserver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", - "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", - "dependencies": { - "vscode-languageserver-protocol": "3.16.0" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", - "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", - "dependencies": { - "vscode-jsonrpc": "6.0.0", - "vscode-languageserver-types": "3.16.0" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.2.tgz", - "integrity": "sha512-T7uPC18+f8mYE4lbVZwb3OSmvwTZm3cuFhrdx9Bn2l11lmp3SvSuSVjy2JtvrghzjAo4G6Trqny2m9XGnFnWVA==" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", - "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" - }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -12880,6 +11899,7 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, "requires": { "@babel/highlight": "^7.10.4" } @@ -13086,7 +12106,8 @@ "@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true }, "@babel/helper-validator-option": { "version": "7.14.5", @@ -13109,6 +12130,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", @@ -13119,6 +12141,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -13127,6 +12150,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -13137,6 +12161,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -13144,22 +12169,26 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -14814,93 +13843,6 @@ "@octokit/openapi-types": "^10.6.4" } }, - "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" - }, - "@rollup/plugin-alias": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.5.tgz", - "integrity": "sha512-yzUaSvCC/LJPbl9rnzX3HN7vy0tq7EzHoEiQl1ofh4n5r2Rd5bj/+zcJgaGA76xbw95/JjWQyvHg9rOJp2y0oQ==", - "requires": { - "slash": "^3.0.0" - } - }, - "@rollup/plugin-commonjs": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.2.tgz", - "integrity": "sha512-gBjarfqlC7qs0AutpRW/hrFNm+cd2/QKxhwyFa+srbg1oX7rDsEU3l+W7LAUhsAp9mPJMAkXDhLbQaVwEaE8bA==", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - } - }, - "@rollup/plugin-inject": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.2.tgz", - "integrity": "sha512-TSLMA8waJ7Dmgmoc8JfPnwUwVZgLjjIAM6MqeIFqPO2ODK36JqE0Cf2F54UTgCUuW8da93Mvoj75a6KAVWgylw==", - "requires": { - "@rollup/pluginutils": "^3.0.4", - "estree-walker": "^1.0.1", - "magic-string": "^0.25.5" - }, - "dependencies": { - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - } - } - }, - "@rollup/plugin-json": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", - "requires": { - "@rollup/pluginutils": "^3.0.8" - } - }, - "@rollup/plugin-node-resolve": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz", - "integrity": "sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ==", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - } - } - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, "@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -14919,24 +13861,6 @@ "@sinonjs/commons": "^1.7.0" } }, - "@surma/rollup-plugin-off-main-thread": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.2.tgz", - "integrity": "sha512-dOD6nGZ79RmWKDRQuC7SOGXMvDkkLwBogu+epfVFMKiy2kOUtLZkb8wV/ettuMt37YJAJKYCKUmxSbZL2LkUQg==", - "requires": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0" - } - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -14983,11 +13907,6 @@ "@babel/types": "^7.3.0" } }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -15052,7 +13971,8 @@ "@types/node": { "version": "16.10.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", - "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==", + "dev": true }, "@types/normalize-package-data": { "version": "2.4.1", @@ -15072,14 +13992,6 @@ "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", "dev": true }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "requires": { - "@types/node": "*" - } - }, "@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -15398,11 +14310,6 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -15468,18 +14375,6 @@ "@types/babel__traverse": "^7.0.6" } }, - "babel-plugin-module-resolver": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", - "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", - "requires": { - "find-babel-config": "^1.2.0", - "glob": "^7.1.6", - "pkg-up": "^3.1.0", - "reselect": "^4.0.0", - "resolve": "^1.13.1" - } - }, "babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -15555,11 +14450,6 @@ "readable-stream": "^3.4.0" } }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -15641,21 +14531,19 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "bufferutil": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.4.tgz", "integrity": "sha512-VNxjXUCrF3LvbLgwfkTb5LsFvk6pGIn7OBb9x+3o+iJ6mKw0JTUp4chBFc88hi1aspeZGeZG9jAIbpFYPQSLZw==", + "optional": true, + "peer": true, "requires": { "node-gyp-build": "^4.2.0" } }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==" - }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -15698,40 +14586,6 @@ "unique-filename": "^1.1.1" } }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - } - } - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -15798,17 +14652,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "chart.js": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.5.1.tgz", - "integrity": "sha512-m5kzt72I1WQ9LILwQC4syla/LD/N413RYv2Dx2nnTkRS9iv/ey1xLTt0DnPc/eWV4zI+BgEgDYBIzbQhZHc/PQ==" - }, - "chartjs-plugin-datalabels": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chartjs-plugin-datalabels/-/chartjs-plugin-datalabels-2.0.0.tgz", - "integrity": "sha512-WBsWihphzM0Y8fmQVm89+iy99mmgejmj5/jcsYqwxSioLRL/zqJ4Scv/eXq5ZqvG3TpojlGzZLeaOaSvDm7fwA==", - "requires": {} - }, "chokidar": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", @@ -15946,14 +14789,6 @@ } } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, "cmd-shim": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", @@ -16035,11 +14870,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, "compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", @@ -16088,11 +14918,6 @@ "proto-list": "~1.2.1" } }, - "console-clear": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", - "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" - }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -16360,14 +15185,6 @@ "strip-dirs": "^2.0.0" } }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -16440,7 +15257,8 @@ "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true }, "defaults": { "version": "1.0.3", @@ -16450,11 +15268,6 @@ "clone": "^1.0.2" } }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -16579,11 +15392,6 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -16594,14 +15402,6 @@ "safer-buffer": "^2.1.0" } }, - "ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", - "requires": { - "jake": "^10.6.1" - } - }, "electron-to-chromium": { "version": "1.3.857", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.857.tgz", @@ -16953,11 +15753,6 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -17149,14 +15944,6 @@ "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" }, - "filelist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", - "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", - "requires": { - "minimatch": "^3.0.4" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -17171,27 +15958,6 @@ "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", "dev": true }, - "find-babel-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", - "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", - "requires": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -17218,11 +15984,6 @@ "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true }, - "fontfaceobserver": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.1.0.tgz", - "integrity": "sha512-ReOsO2F66jUa0jmv2nlM/s1MiutJx/srhAe2+TE8dJCMi02ZZOcCTxTCQFr3Yet+uODUtnr4Mewg+tNQ+4V1Ng==" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -17279,7 +16040,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "functional-red-black-tree": { "version": "1.0.1", @@ -17586,35 +16348,7 @@ "ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - } - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" } } }, @@ -17670,6 +16404,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -17980,6 +16715,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "dev": true, "requires": { "has": "^1.0.3" } @@ -18027,11 +16763,6 @@ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=" }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" - }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", @@ -18091,14 +16822,6 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "requires": { - "@types/estree": "*" - } - }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -18282,68 +17005,6 @@ "istanbul-lib-report": "^3.0.0" } }, - "jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", - "requires": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "jest": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", @@ -19097,7 +17758,8 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "js-yaml": { "version": "3.14.1", @@ -19164,11 +17826,6 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -19209,6 +17866,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -19250,14 +17908,6 @@ "verror": "1.10.0" } }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -19267,7 +17917,8 @@ "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true }, "lerna": { "version": "4.0.0", @@ -19444,22 +18095,6 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "livereload": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", - "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", - "requires": { - "chokidar": "^3.5.0", - "livereload-js": "^3.3.1", - "opts": ">= 1.2.0", - "ws": "^7.4.3" - } - }, - "livereload-js": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz", - "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==" - }, "load-json-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", @@ -19480,11 +18115,6 @@ } } }, - "local-access": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", - "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==" - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -19558,11 +18188,6 @@ "is-unicode-supported": "^0.1.0" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -19571,14 +18196,6 @@ "yallist": "^4.0.0" } }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", @@ -19625,24 +18242,6 @@ "tmpl": "1.0.x" } }, - "map-limit": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", - "integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=", - "requires": { - "once": "~1.3.0" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "requires": { - "wrappy": "1" - } - } - } - }, "map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -19747,7 +18346,8 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { "version": "1.4.1", @@ -19763,11 +18363,6 @@ "picomatch": "^2.2.3" } }, - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" - }, "mime-db": { "version": "1.50.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", @@ -19788,11 +18383,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -19810,7 +18400,8 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minimist-options": { "version": "4.1.0", @@ -19914,11 +18505,6 @@ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -19975,22 +18561,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "new-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/new-array/-/new-array-1.0.0.tgz", - "integrity": "sha1-XbxjnZYerH8an7wacUbsEvKST78=" - }, - "nice-color-palettes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/nice-color-palettes/-/nice-color-palettes-3.0.0.tgz", - "integrity": "sha512-lL4AjabAAFi313tjrtmgm/bxCRzp4l3vCshojfV/ij3IPdtnRqv6Chcw+SqJUhbe7g3o3BecaqCJYUNLswGBhQ==", - "requires": { - "got": "^9.2.2", - "map-limit": "0.0.1", - "minimist": "^1.2.0", - "new-array": "^1.0.0" - } - }, "node-fetch": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", @@ -20138,7 +18708,9 @@ "node-gyp-build": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "optional": true, + "peer": true }, "node-int64": { "version": "0.4.0", @@ -20337,7 +18909,8 @@ "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true }, "object-keys": { "version": "1.1.1", @@ -20398,11 +18971,6 @@ "word-wrap": "^1.2.3" } }, - "opts": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", - "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==" - }, "ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -20441,11 +19009,6 @@ "os-tmpdir": "^1.0.0" } }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -20456,6 +19019,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -20517,7 +19081,8 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "p-waterfall": { "version": "2.1.1", @@ -20677,7 +19242,8 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "path-type": { "version": "4.0.0", @@ -20736,57 +19302,12 @@ "find-up": "^4.0.0" } }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, "prettier": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", @@ -20891,15 +19412,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -20944,14 +19456,6 @@ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -21299,20 +19803,11 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, - "require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=" - }, - "reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" - }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -21341,14 +19836,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -21376,96 +19863,6 @@ "glob": "^7.1.3" } }, - "rollup": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", - "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", - "requires": { - "fsevents": "~2.3.2" - } - }, - "rollup-plugin-css-only": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-css-only/-/rollup-plugin-css-only-3.1.0.tgz", - "integrity": "sha512-TYMOE5uoD76vpj+RTkQLzC9cQtbnJNktHPB507FzRWBVaofg7KhIqq1kGbcVOadARSozWF883Ho9KpSPKH8gqA==", - "requires": { - "@rollup/pluginutils": "4" - }, - "dependencies": { - "@rollup/pluginutils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz", - "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==", - "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - } - } - } - }, - "rollup-plugin-livereload": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.5.tgz", - "integrity": "sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==", - "requires": { - "livereload": "^0.9.1" - } - }, - "rollup-plugin-polyfill-node": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.7.0.tgz", - "integrity": "sha512-iJLZDfvxcQh3SpC0OiYlZG9ik26aRM29hiC2sARbAPXYunB8rzW8GtVaWuJgiCtX1hNAo/OaYvVXfPp15fMs7g==", - "requires": { - "@rollup/plugin-inject": "^4.0.0" - } - }, - "rollup-plugin-svelte": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz", - "integrity": "sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==", - "requires": { - "require-relative": "^0.8.7", - "rollup-pluginutils": "^2.8.2" - } - }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "dependencies": { - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - } - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "requires": { - "estree-walker": "^0.6.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" - } - } - }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -21489,14 +19886,6 @@ "tslib": "^1.9.0" } }, - "sade": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", - "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", - "requires": { - "mri": "^1.1.0" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -21525,11 +19914,6 @@ "commander": "^2.8.1" } }, - "semiver": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", - "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==" - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -21538,14 +19922,6 @@ "lru-cache": "^6.0.0" } }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "requires": { - "randombytes": "^2.1.0" - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -21601,38 +19977,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" }, - "sirv": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.17.tgz", - "integrity": "sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw==", - "requires": { - "@polka/url": "^1.0.0-next.20", - "mime": "^2.3.1", - "totalist": "^1.0.0" - } - }, - "sirv-cli": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.14.tgz", - "integrity": "sha512-yyUTNr984ANKDloqepkYbBSqvx3buwYg2sQKPWjSU+IBia5loaoka2If8N9CMwt8AfP179cdEl7kYJ//iWJHjQ==", - "requires": { - "console-clear": "^1.1.0", - "get-port": "^3.2.0", - "kleur": "^3.0.0", - "local-access": "^1.0.1", - "sade": "^1.6.0", - "semiver": "^1.0.0", - "sirv": "^1.0.13", - "tinydate": "^1.0.0" - }, - "dependencies": { - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" - } - } - }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -21711,6 +20055,7 @@ "version": "0.5.20", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -21719,15 +20064,11 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -21965,11 +20306,6 @@ "supports-color": "^7.0.0" } }, - "svelte": { - "version": "3.43.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.43.1.tgz", - "integrity": "sha512-nvPIaKx4HLzYlSdquISZpgG1Kqr2VAWQjZOt3Iwm3UhbqmA0LnSx4k1YpRMEhjQYW3ZCqQoK8Egto9tv4YewMA==" - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -22122,16 +20458,6 @@ "supports-hyperlinks": "^2.0.0" } }, - "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - } - }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -22175,11 +20501,6 @@ "readable-stream": "3" } }, - "tinydate": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", - "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==" - }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -22205,11 +20526,6 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -22218,11 +20534,6 @@ "is-number": "^7.0.0" } }, - "totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" - }, "tough-cookie": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", @@ -22413,14 +20724,6 @@ "punycode": "^2.1.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, "utfz-lib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/utfz-lib/-/utfz-lib-0.2.0.tgz", @@ -22492,38 +20795,6 @@ "extsprintf": "^1.2.0" } }, - "vscode-jsonrpc": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", - "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==" - }, - "vscode-languageserver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", - "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", - "requires": { - "vscode-languageserver-protocol": "3.16.0" - } - }, - "vscode-languageserver-protocol": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", - "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", - "requires": { - "vscode-jsonrpc": "6.0.0", - "vscode-languageserver-types": "3.16.0" - } - }, - "vscode-languageserver-textdocument": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.2.tgz", - "integrity": "sha512-T7uPC18+f8mYE4lbVZwb3OSmvwTZm3cuFhrdx9Bn2l11lmp3SvSuSVjy2JtvrghzjAo4G6Trqny2m9XGnFnWVA==" - }, - "vscode-languageserver-types": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", - "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" - }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", diff --git a/package.json b/package.json index 5c2a7247..2f101d24 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "@iarna/toml": "^2.2.5", "bean-parser": "2.1.0", "chalk": "4.1.2", + "chokidar": "^3.5.2", "clio-lang-cli": "0.12.0", "decompress": "^4.2.1", "del": "6.0.0", diff --git a/packages/cli/commands/build.js b/packages/cli/commands/build.js index a5ce0b96..6dc0b65a 100644 --- a/packages/cli/commands/build.js +++ b/packages/cli/commands/build.js @@ -1,3 +1,5 @@ +import chokidar from 'chokidar' + import { MODULES_PATH, fetchNpmDependencies, @@ -8,7 +10,7 @@ import { getParsedNpmDevDependencies, getSourceFromConfig, makeStartScript, -} from "clio-manifest"; +} from 'clio-manifest' import { constants, existsSync, @@ -20,59 +22,59 @@ import { rmSync, symlinkSync, writeFileSync, -} from "fs"; -import { dirname, isAbsolute, join, relative, resolve } from "path"; -import { error, info, warn } from "../lib/colors.js"; -import { getPlatform, npmCommand } from "../lib/platforms.js"; +} from 'fs' +import { dirname, isAbsolute, join, relative, resolve } from 'path' +import { error, info, warn } from '../lib/colors.js' +import { getPlatform, npmCommand } from '../lib/platforms.js' -import { Progress } from "../lib/progress.js"; -import { compileFile } from "clio-core"; +import { Progress } from '../lib/progress.js' +import { compileFile } from 'clio-core' -export const flatten = (arr) => arr.reduce((acc, val) => acc.concat(val), []); +export const flatten = (arr) => arr.reduce((acc, val) => acc.concat(val), []) -export const isDir = (dir) => lstatSync(dir).isDirectory(); -export const readDir = (dir) => readdirSync(dir); +export const isDir = (dir) => lstatSync(dir).isDirectory() +export const readDir = (dir) => readdirSync(dir) export const walkDir = (dir) => readDir(dir) - .filter((name) => name !== ".clio") - .map((f) => walk(join(dir, f))); -export const walk = (dir) => (isDir(dir) ? flatten(walkDir(dir)) : [dir]); + .filter((name) => name !== '.clio') + .map((f) => walk(join(dir, f))) +export const walk = (dir) => (isDir(dir) ? flatten(walkDir(dir)) : [dir]) -export const isClioFile = (file) => file.endsWith(".clio"); -export const isClioConfig = (file) => file.match(/(^|[.\\])clio\.toml$/); -export const isNotClioFile = (file) => !isClioFile(file); -export const getClioFiles = (dir) => walk(dir).filter(isClioFile); -export const getNonClioFiles = (dir) => walk(dir).filter(isNotClioFile); +export const isClioFile = (file) => file.endsWith('.clio') +export const isClioConfig = (file) => file.match(/(^|[.\\])clio\.toml$/) +export const isNotClioFile = (file) => !isClioFile(file) +export const getClioFiles = (dir) => walk(dir).filter(isClioFile) +export const getNonClioFiles = (dir) => walk(dir).filter(isNotClioFile) export const copyDir = async (src, dest) => { - const entries = await promises.readdir(src, { withFileTypes: true }); - mkdir(dest); + const entries = await promises.readdir(src, { withFileTypes: true }) + mkdir(dest) for (let entry of entries) { - const srcPath = join(src, entry.name); - const destPath = join(dest, entry.name); + const srcPath = join(src, entry.name) + const destPath = join(dest, entry.name) if (entry.isSymbolicLink()) { - const target = readlinkSync(srcPath); + const target = readlinkSync(srcPath) const absTarget = isAbsolute(target) ? target - : resolve(dirname(srcPath), target); - symlinkSync(absTarget, destPath); + : resolve(dirname(srcPath), target) + symlinkSync(absTarget, destPath) } else if (entry.isDirectory()) { - await copyDir(srcPath, destPath); + await copyDir(srcPath, destPath) } else { - await promises.copyFile(srcPath, destPath, constants.COPYFILE_FICLONE); + await promises.copyFile(srcPath, destPath, constants.COPYFILE_FICLONE) } } -}; +} export const rmdir = (directory) => { - if (existsSync(directory)) rmSync(directory, { recursive: true }); -}; + if (existsSync(directory)) rmSync(directory, { recursive: true }) +} export const mkdir = (directory) => { - if (!existsSync(directory)) mkdirSync(directory, { recursive: true }); -}; + if (!existsSync(directory)) mkdirSync(directory, { recursive: true }) +} -export const asyncCompile = async (...args) => compileFile(...args); +export const asyncCompile = async (...args) => compileFile(...args) /** * @@ -80,156 +82,174 @@ export const asyncCompile = async (...args) => compileFile(...args); * @param {Object} options Options to build */ export const build = async (configPath, options = {}) => { - const { skipBundle, skipNpmInstall, silent, clean } = options; + const { skipBundle, skipNpmInstall, silent, clean, watch } = options - if (!silent) info(`Compiling from "${configPath}"`); + if (!silent) info(`Compiling from "${configPath}"`) - const config = getPackageConfig(configPath); - const target = getBuildTarget(configPath, config); - const destination = getDestinationFromConfig(configPath, config); - const sourceDir = getSourceFromConfig(configPath, config); + const config = getPackageConfig(configPath) + const target = getBuildTarget(configPath, config) + const destination = getDestinationFromConfig(configPath, config) + const sourceDir = getSourceFromConfig(configPath, config) - const cacheDir = join(destination, ".clio", "cache"); - const modulesDir = join(sourceDir, MODULES_PATH); - const modulesDestDir = join(destination, MODULES_PATH); + const cacheDir = join(destination, '.clio', 'cache') + const modulesDir = join(sourceDir, MODULES_PATH) + const modulesDestDir = join(destination, MODULES_PATH) - if (!silent) info(`Creating build for target "${target}"`); + if (!silent) info(`Creating build for target "${target}"`) if (clean && existsSync(destination)) { - if (!silent) info(`Wiping the build directory`); - rmSync(destination, { recursive: true }); + if (!silent) info(`Wiping the build directory`) + rmSync(destination, { recursive: true }) } - const progress = new Progress(silent); - progress.start("Compiling from source..."); - - const result = await asyncCompile( - "main.clio", - config, - configPath, - modulesDir, - modulesDestDir, - dirname(configPath), - "", - "", - cacheDir, - { configs: {}, npmDeps: {}, npmDevDeps: {} } - ).catch((compileError) => { - progress.fail(); - console.error(compileError.message); - process.exit(1); - }); - - progress.succeed(); - - try { - // Copy resources - progress.start("Copying over the resource files..."); - const nonClioFiles = getNonClioFiles(sourceDir); - for (const file of nonClioFiles) { - const relativeFile = relative(sourceDir, file); - const destFile = join(destination, relativeFile); - const destDir = dirname(destFile); - mkdir(destDir); - await promises.copyFile(file, destFile); - } - progress.succeed(); - - // Add index.js file - progress.start("Adding Clio start script..."); - mkdir(join(destination, ".clio")); - makeStartScript(config, target, destination); - progress.succeed(); - - const { npmDeps } = result; - - const depsNpmDependencies = Object.values(npmDeps).reduce( - (lhs, rhs) => ({ ...lhs, ...rhs }), - {} - ); + const progress = new Progress(silent) + progress.start('Compiling from source...') + + async function compile() { + const result = await asyncCompile( + 'main.clio', + config, + configPath, + modulesDir, + modulesDestDir, + dirname(configPath), + '', + '', + cacheDir, + { configs: {}, npmDeps: {}, npmDevDeps: {} }, + ).catch((compileError) => { + progress.fail() + console.error(compileError.message) + process.exit(1) + }) + + progress.succeed() - // Init npm modules try { - const packageJsonPath = join(destination, "package.json"); - const dependencies = getParsedNpmDependencies(configPath); - - const devDependencies = getParsedNpmDevDependencies(configPath); - dependencies["clio-run"] = "latest"; - const packageInfo = {}; - if (config.keywords) packageInfo.keywords = config.keywords; - if (config.authors) packageInfo.authors = config.authors; - const packageJsonContent = { - ...packageInfo, - main: "./main.clio.js", - type: "module", - dependencies: { ...depsNpmDependencies, ...dependencies }, - devDependencies, - ...config.npmOverride, - }; - writeFileSync( - packageJsonPath, - JSON.stringify(packageJsonContent, null, 2), - { flag: "w" } - ); + // Copy resources + progress.start('Copying over the resource files...') + const nonClioFiles = getNonClioFiles(sourceDir) + for (const file of nonClioFiles) { + const relativeFile = relative(sourceDir, file) + const destFile = join(destination, relativeFile) + const destDir = dirname(destFile) + mkdir(destDir) + await promises.copyFile(file, destFile) + } + progress.succeed() + + // Add index.js file + progress.start('Adding Clio start script...') + mkdir(join(destination, '.clio')) + makeStartScript(config, target, destination) + progress.succeed() + + const { npmDeps } = result + + const depsNpmDependencies = Object.values(npmDeps).reduce( + (lhs, rhs) => ({ ...lhs, ...rhs }), + {}, + ) + + // Init npm modules + try { + const packageJsonPath = join(destination, 'package.json') + const dependencies = getParsedNpmDependencies(configPath) + + const devDependencies = getParsedNpmDevDependencies(configPath) + dependencies['clio-run'] = 'latest' + const packageInfo = {} + if (config.keywords) packageInfo.keywords = config.keywords + if (config.authors) packageInfo.authors = config.authors + const packageJsonContent = { + ...packageInfo, + main: './main.clio.js', + type: 'module', + dependencies: { ...depsNpmDependencies, ...dependencies }, + devDependencies, + ...config.npmOverride, + } + writeFileSync( + packageJsonPath, + JSON.stringify(packageJsonContent, null, 2), + { flag: 'w' }, + ) + } catch (e) { + progress.fail(`Error: ${e.message}`) + error(e, 'Dependency Install') + } } catch (e) { - progress.fail(`Error: ${e.message}`); - error(e, "Dependency Install"); + progress.fail(`Error: ${e}`) + error(e, 'Compilation') } - } catch (e) { - progress.fail(`Error: ${e}`); - error(e, "Compilation"); } + if (watch) { + const cfgSrc = getSourceFromConfig(configPath, config) + const sourceDir = join(dirname(configPath), cfgSrc) + + chokidar.watch(join(sourceDir, '*.clio')).on('all', async () => { + await compile() + + try { + const platform = getPlatform(target) + await platform.build(destination, skipBundle) + } catch (e) { + error(e, 'Bundling') + } + }) + } else await compile() + if (!skipNpmInstall) { - progress.start("Installing npm dependencies (this may take a while)..."); - await fetchNpmDependencies(destination, silent); - progress.succeed(); + progress.start('Installing npm dependencies (this may take a while)...') + await fetchNpmDependencies(destination, silent) + progress.succeed() } if (process.env.CLIOPATH) { // Link local internals - warn("Using local internals. This should only be used for debug purposes."); + warn('Using local internals. This should only be used for debug purposes.') warn( - "If you encounter any unwanted behavior, unset the CLIOPATH environment variable" - ); - progress.succeed(); - progress.start("Linking dependencies"); + 'If you encounter any unwanted behavior, unset the CLIOPATH environment variable', + ) + progress.succeed() + progress.start('Linking dependencies') // Install third party dependencies const install = (...names) => - names.forEach((name) => installExternal(name, destination)); + names.forEach((name) => installExternal(name, destination)) - install("sializer", "buffer", "bufferutil", "ws"); + install('sializer', 'buffer', 'bufferutil', 'ws') // Link local dependencies const linkToDest = (name, internalName, unlinks) => - link(name, internalName, destination, unlinks); + link(name, internalName, destination, unlinks) - await linkToDest("clio-run", "run", ["clio-lang-internals", "clio-rpc"]); - await linkToDest("clio-rpc", "rpc", ["clio-lang-internals"]); - await linkToDest("clio-lang-internals", "internals"); + await linkToDest('clio-run', 'run', ['clio-lang-internals', 'clio-rpc']) + await linkToDest('clio-rpc', 'rpc', ['clio-lang-internals']) + await linkToDest('clio-lang-internals', 'internals') - progress.succeed(); + progress.succeed() } try { - const platform = getPlatform(target); - await platform.build(destination, skipBundle); + const platform = getPlatform(target) + await platform.build(destination, skipBundle) } catch (e) { - error(e, "Bundling"); + error(e, 'Bundling') } -}; +} /** * Link local internals package as a dependency * @param {string} destination Full path to destination directory */ export async function link(name, internalName, destination, unlinks = []) { - const modulePath = join(destination, "node_modules", name); - const internalPath = resolve(process.env.CLIOPATH, "packages", internalName); - rmdir(modulePath); - await copyDir(internalPath, modulePath); - unlinkNodeModules(modulePath, ...unlinks); + const modulePath = join(destination, 'node_modules', name) + const internalPath = resolve(process.env.CLIOPATH, 'packages', internalName) + rmdir(modulePath) + await copyDir(internalPath, modulePath) + unlinkNodeModules(modulePath, ...unlinks) } /** @@ -237,7 +257,7 @@ export async function link(name, internalName, destination, unlinks = []) { * @param {string} destination Full path to destination directory */ export function installExternal(name, destination) { - return npmCommand("install", destination, [name], { stdio: "ignore" }); + return npmCommand('install', destination, [name], { stdio: 'ignore' }) } /** @@ -246,48 +266,48 @@ export function installExternal(name, destination) { */ export function unlinkNodeModules(destination, ...names) { for (const name of names) { - rmSync(join(destination, "node_modules", name), { + rmSync(join(destination, 'node_modules', name), { recursive: true, - }); + }) } } -const command = "build [project]"; -const describe = "Build a Clio project"; +const command = 'build [project]' +const describe = 'Build a Clio project' export const handler = (argv) => { const options = { - skipBundle: argv["skip-bundle"], - skipNpmInstall: argv["skip-npm-install"], + skipBundle: argv['skip-bundle'], + skipNpmInstall: argv['skip-npm-install'], silent: argv.silent, - }; - const config = join(argv.project, "clio.toml"); - build(config, options); -}; + } + const config = join(argv.project, 'clio.toml') + build(config, options) +} const builder = { project: { - describe: "Project root directory, where your clio.toml file is.", - type: "string", - default: ".", + describe: 'Project root directory, where your clio.toml file is.', + type: 'string', + default: '.', }, - "skip-bundle": { - describe: "Does not produces a bundle for browsers.", - type: "boolean", + 'skip-bundle': { + describe: 'Does not produces a bundle for browsers.', + type: 'boolean', }, - "skip-npm-install": { - describe: "Skips npm install. Useful for tests.", - type: "boolean", + 'skip-npm-install': { + describe: 'Skips npm install. Useful for tests.', + type: 'boolean', }, silent: { - describe: "Mutes messages from the command.", - type: "boolean", + describe: 'Mutes messages from the command.', + type: 'boolean', }, clean: { - describe: "Wipe the build directory before build", - type: "boolean", + describe: 'Wipe the build directory before build', + type: 'boolean', }, -}; +} export default { build, @@ -300,4 +320,4 @@ export default { copyDir, isClioConfig, isDir, -}; +} diff --git a/packages/cli/commands/dev.js b/packages/cli/commands/dev.js new file mode 100644 index 00000000..db63d3dc --- /dev/null +++ b/packages/cli/commands/dev.js @@ -0,0 +1,64 @@ +import { + getBuildTarget, + getDestinationFromConfig, + getPackageConfig, +} from 'clio-manifest' + +import { build } from './build.js' +import { error } from '../lib/colors.js' +import { getPlatform } from '../lib/platforms.js' +import { join } from 'path' + +export const command = 'dev [project]' + +export const describe = 'Compile and watch Clio file' + +export const builder = { + project: { + describe: 'Project root directory, where your clio.toml file is.', + type: 'string', + default: '.', + }, + silent: { + describe: 'Mutes messages from the command.', + type: 'boolean', + }, + clean: { + describe: 'Wipe the build directory before build', + type: 'boolean', + }, +} + +export function handler(argv) { + dev(argv, argv._.slice(1)) +} + +export async function dev(argv, args, forkOptions = {}) { + try { + const configPath = join(argv.project, 'clio.toml') + + await build(configPath, { + skipBundle: true, + silent: argv.silent, + clean: argv.clean, + watch: true, + }) + + const config = getPackageConfig(configPath) + const target = getBuildTarget(configPath, config) + const destination = getDestinationFromConfig(configPath, config) + const platform = getPlatform(target) + + return await platform.dev(destination, args, forkOptions) + } catch (e) { + error(e) + } +} + +export default { + command, + describe, + builder, + handler, + dev, +} diff --git a/packages/cli/index.js b/packages/cli/index.js index de1321b1..b449b7ff 100755 --- a/packages/cli/index.js +++ b/packages/cli/index.js @@ -1,34 +1,36 @@ #!/usr/bin/env node -import build from "./commands/build.js"; -import chalk from "chalk"; -import deps from "./commands/deps.js"; -import docs from "./commands/docs.js"; -import { hideBin } from "yargs/helpers"; -import highlight from "./commands/highlight.js"; -import host from "./commands/host.js"; -import { isSupportedNodeVersion } from "clio-utils"; -import newc from "./commands/new.js"; -import run from "./commands/run.js"; -import yargs from "yargs"; +import build from './commands/build.js' +import chalk from 'chalk' +import deps from './commands/deps.js' +import docs from './commands/docs.js' +import { hideBin } from 'yargs/helpers' +import highlight from './commands/highlight.js' +import host from './commands/host.js' +import { isSupportedNodeVersion } from 'clio-utils' +import newc from './commands/new.js' +import run from './commands/run.js' +import dev from './commands/dev.js' +import yargs from 'yargs' -const { yellow } = chalk; +const { yellow } = chalk if (!isSupportedNodeVersion(process.versions.node)) { yellow( - "Warning: your Node version is outdated. This might cause problems. Please, upgrade Node to version 14.0 or higher." - ); + 'Warning: your Node version is outdated. This might cause problems. Please, upgrade Node to version 14.0 or higher.', + ) } yargs(hideBin(process.argv)) .command(newc) .command(build) .command(run) + .command(dev) .command(host) .command(deps) .command(docs) .command(highlight) .help() - .alias("h", "help") - .demandCommand(1, "must provide a valid command") - .completion().argv; + .alias('h', 'help') + .demandCommand(1, 'must provide a valid command') + .completion().argv diff --git a/packages/cli/lib/platforms.js b/packages/cli/lib/platforms.js index 60d7f7e6..6b35d1d3 100644 --- a/packages/cli/lib/platforms.js +++ b/packages/cli/lib/platforms.js @@ -1,38 +1,43 @@ -import { spawn, spawnSync } from "child_process"; +import { spawn, spawnSync } from 'child_process' export const npmCommand = (command, destination, args, forkOptions = {}) => { - const npm = process.platform == "win32" ? "npm.cmd" : "npm"; + const npm = process.platform == 'win32' ? 'npm.cmd' : 'npm' return spawnSync(npm, [command, ...args], { cwd: destination, - stdio: "inherit", + stdio: 'inherit', ...forkOptions, - }); -}; + }) +} const npmRun = (command, destination, args, forkOptions = {}) => { - const argv = args && args.length ? ["--", ...args] : []; - const npm = process.platform == "win32" ? "npm.cmd" : "npm"; - return spawn(npm, ["run", command, ...argv], { + const argv = args && args.length ? ['--', ...args] : [] + const npm = process.platform == 'win32' ? 'npm.cmd' : 'npm' + return spawn(npm, ['run', command, ...argv], { cwd: destination, - stdio: "inherit", + stdio: 'inherit', ...forkOptions, - }); -}; + }) +} const js = { - async build() {}, + async build(destination, args, forkOptions) { + return npmRun('build', destination, args, forkOptions) + }, async run(destination, args, forkOptions) { - return npmRun("start", destination, args, forkOptions); + return npmRun('start', destination, args, forkOptions) + }, + async dev(destination, args, forkOptions) { + return npmRun('start', destination, args, forkOptions) }, async host(destination, args) { - return npmRun("host", destination, args); + return npmRun('host', destination, args) }, -}; +} -const platforms = { js }; +const platforms = { js } export function getPlatform(name) { - const platform = platforms[name]; - if (!platform) throw new Error(`Platform "${name}" is not supported`); - return platform; + const platform = platforms[name] + if (!platform) throw new Error(`Platform "${name}" is not supported`) + return platform } diff --git a/packages/core/index.js b/packages/core/index.js index d77ee38e..f52d7485 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -1,38 +1,38 @@ -import { dirname, join, relative } from "path"; +import { dirname, join, relative } from 'path' import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync, -} from "fs"; +} from 'fs' import { getDestinationFromConfig, getPackageConfig, getParsedNpmDependencies, getParsedNpmDevDependencies, getSourceFromConfig, -} from "clio-manifest"; +} from 'clio-manifest' -import { bean } from "bean-parser"; -import { get } from "./types.js"; -import lex from "./lexer.js"; -import { parsingError } from "./errors.js"; -import rules from "./rules.js"; +import { bean } from 'bean-parser' +import { get } from './types.js' +import lex from './lexer.js' +import { parsingError } from './errors.js' +import rules from './rules.js' export const parse = (tokens, context) => { - return bean(tokens, rules, true, context); -}; + return bean(tokens, rules, true, context) +} export const defaultScope = { - Number: { id: "Number", type: "Type" }, - String: { id: "String", type: "Type" }, - Array: { id: "Array", type: "Type" }, - Any: { id: "Any", type: "Type" }, - Function: { id: "Function", type: "Type" }, - Type: { id: "Type", type: "Type" }, - ListType: { id: "ListType", type: "Type" }, -}; + Number: { id: 'Number', type: 'Type' }, + String: { id: 'String', type: 'Type' }, + Array: { id: 'Array', type: 'Type' }, + Any: { id: 'Any', type: 'Type' }, + Function: { id: 'Function', type: 'Type' }, + Type: { id: 'Type', type: 'Type' }, + ListType: { id: 'ListType', type: 'Type' }, +} export const compile = (source, file, { debug = false, ...ctx }) => { const context = { @@ -41,46 +41,46 @@ export const compile = (source, file, { debug = false, ...ctx }) => { scope: { ...defaultScope }, source, ...ctx, - }; - const tokens = lex(source, { file }); + } + const tokens = lex(source, { file }) /* istanbul ignore next */ - if (debug) console.dir(tokens.current, { depth: null }); - const result = parse(tokens, context); + if (debug) console.dir(tokens.current, { depth: null }) + const result = parse(tokens, context) /* istanbul ignore next */ - if (debug) console.dir(result, { depth: null }); + if (debug) console.dir(result, { depth: null }) /* istanbul ignore next */ - if (result.first.item.type == "clio") { - const clio = get(result.current.item, context); - const { code, map } = clio.toStringWithSourceMap(); - map.setSourceContent(file, source); + if (result.first.item.type == 'clio') { + const clio = get(result.current.item, context) + const { code, map } = clio.toStringWithSourceMap() + map.setSourceContent(file, source) return { code: code + `//# sourceMappingURL=${file}.js.map`, map: map.toString(), context, - }; + } /* istanbul ignore next */ } else { /* istanbul ignore next */ - throw parsingError(source, file, result); + throw parsingError(source, file, result) } -}; +} export const mkdir = (directory) => { - if (!existsSync(directory)) mkdirSync(directory, { recursive: true }); -}; + if (!existsSync(directory)) mkdirSync(directory, { recursive: true }) +} export const isFileModified = (src, dest, map, cache) => { - if (!existsSync(dest)) return true; - if (!existsSync(map)) return true; - if (!existsSync(cache)) return true; - const srcMTime = statSync(src, { bigint: true }).mtimeMs; - const destMTime = statSync(dest, { bigint: true }).mtimeMs; - const mapMTime = statSync(map, { bigint: true }).mtimeMs; - const cacheMTime = statSync(cache, { bigint: true }).mtimeMs; + if (!existsSync(dest)) return true + if (!existsSync(map)) return true + if (!existsSync(cache)) return true + const srcMTime = statSync(src, { bigint: true }).mtimeMs + const destMTime = statSync(dest, { bigint: true }).mtimeMs + const mapMTime = statSync(map, { bigint: true }).mtimeMs + const cacheMTime = statSync(cache, { bigint: true }).mtimeMs return [mapMTime, destMTime, cacheMTime] .map((mtime) => mtime <= srcMTime) - .every(Boolean); -}; + .every(Boolean) +} export const compileFile = ( relativeFile, @@ -92,62 +92,63 @@ export const compileFile = ( srcPrefix, destPrefix, cacheDir, - transfer + transfer, ) => { - const cfgDest = getDestinationFromConfig(configPath, config); - const cfgSrc = getSourceFromConfig(configPath, config); + const cfgDest = getDestinationFromConfig(configPath, config) + const cfgSrc = getSourceFromConfig(configPath, config) const destination = destPrefix ? join(root, destPrefix, cfgDest) - : join(root, cfgDest); + : join(root, cfgDest) const sourceDir = srcPrefix ? join(root, srcPrefix, cfgSrc) - : join(root, cfgSrc); - const file = join(sourceDir, relativeFile); - const rpcPrefix = `${config.title}@${config.version}`; - const destFileClio = join(destination, relativeFile); - const destFile = `${destFileClio}.js`; - const mapFile = `${destFile}.map`; - const cacheFile = join(root, cacheDir, `${destFile}.json`); - const isModified = isFileModified(file, destFile, mapFile, cacheFile); + : join(root, cfgSrc) + const file = join(sourceDir, relativeFile) + const rpcPrefix = `${config.title}@${config.version}` + const destFileClio = join(destination, relativeFile) + const destFile = `${destFileClio}.js` + const mapFile = `${destFile}.map` + const cacheFile = join(root, cacheDir, `${destFile}.json`) + const isModified = isFileModified(file, destFile, mapFile, cacheFile) if (!isModified) { - const map = readFileSync(mapFile).toString(); - const code = readFileSync(destFile).toString(); + const map = readFileSync(mapFile).toString() + const code = readFileSync(destFile).toString() const { scope, imports = [] } = JSON.parse( - readFileSync(cacheFile).toString() - ); + readFileSync(cacheFile).toString(), + ) // check if imports and configs are modified - const importsToCheck = [...imports]; + const importsToCheck = [...imports] while (importsToCheck.length) { - const { src, dest, module: moduleName } = importsToCheck.pop(); + const { src, dest, module: moduleName } = importsToCheck.pop() // TODO: This can be cached const configPath = moduleName - ? join(root, modulesDir, moduleName, "clio.toml") - : join(root, "clio.toml"); + ? join(root, modulesDir, moduleName, 'clio.toml') + : join(root, 'clio.toml') if (!transfer.npmDeps[moduleName]) { - transfer.npmDeps[moduleName] = getParsedNpmDependencies(configPath); + transfer.npmDeps[moduleName] = getParsedNpmDependencies(configPath) } if (!transfer.npmDevDeps[moduleName]) { - transfer.npmDevDeps[moduleName] = - getParsedNpmDevDependencies(configPath); + transfer.npmDevDeps[moduleName] = getParsedNpmDevDependencies( + configPath, + ) } - const mapFile = `${dest}.map`; - const cacheFile = join(root, cacheDir, `${dest}.json`); - const isModified = isFileModified(src, dest, mapFile, cacheFile); + const mapFile = `${dest}.map` + const cacheFile = join(root, cacheDir, `${dest}.json`) + const isModified = isFileModified(src, dest, mapFile, cacheFile) if (!isModified) { - const { imports = [] } = JSON.parse(readFileSync(cacheFile).toString()); - importsToCheck.push(...imports); + const { imports = [] } = JSON.parse(readFileSync(cacheFile).toString()) + importsToCheck.push(...imports) } else { // we need to compile it if (!transfer.configs[moduleName]) { - transfer.configs[moduleName] = getPackageConfig(configPath); + transfer.configs[moduleName] = getPackageConfig(configPath) } - const config = transfer.configs[moduleName]; - const contents = readFileSync(src, "utf8"); - const cfgDest = getDestinationFromConfig(configPath, config); - const cfgSrc = getSourceFromConfig(configPath, config); - const srcDir = join(dirname(configPath), cfgSrc); - const relativeFile = relative(srcDir, src); - const rpcPrefix = `${config.title}@${config.version}`; + const config = transfer.configs[moduleName] + const contents = readFileSync(src, 'utf8') + const cfgDest = getDestinationFromConfig(configPath, config) + const cfgSrc = getSourceFromConfig(configPath, config) + const srcDir = join(dirname(configPath), cfgSrc) + const relativeFile = relative(srcDir, src) + const rpcPrefix = `${config.title}@${config.version}` const { code, map, context } = compile(contents, relativeFile, { root, file: relativeFile, @@ -159,26 +160,26 @@ export const compileFile = ( destFile: dest, destination: cfgDest, configPath, - srcPrefix: moduleName ? join(modulesDir, moduleName, cfgSrc) : "src", // TODO: rip + srcPrefix: moduleName ? join(modulesDir, moduleName, cfgSrc) : 'src', // TODO: rip destPrefix: moduleName ? join(modulesDestDir, moduleName, cfgDest) - : "dest", // TODO: rip + : 'dest', // TODO: rip cacheDir, ...transfer, - }); - mkdir(dirname(dest)); - mkdir(dirname(cacheFile)); + }) + mkdir(dirname(dest)) + mkdir(dirname(cacheFile)) writeFileSync( cacheFile, JSON.stringify({ scope: context.scope, imports: context.imports || [], }), - "utf8" - ); - writeFileSync(dest, code, "utf8"); - writeFileSync(mapFile, map, "utf8"); - importsToCheck.push(...imports); + 'utf8', + ) + writeFileSync(dest, code, 'utf8') + writeFileSync(mapFile, map, 'utf8') + importsToCheck.push(...imports) } } return { @@ -190,9 +191,9 @@ export const compileFile = ( imports, destFile, srcFile: file, - }; + } } - const contents = readFileSync(file, "utf8"); + const contents = readFileSync(file, 'utf8') const { code, map, context } = compile(contents, relativeFile, { root, file: relativeFile, @@ -208,16 +209,16 @@ export const compileFile = ( destPrefix, cacheDir, ...transfer, - }); - mkdir(dirname(destFile)); - mkdir(dirname(cacheFile)); + }) + mkdir(dirname(destFile)) + mkdir(dirname(cacheFile)) writeFileSync( cacheFile, JSON.stringify({ scope: context.scope, imports: context.imports || [] }), - "utf8" - ); - writeFileSync(destFile, code, "utf8"); - writeFileSync(mapFile, map, "utf8"); + 'utf8', + ) + writeFileSync(destFile, code, 'utf8') + writeFileSync(mapFile, map, 'utf8') return { npmDeps: context.npmDeps || {}, npmDevDeps: context.npmDevDeps || {}, @@ -227,7 +228,7 @@ export const compileFile = ( imports: context.imports, destFile, srcFile: file, - }; -}; + } +} -export const tokenize = lex; +export const tokenize = lex diff --git a/packages/run/src/runners/auto.js b/packages/run/src/runners/auto.js index 49d8bcf2..141bacb8 100644 --- a/packages/run/src/runners/auto.js +++ b/packages/run/src/runners/auto.js @@ -1,45 +1,45 @@ -import { Dispatcher } from "clio-rpc/dispatcher.js"; -import { Monitor } from "../index.js"; -import ipc from "./ipc.js"; -import tcp from "./tcp.js"; -import ws from "./ws.js"; -import wt from "./wt.js"; -import ww from "./ww.js"; +import { Dispatcher } from 'clio-rpc/dispatcher.js' +import { Monitor } from '../index.js' +import ipc from './ipc.js' +import tcp from './tcp.js' +import ws from './ws.js' +import wt from './wt.js' +import ww from './ww.js' -const runners = { ws, wt, ww, tcp, ipc }; +const runners = { ws, wt, ww, tcp, ipc } const start = async (file, options, isHost = false) => { - const monitor = new Monitor(); - const dispatcher = new Dispatcher(); + const monitor = new Monitor() + const dispatcher = new Dispatcher() const serverFromConfig = async (config, index) => { - const { server } = runners[config.proto]; - return [config.name || index, await server(dispatcher, config)]; - }; + const { server } = runners[config.proto] + return [config.name || index, await server(dispatcher, config)] + } const servers = Object.fromEntries( - await Promise.all(options.servers.map(serverFromConfig)) - ); + await Promise.all(options.servers.map(serverFromConfig)), + ) options.workers.forEach((config, i) => { - const { workers } = runners[config.proto]; - workers(file, servers[config.server || i], config); - }); + const { workers } = runners[config.proto] + workers(file, servers[config.server || i], config) + }) - const execOptions = {}; + const execOptions = {} - if (isHost) Object.assign(execOptions, { noExit: true, noMain: true }); - if (!options.executor) return; + if (isHost) Object.assign(execOptions, { noExit: true, noMain: true }) + if (!options.executor) return - const { executor } = runners[options.executor.proto]; + const { executor } = runners[options.executor.proto] return executor( file, dispatcher, servers[options.executor.server || 0], monitor, options.executor, - execOptions - ); -}; + execOptions, + ) +} -export default start; +export default start From 6ca6187b30e565eb4f9f81e715e91c17858746e7 Mon Sep 17 00:00:00 2001 From: Mads Cordes Date: Mon, 22 Nov 2021 02:46:18 +0100 Subject: [PATCH 2/2] Ran linting --- packages/cli/commands/build.js | 296 +++++++++++++++---------------- packages/cli/commands/dev.js | 50 +++--- packages/cli/index.js | 36 ++-- packages/cli/lib/platforms.js | 40 ++--- packages/core/index.js | 199 +++++++++++---------- packages/run/src/runners/auto.js | 52 +++--- 6 files changed, 336 insertions(+), 337 deletions(-) diff --git a/packages/cli/commands/build.js b/packages/cli/commands/build.js index 6dc0b65a..fc149f66 100644 --- a/packages/cli/commands/build.js +++ b/packages/cli/commands/build.js @@ -1,4 +1,4 @@ -import chokidar from 'chokidar' +import chokidar from "chokidar"; import { MODULES_PATH, @@ -10,7 +10,7 @@ import { getParsedNpmDevDependencies, getSourceFromConfig, makeStartScript, -} from 'clio-manifest' +} from "clio-manifest"; import { constants, existsSync, @@ -22,59 +22,59 @@ import { rmSync, symlinkSync, writeFileSync, -} from 'fs' -import { dirname, isAbsolute, join, relative, resolve } from 'path' -import { error, info, warn } from '../lib/colors.js' -import { getPlatform, npmCommand } from '../lib/platforms.js' +} from "fs"; +import { dirname, isAbsolute, join, relative, resolve } from "path"; +import { error, info, warn } from "../lib/colors.js"; +import { getPlatform, npmCommand } from "../lib/platforms.js"; -import { Progress } from '../lib/progress.js' -import { compileFile } from 'clio-core' +import { Progress } from "../lib/progress.js"; +import { compileFile } from "clio-core"; -export const flatten = (arr) => arr.reduce((acc, val) => acc.concat(val), []) +export const flatten = (arr) => arr.reduce((acc, val) => acc.concat(val), []); -export const isDir = (dir) => lstatSync(dir).isDirectory() -export const readDir = (dir) => readdirSync(dir) +export const isDir = (dir) => lstatSync(dir).isDirectory(); +export const readDir = (dir) => readdirSync(dir); export const walkDir = (dir) => readDir(dir) - .filter((name) => name !== '.clio') - .map((f) => walk(join(dir, f))) -export const walk = (dir) => (isDir(dir) ? flatten(walkDir(dir)) : [dir]) + .filter((name) => name !== ".clio") + .map((f) => walk(join(dir, f))); +export const walk = (dir) => (isDir(dir) ? flatten(walkDir(dir)) : [dir]); -export const isClioFile = (file) => file.endsWith('.clio') -export const isClioConfig = (file) => file.match(/(^|[.\\])clio\.toml$/) -export const isNotClioFile = (file) => !isClioFile(file) -export const getClioFiles = (dir) => walk(dir).filter(isClioFile) -export const getNonClioFiles = (dir) => walk(dir).filter(isNotClioFile) +export const isClioFile = (file) => file.endsWith(".clio"); +export const isClioConfig = (file) => file.match(/(^|[.\\])clio\.toml$/); +export const isNotClioFile = (file) => !isClioFile(file); +export const getClioFiles = (dir) => walk(dir).filter(isClioFile); +export const getNonClioFiles = (dir) => walk(dir).filter(isNotClioFile); export const copyDir = async (src, dest) => { - const entries = await promises.readdir(src, { withFileTypes: true }) - mkdir(dest) + const entries = await promises.readdir(src, { withFileTypes: true }); + mkdir(dest); for (let entry of entries) { - const srcPath = join(src, entry.name) - const destPath = join(dest, entry.name) + const srcPath = join(src, entry.name); + const destPath = join(dest, entry.name); if (entry.isSymbolicLink()) { - const target = readlinkSync(srcPath) + const target = readlinkSync(srcPath); const absTarget = isAbsolute(target) ? target - : resolve(dirname(srcPath), target) - symlinkSync(absTarget, destPath) + : resolve(dirname(srcPath), target); + symlinkSync(absTarget, destPath); } else if (entry.isDirectory()) { - await copyDir(srcPath, destPath) + await copyDir(srcPath, destPath); } else { - await promises.copyFile(srcPath, destPath, constants.COPYFILE_FICLONE) + await promises.copyFile(srcPath, destPath, constants.COPYFILE_FICLONE); } } -} +}; export const rmdir = (directory) => { - if (existsSync(directory)) rmSync(directory, { recursive: true }) -} + if (existsSync(directory)) rmSync(directory, { recursive: true }); +}; export const mkdir = (directory) => { - if (!existsSync(directory)) mkdirSync(directory, { recursive: true }) -} + if (!existsSync(directory)) mkdirSync(directory, { recursive: true }); +}; -export const asyncCompile = async (...args) => compileFile(...args) +export const asyncCompile = async (...args) => compileFile(...args); /** * @@ -82,174 +82,174 @@ export const asyncCompile = async (...args) => compileFile(...args) * @param {Object} options Options to build */ export const build = async (configPath, options = {}) => { - const { skipBundle, skipNpmInstall, silent, clean, watch } = options + const { skipBundle, skipNpmInstall, silent, clean, watch } = options; - if (!silent) info(`Compiling from "${configPath}"`) + if (!silent) info(`Compiling from "${configPath}"`); - const config = getPackageConfig(configPath) - const target = getBuildTarget(configPath, config) - const destination = getDestinationFromConfig(configPath, config) - const sourceDir = getSourceFromConfig(configPath, config) + const config = getPackageConfig(configPath); + const target = getBuildTarget(configPath, config); + const destination = getDestinationFromConfig(configPath, config); + const sourceDir = getSourceFromConfig(configPath, config); - const cacheDir = join(destination, '.clio', 'cache') - const modulesDir = join(sourceDir, MODULES_PATH) - const modulesDestDir = join(destination, MODULES_PATH) + const cacheDir = join(destination, ".clio", "cache"); + const modulesDir = join(sourceDir, MODULES_PATH); + const modulesDestDir = join(destination, MODULES_PATH); - if (!silent) info(`Creating build for target "${target}"`) + if (!silent) info(`Creating build for target "${target}"`); if (clean && existsSync(destination)) { - if (!silent) info(`Wiping the build directory`) - rmSync(destination, { recursive: true }) + if (!silent) info(`Wiping the build directory`); + rmSync(destination, { recursive: true }); } - const progress = new Progress(silent) - progress.start('Compiling from source...') + const progress = new Progress(silent); + progress.start("Compiling from source..."); async function compile() { const result = await asyncCompile( - 'main.clio', + "main.clio", config, configPath, modulesDir, modulesDestDir, dirname(configPath), - '', - '', + "", + "", cacheDir, - { configs: {}, npmDeps: {}, npmDevDeps: {} }, + { configs: {}, npmDeps: {}, npmDevDeps: {} } ).catch((compileError) => { - progress.fail() - console.error(compileError.message) - process.exit(1) - }) + progress.fail(); + console.error(compileError.message); + process.exit(1); + }); - progress.succeed() + progress.succeed(); try { // Copy resources - progress.start('Copying over the resource files...') - const nonClioFiles = getNonClioFiles(sourceDir) + progress.start("Copying over the resource files..."); + const nonClioFiles = getNonClioFiles(sourceDir); for (const file of nonClioFiles) { - const relativeFile = relative(sourceDir, file) - const destFile = join(destination, relativeFile) - const destDir = dirname(destFile) - mkdir(destDir) - await promises.copyFile(file, destFile) + const relativeFile = relative(sourceDir, file); + const destFile = join(destination, relativeFile); + const destDir = dirname(destFile); + mkdir(destDir); + await promises.copyFile(file, destFile); } - progress.succeed() + progress.succeed(); // Add index.js file - progress.start('Adding Clio start script...') - mkdir(join(destination, '.clio')) - makeStartScript(config, target, destination) - progress.succeed() + progress.start("Adding Clio start script..."); + mkdir(join(destination, ".clio")); + makeStartScript(config, target, destination); + progress.succeed(); - const { npmDeps } = result + const { npmDeps } = result; const depsNpmDependencies = Object.values(npmDeps).reduce( (lhs, rhs) => ({ ...lhs, ...rhs }), - {}, - ) + {} + ); // Init npm modules try { - const packageJsonPath = join(destination, 'package.json') - const dependencies = getParsedNpmDependencies(configPath) - - const devDependencies = getParsedNpmDevDependencies(configPath) - dependencies['clio-run'] = 'latest' - const packageInfo = {} - if (config.keywords) packageInfo.keywords = config.keywords - if (config.authors) packageInfo.authors = config.authors + const packageJsonPath = join(destination, "package.json"); + const dependencies = getParsedNpmDependencies(configPath); + + const devDependencies = getParsedNpmDevDependencies(configPath); + dependencies["clio-run"] = "latest"; + const packageInfo = {}; + if (config.keywords) packageInfo.keywords = config.keywords; + if (config.authors) packageInfo.authors = config.authors; const packageJsonContent = { ...packageInfo, - main: './main.clio.js', - type: 'module', + main: "./main.clio.js", + type: "module", dependencies: { ...depsNpmDependencies, ...dependencies }, devDependencies, ...config.npmOverride, - } + }; writeFileSync( packageJsonPath, JSON.stringify(packageJsonContent, null, 2), - { flag: 'w' }, - ) + { flag: "w" } + ); } catch (e) { - progress.fail(`Error: ${e.message}`) - error(e, 'Dependency Install') + progress.fail(`Error: ${e.message}`); + error(e, "Dependency Install"); } } catch (e) { - progress.fail(`Error: ${e}`) - error(e, 'Compilation') + progress.fail(`Error: ${e}`); + error(e, "Compilation"); } } if (watch) { - const cfgSrc = getSourceFromConfig(configPath, config) - const sourceDir = join(dirname(configPath), cfgSrc) + const cfgSrc = getSourceFromConfig(configPath, config); + const sourceDir = join(dirname(configPath), cfgSrc); - chokidar.watch(join(sourceDir, '*.clio')).on('all', async () => { - await compile() + chokidar.watch(join(sourceDir, "*.clio")).on("all", async () => { + await compile(); try { - const platform = getPlatform(target) - await platform.build(destination, skipBundle) + const platform = getPlatform(target); + await platform.build(destination, skipBundle); } catch (e) { - error(e, 'Bundling') + error(e, "Bundling"); } - }) - } else await compile() + }); + } else await compile(); if (!skipNpmInstall) { - progress.start('Installing npm dependencies (this may take a while)...') - await fetchNpmDependencies(destination, silent) - progress.succeed() + progress.start("Installing npm dependencies (this may take a while)..."); + await fetchNpmDependencies(destination, silent); + progress.succeed(); } if (process.env.CLIOPATH) { // Link local internals - warn('Using local internals. This should only be used for debug purposes.') + warn("Using local internals. This should only be used for debug purposes."); warn( - 'If you encounter any unwanted behavior, unset the CLIOPATH environment variable', - ) - progress.succeed() - progress.start('Linking dependencies') + "If you encounter any unwanted behavior, unset the CLIOPATH environment variable" + ); + progress.succeed(); + progress.start("Linking dependencies"); // Install third party dependencies const install = (...names) => - names.forEach((name) => installExternal(name, destination)) + names.forEach((name) => installExternal(name, destination)); - install('sializer', 'buffer', 'bufferutil', 'ws') + install("sializer", "buffer", "bufferutil", "ws"); // Link local dependencies const linkToDest = (name, internalName, unlinks) => - link(name, internalName, destination, unlinks) + link(name, internalName, destination, unlinks); - await linkToDest('clio-run', 'run', ['clio-lang-internals', 'clio-rpc']) - await linkToDest('clio-rpc', 'rpc', ['clio-lang-internals']) - await linkToDest('clio-lang-internals', 'internals') + await linkToDest("clio-run", "run", ["clio-lang-internals", "clio-rpc"]); + await linkToDest("clio-rpc", "rpc", ["clio-lang-internals"]); + await linkToDest("clio-lang-internals", "internals"); - progress.succeed() + progress.succeed(); } try { - const platform = getPlatform(target) - await platform.build(destination, skipBundle) + const platform = getPlatform(target); + await platform.build(destination, skipBundle); } catch (e) { - error(e, 'Bundling') + error(e, "Bundling"); } -} +}; /** * Link local internals package as a dependency * @param {string} destination Full path to destination directory */ export async function link(name, internalName, destination, unlinks = []) { - const modulePath = join(destination, 'node_modules', name) - const internalPath = resolve(process.env.CLIOPATH, 'packages', internalName) - rmdir(modulePath) - await copyDir(internalPath, modulePath) - unlinkNodeModules(modulePath, ...unlinks) + const modulePath = join(destination, "node_modules", name); + const internalPath = resolve(process.env.CLIOPATH, "packages", internalName); + rmdir(modulePath); + await copyDir(internalPath, modulePath); + unlinkNodeModules(modulePath, ...unlinks); } /** @@ -257,7 +257,7 @@ export async function link(name, internalName, destination, unlinks = []) { * @param {string} destination Full path to destination directory */ export function installExternal(name, destination) { - return npmCommand('install', destination, [name], { stdio: 'ignore' }) + return npmCommand("install", destination, [name], { stdio: "ignore" }); } /** @@ -266,48 +266,48 @@ export function installExternal(name, destination) { */ export function unlinkNodeModules(destination, ...names) { for (const name of names) { - rmSync(join(destination, 'node_modules', name), { + rmSync(join(destination, "node_modules", name), { recursive: true, - }) + }); } } -const command = 'build [project]' -const describe = 'Build a Clio project' +const command = "build [project]"; +const describe = "Build a Clio project"; export const handler = (argv) => { const options = { - skipBundle: argv['skip-bundle'], - skipNpmInstall: argv['skip-npm-install'], + skipBundle: argv["skip-bundle"], + skipNpmInstall: argv["skip-npm-install"], silent: argv.silent, - } - const config = join(argv.project, 'clio.toml') - build(config, options) -} + }; + const config = join(argv.project, "clio.toml"); + build(config, options); +}; const builder = { project: { - describe: 'Project root directory, where your clio.toml file is.', - type: 'string', - default: '.', + describe: "Project root directory, where your clio.toml file is.", + type: "string", + default: ".", }, - 'skip-bundle': { - describe: 'Does not produces a bundle for browsers.', - type: 'boolean', + "skip-bundle": { + describe: "Does not produces a bundle for browsers.", + type: "boolean", }, - 'skip-npm-install': { - describe: 'Skips npm install. Useful for tests.', - type: 'boolean', + "skip-npm-install": { + describe: "Skips npm install. Useful for tests.", + type: "boolean", }, silent: { - describe: 'Mutes messages from the command.', - type: 'boolean', + describe: "Mutes messages from the command.", + type: "boolean", }, clean: { - describe: 'Wipe the build directory before build', - type: 'boolean', + describe: "Wipe the build directory before build", + type: "boolean", }, -} +}; export default { build, @@ -320,4 +320,4 @@ export default { copyDir, isClioConfig, isDir, -} +}; diff --git a/packages/cli/commands/dev.js b/packages/cli/commands/dev.js index db63d3dc..b5e4ad9c 100644 --- a/packages/cli/commands/dev.js +++ b/packages/cli/commands/dev.js @@ -2,56 +2,56 @@ import { getBuildTarget, getDestinationFromConfig, getPackageConfig, -} from 'clio-manifest' +} from "clio-manifest"; -import { build } from './build.js' -import { error } from '../lib/colors.js' -import { getPlatform } from '../lib/platforms.js' -import { join } from 'path' +import { build } from "./build.js"; +import { error } from "../lib/colors.js"; +import { getPlatform } from "../lib/platforms.js"; +import { join } from "path"; -export const command = 'dev [project]' +export const command = "dev [project]"; -export const describe = 'Compile and watch Clio file' +export const describe = "Compile and watch Clio file"; export const builder = { project: { - describe: 'Project root directory, where your clio.toml file is.', - type: 'string', - default: '.', + describe: "Project root directory, where your clio.toml file is.", + type: "string", + default: ".", }, silent: { - describe: 'Mutes messages from the command.', - type: 'boolean', + describe: "Mutes messages from the command.", + type: "boolean", }, clean: { - describe: 'Wipe the build directory before build', - type: 'boolean', + describe: "Wipe the build directory before build", + type: "boolean", }, -} +}; export function handler(argv) { - dev(argv, argv._.slice(1)) + dev(argv, argv._.slice(1)); } export async function dev(argv, args, forkOptions = {}) { try { - const configPath = join(argv.project, 'clio.toml') + const configPath = join(argv.project, "clio.toml"); await build(configPath, { skipBundle: true, silent: argv.silent, clean: argv.clean, watch: true, - }) + }); - const config = getPackageConfig(configPath) - const target = getBuildTarget(configPath, config) - const destination = getDestinationFromConfig(configPath, config) - const platform = getPlatform(target) + const config = getPackageConfig(configPath); + const target = getBuildTarget(configPath, config); + const destination = getDestinationFromConfig(configPath, config); + const platform = getPlatform(target); - return await platform.dev(destination, args, forkOptions) + return await platform.dev(destination, args, forkOptions); } catch (e) { - error(e) + error(e); } } @@ -61,4 +61,4 @@ export default { builder, handler, dev, -} +}; diff --git a/packages/cli/index.js b/packages/cli/index.js index b449b7ff..84bd2093 100755 --- a/packages/cli/index.js +++ b/packages/cli/index.js @@ -1,24 +1,24 @@ #!/usr/bin/env node -import build from './commands/build.js' -import chalk from 'chalk' -import deps from './commands/deps.js' -import docs from './commands/docs.js' -import { hideBin } from 'yargs/helpers' -import highlight from './commands/highlight.js' -import host from './commands/host.js' -import { isSupportedNodeVersion } from 'clio-utils' -import newc from './commands/new.js' -import run from './commands/run.js' -import dev from './commands/dev.js' -import yargs from 'yargs' +import build from "./commands/build.js"; +import chalk from "chalk"; +import deps from "./commands/deps.js"; +import docs from "./commands/docs.js"; +import { hideBin } from "yargs/helpers"; +import highlight from "./commands/highlight.js"; +import host from "./commands/host.js"; +import { isSupportedNodeVersion } from "clio-utils"; +import newc from "./commands/new.js"; +import run from "./commands/run.js"; +import dev from "./commands/dev.js"; +import yargs from "yargs"; -const { yellow } = chalk +const { yellow } = chalk; if (!isSupportedNodeVersion(process.versions.node)) { yellow( - 'Warning: your Node version is outdated. This might cause problems. Please, upgrade Node to version 14.0 or higher.', - ) + "Warning: your Node version is outdated. This might cause problems. Please, upgrade Node to version 14.0 or higher." + ); } yargs(hideBin(process.argv)) @@ -31,6 +31,6 @@ yargs(hideBin(process.argv)) .command(docs) .command(highlight) .help() - .alias('h', 'help') - .demandCommand(1, 'must provide a valid command') - .completion().argv + .alias("h", "help") + .demandCommand(1, "must provide a valid command") + .completion().argv; diff --git a/packages/cli/lib/platforms.js b/packages/cli/lib/platforms.js index 6b35d1d3..e7cbf830 100644 --- a/packages/cli/lib/platforms.js +++ b/packages/cli/lib/platforms.js @@ -1,43 +1,43 @@ -import { spawn, spawnSync } from 'child_process' +import { spawn, spawnSync } from "child_process"; export const npmCommand = (command, destination, args, forkOptions = {}) => { - const npm = process.platform == 'win32' ? 'npm.cmd' : 'npm' + const npm = process.platform == "win32" ? "npm.cmd" : "npm"; return spawnSync(npm, [command, ...args], { cwd: destination, - stdio: 'inherit', + stdio: "inherit", ...forkOptions, - }) -} + }); +}; const npmRun = (command, destination, args, forkOptions = {}) => { - const argv = args && args.length ? ['--', ...args] : [] - const npm = process.platform == 'win32' ? 'npm.cmd' : 'npm' - return spawn(npm, ['run', command, ...argv], { + const argv = args && args.length ? ["--", ...args] : []; + const npm = process.platform == "win32" ? "npm.cmd" : "npm"; + return spawn(npm, ["run", command, ...argv], { cwd: destination, - stdio: 'inherit', + stdio: "inherit", ...forkOptions, - }) -} + }); +}; const js = { async build(destination, args, forkOptions) { - return npmRun('build', destination, args, forkOptions) + return npmRun("build", destination, args, forkOptions); }, async run(destination, args, forkOptions) { - return npmRun('start', destination, args, forkOptions) + return npmRun("start", destination, args, forkOptions); }, async dev(destination, args, forkOptions) { - return npmRun('start', destination, args, forkOptions) + return npmRun("start", destination, args, forkOptions); }, async host(destination, args) { - return npmRun('host', destination, args) + return npmRun("host", destination, args); }, -} +}; -const platforms = { js } +const platforms = { js }; export function getPlatform(name) { - const platform = platforms[name] - if (!platform) throw new Error(`Platform "${name}" is not supported`) - return platform + const platform = platforms[name]; + if (!platform) throw new Error(`Platform "${name}" is not supported`); + return platform; } diff --git a/packages/core/index.js b/packages/core/index.js index f52d7485..d77ee38e 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -1,38 +1,38 @@ -import { dirname, join, relative } from 'path' +import { dirname, join, relative } from "path"; import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync, -} from 'fs' +} from "fs"; import { getDestinationFromConfig, getPackageConfig, getParsedNpmDependencies, getParsedNpmDevDependencies, getSourceFromConfig, -} from 'clio-manifest' +} from "clio-manifest"; -import { bean } from 'bean-parser' -import { get } from './types.js' -import lex from './lexer.js' -import { parsingError } from './errors.js' -import rules from './rules.js' +import { bean } from "bean-parser"; +import { get } from "./types.js"; +import lex from "./lexer.js"; +import { parsingError } from "./errors.js"; +import rules from "./rules.js"; export const parse = (tokens, context) => { - return bean(tokens, rules, true, context) -} + return bean(tokens, rules, true, context); +}; export const defaultScope = { - Number: { id: 'Number', type: 'Type' }, - String: { id: 'String', type: 'Type' }, - Array: { id: 'Array', type: 'Type' }, - Any: { id: 'Any', type: 'Type' }, - Function: { id: 'Function', type: 'Type' }, - Type: { id: 'Type', type: 'Type' }, - ListType: { id: 'ListType', type: 'Type' }, -} + Number: { id: "Number", type: "Type" }, + String: { id: "String", type: "Type" }, + Array: { id: "Array", type: "Type" }, + Any: { id: "Any", type: "Type" }, + Function: { id: "Function", type: "Type" }, + Type: { id: "Type", type: "Type" }, + ListType: { id: "ListType", type: "Type" }, +}; export const compile = (source, file, { debug = false, ...ctx }) => { const context = { @@ -41,46 +41,46 @@ export const compile = (source, file, { debug = false, ...ctx }) => { scope: { ...defaultScope }, source, ...ctx, - } - const tokens = lex(source, { file }) + }; + const tokens = lex(source, { file }); /* istanbul ignore next */ - if (debug) console.dir(tokens.current, { depth: null }) - const result = parse(tokens, context) + if (debug) console.dir(tokens.current, { depth: null }); + const result = parse(tokens, context); /* istanbul ignore next */ - if (debug) console.dir(result, { depth: null }) + if (debug) console.dir(result, { depth: null }); /* istanbul ignore next */ - if (result.first.item.type == 'clio') { - const clio = get(result.current.item, context) - const { code, map } = clio.toStringWithSourceMap() - map.setSourceContent(file, source) + if (result.first.item.type == "clio") { + const clio = get(result.current.item, context); + const { code, map } = clio.toStringWithSourceMap(); + map.setSourceContent(file, source); return { code: code + `//# sourceMappingURL=${file}.js.map`, map: map.toString(), context, - } + }; /* istanbul ignore next */ } else { /* istanbul ignore next */ - throw parsingError(source, file, result) + throw parsingError(source, file, result); } -} +}; export const mkdir = (directory) => { - if (!existsSync(directory)) mkdirSync(directory, { recursive: true }) -} + if (!existsSync(directory)) mkdirSync(directory, { recursive: true }); +}; export const isFileModified = (src, dest, map, cache) => { - if (!existsSync(dest)) return true - if (!existsSync(map)) return true - if (!existsSync(cache)) return true - const srcMTime = statSync(src, { bigint: true }).mtimeMs - const destMTime = statSync(dest, { bigint: true }).mtimeMs - const mapMTime = statSync(map, { bigint: true }).mtimeMs - const cacheMTime = statSync(cache, { bigint: true }).mtimeMs + if (!existsSync(dest)) return true; + if (!existsSync(map)) return true; + if (!existsSync(cache)) return true; + const srcMTime = statSync(src, { bigint: true }).mtimeMs; + const destMTime = statSync(dest, { bigint: true }).mtimeMs; + const mapMTime = statSync(map, { bigint: true }).mtimeMs; + const cacheMTime = statSync(cache, { bigint: true }).mtimeMs; return [mapMTime, destMTime, cacheMTime] .map((mtime) => mtime <= srcMTime) - .every(Boolean) -} + .every(Boolean); +}; export const compileFile = ( relativeFile, @@ -92,63 +92,62 @@ export const compileFile = ( srcPrefix, destPrefix, cacheDir, - transfer, + transfer ) => { - const cfgDest = getDestinationFromConfig(configPath, config) - const cfgSrc = getSourceFromConfig(configPath, config) + const cfgDest = getDestinationFromConfig(configPath, config); + const cfgSrc = getSourceFromConfig(configPath, config); const destination = destPrefix ? join(root, destPrefix, cfgDest) - : join(root, cfgDest) + : join(root, cfgDest); const sourceDir = srcPrefix ? join(root, srcPrefix, cfgSrc) - : join(root, cfgSrc) - const file = join(sourceDir, relativeFile) - const rpcPrefix = `${config.title}@${config.version}` - const destFileClio = join(destination, relativeFile) - const destFile = `${destFileClio}.js` - const mapFile = `${destFile}.map` - const cacheFile = join(root, cacheDir, `${destFile}.json`) - const isModified = isFileModified(file, destFile, mapFile, cacheFile) + : join(root, cfgSrc); + const file = join(sourceDir, relativeFile); + const rpcPrefix = `${config.title}@${config.version}`; + const destFileClio = join(destination, relativeFile); + const destFile = `${destFileClio}.js`; + const mapFile = `${destFile}.map`; + const cacheFile = join(root, cacheDir, `${destFile}.json`); + const isModified = isFileModified(file, destFile, mapFile, cacheFile); if (!isModified) { - const map = readFileSync(mapFile).toString() - const code = readFileSync(destFile).toString() + const map = readFileSync(mapFile).toString(); + const code = readFileSync(destFile).toString(); const { scope, imports = [] } = JSON.parse( - readFileSync(cacheFile).toString(), - ) + readFileSync(cacheFile).toString() + ); // check if imports and configs are modified - const importsToCheck = [...imports] + const importsToCheck = [...imports]; while (importsToCheck.length) { - const { src, dest, module: moduleName } = importsToCheck.pop() + const { src, dest, module: moduleName } = importsToCheck.pop(); // TODO: This can be cached const configPath = moduleName - ? join(root, modulesDir, moduleName, 'clio.toml') - : join(root, 'clio.toml') + ? join(root, modulesDir, moduleName, "clio.toml") + : join(root, "clio.toml"); if (!transfer.npmDeps[moduleName]) { - transfer.npmDeps[moduleName] = getParsedNpmDependencies(configPath) + transfer.npmDeps[moduleName] = getParsedNpmDependencies(configPath); } if (!transfer.npmDevDeps[moduleName]) { - transfer.npmDevDeps[moduleName] = getParsedNpmDevDependencies( - configPath, - ) + transfer.npmDevDeps[moduleName] = + getParsedNpmDevDependencies(configPath); } - const mapFile = `${dest}.map` - const cacheFile = join(root, cacheDir, `${dest}.json`) - const isModified = isFileModified(src, dest, mapFile, cacheFile) + const mapFile = `${dest}.map`; + const cacheFile = join(root, cacheDir, `${dest}.json`); + const isModified = isFileModified(src, dest, mapFile, cacheFile); if (!isModified) { - const { imports = [] } = JSON.parse(readFileSync(cacheFile).toString()) - importsToCheck.push(...imports) + const { imports = [] } = JSON.parse(readFileSync(cacheFile).toString()); + importsToCheck.push(...imports); } else { // we need to compile it if (!transfer.configs[moduleName]) { - transfer.configs[moduleName] = getPackageConfig(configPath) + transfer.configs[moduleName] = getPackageConfig(configPath); } - const config = transfer.configs[moduleName] - const contents = readFileSync(src, 'utf8') - const cfgDest = getDestinationFromConfig(configPath, config) - const cfgSrc = getSourceFromConfig(configPath, config) - const srcDir = join(dirname(configPath), cfgSrc) - const relativeFile = relative(srcDir, src) - const rpcPrefix = `${config.title}@${config.version}` + const config = transfer.configs[moduleName]; + const contents = readFileSync(src, "utf8"); + const cfgDest = getDestinationFromConfig(configPath, config); + const cfgSrc = getSourceFromConfig(configPath, config); + const srcDir = join(dirname(configPath), cfgSrc); + const relativeFile = relative(srcDir, src); + const rpcPrefix = `${config.title}@${config.version}`; const { code, map, context } = compile(contents, relativeFile, { root, file: relativeFile, @@ -160,26 +159,26 @@ export const compileFile = ( destFile: dest, destination: cfgDest, configPath, - srcPrefix: moduleName ? join(modulesDir, moduleName, cfgSrc) : 'src', // TODO: rip + srcPrefix: moduleName ? join(modulesDir, moduleName, cfgSrc) : "src", // TODO: rip destPrefix: moduleName ? join(modulesDestDir, moduleName, cfgDest) - : 'dest', // TODO: rip + : "dest", // TODO: rip cacheDir, ...transfer, - }) - mkdir(dirname(dest)) - mkdir(dirname(cacheFile)) + }); + mkdir(dirname(dest)); + mkdir(dirname(cacheFile)); writeFileSync( cacheFile, JSON.stringify({ scope: context.scope, imports: context.imports || [], }), - 'utf8', - ) - writeFileSync(dest, code, 'utf8') - writeFileSync(mapFile, map, 'utf8') - importsToCheck.push(...imports) + "utf8" + ); + writeFileSync(dest, code, "utf8"); + writeFileSync(mapFile, map, "utf8"); + importsToCheck.push(...imports); } } return { @@ -191,9 +190,9 @@ export const compileFile = ( imports, destFile, srcFile: file, - } + }; } - const contents = readFileSync(file, 'utf8') + const contents = readFileSync(file, "utf8"); const { code, map, context } = compile(contents, relativeFile, { root, file: relativeFile, @@ -209,16 +208,16 @@ export const compileFile = ( destPrefix, cacheDir, ...transfer, - }) - mkdir(dirname(destFile)) - mkdir(dirname(cacheFile)) + }); + mkdir(dirname(destFile)); + mkdir(dirname(cacheFile)); writeFileSync( cacheFile, JSON.stringify({ scope: context.scope, imports: context.imports || [] }), - 'utf8', - ) - writeFileSync(destFile, code, 'utf8') - writeFileSync(mapFile, map, 'utf8') + "utf8" + ); + writeFileSync(destFile, code, "utf8"); + writeFileSync(mapFile, map, "utf8"); return { npmDeps: context.npmDeps || {}, npmDevDeps: context.npmDevDeps || {}, @@ -228,7 +227,7 @@ export const compileFile = ( imports: context.imports, destFile, srcFile: file, - } -} + }; +}; -export const tokenize = lex +export const tokenize = lex; diff --git a/packages/run/src/runners/auto.js b/packages/run/src/runners/auto.js index 141bacb8..49d8bcf2 100644 --- a/packages/run/src/runners/auto.js +++ b/packages/run/src/runners/auto.js @@ -1,45 +1,45 @@ -import { Dispatcher } from 'clio-rpc/dispatcher.js' -import { Monitor } from '../index.js' -import ipc from './ipc.js' -import tcp from './tcp.js' -import ws from './ws.js' -import wt from './wt.js' -import ww from './ww.js' +import { Dispatcher } from "clio-rpc/dispatcher.js"; +import { Monitor } from "../index.js"; +import ipc from "./ipc.js"; +import tcp from "./tcp.js"; +import ws from "./ws.js"; +import wt from "./wt.js"; +import ww from "./ww.js"; -const runners = { ws, wt, ww, tcp, ipc } +const runners = { ws, wt, ww, tcp, ipc }; const start = async (file, options, isHost = false) => { - const monitor = new Monitor() - const dispatcher = new Dispatcher() + const monitor = new Monitor(); + const dispatcher = new Dispatcher(); const serverFromConfig = async (config, index) => { - const { server } = runners[config.proto] - return [config.name || index, await server(dispatcher, config)] - } + const { server } = runners[config.proto]; + return [config.name || index, await server(dispatcher, config)]; + }; const servers = Object.fromEntries( - await Promise.all(options.servers.map(serverFromConfig)), - ) + await Promise.all(options.servers.map(serverFromConfig)) + ); options.workers.forEach((config, i) => { - const { workers } = runners[config.proto] - workers(file, servers[config.server || i], config) - }) + const { workers } = runners[config.proto]; + workers(file, servers[config.server || i], config); + }); - const execOptions = {} + const execOptions = {}; - if (isHost) Object.assign(execOptions, { noExit: true, noMain: true }) - if (!options.executor) return + if (isHost) Object.assign(execOptions, { noExit: true, noMain: true }); + if (!options.executor) return; - const { executor } = runners[options.executor.proto] + const { executor } = runners[options.executor.proto]; return executor( file, dispatcher, servers[options.executor.server || 0], monitor, options.executor, - execOptions, - ) -} + execOptions + ); +}; -export default start +export default start;