diff --git a/.eslintrc.js b/.eslintrc.js index 7548420..feb0fdc 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,8 @@ module.exports = { root: true, - extends: "@oat-sa/eslint-config-tao/amd" + extends: '@oat-sa/eslint-config-tao/amd', + parserOptions: { + // needed to support the dynamic import syntax + ecmaVersion: 11 + } }; diff --git a/.gitignore b/.gitignore index 5387a08..946d567 100644 --- a/.gitignore +++ b/.gitignore @@ -60,9 +60,13 @@ typings/ # next.js build output .next -dist +# IDE files +.idea/ +.vscode/ -# IDE -.vscode +# Platform specifics +.DS_Store +# Project related eslint_report.json +/dist diff --git a/build/path.js b/build/path.js index a198072..163be83 100644 --- a/build/path.js +++ b/build/path.js @@ -17,15 +17,14 @@ */ /** - * This file contains path definitions for build scripts. - */ -const path = require("path"); -const rootPath = path.resolve(__dirname, ".."); + * This file contains path definitions for build scripts. + */ +const path = require('path'); +const rootPath = path.resolve(__dirname, '..'); module.exports = { - srcDir: path.resolve(rootPath, "src"), - testDir: path.resolve(rootPath, "test"), - outputDir: path.resolve(rootPath, "dist"), - testOutputDir: path.resolve(rootPath, "test") + srcDir: path.resolve(rootPath, 'src'), + testDir: path.resolve(rootPath, 'test'), + outputDir: path.resolve(rootPath, 'dist'), + testOutputDir: path.resolve(rootPath, 'test') }; - diff --git a/package-lock.json b/package-lock.json index 51f3fa5..e654aec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,505 +1,532 @@ { "name": "@oat-sa/tao-core-sdk", - "version": "1.20.0", + "version": "1.21.0", "lockfileVersion": 1, "requires": true, "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "requires": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", "dev": true }, "@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", + "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.3", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.3", + "@babel/types": "^7.19.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.1", + "semver": "^6.3.0" } }, "@babel/eslint-parser": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz", - "integrity": "sha512-iB4ElZT0jAt7PKVaeVulOECdGe6UnmA/O0P9jlF5g5GBOwDVbna8AXhHRu4s27xQf6OkveyA8iTDv1jHdDejgQ==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", "dev": true, "requires": { - "eslint-scope": "^5.1.1", + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", "semver": "^6.3.0" } }, "@babel/generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", - "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "version": "7.19.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "dev": true, "requires": { - "@babel/types": "^7.16.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.19.4", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } } }, "@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", - "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" } }, "@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.19.3", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", - "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "regexpu-core": "^4.7.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", "semver": "^6.1.2" } }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, "@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", - "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.9" } }, "@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", - "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", - "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-replace-supers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", - "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" } }, "@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.19.4" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.9" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, "@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==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", - "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helpers": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", - "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", + "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", "dev": true, "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.4", + "@babel/types": "^7.19.4" } }, "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", + "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", - "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", + "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.4", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", - "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", - "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", - "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", - "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", - "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", - "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", - "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", - "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", - "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", + "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.0" + "@babel/plugin-transform-parameters": "^7.18.8" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", - "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", - "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", - "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", - "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", - "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-async-generators": { @@ -547,6 +574,15 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -629,349 +665,355 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", - "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", - "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.0" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", - "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", - "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-classes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", - "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", - "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", - "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", - "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", - "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", - "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-for-of": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", - "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", - "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", - "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", - "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", - "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", - "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", - "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", + "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", - "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", - "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", - "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-object-super": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", - "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" } }, "@babel/plugin-transform-parameters": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", - "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-property-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", - "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-regenerator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", - "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "requires": { - "regenerator-transform": "^0.14.2" + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", - "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", - "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-spread": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", - "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", - "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-template-literals": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", - "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", - "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", - "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", - "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/preset-env": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", - "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.4", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-class-static-block": "^7.16.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.0", - "@babel/plugin-proposal-export-namespace-from": "^7.16.0", - "@babel/plugin-proposal-json-strings": "^7.16.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-object-rest-spread": "^7.16.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-proposal-private-property-in-object": "^7.16.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", + "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.19.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -981,44 +1023,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.0", - "@babel/plugin-transform-async-to-generator": "^7.16.0", - "@babel/plugin-transform-block-scoped-functions": "^7.16.0", - "@babel/plugin-transform-block-scoping": "^7.16.0", - "@babel/plugin-transform-classes": "^7.16.0", - "@babel/plugin-transform-computed-properties": "^7.16.0", - "@babel/plugin-transform-destructuring": "^7.16.0", - "@babel/plugin-transform-dotall-regex": "^7.16.0", - "@babel/plugin-transform-duplicate-keys": "^7.16.0", - "@babel/plugin-transform-exponentiation-operator": "^7.16.0", - "@babel/plugin-transform-for-of": "^7.16.0", - "@babel/plugin-transform-function-name": "^7.16.0", - "@babel/plugin-transform-literals": "^7.16.0", - "@babel/plugin-transform-member-expression-literals": "^7.16.0", - "@babel/plugin-transform-modules-amd": "^7.16.0", - "@babel/plugin-transform-modules-commonjs": "^7.16.0", - "@babel/plugin-transform-modules-systemjs": "^7.16.0", - "@babel/plugin-transform-modules-umd": "^7.16.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", - "@babel/plugin-transform-new-target": "^7.16.0", - "@babel/plugin-transform-object-super": "^7.16.0", - "@babel/plugin-transform-parameters": "^7.16.3", - "@babel/plugin-transform-property-literals": "^7.16.0", - "@babel/plugin-transform-regenerator": "^7.16.0", - "@babel/plugin-transform-reserved-words": "^7.16.0", - "@babel/plugin-transform-shorthand-properties": "^7.16.0", - "@babel/plugin-transform-spread": "^7.16.0", - "@babel/plugin-transform-sticky-regex": "^7.16.0", - "@babel/plugin-transform-template-literals": "^7.16.0", - "@babel/plugin-transform-typeof-symbol": "^7.16.0", - "@babel/plugin-transform-unicode-escapes": "^7.16.0", - "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.19.4", + "@babel/plugin-transform-classes": "^7.19.0", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.19.4", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.0", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", + "@babel/types": "^7.19.4", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", "semver": "^6.3.0" } }, @@ -1036,97 +1078,118 @@ } }, "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", + "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", - "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.3", - "@babel/types": "^7.16.0", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz", + "integrity": "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.4", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.19.4", + "@babel/types": "^7.19.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, + "@es-joy/jsdoccomment": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.31.0.tgz", + "integrity": "sha512-tc1/iuQcnaiSIUVad72PBierDFpsxdUHtEF/OrfqvM1CBAsIoMP51j52jTMb3dXriwhieTo289InzZj72jL3EQ==", + "dev": true, + "requires": { + "comment-parser": "1.3.1", + "esquery": "^1.4.0", + "jsdoc-type-pratt-parser": "~3.1.0" + }, + "dependencies": { + "comment-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", + "dev": true + } + } + }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true } } }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", + "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -1146,6 +1209,15 @@ "resolve-from": "^5.0.0" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -1156,6 +1228,16 @@ "path-exists": "^4.0.0" } }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -1194,6 +1276,53 @@ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "requires": { + "eslint-scope": "5.1.1" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1238,12 +1367,44 @@ "eslint-plugin-jest": "^24.3.2", "eslint-plugin-jsdoc": "^32.3.0", "eslint-plugin-svelte3": "^3.1.1" + }, + "dependencies": { + "eslint-plugin-jsdoc": { + "version": "32.3.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-32.3.4.tgz", + "integrity": "sha512-xSWfsYvffXnN0OkwLnB7MoDDDDjqcp46W7YlY1j7JyfAQBQ+WnGCfLov3gVNZjUGtK9Otj8mEhTZTqJu4QtIGA==", + "dev": true, + "requires": { + "comment-parser": "1.1.5", + "debug": "^4.3.1", + "jsdoctypeparser": "^9.0.0", + "lodash": "^4.17.21", + "regextras": "^0.7.1", + "semver": "^7.3.5", + "spdx-expression-parse": "^3.0.1" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@oat-sa/expr-eval": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@oat-sa/expr-eval/-/expr-eval-1.3.0.tgz", - "integrity": "sha512-z9ezG0Z+26qaCz3w/sYzN/JyBLmN2xhzCfNihYRA7CMYukEbkeY3/tLknVhwm+rp4584yDDuSHPVMuoYmwZP1A==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@oat-sa/expr-eval/-/expr-eval-1.3.1.tgz", + "integrity": "sha512-pUVOvkgWiydBmrxOEcmuLOWU9/1ZJZZ4Iped07Qf6P/E0mYVaEaKkBLRBfSyL1NuwX9VZPjxZ7qzfAi7zGJ88Q==", "dev": true }, "@oat-sa/prettier-config": { @@ -1253,9 +1414,9 @@ "dev": true }, "@oat-sa/tao-core-libs": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@oat-sa/tao-core-libs/-/tao-core-libs-0.4.4.tgz", - "integrity": "sha512-DvleNKX5Ljnnl5fxUp8ss1yFubFSyzO/V3uuTaBjw6EkBPfLuNmvMi915AQ3UgX7tV6ysMc6B0HlbLxcwZp86A==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@oat-sa/tao-core-libs/-/tao-core-libs-0.4.8.tgz", + "integrity": "sha512-/JtoZmzMXvpNvd1wEa4nVL9xo59dhVHQUvm7Dsmf+yH1sv4ktl9ovcJK8XVWilB7JbELqM5YxbMKlGgK4DiWSw==", "dev": true }, "@oat-sa/tao-qunit-testrunner": { @@ -1278,6 +1439,22 @@ "serve-index": "^1.9.1", "serve-static": "^1.14.1", "yargs": "^13.3.0" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "@tokenizer/token": { @@ -1287,15 +1464,15 @@ "dev": true }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz", + "integrity": "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==", "dev": true, "requires": { "@types/minimatch": "*", @@ -1303,15 +1480,15 @@ } }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true }, "@types/minimist": { @@ -1321,9 +1498,9 @@ "dev": true }, "@types/node": { - "version": "16.11.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.11.tgz", - "integrity": "sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw==", + "version": "18.8.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.5.tgz", + "integrity": "sha512-Bq7G3AErwe5A/Zki5fdD3O6+0zDChhg671NfPjtIcbtzDNZTv4NPKMRFr7gtYPG7y+B8uTiNK4Ngd9T0FTar6Q==", "dev": true }, "@types/normalize-package-data": { @@ -1398,9 +1575,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -1419,19 +1596,19 @@ } }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true }, "acorn-jsx": { @@ -1478,16 +1655,10 @@ "dev": true, "optional": true }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "ansi-styles": { @@ -1515,13 +1686,10 @@ "dev": true }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "array-union": { "version": "2.1.0", @@ -1535,12 +1703,6 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", @@ -1639,6 +1801,12 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true } } }, @@ -1661,33 +1829,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", - "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", - "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0" + "@babel/helper-define-polyfill-provider": "^0.3.3" } }, "babel-runtime": { @@ -1826,21 +1994,23 @@ "dev": true }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -1855,7 +2025,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -1880,16 +2050,15 @@ } }, "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" } }, "buffer-crc32": { @@ -1905,15 +2074,15 @@ "dev": true }, "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, "caching-transform": { @@ -1951,21 +2120,21 @@ "dev": true }, "camelcase-keys": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.1.tgz", - "integrity": "sha512-P331lEls98pW8JLyodNWfzuz91BEDVA4VpW2/SwXnyv2K495tq1N777xzDbFgnEigfA7UIY0xa6PwR/H9jijjA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, "requires": { - "camelcase": "^6.2.0", + "camelcase": "^6.3.0", "map-obj": "^4.1.0", "quick-lru": "^5.1.1", "type-fest": "^1.2.1" }, "dependencies": { "camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "type-fest": { @@ -1977,9 +2146,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001285", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz", - "integrity": "sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==", + "version": "1.0.30001419", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001419.tgz", + "integrity": "sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==", "dev": true }, "chalk": { @@ -2103,36 +2272,24 @@ "dev": true }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "core-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.3.tgz", - "integrity": "sha512-LeLBMgEGSsG7giquSzvgBrTS7V5UL6ks3eQlUSbN8dJStlLFiRzUm5iqsRyzUB8carhfKjkJ2vzKqE6z1Vga9g==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.5.tgz", + "integrity": "sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==", "dev": true }, "core-js-compat": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.3.tgz", - "integrity": "sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==", + "version": "3.25.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", + "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", "dev": true, "requires": { - "browserslist": "^4.18.1", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "browserslist": "^4.21.4" } }, "core-util-is": { @@ -2153,15 +2310,26 @@ } }, "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "requires": { + "type-fest": "^1.0.1" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true + } + } }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -2204,9 +2372,9 @@ "dev": true }, "default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", "dev": true, "requires": { "strip-bom": "^4.0.0" @@ -2227,60 +2395,25 @@ "dev": true }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "dependencies": { - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-indent": { @@ -2311,9 +2444,9 @@ } }, "dompurify": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-1.0.11.tgz", - "integrity": "sha512-XywCTXZtc/qCX3iprD1pIklRVk/uhl8BKpkTxr+ZyMVUzSUg7wkQXRBp/euJ5J5moa1QvfpvaPQVP71z1O59dQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.0.tgz", + "integrity": "sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA==", "dev": true }, "ee-first": { @@ -2323,9 +2456,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.11.tgz", - "integrity": "sha512-2OhsaYgsWGhWjx2et8kaUcdktPbBGjKM2X0BReUCKcSCPttEY+hz2zie820JLbttU8jwL92+JJysWwkut3wZgA==", + "version": "1.4.282", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.282.tgz", + "integrity": "sha512-Dki0WhHNh/br/Xi1vAkueU5mtIc9XLHcMKB6tNfQKk+kPG0TEUjRh5QEMAUbRp30/rYNMFD1zKKvbVzwq/4wmg==", "dev": true }, "emoji-regex": { @@ -2340,15 +2473,6 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2359,31 +2483,35 @@ } }, "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.2", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" } }, "es-to-primitive": { @@ -2437,62 +2565,51 @@ "dev": true }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", + "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { - "@babel/code-frame": { - "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" - } - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -2539,10 +2656,68 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -2554,21 +2729,39 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" } }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2618,30 +2811,36 @@ } }, "eslint-plugin-jsdoc": { - "version": "32.3.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-32.3.4.tgz", - "integrity": "sha512-xSWfsYvffXnN0OkwLnB7MoDDDDjqcp46W7YlY1j7JyfAQBQ+WnGCfLov3gVNZjUGtK9Otj8mEhTZTqJu4QtIGA==", + "version": "39.3.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.3.6.tgz", + "integrity": "sha512-R6dZ4t83qPdMhIOGr7g2QII2pwCjYyKP+z0tPOfO1bbAbQyKC20Y2Rd6z1te86Lq3T7uM8bNo+VD9YFpE8HU/g==", "dev": true, "requires": { - "comment-parser": "1.1.5", - "debug": "^4.3.1", - "jsdoctypeparser": "^9.0.0", - "lodash": "^4.17.21", - "regextras": "^0.7.1", - "semver": "^7.3.5", + "@es-joy/jsdoccomment": "~0.31.0", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.4.0", + "semver": "^7.3.7", "spdx-expression-parse": "^3.0.1" }, "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "comment-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -2650,9 +2849,9 @@ } }, "eslint-plugin-svelte3": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.2.1.tgz", - "integrity": "sha512-YoBR9mLoKCjGghJ/gvpnFZKaMEu/VRcuxpSRS8KuozuEo7CdBH7bmBHa6FmMm0i4kJnOyx+PVsaptz96K6H/4Q==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-3.4.1.tgz", + "integrity": "sha512-7p59WG8qV8L6wLdl4d/c3mdjkgVglQCdv5XOTk/iNPBKXuuV+Q0eFP5Wa6iJd/G2M1qR3BkLPEzaANOqKAZczw==", "dev": true }, "eslint-scope": { @@ -2689,20 +2888,20 @@ "dev": true }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true } } @@ -2813,9 +3012,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -2888,14 +3087,14 @@ } }, "file-type": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz", - "integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.0.0.tgz", + "integrity": "sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==", "dev": true, "requires": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0", + "token-types": "^5.0.1" } }, "fill-range": { @@ -2936,6 +3135,21 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true } } }, @@ -2969,6 +3183,20 @@ "rimraf": "^3.0.2" }, "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -2981,9 +3209,9 @@ } }, "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "foreground-child": { @@ -3031,10 +3259,22 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, "gamp": { @@ -3056,14 +3296,14 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-package-type": { @@ -3095,17 +3335,36 @@ } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "glob-parent": { @@ -3145,16 +3404,16 @@ "dev": true }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" } }, @@ -3165,9 +3424,15 @@ "dev": true }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, "handlebars": { @@ -3213,9 +3478,9 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true }, "has-flag": { @@ -3224,10 +3489,19 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, "has-tostringtag": { @@ -3270,16 +3544,16 @@ "dev": true }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, "https-proxy-agent": { @@ -3324,9 +3598,9 @@ "dev": true }, "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "import-fresh": { @@ -3362,15 +3636,15 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "interactjs": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/interactjs/-/interactjs-1.2.8.tgz", - "integrity": "sha1-8o2cawgwE9quPHfwJiBPndGYPtk=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/interactjs/-/interactjs-1.3.4.tgz", + "integrity": "sha512-AQ2CdPEyHqiEEQ1FFgMBj79UEsU1+rUwSXuhOkflvB65p4iECft28SN/PvhD/Y9OtNge8aH1qTibjAi+RXQMqQ==", "dev": true }, "internal-slot": { @@ -3419,15 +3693,15 @@ } }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "requires": { "has": "^1.0.3" @@ -3482,9 +3756,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, "is-number": { @@ -3494,26 +3768,14 @@ "dev": true }, "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "requires": { "has-tostringtag": "^1.0.0" } }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -3540,10 +3802,13 @@ } }, "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } }, "is-stream": { "version": "2.0.1", @@ -3582,12 +3847,12 @@ "dev": true }, "is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2" } }, "is-windows": { @@ -3648,20 +3913,33 @@ } }, "istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, "requires": { "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", "rimraf": "^3.0.0", - "uuid": "^3.3.3" + "uuid": "^8.3.2" }, "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -3739,9 +4017,9 @@ } }, "istanbul-reports": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz", - "integrity": "sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -3769,6 +4047,12 @@ "integrity": "sha512-Bq610fSrwTwvH5d06z5oskYaX/79s0BNrKiJZjZOiXRib3iL4ZkSn/wvLwzhf3P9KeXCEpk9wlIaGui/1arOpQ==", "dev": true }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -3776,15 +4060,20 @@ "dev": true }, "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, + "jsdoc-type-pratt-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", + "integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==", + "dev": true + }, "jsdoctypeparser": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", @@ -3822,13 +4111,10 @@ "dev": true }, "json5": { - "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" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true }, "jsonfile": { "version": "4.0.0", @@ -3919,12 +4205,6 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -3944,12 +4224,12 @@ } }, "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==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "make-dir": { @@ -3980,9 +4260,9 @@ "dev": true }, "meow": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.2.tgz", - "integrity": "sha512-zbuAlN+V/sXlbGchNS9WTWjUzeamwMt/BApKCJi7B0QyZstZaMx0n4Unll/fg0njGtMdC9UP5SAscvOCLYdM+Q==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", "dev": true, "requires": { "@types/minimist": "^1.2.2", @@ -4006,9 +4286,9 @@ "dev": true }, "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -4027,9 +4307,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -4056,13 +4336,13 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime": { @@ -4072,18 +4352,18 @@ "dev": true }, "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" } }, "min-indent": { @@ -4093,18 +4373,18 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "minimist-options": { @@ -4119,27 +4399,27 @@ } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "moment": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.11.1.tgz", - "integrity": "sha1-v0AmQTZA0bgCRnzzU2B/hGTWr0c=", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "dev": true }, "moment-timezone": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.10.tgz", - "integrity": "sha1-N2YknC0xfQjwfYltMDPCb4fEris=", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "dev": true, "requires": { - "moment": ">= 2.6.0" + "moment": ">= 2.9.0" } }, "ms": { @@ -4155,9 +4435,9 @@ "dev": true }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, "nice-try": { @@ -4186,15 +4466,15 @@ } }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "node-watch": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.2.tgz", - "integrity": "sha512-g53VjSARRv1JdST0LZRIg8RiuLr1TaBbVPsVvxh0/0Ymvi0xYUjDuoqQQAWtHJQUXhiShowPT/aXKNeHBcyQsw==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", + "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", "dev": true }, "normalize-package-data": { @@ -4377,6 +4657,20 @@ "path-exists": "^4.0.0" } }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -4503,9 +4797,9 @@ } }, "object-inspect": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", - "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, "object-keys": { @@ -4515,21 +4809,21 @@ "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "requires": { "ee-first": "1.1.1" @@ -4556,16 +4850,16 @@ } }, "open-cli": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/open-cli/-/open-cli-7.0.1.tgz", - "integrity": "sha512-w//Mb5nLGTu9aIAsAehgxV+CGEkd+P3CbdoTW8y2coQ/fmGXBSrea0i4RBqGnd9prSPX1akrBYc0e3NnWM4SPA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/open-cli/-/open-cli-7.1.0.tgz", + "integrity": "sha512-Xnn/B7WY9ygV47oK+LlYp5WU8xr0tEL6SEw9jMX8n6ceElOs2AzVXFXI87/O0+b+LwLokQBZVxBMzGZHCYVppw==", "dev": true, "requires": { - "file-type": "^16.5.0", + "file-type": "^18.0.0", "get-stdin": "^9.0.0", - "meow": "^10.0.1", - "open": "^8.2.0", - "tempy": "^1.0.1" + "meow": "^10.1.5", + "open": "^8.4.0", + "tempy": "^3.0.0" } }, "optimist": { @@ -4698,9 +4992,9 @@ "dev": true }, "peek-readable": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz", - "integrity": "sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", "dev": true }, "pend": { @@ -4716,9 +5010,9 @@ "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pidtree": { @@ -4791,9 +5085,9 @@ "dev": true }, "prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true }, "process-nextick-args": { @@ -4852,10 +5146,13 @@ } }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } }, "querystring": { "version": "0.2.1", @@ -4876,13 +5173,13 @@ "dev": true }, "qunit": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.17.2.tgz", - "integrity": "sha512-17isVvuOmALzsPjiV7wFg/6O5vJYXBrQZPwocfQSSh0I/rXvfX7bKMFJ4GMVW3U4P8r2mBeUy8EAngti4QD2Vw==", + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.19.1.tgz", + "integrity": "sha512-gSGuw0vErE/rNjnlBW/JmE7NNubBlGrDPQvsug32ejYhcVFuZec9yoU0+C30+UgeCGwq6Ap89K65dMGo+kDGZQ==", "dev": true, "requires": { "commander": "7.2.0", - "node-watch": "0.7.2", + "node-watch": "0.7.3", "tiny-glob": "0.2.9" } }, @@ -4902,13 +5199,13 @@ } }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -4957,9 +5254,9 @@ } }, "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -5035,9 +5332,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -5113,29 +5410,40 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "requires": { "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==", "dev": true }, "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" } }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -5143,15 +5451,15 @@ "dev": true }, "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", "dev": true, "requires": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" } @@ -5163,15 +5471,15 @@ "dev": true }, "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -5180,7 +5488,7 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } @@ -5215,12 +5523,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -5234,13 +5536,14 @@ "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-from": { @@ -5262,6 +5565,22 @@ "dev": true, "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "rollup": { @@ -5273,6 +5592,14 @@ "@types/estree": "*", "@types/node": "*", "acorn": "^7.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } } }, "rollup-plugin-alias": { @@ -5392,6 +5719,17 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -5411,24 +5749,24 @@ "dev": true }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -5443,7 +5781,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -5455,9 +5793,9 @@ "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } @@ -5486,6 +5824,12 @@ "ms": "2.0.0" } }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -5498,6 +5842,12 @@ "statuses": ">= 1.4.0 < 2" } }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5509,19 +5859,25 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true } } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" } }, "set-blocking": { @@ -5531,9 +5887,9 @@ "dev": true }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, "shebang-command": { @@ -5552,9 +5908,9 @@ "dev": true }, "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", "dev": true }, "side-channel": { @@ -5569,9 +5925,9 @@ } }, "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "slash": { @@ -5580,55 +5936,16 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", "dev": true, + "optional": true, "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - } + "amdefine": ">=0.0.4" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -5649,6 +5966,20 @@ "which": "^2.0.1" }, "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -5687,9 +6018,9 @@ } }, "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "sprintf-js": { @@ -5699,9 +6030,9 @@ "dev": true }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, "string-width": { @@ -5727,23 +6058,25 @@ } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "string_decoder": { @@ -5786,13 +6119,13 @@ "dev": true }, "strtok3": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz", - "integrity": "sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", "dev": true, "requires": { "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.0.1" + "peek-readable": "^5.0.0" } }, "supports-color": { @@ -5804,76 +6137,11 @@ "has-flag": "^3.0.0" } }, - "table": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz", - "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true }, "temp-dir": { "version": "2.0.0", @@ -5882,22 +6150,27 @@ "dev": true }, "tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.0.0.tgz", + "integrity": "sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==", "dev": true, "requires": { - "del": "^6.0.0", - "is-stream": "^2.0.0", + "is-stream": "^3.0.0", "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" }, "dependencies": { + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true } } @@ -5911,6 +6184,22 @@ "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "text-table": { @@ -5945,15 +6234,15 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, "token-types": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.1.1.tgz", - "integrity": "sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", "dev": true, "requires": { "@tokenizer/token": "^0.3.0", @@ -6055,29 +6344,17 @@ "async": "~0.2.6", "optimist": "~0.3.5", "source-map": "~0.1.7" - }, - "dependencies": { - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "optional": true, - "requires": { - "amdefine": ">=0.0.4" - } - } } }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, @@ -6104,18 +6381,18 @@ "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, "requires": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^4.0.0" } }, "universalify": { @@ -6130,6 +6407,16 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6152,15 +6439,9 @@ "dev": true }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, "validate-npm-package-license": { diff --git a/package.json b/package.json index f934ed4..55ceb66 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@oat-sa/tao-core-sdk", - "version": "1.20.1", + "version": "1.21.0", "displayName": "TAO Core SDK", "description": "Core libraries of TAO", "homepage": "https://github.com/oat-sa/tao-core-sdk-fe#readme", @@ -11,7 +11,7 @@ "license": "GPL-2.0", "scripts": { "test": "npx qunit-testrunner", - "test:keepAlive": "npx qunit-testrunner --keepalive", + "test:keepAlive": "npx qunit-testrunner --keepalive --port 5300", "test:cov": "npm run build:cov && npx qunit-testrunner --cov", "test:dev": "NODE_ENV=development run-p test:keepAlive build:watch ", "coverage": "nyc report", @@ -41,45 +41,47 @@ "access": "public" }, "devDependencies": { - "@babel/core": "^7.15.5", - "@babel/preset-env": "^7.15.6", + "@babel/core": "^7.19.3", + "@babel/preset-env": "^7.19.4", "@oat-sa/browserslist-config-tao": "^1.0.1", "@oat-sa/eslint-config-tao": "^1.1.1", - "@oat-sa/expr-eval": "^1.3.0", + "@oat-sa/expr-eval": "^1.3.1", "@oat-sa/prettier-config": "^0.1.1", - "@oat-sa/tao-core-libs": "^0.4.3", + "@oat-sa/tao-core-libs": "^0.4.8", "@oat-sa/tao-qunit-testrunner": "1.0.3", "async": "^0.2.10", "decimal.js": "10.1.1", - "dompurify": "1.0.11", - "eslint": "^7.32.0", + "dompurify": "^2.4.0", + "eslint": "^8.25.0", + "eslint-plugin-es": "^4.1.0", + "eslint-plugin-jsdoc": "^39.3.6", "fetch-mock": "^9.4.0", "gamp": "0.2.1", - "glob": "^7.1.3", + "glob": "^8.0.3", "handlebars": "1.3.0", - "interactjs": "1.2.8", + "interactjs": "1.3.4", "jquery": "1.9.1", "jquery-mockjax": "^2.5.0", "jquery-simulate": "^1.0.2", "lodash": "2.4.1", "mime": "^2.4.2", - "moment": "2.11.1", - "moment-timezone": "0.5.10", + "moment": "^2.29.4", + "moment-timezone": "^0.5.37", "node-qunit-puppeteer": "^1.0.13", "npm-run-all": "^4.1.5", "nyc": "^15.0.1", - "open-cli": "^7.0.1", + "open-cli": "^7.1.0", "popper.js": "1.15.0", - "prettier": "^2.1.2", + "prettier": "^2.7.1", "promise-limit": "^2.7.0", - "qunit": "^2.17.2", + "qunit": "^2.19.1", "raphael": "2.3.0", "require-css": "^0.1.10", "requirejs-plugins": "^1.0.2", - "rollup": "^1.16.7", - "rollup-plugin-alias": "^1.5.1", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.0.1", + "rollup": "^1.32.1", + "rollup-plugin-alias": "^1.5.2", + "rollup-plugin-babel": "^4.4.0", + "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-istanbul": "^2.0.1", "rollup-plugin-json": "^4.0.0", "rollup-plugin-node-resolve": "^5.2.0", diff --git a/src/core/cachedStore.js b/src/core/cachedStore.js index bbd1c80..a360d70 100644 --- a/src/core/cachedStore.js +++ b/src/core/cachedStore.js @@ -24,7 +24,7 @@ import store from 'core/store'; * The default name of the key storage indexing the persisted data * @type {String} */ -var defaultKey = 'cachedData'; +const defaultKey = 'cachedData'; /** * Builds a cached store. @@ -38,8 +38,8 @@ var defaultKey = 'cachedData'; function cachedStoreFactory(storageName, storageKey) { storageKey = storageKey || defaultKey; - return store(storageName).then(function(storage) { - return storage.getItem(storageKey).then(function(data) { + return store(storageName).then(function (storage) { + return storage.getItem(storageKey).then(function (data) { // the persisted data set is always an object data = data || {}; @@ -52,7 +52,7 @@ function cachedStoreFactory(storageName, storageKey) { * @param {String} name * @returns {Object} */ - getItem: function getItem(name) { + getItem(name) { return data[name]; }, @@ -62,7 +62,7 @@ function cachedStoreFactory(storageName, storageKey) { * @param {Object} value * @returns {Promise} Returns a promise that will be resolved if the data have been successfully stored */ - setItem: function setItem(name, value) { + setItem(name, value) { data[name] = value; return storage.setItem(storageKey, data); }, @@ -72,8 +72,8 @@ function cachedStoreFactory(storageName, storageKey) { * @param {String} name * @returns {Promise} Returns a promise that will be resolved if the data have been successfully stored */ - removeItem: function removeItem(name) { - data[name] = undefined; + removeItem(name) { + data[name] = void 0; return storage.setItem(storageKey, data); }, @@ -81,7 +81,7 @@ function cachedStoreFactory(storageName, storageKey) { * Clears the full data set * @returns {Promise} Returns a promise that will be resolved if the data have been successfully erased */ - clear: function clear() { + clear() { data = {}; return storage.removeItem(storageKey); }, @@ -90,7 +90,7 @@ function cachedStoreFactory(storageName, storageKey) { * Delete the database related to the current store * @returns {Promise} with true in resolve once cleared */ - removeStore: function removeStore() { + removeStore() { data = {}; return storage.removeStore(); } diff --git a/src/core/communicator.js b/src/core/communicator.js index 4a89c3a..e0a6a4c 100644 --- a/src/core/communicator.js +++ b/src/core/communicator.js @@ -29,7 +29,7 @@ import eventifier from 'core/eventifier'; * @type {Object} * @private */ -var defaults = { +const defaults = { timeout: 30 * 1000 }; @@ -56,36 +56,34 @@ function communicatorFactory(providerName, config) { * The communicator config set * @type {Object} */ - var extendedConfig = _(config || {}) + const extendedConfig = _(config || {}) .defaults(defaults) .value(); - /** - * The communicator implementation - * @type {Object} - */ - var communicator; - /** * The function used to delegate the calls from the API to the provider. * @type {Function} */ - var delegate; + let delegate; /** * The current states of the communicator * @type {Object} */ - var states = {}; + let states = {}; /** * The selected communication provider * @type {Object} */ - var provider = communicatorFactory.getProvider(providerName); + const provider = communicatorFactory.getProvider(providerName); - // creates the implementation by setting an API and delegating calls to the provider - communicator = eventifier({ + /** + * The communicator implementation + * Creates the implementation by setting an API and delegating calls to the provider + * @type {Object} + */ + const communicator = eventifier({ /** * Initializes the communication implementation. * Sets the `ready` state. @@ -93,15 +91,13 @@ function communicatorFactory(providerName, config) { * @fires init * @fires ready */ - init: function init() { - var self = this; - + init() { if (this.getState('ready')) { return Promise.resolve(); } - return delegate('init').then(function() { - self.setState('ready').trigger('ready'); + return delegate('init').then(() => { + this.setState('ready').trigger('ready'); }); }, @@ -112,22 +108,21 @@ function communicatorFactory(providerName, config) { * @fires destroy * @fires destroyed */ - destroy: function destroy() { - var self = this; - var stepPromise; + destroy() { + let stepPromise; - if (self.getState('open')) { - stepPromise = self.close(); + if (this.getState('open')) { + stepPromise = this.close(); } else { stepPromise = Promise.resolve(); } - return stepPromise.then(function() { - return delegate('destroy').then(function() { - self.trigger('destroyed'); + return stepPromise + .then(() => delegate('destroy')) + .then(() => { + this.trigger('destroyed'); states = {}; }); - }); }, /** @@ -137,15 +132,13 @@ function communicatorFactory(providerName, config) { * @fires open * @fires opened */ - open: function open() { - var self = this; - + open() { if (this.getState('open')) { return Promise.resolve(); } - return delegate('open').then(function() { - self.setState('open').trigger('opened'); + return delegate('open').then(() => { + this.setState('open').trigger('opened'); }); }, @@ -156,10 +149,9 @@ function communicatorFactory(providerName, config) { * @fires close * @fires closed */ - close: function close() { - var self = this; - return delegate('close').then(function() { - self.setState('open', false).trigger('closed'); + close() { + return delegate('close').then(() => { + this.setState('open', false).trigger('closed'); }); }, @@ -171,16 +163,14 @@ function communicatorFactory(providerName, config) { * @fires send * @fires sent */ - send: function send(channel, message) { - var self = this; - + send(channel, message) { if (!this.getState('open')) { return Promise.reject(); } - return delegate('send', channel, message).then(function(response) { - self.trigger('sent', channel, message, response); - return Promise.resolve(response); + return delegate('send', channel, message).then(response => { + this.trigger('sent', channel, message, response); + return response; }); }, @@ -191,7 +181,7 @@ function communicatorFactory(providerName, config) { * @returns {communicator} * @throws TypeError if the name is missing or the handler is not a callback */ - channel: function channel(name, handler) { + channel(name, handler) { if (!_.isString(name) || name.length <= 0) { throw new TypeError('A channel must have a name'); } @@ -200,7 +190,7 @@ function communicatorFactory(providerName, config) { throw new TypeError('A handler must be attached to a channel'); } - this.on('channel-' + name, handler); + this.on(`channel-${name}`, handler); return this; }, @@ -209,7 +199,7 @@ function communicatorFactory(providerName, config) { * Gets the implementation config set * @returns {Object} */ - getConfig: function getConfig() { + getConfig() { return extendedConfig; }, @@ -219,7 +209,7 @@ function communicatorFactory(providerName, config) { * @param {Boolean} [state] - The state itself (default: true) * @returns {communicator} */ - setState: function setState(name, state) { + setState(name, state) { if (_.isUndefined(state)) { state = true; } @@ -232,14 +222,14 @@ function communicatorFactory(providerName, config) { * @param {String} name - The name of the state to get * @returns {Boolean} */ - getState: function getState(name) { + getState(name) { return !!states[name]; } }); // all messages comes through a message event, then each is dispatched to the right channel - communicator.on('message', function(channel, message) { - this.trigger('channel-' + channel, message); + communicator.on('message', function (channel, message) { + this.trigger(`channel-${channel}`, message); }); // use a delegate function to make a bridge between API and provider diff --git a/src/core/communicator/poll.js b/src/core/communicator/poll.js index 70102c0..cf575e6 100644 --- a/src/core/communicator/poll.js +++ b/src/core/communicator/poll.js @@ -29,7 +29,7 @@ import coreRequest from 'core/request'; * @type {Object} * @private */ -var defaults = { +const defaults = { timeout: 30 * 1000, interval: 30 * 1000, throttle: 1000 @@ -82,19 +82,17 @@ var defaults = { * @type {Object} */ const pollProvider = { - /** * The provider name */ - name : 'poll', + name: 'poll', /** * Initializes the communication implementation * @returns {Promise} */ - init: function init() { - var self = this; - var config = _.defaults(this.getConfig(), defaults); + init() { + const config = _.defaults(this.getConfig(), defaults); // validate the config if (!config.service) { @@ -106,17 +104,17 @@ const pollProvider = { this.messagesQueue = []; this.request = function request() { - return new Promise(function(resolve) { + return new Promise(resolve => { // split promises and their related messages - var promises = []; - var req = _.map(self.messagesQueue, function(msg) { + const promises = []; + const req = _.map(this.messagesQueue, function (msg) { promises.push(msg.promise); return { channel: msg.channel, message: msg.message }; }); - var defaultRequestParams = { + const defaultRequestParams = { url: config.service, method: 'POST', headers: {}, @@ -127,43 +125,43 @@ const pollProvider = { noToken: false, timeout: config.timeout }; - var extendedRequestParams = Object.assign({}, defaultRequestParams, config.requestParams); + const extendedRequestParams = Object.assign({}, defaultRequestParams, config.requestParams); // then reset the list of pending messages - self.messagesQueue = []; + this.messagesQueue = []; coreRequest(extendedRequestParams) - .then(function(response) { + .then(response => { // resolve each message promises - _.forEach(promises, function(promise, idx) { + _.forEach(promises, function (promise, idx) { promise.resolve(response.responses && response.responses[idx]); }); - if (!self.polling.is('stopped')) { + if (!this.polling.is('stopped')) { // receive server messages - _.forEach(response.messages, function(msg) { + _.forEach(response.messages, msg => { if (msg.channel) { - self.trigger('message', msg.channel, msg.message); + this.trigger('message', msg.channel, msg.message); } else { - self.trigger('message', 'malformed', msg); + this.trigger('message', 'malformed', msg); } }); } - self.trigger('receive', response); + this.trigger('receive', response); resolve(); }) - .catch(function(error) { + .catch(error => { error.source = 'network'; error.purpose = 'communicator'; // reject all message promises - _.forEach(promises, function(promise) { + _.forEach(promises, function (promise) { promise.reject(error); }); - self.trigger('error', error); + this.trigger('error', error); resolve(); }); @@ -172,20 +170,21 @@ const pollProvider = { // prepare the polling of the remote service // it will be started by the open() method + const callRequest = () => this.request(); this.polling = pollingFactory({ interval: config.interval, autoStart: false, - action: function communicatorPoll() { - var async = this.async(); - self.request().then(function() { + action() { + const async = this.async(); + callRequest().then(function () { async.resolve(); }); } }); // adjust the message sending by throttle periods - this.throttledSend = _.throttle(function() { - self.polling.next(); + this.throttledSend = _.throttle(() => { + this.polling.next(); }, config.throttle); return Promise.resolve(); @@ -195,23 +194,21 @@ const pollProvider = { * Tears down the communication implementation * @returns {Promise} */ - destroy: function destroy() { - var self = this; - var stopped; + destroy() { + let stopped; if (this.polling) { - stopped = new Promise(function(resolve) { - self.polling - .off('stop.api') - .on('stop.api', resolve) - .stop(); + stopped = new Promise(resolve => { + this.polling.off('stop.api').on('stop.api', resolve).stop(); }); } else { stopped = Promise.resolve(); } - return stopped.then(function() { - self.polling = self.throttledSend = self.messagesQueue = null; + return stopped.then(() => { + this.polling = null; + this.throttledSend = null; + this.messagesQueue = null; }); }, @@ -219,60 +216,41 @@ const pollProvider = { * Opens the connection with the remote service. * @returns {Promise} */ - open: function open() { - var self = this; - var started; - + open() { if (this.polling) { - started = new Promise(function(resolve) { - self.polling - .off('next.api') - .on('next.api', resolve) - .start() - .next(); + return new Promise(resolve => { + this.polling.off('next.api').on('next.api', resolve).start().next(); }); - } else { - started = Promise.reject(new Error('The communicator has not been properly initialized')); } - - return started; + return Promise.reject(new Error('The communicator has not been properly initialized')); }, /** * Closes the connection with the remote service. * @returns {Promise} */ - close: function close() { - var self = this; - var stopped; - + close() { if (this.polling) { - stopped = new Promise(function(resolve) { - self.polling - .off('stop.api') - .on('stop.api', resolve) - .stop(); + return new Promise(resolve => { + this.polling.off('stop.api').on('stop.api', resolve).stop(); }); - } else { - stopped = Promise.reject(new Error('The communicator has not been properly initialized')); } - - return stopped; + return Promise.reject(new Error('The communicator has not been properly initialized')); }, /** - * Sends an messages through the communication implementation + * Sends messages through the communication implementation * @param {String} channel - The name of the communication channel to use * @param {Object} message - The message to send * @returns {Promise} */ - send: function send(channel, message) { + send(channel, message) { // queue the message, it will be sent soon - var pending = { + const pending = { channel: channel, message: message }; - var promise = new Promise(function(resolve, reject) { + const promise = new Promise(function (resolve, reject) { pending.promise = { resolve: resolve, reject: reject diff --git a/src/core/customEvent.js b/src/core/customEvent.js index 5fb880b..4c0ae9a 100644 --- a/src/core/customEvent.js +++ b/src/core/customEvent.js @@ -19,8 +19,8 @@ * @author Jean-Sébastien Conan */ -var createEvent; -var dispatchEvent; +let createEvent; +let dispatchEvent; /** * Creates an event @@ -30,7 +30,7 @@ var dispatchEvent; */ if (window.CustomEvent) { createEvent = function createEventUsingCustomEvent(eventName, data) { - var event; + let event; try { event = new CustomEvent(eventName, { detail: data, @@ -45,14 +45,14 @@ if (window.CustomEvent) { }; } else if (document.createEvent) { createEvent = function createEventUsingCreateEvent(eventName, data) { - var event = document.createEvent('Event'); + const event = document.createEvent('Event'); event.initEvent(eventName, true, true); event.detail = data; return event; }; } else if (document.createEventObject) { createEvent = function createEventUsingCreateEventObject(eventName, data) { - var event = document.createEventObject(); + const event = document.createEventObject(); event.detail = data; return event; }; @@ -79,7 +79,7 @@ if (document.dispatchEvent) { } else if (document.fireEvent) { dispatchEvent = function dispatchEventUsingFireEvent(element, eventName, event) { if (element) { - element.fireEvent('on' + eventName, event); + element.fireEvent(`on${eventName}`, event); return true; } return false; @@ -97,9 +97,9 @@ if (document.dispatchEvent) { * @param {*} data * @returns {Boolean} Returns true if the event has been successfully triggered */ -var triggerCustomEvent = function triggerCustomEvent(element, eventName, data) { - var event = createEvent(eventName, data); +function triggerCustomEvent(element, eventName, data) { + const event = createEvent(eventName, data); return dispatchEvent(element, eventName, event); -}; +} export default triggerCustomEvent; diff --git a/src/core/dataProvider/proxy.js b/src/core/dataProvider/proxy.js index ba58c70..ba05bc0 100644 --- a/src/core/dataProvider/proxy.js +++ b/src/core/dataProvider/proxy.js @@ -25,7 +25,7 @@ import Promise from 'core/promise'; import providerRegistry from 'core/providerRegistry'; import tokenHandlerFactory from 'core/tokenHandler'; -var _defaults = {}; +const _defaults = {}; /** * Defines a CRUD proxy bound to a particular adapter. Each adapter will have to provide the following API: @@ -43,16 +43,16 @@ var _defaults = {}; * @returns {proxy} - The proxy instance, bound to the selected proxy adapter */ function crudProxyFactory(proxyName, middlewares) { - var proxyAdapter = crudProxyFactory.getProvider(proxyName); - var tokenHandler = tokenHandlerFactory(); - var extraParams = {}; - var initialized = false; - var initConfig; + const proxyAdapter = crudProxyFactory.getProvider(proxyName); + const tokenHandler = tokenHandlerFactory(); + let extraParams = {}; + let initialized = false; + let initConfig; /** * @typedef {proxy} */ - var proxy = eventifier({ + const proxy = eventifier({ /** * Initializes the proxy * @param {Object} [config] - Some optional config depending of implementation, @@ -62,7 +62,7 @@ function crudProxyFactory(proxyName, middlewares) { * Any error will be provided if rejected. * @fires init */ - init: function init(config) { + init(config) { initConfig = _.defaults({}, config, _defaults); /** @@ -70,7 +70,7 @@ function crudProxyFactory(proxyName, middlewares) { * @param {Promise} promise * @param {Object} params */ - return delegate('init', initConfig).then(function() { + return delegate('init', initConfig).then(function () { // If the delegate call succeed the proxy is initialized. initialized = true; return proxy; @@ -83,12 +83,12 @@ function crudProxyFactory(proxyName, middlewares) { * Any error will be provided if rejected. * @fires destroy */ - destroy: function destroy() { + destroy() { /** * @event destroy * @param {Promise} promise */ - return delegate('destroy').then(function() { + return delegate('destroy').then(function () { // The proxy is now destroyed. A call to init() is mandatory to be able to use it again. initialized = false; initConfig = null; @@ -103,7 +103,7 @@ function crudProxyFactory(proxyName, middlewares) { * Any error will be provided if rejected. * @fires create */ - create: function create(params) { + create(params) { /** * @event create * @param {Promise} promise @@ -119,7 +119,7 @@ function crudProxyFactory(proxyName, middlewares) { * Any error will be provided if rejected. * @fires read */ - read: function read(params) { + read(params) { /** * @event read * @param {Promise} promise @@ -135,7 +135,7 @@ function crudProxyFactory(proxyName, middlewares) { * Any error will be provided if rejected. * @fires write */ - write: function write(params) { + write(params) { /** * @event write * @param {Promise} promise @@ -151,7 +151,7 @@ function crudProxyFactory(proxyName, middlewares) { * Any error will be provided if rejected. * @fires remove */ - remove: function remove(params) { + remove(params) { /** * @event remove * @param {Promise} promise @@ -168,7 +168,7 @@ function crudProxyFactory(proxyName, middlewares) { * Any error will be provided if rejected. * @fires action */ - action: function action(name, params) { + action(name, params) { /** * @event action * @param {Promise} promise @@ -183,7 +183,7 @@ function crudProxyFactory(proxyName, middlewares) { * @param {Object} params - the extra parameters * @returns {proxy} */ - addExtraParams: function addExtraParams(params) { + addExtraParams(params) { if (_.isPlainObject(params)) { _.merge(extraParams, params); } @@ -194,7 +194,7 @@ function crudProxyFactory(proxyName, middlewares) { * Gets the security token handler * @returns {tokenHandler} */ - getTokenHandler: function getTokenHandler() { + getTokenHandler() { return tokenHandler; }, @@ -202,7 +202,7 @@ function crudProxyFactory(proxyName, middlewares) { * Gets the config object * @returns {Object} */ - getConfig: function getConfig() { + getConfig() { return initConfig; }, @@ -210,7 +210,7 @@ function crudProxyFactory(proxyName, middlewares) { * Gets the middlewares handler * @returns {middlewareHandler} */ - getMiddlewares: function getMidlewares() { + getMiddlewares() { return middlewares; }, @@ -219,15 +219,15 @@ function crudProxyFactory(proxyName, middlewares) { * @param {middlewareHandler} [handler] - An optional middlewares handler * @returns {proxy} */ - setMiddlewares: function setMidlewares(handler) { + setMiddlewares(handler) { middlewares = handler; return this; } }); - var delegateProxy = delegator(proxy, proxyAdapter, { + const delegateProxy = delegator(proxy, proxyAdapter, { name: 'proxy', - wrapper: function proxyWrapper(response) { + wrapper(response) { return Promise.resolve(response); } }); @@ -235,11 +235,11 @@ function crudProxyFactory(proxyName, middlewares) { /** * Gets parameters merged with extra parameters * @param {Object} [params] - * @return {Object} + * @returns {Object} * @private */ function getParams(params) { - var mergedParams = _.merge({}, params, extraParams); + const mergedParams = _.merge({}, params, extraParams); extraParams = {}; return mergedParams; } @@ -248,24 +248,24 @@ function crudProxyFactory(proxyName, middlewares) { * Delegates the call to the proxy implementation and apply the middleware. * * @param {String} fnName - The name of the delegated method to call + * @param {...*} [params] - Additional parameters * @returns {Promise} - The delegated method must return a promise * @private * @throws Error */ - function delegate(fnName) { - var request = { command: fnName, params: Array.prototype.slice.call(arguments, 1) }; + function delegate(fnName, ...params) { + const request = { command: fnName, params }; if (!initialized && fnName !== 'init') { return Promise.reject(new Error('Proxy is not properly initialized or has been destroyed!')); } - return delegateProxy - .apply(null, arguments) - .then(function(data) { + return delegateProxy(fnName, ...params) + .then(function (data) { if (middlewares) { return middlewares.apply(request, data); } return data; }) - .catch(function(err) { + .catch(function (err) { proxy.trigger('error', err); return Promise.reject(err); }); diff --git a/src/core/dataProvider/proxy/ajax.js b/src/core/dataProvider/proxy/ajax.js index 98784f1..05f5672 100644 --- a/src/core/dataProvider/proxy/ajax.js +++ b/src/core/dataProvider/proxy/ajax.js @@ -22,7 +22,7 @@ import _ from 'lodash'; import request from 'core/dataProvider/request'; import Promise from 'core/promise'; -var _defaults = { +const _defaults = { noCache: true, noToken: false, actions: {} @@ -81,14 +81,20 @@ export default { * @param {Boolean} [config.noCache] - Prevent the request to be cached by the client (default: true) * @param {Boolean} [config.noToken] - Prevent the request to be use the security token when available (default: false) */ - init: function init(config) { - // Will request the server for the wanted action. - // May reject the request if the action is not implemented. + init(config) { + /** + * Will request the server for the wanted action. + * May reject the request if the action is not implemented. + * @param {string} action + * @param {object} params + * @param {string} method + * @returns {Promise|*} + */ this.processRequest = function processRequest(action, params, method) { - var descriptor = config.actions[action]; - var headers = {}; - var tokenHandler = this.getTokenHandler(); - var token; + let descriptor = config.actions[action]; + const headers = {}; + const tokenHandler = this.getTokenHandler(); + let token; if (_.isString(descriptor)) { descriptor = { @@ -118,14 +124,14 @@ export default { } return request(descriptor.url, params, descriptor.method || method, headers) - .then(function(data) { + .then(function (data) { if (data && data.token) { tokenHandler.setToken(data.token); } return data; }) - .catch(function(err) { - var t = err.response && (err.response.token || (err.response.data && err.response.data.token)); + .catch(function (err) { + const t = err.response && (err.response.token || (err.response.data && err.response.data.token)); if (t) { tokenHandler.setToken(t); } else if (!config.noToken) { @@ -142,39 +148,43 @@ export default { /** * Cleans up the instance when destroying */ - destroy: function destroy() { + destroy() { this.processRequest = null; }, /** * Requests the server for a create action * @param {Object} params + * @returns {Promise} */ - create: function create(params) { + create(params) { return this.processRequest('create', params, 'POST'); }, /** * Requests the server for a read action * @param {Object} params + * @returns {Promise} */ - read: function read(params) { + read(params) { return this.processRequest('read', params, 'GET'); }, /** * Requests the server for a write action * @param {Object} params + * @returns {Promise} */ - write: function write(params) { + write(params) { return this.processRequest('write', params, 'POST'); }, /** * Requests the server for a remove action * @param {Object} params + * @returns {Promise} */ - remove: function remove(params) { + remove(params) { return this.processRequest('remove', params, 'GET'); }, @@ -182,8 +192,9 @@ export default { * Requests the server using a particular action * @param {String} actionName * @param {Object} params + * @returns {Promise} */ - action: function action(actionName, params) { + action(actionName, params) { return this.processRequest(actionName, params, 'POST'); } }; diff --git a/src/core/dataProvider/request.js b/src/core/dataProvider/request.js index 03d086a..9ad0a54 100644 --- a/src/core/dataProvider/request.js +++ b/src/core/dataProvider/request.js @@ -62,8 +62,7 @@ export default function request(url, data, method, headers, background, noToken) return Promise.resolve(); } else if (response.success) { return Promise.resolve(response.data); - } - else { + } else { return Promise.reject(response); // in case success:false different types of response } }) diff --git a/src/core/dataattrhandler.js b/src/core/dataattrhandler.js index 5c15166..3d76073 100644 --- a/src/core/dataattrhandler.js +++ b/src/core/dataattrhandler.js @@ -24,29 +24,29 @@ import $ from 'jquery'; import _ from 'lodash'; -var defaults = { +const defaults = { container: false, listenerEvent: 'click', useTarget: true, bubbled: false }; -var letDefaultOn = [':radio', ':checkbox']; +const letDefaultOn = [':radio', ':checkbox']; /** * Some elements (listed in letDefaultOn) need the usual action to be triggered, check that - * @param {jQueryElement} $elt + * @param {jQuery} $elt * @returns {boolean} */ -var shouldPreventDefault = function shouldPreventDefault($elt) { +function shouldPreventDefault($elt) { return !$elt.is(letDefaultOn.join(',')); -}; +} /** * This callback is used either to perform actions on data-attr element * @callback dataAttrCallback - * @params {jQueryElmement} $elt - the element that contains the data-attr - * @params {jQueryElmement} $target - the element targeted by the data-attr + * @params {jQuery} $elt - the element that contains the data-attr + * @params {jQuery} $target - the element targeted by the data-attr */ /** @@ -54,21 +54,20 @@ var shouldPreventDefault = function shouldPreventDefault($elt) { * and bound a jQuery plugin behavior. * @exports core/dataattrhandler * - * @contructor + * @constructor * @param {string} attrName - the name of the attribute, ie. `toggle` for `data-toggle` * @param {Object} options - the handler options * @param {string} options.namespace - the jQuery plugin namespace - * @param {jQueryElement|boolean} [options.container = false] - the root context to listen in + * @param {jQuery|boolean} [options.container = false] - the root context to listen in * @param {string} [options.listenerEvent = 'click'] - the event to listen on * @param {boolean} [options.preventDefault = true] - to prevent the default event to be fired * @param {string} [options.inner] - a selector inside the element to bind the event to * @param {boolean} [options.useTarget = true] - if the content of the data-attr is as target or not * @param {boolean} [options.bubbled = false] - handle the event if bubbled from a child */ -var DataAttrHandler = function construct(attrName, options) { - var self = this; +function DataAttrHandler(attrName, options) { this.options = _.defaults(options, defaults); - var selector = '[data-' + attrName + ']'; + let selector = `[data-${attrName}]`; //check namespace if (!_.has(this.options, 'namespace') || !_.isString(this.options.namespace)) { @@ -76,57 +75,57 @@ var DataAttrHandler = function construct(attrName, options) { } if (this.options.container && this.options.container.selector) { - selector = this.options.container.selector + ' ' + selector; + selector = `${this.options.container.selector} ${selector}`; } if (this.options.inner) { - selector += ' ' + this.options.inner; + selector += ` ${this.options.inner}`; } //listen for events on selector (the listening works even though the DOM changes). $(document) .off(this.options.listenerEvent, selector) - .on(this.options.listenerEvent, selector, function(e) { - var $elt = $(e.target); - if (self.options.bubbled === true || $elt.is(selector)) { - var $target, $outer; + .on(this.options.listenerEvent, selector, e => { + let $elt = $(e.target); + if (this.options.bubbled === true || $elt.is(selector)) { + let $outer; - if ($elt.data(attrName) === undefined && (self.options.inner || self.options.bubbled)) { + if (typeof $elt.data(attrName) === 'undefined' && (this.options.inner || this.options.bubbled)) { $outer = $elt; - $elt = $elt.parents('[data-' + attrName + ']'); + $elt = $elt.parents(`[data-${attrName}]`); } - $target = - self.options.useTarget === true - ? DataAttrHandler.getTarget(attrName, $elt) - : self.options.inner - ? $outer - : undefined; + let $target; + if (this.options.useTarget === true) { + $target = DataAttrHandler.getTarget(attrName, $elt); + } else if (this.options.inner) { + $target = $outer; + } //check if the plugin is already bound to the element - if (!$elt.data(self.options.namespace)) { - if (typeof self.createPlugin === 'function') { - self.createPlugin($elt, $target); + if (!$elt.data(this.options.namespace)) { + if (typeof this.createPlugin === 'function') { + this.createPlugin($elt, $target); } //for radio bind also the method call to the group... if ($elt.is(':radio') && $elt.attr('name')) { - $(':radio[name="' + $elt.attr('name') + '"]') + $(`:radio[name="${$elt.attr('name')}"]`) .not($elt) - .on(self.options.listenerEvent, function(e) { - if (typeof self.callPluginMethod === 'function') { - self.callPluginMethod($elt, $target); + .on(this.options.listenerEvent, ev => { + if (typeof this.callPluginMethod === 'function') { + this.callPluginMethod($elt, $target); } if (shouldPreventDefault($elt)) { - e.preventDefault(); + ev.preventDefault(); } }); } } //call the method bound to this event - if (typeof self.callPluginMethod === 'function') { - self.callPluginMethod($elt, $target); + if (typeof this.callPluginMethod === 'function') { + this.callPluginMethod($elt, $target); } /*else { //if there is no action to call we top listening (init plugin only) $(document).off(self.options.listenerEvent, selector); @@ -137,7 +136,7 @@ var DataAttrHandler = function construct(attrName, options) { } } }); -}; +} /** * Add the callback used to initialise the plugin, @@ -145,7 +144,7 @@ var DataAttrHandler = function construct(attrName, options) { * @param {dataAttrCallback} cb - callback * @returns {DataAttrHandler} for chaining */ -DataAttrHandler.prototype.init = function(cb) { +DataAttrHandler.prototype.init = function init(cb) { this.createPlugin = cb; return this; @@ -156,7 +155,7 @@ DataAttrHandler.prototype.init = function(cb) { * @param {dataAttrCallback} cb - callback * @returns {DataAttrHandler} for chaining */ -DataAttrHandler.prototype.trigger = function(cb) { +DataAttrHandler.prototype.trigger = function trigger(cb) { this.callPluginMethod = cb; return this; @@ -167,18 +166,18 @@ DataAttrHandler.prototype.trigger = function(cb) { * The value of the data-attr is a CSS selector, it will be applied directly or with $elt as context. * * @param {String} attrName - the name of the attribute, ie. `toggle` for `data-toggle` - * @param {jQueryElement} $elt - the element that holds the data attr - * @returns {jQueryElement} the target + * @param {jQuery} $elt - the element that holds the data attr + * @returns {jQuery} the target */ DataAttrHandler.getTarget = function getTarget(attrName, $elt) { - var relativeRegex = /^(\+|>|~|:parent|<)/; - var $target = []; - var targetSelector = $elt.attr('data-' + attrName) || $elt.attr('href') || $elt.attr('attrName'); + const relativeRegex = /^(\+|>|~|:parent|<)/; + let $target = []; + const targetSelector = $elt.attr(`data-${attrName}`) || $elt.attr('href') || $elt.attr('attrName'); if (!_.isEmpty(targetSelector)) { //try to contextualize from the current element before selcting globally - var matches = relativeRegex.exec(targetSelector); + const matches = relativeRegex.exec(targetSelector); if (matches !== null) { - var selector = targetSelector.replace(relativeRegex, ''); + const selector = targetSelector.replace(relativeRegex, ''); if (matches[0] === ':parent' || matches[0] === '<') { $target = $elt.parents(selector); } else if (matches[0] === '~') { diff --git a/src/core/databindcontroller.js b/src/core/databindcontroller.js index 87b3c16..2434dc0 100644 --- a/src/core/databindcontroller.js +++ b/src/core/databindcontroller.js @@ -21,16 +21,16 @@ import _ from 'lodash'; import DataBinder from 'core/databinder'; export default { - takeControl: function($container, options) { - var control = {}; - var model = {}; - var binderOpts = _.pick(options, function(value, key) { + takeControl($container, options) { + const control = {}; + let model = {}; + const binderOpts = _.pick(options, function (value, key) { return key === 'encoders' || key === 'filters' || key === 'templates'; }); if (options.get) { - control.get = function get(cb, errBack) { - $.getJSON(options.get).done(function(data) { + control.get = function get(cb) { + $.getJSON(options.get).done(function (data) { if (data) { model = data; new DataBinder($container, model, binderOpts).bind(); @@ -44,7 +44,7 @@ export default { } if (options.save) { control.save = function save(cb, errBack) { - var allowSave = true; + let allowSave = true; if (typeof options.beforeSave === 'function') { allowSave = !!options.beforeSave(model); } @@ -52,7 +52,7 @@ export default { $.post( options.save, { model: JSON.stringify(model) }, - function(data) { + function (data) { if (data) { if (typeof cb === 'function') { cb(data); @@ -60,7 +60,7 @@ export default { } }, 'json' - ).fail(function() { + ).fail(function () { if (typeof errBack === 'function') { errBack(); } diff --git a/src/core/delegator.js b/src/core/delegator.js index ff075dc..758a676 100644 --- a/src/core/delegator.js +++ b/src/core/delegator.js @@ -20,13 +20,11 @@ */ import _ from 'lodash'; -var defaults = { +const defaults = { name: 'provided', eventifier: true }; -var _slice = [].slice; - /** * Creates a function that delegates api calls to an provider * @param {Object} api - The api providing the calls @@ -41,12 +39,12 @@ var _slice = [].slice; * @returns {delegate} - The delegate function */ function delegator(api, provider, config) { - var extendedConfig = _.defaults(config || {}, defaults); - var eventifier = !!(extendedConfig.eventifier && api && api.trigger); - var context = extendedConfig.forward ? provider : api; - var defaultProvider = _.isFunction(extendedConfig.defaultProvider) ? extendedConfig.defaultProvider : _.noop; - var wrapper = _.isFunction(extendedConfig.wrapper) ? extendedConfig.wrapper : null; - var name = extendedConfig.name; + const extendedConfig = _.defaults(config || {}, defaults); + const eventifier = !!(extendedConfig.eventifier && api && api.trigger); + const context = extendedConfig.forward ? provider : api; + let defaultProvider = _.isFunction(extendedConfig.defaultProvider) ? extendedConfig.defaultProvider : _.noop; + const wrapper = _.isFunction(extendedConfig.wrapper) ? extendedConfig.wrapper : null; + const name = extendedConfig.name; if (extendedConfig.required) { defaultProvider = null; @@ -57,19 +55,16 @@ function delegator(api, provider, config) { * If the api supports eventifier, fires the related event * * @param {String} fnName - The name of the delegated method to call - * @param {Object} ... - Following parameters will be forwarded as is + * @param {...*} [args] - Following parameters will be forwarded as is * @returns {Object} - The delegated method must return a response * @private * @throws Error */ - function delegate(fnName) { - var response, args; + function delegate(fnName, ...args) { + let response; if (provider) { if (_.isFunction(provider[fnName]) || defaultProvider) { - // need real array of params, even if empty - args = _slice.call(arguments, 1); - // delegate the call to the provider response = (provider[fnName] || defaultProvider).apply(context, args); @@ -80,13 +75,13 @@ function delegator(api, provider, config) { // if supported fires the method related event if (eventifier) { // the response has to be provided as first argument in all events - api.trigger.apply(api, [fnName, response].concat(args)); + api.trigger(fnName, response, ...args); } } else { - throw new Error('There is no method called ' + fnName + ' in the ' + name + ' provider!'); + throw new Error(`There is no method called ${fnName} in the ${name} provider!`); } } else { - throw new Error('There is no ' + name + ' provider!'); + throw new Error(`There is no ${name} provider!`); } return response; diff --git a/src/core/encoder/array.js b/src/core/encoder/array.js index 4418d4a..f473dd7 100644 --- a/src/core/encoder/array.js +++ b/src/core/encoder/array.js @@ -19,12 +19,12 @@ import _ from 'lodash'; export default { - encode: function(modelValue, glue) { + encode(modelValue, glue) { glue = glue || ','; return _.isArray(modelValue) ? modelValue.join(glue) : modelValue; }, - decode: function(nodeValue, glue) { + decode(nodeValue, glue) { glue = glue || ','; return nodeValue.split(glue); } diff --git a/src/core/encoder/array2str.js b/src/core/encoder/array2str.js index 198dcfc..a5bd53b 100644 --- a/src/core/encoder/array2str.js +++ b/src/core/encoder/array2str.js @@ -19,12 +19,12 @@ import _ from 'lodash'; export default { - encode: function(modelValue, glue) { + encode(modelValue, glue) { glue = glue || ','; return modelValue.split(glue); }, - decode: function(nodeValue, glue) { + decode(nodeValue, glue) { glue = glue || ','; return _.isArray(nodeValue) ? nodeValue.join(glue) : nodeValue; } diff --git a/src/core/encoder/boolean.js b/src/core/encoder/boolean.js index 1aca5fa..bf5c033 100644 --- a/src/core/encoder/boolean.js +++ b/src/core/encoder/boolean.js @@ -17,11 +17,11 @@ */ export default { - encode: function(modelValue) { + encode(modelValue) { return modelValue === true ? 'true' : 'false'; }, - decode: function(nodeValue) { + decode(nodeValue) { return nodeValue === 'true'; } }; diff --git a/src/core/encoder/encoders.js b/src/core/encoder/encoders.js index bfd679c..7f9a891 100644 --- a/src/core/encoder/encoders.js +++ b/src/core/encoder/encoders.js @@ -29,35 +29,34 @@ import entity from 'core/encoder/entity'; * @param {string} name - the declaration : array(a,b) * @returns {array} of extracted args */ -var extractArgs = function extractArgs(name) { - var args = []; - var matches = []; +function extractArgs(name) { + let args = []; if (name.indexOf('(') > -1) { - matches = /\((.+?)\)/.exec(name); + const matches = /\((.+?)\)/.exec(name); if (matches && matches.length >= 1) { args = matches[1].split(','); } } return args; -}; +} /** * Extract the name from a function declaration: "foo(a,b)" return foo * @param {string} name - the declaration : foo(a,b) * @returns {string} the name */ -var extractName = function extractName(name) { +function extractName(name) { if (name.indexOf('(') > -1) { return name.substr(0, name.indexOf('(')); } return name; -}; +} /** * Provides multi sources encoding decoding * @exports core/encoder/encoders */ -var encoders = { +const encoders = { number: number, float: float, time: time, @@ -66,7 +65,7 @@ var encoders = { str2array: str2array, entity: entity, - register: function(name, encode, decode) { + register(name, encode, decode) { if (!_.isString(name)) { throw new Error('An encoder must have a valid name'); } @@ -76,29 +75,25 @@ var encoders = { if (!_.isFunction(decode)) { throw new Error('Decode must be a function'); } - this[name] = { encode: encode, decode: decode }; + this[name] = { encode, decode }; }, - encode: function(name, value) { - var encoder, args; - + encode(name, value) { name = extractName(name); if (this[name]) { - encoder = this[name]; - args = [value]; - return encoder.encode.apply(encoder, args.concat(extractArgs(name))); + const encoder = this[name]; + const args = [value, ...extractArgs(name)]; + return encoder.encode(...args); } return value; }, - decode: function(name, value) { - var decoder, args; - + decode(name, value) { name = extractName(name); if (this[name]) { - decoder = this[name]; - args = [value]; - return decoder.decode.apply(decoder, args.concat(extractArgs(name))); + const decoder = this[name]; + const args = [value, ...extractArgs(name)]; + return decoder.decode(...args); } return value; } diff --git a/src/core/encoder/entity.js b/src/core/encoder/entity.js index 995b16c..021a083 100644 --- a/src/core/encoder/entity.js +++ b/src/core/encoder/entity.js @@ -26,7 +26,7 @@ * The list of chars to be encoded * @type {String[]} */ -var guiltyChars = ['&', '<', '>', '"']; +const guiltyChars = ['&', '<', '>', '"']; export default { /** @@ -34,13 +34,13 @@ export default { * @param {String} input * @returns {String} encoded input */ - encode: function encode(input) { - input = input + ''; + encode(input) { + input = `${input}`; return input .split('') - .map(function(character) { - return guiltyChars.indexOf(character) > -1 ? '&#' + character.charCodeAt() + ';' : character; + .map(function (character) { + return guiltyChars.indexOf(character) > -1 ? `&#${character.charCodeAt()};` : character; }) .join(''); }, @@ -50,10 +50,10 @@ export default { * @param {String} input - with html entity chars * @returns {String} decoded */ - decode: function decode(input) { - input = input + ''; + decode(input) { + input = `${input}`; - return input.replace(/&#(\d+);/g, function(matches, code) { + return input.replace(/&#(\d+);/g, function (matches, code) { return String.fromCharCode(code); }); } diff --git a/src/core/encoder/float.js b/src/core/encoder/float.js index 4433ccf..10cdefe 100644 --- a/src/core/encoder/float.js +++ b/src/core/encoder/float.js @@ -17,11 +17,11 @@ */ export default { - encode: function(modelValue) { - return modelValue + ''; + encode(modelValue) { + return `${modelValue}`; }, - decode: function(nodeValue) { + decode(nodeValue) { return parseFloat(nodeValue.replace(',', '.')); } }; diff --git a/src/core/encoder/number.js b/src/core/encoder/number.js index 8577a97..948e1cc 100644 --- a/src/core/encoder/number.js +++ b/src/core/encoder/number.js @@ -17,11 +17,11 @@ */ export default { - encode: function(modelValue) { - return modelValue + ''; + encode(modelValue) { + return `${modelValue}`; }, - decode: function(nodeValue) { + decode(nodeValue) { return parseInt(nodeValue, 10); } }; diff --git a/src/core/encoder/str2array.js b/src/core/encoder/str2array.js index 47d43be..34e3326 100644 --- a/src/core/encoder/str2array.js +++ b/src/core/encoder/str2array.js @@ -31,7 +31,7 @@ export default { * @param {String} [glue = ','] - the join glue * @returns {String} the encoded string */ - encode: function encode(modelValue, glue) { + encode(modelValue, glue) { glue = glue || ','; return _.isArray(modelValue) ? modelValue.join(glue) : modelValue; }, @@ -42,9 +42,9 @@ export default { * @param {String} [glue = ','] - the split glue * @returns {String[]} the encoded array */ - decode: function decode(nodeValue, glue) { + decode(nodeValue, glue) { glue = glue || ','; - var input = _.isString(nodeValue) ? nodeValue.trim() : nodeValue; + const input = _.isString(nodeValue) ? nodeValue.trim() : nodeValue; return _.isEmpty(input) ? [] : input.split(glue); } }; diff --git a/src/core/encoder/time.js b/src/core/encoder/time.js index 6521c84..9fe3fa8 100644 --- a/src/core/encoder/time.js +++ b/src/core/encoder/time.js @@ -18,25 +18,25 @@ import moment from 'moment'; -var format = 'HH:mm:ss'; +const format = 'HH:mm:ss'; export default { - encode: function(modelValue) { + encode(modelValue) { //seconds to hh:mm:ss - var seconds = parseInt(modelValue, 10); + let seconds = parseInt(modelValue, 10); if (isNaN(seconds)) { seconds = 0; } - var time = moment.duration(seconds, 'seconds'); - var h = time.get('hours') >= 10 ? time.get('hours') : '0' + time.get('hours'); - var m = time.get('minutes') >= 10 ? time.get('minutes') : '0' + time.get('minutes'); - var s = time.get('seconds') >= 10 ? time.get('seconds') : '0' + time.get('seconds'); - return h + ':' + m + ':' + s; + const time = moment.duration(seconds, 'seconds'); + const h = time.get('hours') >= 10 ? time.get('hours') : `0${time.get('hours')}`; + const m = time.get('minutes') >= 10 ? time.get('minutes') : `0${time.get('minutes')}`; + const s = time.get('seconds') >= 10 ? time.get('seconds') : `0${time.get('seconds')}`; + return `${h}:${m}:${s}`; }, - decode: function(nodeValue) { + decode(nodeValue) { //hh:mm:ss to seconds - var time = moment(nodeValue, format); + const time = moment(nodeValue, format); return time.seconds() + time.minutes() * 60 + time.hours() * 3600; } }; diff --git a/src/core/errorHandler.js b/src/core/errorHandler.js index 4f02bd1..83620f5 100644 --- a/src/core/errorHandler.js +++ b/src/core/errorHandler.js @@ -19,7 +19,7 @@ /** * Enables you to manage errors. - * The error handler is context based, you throw errors in a conntext and + * The error handler is context based, you throw errors in a context and * then you can listen either a context or all errors. * * @example Listen for your context errors @@ -36,7 +36,7 @@ import _ from 'lodash'; /** * The error handler */ -var errorHandler = { +const errorHandler = { /** * Keep contexts */ @@ -47,7 +47,7 @@ var errorHandler = { * @param {String} name - the context name * @returns {Object} the handling context */ - getContext: function getContext(name) { + getContext(name) { if (_.isString(name) && name.length) { this._contexts[name] = this._contexts[name] || { typedHandlers: {}, @@ -63,8 +63,8 @@ var errorHandler = { * @param {String} [type] - to listen by type of errors (it uses Error.name) * @param {Function} handler - the error handler, it has the error in parameter */ - listen: function listen(name, type, handler) { - var context = this.getContext(name); + listen(name, type, handler) { + const context = this.getContext(name); if (context) { if (_.isFunction(type) && !handler) { handler = type; @@ -80,12 +80,13 @@ var errorHandler = { }, /** - * Throw an error in this ontext + * Throw an error in this context * @param {String} name - the context name * @param {Error} err - the error with a message + * @returns {boolean} */ - throw: function throwError(name, err) { - var context = this.getContext(name); + throw(name, err) { + const context = this.getContext(name); if (context) { if (_.isString(err)) { err = new Error(err); @@ -104,7 +105,7 @@ var errorHandler = { * Reset an error context * @param {String} name - the context name */ - reset: function reset(name) { + reset(name) { if (this._contexts[name]) { this._contexts = _.omit(this._contexts, name); } diff --git a/src/core/eventifier.js b/src/core/eventifier.js index 71df64f..79f200b 100644 --- a/src/core/eventifier.js +++ b/src/core/eventifier.js @@ -114,10 +114,7 @@ function getEventNames(eventNames) { if (!_.isString(eventNames) || _.isEmpty(eventNames)) { return []; } - return _(eventNames.split(/\s/g)) - .compact() - .uniq() - .value(); + return _(eventNames.split(/\s/g)).compact().uniq().value(); } /** @@ -167,7 +164,7 @@ function eventifier(target) { var stoppedEvents; //it stores all the handlers under ns/name/[handlers] - var eventHandlers = {}; + let eventHandlers = {}; /** * Get the handlers for an event type @@ -175,20 +172,20 @@ function eventifier(target) { * @param {String} [type='between'] - the type of event in before, between and after * @returns {Function[]} the handlers */ - var getHandlers = function getHandlers(eventName, type) { - var name = getName(eventName); - var ns = getNamespace(eventName); + function getHandlers(eventName, type) { + const name = getName(eventName); + const ns = getNamespace(eventName); type = type || 'between'; eventHandlers[ns] = eventHandlers[ns] || {}; eventHandlers[ns][name] = eventHandlers[ns][name] || getHandlerObject(); return eventHandlers[ns][name][type]; - }; + } /** * The API itself is just a placeholder, all methods will be delegated to a target. */ - var eventApi = { + const eventApi = { /** * Attach an handler to an event. * Calling `on` with the same eventName multiple times add callbacks: they @@ -201,7 +198,7 @@ function eventifier(target) { * @param {Function} handler - the callback to run once the event is triggered * @returns {Object} the target object */ - on: function on(eventNames, handler) { + on(eventNames, handler) { if (_.isFunction(handler)) { _.forEach(getEventNames(eventNames), eventName => { getHandlers(eventName).push(handler); @@ -229,15 +226,14 @@ function eventifier(target) { * @param {String} eventNames - the name of the event, or multiple events separated by a space * @returns {Object} the target object */ - off: function off(eventNames) { - _.forEach(getEventNames(eventNames), function(eventName) { - var name = getName(eventName); - var ns = getNamespace(eventName); - var offNamespaces; + off(eventNames) { + _.forEach(getEventNames(eventNames), function (eventName) { + const name = getName(eventName); + const ns = getNamespace(eventName); if (ns && !name) { if (ns === globalNs) { - offNamespaces = {}; + const offNamespaces = {}; offNamespaces[defaultNs] = eventHandlers[defaultNs]; eventHandlers = offNamespaces; } else { @@ -245,7 +241,7 @@ function eventifier(target) { eventHandlers[ns] = {}; } } else { - _.forEach(eventHandlers, function(nsHandlers, namespace) { + _.forEach(eventHandlers, function (nsHandlers, namespace) { if (nsHandlers[name] && (ns === defaultNs || ns === namespace)) { nsHandlers[name] = getHandlerObject(); } @@ -264,7 +260,7 @@ function eventifier(target) { * @this the target * @returns {Object} the target object */ - removeAllListeners: function removeAllListeners() { + removeAllListeners() { // full erase eventHandlers = {}; return this; @@ -277,24 +273,25 @@ function eventifier(target) { * * @this the target * @param {String} eventNames - the name of the event to trigger, or multiple events separated by a space + * @param {...*} [args] - parameters that will be passed to the listeners. * @returns {Object} the target object */ - trigger: function trigger(eventNames) { - var self = this; - var args = [].slice.call(arguments, 1); + trigger(eventNames, ...args) { + // @todo: remove self + const self = this; stoppedEvents = {}; - _.forEach(getEventNames(eventNames), function(eventName) { - var ns = getNamespace(eventName); - var name = getName(eventName); + _.forEach(getEventNames(eventNames), function (eventName) { + const ns = getNamespace(eventName); + const name = getName(eventName); //check which ns needs to be executed and then merge the handlers to be executed - var mergedHandlers = _(eventHandlers) - .filter(function(nsHandlers, namespace) { + const mergedHandlers = _(eventHandlers) + .filter(function (nsHandlers, namespace) { return nsHandlers[name] && (ns === defaultNs || ns === namespace || namespace === globalNs); }) - .reduce(function(acc, nsHandlers) { + .reduce(function (acc, nsHandlers) { acc.before = acc.before.concat(nsHandlers[name].before); acc.between = acc.between.concat(nsHandlers[name].between); acc.after = acc.after.concat(nsHandlers[name].after); @@ -309,17 +306,17 @@ function eventifier(target) { }); function triggerAllHandlers(allHandlers, name, ns) { - var event = { + const event = { name: name, namespace: ns }; if (allHandlers.before.length) { triggerBefore(allHandlers.before, event) - .then(function() { + .then(function () { triggerBetween(allHandlers, event); }) - .catch(function(err) { + .catch(function (err) { logHandlerStop('before', event, err); }); } else { @@ -328,16 +325,13 @@ function eventifier(target) { } function triggerBefore(handlers, event) { - var pHandlers, - beforeArgs = args.slice(); - // .before() handlers will get a special 'event' object as their first parameter - beforeArgs.unshift(event); + const beforeArgs = [event, ...args]; - pHandlers = handlers.map(function(handler) { + const pHandlers = handlers.map(handler => { // .before() handlers use to return false to cancel the call stack // to maintain backward compatibility, we treat this case as a rejected Promise - var value = shouldStop(event.name) ? false : handler.apply(self, beforeArgs); + const value = shouldStop(event.name) ? false : handler.apply(self, beforeArgs); return value === false ? Promise.reject() : value; }); @@ -350,10 +344,10 @@ function eventifier(target) { } else { // trigger the event handlers triggerHandlers(allHandlers.between, event) - .then(function() { + .then(function () { triggerAfter(allHandlers.after, event); }) - .catch(function(err) { + .catch(function (err) { logHandlerStop('on', event, err); }); } @@ -364,21 +358,23 @@ function eventifier(target) { logHandlerStop('on', event); // .stopEvent() has been called in an async .on() callback } else { triggerHandlers(handlers, event) - .then(function() { + .then(function () { if (shouldStop(event.name)) { logHandlerStop('after', event); // .stopEvent() has been called in an async .after() callback } }) - .catch(function(err) { + .catch(function (err) { logHandlerStop('after', event, err); }); } } function triggerHandlers(handlers, event) { - var pHandlers; - pHandlers = handlers.map(function(handler) { - return shouldStop(event.name) ? Promise.reject() : handler.apply(self, args); + const pHandlers = handlers.map(handler => { + if (shouldStop(event.name)) { + return Promise.reject(); + } + return handler.apply(self, args); }); return Promise.all(pHandlers); } @@ -387,7 +383,7 @@ function eventifier(target) { if (err instanceof Error) { logger.error(err); } - logger.trace({ err: err, event: event.name, stoppedIn: stoppedIn }, event.name + ' handlers stopped'); + logger.trace({ err: err, event: event.name, stoppedIn: stoppedIn }, `${event.name} handlers stopped`); } function shouldStop(name) { @@ -406,9 +402,9 @@ function eventifier(target) { * @param {Function} handler - the callback to run once the event is triggered * @returns {Object} the target object */ - before: function before(eventNames, handler) { + before(eventNames, handler) { if (_.isFunction(handler)) { - _.forEach(getEventNames(eventNames), function(eventName) { + _.forEach(getEventNames(eventNames), function (eventName) { getHandlers(eventName, 'before').push(handler); }); } @@ -424,9 +420,9 @@ function eventifier(target) { * @param {Function} handler - the callback to run once the event is triggered * @returns {Object} the target object */ - after: function after(eventNames, handler) { + after(eventNames, handler) { if (_.isFunction(handler)) { - _.forEach(getEventNames(eventNames), function(eventName) { + _.forEach(getEventNames(eventNames), function (eventName) { getHandlers(eventName, 'after').push(handler); }); } @@ -444,7 +440,7 @@ function eventifier(target) { * * @param {string} name - of the event to stop */ - stopEvent: function stopEvent(name) { + stopEvent(name) { if (_.isString(name) && !_.isEmpty(name.trim())) { stoppedEvents[name.trim()] = true; } @@ -462,17 +458,14 @@ function eventifier(target) { * @param {String|String[]} eventNames - the list of events to forward * @returns {Object} target - chains */ - spread: function spread(destination, eventNames) { - var self = this; + spread(destination, eventNames) { if (destination && _.isFunction(destination.trigger)) { if (_.isString(eventNames)) { eventNames = getEventNames(eventNames); } - _.forEach(eventNames, function(eventName) { - self.on(eventName, function forwardEventTo() { - var args = [eventName].concat([].slice.call(arguments)); - - destination.trigger.apply(destination, args); + _.forEach(eventNames, eventName => { + this.on(eventName, (...args) => { + destination.trigger(eventName, ...args); }); }); } @@ -490,12 +483,11 @@ function eventifier(target) { _(eventApi) .functions() - .forEach(function(method) { + .forEach(function (method) { if (_.isFunction(target[method])) { - eventifierLogger.warn('The target object has already a method named ' + method, target); + eventifierLogger.warn(`The target object has already a method named ${method}`, target); } - target[method] = function delegate() { - var args = [].slice.call(arguments); + target[method] = function delegate(...args) { return eventApi[method].apply(target, args); }; }); diff --git a/src/core/format.js b/src/core/format.js index 3456b2c..3091cbf 100644 --- a/src/core/format.js +++ b/src/core/format.js @@ -21,7 +21,7 @@ */ import _ from 'lodash'; -var pattern = /(%[sdj])/g; +const pattern = /(%[sdj])/g; /** * Enables you to format strings/message, using the pattern: @@ -35,13 +35,12 @@ var pattern = /(%[sdj])/g; * @param {...String|Number|Object} [replacements] - the replacements arguments in the order defined in the message * @returns {String} the formatted message */ -export default function(message) { - var replacements = Array.prototype.slice.call(arguments, 1); +export default function (message, ...replacements) { return _.reduce( message.match(pattern), - function(acc, match, index) { - var replacement = ''; - if (undefined !== replacements[index]) { + function (acc, match, index) { + let replacement = ''; + if ('undefined' !== typeof replacements[index]) { switch (match) { case '%d': replacement = Number(replacements[index]); @@ -49,7 +48,9 @@ export default function(message) { case '%j': try { replacement = JSON.stringify(replacements[index]).replace(/"/g, ''); - } catch (e) {} + } catch (e) { + // no fallback + } break; default: replacement = replacements[index]; diff --git a/src/core/history.js b/src/core/history.js index d61da8d..0300403 100644 --- a/src/core/history.js +++ b/src/core/history.js @@ -24,37 +24,37 @@ */ import $ from 'jquery'; -var ns = 'history'; +const ns = 'history'; /** * Browser history management * @exports core/history */ -var history = { +const history = { /** * Some browsers have the backspace button configured to run window.history.back(); we will fix this awefull behavior. * The strategy is to prevent backspace everywhere except in text and editable elements. */ - fixBrokenBrowsers: function fixBrokenBrowsers() { + fixBrokenBrowsers() { //to be completed if needed - var enabledSelector = ['input', 'textarea', '[contenteditable=true]'].join(','); + const enabledSelector = ['input', 'textarea', '[contenteditable=true]'].join(','); - var preventBackSpace = function preventBackSpace(e) { + function preventBackSpace(e) { return e.keyCode !== 8; - }; - var preventBackSpacePropag = function preventBackSpacePropag(e) { + } + function preventBackSpacePropag(e) { if (e.keyCode === 8 && !e.target.readonly && !e.target.disbaled) { e.stopPropagation(); } return true; - }; - $(document).off('.' + ns); - $(document).off('.' + ns, enabledSelector); + } + $(document).off(`.${ns}`); + $(document).off(`.${ns}`, enabledSelector); - $(document).on('keydown.' + ns, preventBackSpace); - $(document).on('keypress.' + ns, preventBackSpace); - $(document).on('keydown.' + ns, enabledSelector, preventBackSpacePropag); - $(document).on('keypress.' + ns, enabledSelector, preventBackSpacePropag); + $(document).on(`keydown.${ns}`, preventBackSpace); + $(document).on(`keypress.${ns}`, preventBackSpace); + $(document).on(`keydown.${ns}`, enabledSelector, preventBackSpacePropag); + $(document).on(`keypress.${ns}`, enabledSelector, preventBackSpacePropag); } }; diff --git a/src/core/historyRouter.js b/src/core/historyRouter.js index 26791db..bba946e 100644 --- a/src/core/historyRouter.js +++ b/src/core/historyRouter.js @@ -27,8 +27,8 @@ import eventifier from 'core/eventifier'; import statifier from 'core/statifier'; import Promise from 'core/promise'; -var historyRouter; -var location = (window.history.location || window.location) + ''; +let historyRouter; +const location = `${window.history.location || window.location}`; /** * Create an history router @@ -41,7 +41,7 @@ var location = (window.history.location || window.location) + ''; * @returns {historyRouter} the router (same instance) */ function historyRouterFactory() { - var pendingPromise; + let pendingPromise; if (historyRouter) { return historyRouter; @@ -59,7 +59,7 @@ function historyRouterFactory() { * @param {String} url * @returns {Promise} */ - redirect: function redirect(url) { + redirect(url) { return this.pushState(url); }, @@ -70,9 +70,9 @@ function historyRouterFactory() { * @param {String} url * @returns {Promise} */ - forward: function forward(url) { - var state = _.isString(url) ? { url: url } : url; - window.history.replaceState(state, '', window.location + ''); + forward(url) { + const state = _.isString(url) ? { url: url } : url; + window.history.replaceState(state, '', `${window.location}`); return this.dispatch(state, false); }, @@ -81,7 +81,7 @@ function historyRouterFactory() { * @param {String} url * @returns {Promise} */ - replace: function replace(url) { + replace(url) { return this.dispatch(url, true); }, @@ -95,9 +95,8 @@ function historyRouterFactory() { * @fires historyRouter#dispatching before dispatch * @fires historyRouter#dispatched once dispatch succeed */ - dispatch: function dispatch(state, replace) { - var self = this; - function doDispatch() { + dispatch(state, replace) { + const doDispatch = () => { if (_.isString(state)) { state = { url: state }; } @@ -109,22 +108,22 @@ function historyRouterFactory() { * @event historyRouter#dispatching * @param {String} url */ - self.setState('dispatching').trigger('dispatching', state.url); + this.setState('dispatching').trigger('dispatching', state.url); if (replace === true) { window.history.replaceState(state, '', state.url); } - return router.dispatch(state.url).then(function() { + return router.dispatch(state.url).then(() => { /** * @event historyRouter#dispatched * @param {String} url */ - self.trigger('dispatched', state.url).setState('dispatching', false); + this.trigger('dispatched', state.url).setState('dispatching', false); return state.url; }); - } + }; if (pendingPromise) { pendingPromise = pendingPromise.then(doDispatch).catch(doDispatch); @@ -141,7 +140,7 @@ function historyRouterFactory() { * @param {String} state.url - if the state is an object, then it must have an URL to dispatch * @returns {Promise} */ - pushState: function pushState(state) { + pushState(state) { if (_.isString(state)) { state = { url: state }; } @@ -155,12 +154,12 @@ function historyRouterFactory() { window.history.replaceState({ url: location }, '', location); //back & forward button, and push state - $(window).on('popstate', function() { + $(window).on('popstate', function () { historyRouter.dispatch(window.history.state); }); //listen for dispatch event in order to push a state - historyRouter.on('dispatch', function(state) { + historyRouter.on('dispatch', function (state) { if (state) { this.pushState(state); } diff --git a/src/core/logger.js b/src/core/logger.js index a9bd76f..0ccc5cb 100644 --- a/src/core/logger.js +++ b/src/core/logger.js @@ -34,7 +34,7 @@ import loggerFactory from 'core/logger/api'; * The default configuration if nothing * is found on the module config */ -var defaultConfig = { +const defaultConfig = { level: loggerFactory.levels.warn, loggers: { 'core/logger/console': { @@ -44,23 +44,22 @@ var defaultConfig = { }; //the logger providers are configured through the AMD module config -var config = _.defaults(module.config() || {}, defaultConfig); -var logger = loggerFactory('core/logger'); +const config = _.defaults(module.config() || {}, defaultConfig); +const logger = loggerFactory('core/logger'); loggerFactory.setDefaultLevel(config.level); loggerFactory.load(config.loggers); /** * Catch uncaught errors - * @param msg - error message - * @param url - current url - * @param line - line number - * @param col - column number - * @param error - error object (not all browsers support). + * @param {string} msg - error message + * @param {string} url - current url + * @param {number} line - line number + * @param {number} col - column number * @return {boolean} */ -window.onerror = function(msg, url, line, col, error) { - logger.error("Caught[via window.onerror]: '" + msg + "' from " + url + ':' + line + ':' + col); +window.onerror = function onError(msg, url, line, col) { + logger.error(`Caught[via window.onerror]: '${msg}' from ${url}:${line}:${col}`); }; /** diff --git a/src/core/logger/api.js b/src/core/logger/api.js index 6b95c85..b4db527 100644 --- a/src/core/logger/api.js +++ b/src/core/logger/api.js @@ -40,9 +40,9 @@ import moduleLoader from 'core/moduleLoader'; /** * The default level */ -var defaultLevel = 'info'; +let defaultLevel = 'info'; -var levels = { +const levels = { fatal: 60, // The service/app is going to stop or become unusable now. An operator should definitely look into this soon. error: 50, // Fatal for a particular request, but the service/app continues servicing other requests. An operator should look at this soon(ish). warn: 40, // A note on something that should probably be looked at by an operator eventually. @@ -54,12 +54,12 @@ var levels = { /** * Major version of the node-bunyan package (for compat) */ -var bunyanVersion = 0; +const bunyanVersion = 0; /** * Where messages dwells */ -var logQueue = []; +let logQueue = []; /** * Get the actual level as a string, @@ -67,19 +67,19 @@ var logQueue = []; * @param {String|Number} [level] - the level * @returns {String} the level */ -var getLevel = function getLevel(level) { +function getLevel(level) { if (typeof level === 'undefined' || (_.isString(level) && !_.has(levels, level))) { return defaultLevel; } if (_.isNumber(level)) { return ( - _.findKey(levels, function(l) { + _.findKey(levels, function (l) { return l === level; }) || defaultLevel ); } return level; -}; +} /** * Get the actual level as a number, @@ -87,7 +87,7 @@ var getLevel = function getLevel(level) { * @param {String|Number} [level] - the level * @returns {Number} the level */ -var getLevelNum = function getLevelNum(level) { +function getLevelNum(level) { if (_.isString(level) && _.has(levels, level)) { return levels[level]; } @@ -95,17 +95,17 @@ var getLevelNum = function getLevelNum(level) { return level; } return levels[defaultLevel]; -}; +} /** * Check whether the given level is above the minimum level threshold - * @param {String|Number} minlevel- the minimum level + * @param {String|Number} minLevel - the minimum level * @param {String|Number} [level] - the level to check * @returns {Boolean} */ -var checkMinLevel = function checkMinLevel(minLevel, level) { +function checkMinLevel(minLevel, level) { return getLevelNum(level) >= getLevelNum(minLevel); -}; +} /** * Creates a logger instance @@ -116,10 +116,7 @@ var checkMinLevel = function checkMinLevel(minLevel, level) { * * @returns {logger} a new logger instance */ -var loggerFactory = function loggerFactory(name, minLevel, fields) { - var baseRecord; - var logger; - +function loggerFactory(name, minLevel, fields) { if (!_.isString(name) || _.isEmpty(name)) { throw new TypeError('A logger needs a name'); } @@ -129,7 +126,7 @@ var loggerFactory = function loggerFactory(name, minLevel, fields) { minLevel = defaultLevel; } - baseRecord = _.defaults(fields || {}, { + const baseRecord = _.defaults(fields || {}, { name: name, pid: 1, // only for compat hostname: navigator.userAgent @@ -140,22 +137,19 @@ var loggerFactory = function loggerFactory(name, minLevel, fields) { * * @typedef logger */ - logger = { - + const logger = { /** * Log messages by delegating to the provider * * @param {String|Number} level - the log level - * @param {Object} [recordFields] - fields to add to the log record + * @param {Object|string} [recordFields] - fields to add to the log record * @param {String|Error} message - the message to log * @param {...String} [rest] - rest parameters if the message is formatted * @returns {logger} chains */ - log: function log(level, recordFields, message) { - var record; - var err; - var rest = []; - var time = new Date().toISOString(); + log(level, recordFields, message, ...rest) { + let err; + const time = new Date().toISOString(); //without providers or not the level, we don't log. if (loggerFactory.providers === false || !checkMinLevel(minLevel || defaultLevel, level)) { @@ -163,14 +157,14 @@ var loggerFactory = function loggerFactory(name, minLevel, fields) { } if (_.isString(recordFields) || recordFields instanceof Error) { + if ('undefined' !== typeof message) { + rest = [message, ...rest]; + } message = recordFields; recordFields = {}; - rest = [].slice.call(arguments, 2); - } else { - rest = [].slice.call(arguments, 3); } - record = { + const record = { level: getLevel(level), v: bunyanVersion, time: time @@ -187,7 +181,7 @@ var loggerFactory = function loggerFactory(name, minLevel, fields) { record.msg = err.message; record.err = err; } else { - record.msg = format.apply(null, [message].concat(rest)); + record.msg = format(message, ...rest); } _.merge(record, baseRecord, recordFields); @@ -201,10 +195,10 @@ var loggerFactory = function loggerFactory(name, minLevel, fields) { /** * Get/set the default level of the logger - * @param {String|Number} [level] - set the default level + * @param {String|Number} [value] - set the default level * @returns {String|logger} the default level as a getter or chains as a setter */ - level: function(value) { + level(value) { if (typeof value !== 'undefined') { //update the partial function minLevel = getLevelNum(value); @@ -218,9 +212,9 @@ var loggerFactory = function loggerFactory(name, minLevel, fields) { * same config + child fields * * @param {Object} [childFields] - specialized child fields - * @return {logger} the child logger + * @returns {logger} the child logger */ - child: function child(childFields) { + child(childFields) { return loggerFactory(name, minLevel, _.defaults(childFields, baseRecord)); } }; @@ -234,7 +228,7 @@ var loggerFactory = function loggerFactory(name, minLevel, fields) { }, logger ); -}; +} /** * Exposes the levels @@ -257,30 +251,37 @@ loggerFactory.load = function load(providerConfigs) { this.providers = []; //we can load the loggers dynamically - const modules = Object.keys(providerConfigs || {}) - .map( module => ({ - module, - category: 'logger' - })); - - return moduleLoader() - .addList(modules) - .load() - .then( loadedProviders => { - loadedProviders.forEach( (provider, moduleKey) => { - const providerConfig = modules[moduleKey] && modules[moduleKey].module && providerConfigs[modules[moduleKey].module]; - this.register(provider, providerConfig); - }); - }) - //flush messages that arrived before the providers are there - .then( () => this.flush()); + const modules = Object.keys(providerConfigs || {}).map(module => ({ + module, + category: 'logger' + })); + + return ( + moduleLoader() + .addList(modules) + .load() + .then(loadedProviders => { + loadedProviders.forEach((provider, moduleKey) => { + const providerConfig = + modules[moduleKey] && modules[moduleKey].module && providerConfigs[modules[moduleKey].module]; + this.register(provider, providerConfig); + }); + }) + //flush messages that arrived before the providers are there + .then(() => this.flush()) + ); }; /** * A logger provider provides with a way to log * @typedef {Object} loggerProvider * @property {Function} log - called with the message in parameter - * @param {Object} providerConfig - provider's config + */ + +/** + * Registers a logger provider. + * @param {loggerProvider} provider + * @param {object} providerConfig - provider's config * @throws TypeError */ loggerFactory.register = function register(provider, providerConfig) { @@ -301,9 +302,9 @@ loggerFactory.register = function register(provider, providerConfig) { */ loggerFactory.flush = function flush() { if (_.isArray(this.providers) && this.providers.length > 0) { - _.forEach(logQueue, function(message) { + _.forEach(logQueue, function (message) { //forward to the providers - _.forEach(loggerFactory.providers, function(provider) { + _.forEach(loggerFactory.providers, function (provider) { provider.log(message); }); }); diff --git a/src/core/logger/console.js b/src/core/logger/console.js index a6c97ff..f27d0fc 100644 --- a/src/core/logger/console.js +++ b/src/core/logger/console.js @@ -24,10 +24,10 @@ */ import _ from 'lodash'; -var config = { +let config = { level: 'info' }; -var mapping = { +const mapping = { trace: 'debug', debug: 'debug', info: 'info', @@ -38,23 +38,23 @@ var mapping = { /** * Initialize the logger API with the console provider - * @returns {logger} the logger + * @type {logger} the logger */ export default { - setConfig: function setConfig(newConfig) { + setConfig(newConfig) { config = _.defaults(newConfig || {}, config); }, - log: function log(record) { - var level = record.level; + log(record) { + const level = record.level; if (this.checkMinLevel(config.level, level)) { if (_.isFunction(window.console[mapping[level]])) { if (record.err) { - window.console[mapping[level]].call(window.console, record.name, record.msg, record.err, record); + window.console[mapping[level]](record.name, record.msg, record.err, record); } else { - window.console[mapping[level]].call(window.console, record.name, record.msg, record); + window.console[mapping[level]](record.name, record.msg, record); } } else { - window.console.log('[' + level.toUpperCase() + ']', record.name, record.msg, record); + window.console.log(`[${level.toUpperCase()}]`, record.name, record.msg, record); } } } diff --git a/src/core/logger/http.js b/src/core/logger/http.js index a3ec9bb..9abfe94 100644 --- a/src/core/logger/http.js +++ b/src/core/logger/http.js @@ -24,21 +24,19 @@ */ import _ from 'lodash'; import $ from 'jquery'; -import url from 'util/url'; +import urlHelper from 'util/url'; -var defaultConfig = { - url: url.route('log', 'Log', 'tao'), +const defaultConfig = { + url: urlHelper.route('log', 'Log', 'tao'), level: 'warning', delay: 500 //milliseconds of delay to flush }; -var config; -var logQueue = []; -var debouncedFlush; +let config = Object.assign({}, defaultConfig); +let logQueue = []; /** * Push log message into log queue * @param {Object} message - log message - * @returns {Promise} resolves when the message is stored */ function push(message) { logQueue.push(message); @@ -46,10 +44,9 @@ function push(message) { /** * Flush the log messages store and retrieve the data - * @returns {Promise} resolves with the flushed data */ function flush() { - var messages = logQueue; + const messages = logQueue; logQueue = []; send(messages); } @@ -66,32 +63,32 @@ function send(messages) { data: { messages: JSON.stringify(messages) }, dataType: 'json', global: false, - error: function() { - _.forEach(flush, function(message) { + error() { + _.forEach(flush, function (message) { push(message); }); } }); } -debouncedFlush = _.debounce(flush, defaultConfig.delay); +let debouncedFlush = _.debounce(flush, defaultConfig.delay); /** - * @returns {logger} the logger + * @type {logger} the logger */ export default { - setConfig: function setConfig(newConfig) { + setConfig(newConfig) { config = _.defaults(newConfig || {}, defaultConfig); if (_.isArray(config.url)) { - config.url = url.route.apply(url, config.url); + config.url = urlHelper.route(...config.url); } debouncedFlush = _.debounce(flush, config.delay); }, /** * log message - * @param {Object} record - See core/logger/api::log() method + * @param {Object} message - See core/logger/api::log() method */ - log: function log(message) { + log(message) { if (this.checkMinLevel(config.level, message.level)) { push(message); debouncedFlush(); diff --git a/src/core/middleware.js b/src/core/middleware.js index 2f01039..aa34cbb 100644 --- a/src/core/middleware.js +++ b/src/core/middleware.js @@ -34,24 +34,31 @@ function middlewareFactory() { * The registered middlewares * @type {Object} */ - var middlewares = {}; + const middlewares = {}; /** * @typedef {middlewareHandler} */ - var middlewareHandler = eventifier({ + const middlewareHandler = eventifier({ /** * Add a middleware * @param {String} [command] The command queue in which add the middleware (default: 'all') - * @param {Function} [callback] A middleware callback. Must accept 2 parameters (request and response) and can return a promise. + * @param {...Function} [callback] A middleware callback. Must accept 2 parameters (request and response) and can return a promise. * @returns {proxy} */ - use: function use(command) { - var queue = command && _.isString(command) ? command : 'all'; - var list = middlewares[queue] || []; + use(command, ...callback) { + let queue = 'all'; + + if (command && _.isString(command)) { + queue = command; + } else { + callback = [command, ...callback]; + } + + const list = middlewares[queue] || []; middlewares[queue] = list; - _.forEach(arguments, function(cb) { + _.forEach(callback, function (cb) { if (_.isFunction(cb)) { list.push(cb); @@ -76,17 +83,17 @@ function middlewareFactory() { * @param {Object} [context] - An optional context object to apply on middlewares * @returns {Promise} */ - apply: function apply(request, response, context) { - var stack = getMiddlewares(request.command); - var pointer = 0; + apply(request, response, context) { + const stack = getMiddlewares(request.command); + let pointer = 0; // apply each middleware in series, then resolve or reject the promise - return new Promise(function(resolve, reject) { + return new Promise(function (resolve, reject) { function next() { - var middleware = stack[pointer++]; + const middleware = stack[pointer++]; if (middleware) { Promise.resolve(middleware.call(context, request, response)) - .then(function(res) { + .then(function (res) { if (res !== false) { next(); } else { @@ -101,7 +108,7 @@ function middlewareFactory() { next(); }) - .then(function() { + .then(function () { // handle implicit error from response descriptor if (response.success === false) { return Promise.reject(response); @@ -117,7 +124,7 @@ function middlewareFactory() { return response; }) - .catch(function(err) { + .catch(function (err) { /** * @event failed * @param {Object} request - The request descriptor @@ -137,7 +144,7 @@ function middlewareFactory() { * @returns {Array} */ function getMiddlewares(queue) { - var list = middlewares[queue] || []; + let list = middlewares[queue] || []; if (middlewares.all) { list = list.concat(middlewares.all); } diff --git a/src/core/mimetype.js b/src/core/mimetype.js index 983d027..a5c8fb5 100644 --- a/src/core/mimetype.js +++ b/src/core/mimetype.js @@ -27,7 +27,7 @@ import extensions from 'core/mimetype/extensions.json'; * Helps you to retrieve file type and categories based on a file mime type * @exports core/mimetype */ -var mimetypeHelper = { +const mimetypeHelper = { /** * Gets the MIME type of a resource. * @@ -38,20 +38,20 @@ var mimetypeHelper = { * the second is the MIME type if the request succeed. * @returns {mimetype} */ - getResourceType: function getResourceType(url, callback) { + getResourceType(url, callback) { $.ajax({ type: 'HEAD', async: true, url: url, - success: function onSuccess(message, text, jqXHR) { - var mime = jqXHR.getResponseHeader('Content-Type'); + success(message, text, jqXHR) { + const mime = jqXHR.getResponseHeader('Content-Type'); if (callback) { callback(null, mime); } }, - error: function onError(jqXHR) { - var error = jqXHR.status || 404; + error(jqXHR) { + const error = jqXHR.status || 404; if (callback) { callback(error); } @@ -67,10 +67,9 @@ var mimetypeHelper = { * @param {String} [file.name] - the file name * @returns {String} the type */ - getFileType: function getFileType(file) { - var type; - var mime = file.mime; - var ext; + getFileType(file) { + let type; + const mime = file.mime; if (mime) { //lookup for exact mime @@ -88,7 +87,7 @@ var mimetypeHelper = { //try by extension if (!type) { - ext = getFileExtension(file.name); + const ext = getFileExtension(file.name); if (ext) { type = _.findKey(categories, { extensions: [ext] @@ -102,15 +101,15 @@ var mimetypeHelper = { /** * Check if a given mime type matches some filters * @param {String} type - the mime type - * @param {String[]} filters - the validTypes + * @param {String[]} validTypes - the validTypes * @returns {String} category */ - match: function match(type, validTypes) { + match(type, validTypes) { // Under rare circumstances a browser may report the mime type // with quotes (e.g. "application/foo" instead of application/foo) - var checkType = type.replace(/^["']+|['"]+$/g, ''); + const checkType = type.replace(/^["']+|['"]+$/g, ''); - var starType = checkType.replace(/\/.*$/, '/*'); + const starType = checkType.replace(/\/.*$/, '/*'); return _.contains(validTypes, checkType) || _.contains(validTypes, starType); }, @@ -120,7 +119,7 @@ var mimetypeHelper = { * @param {String} type * @returns {String} category */ - getCategory: function getCategory(type) { + getCategory(type) { if (categories[type]) { return categories[type].category; } @@ -135,18 +134,17 @@ var mimetypeHelper = { * @param {File} file * @returns {String} the mime type */ - getMimeType: function getMimeType(file) { - var ext, - type = file.type, - category = mimetypeHelper.getFileType({ - name: file.name, - mime: type - }); + getMimeType(file) { + const type = file.type; + const category = mimetypeHelper.getFileType({ + name: file.name, + mime: type + }); if (type && !type.match(/invalid/) && category !== 'generic') { return type; } else { - ext = getFileExtension(file.name); + const ext = getFileExtension(file.name); if (ext && extensions[ext]) { return extensions[ext]; } @@ -162,7 +160,7 @@ var mimetypeHelper = { * @returns {String} */ function getFileExtension(fileName) { - var extMatch = fileName.match(/\.([0-9a-z]+)(?:[\?#]|$)/i); + const extMatch = fileName.match(/\.([0-9a-z]+)(?:[?#]|$)/i); if (extMatch && extMatch.length > 1) { return extMatch[1]; } diff --git a/src/core/moduleLoader.js b/src/core/moduleLoader.js index a827643..ba11522 100644 --- a/src/core/moduleLoader.js +++ b/src/core/moduleLoader.js @@ -52,35 +52,35 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { /** * The list of loaded modules */ - var loaded = {}; + const loaded = {}; /** * Retains the AMD modules to load */ - var modules = {}; + const modules = {}; /** * The modules to exclude */ - var excludes = []; + const excludes = []; /** * Bundles to require */ - var bundles = []; + const bundles = []; /** * The module loader * @typedef {loader} */ - var loader = { + const loader = { /** * Adds a list of dynamic modules to load * @param {moduleDefinition[]} moduleList - the modules to add * @returns {loader} chains * @throws {TypeError} misuse */ - addList: function addList(moduleList) { + addList(moduleList) { _.forEach(moduleList, this.add, this); return this; }, @@ -125,7 +125,7 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { * @returns {loader} chains * @throws {TypeError} misuse */ - append: function append(def) { + append(def) { return this.add(_.merge({ position: 'append' }, def)); }, @@ -135,7 +135,7 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { * @returns {loader} chains * @throws {TypeError} misuse */ - prepend: function prepend(def) { + prepend(def) { return this.add(_.merge({ position: 'prepend' }, def)); }, @@ -145,7 +145,7 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { * @returns {loader} chains * @throws {TypeError} misuse */ - remove: function remove(module) { + remove(module) { excludes.push(module); return this; }, @@ -156,24 +156,17 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { * @returns {Promise} */ load(loadBundles) { - var self = this; - //compute the providers dependencies - var dependencies = _(modules) - .values() - .flatten() - .uniq() - .difference(excludes) - .value(); + const dependencies = _(modules).values().flatten().uniq().difference(excludes).value(); /** * Loads AMD modules and wrap then into a Promise * @param {String[]} amdModules - the list of modules to require * @returns {Promise} resolves with the loaded modules */ - var loadModules = function loadModules(amdModules = []) { + const loadModules = (amdModules = []) => { if (_.isArray(amdModules) && amdModules.length) { - if (typeof define === 'function' && define.amd) { + if (typeof window.define === 'function' && window.define.amd) { return new Promise((resolve, reject) => { window.require( amdModules, @@ -184,13 +177,9 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { ); }); } else { - return Promise - .all( amdModules.map( module => ( - //eslint-disable - import(/* webpackIgnore: true */ `${module}`) - //eslint-enable - ))) - .then( loadedModules => Promise.resolve(...loadModules) ); + return Promise.all( + amdModules.map(module => import(/* webpackIgnore: true */ `${module}`)) + ).then(loadedModules => loadedModules.map(module => module.default)); } } return Promise.resolve(); @@ -200,10 +189,9 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { // 2. load dependencies // 3. add them to the modules list return loadModules(loadBundles ? bundles : []) - .then( () => loadModules(dependencies) ) - .then( loadedModules => { + .then(() => loadModules(dependencies)) + .then(loadedModules => { _.forEach(dependencies, (dependency, index) => { - const module = loadedModules[index]; const category = _.findKey(modules, val => _.contains(val, dependency)); @@ -216,7 +204,7 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { loaded[category].push(module); } }); - return self.getModules(); + return this.getModules(); }); }, @@ -226,23 +214,19 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { * @param {String} [category] - to get the modules for a given category, if not set, we get everything * @returns {Object[]} the modules */ - getModules: function getModules(category) { + getModules(category) { if (_.isString(category)) { return loaded[category] || []; } - return _(loaded) - .values() - .flatten() - .uniq() - .value(); + return _(loaded).values().flatten().uniq().value(); }, /** * Get the module categories * @returns {String[]} the categories */ - getCategories: function getCategories() { + getCategories() { return _.keys(loaded); } }; @@ -250,7 +234,7 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { validate = _.isFunction(validate) ? validate : _.isPlainObject; //verify and add the required modules - _.forEach(requiredModules, function(moduleList, category) { + _.forEach(requiredModules, function (moduleList, category) { if (_.isEmpty(category) || !_.isString(category)) { throw new TypeError('Modules must belong to a category'); } @@ -274,10 +258,8 @@ export default function moduleLoaderFactory(requiredModules, validate, specs) { if (specs) { _(specs) .functions() - .forEach(function(method) { - loader[method] = function delegate() { - return specs[method].apply(loader, [].slice.call(arguments)); - }; + .forEach(function (method) { + loader[method] = (...args) => specs[method].apply(loader, args); }); } diff --git a/src/core/mouseEvent.js b/src/core/mouseEvent.js index 9971bbc..2f3aad0 100644 --- a/src/core/mouseEvent.js +++ b/src/core/mouseEvent.js @@ -98,7 +98,7 @@ if (document.dispatchEvent) { } else if (document.fireEvent) { dispatchEvent = function dispatchEventUsingFireEvent(element, eventName, event) { if (element) { - element.fireEvent('on' + eventName, event); + element.fireEvent(`on${eventName}`, event); return true; } return false; diff --git a/src/core/plugin.js b/src/core/plugin.js index b6cb6ca..a6f0f3c 100644 --- a/src/core/plugin.js +++ b/src/core/plugin.js @@ -69,8 +69,6 @@ import Promise from 'core/promise'; * @returns {Function} - the generated plugin factory */ function pluginFactory(provider, defaults) { - var pluginName; - if ( !_.isPlainObject(provider) || !_.isString(provider.name) || @@ -80,7 +78,7 @@ function pluginFactory(provider, defaults) { throw new TypeError('A plugin should be defined at least by a name property and an init method'); } - pluginName = provider.name; + const pluginName = provider.name; defaults = defaults || {}; @@ -93,11 +91,11 @@ function pluginFactory(provider, defaults) { * @returns {plugin} the plugin instance */ return function instanciatePlugin(host, areaBroker, config) { - var plugin, delegate; + let delegate; - var states = {}; + let states = {}; - var pluginContent = {}; + let pluginContent = {}; //basic checking for the host if (!_.isObject(host) || !_.isFunction(host.on) || !_.isFunction(host.trigger)) { @@ -110,17 +108,13 @@ function pluginFactory(provider, defaults) { * The plugin instance. * @typedef {plugin} */ - plugin = { + const plugin = { /** * Called when the host is installing the plugins * @returns {Promise} to resolve async delegation */ - install: function install() { - var self = this; - - return delegate('install').then(function() { - self.trigger('install'); - }); + install() { + return delegate('install').then(() => this.trigger('install')); }, /** @@ -128,58 +122,43 @@ function pluginFactory(provider, defaults) { * @param {Object|*} [content] the plugin content * @returns {Promise} to resolve async delegation */ - init: function init(content) { - var self = this; + init(content) { states = {}; if (content) { pluginContent = content; } - return delegate('init', content).then(function() { - self.setState('init', true).trigger('init'); - }); + return delegate('init', content).then(() => this.setState('init', true).trigger('init')); }, /** * Called when the host is rendering * @returns {Promise} to resolve async delegation */ - render: function render() { - var self = this; - - return delegate('render').then(function() { - self.setState('ready', true) - .trigger('render') - .trigger('ready'); - }); + render() { + return delegate('render').then(() => this.setState('ready', true).trigger('render').trigger('ready')); }, /** * Called when the host is finishing * @returns {Promise} to resolve async delegation */ - finish: function finish() { - var self = this; - - return delegate('finish').then(function() { - self.setState('finish', true).trigger('finish'); - }); + finish() { + return delegate('finish').then(() => this.setState('finish', true).trigger('finish')); }, /** * Called when the host is destroying * @returns {Promise} to resolve async delegation */ - destroy: function destroy() { - var self = this; - - return delegate('destroy').then(function() { + destroy() { + return delegate('destroy').then(() => { config = {}; states = {}; - self.setState('init', false); - self.trigger('destroy'); + this.setState('init', false); + this.trigger('destroy'); }); }, @@ -192,9 +171,8 @@ function pluginFactory(provider, defaults) { * @param {...} args - additional args are given to the event * @returns {plugin} chains */ - trigger: function trigger(name) { - var args = [].slice.call(arguments, 1); - host.trigger.apply(host, ['plugin-' + name + '.' + pluginName, plugin].concat(args)); + trigger(name, ...args) { + host.trigger(`plugin-${name}.${pluginName}`, plugin, ...args); return this; }, @@ -202,7 +180,7 @@ function pluginFactory(provider, defaults) { * Get the plugin host * @returns {host} the plugins's host */ - getHost: function getHost() { + getHost() { return host; }, @@ -210,7 +188,7 @@ function pluginFactory(provider, defaults) { * Get the host's areaBroker * @returns {areaBroker} the areaBroker */ - getAreaBroker: function getAreaBroker() { + getAreaBroker() { return areaBroker; }, @@ -218,7 +196,7 @@ function pluginFactory(provider, defaults) { * Get the config * @returns {Object} config */ - getConfig: function getConfig() { + getConfig() { return config; }, @@ -228,7 +206,7 @@ function pluginFactory(provider, defaults) { * @param {*} [value] - the config value if name is an entry * @returns {plugin} chains */ - setConfig: function setConfig(name, value) { + setConfig(name, value) { if (_.isPlainObject(name)) { config = _.defaults(name, config); } else { @@ -243,7 +221,7 @@ function pluginFactory(provider, defaults) { * @param {String} name - the state name * @returns {Boolean} if active, false if not set */ - getState: function getState(name) { + getState(name) { return !!states[name]; }, @@ -255,7 +233,7 @@ function pluginFactory(provider, defaults) { * @returns {plugin} chains * @throws {TypeError} if the state name is not a valid string */ - setState: function setState(name, active) { + setState(name, active) { if (!_.isString(name) || _.isEmpty(name)) { throw new TypeError('The state must have a name'); } @@ -269,7 +247,7 @@ function pluginFactory(provider, defaults) { * * @returns {Object|*} the content */ - getContent: function getContent() { + getContent() { return pluginContent; }, @@ -279,7 +257,7 @@ function pluginFactory(provider, defaults) { * @param {Object|*} [content] - the plugin content * @returns {plugin} chains */ - setContent: function setContent(content) { + setContent(content) { pluginContent = content; return this; @@ -290,7 +268,7 @@ function pluginFactory(provider, defaults) { * * @returns {String} the name */ - getName: function getName() { + getName() { return pluginName; }, @@ -298,48 +276,32 @@ function pluginFactory(provider, defaults) { * Shows the component related to this plugin * @returns {Promise} to resolve async delegation */ - show: function show() { - var self = this; - - return delegate('show').then(function() { - self.setState('visible', true).trigger('show'); - }); + show() { + return delegate('show').then(() => this.setState('visible', true).trigger('show')); }, /** * Hides the component related to this plugin * @returns {Promise} to resolve async delegation */ - hide: function hide() { - var self = this; - - return delegate('hide').then(function() { - self.setState('visible', false).trigger('hide'); - }); + hide() { + return delegate('hide').then(() => this.setState('visible', false).trigger('hide')); }, /** * Enables the plugin * @returns {Promise} to resolve async delegation */ - enable: function enable() { - var self = this; - - return delegate('enable').then(function() { - self.setState('enabled', true).trigger('enable'); - }); + enable() { + return delegate('enable').then(() => this.setState('enabled', true).trigger('enable')); }, /** * Disables the plugin * @returns {Promise} to resolve async delegation */ - disable: function disable() { - var self = this; - - return delegate('disable').then(function() { - self.setState('enabled', false).trigger('disable'); - }); + disable() { + return delegate('disable').then(() => this.setState('enabled', false).trigger('disable')); } }; @@ -352,14 +314,14 @@ function pluginFactory(provider, defaults) { */ delegate = delegator(plugin, provider, { eventifier: false, - wrapper: function pluginWrapper(response) { + wrapper(response) { return Promise.resolve(response); } }); //add a convenience method that alias getHost using the hostName if (_.isString(defaults.hostName) && !_.isEmpty(defaults.hostName)) { - plugin['get' + defaults.hostName.charAt(0).toUpperCase() + defaults.hostName.slice(1)] = plugin.getHost; + plugin[`get${defaults.hostName.charAt(0).toUpperCase()}${defaults.hostName.slice(1)}`] = plugin.getHost; } return plugin; diff --git a/src/core/pluginifier.js b/src/core/pluginifier.js index 7e502d8..e81aab8 100644 --- a/src/core/pluginifier.js +++ b/src/core/pluginifier.js @@ -32,7 +32,7 @@ import _ from 'lodash'; /** * Abstract plugin used to provide common behavior to the plugins */ -var basePlugin = { +const basePlugin = { /** * Set options of the plugin * @@ -40,11 +40,12 @@ var basePlugin = { * @param {String} dataNs - the data namespace * @param {String} ns - the event namespace * @param {Object} options - the options to set + * @returns {jQuery} */ - options: function(dataNs, ns, options) { - return this.each(function() { - var $elt = $(this); - var currentOptions = $elt.data(dataNs); + options(dataNs, ns, options) { + return this.each(function () { + const $elt = $(this); + const currentOptions = $elt.data(dataNs); if (currentOptions) { $elt.data(dataNs, _.merge(currentOptions, options)); } @@ -60,14 +61,15 @@ var basePlugin = { * @example $('selector').pluginName('disable'); * @param {String} dataNs - the data namespace * @param {String} ns - the event namespace + * @returns {jQuery} * @fires basePlugin#disable.ns */ - disable: function(dataNs, ns) { - return this.each(function() { - var $elt = $(this); - var options = $elt.data(dataNs); + disable(dataNs, ns) { + return this.each(function () { + const $elt = $(this); + const options = $elt.data(dataNs); if (options) { - $elt.addClass(options.disableClass || 'disabled').trigger('disable.' + ns); + $elt.addClass(options.disableClass || 'disabled').trigger(`disable.${ns}`); } }); }, @@ -79,14 +81,15 @@ var basePlugin = { * @example $('selector').pluginName('enable'); * @param {String} dataNs - the data namespace * @param {String} ns - the event namespace + * @returns {jQuery} * @fires basePlugin#enable.ns */ - enable: function(dataNs, ns) { - return this.each(function() { - var $elt = $(this); - var options = $elt.data(dataNs); + enable(dataNs, ns) { + return this.each(function () { + const $elt = $(this); + const options = $elt.data(dataNs); if (options) { - $elt.removeClass(options.disableClass || 'disabled').trigger('enable.' + ns); + $elt.removeClass(options.disableClass || 'disabled').trigger(`enable.${ns}`); } }); } @@ -96,26 +99,27 @@ var basePlugin = { * Helps you to create a jQuery plugin, the Cards way * @exports core/pluginifer */ -var Pluginifier = { +const Pluginifier = { /** - * Regsiter a new jQuery plugin, the Cards way - * @param {string} pluginName - the name of the plugin to regsiter. ie $('selector').pluginName(); + * Register a new jQuery plugin, the Cards way + * @param {string} pluginName - the name of the plugin to register. ie $('selector').pluginName(); * @param {Object} plugin - the plugin as a plain object * @param {Function} plugin.init - the entry point of the plugin is always an init method * @param {Object} [config] - plugin configuration * @param {String} [config.ns = pluginName] - plugin namespace (used for events and data-attr) * @param {String} [config.dataNs = ui.pluginName] - plugin namespace (used for events and data-attr) * @param {Array} [config.expose] - list of methods to expose + * @returns {*} */ - register: function(pluginName, plugin, config) { + register(pluginName, plugin, config) { config = config || {}; - var ns = config.ns || pluginName.toLowerCase(); - var dataNs = config.dataNs || 'ui.' + ns; - var expose = config.expose || []; + const ns = config.ns || pluginName.toLowerCase(); + const dataNs = config.dataNs || `ui.${ns}`; + const expose = config.expose || []; //checks if (_.isFunction($.fn[pluginName])) { - return $.error('A plugin named ' + pluginName + ' is already registered'); + return $.error(`A plugin named ${pluginName} is already registered`); } if (!_.isPlainObject(plugin) || !_.isFunction(plugin.init)) { return $.error('The object to register as a jQuery plugin must be a plain object with an `init` method.'); @@ -124,7 +128,7 @@ var Pluginifier = { //configure and augments the plugin _.assign( plugin, - _.transform(basePlugin, function(result, prop, key) { + _.transform(basePlugin, function (result, prop, key) { if (_.isFunction(prop)) { result[key] = _.partial(basePlugin[key], dataNs, ns); } @@ -132,23 +136,22 @@ var Pluginifier = { ); //set up public methods to wrap privates the jquery way - _.forEach(expose, function(toExposeName) { - var privateMethod = toExposeName; - var publicMethod = toExposeName; + _.forEach(expose, function (toExposeName) { + let privateMethod = toExposeName; + let publicMethod = toExposeName; if (!/^_/.test(expose)) { - privateMethod = '_' + privateMethod; + privateMethod = `_${privateMethod}`; } else { publicMethod = publicMethod.replace(/^_/, ''); } //do not override if exists if (_.isFunction(plugin[privateMethod]) && !_.isFunction(plugin[publicMethod])) { - plugin[publicMethod] = function() { - var returnValue; - var args = Array.prototype.slice.call(arguments, 0); - this.each(function() { + plugin[publicMethod] = function (...args) { + let returnValue; + this.each(function () { //call plugin._method($element, [remainingArgs...]); - returnValue = plugin[privateMethod].apply(plugin, [$(this)].concat(args)); + returnValue = plugin[privateMethod]($(this), ...args); }); return returnValue || this; }; @@ -158,17 +161,17 @@ var Pluginifier = { // map $('selector').pluginName() to plugin.init // map $('selector').pluginName('method', params) to plugin.method(params) to plugin._method($elt, params); // disable direct call to private (starting with _) methods - $.fn[pluginName] = function(method) { + $.fn[pluginName] = function (method, ...args) { if (plugin[method]) { if (/^_/.test(method)) { - $.error('Trying to call a private method `' + method + '`'); + $.error(`Trying to call a private method \`${method}\``); } else { - return plugin[method].apply(this, Array.prototype.slice.call(arguments, 1)); + return plugin[method].apply(this, args); } } else if (typeof method === 'object' || !method) { - return plugin.init.apply(this, arguments); + return plugin.init.call(this, method, ...args); } - $.error('Method ' + method + ' does not exist on plugin'); + $.error(`Method ${method} does not exist on plugin`); }; } }; diff --git a/src/core/polling.js b/src/core/polling.js index 6fe07e1..dc380dd 100644 --- a/src/core/polling.js +++ b/src/core/polling.js @@ -123,7 +123,7 @@ import eventifier from 'core/eventifier'; * @type {Number} * @private */ -var _defaultInterval = 60 * 1000; +const _defaultInterval = 60 * 1000; /** * Create a polling manager for a particular action @@ -133,86 +133,36 @@ var _defaultInterval = 60 * 1000; * @param {Number|String} [config.max] - Set a max number of iterations, after what the polling is stopped. * @param {Boolean} [config.autoStart] - Whether or not the polling should start immediately * @param {Object} [config.context] - An optional context to apply on each action call + * @param {number} pollingInterval - The minimal time between two iterations (to be set when the first parameter is a function) * @returns {polling} */ -var pollingFactory = function pollingFactory(config) { - var timer, promise, interval, max, iter, action, context, autoStart; - var state = {}; - - /** - * Fires a new timer - */ - var startTimer = function startTimer() { - timer = setTimeout(iteration, interval); - state.stopped = false; - state.pending = true; - }; - - /** - * Stops the current timer - */ - var stopTimer = function stopTimer() { - clearTimeout(timer); - timer = null; - state.stopped = true; - state.pending = false; - }; - - /** - * Runs an iteration of the polling loop - */ - var iteration = function iteration() { - // prevent more iterations than needed to be ran - if (max && iter >= max) { - // breaks the polling - polling.stop(); - return; - } - - // count the iteration - iter = (iter || 0) + 1; - state.processing = true; - state.pending = false; - - /** - * Notifies the action is about to be called - * @event polling#call - */ - polling.trigger('call'); - - // process the action in the right context - action.call(context, polling); - - // next iteration in synchronous mode - if (!promise && !state.stopped) { - state.processing = false; - startTimer(); - } - }; +function pollingFactory(config, pollingInterval = _defaultInterval) { + let timer, promise, interval, max, iter, action, context, autoStart; + const state = {}; /** * Defines the polling manager * @type {Object} */ - var polling = { + const polling = { /** * Gets the current action into asynchronous mode. * The next iteration won't be executed until the resolve method has been called. * However if the reject method is called, the polling is then stopped! * @returns {Object} Returns a promise resolver that provides resolve() and reject() methods */ - async: function async() { - var resolver = {}; + async() { + const resolver = {}; // create a promise and extract the control callbacks - promise = new Promise(function(resolve, reject) { + promise = new Promise(function (resolve, reject) { resolver.resolve = resolve; resolver.reject = reject; }); // directly install the pending actions promise - .then(function() { + .then(function () { promise = null; state.processing = false; @@ -227,7 +177,7 @@ var pollingFactory = function pollingFactory(config) { */ polling.trigger('resolved'); }) - .catch(function() { + .catch(function () { promise = null; state.processing = false; @@ -258,7 +208,7 @@ var pollingFactory = function pollingFactory(config) { * If the polling has been stopped, start it again. * @returns {polling} */ - next: function next() { + next() { var _next; // reset the counter if the polling is stopped @@ -299,7 +249,7 @@ var pollingFactory = function pollingFactory(config) { * Starts the polling if it is not currently running * @returns {polling} */ - start: function start() { + start() { if (!timer) { iter = 0; startTimer(); @@ -317,7 +267,7 @@ var pollingFactory = function pollingFactory(config) { * Stops the polling if it is currently running * @returns {polling} */ - stop: function stop() { + stop() { stopTimer(); /** @@ -334,7 +284,7 @@ var pollingFactory = function pollingFactory(config) { * @param {Number|String} value * @returns {polling} */ - setInterval: function setInterval(value) { + setInterval(value) { interval = Math.abs(parseInt(value, 10) || _defaultInterval); /** @@ -351,7 +301,7 @@ var pollingFactory = function pollingFactory(config) { * Gets the minimum time interval between two actions * @returns {Number} */ - getInterval: function getInterval() { + getInterval() { return interval; }, @@ -360,7 +310,7 @@ var pollingFactory = function pollingFactory(config) { * @param {Function} fn * @returns {polling} */ - setAction: function setAction(fn) { + setAction(fn) { action = fn; /** @@ -377,7 +327,7 @@ var pollingFactory = function pollingFactory(config) { * Gets the polling action * @returns {Function} */ - getAction: function getAction() { + getAction() { return action; }, @@ -386,7 +336,7 @@ var pollingFactory = function pollingFactory(config) { * @param {Object} ctx * @returns {polling} */ - setContext: function setContext(ctx) { + setContext(ctx) { context = ctx || this; /** @@ -403,7 +353,7 @@ var pollingFactory = function pollingFactory(config) { * Gets the context applied on each action call * @returns {Object} */ - getContext: function getContext() { + getContext() { return context; }, @@ -412,7 +362,7 @@ var pollingFactory = function pollingFactory(config) { * @param {Number} value * @returns {polling} */ - setMax: function setMax(value) { + setMax(value) { max = Math.abs(parseInt(value, 10) || 0); return this; }, @@ -421,7 +371,7 @@ var pollingFactory = function pollingFactory(config) { * Gets the max number of polling occurrences * @returns {Number} */ - getMax: function getMax() { + getMax() { return max; }, @@ -429,7 +379,7 @@ var pollingFactory = function pollingFactory(config) { * Gets the number of ran iterations * @returns {Number} */ - getIteration: function getIteration() { + getIteration() { return iter || 0; }, @@ -446,6 +396,57 @@ var pollingFactory = function pollingFactory(config) { } }; + /** + * Fires a new timer + */ + function startTimer() { + timer = setTimeout(iteration, interval); + state.stopped = false; + state.pending = true; + } + + /** + * Stops the current timer + */ + function stopTimer() { + clearTimeout(timer); + timer = null; + state.stopped = true; + state.pending = false; + } + + /** + * Runs an iteration of the polling loop + */ + function iteration() { + // prevent more iterations than needed to be ran + if (max && iter >= max) { + // breaks the polling + polling.stop(); + return; + } + + // count the iteration + iter = (iter || 0) + 1; + state.processing = true; + state.pending = false; + + /** + * Notifies the action is about to be called + * @event polling#call + */ + polling.trigger('call'); + + // process the action in the right context + action.call(context, polling); + + // next iteration in synchronous mode + if (!promise && !state.stopped) { + state.processing = false; + startTimer(); + } + } + eventifier(polling); // some defaults @@ -465,7 +466,7 @@ var pollingFactory = function pollingFactory(config) { // loads the config if (_.isObject(config)) { polling.setAction(config.action); - polling.setInterval(config.interval || arguments[1]); + polling.setInterval(config.interval || pollingInterval); polling.setContext(config.context); polling.setMax(config.max); autoStart = !!config.autoStart; @@ -476,6 +477,6 @@ var pollingFactory = function pollingFactory(config) { } return polling; -}; +} export default pollingFactory; diff --git a/src/core/promiseQueue.js b/src/core/promiseQueue.js index 6759681..2510ce8 100644 --- a/src/core/promiseQueue.js +++ b/src/core/promiseQueue.js @@ -49,15 +49,15 @@ import uuid from 'lib/uuid'; */ export default function promiseQueueFactory() { //where we keep the pending promises - var queue = {}; + let queue = {}; - var getId = function getId() { - var id = 'promise-' + uuid(6); + function getId() { + const id = `promise-${uuid(6)}`; if (typeof queue[id] === 'undefined') { return id; } return getId(); - }; + } /** * @typedef {promiseQueue} @@ -66,9 +66,9 @@ export default function promiseQueueFactory() { /** * Just add another promise to the queue * @param {Promise} promise - * @return {promiseQueue} chains + * @returns {promiseQueue} chains */ - add: function add(promise) { + add(promise) { queue[getId()] = promise; return this; }, @@ -77,15 +77,15 @@ export default function promiseQueueFactory() { * Get the queue values * @returns {Promise[]} the array of promises in the queue */ - getValues: function getValues() { + getValues() { return _.values(queue); }, /** * Empty the queue - * @return {promiseQueue} chains + * @returns {promiseQueue} chains */ - clear: function clear() { + clear() { queue = {}; return this; }, @@ -95,17 +95,17 @@ export default function promiseQueueFactory() { * @param {Function} promiseFn - a function that returns a promise * @returns {Promise} */ - serie: function serie(promiseFn) { - var id = getId(); + serie(promiseFn) { + const id = getId(); //the actual queue to execute before running the given promise - var currentQueue = this.getValues(); + const currentQueue = this.getValues(); //use an emitter to notify the promise fulfillment, internally. - var emitter = eventifier(); + const emitter = eventifier(); //add a waiting promise into the queue (for others who are calling the queue) - queue[id] = new Promise(function(resolve) { + queue[id] = new Promise(function (resolve) { emitter.on('fulfilled', resolve); }); @@ -113,17 +113,17 @@ export default function promiseQueueFactory() { //then run the given promise //and resolve the waiting promise (for others) return Promise.all(currentQueue) - .then(function() { + .then(function () { if (_.isFunction(promiseFn)) { return promiseFn(); } }) - .then(function(data) { + .then(function (data) { emitter.trigger('fulfilled'); delete queue[id]; return data; }) - .catch(function(err) { + .catch(function (err) { queue = {}; throw err; }); diff --git a/src/core/providerLoader.js b/src/core/providerLoader.js index e2a6cbc..cdc5618 100644 --- a/src/core/providerLoader.js +++ b/src/core/providerLoader.js @@ -27,7 +27,7 @@ import moduleLoaderFactory from 'core/moduleLoader'; /** * Checks a provider object - * @param provider + * @param {object} provider * @returns {Boolean} */ function validateProvider(provider) { @@ -53,7 +53,7 @@ export default function providerLoader(requiredProviders) { * @param {String} [category] - to get the providers for a given category, if not set, we get everything * @returns {Function[]} the providers */ - getProviders: function getProviders(category) { + getProviders(category) { return this.getModules(category); } }); diff --git a/src/core/providerRegistry.js b/src/core/providerRegistry.js index c0b1b2e..1aaa820 100644 --- a/src/core/providerRegistry.js +++ b/src/core/providerRegistry.js @@ -33,7 +33,7 @@ import _ from 'lodash'; * @returns {Object} the target itself */ function providerRegistry(target, validator) { - var _providers = {}; + let _providers = {}; target = target || {}; /** @@ -50,7 +50,7 @@ function providerRegistry(target, validator) { * @throws TypeError when a wrong provider is given or an empty name. */ function registerProvider(name, provider) { - var valid = true; + let valid = true; //type checking if (!_.isString(name) || name.length <= 0) { @@ -76,7 +76,7 @@ function providerRegistry(target, validator) { * @returns {Object} provider */ function getProvider(providerName) { - var provider; + let provider; //check a provider is available if (!_providers || _.size(_providers) === 0) { @@ -101,7 +101,7 @@ function providerRegistry(target, validator) { /** * Expose the list of registered providers - * @return {String[]} the list of provider names + * @returns {String[]} the list of provider names */ function getAvailableProviders() { return _.keys(_providers); diff --git a/src/core/request.js b/src/core/request.js index 5767d84..d1d95c5 100644 --- a/src/core/request.js +++ b/src/core/request.js @@ -263,11 +263,11 @@ export default function request(options) { const jwtTokenHandler = options.jwtTokenHandler; /** - * if access token expired then - * get new token - * update header with new token - * retry request - * */ + * if access token expired then + * get new token + * update header with new token + * retry request + * */ if (xhr.status === 401 && !isAccessTokenRefreshTried && jwtTokenHandler) { isAccessTokenRefreshTried = true; jwtTokenHandler diff --git a/src/core/router.js b/src/core/router.js index 5deb2e6..50274c1 100644 --- a/src/core/router.js +++ b/src/core/router.js @@ -35,7 +35,7 @@ import UrlParser from 'util/urlParser'; import loggerFactory from 'core/logger'; import Promise from 'core/promise'; -var logger = loggerFactory('router'); +const logger = loggerFactory('router'); /** * The router helps you to execute a controller when an URL maps a defined route. @@ -46,33 +46,28 @@ var logger = loggerFactory('router'); * @author Bertrand Chevrier * @exports router */ -var router = { +const router = { /** * Routing dispatching: execute the controller for the given URL. * If more than one URL is provided, we try to dispatch until a valid routing if found * (used mainly for forward/redirects). * - * @param {Array|String} url - the urls to try to dispatch + * @param {Array|String} urls - the urls to try to dispatch * @param {Function} cb - a callback executed once dispatched + * @returns {Promise} */ - dispatch: function dispatch(urls, cb) { - var self = this; - + dispatch(urls, cb) { if (!_.isArray(urls)) { urls = [urls]; } - return Promise.all( - urls.map(function(url) { - return self.dispatchUrl(url); - }) - ) - .then(function() { + return Promise.all(urls.map(url => this.dispatchUrl(url))) + .then(function () { if (_.isFunction(cb)) { cb(); } }) - .catch(function(err) { + .catch(function (err) { logger.error(err); }); }, @@ -82,14 +77,12 @@ var router = { * @param {String} url - the URL to parse * @returns {Object} the route structure */ - parseMvcUrl: function parseMvcUrl(url) { - var route = null; - var parser; - var paths; + parseMvcUrl(url) { + let route = null; if (_.isString(url) && !_.isEmpty(url)) { - parser = new UrlParser(url); - paths = parser.getPaths(); + const parser = new UrlParser(url); + const paths = parser.getPaths(); if (paths.length >= 3) { route = { action: paths[paths.length - 1], @@ -108,15 +101,15 @@ var router = { * @param {String} route.extension * @returns {Promise} once loaded */ - loadRouteBundle: function loadRouteBundle(route) { + loadRouteBundle(route) { //only for bundle mode and route which are not TAO (self contained) if (route && route.extension && context.bundle && route.extension !== 'tao') { - return new Promise(function(resolve) { - var routeBundle = route.extension + '/loader/' + route.extension + '.min'; + return new Promise(function (resolve) { + const routeBundle = `${route.extension}/loader/${route.extension}.min`; - window.require([routeBundle], resolve, function(err) { + window.require([routeBundle], resolve, function (err) { //do not break in case of error, module loading will take over - logger.warn('Unable to load ' + routeBundle + ' : ' + err.message); + logger.warn(`Unable to load ${routeBundle} : ${err.message}`); resolve(); }); @@ -132,11 +125,11 @@ var router = { * @param {String} route.extension * @returns {Promise} resolves with the routes data */ - loadRoute: function loadRoute(route) { + loadRoute(route) { if (route && route.extension) { - return new Promise(function(resolve, reject) { - var routeModule = - route.extension === 'tao' ? 'controller/routes' : route.extension + '/controller/routes'; + return new Promise(function (resolve, reject) { + const routeModule = + route.extension === 'tao' ? 'controller/routes' : `${route.extension}/controller/routes`; //loads the routing for the current extensino window.require([routeModule], resolve, reject); @@ -153,31 +146,26 @@ var router = { * - load the route's controllers * - execute the start method of those controllers * @param {String} url - the + * @returns {Promise} */ - dispatchUrl: function dispatchUrl(url) { - var self = this; - + dispatchUrl(url) { //parse the URL - var route = this.parseMvcUrl(url); + const route = this.parseMvcUrl(url); - logger.debug('Dispatch URL ' + url); + logger.debug(`Dispatch URL ${url}`); return this.loadRouteBundle(route) - .then(function() { - return self.loadRoute(route); - }) - .then(function(routes) { - var moduleRoutes; - var dependencies = []; - var styles = []; - var moduleConfig = {}; - var action; - var mapStyle = function mapStyle(style) { - return 'css!' + route.extension + 'Css/' + style; - }; + .then(() => this.loadRoute(route)) + .then(function (routes) { + let dependencies = []; + let styles = []; + const moduleConfig = {}; + function mapStyle(style) { + return `css!${route.extension}Css/${style}`; + } if (routes && routes[route.module]) { //get the dependencies for the current context - moduleRoutes = routes[route.module]; + const moduleRoutes = routes[route.module]; //resolve controller dependencies if (moduleRoutes.deps) { @@ -190,7 +178,7 @@ var router = { //resolve actions dependencies if ((moduleRoutes.actions && moduleRoutes.actions[route.action]) || moduleRoutes[route.action]) { - action = moduleRoutes.actions[route.action] || moduleRoutes[route.action]; + const action = moduleRoutes.actions[route.action] || moduleRoutes[route.action]; if (_.isString(action) || _.isArray(action)) { dependencies = dependencies.concat(action); } @@ -204,13 +192,13 @@ var router = { } //alias controller/ to extension/controller - dependencies = _.map(dependencies, function(dep) { - return /^controller/.test(dep) && route.extension !== 'tao' ? route.extension + '/' + dep : dep; + dependencies = _.map(dependencies, function (dep) { + return /^controller/.test(dep) && route.extension !== 'tao' ? `${route.extension}/${dep}` : dep; }); //URL parameters are given by default to the required module (through module.confid()) if (!_.isEmpty(route.params)) { - _.forEach(dependencies, function(dependency) { + _.forEach(dependencies, function (dependency) { //inject parameters using the curent requirejs contex. This rely on a private api... moduleConfig[dependency] = _.merge( _.clone(window.requirejs.s.contexts._.config.config[dependency] || {}), @@ -222,22 +210,22 @@ var router = { } return dependencies; }) - .then(function(dependencies) { + .then(function (dependencies) { if (dependencies && dependencies.length) { - logger.debug('Load controllers : ' + dependencies.join(', ')); + logger.debug(`Load controllers : ${dependencies.join(', ')}`); //loads module and action's dependencies and start the controllers. - return new Promise(function(resolve, reject) { + return new Promise(function (resolve, reject) { window.require( dependencies, - function() { - _.forEach(arguments, function(dependency) { + function (...args) { + _.forEach(args, function (dependency) { if (dependency && _.isFunction(dependency.start)) { dependency.start(); } }); - logger.debug(arguments.length + ' controllers started'); + logger.debug(`${args.length} controllers started`); resolve(); }, reject diff --git a/src/core/statifier.js b/src/core/statifier.js index b791ce2..64f6e50 100644 --- a/src/core/statifier.js +++ b/src/core/statifier.js @@ -75,14 +75,14 @@ import _ from 'lodash'; * @returns {Object} the target for convenience */ function statifierFactory(target) { - var states = {}; - var statesApi = { + let states = {}; + const statesApi = { /** * Tells if the state is set * @param {String} name * @returns {Boolean} */ - getState: function getState(name) { + getState(name) { return !!states[name]; }, @@ -99,7 +99,7 @@ function statifierFactory(target) { * @param {Boolean} [value] * @returns {statesApi} */ - setState: function setState(name, value) { + setState(name, value) { if (typeof value === 'undefined') { value = true; } @@ -111,7 +111,7 @@ function statifierFactory(target) { * Cleans up all states * @returns {statesApi} */ - clearStates: function clearStates() { + clearStates() { states = {}; return this; }, @@ -120,10 +120,10 @@ function statifierFactory(target) { * Returns all current states set * @returns {Array} */ - getStates: function getStates() { + getStates() { return _.reduce( states, - function(result, state, key) { + function (result, state, key) { if (state) { result.push(key); } @@ -138,9 +138,8 @@ function statifierFactory(target) { _(statesApi) .functions() - .forEach(function(method) { - target[method] = function delegate() { - var args = [].slice.call(arguments); + .forEach(function (method) { + target[method] = function delegate(...args) { return statesApi[method].apply(target, args); }; }); diff --git a/src/core/store/indexeddb.js b/src/core/store/indexeddb.js index ef1790a..a02f267 100644 --- a/src/core/store/indexeddb.js +++ b/src/core/store/indexeddb.js @@ -30,46 +30,47 @@ import uuid from 'lib/uuid'; * Prefix all databases * @type {String} */ -var prefix = 'tao-store-'; +const prefix = 'tao-store-'; /** * Access to the index of known stores. * This index is needed to maintain the list of stores created by TAO, in order to apply an auto clean up. * @type {Promise} */ -var knownStores; +let knownStores; /** * The name of the store that contains the index of known stores. * @type {String} */ -var knownStoresName = 'index'; +const knownStoresName = 'index'; /** * The name of the store that contains the store id * @type {String} */ -var idStoreName = 'id'; +const idStoreName = 'id'; /** * Check if we're using the v2 of IndexedDB * @type {Boolean} */ -var isIndexedDB2 = typeof IDBObjectStore !== 'undefined' && 'getAll' in IDBObjectStore.prototype; +const isIndexedDB2 = typeof IDBObjectStore !== 'undefined' && 'getAll' in IDBObjectStore.prototype; /** * Opens a store + * @param {string} storeName * @returns {Promise} with store instance in resolve */ -var openStore = function openStore(storeName) { - return new Promise(function(resolve, reject) { - var store = new IDBStore({ +function openStore(storeName) { + return new Promise(function (resolve, reject) { + const store = new IDBStore({ dbVersion: 1, storeName: storeName, storePrefix: prefix, keyPath: 'key', autoIncrement: true, - onStoreReady: function onStoreReady() { + onStoreReady() { // auto closes when the changed version reflects a DB deletion store.db.onversionchange = function onversionchange(e) { if (!e || !e.newVersion) { @@ -81,55 +82,55 @@ var openStore = function openStore(storeName) { onError: reject }); }); -}; +} /** * Sets an entry into a particular store - * @param store - * @param key - * @param value + * @param {object} store + * @param {string} key + * @param {*} value * @returns {Promise} */ -var setEntry = function setEntry(store, key, value) { - return new Promise(function(resolve, reject) { - var entry = { +function setEntry(store, key, value) { + return new Promise(function (resolve, reject) { + const entry = { key: key, value: value }; - var success = function success(returnKey) { + function success(returnKey) { resolve(returnKey === key); - }; + } store.put(entry, success, reject); }); -}; +} /** * Gets an entry from a particular store - * @param store - * @param key + * @param {object} store + * @param {string} key * @returns {Promise} */ -var getEntry = function getEntry(store, key) { - return new Promise(function(resolve, reject) { - var success = function success(entry) { +function getEntry(store, key) { + return new Promise(function (resolve, reject) { + function success(entry) { if (!entry || typeof entry.value === 'undefined') { return resolve(entry); } resolve(entry.value); - }; + } store.get(key, success, reject); }); -}; +} /** * Get entries from a store - * @param store + * @param {object} store * @returns {Promise} entries */ -var getEntries = function getEntries(store) { - return new Promise(function(resolve, reject) { - var success = function success(entries) { +function getEntries(store) { + return new Promise(function (resolve, reject) { + function success(entries) { if (!_.isArray(entries)) { return resolve({}); } @@ -137,7 +138,7 @@ var getEntries = function getEntries(store) { resolve( _.reduce( entries, - function(acc, entry) { + function (acc, entry) { if (entry.key && entry.value) { acc[entry.key] = entry.value; } @@ -146,78 +147,77 @@ var getEntries = function getEntries(store) { {} ) ); - }; + } store.getAll(success, reject); }); -}; +} /** * Remove an entry from a particular store - * @param store - * @param key - * @param value + * @param {object} store + * @param {string} key * @returns {Promise} */ -var removeEntry = function removeEntry(store, key) { - return new Promise(function(resolve, reject) { - var success = function success(result) { +function removeEntry(store, key) { + return new Promise(function (resolve, reject) { + function success(result) { resolve(result !== false); - }; + } store.remove(key, success, reject); }); -}; +} /** * Gets access to the store that contains the index of known stores. * @returns {Promise} */ -var getKnownStores = function getKnownStores() { +function getKnownStores() { if (!knownStores) { knownStores = openStore(knownStoresName); } return knownStores; -}; +} /** * Adds a store into the index of known stores. * @param {String} storeName * @returns {Promise} */ -var registerStore = function registerStore(storeName) { - return getKnownStores().then(function(store) { +function registerStore(storeName) { + return getKnownStores().then(function (store) { return setEntry(store, storeName, { name: storeName, lastOpen: Date.now() }); }); -}; +} /** * Removes a store from the index of known stores. * @param {String} storeName * @returns {Promise} */ -var unregisterStore = function unregisterStore(storeName) { - return getKnownStores().then(function(store) { +function unregisterStore(storeName) { + return getKnownStores().then(function (store) { return removeEntry(store, storeName); }); -}; +} /** * Deletes a store, then removes it from the index of known stores. - * @param store - * @param storeName + * @param {object} store + * @param {string} storeName * @returns {Promise} */ -var deleteStore = function deleteStore(store, storeName) { - return new Promise(function(resolve, reject) { - var success = function success() { +function deleteStore(store, storeName) { + return new Promise(function (resolve, reject) { + function success() { unregisterStore(storeName) - .then(function() { + .then(function () { resolve(true); }) .catch(reject); - }; + } //with old implementation, deleting a store is //either unsupported or buggy if (isIndexedDB2) { @@ -226,7 +226,7 @@ var deleteStore = function deleteStore(store, storeName) { store.clear(success, reject); } }); -}; +} /** * Open and access a store @@ -234,34 +234,34 @@ var deleteStore = function deleteStore(store, storeName) { * @returns {Object} the store backend * @throws {TypeError} without a storeName */ -var indexDbBackend = function indexDbBackend(storeName) { +function indexDbBackend(storeName) { //keep a ref of the running store - var innerStore; + let innerStore; /** * Get the store * @returns {Promise} with store instance in resolve */ - var getStore = function getStore() { + function getStore() { if (!innerStore) { - innerStore = openStore(storeName).then(function(store) { - return registerStore(storeName).then(function() { + innerStore = openStore(storeName).then(function (store) { + return registerStore(storeName).then(function () { return Promise.resolve(store); }); }); } return innerStore; - }; + } //keep a ref to the promise actually writing - var writePromise; + let writePromise; /** * Ensure write promises are executed in series * @param {Function} getWritingPromise - the function that run the promise * @returns {Promise} the original one */ - var ensureSerie = function ensureSerie(getWritingPromise) { + function ensureSerie(getWritingPromise) { //first promise, keep the ref if (!writePromise) { writePromise = getWritingPromise(); @@ -269,18 +269,18 @@ var indexDbBackend = function indexDbBackend(storeName) { } //create a wrapping promise - return new Promise(function(resolve, reject) { + return new Promise(function (resolve, reject) { //run the current request - var runWrite = function() { - var p = getWritingPromise(); + function runWrite() { + const p = getWritingPromise(); writePromise = p; //and keep the ref p.then(resolve).catch(reject); - }; + } //wait the previous to resolve or fail and run the current one writePromise.then(runWrite).catch(runWrite); }); - }; + } if (_.isEmpty(storeName) || !_.isString(storeName)) { throw new TypeError('The store name is required'); @@ -295,9 +295,9 @@ var indexDbBackend = function indexDbBackend(storeName) { * @param {String} key * @returns {Promise} with the result in resolve, undefined if nothing */ - getItem: function getItem(key) { + getItem(key) { return ensureSerie(function getWritingPromise() { - return getStore().then(function(store) { + return getStore().then(function (store) { return getEntry(store, key); }); }); @@ -309,9 +309,9 @@ var indexDbBackend = function indexDbBackend(storeName) { * @param {*} value - the item value * @returns {Promise} with true in resolve if added/updated */ - setItem: function setItem(key, value) { + setItem(key, value) { return ensureSerie(function getWritingPromise() { - return getStore().then(function(store) { + return getStore().then(function (store) { return setEntry(store, key, value); }); }); @@ -322,9 +322,9 @@ var indexDbBackend = function indexDbBackend(storeName) { * @param {String} key - the item key * @returns {Promise} with true in resolve if removed */ - removeItem: function removeItem(key) { + removeItem(key) { return ensureSerie(function getWritingPromise() { - return getStore().then(function(store) { + return getStore().then(function (store) { return removeEntry(store, key); }); }); @@ -334,9 +334,9 @@ var indexDbBackend = function indexDbBackend(storeName) { * Get all store items * @returns {Promise} with a collection of items */ - getItems: function getItems() { + getItems() { return ensureSerie(function getWritingPromise() { - return getStore().then(function(store) { + return getStore().then(function (store) { return getEntries(store); }); }); @@ -346,10 +346,10 @@ var indexDbBackend = function indexDbBackend(storeName) { * Clear the current store * @returns {Promise} with true in resolve once cleared */ - clear: function clear() { + clear() { return ensureSerie(function getWritingPromise() { - return getStore().then(function(store) { - return new Promise(function(resolve, reject) { + return getStore().then(function (store) { + return new Promise(function (resolve, reject) { var success = function success() { resolve(true); }; @@ -363,35 +363,34 @@ var indexDbBackend = function indexDbBackend(storeName) { * Delete the database related to the current store * @returns {Promise} with true in resolve once cleared */ - removeStore: function removeStore() { + removeStore() { return ensureSerie(function getWritingPromise() { - return getStore().then(function(store) { + return getStore().then(function (store) { return deleteStore(store, storeName); }); }); } }; -}; +} /** * Removes all storage * @param {Function} [validate] - An optional callback that validates the store to delete - * @param {Function} [backend] - An optional storage handler to use * @returns {Promise} with true in resolve once cleaned */ indexDbBackend.removeAll = function removeAll(validate) { if (!_.isFunction(validate)) { validate = null; } - return getKnownStores().then(function(store) { - return new Promise(function(resolve, reject) { + return getKnownStores().then(function (store) { + return new Promise(function (resolve, reject) { function cleanUp(entries) { - var all = []; - _.forEach(entries, function(entry) { - var storeName = entry && entry.key; + const all = []; + _.forEach(entries, function (entry) { + const storeName = entry && entry.key; if (storeName) { all.push( - openStore(storeName).then(function(storeToRemove) { + openStore(storeName).then(function (storeToRemove) { if (!validate || validate(storeName, entry.value)) { return deleteStore(storeToRemove, storeName); } @@ -400,9 +399,7 @@ indexDbBackend.removeAll = function removeAll(validate) { } }); - Promise.all(all) - .then(resolve) - .catch(reject); + Promise.all(all).then(resolve).catch(reject); } store.getAll(cleanUp, reject); }); @@ -412,7 +409,6 @@ indexDbBackend.removeAll = function removeAll(validate) { /** * Get all storage * @param {Function} [validate] - An optional callback that validates the store to delete - * @param {Function} [backend] - An optional storage handler to use * @returns {Promise} with true in resolve once cleaned */ indexDbBackend.getAll = function getAll(validate) { @@ -421,14 +417,14 @@ indexDbBackend.getAll = function getAll(validate) { return true; }; } - return getKnownStores().then(function(store) { - return new Promise(function(resolve, reject) { - store.getAll(function(entries) { - var storeNames = _(entries) - .filter(function(entry) { + return getKnownStores().then(function (store) { + return new Promise(function (resolve, reject) { + store.getAll(function (entries) { + const storeNames = _(entries) + .filter(function (entry) { return entry && entry.key && validate(entry.key, entry.value); }) - .map(function(entry) { + .map(function (entry) { return entry.key; }) .value(); @@ -444,14 +440,14 @@ indexDbBackend.getAll = function getAll(validate) { * @returns {Promise} that resolves with the store identifier */ indexDbBackend.getStoreIdentifier = function getStoreIdentifier() { - return openStore(idStoreName).then(function(store) { - return getEntry(store, idStoreName).then(function(id) { + return openStore(idStoreName).then(function (store) { + return getEntry(store, idStoreName).then(function (id) { if (!_.isEmpty(id)) { return id; } id = uuid(); - return setEntry(store, idStoreName, id).then(function() { + return setEntry(store, idStoreName, id).then(function () { return id; }); }); diff --git a/src/util/adaptSize.js b/src/util/adaptSize.js index 034793c..c5a0516 100644 --- a/src/util/adaptSize.js +++ b/src/util/adaptSize.js @@ -22,39 +22,39 @@ import capitalize from 'util/capitalize'; /** * Adapts the size of several elements */ -var adaptSize = (function() { +const adaptSize = (function () { /** * The actual resize function * - * @param {jQueryElements} elements + * @param {jQueryElements} $elements * @param {Object} dimensions * @private */ - var _resize = function($elements, dimensions) { + function _resize($elements, dimensions) { // This whole function is based on calculating the largest height/width. // Therefor the elements need to have style.height/width to be removed // otherwise we could never track when something is actually getting smaller than before. - $elements.each(function() { - for (var dimension in dimensions) { - if (dimensions.hasOwnProperty(dimension)) { + $elements.each(function () { + for (const dimension in dimensions) { + if (Object.prototype.hasOwnProperty.call(dimensions, dimension)) { $(this)[dimension]('auto'); } } }); - $elements.each(function() { - for (var dimension in dimensions) { - if (dimensions.hasOwnProperty(dimension)) { + $elements.each(function () { + for (const dimension in dimensions) { + if (Object.prototype.hasOwnProperty.call(dimensions, dimension)) { dimensions[dimension] = Math.max( Math.floor(dimensions[dimension] || 0), - $(this)['outer' + capitalize(dimension)]() + $(this)[`outer${capitalize(dimension)}`]() ); } } }); $elements.css(dimensions); - }; + } return { /** @@ -63,7 +63,7 @@ var adaptSize = (function() { * @param {jQueryElements} $elements * @param {Integer|undefined} [minWidth] default: 0 */ - width: function($elements, minWidth) { + width($elements, minWidth) { _resize($elements, { width: minWidth }); }, @@ -73,7 +73,7 @@ var adaptSize = (function() { * @param {jQueryElements} $elements * @param {Integer|undefined}[minHeight] default: 0 */ - height: function($elements, minHeight) { + height($elements, minHeight) { _resize($elements, { height: minHeight }); }, @@ -84,7 +84,7 @@ var adaptSize = (function() { * @param {Integer|undefined} [minWidth] default: 0 * @param {Integer|undefined} [minHeight] default: 0 */ - both: function($elements, minWidth, minHeight) { + both($elements, minWidth, minHeight) { _resize($elements, { height: minHeight, width: minWidth }); }, @@ -93,7 +93,7 @@ var adaptSize = (function() { * * @param {jQueryElements} $elements */ - resetHeight: function($elements) { + resetHeight($elements) { $elements.height('auto'); } }; diff --git a/src/util/clipboard.js b/src/util/clipboard.js index c081f65..a60f1e7 100644 --- a/src/util/clipboard.js +++ b/src/util/clipboard.js @@ -33,17 +33,16 @@ export default eventifier({ * Cleans system clipboard * rewrites everything with space symbol (because some browsers don't replace content with empty string) */ - clean: function clean() { + clean() { this.copy(' '); }, /** * Place text to the system clipboard - * @param text + * @param {string} text */ - copy: function copy(text) { + copy(text) { // create new el to copy from - var textAreaToSelContent; - textAreaToSelContent = document.createElement('textarea'); // Create a