diff --git a/.eslintrc.json b/.eslintrc.json index 9a0d66d1..ebb0cc5d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,5 +1,6 @@ { "extends": ["@exabyte-io/eslint-config"], + "ignorePatterns": ["lib/"], "settings": { "import/resolver": { "node": { diff --git a/.mocharc.json b/.mocharc.json new file mode 100644 index 00000000..a12ed926 --- /dev/null +++ b/.mocharc.json @@ -0,0 +1,5 @@ +{ + "extension": ["ts", "js"], + "spec": "tests/**/*.js", + "require": ["ts-node/register", "tests/setup.js"] + } diff --git a/package-lock.json b/package-lock.json index 9e15d8fd..0a861cb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,19 +20,26 @@ } }, "@babel/cli": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.0.tgz", - "integrity": "sha512-17E1oSkGk2IwNILM4jtfAvgjt+ohmpfBky8aLerUfYZhiPNg7ca+CRCxZn8QDxwNhV/upsc2VHBCqGFIR+iBfA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", + "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", "requires": { - "@jridgewell/trace-mapping": "^0.3.17", "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", "chokidar": "^3.4.0", "commander": "^4.0.1", - "convert-source-map": "^2.0.0", + "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", - "glob": "^7.2.0", + "glob": "^7.0.0", "make-dir": "^2.1.0", - "slash": "^2.0.0" + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "convert-source-map": { + "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==" + } } }, "@babel/code-frame": { @@ -45,62 +52,48 @@ } }, "@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==" + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", + "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==" }, "@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", + "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", + "@babel/generator": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", + "@babel/parser": "^7.23.3", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } } }, "@babel/eslint-parser": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", - "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz", + "integrity": "sha512-iB4ElZT0jAt7PKVaeVulOECdGe6UnmA/O0P9jlF5g5GBOwDVbna8AXhHRu4s27xQf6OkveyA8iTDv1jHdDejgQ==", "requires": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-scope": "^5.1.1", "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } + "semver": "^6.3.0" } }, "@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", + "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", "requires": { - "@babel/types": "^7.23.0", + "@babel/types": "^7.23.3", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -132,13 +125,6 @@ "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } } }, "@babel/helper-create-class-features-plugin": { @@ -155,13 +141,6 @@ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } } }, "@babel/helper-create-regexp-features-plugin": { @@ -172,25 +151,19 @@ "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } } }, "@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "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==", "requires": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", + "@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" + "resolve": "^1.14.2", + "semver": "^6.1.2" } }, "@babel/helper-environment-visitor": { @@ -232,9 +205,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -346,26 +319,26 @@ } }, "@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", + "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.15", - "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.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "version": "7.23.3", + "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.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.15" + "@babel/plugin-transform-optional-chaining": "^7.23.3" } }, "@babel/plugin-proposal-async-generator-functions": { @@ -380,12 +353,12 @@ } }, "@babel/plugin-proposal-class-properties": { - "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==", + "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==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-class-static-block": { @@ -493,9 +466,15 @@ } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==" + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", @@ -546,30 +525,6 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, "@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", @@ -579,9 +534,9 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -651,244 +606,169 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, "@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-async-generator-functions": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", - "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, "@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "requires": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-remap-async-to-generator": "^7.22.20" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", - "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz", + "integrity": "sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, "@babel/plugin-transform-classes": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", + "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/template": "^7.22.15" } }, "@babel/plugin-transform-destructuring": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", - "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, "@babel/plugin-transform-for-of": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", + "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "requires": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, "@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", - "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "requires": { - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", - "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "requires": { - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", - "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", "requires": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "requires": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" } }, @@ -902,65 +782,26 @@ } }, "@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" - } - }, "@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" - } - }, - "@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-replace-supers": "^7.22.20" } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", - "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz", + "integrity": "sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -968,45 +809,25 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, "@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", - "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1035,9 +856,9 @@ } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", - "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1045,118 +866,111 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/preset-env": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", - "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", - "requires": { - "@babel/compat-data": "^7.23.2", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "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==", + "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", "@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.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", "@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", @@ -1166,77 +980,55 @@ "@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-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.23.2", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.23.0", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.15", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.23.0", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.15", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.23.0", - "@babel/plugin-transform-modules-commonjs": "^7.23.0", - "@babel/plugin-transform-modules-systemjs": "^7.23.0", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.15", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.23.0", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.23.0", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } + "@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/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", + "semver": "^6.3.0" } }, "@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" } @@ -1259,6 +1051,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", + "dev": true, "requires": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", @@ -1319,26 +1112,26 @@ } }, "@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", + "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", "requires": { "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", + "@babel/generator": "^7.23.3", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", + "@babel/parser": "^7.23.3", + "@babel/types": "^7.23.3", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", + "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", "requires": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20", @@ -1379,14 +1172,28 @@ } }, "@es-joy/jsdoccomment": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.20.1.tgz", - "integrity": "sha512-oeJK41dcdqkvdZy/HctKklJNkt/jh+av3PZARrZEl+fs/8HaHeeYoAvEwOV0u5I6bArTF17JEsTZMY359e/nfQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.12.0.tgz", + "integrity": "sha512-Gw4/j9v36IKY8ET+W0GoOzrRw17xjf21EIFFRL3zx21fF5MnqmeNpNi+PU/LKjqLpPb2Pw2XdlJbYM31VVo/PQ==", "dev": true, "requires": { - "comment-parser": "1.3.0", + "comment-parser": "1.2.4", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~2.2.3" + "jsdoc-type-pratt-parser": "2.0.0" + }, + "dependencies": { + "comment-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", + "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", + "dev": true + }, + "jsdoc-type-pratt-parser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.0.0.tgz", + "integrity": "sha512-sUuj2j48wxrEpbFjDp1sAesAxPiLT+z0SWVmMafyIINs6Lj5gIPKh3VrkBZu4E/Dv+wHpOot0m6H8zlHQjwqeQ==", + "dev": true + } } }, "@eslint/eslintrc": { @@ -1436,6 +1243,12 @@ "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 + }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -1455,9 +1268,8 @@ } }, "@exabyte-io/code.js": { - "version": "2023.11.1-0", - "resolved": "https://registry.npmjs.org/@exabyte-io/code.js/-/code.js-2023.11.1-0.tgz", - "integrity": "sha512-j0Vg6tmHxUsSpFCXIZu2vHPcgLTA5oy2u644CavuGe+XpGfBntNgzTF6qSgoIpWtS1kkUVeTrGRjheXy2xI4+g==", + "version": "git+https://github.com/Exabyte-io/code.js.git#832b39cf21730552aee07af0ab9aba4a403c1ea1", + "from": "git+https://github.com/Exabyte-io/code.js.git#update/SOF-7096", "dev": true, "requires": { "@babel/cli": "7.16.0", @@ -1468,11 +1280,12 @@ "@babel/preset-react": "7.16.7", "@babel/register": "^7.16.0", "@babel/runtime-corejs3": "7.16.8", - "@exabyte-io/esse.js": "2023.11.1-0", + "@exabyte-io/esse.js": "git+https://github.com/Exabyte-io/esse.git#update/SOF-7096", "@types/chai": "^4.3.5", "@types/crypto-js": "^4.1.1", "@types/js-yaml": "^4.0.5", "@types/json-schema": "^7.0.12", + "@types/mathjs": "^3.21.1", "@types/mocha": "^10.0.1", "@types/node": "^20.4.2", "@types/react-jsonschema-form": "^1.7.8", @@ -1497,23 +1310,6 @@ "uuid": "8.3.2" }, "dependencies": { - "@babel/cli": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", - "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", - "dev": true, - "requires": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - } - }, "@babel/core": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", @@ -1545,226 +1341,22 @@ } } }, - "@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==", - "dev": true, - "requires": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "@babel/helper-define-polyfill-provider": { - "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.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" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "@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==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", - "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@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", - "@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-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@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/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", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", - "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "babel-plugin-polyfill-corejs2": { - "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.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "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==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, - "convert-source-map": { - "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 - }, - "crypto-js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", - "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "convert-source-map": { + "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 + }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -1779,12 +1371,6 @@ "lru-cache": "^6.0.0" } }, - "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 - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -1794,15 +1380,14 @@ } }, "@exabyte-io/eslint-config": { - "version": "2022.11.17-0", - "resolved": "https://registry.npmjs.org/@exabyte-io/eslint-config/-/eslint-config-2022.11.17-0.tgz", - "integrity": "sha512-BYTDSqvjj6ZiWb8l46T5BKrVfkelct+vK2mh7joHu5UWtJMUzLkb0KQMV1+6SUy4xHFnws33XS7/+JSW1yeZOQ==", + "version": "2023.8.29-1", + "resolved": "https://registry.npmjs.org/@exabyte-io/eslint-config/-/eslint-config-2023.8.29-1.tgz", + "integrity": "sha512-2da786Y5j3soXcxRi/MST6qc2aIUgTjCjcqfm+xQkGfJSV8FaQR/jccENLZ5i5ynYUMqQ8Elir2Q3n4LBFqeBg==", "dev": true }, "@exabyte-io/esse.js": { - "version": "2023.11.1-0", - "resolved": "https://registry.npmjs.org/@exabyte-io/esse.js/-/esse.js-2023.11.1-0.tgz", - "integrity": "sha512-0d+ZId+2mJ+bjNMuQcSKmcuT1W6MDNo8+DaKOo4sLFAMubEDm5EhI3k2toKs4QmEgj4dZFpioDWsdiaBRVmHvQ==", + "version": "git+https://github.com/Exabyte-io/esse.git#9a1a59ced1f4e7ce2dc747912db6894c0aaabd08", + "from": "git+https://github.com/Exabyte-io/esse.git#update/SOF-7096", "dev": true, "requires": { "@babel/cli": "7.16.0", @@ -1817,23 +1402,6 @@ "lodash": "4.17.21" }, "dependencies": { - "@babel/cli": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", - "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", - "dev": true, - "requires": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - } - }, "@babel/core": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", @@ -1857,138 +1425,6 @@ "source-map": "^0.5.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==", - "dev": true, - "requires": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "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.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/plugin-proposal-private-property-in-object": { - "version": "7.21.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", - "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@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", - "@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-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@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/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", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", - "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, "@babel/register": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.0.tgz", @@ -2002,53 +1438,11 @@ "source-map-support": "^0.5.16" } }, - "babel-plugin-polyfill-corejs2": { - "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.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==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, "convert-source-map": { "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 - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "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 } } }, @@ -2066,22 +1460,6 @@ "underscore": "1.8.3" }, "dependencies": { - "@babel/cli": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", - "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", - "requires": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - } - }, "@babel/core": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", @@ -2104,142 +1482,6 @@ "source-map": "^0.5.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==", - "requires": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "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==", - "requires": { - "@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/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==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", - "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@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==", - "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", - "@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-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@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/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", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", - "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, "@babel/register": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.0.tgz", @@ -2252,48 +1494,11 @@ "source-map-support": "^0.5.16" } }, - "babel-plugin-polyfill-corejs2": { - "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==", - "requires": { - "@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==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, "convert-source-map": { "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==" }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - }, "underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", @@ -2318,98 +1523,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "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" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "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", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "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 - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, "@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -2456,12 +1569,30 @@ "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", "optional": true }, - "@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==", + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "requires": { - "eslint-scope": "5.1.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, "@tsconfig/node10": { @@ -2489,15 +1620,14 @@ "dev": true }, "@types/chai": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", - "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", - "dev": true + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-of+ICnbqjmFCiixUnqRulbylyXQrPqIGf/B3Jax1wIF3DvSheysQxAWvqHhZiW3IQrycvokcLcFQlveGp+vyNg==" }, "@types/crypto-js": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.3.tgz", - "integrity": "sha512-YP1sYYayLe7Eg5oXyLLvOLfxBfZ5Fgpz6sVWkpB18wDMywCLPWmqzRz+9gyuOoLF0fzDTTFwlyNbx7koONUwqA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.1.tgz", + "integrity": "sha512-FSPGd9+OcSok3RsM0UZ/9fcvMOXJ1ENE/ZbLfOPlBWj7BgXtEAM8VYfTtT760GiLbQIMoVozwVuisjvsVwqYWw==", "dev": true }, "@types/glob": { @@ -2511,15 +1641,15 @@ } }, "@types/js-yaml": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.8.tgz", - "integrity": "sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "dev": true }, "@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "@types/json5": { @@ -2529,11 +1659,28 @@ "dev": true }, "@types/lodash": { - "version": "4.14.200", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.200.tgz", - "integrity": "sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==", + "version": "4.14.201", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.201.tgz", + "integrity": "sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ==", "dev": true }, + "@types/mathjs": { + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/@types/mathjs/-/mathjs-3.21.1.tgz", + "integrity": "sha512-2q5o+7V6/aJqvaap6jmQPQddIwDh35KFx61SbKfoT8dkchL+AsqtQhrpxo99by0L4uXehZTl4gSyiJMjyA0kRg==", + "dev": true, + "requires": { + "decimal.js": "^10.0.0" + }, + "dependencies": { + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + } + } + }, "@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -2541,16 +1688,14 @@ "dev": true }, "@types/mocha": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", - "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", - "dev": true + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.4.tgz", + "integrity": "sha512-xKU7bUjiFTIttpWaIZ9qvgg+22O1nmbA+HRxdlR+u6TWsGfmFdXrheJoK4fFxrHNVIOBDvDNKZG+LYBpMHpX3w==" }, "@types/node": { - "version": "20.8.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", - "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", - "dev": true, + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", "requires": { "undici-types": "~5.26.4" } @@ -2562,15 +1707,15 @@ "dev": true }, "@types/prop-types": { - "version": "15.7.9", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", - "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==", + "version": "15.7.10", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.10.tgz", + "integrity": "sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==", "dev": true }, "@types/react": { - "version": "18.2.33", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.33.tgz", - "integrity": "sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==", + "version": "18.2.37", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.37.tgz", + "integrity": "sha512-RGAYMi2bhRgEXT3f4B92WTohopH6bIXw05FuGlmJEnv/omEn190+QYEIYxIAuIBdKgboYYdVved2p1AxZVQnaw==", "dev": true, "requires": { "@types/prop-types": "*", @@ -2579,9 +1724,9 @@ } }, "@types/react-jsonschema-form": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.7.10.tgz", - "integrity": "sha512-WycAa8c+f78wYVvEgCoN7Pv6u8t8LN2rgZirv898OWFAXSK96QXH1v0FnJvHvhdTqG7ap/Mk/ODaSZK2Aa0XLw==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.7.11.tgz", + "integrity": "sha512-VB7XtmxpU9alrhdXC250vn+UDKFglHnaYvER5eQjcolCtyiQGsSIenbfDwQDDatCxaGC7n6PIM+dOUJ0TcU+5A==", "dev": true, "requires": { "@types/json-schema": "*", @@ -2589,17 +1734,179 @@ } }, "@types/scheduler": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", - "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.6.tgz", + "integrity": "sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA==", "dev": true }, "@types/underscore": { - "version": "1.11.12", - "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.12.tgz", - "integrity": "sha512-beX81q12OQo809WJ/UYCvUDvJR3YQ4wtehYYQ6eNw5VLyd+KUNBRV4FgzZCHBmACbdPulH9F9ifhxzFFU9TWvQ==", + "version": "1.11.14", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.14.tgz", + "integrity": "sha512-13RYuwqoXZgLO3Nu4zsISqYAexCILtKIMGx+7+vY6gEsGFjrcHU57iDxPmaA2E5d4v5NwebNweiXLbaZWHWI9A==" + }, + "@types/underscore.string": { + "version": "0.0.40", + "resolved": "https://registry.npmjs.org/@types/underscore.string/-/underscore.string-0.0.40.tgz", + "integrity": "sha512-6J3Wp6PnuXhSxVSVaSoh9SKiormScoa2pPLKpZk5QsjKD3RKQZQj/mwBVfULd2MUl5gM/UlLSvr+cynd/7VWQA==", + "requires": { + "@types/underscore": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.1.tgz", + "integrity": "sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "5.9.1", + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/type-utils": "5.9.1", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.1.tgz", + "integrity": "sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/typescript-estree": "5.9.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz", + "integrity": "sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.9.1", + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/typescript-estree": "5.9.1", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz", + "integrity": "sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.1.tgz", + "integrity": "sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "5.9.1", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz", + "integrity": "sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==", "dev": true }, + "@typescript-eslint/typescript-estree": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz", + "integrity": "sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.9.1", + "@typescript-eslint/visitor-keys": "5.9.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz", + "integrity": "sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.9.1", + "eslint-visitor-keys": "^3.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, "@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -2712,21 +2019,6 @@ "picomatch": "^2.0.4" } }, - "append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "requires": { - "default-require-extensions": "^3.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true - }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -2740,12 +2032,13 @@ "dev": true }, "aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, "requires": { - "dequal": "^2.0.3" + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" } }, "array-almost-equal": { @@ -2780,18 +2073,11 @@ "is-string": "^1.0.7" } }, - "array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true }, "array.prototype.flat": { "version": "1.3.2", @@ -2817,19 +2103,6 @@ "es-shim-unscopables": "^1.0.0" } }, - "array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, "arraybuffer.prototype.slice": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", @@ -2869,15 +2142,6 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.3" - } - }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -2891,46 +2155,36 @@ "dev": true }, "axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dev": true, - "requires": { - "dequal": "^2.0.3" - } + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "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==", "requires": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "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==", "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", "requires": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.3.1" } }, "balanced-match": { @@ -2982,35 +2236,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "requires": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, "call-bind": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", @@ -3041,9 +2266,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001553", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz", - "integrity": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==" + "version": "1.0.30001561", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", + "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==" }, "chai": { "version": "4.3.10", @@ -3342,9 +2567,9 @@ "dev": true }, "core-js-compat": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.1.tgz", - "integrity": "sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==", + "version": "3.33.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.2.tgz", + "integrity": "sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==", "requires": { "browserslist": "^4.22.1" } @@ -3445,23 +2670,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "default-require-extensions": { - "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" - }, - "dependencies": { - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - } - } - }, "define-data-property": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", @@ -3484,18 +2692,21 @@ "object-keys": "^1.1.1" } }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -3512,9 +2723,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.565", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.565.tgz", - "integrity": "sha512-XbMoT6yIvg2xzcbs5hCADi0dXBh4//En3oFXmtPX+jiyyiCTiM9DGFT2SLottjpEs9Z8Mh8SqahbR96MaHfuSg==" + "version": "1.4.580", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.580.tgz", + "integrity": "sha512-T5q3pjQon853xxxHUq3ZP68ZpvJHuSMY2+BZaW3QzjS4HvNuvsMmZ/+lU+nCrftre1jFZ+OSlExynXWBihnXzw==" }, "emoji-regex": { "version": "8.0.0", @@ -3579,28 +2790,6 @@ "which-typed-array": "^1.1.13" } }, - "es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", - "dev": true, - "requires": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" - } - }, "es-set-tostringtag": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", @@ -3643,12 +2832,6 @@ "next-tick": "^1.1.0" } }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, "es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", @@ -3815,6 +2998,23 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.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==", + "dev": true + } + } + }, "globals": { "version": "13.23.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", @@ -3830,6 +3030,12 @@ "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 + }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -3882,9 +3088,9 @@ } }, "eslint-config-airbnb": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", - "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.2.tgz", + "integrity": "sha512-4v5DEMVSl043LaCT+gsxPcoiIk0iYG5zxJKKjIy80H/D//2E0vtuOBWkb0CBDxjF+y26yQzspIXYuY6wMmt9Cw==", "dev": true, "requires": { "eslint-config-airbnb-base": "^15.0.0", @@ -3902,22 +3108,33 @@ "object.assign": "^4.1.2", "object.entries": "^1.1.5", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } } }, "eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true }, + "eslint-import-resolver-exports": { + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-exports/-/eslint-import-resolver-exports-1.0.0-beta.5.tgz", + "integrity": "sha512-o6t0w7muUpXr7MkUVzD5igQoDfAQvTmcPp8HEAJdNF8eOuAO+yn6I/TTyMxz9ecCwzX7e02vzlkHURoScUuidg==", + "dev": true, + "requires": { + "resolve.exports": "^2.0.0" + } + }, + "eslint-import-resolver-meteor": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-meteor/-/eslint-import-resolver-meteor-0.4.0.tgz", + "integrity": "sha512-BSqvgt6QZvk9EGhDGnM4azgbxyBD8b0y6FYA52WFzpWpHcZV9ys8PxM33bx8dlCy3HyopRLLsMUnlhTpZzsZmQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "resolve": "^1.1.6" + } + }, "eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -3961,37 +3178,33 @@ } }, "eslint-plugin-import": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", - "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", + "version": "2.25.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", + "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", "dev": true, "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.1", + "has": "^1.0.3", + "is-core-module": "^2.8.0", "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" }, "dependencies": { "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.0.0" } }, "doctrine": { @@ -4003,25 +3216,26 @@ "esutils": "^2.0.2" } }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } }, "eslint-plugin-jsdoc": { - "version": "37.9.7", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.9.7.tgz", - "integrity": "sha512-8alON8yYcStY94o0HycU2zkLKQdcS+qhhOUNQpfONHHwvI99afbmfpYuPqf6PbLz5pLZldG3Te5I0RbAiTN42g==", + "version": "37.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.1.0.tgz", + "integrity": "sha512-DpkFzX5Sqkqzy4MCgowhDXmusWcF1Gn7wYnphdGfWmIkoQr6SwL0jEtltGAVyF5Rj6ACi6ydw0oCCI5hF3yz6w==", "dev": true, "requires": { - "@es-joy/jsdoccomment": "~0.20.1", + "@es-joy/jsdoccomment": "0.12.0", "comment-parser": "1.3.0", "debug": "^4.3.3", "escape-string-regexp": "^4.0.0", "esquery": "^1.4.0", + "jsdoc-type-pratt-parser": "^2.0.0", "regextras": "^0.8.0", "semver": "^7.3.5", "spdx-expression-parse": "^3.0.1" @@ -4060,27 +3274,23 @@ } }, "eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", + "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", "dev": true, "requires": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", + "@babel/runtime": "^7.16.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.4", "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", + "axe-core": "^4.3.5", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.7", "emoji-regex": "^9.2.2", "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "jsx-ast-utils": "^3.2.1", + "language-tags": "^1.0.5", + "minimatch": "^3.0.4" }, "dependencies": { "emoji-regex": { @@ -4088,15 +3298,18 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true } } }, + "eslint-plugin-mui-path-imports": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/eslint-plugin-mui-path-imports/-/eslint-plugin-mui-path-imports-0.0.15.tgz", + "integrity": "sha512-u61kgRBtUAG+zoApuf8oWuW6mf3SIfrpMq/gSQEM2h/3qzkqvWXB4RRmPzVryS6bpeXT0QsW8rFcdcMVnoz0hw==", + "dev": true, + "requires": { + "requireindex": "^1.2.0" + } + }, "eslint-plugin-prettier": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", @@ -4107,27 +3320,25 @@ } }, "eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz", + "integrity": "sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==", "dev": true, "requires": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" }, "dependencies": { "doctrine": { @@ -4155,21 +3366,9 @@ "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true } } }, - "eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true - }, "eslint-plugin-simple-import-sort": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", @@ -4186,20 +3385,12 @@ } }, "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "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": "^1.1.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==", - "dev": true - } + "eslint-visitor-keys": "^2.0.0" } }, "eslint-visitor-keys": { @@ -4336,6 +3527,19 @@ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -4348,6 +3552,15 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "file": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/file/-/file-0.2.2.tgz", @@ -4421,27 +3634,11 @@ "is-callable": "^1.1.3" } }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, "fraction.js": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.4.tgz", "integrity": "sha512-aK/oGatyYLTtXRHjfEsytX5fieeR5H4s8sLorzcT12taFS+dbMZejnvm9gRa8mZAPwci24ucjq9epDyaq5u8Iw==" }, - "fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true - }, "fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -4516,12 +3713,6 @@ "hasown": "^2.0.0" } }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, "get-stdin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", @@ -4588,6 +3779,28 @@ "define-properties": "^1.1.3" } }, + "globby": { + "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.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, "gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -4597,12 +3810,6 @@ "get-intrinsic": "^1.1.3" } }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", @@ -4656,24 +3863,6 @@ "has-symbols": "^1.0.2" } }, - "hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, "hasown": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", @@ -4688,12 +3877,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -4707,9 +3890,9 @@ "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==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "import-fresh": { @@ -4770,15 +3953,6 @@ "is-typed-array": "^1.1.10" } }, - "is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -4840,30 +4014,12 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, - "is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, "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 }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4898,12 +4054,6 @@ } } }, - "is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true - }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -4954,12 +4104,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true - }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -5002,12 +4146,6 @@ "which-typed-array": "^1.1.11" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -5023,12 +4161,6 @@ "is-invalid-path": "^0.1.0" } }, - "is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true - }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -5038,22 +4170,6 @@ "call-bind": "^1.0.2" } }, - "is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -5061,170 +4177,15 @@ "dev": true }, "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "requires": { - "append-transform": "^2.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "istanbul-lib-processinfo": { - "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.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" - }, - "dependencies": { - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - } - } - }, - "istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "requires": { - "semver": "^7.5.3" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "requires": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" }, "javascript-natural-sort": { "version": "0.7.1", @@ -5391,12 +4352,12 @@ "dev": true }, "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, "requires": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" } }, "levn": { @@ -5533,12 +4494,6 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -5703,6 +4658,13 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } } }, "make-error": { @@ -5765,6 +4727,12 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -5798,7 +4766,8 @@ "mixwith": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/mixwith/-/mixwith-0.1.1.tgz", - "integrity": "sha512-DQsf/liljH/9e+94jR+xfK8vlKceeKdOM9H9UEXLwGuvEEpO6debNtJ9yt1ZKzPKPrwqGxzMdu0BR1fnQb6i4A==" + "integrity": "sha512-DQsf/liljH/9e+94jR+xfK8vlKceeKdOM9H9UEXLwGuvEEpO6debNtJ9yt1ZKzPKPrwqGxzMdu0BR1fnQb6i4A==", + "dev": true }, "mkdirp": { "version": "1.0.4", @@ -6013,15 +4982,6 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, - "node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "requires": { - "process-on-spawn": "^1.0.0" - } - }, "node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -6060,226 +5020,6 @@ } } }, - "nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "requires": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "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" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "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 - }, - "convert-source-map": { - "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 - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "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 - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6332,18 +5072,6 @@ "es-abstract": "^1.22.1" } }, - "object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" - } - }, "object.hasown": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", @@ -6426,18 +5154,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, - "package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6468,6 +5184,12 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, "pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", @@ -6529,15 +5251,6 @@ "fast-diff": "^1.1.2" } }, - "process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "requires": { - "fromentries": "^1.2.0" - } - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -6556,9 +5269,15 @@ } }, "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "randombytes": { @@ -6620,20 +5339,6 @@ "picomatch": "^2.2.1" } }, - "reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - } - }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -6711,15 +5416,6 @@ } } }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -6732,10 +5428,10 @@ "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", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", "dev": true }, "resolve": { @@ -6754,6 +5450,12 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -6764,6 +5466,12 @@ "signal-exit": "^3.0.2" } }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", @@ -6779,6 +5487,15 @@ "glob": "^7.1.3" } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -6823,9 +5540,9 @@ "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==" }, "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "serialize-javascript": { "version": "6.0.0", @@ -6836,12 +5553,6 @@ "randombytes": "^2.1.0" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, "set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", @@ -6957,9 +5668,9 @@ } }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" }, "source-map-support": { "version": "0.5.21", @@ -6968,36 +5679,12 @@ "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - } - }, - "spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "requires": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" }, "dependencies": { - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -7168,17 +5855,6 @@ } } }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -7293,6 +5969,23 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -7372,20 +6065,10 @@ "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-0.10.7.tgz", "integrity": "sha512-3mlZ5AwRMbLvUKkc8a1TI4RUJUS2H27pmD5q0lHRObgsoWzhDAX01yg82kwSP1FUw922/4Y9ZliIEh0qJZcz+g==" }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, "unbox-primitive": { "version": "1.0.2", @@ -7416,8 +6099,7 @@ "undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -7549,44 +6231,6 @@ "is-symbol": "^1.0.3" } }, - "which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "requires": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - } - }, - "which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - } - }, - "which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, "which-typed-array": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", @@ -7648,18 +6292,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 97010cbc..e591f119 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "description": "Materials Design in Javascript", "scripts": { "prepublishOnly": "rm -rf lib; npm run transpile", + "transpile": "tsc", "postinstall": "npm run transpile", - "transpile": "mkdir -p lib && babel --extensions '.js,.jsx,.ts,.tsx' src --out-dir lib", - "test": "nyc --reporter=text mocha --recursive --bail --require @babel/register/lib --require tests/setup.js tests", + "test": "mocha", "lint": "eslint src tests && prettier --write src tests", "lint:fix": "eslint --fix --cache src tests && prettier --write src tests", "prettier": "prettier --check src tests", @@ -27,39 +27,49 @@ "node": ">=0.12" }, "devDependencies": { - "@exabyte-io/code.js": "2023.11.1-0", - "@exabyte-io/eslint-config": "^2022.11.17-0", + "@babel/eslint-parser": "^7.16.3", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.7", + "@babel/register": "^7.22.15", + "@babel/runtime-corejs3": "^7.16.8", + "@exabyte-io/code.js": "2023.12.1-0", + "@exabyte-io/eslint-config": "^2023.8.29-1", + "@typescript-eslint/eslint-plugin": "^5.9.1", + "@typescript-eslint/parser": "^5.9.1", "chai": "^4.3.4", "chai-almost": "^1.0.1", "eslint": "^7.32.0", "eslint-config-airbnb": "^19.0.2", "eslint-config-prettier": "^8.5.0", + "eslint-import-resolver-exports": "^1.0.0-beta.5", + "eslint-import-resolver-meteor": "^0.4.0", + "eslint-import-resolver-node": "^0.3.9", "eslint-plugin-import": "^2.25.3", "eslint-plugin-jsdoc": "^37.1.0", "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-mui-path-imports": "0.0.15", "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.27.1", - "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-react": "^7.30.0", "eslint-plugin-simple-import-sort": "^7.0.0", "husky": "^7.0.4", "lint-staged": "^12.1.2", "mocha": "^9.1.3", - "nyc": "^15.1.0", "prettier": "^2.5.1" }, "dependencies": { - "@babel/cli": "^7.16.0", "@babel/core": "^7.16.0", - "@babel/eslint-parser": "^7.16.3", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/preset-env": "^7.16.4", - "@babel/register": "^7.16.0", "@exabyte-io/periodic-table.js": "2022.5.28-0", + "@types/chai": "^4.3.5", + "@types/mocha": "^10.0.1", + "@types/node": "^20.4.2", + "@types/underscore": "^1.11.6", + "@types/underscore.string": "^0.0.40", "array-almost-equal": "^1.0.0", "crypto-js": "^3.1.9-1", "lodash": "^4.17.4", "mathjs": "^3.9.0", - "mixwith": "^0.1.1", + "typescript": "^4.5.5", "underscore": "^1.8.3", "underscore.string": "^3.3.4" }, diff --git a/src/abstract/array_with_ids.js b/src/abstract/array_with_ids.js deleted file mode 100644 index d038722b..00000000 --- a/src/abstract/array_with_ids.js +++ /dev/null @@ -1,75 +0,0 @@ -import _ from "underscore"; - -import { ScalarWithId } from "./scalar_with_id"; - -/** - * Helper class representing an ArrayWithIds. Used to explicitly track values assigned to atoms, for example. - */ -export class ArrayWithIds { - /** - * Create a an array with ids. - * @param {Array} array - Either regular array or ArrayWithIds (see @example above) - */ - constructor(array = []) { - if (!_.isArray(array)) - throw new Error("ArrayWithIds.constructor: pass array on initialization"); - // if passed an array with ids as config, only store the values in array - this.array = array.sort((a, b) => a.id - b.id).map((element) => element.value || element); - } - - /** - * Serialize class instance to JSON. - * @example [{"id" : 0, "value" : "Si" }, {"id" : 1, "value" : "Si" }] - */ - toJSON() { - // from ["a", "b"] to [{id: 0, value: "a"}, {id: 1, value: "b"}] - return this.array.map((el, idx) => new ScalarWithId(el, idx).toJSON()); - } - - /** - * Apply function fn to each element of the array and replace `array` with the result. - * @param {Function} fn - The function to be applied to each array element. - */ - mapArrayInPlace(fn) { - if (!_.isFunction(fn)) - throw new Error("ArrayWithIds.mapArray: must pass function as argument"); - this.array = this.array.map((...args) => fn(...args)); - } - - getArrayElementByIndex(idx) { - return this.array[idx]; - } - - /** - * Get the index of the array element that passes the predicate. - * @param {Function} predicate - The function to be applied to each array element. - */ - getArrayIndexByPredicate(predicate) { - return this.array.findIndex((el) => predicate(el)); - } - - /** - * Add an entity to array. - * @param {Any} el - The entity to be added to array. If Object with 'value' key, its value will be added. - */ - addElement(el) { - if (el) this.array.push(el.value || el); - } - - /** - * Remove an entity to array. Either by passing the entity, or the corresponding index. - * @param {Any} el - The entity to be added to array. If Object with 'value' key, its value will be added. - * @param {Any} idx - The entity to be added to array. If Object with 'value' key, its value will be added. - */ - removeElement(el, idx) { - let _idx; - if (idx === undefined) { - _idx = this.array.findIndex((elm) => elm === el); - } else { - _idx = idx; - } - if (_idx !== undefined) { - this.array.splice(_idx, 1); - } - } -} diff --git a/src/abstract/array_with_ids.ts b/src/abstract/array_with_ids.ts new file mode 100644 index 00000000..eea1bac6 --- /dev/null +++ b/src/abstract/array_with_ids.ts @@ -0,0 +1,100 @@ +import _ from "underscore"; + +import { + isObjectWithIdAndValue, + ObjectWithIdAndValue, + ScalarWithId, + ValueOrObject, +} from "./scalar_with_id"; + +type Predicate = (o: T) => boolean; + +type MapFunction = (value: T, index: number, array: T[]) => T; + +export function isArrayOfObjectsWithIdAndValue( + valueOrObjects: ValueOrObject[], +): valueOrObjects is ObjectWithIdAndValue[] { + return isObjectWithIdAndValue(valueOrObjects[0]); +} + +/** + * Helper class representing an ArrayWithIds. Used to explicitly track values assigned to atoms, for example. + */ +export class ArrayWithIds { + array: T[]; + + /** + * Create a an array with ids. + * @param {Array} array - Either regular array or ArrayWithIds (see @example above) + */ + constructor(array: ObjectWithIdAndValue[] | T[] = []) { + if (!_.isArray(array)) { + throw new Error("ArrayWithIds.constructor: pass array on initialization"); + } + // if passed an array with ids as config, only store the values in array + if (isArrayOfObjectsWithIdAndValue(array)) { + this.array = array.sort((a, b) => a.id - b.id).map((element) => element.value); + } else { + this.array = [...array]; + } + } + + /** + * Serialize class instance to JSON. + * @example [{"id" : 0, "value" : "Si" }, {"id" : 1, "value" : "Si" }] + */ + toJSON(): ObjectWithIdAndValue[] { + // from ["a", "b"] to [{id: 0, value: "a"}, {id: 1, value: "b"}] + return this.array.map((el, idx) => new ScalarWithId(el, idx).toJSON()); + } + + /** + * Apply function fn to each element of the array and replace `array` with the result. + * @param fn - The function to be applied to each array element. + */ + mapArrayInPlace(fn: MapFunction) { + if (!_.isFunction(fn)) { + throw new Error("ArrayWithIds.mapArray: must pass function as argument"); + } + + this.array = this.array.map(fn); + } + + getArrayElementByIndex(idx: number) { + return this.array[idx]; + } + + /** + * Get the index of the array element that passes the predicate. + * @param {Function} predicate - The function to be applied to each array element. + */ + getArrayIndexByPredicate(predicate: Predicate) { + return this.array.findIndex((el) => predicate(el)); + } + + /** + * Add an entity to array. + * @param el - The entity to be added to array. If Object with 'value' key, its value will be added. + */ + addElement(el: ValueOrObject) { + const value = isObjectWithIdAndValue(el) ? el.value : el; + if (el) this.array.push(value); + } + + /** + * Remove an entity to array. Either by passing the entity, or the corresponding index. + * @param el - The entity to be added to array. If Object with 'value' key, its value will be added. + * @param idx - The entity to be added to array. If Object with 'value' key, its value will be added. + */ + removeElement(el: ValueOrObject | null, idx?: number) { + let _idx; + if (idx === undefined) { + _idx = this.array.findIndex((elm) => elm === el); + } else { + _idx = idx; + } + if (_idx !== undefined) { + this.array.splice(_idx, 1); + } + } +} diff --git a/src/abstract/scalar_with_id.js b/src/abstract/scalar_with_id.js deleted file mode 100644 index 2241bf3c..00000000 --- a/src/abstract/scalar_with_id.js +++ /dev/null @@ -1,37 +0,0 @@ -import _ from "underscore"; - -/** - * Helper class representing a scalar with an associated id. - */ -export class ScalarWithId { - /** - * Create a an array with ids. - * @param {Any} valueOrObject - a ScalarWithID, or any other type. - * @param {Number} id - numerical id (Integer). - */ - constructor(valueOrObject, id = 0) { - let _id, _value; - // if already passing a ScalarWithId => preserve original - if (_.isObject(valueOrObject) && !_.isArray(valueOrObject)) { - // NOTE - Arrays are Objects too - _id = valueOrObject.id; - _value = valueOrObject.value; - } else { - _id = id; - _value = valueOrObject; - } - this.value = _value; - this.id = _id; - } - - /** - * Serialize class instance to JSON. - * @example {"id" : 0, "value" : "Si" } - */ - toJSON() { - return { - id: this.id, - value: this.value, - }; - } -} diff --git a/src/abstract/scalar_with_id.ts b/src/abstract/scalar_with_id.ts new file mode 100644 index 00000000..e23105b8 --- /dev/null +++ b/src/abstract/scalar_with_id.ts @@ -0,0 +1,53 @@ +import _ from "underscore"; + +export interface ObjectWithIdAndValue { + id: number; + value: T; +} + +export type ValueOrObject = ObjectWithIdAndValue | T; + +export type ValueOrObjectArray = ObjectWithIdAndValue[] | T[]; + +export function isObjectWithIdAndValue( + valueOrObject: ValueOrObject, +): valueOrObject is ObjectWithIdAndValue { + return Boolean(_.isObject(valueOrObject) && !_.isArray(valueOrObject) && valueOrObject.value); +} + +/** + * Helper class representing a scalar with an associated id. + */ +export class ScalarWithId { + id: number; + + value: T; + + /** + * Create a an array with ids. + * @param valueOrObject - a ScalarWithID, or any other type. + * @param id - numerical id (Integer). + */ + constructor(valueOrObject: ValueOrObject, id = 0) { + // if already passing a ScalarWithId => preserve original + if (isObjectWithIdAndValue(valueOrObject)) { + // NOTE - Arrays are Objects too + this.id = valueOrObject.id; + this.value = valueOrObject.value; + } else { + this.id = id; + this.value = valueOrObject; + } + } + + /** + * Serialize class instance to JSON. + * @example {"id" : 0, "value" : "Si" } + */ + toJSON(): ObjectWithIdAndValue { + return { + id: this.id, + value: this.value, + }; + } +} diff --git a/src/basis/basis.js b/src/basis/basis.ts similarity index 75% rename from src/basis/basis.js rename to src/basis/basis.ts index 8057f0dc..49f9f244 100644 --- a/src/basis/basis.js +++ b/src/basis/basis.ts @@ -1,49 +1,80 @@ +// import { BasisSchema } from "@exabyte-io/code.js/src/types"; +// @ts-ignore import { getElectronegativity, getElementAtomicRadius } from "@exabyte-io/periodic-table.js"; import _ from "underscore"; import s from "underscore.string"; import { ArrayWithIds } from "../abstract/array_with_ids"; +import { ObjectWithIdAndValue, ValueOrObjectArray } from "../abstract/scalar_with_id"; import { ATOMIC_COORD_UNITS, HASH_TOLERANCE } from "../constants"; import { Lattice, nonPeriodicLatticeScalingFactor } from "../lattice/lattice"; +import { Vector } from "../lattice/types"; import math from "../math"; +import { Coordinate } from "./types"; + +export interface BasisProps { + elements: ValueOrObjectArray; // chemical elements for atoms in basis. + coordinates: ValueOrObjectArray; // coordinates for the atoms in basis. + units: string; // units for the coordinates (eg. angstrom, crystal). + cell: Vector[]; // crystal cell corresponding to the basis (eg. to convert to crystal coordinates). + isEmpty?: boolean; // crystal cell corresponding to the basis (eg. to convert to crystal coordinates). +} + +export interface Atom { + id?: number; // numeric id of the element (optional). + element: string; // Chemical element + coordinate: Coordinate; // 3-dimensional coordinate +} + +export interface ElementCount { + count: number; + value: string; +} + +export interface BasisSchema { + elements: ObjectWithIdAndValue[]; + coordinates: ObjectWithIdAndValue[]; + units: string; + cell: Vector[]; +} + +interface Overlap { + id1: number; + id2: number; + element1: string; + element2: string; +} /** * A class representing a crystal basis. */ export class Basis { - /** - * Create a Basis class. - * @param {Object} - Config object. - * @param {Array|ArrayWithIds} elements - chemical elements for atoms in basis. - * @param {Array|ArrayWithIds} coordinates - coordinates for the atoms in basis. - * @param {String} units - units for the coordinates (eg. angstrom, crystal). - * @param {Cell} cell - crystal cell corresponding to the basis (eg. to convert to crystal coordinates). - * @param {Boolean} isEmpty - crystal cell corresponding to the basis (eg. to convert to crystal coordinates). - */ + _elements: ArrayWithIds; + + _coordinates: ArrayWithIds; + + units: string; + + cell: Vector[]; + constructor({ elements = ["Si"], coordinates = [[0, 0, 0]], units, cell = Basis.defaultCell, // by default, assume a cubic unary cell isEmpty = false, // whether to generate an empty Basis - }) { - let _elements, _coordinates, _units; + }: BasisProps) { + const _elements = isEmpty ? [] : elements; + const _coordinates = isEmpty ? [] : coordinates; + const _units = units || Basis.unitsOptionsDefaultValue; + if (!units) { - _units = Basis.unitsOptionsDefaultValue; console.warn("Basis.constructor: units are not provided => set to crystal"); - } else { - _units = units; - } - if (isEmpty) { - _elements = []; - _coordinates = []; - } else { - _elements = elements; - _coordinates = coordinates; } + // assert that elements and coordinates have ids if not already passed in config + store Array helper classes - this._elements = new ArrayWithIds(_elements); - this._coordinates = new ArrayWithIds(_coordinates); + this._elements = new ArrayWithIds(_elements); + this._coordinates = new ArrayWithIds(_coordinates); this.units = _units; this.cell = cell; } @@ -112,45 +143,57 @@ export class Basis { ] } */ - toJSON() { - return JSON.parse( - JSON.stringify(_.pick(this, ["elements", "coordinates", "units", "cell"])), - ); + toJSON(): BasisSchema { + const json = { + elements: this.elements, + coordinates: this.coordinates, + units: this.units, + cell: this.cell, + }; + + return JSON.parse(JSON.stringify(json)); } /** * Create an identical copy of the class instance. - * @param {Object} extraContext - Extra context to be passed to the new class instance on creation. + * @param extraContext - Extra context to be passed to the new class instance on creation. */ - clone(extraContext) { - return new this.constructor({ ...this.toJSON(), ...extraContext }); + clone(extraContext?: Partial): Basis { + return new (this.constructor as typeof Basis)({ + ...this.toJSON(), + ...extraContext, + }); } - getElementByIndex(idx) { + getElementByIndex(idx: number): string { return this._elements.getArrayElementByIndex(idx); } - getCoordinateByIndex(idx) { + getCoordinateByIndex(idx: number): Coordinate { return this._coordinates.getArrayElementByIndex(idx); } - get elementsArray() { + get elementsArray(): string[] { return this._elements.array; } - get elements() { + get elements(): ObjectWithIdAndValue[] { return this._elements.toJSON(); } /** * Set basis elements to passed array. - * @param {Array|ArrayWithIds} elementsArray - New elements array. + * @param elementsArray - New elements array. */ - set elements(elementsArray) { - this._elements = new ArrayWithIds(elementsArray); + set elements(elementsArray: string[] | ObjectWithIdAndValue[]) { + this._elements = new ArrayWithIds(elementsArray); } - get coordinates() { + getElementsAsObject(): ObjectWithIdAndValue[] { + return this._elements.toJSON(); + } + + get coordinates(): ObjectWithIdAndValue[] { return this._coordinates.toJSON(); } @@ -158,8 +201,8 @@ export class Basis { * Set basis elements to passed array. * @param {Array|ArrayWithIds} coordinatesNestedArray - New coordinates array. */ - set coordinates(coordinatesNestedArray) { - this._coordinates = new ArrayWithIds(coordinatesNestedArray); + set coordinates(coordinatesNestedArray: Coordinate[] | ObjectWithIdAndValue[]) { + this._coordinates = new ArrayWithIds(coordinatesNestedArray); } get coordinatesAsArray() { @@ -177,14 +220,18 @@ export class Basis { toCartesian() { const unitCell = this.cell; if (this.units === ATOMIC_COORD_UNITS.cartesian) return; - this._coordinates.mapArrayInPlace((point) => math.multiply(point, unitCell)); + this._coordinates.mapArrayInPlace( + (point) => math.multiply(point, unitCell) as unknown as Coordinate, + ); this.units = ATOMIC_COORD_UNITS.cartesian; } toCrystal() { const unitCell = this.cell; if (this.units === ATOMIC_COORD_UNITS.crystal) return; - this._coordinates.mapArrayInPlace((point) => math.multiply(point, math.inv(unitCell))); + this._coordinates.mapArrayInPlace( + (point) => math.multiply(point, math.inv(unitCell)) as unknown as Coordinate, + ); this.units = ATOMIC_COORD_UNITS.crystal; } @@ -193,11 +240,11 @@ export class Basis { */ toStandardRepresentation() { this.toCrystal(); - this._coordinates.mapArrayInPlace((point) => point.map((x) => math.mod(x))); + this._coordinates.mapArrayInPlace((point) => point.map((x) => math.mod(x)) as Coordinate); } /** A representation where all coordinates are within 0 and 1 in crystal units */ - get standardRepresentation() { + get standardRepresentation(): BasisSchema { const originalUnits = this.units; this.toStandardRepresentation(); @@ -211,58 +258,32 @@ export class Basis { /** * Add atom with a chemical element at coordinate. - * @param {Object} config - * @param {String} element - Chemical element. - * @param {Array} coordinate - 3-dimensional coordinate. */ - addAtom({ element = "Si", coordinate = [0.5, 0.5, 0.5] }) { + addAtom({ element = "Si", coordinate = [0.5, 0.5, 0.5] }: Atom) { this._elements.addElement(element); this._coordinates.addElement(coordinate); } /** * Remove atom with a chemical element at coordinate either by passing the (element AND coordinate) OR id. - * @param {Object} config - * @param {String} element - Chemical element. - * @param {Array} coordinate - 3-dimensional coordinate. - * @param {Number} id - numeric id of the element (optional). */ - removeAtom({ element, coordinate, id }) { + removeAtom({ element, coordinate, id }: Atom) { if (element && coordinate.length > 0) { this._elements.removeElement(element, id); this._coordinates.removeElement(coordinate, id); } } - /** - * Remove atom at a particular coordinate. - * @param {Object} config - * @param {Array} coordinate - 3-dimensional coordinate. - */ - removeAtomAtCoordinate({ coordinate }) { - if (coordinate.length > 0) { - const index = this._coordinates.getArrayIndexByPredicate((arrayCoordinate) => { - return math.roundToZero(math.vDist(arrayCoordinate, coordinate)) === 0; - }); - if (index > -1) { - this._elements.removeElement(null, index); - this._coordinates.removeElement(null, index); - } - } - } - /** * Unique names (symbols) of the chemical elements basis. E.g. `['Si', 'Li']` - * @return {Array} */ - get uniqueElements() { + get uniqueElements(): string[] { return _.unique(this._elements.array); } /** * Returns unique chemical elements with their count sorted by electronegativity. * `{ "Fe": 4.0, "O": 8.0, "Li": 2.0}`. - * @return {Object} */ get uniqueElementCountsSortedByElectronegativity() { return _.chain(this.elements) @@ -276,12 +297,11 @@ export class Basis { * Returns chemical elements with their count wrt their original order in the basis. * Note: entries for the same element separated by another element are considered separately. * [{"count":1, "value":"Zr"}, {"count":23, "value":"H"}, {"count":11, "value":"Zr"}, {"count":1, "value":"H"}] - * @return {Object} */ - get elementCounts() { - const elementCounts = []; - this.elements.forEach((element, index) => { - const previousElement = this.elements[index - 1]; + get elementCounts(): ElementCount[] { + const elementCounts: ElementCount[] = []; + this.getElementsAsObject().forEach((element, index) => { + const previousElement = this.getElementsAsObject()[index - 1]; if (previousElement && previousElement.value === element.value) { const previousElementCount = elementCounts[elementCounts.length - 1]; previousElementCount.count += 1; @@ -297,9 +317,8 @@ export class Basis { /** * Reduced formula in IUPAC format. E.g., Na2SO4 - * @return {String} */ - get formula() { + get formula(): string { const counts = this.uniqueElementCountsSortedByElectronegativity; const countsValues = _.values(counts); const gcd = countsValues.length > 1 ? math.gcd(...countsValues) : countsValues[0]; @@ -312,9 +331,8 @@ export class Basis { /** * Returns the unit cell formula as object `{ "Fe": 4.0, "O": 8.0, "Li": 2.0}` - * @return {Array} */ - get unitCellFormula() { + get unitCellFormula(): string { const counts = this.uniqueElementCountsSortedByElectronegativity; return _.pairs(counts) .map((x) => x[0] + (x[1] === 1 ? "" : x[1])) @@ -326,12 +344,10 @@ export class Basis { /** * Returns a nested array with elements and their corresponding coordinates * @example Output: [ ["Si", [0,0,0]], ["Si", [0.5,0.5,0.5]] ] - * @return {Array} */ - get elementsAndCoordinatesArray() { - const clsInstance = this; + get elementsAndCoordinatesArray(): [string, Coordinate][] { return this._elements.array.map((element, idx) => { - const coordinates = clsInstance.getCoordinateByIndex(idx); + const coordinates = this.getCoordinateByIndex(idx); return [element, coordinates]; }); } @@ -346,9 +362,8 @@ export class Basis { * result: "Si 0,1,0;Si 1,0,0" * ``` * This guarantees the independence from the order in the elements array. - * @return {String} */ - getAsSortedString() { + getAsSortedString(): string { // make a copy to prevent modifying class values const clsInstance = new Basis(this.toJSON()); clsInstance.toStandardRepresentation(); @@ -363,9 +378,8 @@ export class Basis { /** * Returns a string for hash calculation (in crystal units) - * @return {String} */ - get hashString() { + get hashString(): string { const originallyInCartesianUnits = this.isInCartesianUnits; this.toCrystal(); @@ -380,9 +394,8 @@ export class Basis { /** * Returns an array of strings with chemical elements and their atomic positions. * E.g., ``` ['Si 0 0 0', 'Li 0.5 0.5 0.5']``` - * @return {String[]} */ - get atomicPositions() { + get atomicPositions(): string[] { return this.elementsAndCoordinatesArray.map((entry) => { const element = entry[0]; const coordinate = entry[1]; @@ -393,7 +406,7 @@ export class Basis { /** * @summary Returns number of atoms in material */ - get nAtoms() { + get nAtoms(): number { return this._elements.array.length; } @@ -402,18 +415,16 @@ export class Basis { /** * @summary Returns true if bases are equal, otherwise - false. * @param anotherBasisClsInstance {Basis} Another Basis. - * @return {Boolean} */ - isEqualTo(anotherBasisClsInstance) { + isEqualTo(anotherBasisClsInstance: Basis): boolean { return this.hashString === anotherBasisClsInstance.hashString; } /** * @summary Returns true if basis cells are equal, otherwise - false. * @param anotherBasisClsInstance {Basis} Another Basis. - * @return {Boolean} */ - hasEquivalentCellTo(anotherBasisClsInstance) { + hasEquivalentCellTo(anotherBasisClsInstance: Basis): boolean { // this.cell {Array} - Cell Vectors 1, eg. [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]] // prettier-ignore return !this.cell @@ -427,9 +438,8 @@ export class Basis { * @summary function returns the minimum basis lattice size for a structure. * The lattice size is based on the atomic radius of an element if the basis contains a single atom. * The lattice size is based on the maximum pairwise distance across a structure if the basis contains > 2 atoms. - * @returns {Number} */ - getMinimumLatticeSize(latticeScalingFactor = nonPeriodicLatticeScalingFactor) { + getMinimumLatticeSize(latticeScalingFactor = nonPeriodicLatticeScalingFactor): number { let latticeSizeAdditiveContribution = 0; if (this._elements.array.length === 1) { const elementSymbol = this._elements.getArrayElementByIndex(0); @@ -442,13 +452,12 @@ export class Basis { /** * @summary function returns an array of overlapping atoms within specified tolerance. - * @returns {{element: String, id: Number}[]} */ - getOverlappingAtoms() { + getOverlappingAtoms(): Overlap[] { // to simplify calculations, convert to cartesian coordinates this.toCartesian(); const { coordinates, elements } = this; - const overlaps = []; + const overlaps: Overlap[] = []; // temporary value for overlap approximation, where atoms most certainly can't be located const overlapCoefficient = 0.75; @@ -462,7 +471,8 @@ export class Basis { overlapCoefficient * (getElementAtomicRadius(el1) + getElementAtomicRadius(el2)); // in angstroms - const distance = math.vDist(entry1.value, entry2.value); + // @ts-ignore + const distance = math.vDist(entry1.value, entry2.value) as number; if (distance < tolerance) { overlaps.push({ id1: i, @@ -492,9 +502,8 @@ export class Basis { * - - - ... ... * - - - ... ... pair n-1, n * - * @returns {Number} */ - get maxPairwiseDistance() { + get maxPairwiseDistance(): number { const originalUnits = this.units; this.toCartesian(); let maxDistance = 0; @@ -505,7 +514,9 @@ export class Basis { this._coordinates.getArrayElementByIndex(i), this._coordinates.getArrayElementByIndex(j), ); + // @ts-ignore if (distance > maxDistance) { + // @ts-ignore maxDistance = distance; } } @@ -532,13 +543,12 @@ export class Basis { * [z1, z2, ...zn]] * * Returns an array = [xCenter, yCenter, zCenter] - * @returns {Array} */ - get centerOfCoordinatesPoint() { + get centerOfCoordinatesPoint(): number[] { const transposedBasisCoordinates = math.transpose(this._coordinates.array); const centerOfCoordinatesVectors = []; for (let i = 0; i < 3; i++) { - const center = + const center = // @ts-ignore transposedBasisCoordinates[i].reduce((a, b) => a + b) / this._elements.array.length; centerOfCoordinatesVectors.push(math.precise(center, 4)); } @@ -547,10 +557,9 @@ export class Basis { /** * @summary Function translates coordinates by the vector passed as an argument. - * @param {Array} translationVector - */ - translateByVector(translationVector) { + translateByVector(translationVector: number[]) { + // @ts-ignore this._coordinates.mapArrayInPlace((x) => math.add(x, translationVector)); } } diff --git a/src/basis/constrained_basis.js b/src/basis/constrained_basis.ts similarity index 59% rename from src/basis/constrained_basis.js rename to src/basis/constrained_basis.ts index 0969edeb..6b7609a3 100644 --- a/src/basis/constrained_basis.js +++ b/src/basis/constrained_basis.ts @@ -1,34 +1,51 @@ +// import { BasisSchema } from "@exabyte-io/code.js/src/types"; import s from "underscore.string"; import { ArrayWithIds } from "../abstract/array_with_ids"; -import { AtomicConstraints } from "../constraints/constraints"; -import { Basis } from "./basis"; +import { ObjectWithIdAndValue } from "../abstract/scalar_with_id"; +import { AtomicConstraints, Constraint, ConstraintValue } from "../constraints/constraints"; +import { Basis, BasisProps, BasisSchema } from "./basis"; +import { Coordinate } from "./types"; + +export interface ConstrainedBasisProps extends BasisProps { + constraints: Constraint[]; +} + +export interface ConstrainedBasisJSON extends BasisSchema { + constraints: ObjectWithIdAndValue[]; +} /** * @summary Extension of the Basis class able to deal with atomic constraints. * @extends Basis */ export class ConstrainedBasis extends Basis { + _constraints: ArrayWithIds; + /** * Create a an array with ids. * @param {Object} config * @param {ArrayWithIds|Array} config.constraints - atomic constraints. */ - constructor(config) { + constructor(config: ConstrainedBasisProps) { super(config); - this._constraints = new ArrayWithIds(config.constraints); // `constraints` is an Array with ids + this._constraints = new ArrayWithIds(config.constraints); // `constraints` is an Array with ids } get constraints() { - return this._constraints; + return this._constraints.array; } - set constraints(newConstraints) { + set constraints(newConstraints: ConstraintValue[]) { this._constraints = new ArrayWithIds(newConstraints); } + getConstraintAsArray() { + return this._constraints; + } + get AtomicConstraints() { - return AtomicConstraints.fromArray(this.constraints.array); + return AtomicConstraints.fromArray(this.constraints); } /** @@ -48,26 +65,24 @@ export class ConstrainedBasis extends Basis { ] } */ - toJSON() { + toJSON(): ConstrainedBasisJSON { return { ...super.toJSON(), - constraints: this.constraints.toJSON(), + constraints: this._constraints.toJSON(), }; } - getConstraintByIndex(idx) { + getConstraintByIndex(idx: number): ConstraintValue { return this._constraints.getArrayElementByIndex(idx) || []; } /** * Helper function returning a nested array with [element, coordinates, constraints] as elements - * @return {Array[]} */ - get elementsCoordinatesConstraintsArray() { - const clsInstance = this; + get elementsCoordinatesConstraintsArray(): [string, Coordinate, ConstraintValue][] { return this._elements.array.map((element, idx) => { - const coordinates = clsInstance.getCoordinateByIndex(idx); - const constraints = clsInstance.getConstraintByIndex(idx); + const coordinates = this.getCoordinateByIndex(idx); + const constraints = this.getConstraintByIndex(idx); return [element, coordinates, constraints]; }); } @@ -75,9 +90,8 @@ export class ConstrainedBasis extends Basis { /** * Returns an array with atomic positions (with constraints) per atom stored as strings. * E.g., ``` ['Si 0 0 0 0 1 0', 'Li 0.5 0.5 0.5 1 0 1']``` - * @return {String[]} */ - get atomicPositionsWithConstraints() { + get atomicPositionsWithConstraints(): string[] { return this.elementsCoordinatesConstraintsArray.map((entry) => { const element = entry[0]; const coordinate = entry[1]; diff --git a/src/basis/types.ts b/src/basis/types.ts new file mode 100644 index 00000000..b3f7b083 --- /dev/null +++ b/src/basis/types.ts @@ -0,0 +1 @@ +export type Coordinate = [number, number, number]; diff --git a/src/cell/cell.js b/src/cell/cell.ts similarity index 60% rename from src/cell/cell.js rename to src/cell/cell.ts index 70e19fe0..031836c0 100644 --- a/src/cell/cell.js +++ b/src/cell/cell.ts @@ -1,11 +1,16 @@ +import { Coordinate } from "../basis/types"; import constants from "../constants"; +import { Vector, VectorsAsArray } from "../lattice/types"; import math from "../math"; const MATRIX = math.matrix; const MULT = math.multiply; const INV = math.inv; +// @ts-ignore const MATRIX_MULT = (...args) => MULT(...args.map((x) => MATRIX(x))).toArray(); +type Point = Coordinate | math.Matrix | math.MathType; + /* * Cell represents a unit cell in geometrical form: 3x3 matrix where rows are cell vectors. * Example: [[1, 0, 0], [0, 1, 0], [0, 0, 1]]. @@ -13,34 +18,43 @@ const MATRIX_MULT = (...args) => MULT(...args.map((x) => MATRIX(x))).toArray(); export class Cell { tolerance = 1; + vector1: Vector; + + vector2: Vector; + + vector3: Vector; + /** * Create a cell. * @param nestedArray {Number[][]} is an array of cell vectors in cartesian Angstrom units. */ - constructor(nestedArray) { + constructor(nestedArray: VectorsAsArray) { [this.vector1, this.vector2, this.vector3] = nestedArray; } /** * Get cell vectors as (a nested) array. - * @return {Array[]} * @example [[1, 0, 0], [0, 1, 0], [0, 0, 1]] */ - get vectorsAsArray() { + get vectorsAsArray(): VectorsAsArray { return [ this.vector1, this.vector2, this.vector3, // assert that no near-zero artifacts are present (ie. 1.6 x 10^-16) before attempting inversion // @param tolerance {Number} Maximum tolerance to small numbers, used to avoid artifacts on matrix inversion - ].map((v) => v.map((c) => (math.abs(c) < constants.tolerance.lengthAngstrom ? 0 : c))); + ].map((v) => v.map((c) => (math.abs(c) < constants.tolerance.lengthAngstrom ? 0 : c))) as [ + Vector, + Vector, + Vector, + ]; } - clone() { - return new this.constructor(this.vectorsAsArray); + clone(): Cell { + return new (this.constructor as typeof Cell)(this.vectorsAsArray); } - cloneAndScaleByMatrix(matrix) { + cloneAndScaleByMatrix(matrix: number[][]) { const newCell = this.clone(); newCell.scaleByMatrix(matrix); return newCell; @@ -48,38 +62,38 @@ export class Cell { /** * Convert a point (in crystal coordinates) to cartesian. - * @return {Array} */ - convertPointToCartesian(point) { + convertPointToCartesian(point: Point) { return MULT(point, this.vectorsAsArray); } /** * Convert a point (in cartesian coordinates) to crystal (fractional). - * @return {Array} */ - convertPointToFractional(point) { - return MULT(point, INV(this.vectorsAsArray)); + convertPointToFractional(point: Point): Coordinate { + return MULT(point, INV(this.vectorsAsArray)) as Coordinate; } /** * Check whether a point is inside the cell. - * @param {Array} point - the point to conduct the check for. - * @param {Number} tolerance - numerical tolerance. - * @return {Boolean} + * @param point - the point to conduct the check for. + * @param tolerance - numerical tolerance. */ - isPointInsideCell(point, tolerance = constants.tolerance.length) { - return this.convertPointToFractional(point) - .map((c) => math.isBetweenZeroInclusiveAndOne(c, tolerance)) - .reduce((a, b) => a && b); + isPointInsideCell(point: Point, tolerance = constants.tolerance.length): boolean { + return ( + this.convertPointToFractional(point) + .map((c: number) => math.isBetweenZeroInclusiveAndOne(c, tolerance)) + // @ts-ignore + .reduce((a: boolean, b: boolean): boolean => a && b) + ); } /** * Returns the index of the cell vector, most collinear with the testVector. * @param testVector - * @return {Number} */ - getMostCollinearVectorIndex(testVector) { + getMostCollinearVectorIndex(testVector: Vector): number { + // @ts-ignore const angles = this.vectorsAsArray.map((v) => math.angleUpTo90(v, testVector)); return angles.findIndex((el) => el === math.min(angles)); } @@ -87,7 +101,7 @@ export class Cell { /** * Scale this cell by right-multiplying it to a matrix (nested array) */ - scaleByMatrix(matrix) { + scaleByMatrix(matrix: number[][]) { [this.vector1, this.vector2, this.vector3] = MATRIX_MULT(matrix, this.vectorsAsArray); } } diff --git a/src/cell/conventional_cell.js b/src/cell/conventional_cell.js deleted file mode 100644 index aa0f5704..00000000 --- a/src/cell/conventional_cell.js +++ /dev/null @@ -1,96 +0,0 @@ -import { LATTICE_TYPE } from "../lattice/types"; -import math from "../math"; - -/** - * Routines for calculating conventional cell vectors from primitive cell Bravais parameters. - * Following Setyawan, W., & Curtarolo, S. (2010). doi:10.1016/j.commatsci.2010.05.010 - */ - -const unitMatrix = [ - [1, 0, 0], - [0, 1, 0], - [0, 0, 1], -]; - -// (Conventional cellVectors) = (Primitive cellVectors) * (PRIMITIVE_TO_CONVENTIONAL_CELL_MULTIPLIER matrix) -export const PRIMITIVE_TO_CONVENTIONAL_CELL_MULTIPLIERS = { - // PRIMITIVE => CONVENTIONAL - [LATTICE_TYPE.CUB]: unitMatrix, - [LATTICE_TYPE.FCC]: [ - [-1, 1, 1], - [1, -1, 1], - [1, 1, -1], - ], - [LATTICE_TYPE.BCC]: [ - [0, 1, 1], - [1, 0, 1], - [1, 1, 0], - ], - [LATTICE_TYPE.TET]: unitMatrix, - [LATTICE_TYPE.BCT]: [ - [0, 1, 1], - [1, 0, 1], - [1, 1, 0], - ], - [LATTICE_TYPE.ORC]: unitMatrix, - [LATTICE_TYPE.ORCF]: [ - [-1, 1, 1], - [1, -1, 1], - [1, 1, -1], - ], - [LATTICE_TYPE.ORCI]: [ - [0, 1, 1], - [1, 0, 1], - [1, 1, 0], - ], - [LATTICE_TYPE.ORCC]: [ - [1, -1, 0], - [1, 1, 0], - [0, 0, 1], - ], - [LATTICE_TYPE.HEX]: unitMatrix, - [LATTICE_TYPE.RHL]: unitMatrix, - [LATTICE_TYPE.MCL]: unitMatrix, - [LATTICE_TYPE.MCLC]: [ - [1, -1, 0], - [1, 1, 0], - [0, 0, 1], - ], - [LATTICE_TYPE.TRI]: unitMatrix, - [`${LATTICE_TYPE.TRI}alt`]: unitMatrix, -}; - -export const PRIMITIVE_TO_CONVENTIONAL_CELL_LATTICE_TYPES = { - // PRIMITIVE => CONVENTIONAL - [LATTICE_TYPE.CUB]: LATTICE_TYPE.CUB, - [LATTICE_TYPE.FCC]: LATTICE_TYPE.CUB, - [LATTICE_TYPE.BCC]: LATTICE_TYPE.CUB, - [LATTICE_TYPE.TET]: LATTICE_TYPE.TET, - [LATTICE_TYPE.BCT]: LATTICE_TYPE.TET, - [LATTICE_TYPE.ORC]: LATTICE_TYPE.ORC, - [LATTICE_TYPE.ORCF]: LATTICE_TYPE.ORC, - [LATTICE_TYPE.ORCI]: LATTICE_TYPE.ORC, - [LATTICE_TYPE.ORCC]: LATTICE_TYPE.ORC, - [LATTICE_TYPE.HEX]: LATTICE_TYPE.HEX, - [LATTICE_TYPE.RHL]: LATTICE_TYPE.RHL, - [LATTICE_TYPE.MCL]: LATTICE_TYPE.MCL, - [LATTICE_TYPE.MCLC]: LATTICE_TYPE.MCL, - [LATTICE_TYPE.TRI]: LATTICE_TYPE.TRI, - // TODO: Legacy `TRI_alt` type, assert not used and remove - [`${LATTICE_TYPE.TRI}alt`]: LATTICE_TYPE.TRI, -}; - -export function isConventionalCellSameAsPrimitiveForLatticeType(latticeType) { - const multiplier = PRIMITIVE_TO_CONVENTIONAL_CELL_MULTIPLIERS[latticeType || LATTICE_TYPE.TRI]; - return multiplier === unitMatrix; -} - -/** - * Returns lattice vectors of a conventional cell for a primitive lattice. - * @param {Lattice} lattice - Lattice instance. - * @return {Array[]} Cell.vectorsAsArray - */ -export function getConventionalCellFromPrimitiveLattice(lattice) { - const multiplier = PRIMITIVE_TO_CONVENTIONAL_CELL_MULTIPLIERS[lattice.type || LATTICE_TYPE.TRI]; - return math.multiply(math.matrix(multiplier), math.matrix(lattice.vectorArrays)).toArray(); -} diff --git a/src/cell/conventional_cell.ts b/src/cell/conventional_cell.ts new file mode 100644 index 00000000..e8ab9194 --- /dev/null +++ b/src/cell/conventional_cell.ts @@ -0,0 +1,89 @@ +import { LatticeTypeSchema } from "@exabyte-io/code.js/src/types"; + +/** + * Routines for calculating conventional cell vectors from primitive cell Bravais parameters. + * Following Setyawan, W., & Curtarolo, S. (2010). doi:10.1016/j.commatsci.2010.05.010 + */ + +const unitMatrix = [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1], +]; + +// (Conventional cellVectors) = (Primitive cellVectors) * (PRIMITIVE_TO_CONVENTIONAL_CELL_MULTIPLIER matrix) +export const PRIMITIVE_TO_CONVENTIONAL_CELL_MULTIPLIERS = { + // PRIMITIVE => CONVENTIONAL + CUB: unitMatrix, + FCC: [ + [-1, 1, 1], + [1, -1, 1], + [1, 1, -1], + ], + BCC: [ + [0, 1, 1], + [1, 0, 1], + [1, 1, 0], + ], + TET: unitMatrix, + BCT: [ + [0, 1, 1], + [1, 0, 1], + [1, 1, 0], + ], + ORC: unitMatrix, + ORCF: [ + [-1, 1, 1], + [1, -1, 1], + [1, 1, -1], + ], + ORCI: [ + [0, 1, 1], + [1, 0, 1], + [1, 1, 0], + ], + ORCC: [ + [1, -1, 0], + [1, 1, 0], + [0, 0, 1], + ], + HEX: unitMatrix, + RHL: unitMatrix, + MCL: unitMatrix, + MCLC: [ + [1, -1, 0], + [1, 1, 0], + [0, 0, 1], + ], + TRI: unitMatrix, + TRIalt: unitMatrix, +}; + +export const PRIMITIVE_TO_CONVENTIONAL_CELL_LATTICE_TYPES: { + [key in LatticeTypeSchema | "TRIalt"]: LatticeTypeSchema; +} = { + // PRIMITIVE => CONVENTIONAL + CUB: "CUB", + FCC: "CUB", + BCC: "CUB", + TET: "TET", + BCT: "TET", + ORC: "ORC", + ORCF: "ORC", + ORCI: "ORC", + ORCC: "ORC", + HEX: "HEX", + RHL: "RHL", + MCL: "MCL", + MCLC: "MCL", + TRI: "TRI", + // TODO: Legacy `TRI_alt` type, assert not used and remove + TRIalt: "TRI", +}; + +export function isConventionalCellSameAsPrimitiveForLatticeType( + latticeType: LatticeTypeSchema, +): boolean { + const multiplier = PRIMITIVE_TO_CONVENTIONAL_CELL_MULTIPLIERS[latticeType || "TRI"]; + return multiplier === unitMatrix; +} diff --git a/src/cell/primitive_cell.js b/src/cell/primitive_cell.ts similarity index 74% rename from src/cell/primitive_cell.js rename to src/cell/primitive_cell.ts index 15ddec38..77fa1315 100644 --- a/src/cell/primitive_cell.js +++ b/src/cell/primitive_cell.ts @@ -1,5 +1,7 @@ /* eslint no-unused-vars: 0 */ -import { LATTICE_TYPE } from "../lattice/types"; +import { LatticeImplicitSchema } from "@exabyte-io/code.js/src/types"; + +import { VectorsAsArray } from "../lattice/types"; import math from "../math"; /** @@ -7,7 +9,7 @@ import math from "../math"; * Following Setyawan, W., & Curtarolo, S. (2010). doi:10.1016/j.commatsci.2010.05.010 */ const PRIMITIVE_CELLS = { - [LATTICE_TYPE.CUB]: ({ a, b, c, alpha, beta, gamma }) => { + CUB: ({ a }: LatticeImplicitSchema): VectorsAsArray => { return [ [a, 0, 0], [0, a, 0], @@ -15,7 +17,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.FCC]: ({ a, b, c, alpha, beta, gamma }) => { + FCC: ({ a }: LatticeImplicitSchema): VectorsAsArray => { return [ [0.0, a / 2, a / 2], [a / 2, 0.0, a / 2], @@ -23,7 +25,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.BCC]: ({ a, b, c, alpha, beta, gamma }) => { + BCC: ({ a }: LatticeImplicitSchema): VectorsAsArray => { return [ [-a / 2, a / 2, a / 2], [a / 2, -a / 2, a / 2], @@ -31,7 +33,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.TET]: ({ a, b, c, alpha, beta, gamma }) => { + TET: ({ a, c }: LatticeImplicitSchema): VectorsAsArray => { return [ [a, 0, 0], [0, a, 0], @@ -39,7 +41,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.BCT]: ({ a, b, c, alpha, beta, gamma }) => { + BCT: ({ a, c }: LatticeImplicitSchema): VectorsAsArray => { return [ [-a / 2, a / 2, c / 2], [a / 2, -a / 2, c / 2], @@ -47,7 +49,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.ORC]: ({ a, b, c, alpha, beta, gamma }) => { + ORC: ({ a, b, c }: LatticeImplicitSchema): VectorsAsArray => { return [ [a, 0, 0], [0, b, 0], @@ -55,7 +57,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.ORCF]: ({ a, b, c, alpha, beta, gamma }) => { + ORCF: ({ a, b, c }: LatticeImplicitSchema): VectorsAsArray => { return [ [0, b / 2, c / 2], [a / 2, 0, c / 2], @@ -63,7 +65,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.ORCI]: ({ a, b, c, alpha, beta, gamma }) => { + ORCI: ({ a, b, c }: LatticeImplicitSchema): VectorsAsArray => { return [ [-a / 2, b / 2, c / 2], [a / 2, -b / 2, c / 2], @@ -71,7 +73,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.ORCC]: ({ a, b, c, alpha, beta, gamma }) => { + ORCC: ({ a, b, c }: LatticeImplicitSchema): VectorsAsArray => { return [ [a / 2, b / 2, 0], [-a / 2, b / 2, 0], @@ -79,7 +81,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.HEX]: ({ a, b, c, alpha, beta, gamma }) => { + HEX: ({ a, c }: LatticeImplicitSchema): VectorsAsArray => { return [ [a / 2, (-a * math.sqrt(3)) / 2, 0], [a / 2, (a * math.sqrt(3)) / 2, 0], @@ -87,7 +89,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.RHL]: ({ a, b, c, alpha, beta, gamma }) => { + RHL: ({ a, alpha }: LatticeImplicitSchema): VectorsAsArray => { const cosAlpha = math.cos((alpha / 180) * math.PI); const cosHalfAlpha = math.sqrt((1 / 2) * (1 + cosAlpha)); const sinHalfAlpha = math.sqrt((1 / 2) * (1 - cosAlpha)); @@ -102,7 +104,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.MCL]: ({ a, b, c, alpha, beta, gamma }) => { + MCL: ({ a, b, c, alpha }: LatticeImplicitSchema): VectorsAsArray => { const cosAlpha = math.cos((alpha / 180) * math.PI); return [ [a, 0, 0], @@ -111,7 +113,7 @@ const PRIMITIVE_CELLS = { ]; }, - [LATTICE_TYPE.MCLC]: ({ a, b, c, alpha, beta, gamma }) => { + MCLC: ({ a, b, c, alpha }: LatticeImplicitSchema): VectorsAsArray => { const cosAlpha = math.cos((alpha / 180) * math.PI); return [ [a / 2, b / 2, 0], @@ -121,15 +123,16 @@ const PRIMITIVE_CELLS = { }, // Algorithm from http://pymatgen.org/_modules/pymatgen/core/lattice.html (from_params) - [LATTICE_TYPE.TRI]: ({ a, b, c, alpha, beta, gamma }) => { + TRI: ({ a, b, c, alpha, beta, gamma }: LatticeImplicitSchema): VectorsAsArray => { // convert angles to Radians // eslint-disable-next-line no-param-reassign [alpha, beta, gamma] = [alpha, beta, gamma].map( + // @ts-ignore (x) => math.unit(x, "degree").to("rad").value, ); const [cosAlpha, cosBeta, cosGamma] = [alpha, beta, gamma].map((x) => math.cos(x)); - const [sinAlpha, sinBeta, sinGamma] = [alpha, beta, gamma].map((x) => math.sin(x)); + const [sinAlpha, sinBeta] = [alpha, beta].map((x) => math.sin(x)); const gammaStar = math.acos((cosAlpha * cosBeta - cosGamma) / (sinAlpha * sinBeta)); const cosGammaStar = math.cos(gammaStar); const sinGammaStar = math.sin(gammaStar); @@ -142,7 +145,7 @@ const PRIMITIVE_CELLS = { }, // alternative implementation - [`${LATTICE_TYPE.TRI}alt`]: ({ a, b, c, alpha, beta, gamma }) => { + TRIalt: ({ a, b, c, alpha, beta, gamma }: LatticeImplicitSchema): VectorsAsArray => { const cosAlpha = math.cos((alpha / 180) * math.PI); const cosBeta = math.cos((beta / 180) * math.PI); const cosGamma = math.cos((gamma / 180) * math.PI); @@ -167,12 +170,15 @@ const PRIMITIVE_CELLS = { /** * Returns lattice vectors for a primitive cell for a lattice. - * @param {Lattice} lattice - Lattice instance. - * @param {Boolean[]} skipRounding - whether to skip rounding the lattice vectors. - * @return {Array[]} Cell.vectorsAsArray + * @param lattice - Lattice instance. + * @param skipRounding - whether to skip rounding the lattice vectors. + * @return Cell.vectorsAsArray */ -export function primitiveCell(lattice, skipRounding = false) { - const [vectorA, vectorB, vectorC] = PRIMITIVE_CELLS[lattice.type || LATTICE_TYPE.TRI](lattice); +export function primitiveCell( + lattice: LatticeImplicitSchema, + skipRounding = false, +): VectorsAsArray { + const [vectorA, vectorB, vectorC] = PRIMITIVE_CELLS[lattice.type || "TRI"](lattice); // set precision and remove JS floating point artifacts if (!skipRounding) { [vectorA, vectorB, vectorC].map((vec) => diff --git a/src/constraints/constraints.js b/src/constraints/constraints.ts similarity index 54% rename from src/constraints/constraints.js rename to src/constraints/constraints.ts index b9e0cd40..c2af7d0d 100644 --- a/src/constraints/constraints.js +++ b/src/constraints/constraints.ts @@ -1,7 +1,20 @@ import { ArrayWithIds } from "../abstract/array_with_ids"; +import { ObjectWithIdAndValue } from "../abstract/scalar_with_id"; + +export interface ConstraintValue extends Array { + 0: boolean; + 1: boolean; + 2: boolean; +} + +export type Constraint = ObjectWithIdAndValue; export class AtomicConstraints { - static fromArray(array) { + name: string; + + values: ArrayWithIds; + + static fromArray(array: ConstraintValue[]) { return new AtomicConstraints({ values: array }); } @@ -10,9 +23,9 @@ export class AtomicConstraints { * @param {Object} config * @param {ArrayWithIds|Array} config.values */ - constructor(config = {}) { + constructor({ values }: { values?: ConstraintValue[] }) { this.name = "atomic_constraints"; - this.values = new ArrayWithIds(config.values || []); + this.values = new ArrayWithIds(values || []); } /** @@ -35,17 +48,16 @@ export class AtomicConstraints { }; } - getByIndex(idx) { + getByIndex(idx: number): ConstraintValue { return this.values.getArrayElementByIndex(idx) || []; } /** * Get constraints for an atom with index as string. - * @param {Number} idx - atom index. - * @param {Function} mapFn (OPTIONAL) - a function to be applied to each constraint. By default 0 or 1 is returned. - * @return {String[]} + * @param idx - atom index. + * @param mapFn (OPTIONAL) - a function to be applied to each constraint. By default 0 or 1 is returned. */ - getAsStringByIndex(idx, mapFn = (boolean) => (boolean ? 1 : 0)) { + getAsStringByIndex(idx: number, mapFn = (val: boolean): string => (val ? "1" : "0")): string { return this.getByIndex(idx).map(mapFn).join(" "); } } diff --git a/src/lattice/lattice.js b/src/lattice/lattice.ts similarity index 71% rename from src/lattice/lattice.js rename to src/lattice/lattice.ts index 222449e8..ce3e264f 100644 --- a/src/lattice/lattice.js +++ b/src/lattice/lattice.ts @@ -1,3 +1,8 @@ +import { + LatticeImplicitSchema, + LatticeSchema, + LatticeTypeExtendedSchema, +} from "@exabyte-io/code.js/src/types"; import lodash from "lodash"; import _ from "underscore"; @@ -5,10 +10,10 @@ import { Cell } from "../cell/cell"; import { primitiveCell } from "../cell/primitive_cell"; import { HASH_TOLERANCE } from "../constants"; import math from "../math"; -import { LatticeBravais } from "./lattice_bravais"; -import { LatticeVectors } from "./lattice_vectors"; -import { LATTICE_TYPE, LATTICE_TYPE_CONFIGS, LATTICE_TYPE_EXTENDED } from "./types"; -import { UnitCell } from "./unit_cell"; +import { FromVectorsProps, LatticeBravais } from "./lattice_bravais"; +import { BravaisConfigProps, LatticeVectors } from "./lattice_vectors"; +import { LATTICE_TYPE_CONFIGS } from "./types"; +import { UnitCell, UnitCellProps } from "./unit_cell"; /** * Scaling factor used to calculate the new lattice size for non-periodic systems. @@ -21,12 +26,14 @@ export const nonPeriodicLatticeScalingFactor = 2.0; * Follows Bravais convention for lattice types and contains lattice vectors within. * Units for lattice vector coordinates are "angstroms", and "degrees" for the corresponding angles. */ -export class Lattice extends LatticeBravais { +export class Lattice extends LatticeBravais implements LatticeSchema { + vectors: LatticeVectors; + /** * Create a Lattice class from a config object. * @param {Object} config - Config object. See LatticeVectors.fromBravais. */ - constructor(config = {}) { + constructor(config: Partial = {}) { super(config); this.vectors = LatticeVectors.fromBravais(config); } @@ -35,7 +42,7 @@ export class Lattice extends LatticeBravais { * Create a Lattice class from a list of vectors. * @param {Object} config - Config object. See LatticeBravais.fromVectors. */ - static fromVectors(config) { + static fromVectors(config: FromVectorsProps) { return new Lattice(LatticeBravais.fromVectors(config).toJSON()); } @@ -75,8 +82,9 @@ export class Lattice extends LatticeBravais { } } */ - toJSON(skipRounding = false) { - const round = skipRounding ? () => {} : Lattice._roundValue; // round values by default + toJSON(skipRounding = false): LatticeSchema { + const round = skipRounding ? (x: number) => x : Lattice._roundValue; // round values by default + return { a: round(this.a), b: round(this.b), @@ -93,13 +101,12 @@ export class Lattice extends LatticeBravais { }; } - clone(extraContext) { - return new this.constructor({ ...this.toJSON(), ...extraContext }); + clone(extraContext: BravaisConfigProps) { + return new (this.constructor as typeof Lattice)({ ...this.toJSON(), ...extraContext }); } /** * Get lattice vectors as a nested array - * @return {Array[]} */ get vectorArrays() { return this.vectors.vectorArrays; @@ -111,9 +118,8 @@ export class Lattice extends LatticeBravais { /** * Get a short label for the type of the lattice, eg. "MCLC". - * @return {String} */ - get typeLabel() { + get typeLabel(): string { return lodash.get( LATTICE_TYPE_CONFIGS.find((c) => c.code === this.type), "label", @@ -123,38 +129,37 @@ export class Lattice extends LatticeBravais { /** * Get a short label for the extended type of the lattice, eg. "MCLC-5". - * @return {String} */ - get typeExtended() { + get typeExtended(): LatticeTypeExtendedSchema { const { a, b, c, alpha, beta, gamma, type } = this; const cosAlpha = math.cos((alpha / 180) * math.PI); switch (type) { - case LATTICE_TYPE.BCT: - return c < a ? LATTICE_TYPE_EXTENDED.BCT_1 : LATTICE_TYPE_EXTENDED.BCT_2; - case LATTICE_TYPE.ORCF: + case "BCT": + return c < a ? "BCT-1" : "BCT-2"; + case "ORCF": if (1 / (a * a) >= 1 / (b * b) + 1 / (c * c)) { - return LATTICE_TYPE_EXTENDED.ORCF_1; + return "ORCF-1"; } - return LATTICE_TYPE_EXTENDED.ORCF_2; - case LATTICE_TYPE.RHL: - return cosAlpha > 0 ? LATTICE_TYPE_EXTENDED.RHL_1 : LATTICE_TYPE_EXTENDED.RHL_2; - case LATTICE_TYPE.MCLC: + return "ORCF-2"; + case "RHL": + return cosAlpha > 0 ? "RHL-1" : "RHL-2"; + case "MCLC": if (gamma >= 90) { // MCLC-1,2 - return LATTICE_TYPE_EXTENDED.MCLC_1; + return "MCLC-1"; } if ((b / c) * cosAlpha + ((b * b) / (a * a)) * (1 - cosAlpha * cosAlpha) <= 1) { // MCLC-3,4 - return LATTICE_TYPE_EXTENDED.MCLC_3; + return "MCLC-3"; } - return LATTICE_TYPE_EXTENDED.MCLC_5; - case LATTICE_TYPE.TRI: + return "MCLC-5"; + case "TRI": if (alpha > 90 && beta > 90 && gamma >= 90) { // TRI-1a,2a - return LATTICE_TYPE_EXTENDED.TRI_1a; + return "TRI_1a"; } - return LATTICE_TYPE_EXTENDED.TRI_1b; + return "TRI_1b"; default: return type; } @@ -162,9 +167,8 @@ export class Lattice extends LatticeBravais { /** * Calculate the volume of the lattice cell. - * @return {Number} */ - get volume() { + get volume(): number { return math.abs(math.det(this.vectorArrays)); } @@ -172,7 +176,7 @@ export class Lattice extends LatticeBravais { * Returns a "default" primitive lattice by type, with lattice parameters scaled by the length of "a", * @param latticeConfig {Object} LatticeBravais config (see constructor) */ - static getDefaultPrimitiveLatticeConfigByType(latticeConfig) { + static getDefaultPrimitiveLatticeConfigByType(latticeConfig: LatticeImplicitSchema) { const f_ = Lattice._roundValue; // construct new primitive cell using lattice parameters and skip rounding the vectors const pCell = primitiveCell(latticeConfig, true); @@ -193,25 +197,22 @@ export class Lattice extends LatticeBravais { // TODO: remove get unitCell() { - const vectors = _.flatten(this.vectorArrays); - vectors.push(this.units.length); - return new UnitCell(...vectors); + const vectors = [..._.flatten(this.vectorArrays), this.units.length] as UnitCellProps; + return new UnitCell(vectors); } /** * Returns a string further used for the calculation of an unique hash. - * @param {Boolean} isScaled - Whether to scale the vectors by the length of the first vector initially. - * @return {string} + * @param isScaled - Whether to scale the vectors by the length of the first vector initially. */ - getHashString(isScaled = false) { + getHashString(isScaled = false): string { // lattice vectors must be measured in angstroms - const latticeInAngstroms = this; - const scaleK = isScaled ? latticeInAngstroms.a : 1; + const scaleK = isScaled ? this.a : 1; const scaledLattice = { - ...latticeInAngstroms, - a: latticeInAngstroms.a / scaleK, - b: latticeInAngstroms.b / scaleK, - c: latticeInAngstroms.c / scaleK, + ...this, + a: this.a / scaleK, + b: this.b / scaleK, + c: this.c / scaleK, }; // form lattice string return `${[ diff --git a/src/lattice/lattice_bravais.js b/src/lattice/lattice_bravais.ts similarity index 61% rename from src/lattice/lattice_bravais.js rename to src/lattice/lattice_bravais.ts index 37ebf80a..ae9b664f 100644 --- a/src/lattice/lattice_bravais.js +++ b/src/lattice/lattice_bravais.ts @@ -1,26 +1,46 @@ +import { LatticeImplicitSchema, LatticeTypeSchema } from "@exabyte-io/code.js/src/types"; + import constants from "../constants"; import math from "../math"; -import { LATTICE_TYPE_CONFIGS } from "./types"; +import { LATTICE_TYPE_CONFIGS, Vector, VectorsAsArray } from "./types"; + +export type Units = Required["units"]; + +export interface FromVectorsProps { + a: Vector; // vector of the lattice. + b: Vector; // vector of the lattice. + c: Vector; // vector of the lattice. + alat?: number; // scaling factor for the vector coordinates, defaults to 1. + units?: Units["length"]; // units for the coordinates (eg. angstrom, crystal). + type?: LatticeTypeSchema; // type of the lattice to be created, defaults to TRI when not provided. + skipRounding?: boolean; // whether to skip rounding the resulting lattice values, defaults to `false`. +} /* * @summary: class that holds parameters of a Bravais Lattice: a, b, c, alpha, beta, gamma + corresponding units. * When stored as class variables units for lengths are always "angstrom"s, angle - "degree"s */ -export class LatticeBravais { +export class LatticeBravais implements LatticeImplicitSchema { + a: number; + + b: number; + + c: number; + + alpha: number; + + beta: number; + + gamma: number; + + units: Units; + + type: LatticeImplicitSchema["type"]; + /** * Create a Bravais lattice. - * @param {Object} config - Config object. - * @param {Number} config.a - lattice constant a. - * @param {Number} config.b - lattice constant b. - * @param {Number} config.c - lattice constant c. - * @param {Number} config.alpha - lattice angle alpha. - * @param {Number} config.beta - lattice angle beta. - * @param {Number} config.gamma - lattice angle gamma. - * @param {Object} config.units - units container. - * @param {String} config.units.length - units for length (eg. "angstrom", "crystal"). - * @param {String} config.units.angle - units for angles (eg. "degree", "radian"). */ - constructor(config) { + constructor(config: Partial) { const { a = 1, // default lattice is cubic with unity in edge sizes b = a, @@ -35,34 +55,26 @@ export class LatticeBravais { angle: "degree", }, } = config; + const k = constants.units.bohr === units.length ? constants.coefficients.BOHR_TO_ANGSTROM : 1; - Object.assign(this, { - a: a * k, - b: b * k, - c: c * k, - alpha, - beta, - gamma, - type, - units, - }); + + this.a = a * k; + this.b = b * k; + this.c = c * k; + this.alpha = alpha; + this.beta = beta; + this.gamma = gamma; + this.type = type; + this.units = units; } - static _roundValue(x) { + static _roundValue(x: number): number { return math.precise(math.roundToZero(x)); } /** * Create a Bravais lattice from vectors. - * @param {Object} - Config object. - * @param {Array} a - vector of the lattice. - * @param {Array} b - vector of the lattice. - * @param {Array} c - vector of the lattice. - * @param {Number} alat - scaling factor for the vector coordinates, defaults to 1. - * @param {String} units - units for the coordinates (eg. angstrom, crystal). - * @param {String} type - type of the lattice to be created, defaults to TRI when not provided. - * @param {Boolean} skipRounding - whether to skip rounding the resulting lattice values, defaults to `false`. */ static fromVectors({ a, @@ -72,11 +84,15 @@ export class LatticeBravais { units = "angstrom", type = "TRI", skipRounding = false, - }) { - const roundValue = skipRounding ? (x) => x : this._roundValue; - return new this.prototype.constructor({ + }: FromVectorsProps) { + const roundValue = skipRounding ? (x: number) => x : this._roundValue; + + return new (this.prototype.constructor as typeof LatticeBravais)({ + // @ts-ignore a: roundValue(math.vlen(a) * alat), + // @ts-ignore b: roundValue(math.vlen(b) * alat), + // @ts-ignore c: roundValue(math.vlen(c) * alat), alpha: roundValue(math.angle(b, c, "deg")), beta: roundValue(math.angle(a, c, "deg")), @@ -93,7 +109,7 @@ export class LatticeBravais { /** * See fromVectors above. */ - static fromVectorArrays(array, type, skipRounding = true) { + static fromVectorArrays(array: VectorsAsArray, type: LatticeTypeSchema, skipRounding = true) { return this.fromVectors({ a: array[0], b: array[1], @@ -112,13 +128,16 @@ export class LatticeBravais { const object = {}; const editablesList = LATTICE_TYPE_CONFIGS.find( (entry) => entry.code === this.type, - ).editables; + )?.editables; // ["a", "gamma"] => {a: true, gamma: true} - editablesList.forEach((element) => { - Object.assign(object, { - [element]: true, + if (editablesList) { + editablesList.forEach((element) => { + Object.assign(object, { + [element]: true, + }); }); - }); + } + return object; } @@ -139,7 +158,7 @@ export class LatticeBravais { "type" : "FCC" } */ - toJSON() { + toJSON(): LatticeImplicitSchema { return { ...this, units: { diff --git a/src/lattice/lattice_vectors.js b/src/lattice/lattice_vectors.ts similarity index 69% rename from src/lattice/lattice_vectors.js rename to src/lattice/lattice_vectors.ts index 6ca86cfc..8bbf2701 100644 --- a/src/lattice/lattice_vectors.js +++ b/src/lattice/lattice_vectors.ts @@ -1,34 +1,46 @@ +import { LatticeExplicitUnit, LatticeImplicitSchema } from "@exabyte-io/code.js/src/types"; + import { primitiveCell } from "../cell/primitive_cell"; import constants from "../constants"; import math from "../math"; +import { Vector } from "./types"; + +type RequiredLatticeExplicitUnit = Required; + +export interface BravaisConfigProps extends Partial { + isConventional?: boolean; +} /* * @summary: class that holds parameters of a Bravais Lattice: a, b, c, alpha, beta, gamma + corresponding units. * When stored as class variables units for lengths are always "angstrom"s, angle - "degree"s */ -export class LatticeVectors { +export class LatticeVectors implements RequiredLatticeExplicitUnit { + a: RequiredLatticeExplicitUnit["a"]; + + b: RequiredLatticeExplicitUnit["b"]; + + c: RequiredLatticeExplicitUnit["c"]; + + alat: RequiredLatticeExplicitUnit["alat"]; + + units: RequiredLatticeExplicitUnit["units"]; + /** * Create a Bravais lattice. - * @param {Object} config - Config object. - * @param {Array} config.a - vector of the lattice. - * @param {Array} config.b - vector of the lattice. - * @param {Array} config.c - vector of the lattice. - * @param {Number} config.alat - scaling factor for the vector coordinates, defaults to 1. - * @param {String} config.units - units container. */ - constructor(config) { + constructor(config: LatticeExplicitUnit) { const { a, b, c, alat = 1, units = "angstrom" } = config; const k = constants.units.bohr === units ? constants.coefficients.BOHR_TO_ANGSTROM : 1; - Object.assign(this, { - a: a.map((x) => x * k), - b: b.map((x) => x * k), - c: c.map((x) => x * k), - alat, - units: "angstrom", - }); + + this.a = a.map((x) => x * k) as Vector; + this.b = b.map((x) => x * k) as Vector; + this.c = c.map((x) => x * k) as Vector; + this.alat = alat; + this.units = "angstrom"; } - static _roundValue(arr) { + static _roundValue(arr: number[]): number[] { return arr.map((el) => math.precise(math.roundToZero(el))); } @@ -49,9 +61,9 @@ export class LatticeVectors { length: "angstrom", angle: "degree", }, - type, + type = "TRI", isConventional = false, - }) { + }: BravaisConfigProps) { // use "direct" lattice constructor for primitive lattice // eslint-disable-next-line no-param-reassign if (!isConventional) type = "TRI"; @@ -68,16 +80,15 @@ export class LatticeVectors { type, }); - return new LatticeVectors.prototype.constructor({ + return new LatticeVectors({ a: vectorA, b: vectorB, c: vectorC, alat: 1, - unis: units.length, }); } - get vectorArrays() { + get vectorArrays(): [Vector, Vector, Vector] { return [this.a, this.b, this.c]; } @@ -104,7 +115,7 @@ export class LatticeVectors { "units" : "angstrom" } */ - toJSON() { + toJSON(): RequiredLatticeExplicitUnit { return { ...this, a: LatticeVectors._roundValue(this.a), diff --git a/src/lattice/reciprocal/symmetry_points.js b/src/lattice/reciprocal/symmetry_points.ts similarity index 95% rename from src/lattice/reciprocal/symmetry_points.js rename to src/lattice/reciprocal/symmetry_points.ts index 167b23f0..6cb00cea 100644 --- a/src/lattice/reciprocal/symmetry_points.js +++ b/src/lattice/reciprocal/symmetry_points.ts @@ -4,10 +4,12 @@ * This file contains information about the Brillouin zone symmetry points by lattice type. * [AFLOW](https://arxiv.org/abs/1004.2974) methodology is used for implementation. */ -import { LATTICE_TYPE } from "../types"; +import { LatticeImplicitSchema } from "@exabyte-io/code.js/src/types"; + +import { Lattice } from "../lattice"; const POINTS = { - [LATTICE_TYPE.CUB]: ({ a, b, c, alpha, beta, gamma }) => { + CUB: () => { return [ { point: "R", @@ -24,7 +26,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.FCC]: ({ a, b, c, alpha, beta, gamma }) => { + FCC: () => { return [ { point: "K", @@ -49,7 +51,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.BCC]: ({ a, b, c, alpha, beta, gamma }) => { + BCC: () => { return [ { point: "H", @@ -66,7 +68,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.TET]: ({ a, b, c, alpha, beta, gamma }) => { + TET: () => { return [ { point: "A", @@ -91,7 +93,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.BCT]: ({ a, b, c, alpha, beta, gamma }) => { + BCT: ({ a, c }: LatticeImplicitSchema) => { let n; if (c < a) { // BCT-1 @@ -162,7 +164,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.ORC]: ({ a, b, c, alpha, beta, gamma }) => { + ORC: () => { return [ { point: "R", @@ -195,7 +197,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.ORCF]: ({ a, b, c, alpha, beta, gamma }) => { + ORCF: ({ a, b, c }: LatticeImplicitSchema) => { let n; if (1 / (a * a) >= 1 / (b * b) + 1 / (c * c)) { // ORCF-1,3 @@ -284,7 +286,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.ORCI]: ({ a, b, c, alpha, beta, gamma }) => { + ORCI: ({ a, b, c }: LatticeImplicitSchema) => { const n = (1 + (a * a) / (c * c)) / 4; const e = (1 + (b * b) / (c * c)) / 4; const d = (b * b - a * a) / (4 * c * c); @@ -341,7 +343,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.ORCC]: ({ a, b, c, alpha, beta, gamma }) => { + ORCC: ({ a, b }: LatticeImplicitSchema) => { const e = (1 + (a * a) / (b * b)) / 4; return [ { @@ -383,7 +385,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.HEX]: ({ a, b, c, alpha, beta, gamma }) => { + HEX: () => { return [ { point: "A", @@ -408,7 +410,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.RHL]: ({ a, b, c, alpha, beta, gamma }) => { + RHL: ({ alpha }: LatticeImplicitSchema) => { let n, v; const cosAlpha = Math.cos((alpha / 180) * Math.PI); if (cosAlpha > 0) { @@ -497,7 +499,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.MCL]: ({ a, b, c, alpha, beta, gamma }) => { + MCL: ({ b, c, alpha }: LatticeImplicitSchema) => { const cosAlpha = Math.cos((alpha / 180) * Math.PI); const n = ((1 / 2) * (1 - (b * cosAlpha) / c)) / (1 - cosAlpha * cosAlpha); const v = 1 / 2 - (n * c * cosAlpha) / b; @@ -565,7 +567,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.MCLC]: ({ a, b, c, alpha, beta, gamma }) => { + MCLC: ({ a, b, c, alpha, gamma }: LatticeImplicitSchema) => { const cosAlpha = Math.cos((alpha / 180) * Math.PI); let e, n, p, f, m, d, v; if (gamma >= 90) { @@ -718,9 +720,10 @@ const POINTS = { } // MCLC-5 e = (1 / 4) * ((b * b) / (a * a) + (1 - (b * cosAlpha) / c) / (1 - cosAlpha * cosAlpha)); + // @ts-ignore m = n / 2 + (b * b) / (a * a) / 4 - (b * c * cosAlpha) / (2 * a * a); // eslint-disable-next-line max-len - const w = + const w = // @ts-ignore ((4 * v - 1 - (b * b * (1 - cosAlpha * cosAlpha)) / (a * a)) * c) / (2 * b * cosAlpha); n = 1 / 2 + (2 * e * c * cosAlpha) / b; d = ((e * c) / b) * cosAlpha + w / 2 - 1 / 4; @@ -802,7 +805,7 @@ const POINTS = { ]; }, - [LATTICE_TYPE.TRI]: ({ a, b, c, alpha, beta, gamma }) => { + TRI: ({ alpha, beta, gamma }: LatticeImplicitSchema) => { if (alpha > 90 && beta > 90 && gamma >= 90) { // TRI-1a,2a return [ @@ -872,10 +875,8 @@ const POINTS = { /** * Returns a list of symmetry points for the specified lattice. - * @param lattice {Lattice|Object} - * @return {Object[]} */ -export function symmetryPoints(lattice) { +export function symmetryPoints(lattice: Lattice) { return [ { point: "Г", diff --git a/src/lattice/types.js b/src/lattice/types.ts similarity index 56% rename from src/lattice/types.js rename to src/lattice/types.ts index bed192ee..1c2c1b8b 100644 --- a/src/lattice/types.js +++ b/src/lattice/types.ts @@ -1,3 +1,5 @@ +import { ArrayOf3NumberElementsSchema, LatticeTypeSchema } from "@exabyte-io/code.js/src/types"; + export const DEFAULT_LATTICE_UNITS = { // by default lattice vectors shall be measured in angstrom, angles - in degrees length: { @@ -8,61 +10,52 @@ export const DEFAULT_LATTICE_UNITS = { }, }; -/** - * Shortlist of lattice types (according to [AFLOW](https://arxiv.org/abs/1004.2974)) - * Convention used is derived from: - * Setyawan, W., & Curtarolo, S. (2010). High-throughput electronic band structure calculations: - * Challenges and tools. Computational Materials Science, 49(2), 299-312. doi:10.1016/j.commatsci.2010.05.010 - * Lattice parameters a, b, c are stored for CONVENTIONAL lattice, however the default unit cell is calculated for - */ -export const LATTICE_TYPE = { - CUB: "CUB", - FCC: "FCC", - BCC: "BCC", - TET: "TET", - BCT: "BCT", - ORC: "ORC", - ORCF: "ORCF", - ORCI: "ORCI", - ORCC: "ORCC", - HEX: "HEX", - RHL: "RHL", - MCL: "MCL", - MCLC: "MCLC", - TRI: "TRI", -}; +export enum LatticeTypeExtended { + BCC = "BCC", + BCT_1 = "BCT-1", + BCT_2 = "BCT-2", + CUB = "CUB", + FCC = "FCC", + HEX = "HEX", + MCL = "MCL", + MCLC_1 = "MCLC-1", + MCLC_2 = "MCLC-2", + MCLC_3 = "MCLC-3", + MCLC_4 = "MCLC-4", + MCLC_5 = "MCLC-5", + ORC = "ORC", + ORCC = "ORCC", + ORCF_1 = "ORCF-1", + ORCF_2 = "ORCF-2", + ORCF_3 = "ORCF-3", + ORCI = "ORCI", + RHL_1 = "RHL-1", + RHL_2 = "RHL-2", + TET = "TET", + TRI_1a = "TRI_1a", + TRI_2a = "TRI_2a", + TRI_1b = "TRI_1b", +} -export const LATTICE_TYPE_EXTENDED = { - BCC: "BCC", - BCT_1: "BCT-1", - BCT_2: "BCT-2", - CUB: "CUB", - FCC: "FCC", - HEX: "HEX", - MCL: "MCL", - MCLC_1: "MCLC-1", - MCLC_2: "MCLC-2", - MCLC_3: "MCLC-3", - MCLC_4: "MCLC-4", - MCLC_5: "MCLC-5", - ORC: "ORC", - ORCC: "ORCC", - ORCF_1: "ORCF-1", - ORCF_2: "ORCF-2", - ORCF_3: "ORCF-3", - ORCI: "ORCI", - RHL_1: "RHL-1", - RHL_2: "RHL-2", - TET: "TET", - TRI_1a: "TRI_1a", - TRI_2a: "TRI_2a", - TRI_1b: "TRI_1b", -}; +export type Vector = ArrayOf3NumberElementsSchema; + +export interface VectorsAsArray extends Array { + 0: Vector; + 1: Vector; + 2: Vector; +} + +interface LatticeTypeConfig { + label: string; + code: LatticeTypeSchema; + editables: string[]; + editablesConventional: string[]; +} -export const LATTICE_TYPE_CONFIGS = [ +export const LATTICE_TYPE_CONFIGS: LatticeTypeConfig[] = [ { label: "Simple Cubic", - code: LATTICE_TYPE.CUB, + code: "CUB", // editables for primitive cell => WARNING: not tested editables: ["a"], // editables for conventional cell, taken from the publication above @@ -70,79 +63,79 @@ export const LATTICE_TYPE_CONFIGS = [ }, { label: "Face-centered Cubic", - code: LATTICE_TYPE.FCC, + code: "FCC", editables: ["a"], editablesConventional: ["a"], }, { label: "Body-centered Cubic", - code: LATTICE_TYPE.BCC, + code: "BCC", editables: ["a"], editablesConventional: ["a"], }, { label: "Tetragonal", - code: LATTICE_TYPE.TET, + code: "TET", editables: ["a", "c"], editablesConventional: ["a", "c"], }, { label: "Body-centered Tetragonal", - code: LATTICE_TYPE.BCT, + code: "BCT", editables: ["a"], editablesConventional: ["a", "c"], }, { label: "Orthorombic", - code: LATTICE_TYPE.ORC, + code: "ORC", editables: ["a", "b", "c"], editablesConventional: ["a", "b", "c"], }, { label: "Orthorombic Face-centered", - code: LATTICE_TYPE.ORCF, + code: "ORCF", editables: ["a", "b", "c"], editablesConventional: ["a", "b", "c"], }, { label: "Orthorombic Body-centered", - code: LATTICE_TYPE.ORCI, + code: "ORCI", editables: ["a", "alpha", "gamma"], editablesConventional: ["a", "b", "c"], }, { label: "Orthorombic Base-centered", - code: LATTICE_TYPE.ORCC, + code: "ORCC", editables: ["a", "c", "alpha"], editablesConventional: ["a", "b", "c"], }, { label: "Hexagonal", - code: LATTICE_TYPE.HEX, + code: "HEX", editables: ["a", "c"], editablesConventional: ["a", "c"], }, { label: "Rhombohedral", - code: LATTICE_TYPE.RHL, + code: "RHL", editables: ["a", "alpha"], editablesConventional: ["a", "alpha"], }, { label: "Monoclinic", - code: LATTICE_TYPE.MCL, + code: "MCL", editables: ["a", "b", "c", "alpha"], editablesConventional: ["a", "b", "c", "alpha"], }, { label: "Monoclinic Base-centered", - code: LATTICE_TYPE.MCLC, + code: "MCLC", editables: ["a", "c", "alpha", "gamma"], editablesConventional: ["a", "b", "c", "alpha"], }, { label: "Triclinic", - code: LATTICE_TYPE.TRI, + code: "TRI", editables: ["a", "b", "c", "alpha", "beta", "gamma"], editablesConventional: ["a", "b", "c", "alpha", "beta", "gamma"], }, diff --git a/src/lattice/unit_cell.js b/src/lattice/unit_cell.js deleted file mode 100644 index a6528e49..00000000 --- a/src/lattice/unit_cell.js +++ /dev/null @@ -1,31 +0,0 @@ -// TODO: refactor and remove the need for UnitCell -export class UnitCell { - constructor(ax, ay, az, bx, by, bz, cx, cy, cz, units) { - this.ax = ax; - this.ay = ay; - this.az = az; - this.bx = bx; - this.by = by; - this.bz = bz; - this.cx = cx; - this.cy = cy; - this.cz = cz; - this.units = units; - } - - vectorA() { - return [this.ax, this.ay, this.az]; - } - - vectorB() { - return [this.bx, this.by, this.bz]; - } - - vectorC() { - return [this.cx, this.cy, this.cz]; - } - - axes() { - return [this.vectorA(), this.vectorB(), this.vectorC()]; - } -} diff --git a/src/lattice/unit_cell.ts b/src/lattice/unit_cell.ts new file mode 100644 index 00000000..cd8e4044 --- /dev/null +++ b/src/lattice/unit_cell.ts @@ -0,0 +1,66 @@ +import { Vector } from "./types"; + +export type UnitCellProps = [ + number, + number, + number, + number, + number, + number, + number, + number, + number, + string, +]; + +// TODO: refactor and remove the need for UnitCell +export class UnitCell { + ax: number; + + ay: number; + + az: number; + + bx: number; + + by: number; + + bz: number; + + cx: number; + + cy: number; + + cz: number; + + units: string; + + constructor([ax, ay, az, bx, by, bz, cx, cy, cz, units]: UnitCellProps) { + this.ax = ax; + this.ay = ay; + this.az = az; + this.bx = bx; + this.by = by; + this.bz = bz; + this.cx = cx; + this.cy = cy; + this.cz = cz; + this.units = units; + } + + vectorA(): Vector { + return [this.ax, this.ay, this.az]; + } + + vectorB(): Vector { + return [this.bx, this.by, this.bz]; + } + + vectorC(): Vector { + return [this.cx, this.cy, this.cz]; + } + + axes(): [Vector, Vector, Vector] { + return [this.vectorA(), this.vectorB(), this.vectorC()]; + } +} diff --git a/src/material.js b/src/material.ts similarity index 74% rename from src/material.js rename to src/material.ts index 64f36dde..1e4127c7 100644 --- a/src/material.js +++ b/src/material.ts @@ -1,6 +1,12 @@ import { HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity } from "@exabyte-io/code.js/dist/entity"; +import { AnyObject } from "@exabyte-io/code.js/dist/entity/in_memory"; +import { + ConsistencyCheck, + DerivedPropertiesSchema, + InChIRepresentationSchema, + MaterialSchema, +} from "@exabyte-io/code.js/dist/types"; import CryptoJS from "crypto-js"; -import lodash from "lodash"; import { ConstrainedBasis } from "./basis/constrained_basis"; import { @@ -9,10 +15,15 @@ import { PRIMITIVE_TO_CONVENTIONAL_CELL_MULTIPLIERS, } from "./cell/conventional_cell"; import { ATOMIC_COORD_UNITS, units } from "./constants"; +import { Constraint } from "./constraints/constraints"; import { Lattice } from "./lattice/lattice"; -import { LATTICE_TYPE } from "./lattice/types"; +import { BravaisConfigProps } from "./lattice/lattice_vectors"; import parsers from "./parsers/parsers"; +import { BasisConfig } from "./parsers/xyz"; +// TODO: fix dependency cycle below +// eslint-disable-next-line import/no-cycle import supercellTools from "./tools/supercell"; +import { MaterialJSON } from "./types"; export const defaultMaterialConfig = { name: "Silicon FCC", @@ -41,7 +52,7 @@ export const defaultMaterialConfig = { }, lattice: { // Primitive cell for Diamond FCC Silicon at ambient conditions - type: LATTICE_TYPE.FCC, + type: "FCC", a: 3.867, b: 3.867, c: 3.867, @@ -55,33 +66,31 @@ export const defaultMaterialConfig = { }, }; -export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity { - constructor(config) { - super(config); - this._json = lodash.cloneDeep(config || {}); - } +interface MaterialSchemaJSON extends MaterialSchema, AnyObject {} + +export abstract class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity { + abstract src: { + extension: string; + text: string; + }; - toJSON() { - return this.toJSONDefault(); + declare _json: MaterialSchemaJSON; + + constructor(config: MaterialSchemaJSON) { + super(config); + this.name = super.name || this.formula; } - toJSONDefault() { + toJSON(): MaterialJSON { return { + ...super.toJSON(), lattice: this.Lattice.toJSON(), basis: this.Basis.toJSON(), - name: this.name || this.formula, - isNonPeriodic: this.isNonPeriodic || false, + name: this.name, + isNonPeriodic: this.isNonPeriodic, }; } - get name() { - return super.name || this.formula; - } - - set name(name) { - super.name = name; - } - static get defaultConfig() { return defaultMaterialConfig; } @@ -95,73 +104,66 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM * Gets Bolean value for whether or not a material is non-periodic vs periodic. * False = periodic, True = non-periodic */ - get isNonPeriodic() { - return this.prop("isNonPeriodic", false, true); + get isNonPeriodic(): boolean { + return this.prop("isNonPeriodic", false); } /** * @summary Sets the value of isNonPeriodic based on Boolean value passed as an argument. - * @param {Boolean} bool */ - set isNonPeriodic(bool) { + set isNonPeriodic(bool: boolean) { this.setProp("isNonPeriodic", bool); } /** * @summary Returns the specific derived property (as specified by name) for a material. - * @param {String} name - * @returns {Object} */ - getDerivedPropertyByName(name) { + getDerivedPropertyByName(name: string) { return this.getDerivedProperties().find((x) => x.name === name); } /** * @summary Returns the derived properties array for a material. - * @returns {Array} */ - getDerivedProperties() { + getDerivedProperties(): DerivedPropertiesSchema { return this.prop("derivedProperties", []); } /** * Gets material's formula */ - get formula() { + get formula(): string { return this.prop("formula") || this.Basis.formula; } - get unitCellFormula() { + get unitCellFormula(): string { return this.prop("unitCellFormula") || this.Basis.unitCellFormula; } /** - * @param textOrObject {String} Basis text or JSON object. - * @param format {String} Format (xyz, etc.) - * @param unitz {String} crystal/cartesian + * @param textOrObject Basis text or JSON object. + * @param format Format (xyz, etc.) + * @param unitz crystal/cartesian */ - setBasis(textOrObject, format, unitz) { - let basis; + setBasis(textOrObject: string | BasisConfig, format?: string, unitz?: string) { + let basis: BasisConfig | undefined; switch (format) { case "xyz": - basis = parsers.xyz.toBasisConfig(textOrObject, unitz); + basis = parsers.xyz.toBasisConfig(textOrObject as string, unitz); break; default: - basis = textOrObject; + basis = textOrObject as BasisConfig; } this.setProp("basis", basis); this.updateFormula(); } - setBasisConstraints(constraints) { - this.setBasis({ - ...this.basis, - constraints, - }); + setBasisConstraints(constraints: Constraint[]) { + this.setBasis({ ...this.basis, constraints }); } - get basis() { - return this.prop("basis", undefined, true); + get basis(): BasisConfig { + return this.prop("basis", undefined); } // returns the instance of {ConstrainedBasis} class @@ -172,24 +174,22 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM }); } - /** High-level access to unique elements from material instead of basis. - * - * @return {String[]} + /** + * High-level access to unique elements from material instead of basis. */ get uniqueElements() { return this.Basis.uniqueElements; } - get lattice() { - return this.prop("lattice", undefined, true); + get lattice(): BravaisConfigProps | undefined { + return this.prop("lattice", undefined); } - set lattice(config) { + set lattice(config: BravaisConfigProps | undefined) { this.setProp("lattice", config); } - // returns the instance of {Lattice} class - get Lattice() { + get Lattice(): Lattice { return new Lattice(this.lattice); } @@ -198,10 +198,10 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM * inchi cannot be found. * @returns {String} */ - getInchiStringForHash() { + getInchiStringForHash(): string { const inchi = this.getDerivedPropertyByName("inchi"); if (inchi) { - return inchi.value; + return (inchi as InChIRepresentationSchema).value; } throw new Error("Hash cannot be created. Missing InChI string in derivedProperties"); } @@ -213,10 +213,10 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM * - asserts basis coordinates and lattice measurements are rounded to hash precision * - forms strings for lattice and basis * - creates MD5 hash from basisStr + latticeStr + salt - * @param salt {String} Salt for hashing, empty string by default. - * @param isScaled {Boolean} Whether to scale the lattice parameter 'a' to 1. + * @param salt Salt for hashing, empty string by default. + * @param isScaled Whether to scale the lattice parameter 'a' to 1. */ - calculateHash(salt = "", isScaled = false, bypassNonPeriodicCheck = false) { + calculateHash(salt = "", isScaled = false, bypassNonPeriodicCheck = false): string { let message; if (!this.isNonPeriodic || bypassNonPeriodicCheck) { message = @@ -227,18 +227,18 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM return CryptoJS.MD5(message).toString(); } - set hash(hash) { + set hash(hash: string) { this.setProp("hash", hash); } - get hash() { + get hash(): string { return this.prop("hash"); } /** * Calculates hash from basis and lattice as above + scales lattice properties to make lattice.a = 1 */ - get scaledHash() { + get scaledHash(): string { return this.calculateHash("", true); } @@ -263,9 +263,8 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM /** * Returns material's basis in XYZ format. - * @return {String} */ - getBasisAsXyz(fractional = false) { + getBasisAsXyz(fractional = false): string { return parsers.xyz.fromMaterial(this.toJSON(), fractional); } @@ -281,16 +280,15 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM * Si 0.000000000 0.000000000 -0.000000000 * Si 0.250000000 0.250000000 0.250000000 * ``` - * @return {String} */ - getAsQEFormat() { + getAsQEFormat(): string { return parsers.espresso.toEspressoFormat(this.toJSON()); } /** * Returns material in POSCAR format. Pass `true` to ignore original poscar source and re-serialize. */ - getAsPOSCAR(ignoreOriginal = false, omitConstraints = false) { + getAsPOSCAR(ignoreOriginal = false, omitConstraints = false): string { const { src } = this; // By default return original source if exists if (src && src.extension === "poscar" && !ignoreOriginal) { @@ -303,7 +301,7 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM * Returns a copy of the material with conventional cell constructed instead of primitive. */ getACopyWithConventionalCell() { - const material = this.clone(); + const material: Material = this.clone(); // if conventional and primitive cells are the same => return a copy. if (isConventionalCellSameAsPrimitiveForLatticeType(this.Lattice.type)) return material; @@ -312,19 +310,20 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM PRIMITIVE_TO_CONVENTIONAL_CELL_MULTIPLIERS[this.Lattice.type]; const conventionalLatticeType = PRIMITIVE_TO_CONVENTIONAL_CELL_LATTICE_TYPES[this.Lattice.type]; - const config = supercellTools.generateConfig(material, conventionalSupercellMatrix, 1); + const config = supercellTools.generateConfig(material, conventionalSupercellMatrix); config.lattice.type = conventionalLatticeType; config.name = `${material.name} - conventional cell`; + // @ts-ignore return new this.constructor(config); } /** * @summary a series of checks for the material and returns an array of results in ConsistencyChecks format. - * @returns {*[]}} - Array of checks results + * @returns Array of checks results */ - getConsistencyChecks() { + getConsistencyChecks(): ConsistencyCheck[] { const basisChecks = this.getBasisConsistencyChecks(); // any other Material checks can be added here @@ -334,10 +333,10 @@ export class Material extends HasConsistencyChecksHasMetadataNamedDefaultableInM /** * @summary a series of checks for the material's basis and returns an array of results in ConsistencyChecks format. - * @returns {*[]} - Array of checks results + * @returns Array of checks results */ - getBasisConsistencyChecks() { - const checks = []; + getBasisConsistencyChecks(): ConsistencyCheck[] { + const checks: ConsistencyCheck[] = []; const limit = 1000; const basis = this.Basis; diff --git a/src/parsers/espresso.js b/src/parsers/espresso.ts similarity index 78% rename from src/parsers/espresso.js rename to src/parsers/espresso.ts index 445129bb..946bf40c 100644 --- a/src/parsers/espresso.js +++ b/src/parsers/espresso.ts @@ -1,3 +1,4 @@ +import { MaterialSchema } from "@exabyte-io/code.js/src/types"; import _ from "underscore"; import s from "underscore.string"; @@ -6,10 +7,9 @@ import xyz from "./xyz"; /** * Construct textual representation of a materialOrConfig according to Quantum ESPRESSO pw.x input format. - * @param {Material|Object} materialOrConfig - material class instance or its config object - * @return {String} + * @param materialOrConfig - material class instance or its config object */ -function toEspressoFormat(materialOrConfig) { +function toEspressoFormat(materialOrConfig: MaterialSchema): string { const l = new Lattice(materialOrConfig.lattice); const vectors = l.vectorArrays; const vectorsAsString = _.map(vectors, (v) => { diff --git a/src/parsers/poscar.js b/src/parsers/poscar.ts similarity index 77% rename from src/parsers/poscar.js rename to src/parsers/poscar.ts index 772f8f0f..e061d133 100644 --- a/src/parsers/poscar.js +++ b/src/parsers/poscar.ts @@ -1,29 +1,33 @@ import s from "underscore.string"; import { ConstrainedBasis } from "../basis/constrained_basis"; +import { Coordinate } from "../basis/types"; import { ATOMIC_COORD_UNITS } from "../constants"; +import { Constraint, ConstraintValue } from "../constraints/constraints"; import { Lattice } from "../lattice/lattice"; +import { Vector } from "../lattice/types"; import math from "../math"; +import { MaterialJSON } from "../types"; -const _print = (x, printFormat = "%14.9f") => s.sprintf(printFormat, math.precise(x)); -const _latticeVectorsToString = (vectors) => +const _print = (x: number, printFormat = "%14.9f") => s.sprintf(printFormat, math.precise(x)); +const _latticeVectorsToString = (vectors: Vector[]) => vectors.map((v) => v.map((c) => _print(c)).join("\t")).join("\n"); -const atomicConstraintsCharFromBool = (bool) => (bool ? "T" : "F"); +const atomicConstraintsCharFromBool = (bool: boolean): string => (bool ? "T" : "F"); /** * Obtain a textual representation of a material in POSCAR format. - * @param {Material|Object} materialOrConfig - material class instance or config object. - * @param {Boolean} omitConstraints - whether to discard constraints passed with material. - * @return {string} + * @param materialOrConfig - material class instance or config object. + * @param omitConstraints - whether to discard constraints passed with material. */ -function toPoscar(materialOrConfig, omitConstraints = false) { +function toPoscar(materialOrConfig: MaterialJSON, omitConstraints = false): string { const lattice = new Lattice(materialOrConfig.lattice); const vectorsAsString = _latticeVectorsToString(lattice.vectorArrays); + // @ts-ignore const basis = new ConstrainedBasis({ ...materialOrConfig.basis, cell: lattice.vectorArrays, }); - const BasisLines = []; + const BasisLines: string[] = []; let addSelectiveDynamics = false; basis._elements.array.forEach((item, idx) => { const coord = basis.getCoordinateByIndex(idx).map((x) => _print(x)); @@ -35,7 +39,7 @@ function toPoscar(materialOrConfig, omitConstraints = false) { }); const basisContent = BasisLines.join("\n"); const elementsLine = basis.elementCounts.map((e) => e.value).join(" "); - const countsLine = basis.elementCounts.map((e) => parseInt(e.count, 10)).join(" "); + const countsLine = basis.elementCounts.map((e) => parseInt(`${e.count}`, 10)).join(" "); const coordsType = materialOrConfig.basis.units === ATOMIC_COORD_UNITS.cartesian ? "cartesian" : "direct"; @@ -55,20 +59,18 @@ function toPoscar(materialOrConfig, omitConstraints = false) { /** * @summary calculates the number of atoms in a poscar file based on the summation of the numbers in line 7 of the file. * Poscar file formatting: https://www.vasp.at/wiki/index.php/POSCAR - * @param poscarFileContent - * @returns {Number} */ -export function atomsCount(poscarFileContent) { +export function atomsCount(poscarFileContent: string): number { const atomsLine = poscarFileContent.split("\n")[6].split(/\s+/); return atomsLine.map((x) => parseInt(x, 10)).reduce((a, b) => a + b); } /** * Parses POSCAR file into a Material config object. - * @param {string} fileContent - POSCAR file content. - * @return {Object} Material config. + * @param fileContent - POSCAR file content. + * @return Material config. */ -function fromPoscar(fileContent) { +function fromPoscar(fileContent: string): object { const lines = fileContent.split("\n"); const comment = lines[0]; @@ -91,18 +93,18 @@ function fromPoscar(fileContent) { startLine = 8; } - const elements = atomSymbols - .map((symbol, i) => Array(atomCounts[i]).fill(symbol)) + const elements: string[] = atomSymbols + .map((symbol: string, i: number): string[] => Array(atomCounts[i]).fill(symbol)) .reduce((a, b) => a.concat(b), []); // Atom coordinates and constraints - const coordinates = []; - const constraints = []; + const coordinates: Coordinate[] = []; + const constraints: Constraint[] = []; let atomIndex = 0; for (let i = 0; i < atomSymbols.length; i++) { for (let j = 0; j < atomCounts[i]; j++) { const lineComponents = lines[startLine + atomIndex].trim().split(/\s+/); - const coordinate = [ + const coordinate: Coordinate = [ parseFloat(lineComponents[0]), parseFloat(lineComponents[1]), parseFloat(lineComponents[2]), @@ -111,7 +113,7 @@ function fromPoscar(fileContent) { // Add constraints if selective dynamics is used if (selectiveDynamics) { - const constraint = [ + const constraint: ConstraintValue = [ lineComponents[3] === "T", lineComponents[4] === "T", lineComponents[5] === "T", @@ -123,9 +125,9 @@ function fromPoscar(fileContent) { } const lattice = Lattice.fromVectors({ - a: lines[2].trim().split(/\s+/).map(Number), - b: lines[3].trim().split(/\s+/).map(Number), - c: lines[4].trim().split(/\s+/).map(Number), + a: lines[2].trim().split(/\s+/).map(Number) as Vector, + b: lines[3].trim().split(/\s+/).map(Number) as Vector, + c: lines[4].trim().split(/\s+/).map(Number) as Vector, alat: latticeConstant, units: "angstrom", }); @@ -150,10 +152,9 @@ function fromPoscar(fileContent) { /** * @summary Checks if a string has a POSCAR format (first 8 lines are read) - * @param {string} text - string to check - * @returns {boolean} + * @param text - string to check */ -function isPoscar(text) { +function isPoscar(text: string): boolean { const lines = text.split("\n"); // Checking number of lines, minimum requirement for POSCAR diff --git a/src/parsers/xyz.js b/src/parsers/xyz.ts similarity index 55% rename from src/parsers/xyz.js rename to src/parsers/xyz.ts index 07b8e1db..10810f22 100644 --- a/src/parsers/xyz.js +++ b/src/parsers/xyz.ts @@ -1,9 +1,12 @@ +import { MaterialSchema } from "@exabyte-io/code.js/src/types"; import _ from "underscore"; import s from "underscore.string"; import { Basis } from "../basis/basis"; import { ConstrainedBasis } from "../basis/constrained_basis"; +import { Constraint } from "../constraints/constraints"; import { Lattice } from "../lattice/lattice"; +import { Vector } from "../lattice/types"; import math from "../math"; import { InvalidLineError } from "./errors"; import { CombinatorialBasis } from "./xyz_combinatorial_basis"; @@ -16,10 +19,8 @@ const XYZ_LINE_REGEX = /** * Validates XYZ file's line. Line should be in following format "Si 0.5 0.5 0.5". * Raises an error if line is in wrong format. - * @param xyzLine {String} - * @param index {Number} */ -function validateLine(xyzLine, index) { +function validateLine(xyzLine: string, index: number) { const words = xyzLine.split(" ").filter((x) => x.trim() !== ""); if (!xyzLine.match(XYZ_LINE_REGEX)) { @@ -36,51 +37,72 @@ function validateLine(xyzLine, index) { /** * Validates that passed string is well-formed XYZ file. - * @param xyzTxt {String} */ -export function validate(xyzTxt) { +export function validate(xyzTxt: string) { + // The @types/underscore.string package does not provide interfaces for function chaining at the moment. Disable TS here + // @ts-ignore s(xyzTxt) .trim() .lines() - .filter((x) => x.trim() !== "") + .filter((x: string) => x.trim() !== "") .forEach(validateLine); } +export interface ParsedObject { + element: string; + coordinates: Vector; + constraints: [boolean, boolean, boolean]; +} + /** * Parses XYZ line and returns an object. - * @param {String} line - line of text - * @return {Object} + * @param line - line of text */ -function _parseXYZLineAsWords(line) { +function _parseXYZLineAsWords(line: string): ParsedObject { const words = s.words(line); + const constraint = (n: number) => parseInt(`${n}`, 10) !== 0; return { element: words[0], coordinates: [+words[1], +words[2], +words[3]], // Below maps zero values to false (atom is fixed) and non-zero values to true (atom is moving) - constraints: [+words[4], +words[5], +words[6]].map((e) => parseInt(e, 10) !== 0), + constraints: [constraint(+words[4]), constraint(+words[5]), constraint(+words[6])], }; } +// TODO: reuse Basis Definition(s) from ESSE/Code.js instead +export interface BasisConfig { + elements: { + id: number; + value: string; + }[]; + coordinates: { + id: number; + value: Vector; + }[]; + units: string; + cell: Vector[]; + constraints: Constraint[]; +} + /** * Parse XYZ text for basis. - * @param txt {String} Text - * @param units {String} Coordinate units - * @param cell {Array} Basis Cell - * @return {Object} + * @param txt Text + * @param units Coordinate units + * @param cell Basis Cell */ -function toBasisConfig(txt, units = "angstrom", cell = Basis.defaultCell) { - const lines = s(txt).trim().lines(); +function toBasisConfig(txt: string, units = "angstrom", cell = Basis.defaultCell): BasisConfig { + // @ts-ignore + const lines: string[] = s(txt).trim().lines(); const listOfObjects = _.map(lines, _parseXYZLineAsWords); return { - // using concat below to avoid modifying listOfObjects in place with map - elements: [].concat(listOfObjects).map((elm, idx) => { + elements: listOfObjects.map((elm, idx) => { return { id: idx, value: elm.element, }; }), - coordinates: [].concat(listOfObjects).map((elm, idx) => { + coordinates: listOfObjects.map((elm, idx) => { return { id: idx, value: elm.coordinates, @@ -88,7 +110,7 @@ function toBasisConfig(txt, units = "angstrom", cell = Basis.defaultCell) { }), units, cell, - constraints: [].concat(listOfObjects).map((elm, idx) => { + constraints: listOfObjects.map((elm, idx) => { return { id: idx, value: elm.constraints, @@ -99,22 +121,25 @@ function toBasisConfig(txt, units = "angstrom", cell = Basis.defaultCell) { /** * Create XYZ from Basis class instance. - * @param basisClsInstance {ConstrainedBasis} Basis class instance. - * @param printFormat {String} Output format for coordinates. - * @param skipRounding {Boolean} Whether to round the numbers (ie. to avoid negative zeros). - * @return {String} Basis string in XYZ format + * @param basisClsInstance Basis class instance. + * @param printFormat Output format for coordinates. + * @param skipRounding Whether to round the numbers (ie. to avoid negative zeros). + * @return Basis string in XYZ format */ -function fromBasis(basisClsInstance, printFormat = "%9.5f", skipRounding = false) { - const clsInstance = basisClsInstance; - const XYZArray = []; - clsInstance._elements.array.forEach((item, idx) => { +function fromBasis( + basisClsInstance: ConstrainedBasis, + printFormat = "%9.5f", + skipRounding = false, +) { + const XYZArray: string[] = []; + basisClsInstance._elements.array.forEach((item, idx) => { // assume that _elements and _coordinates are indexed equivalently const element = s.sprintf("%-3s", item); - const coordinates = clsInstance.getCoordinateByIndex(idx).map((x) => { + const coordinates = basisClsInstance.getCoordinateByIndex(idx).map((x) => { return s.sprintf(printFormat, skipRounding ? x : math.precise(math.roundToZero(x))); }); - const constraints = clsInstance.constraints - ? clsInstance.AtomicConstraints.getAsStringByIndex(idx) + const constraints = basisClsInstance.constraints + ? basisClsInstance.AtomicConstraints.getAsStringByIndex(idx) : ""; XYZArray.push([element, coordinates.join(" "), constraints].join(" ")); }); @@ -123,12 +148,13 @@ function fromBasis(basisClsInstance, printFormat = "%9.5f", skipRounding = false /** * Create XYZ from Material class instance (or its JSON config). - * @param materialOrConfig {Material|Object} Material. - * @param fractional {Boolean} Coordinate units as fractional. - * @return {ConstrainedBasis} Class Instance + * @param materialOrConfig Material. + * @param fractional Coordinate units as fractional. + * @return Class Instance */ -function fromMaterial(materialOrConfig, fractional = false) { +function fromMaterial(materialOrConfig: MaterialSchema, fractional = false): string { const lattice = new Lattice(materialOrConfig.lattice); + // @ts-ignore const basis = new ConstrainedBasis({ ...materialOrConfig.basis, cell: lattice.vectorArrays, diff --git a/src/tools/supercell.js b/src/tools/supercell.ts similarity index 81% rename from src/tools/supercell.js rename to src/tools/supercell.ts index 7aa262a2..b8d5382f 100644 --- a/src/tools/supercell.js +++ b/src/tools/supercell.ts @@ -1,4 +1,9 @@ +import { Basis } from "../basis/basis"; +import { Coordinate } from "../basis/types"; +import { Cell } from "../cell/cell"; import { LatticeBravais } from "../lattice/lattice_bravais"; +// eslint-disable-next-line import/no-cycle +import { Material } from "../material"; import math from "../math"; import cellTools from "./cell"; @@ -6,12 +11,13 @@ const ADD = math.add; /** * @summary Generates new basis for a supercell. For each site from basis generates shifts that are within supercell. - * @param basis {Basis} - * @param cell {Cell} - * @param supercell {Cell} - * @return {Basis} */ -function generateNewBasisWithinSupercell(basis, cell, supercell, supercellMatrix) { +function generateNewBasisWithinSupercell( + basis: Basis, + cell: Cell, + supercell: Cell, + supercellMatrix: number[][], +): Basis { const oldBasis = basis.clone(); const newBasis = basis.clone({ isEmpty: true }); @@ -28,7 +34,7 @@ function generateNewBasisWithinSupercell(basis, cell, supercell, supercellMatrix if (supercell.isPointInsideCell(newPoint)) { newBasis.addAtom({ element: element.value, - coordinate: supercell.convertPointToFractional(newPoint), + coordinate: supercell.convertPointToFractional(newPoint) as Coordinate, }); } }); @@ -39,10 +45,10 @@ function generateNewBasisWithinSupercell(basis, cell, supercell, supercellMatrix /** * @summary Generates supercell config for the specified material. - * @param material {Object} + * @param material * @param supercellMatrix {Number[][]} */ -function generateConfig(material, supercellMatrix) { +function generateConfig(material: Material, supercellMatrix: number[][]) { const det = math.det(supercellMatrix); if (det === 0) { throw new Error("Scaling matrix is degenerate."); diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 00000000..8de80ead --- /dev/null +++ b/src/types.ts @@ -0,0 +1,4 @@ +import { AnyObject } from "@exabyte-io/code.js/dist/entity/in_memory"; +import { MaterialSchema } from "@exabyte-io/code.js/src/types"; + +export type MaterialJSON = MaterialSchema & AnyObject; diff --git a/tests/parsers/xyz_combinatorial_basis.js b/tests/parsers/xyz_combinatorial_basis.js index 00119642..7d52171e 100644 --- a/tests/parsers/xyz_combinatorial_basis.js +++ b/tests/parsers/xyz_combinatorial_basis.js @@ -7,7 +7,7 @@ import { AsGeBasis, FeLiSiBasis, Ge2Basis, OSiBasis, Si2Basis } from "../enums"; describe("Parsers:CombinatorialBasis", () => { it("toBasisConfig", () => { // eslint-disable-next-line new-cap - const basisConfig2 = new CombinatorialBasis.toBasisConfig([ + const basisConfig2 = CombinatorialBasis.toBasisConfig([ { element: "Si", coordinates: [0, 0, 0], diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..994732c4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "target": "ES2018", + "jsx": "react", + "lib": ["ES2019", "dom"], + "allowJs": true, + "module": "commonjs", + "moduleResolution": "Node", + "declaration": true, + "outDir": "./lib", + "noEmitOnError": false, + "isolatedModules": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "types": ["mocha", "node"], + "rootDir": "./src", + "baseUrl": "./" + }, + "include": [ + "./src" + ], + "exclude": [ + "node_modules", + "lib" + ], + "ts-node": { + "files": true, + "compilerOptions": {} + }, +}