From d5352900c83f23587ea03915a034b6e0b7d498a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Mon, 28 Oct 2024 15:44:10 +0000 Subject: [PATCH 01/12] bumping dependencies to latest available --- package-lock.json | 3995 +++++++++++++++++++++++++-------------------- package.json | 55 +- 2 files changed, 2235 insertions(+), 1815 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6d58fa9..b1d7120 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,43 +9,42 @@ "version": "0.0.8", "license": "Apache-2.0", "dependencies": { - "@types/browser-or-node": "^1.3.0", - "@types/fabric": "4.5.11", - "@types/figlet": "^1.5.5", - "@types/node": "^18.13.0", - "@types/node-fetch": "^2.6.2", - "@webcomponents/webcomponentsjs": "^2.7.0", - "assert": "^2.0.0", - "browser-or-node": "^2.1.1", + "@types/browser-or-node": "^1.3.2", + "@types/figlet": "^1.7.0", + "@types/node": "^22.8.1", + "@types/node-fetch": "^2.6.11", + "@webcomponents/webcomponentsjs": "^2.8.0", + "assert": "^2.1.0", + "browser-or-node": "^3.0.0", "buffer": "^6.0.3", - "canvas": "^2.11.0", - "chalk": "^5.2.0", - "commander": "^9.5.0", + "canvas": "^2.11.2", + "chalk": "^5.3.0", + "commander": "^12.1.0", "commonjs": "0.0.1", - "fabric": "5.2.1", - "figlet": "^1.5.2", - "lit": "^2.6.1", - "lit-element": "^3.2.2", - "lit-html": "^2.6.1", + "fabric": "6.4.3", + "figlet": "^1.8.0", + "lit": "^3.2.1", + "lit-element": "^4.1.1", + "lit-html": "^3.2.1", "mini-svg-data-uri": "^1.4.4", - "node-fetch": "^3.3.0", - "stream": "^0.0.2", + "node-fetch": "^3.3.2", + "stream": "^0.0.3", "xml-js": "^1.6.11" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.52.0", - "@typescript-eslint/parser": "^5.52.0", + "@typescript-eslint/eslint-plugin": "^8.11.0", + "@typescript-eslint/parser": "^8.11.0", "clean-webpack-plugin": "^4.0.0", - "copy-webpack-plugin": "^11.0.0", - "eslint": "^8.34.0", - "html-webpack-plugin": "^5.5.0", + "copy-webpack-plugin": "^12.0.2", + "eslint": "^9.13.0", + "html-webpack-plugin": "^5.6.3", "node-loader": "^2.0.0", "standard-version": "^9.5.0", - "ts-loader": "^9.4.2", - "typescript": "^4.9.5", - "webpack": "^5.75.0", - "webpack-cli": "^4.10.0", - "webpack-dev-server": "^4.11.1", + "ts-loader": "^9.5.1", + "typescript": "^5.6.3", + "webpack": "^5.95.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.1.0", "webpack-node-externals": "^3.0.0" }, "engines": { @@ -53,130 +52,97 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", + "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">=10.0.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "engines": { - "node": ">=4" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": ">=4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "node_modules/@eslint/core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", + "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", "dev": true, "engines": { - "node": ">=10.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -184,24 +150,84 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@eslint/js": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", + "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", + "dev": true, "engines": { - "node": ">=10.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz", + "integrity": "sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==", + "dev": true, + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -217,11 +243,18 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", @@ -233,86 +266,140 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", + "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", + "dev": true, + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz", + "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.0.0.tgz", - "integrity": "sha512-ic93MBXfApIFTrup4a70M/+ddD8xdt2zxxj9sRwHQzhS9ag/syqkD8JPdTXsc1gUy2K8TTirhlCqyTEM/sifNw==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz", + "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==" }, "node_modules/@lit/reactive-element": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.1.tgz", - "integrity": "sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" + "@lit-labs/ssr-dom-shim": "^1.2.0" } }, "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", - "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -329,9 +416,9 @@ } }, "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -401,6 +488,18 @@ "node": ">= 8" } }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -411,9 +510,9 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "dependencies": { "@types/connect": "*", @@ -421,68 +520,48 @@ } }, "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/browser-or-node": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@types/browser-or-node/-/browser-or-node-1.3.0.tgz", - "integrity": "sha512-MVetr65IR7RdJbUxVHsaPFaXAO8fi89zv1g8L/mHygh1Q7xnnK02XZLwfMh57FOpTO6gtnagoPMQ/UOFfctXRQ==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/browser-or-node/-/browser-or-node-1.3.2.tgz", + "integrity": "sha512-CkvJrvVMI4ZHbiL+Df22Owzq1IYnHnoSrM8s6Dmy4MRdqvdFi9bHsIvyFrSGJPOxvFI9Y3MqY2gFCqIafJBcfw==" }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, - "node_modules/@types/eslint": { - "version": "8.21.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz", - "integrity": "sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -492,25 +571,33 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.33", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", - "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz", + "integrity": "sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==", "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@types/fabric": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@types/fabric/-/fabric-4.5.11.tgz", - "integrity": "sha512-JgOnbIm03EDYI+X5/hjstMZUbQ9W3704BQ4Dlu7t9JwWzNSdJE4cTV/4XtIHFCCfiFpcL756re+qCazTA84InA==" + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } }, "node_modules/@types/figlet": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/figlet/-/figlet-1.5.5.tgz", - "integrity": "sha512-0sMBeFoqdGgdXoR/hgKYSWMpFufSpToosNsI2VgmkPqZJgeEXsXNu2hGr0FN401dBro2tNO5y2D6uw3UxVaxbg==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@types/figlet/-/figlet-1.7.0.tgz", + "integrity": "sha512-KwrT7p/8Eo3Op/HBSIwGXOsTZKYiM9NpWRBJ5sVjWP/SmlS+oxxRvJht/FNAtliJvja44N3ul1yATgohnVBV0Q==" }, "node_modules/@types/glob": { "version": "7.2.0", @@ -528,25 +615,31 @@ "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "dev": true }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "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 }, "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, "node_modules/@types/minimatch": { @@ -556,124 +649,140 @@ "dev": true }, "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, "node_modules/@types/node": { - "version": "18.13.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", - "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==" + "version": "22.8.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", + "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", + "dependencies": { + "undici-types": "~6.19.8" + } }, "node_modules/@types/node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dependencies": { "@types/node": "*", - "form-data": "^3.0.0" + "form-data": "^4.0.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", "dev": true }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } }, "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "dependencies": { - "@types/mime": "*", - "@types/node": "*" + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, "node_modules/@types/ws": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", - "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz", - "integrity": "sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/type-utils": "5.52.0", - "@typescript-eslint/utils": "5.52.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz", + "integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.11.0", + "@typescript-eslint/type-utils": "8.11.0", + "@typescript-eslint/utils": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -682,25 +791,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.52.0.tgz", - "integrity": "sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz", + "integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/typescript-estree": "5.52.0", + "@typescript-eslint/scope-manager": "8.11.0", + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/typescript-estree": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -709,16 +819,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz", - "integrity": "sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz", + "integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/visitor-keys": "5.52.0" + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -726,26 +836,23 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz", - "integrity": "sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz", + "integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.52.0", - "@typescript-eslint/utils": "5.52.0", + "@typescript-eslint/typescript-estree": "8.11.0", + "@typescript-eslint/utils": "8.11.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "*" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -753,12 +860,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.52.0.tgz", - "integrity": "sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz", + "integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -766,21 +873,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz", - "integrity": "sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz", + "integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/visitor-keys": "5.52.0", + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/visitor-keys": "8.11.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -792,43 +900,63 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.52.0.tgz", - "integrity": "sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz", + "integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.52.0", - "@typescript-eslint/types": "5.52.0", - "@typescript-eslint/typescript-estree": "5.52.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.11.0", + "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/typescript-estree": "8.11.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.52.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz", - "integrity": "sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz", + "integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.52.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "8.11.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -836,185 +964,193 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, "node_modules/@webcomponents/webcomponentsjs": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.7.0.tgz", - "integrity": "sha512-j161Z9oiy8k74vchdrQGihfSp7QulrTclCUiPo0D7JF6/RjpXAmB0ThlTAFlSElkgqg0vdFgNAXaX9ZHZy25wQ==" + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.8.0.tgz", + "integrity": "sha512-loGD63sacRzOzSJgQnB9ZAhaQGkN7wl2Zuw7tsphI5Isa0irijrRo6EnJii/GgjGefIFO8AIO7UivzRhFaEk9w==" }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=14.15.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -1038,6 +1174,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "optional": true }, "node_modules/abbrev": { @@ -1070,9 +1207,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "devOptional": true, "bin": { "acorn": "bin/acorn" @@ -1082,31 +1219,19 @@ } }, "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", "optional": true, "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "optional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, "peerDependencies": { "acorn": "^8" @@ -1122,10 +1247,13 @@ } }, "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "optional": true, + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -1148,15 +1276,15 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -1180,35 +1308,16 @@ } } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "fast-deep-equal": "^3.1.3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, "peerDependencies": { - "ajv": "^6.9.1" + "ajv": "^8.8.2" } }, "node_modules/ansi-html-community": { @@ -1268,6 +1377,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -1282,10 +1392,25 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "node_modules/array-ify": { @@ -1295,12 +1420,15 @@ "dev": true }, "node_modules/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==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/array-uniq": { @@ -1312,6 +1440,27 @@ "node": ">=0.10.0" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -1322,14 +1471,15 @@ } }, "node_modules/assert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "dependencies": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" } }, "node_modules/asynckit": { @@ -1338,9 +1488,12 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -1388,30 +1541,33 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", + "qs": "6.13.0", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -1445,13 +1601,11 @@ "dev": true }, "node_modules/bonjour-service": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.0.tgz", - "integrity": "sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } @@ -1472,32 +1626,26 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browser-or-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", - "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==" - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "optional": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-3.0.0.tgz", + "integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==" }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "funding": [ { @@ -1507,13 +1655,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -1551,6 +1703,21 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -1561,12 +1728,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1618,9 +1791,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001453", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001453.tgz", - "integrity": "sha512-R9o/uySW38VViaTrOtwfbFEiBFUh7ST3uIG4OEymIG3/uKdHDO4xk/FaqfUw0d+irSUyFPy3dZszf9VvSTPnsA==", + "version": "1.0.30001673", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001673.tgz", + "integrity": "sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==", "dev": true, "funding": [ { @@ -1630,13 +1803,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, "node_modules/canvas": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.0.tgz", - "integrity": "sha512-bdTjFexjKJEwtIo0oRx8eD4G2yWoUOXP9lj279jmQ2zMnTQhT8C3512OKz3s+ZOaQlLbE7TuVvRDYDB3Llyy5g==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", "hasInstallScript": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", @@ -1648,9 +1825,9 @@ } }, "node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -1659,16 +1836,10 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1681,6 +1852,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -1706,18 +1880,18 @@ } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "engines": { "node": ">=6.0" } }, "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -1793,9 +1967,9 @@ } }, "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "node_modules/combined-stream": { @@ -1810,11 +1984,11 @@ } }, "node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "engines": { - "node": "^12.20.0 || >=14" + "node": ">=18" } }, "node_modules/commonjs": { @@ -1839,6 +2013,17 @@ "dot-prop": "^5.1.0" } }, + "node_modules/component-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-2.0.0.tgz", + "integrity": "sha512-4m5s3Me2xxlVKG9PkZpQqHQR7bgpnN7joDMJ4yvVkVXngjoITG76IaZmzmywSeRTeTpc6N6r3H3+KyUurV8OYw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -2143,9 +2328,9 @@ } }, "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -2207,9 +2392,9 @@ } }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "engines": { "node": ">= 0.6" @@ -2222,20 +2407,20 @@ "dev": true }, "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", "dev": true, "dependencies": { - "fast-glob": "^3.2.11", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.1", - "globby": "^13.1.1", + "globby": "^14.0.0", "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -2245,37 +2430,6 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -2379,17 +2533,52 @@ "node": ">=12" } }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "optional": true, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/dateformat": { @@ -2402,11 +2591,11 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2472,34 +2661,70 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "devOptional": true + "dev": true }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, "dependencies": { - "execa": "^5.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -2528,18 +2753,6 @@ "node": ">=6" } }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/del/node_modules/globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", @@ -2569,6 +2782,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -2619,9 +2833,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "engines": { "node": ">=8" } @@ -2641,28 +2855,10 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "node_modules/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, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, "node_modules/dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -2671,18 +2867,6 @@ "node": ">=6" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -2706,6 +2890,15 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -2722,6 +2915,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", "optional": true, "dependencies": { "webidl-conversions": "^7.0.0" @@ -2862,16 +3056,11 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.299", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.299.tgz", - "integrity": "sha512-lQ7ijJghH6pCGbfWXr6EY+KYCMaRSjgsY925r1p/TlpSfVM1VjHTcn1gAc15VM4uwti283X6QtjPTXdpoSGiZQ==", + "version": "1.5.47", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.47.tgz", + "integrity": "sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==", "dev": true }, - "node_modules/emitter-component": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", - "integrity": "sha512-G+mpdiAySMuB7kesVRLuyvYRqDmshB7ReKEVuyBPkzQlmiDiLrt7hHHIy4Aff552bgknVN7B2/d3lzhGO5dvpQ==" - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2887,18 +3076,18 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "engines": { "node": ">= 0.8" } }, "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -2909,18 +3098,21 @@ } }, "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "optional": true, + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -2939,43 +3131,56 @@ } }, "node_modules/es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -2984,20 +3189,50 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -3019,15 +3254,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" - }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "engines": { "node": ">=6" @@ -3040,27 +3270,23 @@ "dev": true }, "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "optional": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", @@ -3073,120 +3299,64 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "optional": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "optional": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "optional": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "optional": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "optional": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", - "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", + "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.7.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.13.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", + "optionator": "^0.9.3", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-scope": { @@ -3202,40 +3372,41 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": ">=4.0" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/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, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/eslint/node_modules/chalk": { @@ -3254,28 +3425,52 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true, "engines": { - "node": ">=4.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3289,17 +3484,29 @@ } }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^4.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3319,9 +3526,9 @@ } }, "node_modules/esquery": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.1.tgz", - "integrity": "sha512-3ZggxvMv5EEY1ssUVyHSVt0oPreyBfbUi1XikJVfjFiBeBDLdrb0IWoDiEwqT/2sUQi0TGaWtFhOGDD8RTpXgQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -3330,15 +3537,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -3351,20 +3549,11 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=4.0" } @@ -3409,61 +3598,38 @@ "node": ">=0.8.x" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -3474,12 +3640,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -3496,15 +3656,15 @@ "dev": true }, "node_modules/fabric": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/fabric/-/fabric-5.2.1.tgz", - "integrity": "sha512-Irltx4i+aLccWgdQj2Uvrwh/XulDAqqYMZ1bI13fAtmlxl4ggobo0t7VVYy3Ob4YEB0sCeJZKE8ExZgGo/amkw==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fabric/-/fabric-6.4.3.tgz", + "integrity": "sha512-z/bJna3kWOBv+wmvVK4XxUQgCXLGb//VaSr5xPFIP708obH7472uuVsWbXam+xq+y21bLBtr4OHO1HuJyYi4FQ==", "engines": { - "node": ">=14.0.0" + "node": ">=16.20.0" }, "optionalDependencies": { - "canvas": "^2.8.0", - "jsdom": "^19.0.0" + "canvas": "^2.11.2", + "jsdom": "^20.0.1" } }, "node_modules/fast-deep-equal": { @@ -3514,9 +3674,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "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, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -3551,7 +3711,13 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "devOptional": true + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "dev": true }, "node_modules/fastest-levenshtein": { "version": "1.0.16", @@ -3563,9 +3729,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -3606,9 +3772,12 @@ } }, "node_modules/figlet": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", - "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.8.0.tgz", + "integrity": "sha512-chzvGjd+Sp7KUvPHZv6EXV5Ir3Q7kYNpCr4aHrRW79qFtTefmQZNny+W1pW9kf5zeE6dikku2W50W/wAH2xWgw==", + "bin": { + "figlet": "bin/index.js" + }, "engines": { "node": ">= 0.4.0" } @@ -3628,31 +3797,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -3662,13 +3822,13 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -3710,29 +3870,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -3758,9 +3927,9 @@ } }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -3821,21 +3990,15 @@ "node": ">=8" } }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -3847,19 +4010,22 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -3880,6 +4046,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -3905,13 +4072,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3935,10 +4107,16 @@ "node": ">=6.9.0" } }, + "node_modules/get-pkg-repo/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -3975,25 +4153,14 @@ "xtend": "~4.0.1" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -4060,9 +4227,9 @@ } }, "node_modules/git-semver-tags/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -4081,6 +4248,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4115,26 +4283,24 @@ "dev": true }, "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -4144,20 +4310,20 @@ } }, "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, "dependencies": { - "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" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4175,15 +4341,15 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "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 }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "node_modules/handle-thing": { @@ -4193,13 +4359,13 @@ "dev": true }, "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "dependencies": { "minimist": "^1.2.5", - "neo-async": "^2.6.0", + "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, @@ -4222,17 +4388,6 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -4251,20 +4406,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -4284,11 +4439,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -4302,6 +4457,17 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -4335,10 +4501,16 @@ "wbuf": "^1.1.0" } }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -4378,10 +4550,20 @@ } }, "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, "node_modules/html-minifier-terser": { "version": "6.1.0", @@ -4414,9 +4596,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", + "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -4433,7 +4615,16 @@ "url": "https://opencollective.com/html-webpack-plugin" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/htmlparser2": { @@ -4455,6 +4646,15 @@ "entities": "^2.0.0" } }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -4512,9 +4712,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", "dev": true, "dependencies": { "@types/http-proxy": "^1.17.8", @@ -4559,13 +4759,13 @@ "node": ">= 6" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, "engines": { - "node": ">=10.17.0" + "node": ">=10.18" } }, "node_modules/iconv-lite": { @@ -4600,9 +4800,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -4624,10 +4824,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -4665,6 +4874,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4682,12 +4892,12 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -4695,18 +4905,18 @@ } }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, "engines": { "node": ">= 10" @@ -4728,13 +4938,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4796,12 +5008,29 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4822,15 +5051,15 @@ } }, "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, "bin": { "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4879,6 +5108,24 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-nan": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", @@ -4895,9 +5142,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "engines": { "node": ">= 0.4" }, @@ -4905,6 +5152,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -4958,7 +5217,7 @@ "node": ">=6" } }, - "node_modules/is-path-in-cwd/node_modules/is-path-inside": { + "node_modules/is-path-inside": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", @@ -4970,15 +5229,6 @@ "node": ">=6" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -5022,26 +5272,17 @@ } }, "node_modules/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", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-string": { @@ -5085,15 +5326,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -5114,22 +5351,24 @@ } }, "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/isexe": { "version": "2.0.0", @@ -5160,16 +5399,6 @@ "node": ">= 10.13.0" } }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5189,41 +5418,40 @@ } }, "node_modules/jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", "optional": true, "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", "cssom": "^0.5.0", "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", "domexception": "^4.0.0", "escodegen": "^2.0.0", "form-data": "^4.0.0", "html-encoding-sniffer": "^3.0.0", "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", "webidl-conversions": "^7.0.0", "whatwg-encoding": "^2.0.0", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" }, "peerDependencies": { "canvas": "^2.5.0" @@ -5234,19 +5462,11 @@ } } }, - "node_modules/jsdom/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, "node_modules/json-parse-better-errors": { "version": "1.0.2", @@ -5261,9 +5481,9 @@ "dev": true }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { @@ -5315,6 +5535,15 @@ "node": "*" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -5324,6 +5553,16 @@ "node": ">=0.10.0" } }, + "node_modules/launch-editor": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", + "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -5344,28 +5583,29 @@ "dev": true }, "node_modules/lit": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.6.1.tgz", - "integrity": "sha512-DT87LD64f8acR7uVp7kZfhLRrHkfC/N4BVzAtnw9Yg8087mbBJ//qedwdwX0kzDbxgPccWRW6mFwGbRQIxy0pw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", "dependencies": { - "@lit/reactive-element": "^1.6.0", - "lit-element": "^3.2.0", - "lit-html": "^2.6.0" + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" } }, "node_modules/lit-element": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", - "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz", + "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==", "dependencies": { - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.2.0" + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" } }, "node_modules/lit-html": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.6.1.tgz", - "integrity": "sha512-Z3iw+E+3KKFn9t2YKNjsXNEu/LRLI98mtH/C6lnFg7kvaqPIzPn124Yd4eT/43lyqrejpc5Wb6BHq3fdv4S8Rw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", + "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -5463,6 +5703,7 @@ "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, "dependencies": { "yallist": "^4.0.0" }, @@ -5485,9 +5726,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -5514,15 +5755,22 @@ } }, "node_modules/memfs": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz", - "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.14.0.tgz", + "integrity": "sha512-JUeY0F/fQZgIod31Ja1eJgiSxLn7BfQlCnqhwXFBzFHEw63OdLK7VJUJ7bnzNsWgCyoUP5tEp1VRY8rDaYzqOA==", "dev": true, "dependencies": { - "fs-monkey": "^1.0.3" + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" }, "engines": { "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/meow": { @@ -5689,32 +5937,23 @@ } }, "node_modules/meow/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, - "engines": { - "node": ">=10" - }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -5740,12 +5979,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -5783,15 +6022,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/mimic-response": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", @@ -5860,9 +6090,9 @@ } }, "node_modules/minipass": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", - "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "engines": { "node": ">=8" } @@ -5911,9 +6141,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -5929,9 +6159,9 @@ } }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -5939,12 +6169,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -5989,9 +6213,9 @@ } }, "node_modules/node-fetch": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", - "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -6034,9 +6258,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/nopt": { @@ -6077,22 +6301,11 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -6113,9 +6326,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", + "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", "optional": true }, "node_modules/object-assign": { @@ -6127,20 +6340,23 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -6158,12 +6374,12 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -6209,42 +6425,28 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/open": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz", - "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", "dev": true, "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { "deep-is": "^0.1.3", @@ -6252,7 +6454,7 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -6298,16 +6500,20 @@ } }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dev": true, "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -6355,10 +6561,16 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "optional": true + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "optional": true, + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/parseurl": { "version": "1.3.3", @@ -6418,24 +6630,27 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "node_modules/picomatch": { @@ -6544,6 +6759,14 @@ "node": ">=8" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6606,9 +6829,9 @@ "optional": true }, "node_modules/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==", "devOptional": true, "engines": { "node": ">=6" @@ -6618,6 +6841,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", "dev": true, "engines": { "node": ">=0.6.0", @@ -6625,12 +6849,12 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -6693,9 +6917,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -6850,18 +7074,18 @@ } }, "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6884,15 +7108,15 @@ } }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/redent": { @@ -6909,13 +7133,14 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -6924,18 +7149,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -6983,12 +7196,12 @@ "devOptional": true }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -7011,7 +7224,7 @@ "node": ">=8" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { + "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -7020,15 +7233,6 @@ "node": ">=8" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -7052,6 +7256,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -7062,6 +7267,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -7085,6 +7302,23 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -7105,14 +7339,17 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7124,32 +7361,32 @@ "devOptional": true }, "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "optional": true, "dependencies": { "xmlchars": "^2.2.0" }, "engines": { - "node": ">=10" + "node": ">=v12.22.7" } }, "node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -7159,40 +7396,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -7200,11 +7403,12 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, "dependencies": { + "@types/node-forge": "^1.3.0", "node-forge": "^1" }, "engines": { @@ -7212,12 +7416,9 @@ } }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -7226,9 +7427,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -7264,16 +7465,19 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -7358,15 +7562,15 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -7377,6 +7581,36 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -7416,14 +7650,27 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7464,12 +7711,15 @@ } }, "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/sockjs": { @@ -7503,9 +7753,9 @@ } }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -7513,9 +7763,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -7529,9 +7779,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", "dev": true }, "node_modules/spdy": { @@ -7654,15 +7904,6 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/standard-version/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/standard-version/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -7694,11 +7935,11 @@ } }, "node_modules/stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", - "integrity": "sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.3.tgz", + "integrity": "sha512-aMsbn7VKrl4A2T7QAQQbzgN7NVc70vgF5INQrBXqn4dCXN1zy3L9HGgLO5s7PExmdrzTJ8uR/27aviW8or8/+A==", "dependencies": { - "emitter-component": "^1.1.1" + "component-emitter": "^2.0.0" } }, "node_modules/string_decoder": { @@ -7723,42 +7964,67 @@ } }, "node_modules/string.prototype.replaceall": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.7.tgz", - "integrity": "sha512-xB2WV2GlSCSJT5dMGdhdH1noMPiAB91guiepwTYyWY9/0Vq/TZ7RPmnOSUGAEvry08QIK7EMr28aAii+9jC6kw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.10.tgz", + "integrity": "sha512-PKLapcZUZmXUdfIM6rTTTMYOxaj4JiQrgl0SKEeCFug1CdMAuJq8hVZd4eek9yMXAW4ldGUq+TiZRtjLJRU96g==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7791,15 +8057,6 @@ "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -7875,13 +8132,13 @@ } }, "node_modules/tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^4.0.0", + "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" @@ -7891,13 +8148,13 @@ } }, "node_modules/terser": { - "version": "5.16.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz", - "integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -7909,16 +8166,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -7942,10 +8199,41 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -7983,14 +8271,15 @@ } }, "node_modules/test/node_modules/readable-stream": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", - "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", - "process": "^0.11.10" + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8011,6 +8300,18 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -8054,9 +8355,9 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "optional": true, "dependencies": { "psl": "^1.1.33", @@ -8080,6 +8381,22 @@ "node": ">=12" } }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -8089,16 +8406,29 @@ "node": ">=8" } }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-loader": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", - "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", "dev": true, "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", - "semver": "^7.3.4" + "semver": "^7.3.4", + "source-map": "^0.7.4" }, "engines": { "node": ">=12.0.0" @@ -8124,6 +8454,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/ts-loader/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8137,30 +8476,9 @@ } }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", "dev": true }, "node_modules/type-check": { @@ -8176,9 +8494,9 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, "engines": { "node": ">=10" @@ -8200,14 +8518,70 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8220,22 +8594,22 @@ "dev": true }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, "optional": true, "bin": { @@ -8259,6 +8633,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -8278,9 +8669,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -8290,14 +8681,18 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -8382,32 +8777,22 @@ "node": ">= 0.8" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "optional": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, "node_modules/w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "optional": true, "dependencies": { "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -8427,9 +8812,9 @@ } }, "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "engines": { "node": ">= 8" } @@ -8444,34 +8829,33 @@ } }, "node_modules/webpack": { - "version": "5.75.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", - "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "version": "5.95.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", + "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -8491,44 +8875,42 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "5.x.x" }, "peerDependenciesMeta": { "@webpack-cli/generators": { "optional": true }, - "@webpack-cli/migrate": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -8538,99 +8920,108 @@ } }, "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=14" } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", + "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dev": true, "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.3", + "memfs": "^4.6.0", "mime-types": "^2.1.31", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, "node_modules/webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.1.0.tgz", + "integrity": "sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.19.2", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", + "html-entities": "^2.4.0", "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { + "webpack": { + "optional": true + }, "webpack-cli": { "optional": true } } }, "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", + "flat": "^5.0.2", "wildcard": "^2.0.0" }, "engines": { @@ -8655,10 +9046,41 @@ "node": ">=10.13.0" } }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -8730,9 +9152,9 @@ } }, "node_modules/whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "optional": true, "dependencies": { "tr46": "^3.0.0", @@ -8773,16 +9195,15 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8800,16 +9221,16 @@ } }, "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "devOptional": true, + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8843,9 +9264,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "devOptional": true, "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index 8dc2f21..ae5dc9c 100644 --- a/package.json +++ b/package.json @@ -42,43 +42,42 @@ }, "license": "Apache-2.0", "dependencies": { - "@types/browser-or-node": "^1.3.0", - "@types/fabric": "4.5.11", - "@types/figlet": "^1.5.5", - "@types/node": "^18.13.0", - "@types/node-fetch": "^2.6.2", - "@webcomponents/webcomponentsjs": "^2.7.0", - "assert": "^2.0.0", - "browser-or-node": "^2.1.1", + "@types/browser-or-node": "^1.3.2", + "@types/figlet": "^1.7.0", + "@types/node": "^22.8.1", + "@types/node-fetch": "^2.6.11", + "@webcomponents/webcomponentsjs": "^2.8.0", + "assert": "^2.1.0", + "browser-or-node": "^3.0.0", "buffer": "^6.0.3", - "canvas": "^2.11.0", - "chalk": "^5.2.0", - "commander": "^9.5.0", + "canvas": "^2.11.2", + "chalk": "^5.3.0", + "commander": "^12.1.0", "commonjs": "0.0.1", - "fabric": "5.2.1", - "figlet": "^1.5.2", - "lit": "^2.6.1", - "lit-element": "^3.2.2", - "lit-html": "^2.6.1", + "fabric": "6.4.3", + "figlet": "^1.8.0", + "lit": "^3.2.1", + "lit-element": "^4.1.1", + "lit-html": "^3.2.1", "mini-svg-data-uri": "^1.4.4", - "node-fetch": "^3.3.0", - "stream": "^0.0.2", + "node-fetch": "^3.3.2", + "stream": "^0.0.3", "xml-js": "^1.6.11" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.52.0", - "@typescript-eslint/parser": "^5.52.0", + "@typescript-eslint/eslint-plugin": "^8.11.0", + "@typescript-eslint/parser": "^8.11.0", "clean-webpack-plugin": "^4.0.0", - "copy-webpack-plugin": "^11.0.0", - "eslint": "^8.34.0", - "html-webpack-plugin": "^5.5.0", + "copy-webpack-plugin": "^12.0.2", + "eslint": "^9.13.0", + "html-webpack-plugin": "^5.6.3", "node-loader": "^2.0.0", "standard-version": "^9.5.0", - "ts-loader": "^9.4.2", - "typescript": "^4.9.5", - "webpack": "^5.75.0", - "webpack-cli": "^4.10.0", - "webpack-dev-server": "^4.11.1", + "ts-loader": "^9.5.1", + "typescript": "^5.6.3", + "webpack": "^5.95.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.1.0", "webpack-node-externals": "^3.0.0" } } From 58b0cbced77f9a3172fcda0567a3c08bd5a9e6b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Mon, 28 Oct 2024 15:45:50 +0000 Subject: [PATCH 02/12] updates tsconfig --- tsconfig.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index c0c94cd..1e91570 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -66,8 +66,7 @@ /* Advanced Options */ "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, - "resolveJsonModule": true /* Json support. */, - "watch": false /* tsc command in watch mode. */ + "resolveJsonModule": true /* Json support. */ }, "exclude": ["node_modules", "**/*spec.ts", "src/jd-viewers-cli.ts"], "include": ["**/*", "src/*", "*.ts"] From 3b2e5175a391090ff6486cc2a8dec096eefadb7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Mon, 28 Oct 2024 15:47:09 +0000 Subject: [PATCH 03/12] adds prettier config --- .prettierrc.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .prettierrc.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..780228d --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,11 @@ +{ + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "semi": true, + "bracketSpacing": true, + "arrowParens": "avoid", + "trailingComma": "es5", + "bracketSameLine": true, + "printWidth": 120 +} From 8ef90d70342c8323b22a8a1a37eb8d89a580804a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Mon, 28 Oct 2024 15:47:18 +0000 Subject: [PATCH 04/12] adds editor config --- .editorconfig | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..01a20f1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +# https://editorconfig.org + +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false From 4cd1e9548ca747662b6e38be05b5f770debd5192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Mon, 28 Oct 2024 15:48:28 +0000 Subject: [PATCH 05/12] adds format and format write commands --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index ae5dc9c..c302033 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,9 @@ "dev:cli": "tsc -w -p ./tsconfig.cli.json", "build:cli": "tsc -p ./tsconfig.cli.json", "tsc:cli": "tsc -w -p ./tsconfig.cli.json", - "release": "standard-version" + "release": "standard-version", + "format": "npx prettier '**/*.ts' --check", + "format:write": "npx prettier '**/*.ts' --write" }, "browser": { "child_process": false From 9cb8b824b77fc9bb910cec991b8f197dd2d85183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Mon, 28 Oct 2024 15:49:31 +0000 Subject: [PATCH 06/12] auto-formatting with prettier --- json.d.ts | 12 +- src/app.ts | 80 +- src/color-schemes.ts | 120 +- src/color-utilities.ts | 357 ++-- src/coords-utilities.ts | 142 +- src/custom-events.ts | 418 ++-- src/custom-types.ts | 206 +- src/data-model.ts | 248 +-- src/drawing-utilities.ts | 2044 +++++++++----------- src/functional-predictions-app.ts | 1687 ++++++++-------- src/functional-predictions-webcomponent.ts | 135 +- src/index.ts | 407 ++-- src/jd-viewers-cli.ts | 445 ++--- src/other-utilities.ts | 704 ++++--- src/visual-output-app.ts | 1466 +++++++------- src/visual-output-webcomponent.ts | 102 +- 16 files changed, 3891 insertions(+), 4682 deletions(-) diff --git a/json.d.ts b/json.d.ts index f6d0a2d..9760950 100644 --- a/json.d.ts +++ b/json.d.ts @@ -1,11 +1,11 @@ // This will allow you to load `.json` files from disk -declare module "*.json" { - const value: any; - export default value; +declare module '*.json' { + const value: any; + export default value; } // This will allow you to load JSON from remote URL responses -declare module "json!*" { - const value: any; - export default value; +declare module 'json!*' { + const value: any; + export default value; } diff --git a/src/app.ts b/src/app.ts index 344de89..556fabc 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,52 +1,52 @@ -import svgToMiniDataURI from "mini-svg-data-uri"; -import {isBrowser, isNode} from "browser-or-node"; -import {VisualOutput} from "./visual-output-app"; -import {FunctionalPredictions} from "./functional-predictions-app"; +import svgToMiniDataURI from 'mini-svg-data-uri'; +import { isBrowser, isNode } from 'browser-or-node'; +import { VisualOutput } from './visual-output-app'; +import { FunctionalPredictions } from './functional-predictions-app'; import { - validateJobId, - fetchData, - dataAsType, - getJdispatcherJsonURL, - validateSubmittedJobIdInput, - validateSubmittedDbfetchInput, - getIPRMCDataModelFlatFromXML, -} from "./other-utilities"; -import {ColorSchemeEnum} from "./custom-types"; + validateJobId, + fetchData, + dataAsType, + getJdispatcherJsonURL, + validateSubmittedJobIdInput, + validateSubmittedDbfetchInput, + getIPRMCDataModelFlatFromXML, +} from './other-utilities'; +import { ColorSchemeEnum } from './custom-types'; // plugin support & module support // if (typeof window === "undefined") { if (isBrowser) { - (window as any).VisualOutput = VisualOutput; - (window as any).FunctionalPredictions = FunctionalPredictions; - (window as any).validateJobId = validateJobId; - (window as any).svgToMiniDataURI = svgToMiniDataURI; - (window as any).fetchData = fetchData; - (window as any).dataAsType = dataAsType; - (window as any).getJdispatcherJsonURL = getJdispatcherJsonURL; - (window as any).validateSubmittedJobIdInput = validateSubmittedJobIdInput; - (window as any).validateSubmittedDbfetchInput = validateSubmittedDbfetchInput; - (window as any).getIPRMCDataModelFlatFromXML = getIPRMCDataModelFlatFromXML; - (window as any).ColorSchemeEnum = ColorSchemeEnum; + (window as any).VisualOutput = VisualOutput; + (window as any).FunctionalPredictions = FunctionalPredictions; + (window as any).validateJobId = validateJobId; + (window as any).svgToMiniDataURI = svgToMiniDataURI; + (window as any).fetchData = fetchData; + (window as any).dataAsType = dataAsType; + (window as any).getJdispatcherJsonURL = getJdispatcherJsonURL; + (window as any).validateSubmittedJobIdInput = validateSubmittedJobIdInput; + (window as any).validateSubmittedDbfetchInput = validateSubmittedDbfetchInput; + (window as any).getIPRMCDataModelFlatFromXML = getIPRMCDataModelFlatFromXML; + (window as any).ColorSchemeEnum = ColorSchemeEnum; } if (isNode) { - module.exports = { - VisualOutput: VisualOutput, - FunctionalPredictions: FunctionalPredictions, - validateJobId: validateJobId, - svgToMiniDataURI: svgToMiniDataURI, - fetchData: fetchData, - dataAsType: dataAsType, - getJdispatcherJsonURL: getJdispatcherJsonURL, - validateSubmittedJobIdInput: validateSubmittedJobIdInput, - validateSubmittedDbfetchInput: validateSubmittedDbfetchInput, - getIPRMCDataModelFlatFromXML: getIPRMCDataModelFlatFromXML, - ColorSchemeEnum: ColorSchemeEnum, - }; + module.exports = { + VisualOutput: VisualOutput, + FunctionalPredictions: FunctionalPredictions, + validateJobId: validateJobId, + svgToMiniDataURI: svgToMiniDataURI, + fetchData: fetchData, + dataAsType: dataAsType, + getJdispatcherJsonURL: getJdispatcherJsonURL, + validateSubmittedJobIdInput: validateSubmittedJobIdInput, + validateSubmittedDbfetchInput: validateSubmittedDbfetchInput, + getIPRMCDataModelFlatFromXML: getIPRMCDataModelFlatFromXML, + ColorSchemeEnum: ColorSchemeEnum, + }; } // web-component support -import "./visual-output-webcomponent.ts"; -import "./functional-predictions-webcomponent.ts"; +import './visual-output-webcomponent.ts'; +import './functional-predictions-webcomponent.ts'; // demo index page with JobId input form (implemented in TypeScript) -import "./index.ts"; +import './index.ts'; diff --git a/src/color-schemes.ts b/src/color-schemes.ts index 7a41e69..3f56e69 100644 --- a/src/color-schemes.ts +++ b/src/color-schemes.ts @@ -1,71 +1,69 @@ -import {fabric} from "fabric"; -import {ColorType} from "./custom-types"; +import { fabric } from 'fabric'; +import { ColorType } from './custom-types'; export const defaultGradient: ColorType = { - 0.0: [255, 64, 64], - 0.25: [255, 255, 64], - 0.5: [64, 255, 64], - 0.75: [64, 255, 255], - 1.0: [64, 64, 255], - keys: [0.0, 0.25, 0.5, 0.75, 1.0], + 0.0: [255, 64, 64], + 0.25: [255, 255, 64], + 0.5: [64, 255, 64], + 0.75: [64, 255, 255], + 1.0: [64, 64, 255], + keys: [0.0, 0.25, 0.5, 0.75, 1.0], }; -export function colorDefaultGradient( - canvasObj: fabric.Object, - start: number, - end: number -) { - canvasObj.set("fill", new fabric.Gradient({ - type: "linear", - coords: { - x1: start, - y1: 0, - x2: end, - y2: 0 - }, - colorStops: [ - {offset: 0.0, color: `rgb(${defaultGradient[0.0].join(",")})`}, - {offset: 0.25, color: `rgb(${defaultGradient[0.25].join(",")})`}, - {offset: 0.5, color: `rgb(${defaultGradient[0.5].join(",")})`}, - {offset: 0.75, color: `rgb(${defaultGradient[0.75].join(",")})`}, - {offset: 1.0, color: `rgb(${defaultGradient[1.0].join(",")})`} - ] - })); +export function colorDefaultGradient(canvasObj: fabric.Object, start: number, end: number) { + canvasObj.set( + 'fill', + new fabric.Gradient({ + type: 'linear', + coords: { + x1: start, + y1: 0, + x2: end, + y2: 0, + }, + colorStops: [ + { offset: 0.0, color: `rgb(${defaultGradient[0.0].join(',')})` }, + { offset: 0.25, color: `rgb(${defaultGradient[0.25].join(',')})` }, + { offset: 0.5, color: `rgb(${defaultGradient[0.5].join(',')})` }, + { offset: 0.75, color: `rgb(${defaultGradient[0.75].join(',')})` }, + { offset: 1.0, color: `rgb(${defaultGradient[1.0].join(',')})` }, + ], + }) + ); } export const ncbiBlastGradient: ColorType = { - 0: [0, 0, 0], - 40: [0, 32, 233], - 50: [117, 234, 76], - 80: [219, 61, 233], - 200: [219, 51, 36], - keys: [0, 40, 50, 80, 200], + 0: [0, 0, 0], + 40: [0, 32, 233], + 50: [117, 234, 76], + 80: [219, 61, 233], + 200: [219, 51, 36], + keys: [0, 40, 50, 80, 200], }; -export function colorNcbiBlastGradient( - canvasObj: fabric.Object, - start: number, - end: number -) { - canvasObj.set("fill", new fabric.Gradient({ - type: "linear", - coords: { - x1: start, - y1: 0, - x2: end, - y2: 0 - }, - colorStops: [ - {offset: 0.0, color: `rgb(${ncbiBlastGradient[0].join(",")})`}, - {offset: 0.199999, color: `rgb(${ncbiBlastGradient[0].join(",")})`}, - {offset: 0.2, color: `rgb(${ncbiBlastGradient[40].join(",")})`}, - {offset: 0.399999, color: `rgb(${ncbiBlastGradient[40].join(",")})`}, - {offset: 0.4, color: `rgb(${ncbiBlastGradient[50].join(",")})`}, - {offset: 0.599999, color: `rgb(${ncbiBlastGradient[50].join(",")})`}, - {offset: 0.6, color: `rgb(${ncbiBlastGradient[80].join(",")})`}, - {offset: 0.799999, color: `rgb(${ncbiBlastGradient[80].join(",")})`}, - {offset: 0.8, color: `rgb(${ncbiBlastGradient[200].join(",")})`}, - {offset: 1.0, color: `rgb(${ncbiBlastGradient[200].join(",")})`}, - ] - })); +export function colorNcbiBlastGradient(canvasObj: fabric.Object, start: number, end: number) { + canvasObj.set( + 'fill', + new fabric.Gradient({ + type: 'linear', + coords: { + x1: start, + y1: 0, + x2: end, + y2: 0, + }, + colorStops: [ + { offset: 0.0, color: `rgb(${ncbiBlastGradient[0].join(',')})` }, + { offset: 0.199999, color: `rgb(${ncbiBlastGradient[0].join(',')})` }, + { offset: 0.2, color: `rgb(${ncbiBlastGradient[40].join(',')})` }, + { offset: 0.399999, color: `rgb(${ncbiBlastGradient[40].join(',')})` }, + { offset: 0.4, color: `rgb(${ncbiBlastGradient[50].join(',')})` }, + { offset: 0.599999, color: `rgb(${ncbiBlastGradient[50].join(',')})` }, + { offset: 0.6, color: `rgb(${ncbiBlastGradient[80].join(',')})` }, + { offset: 0.799999, color: `rgb(${ncbiBlastGradient[80].join(',')})` }, + { offset: 0.8, color: `rgb(${ncbiBlastGradient[200].join(',')})` }, + { offset: 1.0, color: `rgb(${ncbiBlastGradient[200].join(',')})` }, + ], + }) + ); } diff --git a/src/color-utilities.ts b/src/color-utilities.ts index 1ce4483..140de8b 100644 --- a/src/color-utilities.ts +++ b/src/color-utilities.ts @@ -1,173 +1,124 @@ -import {ColorType, ColorSchemeEnum} from "./custom-types"; +import { ColorType, ColorSchemeEnum } from './custom-types'; -export function getRgbColorGradient( - score: number, - gradientSteps: number[], - colorScheme: ColorType -) { - // assumes length of gradientSteps is 5 - const colorSchemeSteps: number[] = colorScheme.keys; - if (colorSchemeSteps.length != gradientSteps.length) { - throw Error( - "Color Scheme and Gradient Steps should have matching lengths!" - ); - } - if (score + 0.0 === 0.0) { - return `rgb(${colorScheme[colorSchemeSteps[0]].join(",")})`; +export function getRgbColorGradient(score: number, gradientSteps: number[], colorScheme: ColorType) { + // assumes length of gradientSteps is 5 + const colorSchemeSteps: number[] = colorScheme.keys; + if (colorSchemeSteps.length != gradientSteps.length) { + throw Error('Color Scheme and Gradient Steps should have matching lengths!'); + } + if (score + 0.0 === 0.0) { + return `rgb(${colorScheme[colorSchemeSteps[0]].join(',')})`; + } else { + const start = gradientSteps[0]; + const step1 = gradientSteps[1]; + const step2 = gradientSteps[2]; + const step3 = gradientSteps[3]; + const end = gradientSteps[4]; + let h: number; + if (score < step1) { + const logStart = start === 0 ? Math.log10(Number.MIN_VALUE) : Math.log10(start); + h = 0.0 + (Math.log10(score) - logStart) / (Math.log10(step1) - logStart); + } else if (score < step2) { + h = 1.0 + (Math.log10(score) - Math.log10(step1)) / (Math.log10(step2) - Math.log10(step1)); + } else if (score < step3) { + h = 2.0 + (Math.log10(score) - Math.log10(step2)) / (Math.log10(step3) - Math.log10(step2)); + } else if (score < end) { + h = 3.0 + (Math.log10(score) - Math.log10(step3)) / (Math.log10(end) - Math.log10(step3)); } else { - const start = gradientSteps[0]; - const step1 = gradientSteps[1]; - const step2 = gradientSteps[2]; - const step3 = gradientSteps[3]; - const end = gradientSteps[4]; - let h: number; - if (score < step1) { - const logStart = - start === 0 ? Math.log10(Number.MIN_VALUE) : Math.log10(start); - h = - 0.0 + - (Math.log10(score) - logStart) / (Math.log10(step1) - logStart); - } else if (score < step2) { - h = - 1.0 + - (Math.log10(score) - Math.log10(step1)) / - (Math.log10(step2) - Math.log10(step1)); - } else if (score < step3) { - h = - 2.0 + - (Math.log10(score) - Math.log10(step2)) / - (Math.log10(step3) - Math.log10(step2)); - } else if (score < end) { - h = - 3.0 + - (Math.log10(score) - Math.log10(step3)) / - (Math.log10(end) - Math.log10(step3)); - } else { - h = 4.0; - } - const rgb = HSVtoRGB(h / 6, 0.75, 1.0); - return `rgb(${rgb.join(",")})`; + h = 4.0; } + const rgb = HSVtoRGB(h / 6, 0.75, 1.0); + return `rgb(${rgb.join(',')})`; + } } -export function getRgbColorFixed( - score: number, - gradientSteps: number[], - colorScheme: ColorType -) { - // assumes length of gradientSteps is 5 - const colorSchemeSteps: number[] = colorScheme.keys; - if (colorSchemeSteps.length != gradientSteps.length) { - throw Error( - "Color Scheme and Gradient Steps should have matching lengths!" - ); - } - if (score + 0.0 === 0.0 || score < gradientSteps[1]) { - return `rgb(${colorScheme[colorSchemeSteps[0]].join(",")})`; - } else if (score >= gradientSteps[1] && score < gradientSteps[2]) { - return `rgb(${colorScheme[colorSchemeSteps[1]].join(",")})`; - } else if (score >= gradientSteps[2] && score < gradientSteps[3]) { - return `rgb(${colorScheme[colorSchemeSteps[2]].join(",")})`; - } else if (score >= gradientSteps[3] && score < gradientSteps[4]) { - return `rgb(${colorScheme[colorSchemeSteps[3]].join(",")})`; - } else if (score >= gradientSteps[4]) { - return `rgb(${colorScheme[colorSchemeSteps[4]].join(",")})`; - } else { - return `rgb(192,192,192)`; - } +export function getRgbColorFixed(score: number, gradientSteps: number[], colorScheme: ColorType) { + // assumes length of gradientSteps is 5 + const colorSchemeSteps: number[] = colorScheme.keys; + if (colorSchemeSteps.length != gradientSteps.length) { + throw Error('Color Scheme and Gradient Steps should have matching lengths!'); + } + if (score + 0.0 === 0.0 || score < gradientSteps[1]) { + return `rgb(${colorScheme[colorSchemeSteps[0]].join(',')})`; + } else if (score >= gradientSteps[1] && score < gradientSteps[2]) { + return `rgb(${colorScheme[colorSchemeSteps[1]].join(',')})`; + } else if (score >= gradientSteps[2] && score < gradientSteps[3]) { + return `rgb(${colorScheme[colorSchemeSteps[2]].join(',')})`; + } else if (score >= gradientSteps[3] && score < gradientSteps[4]) { + return `rgb(${colorScheme[colorSchemeSteps[3]].join(',')})`; + } else if (score >= gradientSteps[4]) { + return `rgb(${colorScheme[colorSchemeSteps[4]].join(',')})`; + } else { + return `rgb(192,192,192)`; + } } export function getGradientSteps( - minEvalue: number, - maxEvalue: number, - minEvalueNotZero: number, - colorScheme: ColorSchemeEnum + minEvalue: number, + maxEvalue: number, + minEvalueNotZero: number, + colorScheme: ColorSchemeEnum ): number[] { - let gradientSteps: number[] = []; - if (colorScheme === ColorSchemeEnum.fixed) { + let gradientSteps: number[] = []; + if (colorScheme === ColorSchemeEnum.fixed) { + gradientSteps = [0, Math.pow(10, -1), Math.pow(10, 0), Math.pow(10, 1), Math.pow(10, 2)]; + } else if (colorScheme === ColorSchemeEnum.dynamic) { + if (maxEvalue < 1e-304) { + const eScale = -304; + gradientSteps = [ + 0, + Math.pow(10, eScale), + Math.pow(10, eScale / 2), + Math.pow(10, eScale / 4), + Math.pow(10, eScale / 8), + ]; + } else if (minEvalue < 1) { + const maxLog10 = Math.log10(maxEvalue); + if (maxEvalue <= 1) { + let secondEvalue: number; + let thirdEvalue: number; + let forthEvalue: number; + if (minEvalue === 0 && minEvalueNotZero > 0) { + secondEvalue = Math.log10(minEvalueNotZero) - 1; + } else { + const minLog10 = Math.log10(minEvalue); + secondEvalue = minLog10 + (maxLog10 - minLog10) / 2; + } + thirdEvalue = secondEvalue + (maxLog10 - secondEvalue) / 2; + forthEvalue = thirdEvalue + (maxLog10 - thirdEvalue) / 2; gradientSteps = [ - 0, - Math.pow(10, -1), - Math.pow(10, 0), - Math.pow(10, 1), - Math.pow(10, 2), + minEvalue, + Math.pow(10, secondEvalue), + Math.pow(10, thirdEvalue), + Math.pow(10, forthEvalue), + maxEvalue, ]; - } else if (colorScheme === ColorSchemeEnum.dynamic) { - if (maxEvalue < 1e-304) { - const eScale = -304; - gradientSteps = [ - 0, - Math.pow(10, eScale), - Math.pow(10, eScale / 2), - Math.pow(10, eScale / 4), - Math.pow(10, eScale / 8), - ]; - } else if (minEvalue < 1) { - const maxLog10 = Math.log10(maxEvalue); - if (maxEvalue <= 1) { - let secondEvalue: number; - let thirdEvalue: number; - let forthEvalue: number; - if (minEvalue === 0 && minEvalueNotZero > 0) { - secondEvalue = Math.log10(minEvalueNotZero) - 1; - } else { - const minLog10 = Math.log10(minEvalue); - secondEvalue = minLog10 + (maxLog10 - minLog10) / 2; - } - thirdEvalue = secondEvalue + (maxLog10 - secondEvalue) / 2; - forthEvalue = thirdEvalue + (maxLog10 - thirdEvalue) / 2; - gradientSteps = [ - minEvalue, - Math.pow(10, secondEvalue), - Math.pow(10, thirdEvalue), - Math.pow(10, forthEvalue), - maxEvalue, - ]; - } else { - const diffEvalue = - Math.log10(minEvalueNotZero) - Math.log10(maxEvalue); - if (Math.abs(diffEvalue) <= 2) { - gradientSteps = [ - minEvalue, - 1, - (2 + maxEvalue) / 3, - (2 + 2 * maxEvalue) / 3, - maxEvalue, - ]; - } else if (Math.abs(diffEvalue) <= 4) { - gradientSteps = [ - minEvalue, - Math.pow(10, diffEvalue / 2), - 1, - (maxEvalue + 1) / 2, - maxEvalue, - ]; - } else { - gradientSteps = [ - minEvalue, - Math.pow(10, diffEvalue / 2), - Math.pow(10, diffEvalue / 4), - 1, - maxEvalue, - ]; - } - } + } else { + const diffEvalue = Math.log10(minEvalueNotZero) - Math.log10(maxEvalue); + if (Math.abs(diffEvalue) <= 2) { + gradientSteps = [minEvalue, 1, (2 + maxEvalue) / 3, (2 + 2 * maxEvalue) / 3, maxEvalue]; + } else if (Math.abs(diffEvalue) <= 4) { + gradientSteps = [minEvalue, Math.pow(10, diffEvalue / 2), 1, (maxEvalue + 1) / 2, maxEvalue]; } else { - gradientSteps = [ - minEvalue, - (3 * minEvalue + maxEvalue) / 4, - (minEvalue + maxEvalue) / 2, - (minEvalue + 3 * maxEvalue) / 4, - maxEvalue, - ]; + gradientSteps = [minEvalue, Math.pow(10, diffEvalue / 2), Math.pow(10, diffEvalue / 4), 1, maxEvalue]; } - } else if (colorScheme === ColorSchemeEnum.ncbiblast) { - gradientSteps = [0, 40, 50, 80, 200]; + } } else { - // fixed (based on E-value) - gradientSteps = [0, 1e-5, 1e-2, 1, 100]; + gradientSteps = [ + minEvalue, + (3 * minEvalue + maxEvalue) / 4, + (minEvalue + maxEvalue) / 2, + (minEvalue + 3 * maxEvalue) / 4, + maxEvalue, + ]; } - return gradientSteps; + } else if (colorScheme === ColorSchemeEnum.ncbiblast) { + gradientSteps = [0, 40, 50, 80, 200]; + } else { + // fixed (based on E-value) + gradientSteps = [0, 1e-5, 1e-2, 1, 100]; + } + return gradientSteps; } // https://stackoverflow.com/questions/17242144/javascript-convert-hsb-hsv-color-to-rgb-accurately @@ -175,36 +126,36 @@ export function getGradientSteps( * h, s, v */ export function HSVtoRGB(h: number, s: number, v: number) { - let r: number = 0; - let g: number = 0; - let b: number = 0; - let i, f, p, q, t: number; - i = Math.floor(h * 6); - f = h * 6 - i; - p = v * (1 - s); - q = v * (1 - f * s); - t = v * (1 - (1 - f) * s); - switch (i % 6) { - case 0: - (r = v), (g = t), (b = p); - break; - case 1: - (r = q), (g = v), (b = p); - break; - case 2: - (r = p), (g = v), (b = t); - break; - case 3: - (r = p), (g = q), (b = v); - break; - case 4: - (r = t), (g = p), (b = v); - break; - case 5: - (r = v), (g = p), (b = q); - break; - } - return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; + let r: number = 0; + let g: number = 0; + let b: number = 0; + let i, f, p, q, t: number; + i = Math.floor(h * 6); + f = h * 6 - i; + p = v * (1 - s); + q = v * (1 - f * s); + t = v * (1 - (1 - f) * s); + switch (i % 6) { + case 0: + (r = v), (g = t), (b = p); + break; + case 1: + (r = q), (g = v), (b = p); + break; + case 2: + (r = p), (g = v), (b = t); + break; + case 3: + (r = p), (g = q), (b = v); + break; + case 4: + (r = t), (g = p), (b = v); + break; + case 5: + (r = v), (g = p), (b = q); + break; + } + return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; } /* accepts parameters @@ -240,24 +191,24 @@ export function HSVtoRGB(h: number, s: number, v: number) { // Using custom coloring scheme export function colorByDatabaseName(domainName: string): string { - let color: string; - // if (domainName == "InterPro") color = "rgb(211,47,47)"; - if (domainName == "Pfam") color = "rgb(211,47,47)"; - else if (domainName == "SUPERFAMILY") color = "rgb(171,71,188)"; - else if (domainName == "SMART") color = "rgb(106,27,154)"; - else if (domainName == "HAMAP") color = "rgb(57,73,171)"; - else if (domainName == "PANTHER") color = "rgb(33,150,243)"; - else if (domainName == "PRODOM") color = "rgb(0,188,212)"; - else if (domainName == "PROSITE profiles") color = "rgb(0,150,136)"; - else if (domainName == "CDD") color = "rgb(76,175,80)"; - else if (domainName == "CATH-Gene3D") color = "rgb(205,220,57)"; - else if (domainName == "PIRSF") color = "rgb(255,235,59)"; - else if (domainName == "PRINTS") color = "rgb(255,193,7)"; - else if (domainName == "TIGRFAMs") color = "rgb(255,112,67)"; - else if (domainName == "SFLD") color = "rgb(121,85,72)"; - else if (domainName == "PROSITE patterns") color = "rgb(55,71,79)"; - else color = "rgb(128,128,128)"; // UNCLASSIFIED and OTHERS - return color; + let color: string; + // if (domainName == "InterPro") color = "rgb(211,47,47)"; + if (domainName == 'Pfam') color = 'rgb(211,47,47)'; + else if (domainName == 'SUPERFAMILY') color = 'rgb(171,71,188)'; + else if (domainName == 'SMART') color = 'rgb(106,27,154)'; + else if (domainName == 'HAMAP') color = 'rgb(57,73,171)'; + else if (domainName == 'PANTHER') color = 'rgb(33,150,243)'; + else if (domainName == 'PRODOM') color = 'rgb(0,188,212)'; + else if (domainName == 'PROSITE profiles') color = 'rgb(0,150,136)'; + else if (domainName == 'CDD') color = 'rgb(76,175,80)'; + else if (domainName == 'CATH-Gene3D') color = 'rgb(205,220,57)'; + else if (domainName == 'PIRSF') color = 'rgb(255,235,59)'; + else if (domainName == 'PRINTS') color = 'rgb(255,193,7)'; + else if (domainName == 'TIGRFAMs') color = 'rgb(255,112,67)'; + else if (domainName == 'SFLD') color = 'rgb(121,85,72)'; + else if (domainName == 'PROSITE patterns') color = 'rgb(55,71,79)'; + else color = 'rgb(128,128,128)'; // UNCLASSIFIED and OTHERS + return color; } // Using coloring scheme from https://www.ebi.ac.uk/interpro/entry/InterPro/#table diff --git a/src/coords-utilities.ts b/src/coords-utilities.ts index bed5025..e9b1a5b 100644 --- a/src/coords-utilities.ts +++ b/src/coords-utilities.ts @@ -1,103 +1,71 @@ export function getTextLegendPaddingFactor(inputString: string): number { - let positionFactor = 0; - if (inputString.length === 1) { - positionFactor = 2.5; - } else if (inputString.length === 2) { - positionFactor = 10; - } else if (inputString.length === 3) { - positionFactor = 15.5; - } else if (inputString.length === 4) { - positionFactor = 21; - } else if (inputString.length === 5) { - positionFactor = 29; - } else if (inputString.length === 6) { - positionFactor = 35; - } else if (inputString.length === 7) { - positionFactor = 41; - } else if (inputString.length === 8) { - positionFactor = 47; - } - return positionFactor; + let positionFactor = 0; + if (inputString.length === 1) { + positionFactor = 2.5; + } else if (inputString.length === 2) { + positionFactor = 10; + } else if (inputString.length === 3) { + positionFactor = 15.5; + } else if (inputString.length === 4) { + positionFactor = 21; + } else if (inputString.length === 5) { + positionFactor = 29; + } else if (inputString.length === 6) { + positionFactor = 35; + } else if (inputString.length === 7) { + positionFactor = 41; + } else if (inputString.length === 8) { + positionFactor = 47; + } + return positionFactor; } export function getTotalPixels( - queryLen: number, - subjLen: number, - varLen: number, - contentWidth: number, - contentScoringWidth: number + queryLen: number, + subjLen: number, + varLen: number, + contentWidth: number, + contentScoringWidth: number ) { - const totalLen = queryLen + subjLen; - const totalPixels = - (varLen * contentWidth - contentScoringWidth) / totalLen; - return totalPixels; + const totalLen = queryLen + subjLen; + const totalPixels = (varLen * contentWidth - contentScoringWidth) / totalLen; + return totalPixels; } -export function getPixelCoords( - contentWidth: number, - contentLabelWidth: number, - marginWidth: number -) { - const startPixels = contentLabelWidth + marginWidth; - const endPixels = contentLabelWidth + contentWidth - marginWidth; - return [startPixels, endPixels]; +export function getPixelCoords(contentWidth: number, contentLabelWidth: number, marginWidth: number) { + const startPixels = contentLabelWidth + marginWidth; + const endPixels = contentLabelWidth + contentWidth - marginWidth; + return [startPixels, endPixels]; } export function getQuerySubjPixelCoords( - queryLen: number, - subjLen: number, - subjHspLen: number, - contentWidth: number, - contentScoringWidth: number, - contentLabelWidth: number, - marginWidth: number + queryLen: number, + subjLen: number, + subjHspLen: number, + contentWidth: number, + contentScoringWidth: number, + contentLabelWidth: number, + marginWidth: number ) { - const totalQueryPixels = getTotalPixels( - queryLen, - subjLen, - queryLen, - contentWidth, - contentScoringWidth - ); - const totalSubjPixels = getTotalPixels( - queryLen, - subjLen, - subjHspLen, - contentWidth, - contentScoringWidth - ); - const startQueryPixels = contentLabelWidth + marginWidth; - const endQueryPixels = contentLabelWidth + totalQueryPixels - marginWidth; - const startSubjPixels = - contentLabelWidth + - totalQueryPixels + - contentScoringWidth + - marginWidth; - const endSubjPixels = - contentLabelWidth + - totalQueryPixels + - contentScoringWidth + - totalSubjPixels - - marginWidth; - return [startQueryPixels, endQueryPixels, startSubjPixels, endSubjPixels]; + const totalQueryPixels = getTotalPixels(queryLen, subjLen, queryLen, contentWidth, contentScoringWidth); + const totalSubjPixels = getTotalPixels(queryLen, subjLen, subjHspLen, contentWidth, contentScoringWidth); + const startQueryPixels = contentLabelWidth + marginWidth; + const endQueryPixels = contentLabelWidth + totalQueryPixels - marginWidth; + const startSubjPixels = contentLabelWidth + totalQueryPixels + contentScoringWidth + marginWidth; + const endSubjPixels = contentLabelWidth + totalQueryPixels + contentScoringWidth + totalSubjPixels - marginWidth; + return [startQueryPixels, endQueryPixels, startSubjPixels, endSubjPixels]; } export function getDomainPixelCoords( - startPixels: number, - endPixels: number, - hitLen: number, - startDomain: number, - endDomain: number, - marginWidth: number + startPixels: number, + endPixels: number, + hitLen: number, + startDomain: number, + endDomain: number, + marginWidth: number ): [number, number] { - const startDomainPixels = - startPixels + - (startDomain * (endPixels - startPixels)) / hitLen + - marginWidth; - const endDomainPixels = - startPixels + - (endDomain * (endPixels - startPixels)) / hitLen - - marginWidth - - startDomainPixels; - return [startDomainPixels, endDomainPixels]; + const startDomainPixels = startPixels + (startDomain * (endPixels - startPixels)) / hitLen + marginWidth; + const endDomainPixels = + startPixels + (endDomain * (endPixels - startPixels)) / hitLen - marginWidth - startDomainPixels; + return [startDomainPixels, endDomainPixels]; } diff --git a/src/custom-events.ts b/src/custom-events.ts index f9b6ec1..0acee2f 100644 --- a/src/custom-events.ts +++ b/src/custom-events.ts @@ -1,267 +1,235 @@ -import {fabric} from "fabric"; -import { - TextType, - RectType, - ColorSchemeEnum, - RenderOptions, -} from "./custom-types"; -import {VisualOutput} from "./visual-output-app"; -import {Hsp, IprMatchFlat} from "./data-model"; -import {FunctionalPredictions} from "./functional-predictions-app"; -import { - drawURLInfoTooltip, - drawDomainTooltips, - drawDomainInfoTooltips, -} from "./drawing-utilities"; +import { fabric } from 'fabric'; +import { TextType, RectType, ColorSchemeEnum, RenderOptions } from './custom-types'; +import { VisualOutput } from './visual-output-app'; +import { Hsp, IprMatchFlat } from './data-model'; +import { FunctionalPredictions } from './functional-predictions-app'; +import { drawURLInfoTooltip, drawDomainTooltips, drawDomainInfoTooltips } from './drawing-utilities'; export function mouseOverText( - fabricObj: fabric.Object, - textObj: TextType, - sequence: string, - URL: string, - renderOptions: RenderOptions, - _this: VisualOutput | FunctionalPredictions + fabricObj: fabric.Object, + textObj: TextType, + sequence: string, + URL: string, + renderOptions: RenderOptions, + _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on("mouseover", (e: fabric.IEvent) => { - if (e.target) { - e.target.set("hoverCursor", "pointer"); - e.target.setOptions(textObj); - e.target.setOptions({underline: true}); - // add tooltip (on the flight) - const urlTooltip = drawURLInfoTooltip( - +fabricObj.left!, - sequence, - URL, - renderOptions, - +fabricObj.top! + 15 - ); - _this.canvas.add(urlTooltip); - _this.canvas.renderAll(); - urlTooltip.visible = false; - } - }); + fabricObj.on('mouseover', (e: fabric.IEvent) => { + if (e.target) { + e.target.set('hoverCursor', 'pointer'); + e.target.setOptions(textObj); + e.target.setOptions({ underline: true }); + // add tooltip (on the flight) + const urlTooltip = drawURLInfoTooltip(+fabricObj.left!, sequence, URL, renderOptions, +fabricObj.top! + 15); + _this.canvas.add(urlTooltip); + _this.canvas.renderAll(); + urlTooltip.visible = false; + } + }); } -export function mouseDownText( - fabricObj: fabric.Object, - href: string, - _this: VisualOutput | FunctionalPredictions -) { - fabricObj.on("mousedown", (e: fabric.IEvent) => { - if (e.target) { - window.open(href, "_blank"); - _this.canvas.renderAll(); - } - }); +export function mouseDownText(fabricObj: fabric.Object, href: string, _this: VisualOutput | FunctionalPredictions) { + fabricObj.on('mousedown', (e: fabric.IEvent) => { + if (e.target) { + window.open(href, '_blank'); + _this.canvas.renderAll(); + } + }); } -export function mouseOutText( - fabricObj: fabric.Object, - textObj: TextType, - _this: VisualOutput | FunctionalPredictions -) { - fabricObj.on("mouseout", (e: fabric.IEvent) => { - if (e.target) { - e.target.setOptions(textObj); - e.target.setOptions({underline: false}); - _this.canvas.renderAll(); - } - }); +export function mouseOutText(fabricObj: fabric.Object, textObj: TextType, _this: VisualOutput | FunctionalPredictions) { + fabricObj.on('mouseout', (e: fabric.IEvent) => { + if (e.target) { + e.target.setOptions(textObj); + e.target.setOptions({ underline: false }); + _this.canvas.renderAll(); + } + }); } function isHsp(object: any): object is Hsp { - return "hsp_hit_from" in object; + return 'hsp_hit_from' in object; } export function mouseOverDomain( - fabricObj: fabric.Object, - startPixels: number, - endPixels: number, - seq_from: number, - seq_to: number, - domain: Hsp | IprMatchFlat, - renderOptions: RenderOptions, - _this: VisualOutput | FunctionalPredictions + fabricObj: fabric.Object, + startPixels: number, + endPixels: number, + seq_from: number, + seq_to: number, + domain: Hsp | IprMatchFlat, + renderOptions: RenderOptions, + _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on("mouseover", (e: fabric.IEvent) => { - if (e.target) { - e.target.set("hoverCursor", "pointer"); - let tooltipGroup: fabric.Group; - if (isHsp(domain)) { - // Query/Subject tooltip - tooltipGroup = drawDomainTooltips( - startPixels, - endPixels, - seq_from, - seq_to, - domain as Hsp, - renderOptions, - fabricObj.top! + 5 - ); - } else { - // Domain tooltip - tooltipGroup = drawDomainInfoTooltips( - startPixels, - endPixels, - seq_from, - seq_to, - domain as IprMatchFlat, - renderOptions, - fabricObj.top! + 5 - ); - } - _this.canvas.add(tooltipGroup); - tooltipGroup.set({visible: true}); - fabricObj.bringToFront(); - tooltipGroup.bringToFront(); - _this.canvas.renderAll(); - tooltipGroup.set({visible: false}); - } - }); + fabricObj.on('mouseover', (e: fabric.IEvent) => { + if (e.target) { + e.target.set('hoverCursor', 'pointer'); + let tooltipGroup: fabric.Group; + if (isHsp(domain)) { + // Query/Subject tooltip + tooltipGroup = drawDomainTooltips( + startPixels, + endPixels, + seq_from, + seq_to, + domain as Hsp, + renderOptions, + fabricObj.top! + 5 + ); + } else { + // Domain tooltip + tooltipGroup = drawDomainInfoTooltips( + startPixels, + endPixels, + seq_from, + seq_to, + domain as IprMatchFlat, + renderOptions, + fabricObj.top! + 5 + ); + } + _this.canvas.add(tooltipGroup); + tooltipGroup.set({ visible: true }); + fabricObj.bringToFront(); + tooltipGroup.bringToFront(); + _this.canvas.renderAll(); + tooltipGroup.set({ visible: false }); + } + }); } -export function mouseOutDomain( - fabricObj: fabric.Object, - _this: VisualOutput | FunctionalPredictions -) { - fabricObj.on("mouseout", (e: fabric.IEvent) => { - if (e.target) { - _this.canvas.renderAll(); - } - }); +export function mouseOutDomain(fabricObj: fabric.Object, _this: VisualOutput | FunctionalPredictions) { + fabricObj.on('mouseout', (e: fabric.IEvent) => { + if (e.target) { + _this.canvas.renderAll(); + } + }); } export function mouseOverCheckbox( - fabricObj: fabric.Object, - textObj: TextType, - _this: VisualOutput | FunctionalPredictions + fabricObj: fabric.Object, + textObj: TextType, + _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on("mouseover", (e: fabric.IEvent) => { - if (e.target) { - e.target.set("hoverCursor", "pointer"); - e.target.setOptions(textObj); - e.target.setOptions({fill: "black"}); - _this.canvas.renderAll(); - } - }); + fabricObj.on('mouseover', (e: fabric.IEvent) => { + if (e.target) { + e.target.set('hoverCursor', 'pointer'); + e.target.setOptions(textObj); + e.target.setOptions({ fill: 'black' }); + _this.canvas.renderAll(); + } + }); } export function mouseDownCheckbox( - fabricObj: fabric.Object, - value: ColorSchemeEnum, - _this: VisualOutput | FunctionalPredictions + fabricObj: fabric.Object, + value: ColorSchemeEnum, + _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on("mousedown", (e: fabric.IEvent) => { - if (e.target) { - if (_this.colorScheme != value) { - _this.colorScheme = value; - _this.render(); - } - } - }); + fabricObj.on('mousedown', (e: fabric.IEvent) => { + if (e.target) { + if (_this.colorScheme != value) { + _this.colorScheme = value; + _this.render(); + } + } + }); } export function mouseOutCheckbox( - fabricObj: fabric.Object, - textObj: TextType, - value: ColorSchemeEnum, - _this: VisualOutput | FunctionalPredictions + fabricObj: fabric.Object, + textObj: TextType, + value: ColorSchemeEnum, + _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on("mouseout", (e: fabric.IEvent) => { - if (e.target) { - e.target.setOptions(textObj); - if (_this.colorScheme != value) { - e.target.setOptions({ - fill: "grey", - }); - } - _this.canvas.renderAll(); - } - }); + fabricObj.on('mouseout', (e: fabric.IEvent) => { + if (e.target) { + e.target.setOptions(textObj); + if (_this.colorScheme != value) { + e.target.setOptions({ + fill: 'grey', + }); + } + _this.canvas.renderAll(); + } + }); } export function mouseOverDomainCheckbox( - fabricObj: fabric.Object, - rectObj: RectType, - currentDomainDatabase: string, - _this: FunctionalPredictions + fabricObj: fabric.Object, + rectObj: RectType, + currentDomainDatabase: string, + _this: FunctionalPredictions ) { - fabricObj.on("mouseover", (e: fabric.IEvent) => { - if (e.target) { - e.target.set("hoverCursor", "pointer"); - e.target.setOptions(rectObj); - let currentDomainDatabaseDisabled = false; - if (!_this.uniqueDomainDatabases.includes(currentDomainDatabase)) { - currentDomainDatabaseDisabled = true; - } - if (currentDomainDatabaseDisabled) { - e.target.setOptions({fill: "white", stroke: "grey"}); - e.target.set("hoverCursor", "default"); - } else if ( - !_this.domainDatabaseList.includes(currentDomainDatabase) - ) { - e.target.setOptions({stroke: "black"}); - e.target.set("hoverCursor", "pointer"); - } else { - e.target.setOptions({opacity: 0.5, stroke: "grey"}); - e.target.set("hoverCursor", "pointer"); - } - _this.canvas.renderAll(); - } - }); + fabricObj.on('mouseover', (e: fabric.IEvent) => { + if (e.target) { + e.target.set('hoverCursor', 'pointer'); + e.target.setOptions(rectObj); + let currentDomainDatabaseDisabled = false; + if (!_this.uniqueDomainDatabases.includes(currentDomainDatabase)) { + currentDomainDatabaseDisabled = true; + } + if (currentDomainDatabaseDisabled) { + e.target.setOptions({ fill: 'white', stroke: 'grey' }); + e.target.set('hoverCursor', 'default'); + } else if (!_this.domainDatabaseList.includes(currentDomainDatabase)) { + e.target.setOptions({ stroke: 'black' }); + e.target.set('hoverCursor', 'pointer'); + } else { + e.target.setOptions({ opacity: 0.5, stroke: 'grey' }); + e.target.set('hoverCursor', 'pointer'); + } + _this.canvas.renderAll(); + } + }); } export function mouseDownDomainCheckbox( - fabricObj: fabric.Object, - currentDomainDatabase: string, - _this: FunctionalPredictions + fabricObj: fabric.Object, + currentDomainDatabase: string, + _this: FunctionalPredictions ) { - fabricObj.on("mousedown", (e: fabric.IEvent) => { - if (e.target) { - if ( - !_this.domainDatabaseList.includes(currentDomainDatabase) && - _this.uniqueDomainDatabases.includes(currentDomainDatabase) - ) { - _this.domainDatabaseList.push(currentDomainDatabase); - _this.currentDomainDatabase = currentDomainDatabase; - _this.render(); - } else if ( - _this.uniqueDomainDatabases.includes(currentDomainDatabase) - ) { - const indx = _this.domainDatabaseList.indexOf( - currentDomainDatabase - ); - if (indx > -1) { - _this.domainDatabaseList.splice(indx, 1); - } - _this.currentDomainDatabase = undefined; - _this.render(); - } + fabricObj.on('mousedown', (e: fabric.IEvent) => { + if (e.target) { + if ( + !_this.domainDatabaseList.includes(currentDomainDatabase) && + _this.uniqueDomainDatabases.includes(currentDomainDatabase) + ) { + _this.domainDatabaseList.push(currentDomainDatabase); + _this.currentDomainDatabase = currentDomainDatabase; + _this.render(); + } else if (_this.uniqueDomainDatabases.includes(currentDomainDatabase)) { + const indx = _this.domainDatabaseList.indexOf(currentDomainDatabase); + if (indx > -1) { + _this.domainDatabaseList.splice(indx, 1); } - }); + _this.currentDomainDatabase = undefined; + _this.render(); + } + } + }); } export function mouseOutDomainCheckbox( - fabricObj: fabric.Object, - rectObj: RectType, - currentDomainDatabase: string, - _this: FunctionalPredictions + fabricObj: fabric.Object, + rectObj: RectType, + currentDomainDatabase: string, + _this: FunctionalPredictions ) { - fabricObj.on("mouseout", (e: fabric.IEvent) => { - if (e.target) { - let currentDomainDatabaseDisabled = false; - if (!_this.uniqueDomainDatabases.includes(currentDomainDatabase)) { - currentDomainDatabaseDisabled = true; - } - if (!_this.domainDatabaseList.includes(currentDomainDatabase)) { - e.target.setOptions({stroke: "grey", fill: "white"}); - } else if (currentDomainDatabaseDisabled) { - e.target.setOptions({stroke: "grey", fill: "white"}); - } else { - e.target.setOptions(rectObj); - e.target.setOptions({opacity: 1.0, stroke: "black"}); - } - _this.canvas.renderAll(); - } - }); + fabricObj.on('mouseout', (e: fabric.IEvent) => { + if (e.target) { + let currentDomainDatabaseDisabled = false; + if (!_this.uniqueDomainDatabases.includes(currentDomainDatabase)) { + currentDomainDatabaseDisabled = true; + } + if (!_this.domainDatabaseList.includes(currentDomainDatabase)) { + e.target.setOptions({ stroke: 'grey', fill: 'white' }); + } else if (currentDomainDatabaseDisabled) { + e.target.setOptions({ stroke: 'grey', fill: 'white' }); + } else { + e.target.setOptions(rectObj); + e.target.setOptions({ opacity: 1.0, stroke: 'black' }); + } + _this.canvas.renderAll(); + } + }); } diff --git a/src/custom-types.ts b/src/custom-types.ts index 4137ed6..e2493e7 100644 --- a/src/custom-types.ts +++ b/src/custom-types.ts @@ -1,142 +1,142 @@ export enum ColorSchemeEnum { - fixed = "fixed", // e-value (fixed scale) - dynamic = "dynamic", // e-value (dynamic scale) - ncbiblast = "ncbiblast", // bit score (fixed scale) - blasterjs = "blasterjs", // e-value (fixed scale) + fixed = 'fixed', // e-value (fixed scale) + dynamic = 'dynamic', // e-value (dynamic scale) + ncbiblast = 'ncbiblast', // bit score (fixed scale) + blasterjs = 'blasterjs', // e-value (fixed scale) } /* Global Options for Rendering the Fabric.js canvas * Width and Height in Pixels (px) */ export interface RenderOptions { - jobId?: string; - canvasWidth?: number; - canvasHeight?: number; - contentWidth?: number; // Vizualisation - contentScoringWidth?: number; // Scoring information - contentLabelWidth?: number; // Sequence information - contentLabelLeftWidth?: number; // Sequence/Domain information - contentLabelRightWidth?: number; // Sequence/Domain information - scaleWidth?: number; // Color Scale - scaleLabelWidth?: number; // Color score information - marginWidth?: number; // Space around different objects - colorScheme?: ColorSchemeEnum; - numberHits?: number; // Number of Hits to be displayed - numberHsps?: number; // Number of HSPs to be displayed - logSkippedHsps?: boolean; // Display notice about skipped HSPs - fontWeigth?: string; - fontSize?: number; - fontFamily?: string; - canvasWrapperStroke?: boolean; - strokeWidth?: number; - strokeDashArray?: [number, number]; - currentDomainDatabase?: string | undefined; - currentColor?: string; - currentDisabled?: boolean; - staticCanvas?: boolean; // No dynamic components (for CLI) + jobId?: string; + canvasWidth?: number; + canvasHeight?: number; + contentWidth?: number; // Vizualisation + contentScoringWidth?: number; // Scoring information + contentLabelWidth?: number; // Sequence information + contentLabelLeftWidth?: number; // Sequence/Domain information + contentLabelRightWidth?: number; // Sequence/Domain information + scaleWidth?: number; // Color Scale + scaleLabelWidth?: number; // Color score information + marginWidth?: number; // Space around different objects + colorScheme?: ColorSchemeEnum; + numberHits?: number; // Number of Hits to be displayed + numberHsps?: number; // Number of HSPs to be displayed + logSkippedHsps?: boolean; // Display notice about skipped HSPs + fontWeigth?: string; + fontSize?: number; + fontFamily?: string; + canvasWrapperStroke?: boolean; + strokeWidth?: number; + strokeDashArray?: [number, number]; + currentDomainDatabase?: string | undefined; + currentColor?: string; + currentDisabled?: boolean; + staticCanvas?: boolean; // No dynamic components (for CLI) } // jobId validation export interface JobIdValitable { - value: string; - required?: boolean; - minLength?: number; - maxLength?: number; - pattern?: RegExp; + value: string; + required?: boolean; + minLength?: number; + maxLength?: number; + pattern?: RegExp; } export const jobIdDefaults: JobIdValitable = { - value: "", - required: true, - minLength: 35, - maxLength: 60, - pattern: /([a-z_])*-([A-Z0-9])*-\d*-\d*-\d*-(np2|p1m|p2m)$/, + value: '', + required: true, + minLength: 35, + maxLength: 60, + pattern: /([a-z_])*-([A-Z0-9])*-\d*-\d*-\d*-(np2|p1m|p2m)$/, }; export interface TextType { - selectable: boolean; - evented: boolean; - objectCaching: boolean; - fontWeight?: string; - fontSize?: number; - fontFamily?: string; - top?: number; - left?: number; - right?: number; - center?: number; - angle?: number; - stroke?: string; - fill?: string; - - [key: string]: any; + selectable: boolean; + evented: boolean; + objectCaching: boolean; + fontWeight?: string; + fontSize?: number; + fontFamily?: string; + top?: number; + left?: number; + right?: number; + center?: number; + angle?: number; + stroke?: string; + fill?: string; + + [key: string]: any; } interface LineType { - selectable: boolean; - evented: boolean; - objectCaching: boolean; - top?: number; - left?: number; - right?: number; - center?: number; - angle?: number; - - [key: string]: any; + selectable: boolean; + evented: boolean; + objectCaching: boolean; + top?: number; + left?: number; + right?: number; + center?: number; + angle?: number; + + [key: string]: any; } export interface RectType { - selectable: boolean; - evented: boolean; - objectCaching: boolean; - top?: number; - left?: number; - width?: number; - height?: number; - fill?: string; - - [key: string]: any; + selectable: boolean; + evented: boolean; + objectCaching: boolean; + top?: number; + left?: number; + width?: number; + height?: number; + fill?: string; + + [key: string]: any; } interface ObjectType { - selectable: boolean; - evented: boolean; - objectCaching: boolean; + selectable: boolean; + evented: boolean; + objectCaching: boolean; - [key: string]: any; + [key: string]: any; } export interface ColorType { - keys: number[]; + keys: number[]; - [key: number]: [number, number, number]; + [key: number]: [number, number, number]; } export const objectDefaults: ObjectType = { - selectable: false, - evented: false, - objectCaching: false, + selectable: false, + evented: false, + objectCaching: false, }; -export const textDefaults: TextType = {...objectDefaults}; -export const rectDefaults: RectType = {...objectDefaults}; -export const lineDefaults: LineType = {...objectDefaults}; +export const textDefaults: TextType = { ...objectDefaults }; +export const rectDefaults: RectType = { ...objectDefaults }; +export const lineDefaults: LineType = { ...objectDefaults }; export interface CoordsValues { - queryLen?: number; - subjLen?: number; - subjHspLen?: number; - start?: number; - end?: number; - queryStart?: number; - queryEnd?: number; - subjStart?: number; - subjEnd?: number; - startPixels?: number; - endPixels?: number; - startQueryPixels?: number; - endQueryPixels?: number; - startEvalPixels?: number; - endEvalPixels?: number; - startSubjPixels?: number; - endSubjPixels?: number; + queryLen?: number; + subjLen?: number; + subjHspLen?: number; + start?: number; + end?: number; + queryStart?: number; + queryEnd?: number; + subjStart?: number; + subjEnd?: number; + startPixels?: number; + endPixels?: number; + startQueryPixels?: number; + endQueryPixels?: number; + startEvalPixels?: number; + endEvalPixels?: number; + startSubjPixels?: number; + endSubjPixels?: number; } diff --git a/src/data-model.ts b/src/data-model.ts index d9b147a..76eb62b 100644 --- a/src/data-model.ts +++ b/src/data-model.ts @@ -1,194 +1,194 @@ export interface SSSResultModel { - alignments?: number; - command: string; - db_count: number; - db_len: number; - db_num: number; - dbrange?: string; - dbs: DB[]; - end: string; - expect_lower?: number; - expect_upper?: number; - filter?: string; - gap_extend?: number; - gap_open?: number; - histogram?: boolean; - hits: Hit[]; - ktup?: number; - matrix?: string; - program: string; - query_acc?: string; - query_db?: string; - query_def: string; - query_desc?: string; - query_id?: string; - query_len: number; - query_seq?: string; - query_stype?: string; - query_uni_gn?: string; - query_uni_os?: string; - query_uni_ox?: string; - query_uni_pe?: string; - query_uni_sv?: string; - query_url?: string; - scores?: number; - search: string; - start: string; - statistics?: string; - strand?: string; - version: string; + alignments?: number; + command: string; + db_count: number; + db_len: number; + db_num: number; + dbrange?: string; + dbs: DB[]; + end: string; + expect_lower?: number; + expect_upper?: number; + filter?: string; + gap_extend?: number; + gap_open?: number; + histogram?: boolean; + hits: Hit[]; + ktup?: number; + matrix?: string; + program: string; + query_acc?: string; + query_db?: string; + query_def: string; + query_desc?: string; + query_id?: string; + query_len: number; + query_seq?: string; + query_stype?: string; + query_uni_gn?: string; + query_uni_os?: string; + query_uni_ox?: string; + query_uni_pe?: string; + query_uni_sv?: string; + query_url?: string; + scores?: number; + search: string; + start: string; + statistics?: string; + strand?: string; + version: string; } interface DB { - name: string; - stype: string; - created?: string; + name: string; + stype: string; + created?: string; } export interface Hit { - hit_acc: string; - hit_db: string; - hit_def: string; - hit_desc: string; - hit_hsps: Hsp[]; - hit_id: string; - hit_len: number; - hit_num: number; - hit_seq?: string; - hit_uni_de?: string; - hit_uni_gn?: string; - hit_uni_os?: string; - hit_uni_ox?: string; - hit_uni_pe?: string; - hit_uni_sv?: string; - hit_url: string; + hit_acc: string; + hit_db: string; + hit_def: string; + hit_desc: string; + hit_hsps: Hsp[]; + hit_id: string; + hit_len: number; + hit_num: number; + hit_seq?: string; + hit_uni_de?: string; + hit_uni_gn?: string; + hit_uni_os?: string; + hit_uni_ox?: string; + hit_uni_pe?: string; + hit_uni_sv?: string; + hit_url: string; } export interface Hsp { - hsp_align_len?: number; - hsp_bit_score?: number; - hsp_expect?: number; - hsp_gaps?: number; - hsp_hit_frame?: string; - hsp_hit_from: number; - hsp_hit_to: number; - hsp_hseq: string; - hsp_identity?: number; - hsp_init1?: number; - hsp_initn?: number; - hsp_mseq: string; - hsp_num: number; - hsp_opt?: number; - hsp_positive?: number; - hsp_qseq: string; - hsp_query_frame?: string; - hsp_query_from: number; - hsp_query_to: number; - hsp_score: number; - hsp_strand?: string; - hsp_sw_score?: number; - hsp_zscore?: number; + hsp_align_len?: number; + hsp_bit_score?: number; + hsp_expect?: number; + hsp_gaps?: number; + hsp_hit_frame?: string; + hsp_hit_from: number; + hsp_hit_to: number; + hsp_hseq: string; + hsp_identity?: number; + hsp_init1?: number; + hsp_initn?: number; + hsp_mseq: string; + hsp_num: number; + hsp_opt?: number; + hsp_positive?: number; + hsp_qseq: string; + hsp_query_frame?: string; + hsp_query_from: number; + hsp_query_to: number; + hsp_score: number; + hsp_strand?: string; + hsp_sw_score?: number; + hsp_zscore?: number; } export interface IPRMCResultModel { - _declaration: Declaration; - _doctype: string[]; - interpromatch: IPRMC[]; + _declaration: Declaration; + _doctype: string[]; + interpromatch: IPRMC[]; } interface IPRMC { - release: Release[]; - protein: Protein[]; + release: Release[]; + protein: Protein[]; } interface Protein { - _attributes: ProteinAttributes; - match: Match[]; + _attributes: ProteinAttributes; + match: Match[]; } interface ProteinAttributes { - id: string; - name: string; - length: string; - crc64: string; + id: string; + name: string; + length: string; + crc64: string; } interface Match { - _attributes: MatchAttributes; - ipr?: Ipr[]; - lcn: Lcn[]; + _attributes: MatchAttributes; + ipr?: Ipr[]; + lcn: Lcn[]; } interface MatchAttributes { - id: string; - name: string; - model: string; + id: string; + name: string; + model: string; - [key: string]: string; + [key: string]: string; } interface Ipr { - _attributes: IprAttributes; + _attributes: IprAttributes; } interface IprAttributes { - id: string; - name: string; + id: string; + name: string; - [key: string]: string; + [key: string]: string; } interface Lcn { - _attributes: LcnAttributes; + _attributes: LcnAttributes; } interface LcnAttributes { - start: string; - end: string; - fragments?: string; - score: string; + start: string; + end: string; + fragments?: string; + score: string; } interface Declaration { - _attributes: DeclarationAttributes; + _attributes: DeclarationAttributes; } interface DeclarationAttributes { - version: string; - encoding: string; + version: string; + encoding: string; } interface Release { - dbinfo: Dbinfo[]; + dbinfo: Dbinfo[]; } interface Dbinfo { - _attributes: DbinfoAttributes; + _attributes: DbinfoAttributes; } interface DbinfoAttributes { - dbname: string; - version: string; - entry_count: string; - file_date: string; + dbname: string; + version: string; + entry_count: string; + file_date: string; } export interface IPRMCResultModelFlat { - [key: string]: IPRMCFlat; + [key: string]: IPRMCFlat; } interface IPRMCFlat { - id: string; - name: string; - length: number; - matches: string[]; - match: IprMatchesFlat; + id: string; + name: string; + length: number; + matches: string[]; + match: IprMatchesFlat; } export interface IprMatchesFlat { - [key: string]: IprMatchFlat[]; + [key: string]: IprMatchFlat[]; } export interface IprMatchFlat { - [key: string]: string | number | undefined; + [key: string]: string | number | undefined; } diff --git a/src/drawing-utilities.ts b/src/drawing-utilities.ts index 207b28c..eab3f55 100644 --- a/src/drawing-utilities.ts +++ b/src/drawing-utilities.ts @@ -1,1255 +1,1025 @@ -import {fabric} from "fabric"; -import {numberToString} from "./other-utilities"; -import {SSSResultModel, Hit, Hsp, IprMatchFlat} from "./data-model"; -import {getTotalPixels, getTextLegendPaddingFactor} from "./coords-utilities"; -import {colorDefaultGradient, colorNcbiBlastGradient} from "./color-schemes"; +import { fabric } from 'fabric'; +import { numberToString } from './other-utilities'; +import { SSSResultModel, Hit, Hsp, IprMatchFlat } from './data-model'; +import { getTotalPixels, getTextLegendPaddingFactor } from './coords-utilities'; +import { colorDefaultGradient, colorNcbiBlastGradient } from './color-schemes'; import { - objectDefaults, - textDefaults, - lineDefaults, - rectDefaults, - RenderOptions, - CoordsValues, - ColorSchemeEnum, - TextType, - RectType, -} from "./custom-types"; -import {colorByDatabaseName} from "./color-utilities"; + objectDefaults, + textDefaults, + lineDefaults, + rectDefaults, + RenderOptions, + CoordsValues, + ColorSchemeEnum, + TextType, + RectType, +} from './custom-types'; +import { colorByDatabaseName } from './color-utilities'; export function drawHeaderTextGroup( - dataObj: SSSResultModel, - renderOptions: RenderOptions, - topPadding: number + dataObj: SSSResultModel, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const origTopPadding = topPadding; - const textObj = {...textDefaults}; - textObj.fontWeight = "bold"; - textObj.fontSize = renderOptions.fontSize! + 1; - textObj.top = topPadding; - textObj.left = 5; - - // program & version - const program = dataObj.program; - const version = dataObj.version; - const programText = new fabric.Text( - `${program} (version: ${version})`, - textObj - ); - // Database(s) - let db_names: string[] = []; - for (const db of dataObj.dbs) { - db_names.push(db.name); - } - const dbs: string = db_names.join(", "); - textObj.fontWeight = "normal"; - textObj.fontSize = renderOptions.fontSize!; - topPadding += 15; - textObj.top = topPadding; - const databaseText = new fabric.Text(`Database(s): ${dbs}`, textObj); - // Sequence - topPadding += 15; - textObj.top = topPadding; - const sequenceText = new fabric.Text("Sequence: ", textObj); - // Length - const length = dataObj.query_len; - topPadding += 15; - textObj.top = topPadding; - const lengthText = new fabric.Text(`Length: ${length}`, textObj); - // Start - const start = dataObj.start; - textObj.top = origTopPadding; - textObj.left = renderOptions.canvasWidth! - 135; - const startText = new fabric.Text(`${start}`, textObj); - // End - const end = dataObj.end; - textObj.top = origTopPadding + 15; - const endText = new fabric.Text(`${end}`, textObj); - const textGroup = new fabric.Group( - [ - programText, - databaseText, - sequenceText, - lengthText, - startText, - endText, - ], - objectDefaults - ); - return textGroup; + const origTopPadding = topPadding; + const textObj = { ...textDefaults }; + textObj.fontWeight = 'bold'; + textObj.fontSize = renderOptions.fontSize! + 1; + textObj.top = topPadding; + textObj.left = 5; + + // program & version + const program = dataObj.program; + const version = dataObj.version; + const programText = new fabric.Text(`${program} (version: ${version})`, textObj); + // Database(s) + let db_names: string[] = []; + for (const db of dataObj.dbs) { + db_names.push(db.name); + } + const dbs: string = db_names.join(', '); + textObj.fontWeight = 'normal'; + textObj.fontSize = renderOptions.fontSize!; + topPadding += 15; + textObj.top = topPadding; + const databaseText = new fabric.Text(`Database(s): ${dbs}`, textObj); + // Sequence + topPadding += 15; + textObj.top = topPadding; + const sequenceText = new fabric.Text('Sequence: ', textObj); + // Length + const length = dataObj.query_len; + topPadding += 15; + textObj.top = topPadding; + const lengthText = new fabric.Text(`Length: ${length}`, textObj); + // Start + const start = dataObj.start; + textObj.top = origTopPadding; + textObj.left = renderOptions.canvasWidth! - 135; + const startText = new fabric.Text(`${start}`, textObj); + // End + const end = dataObj.end; + textObj.top = origTopPadding + 15; + const endText = new fabric.Text(`${end}`, textObj); + const textGroup = new fabric.Group( + [programText, databaseText, sequenceText, lengthText, startText, endText], + objectDefaults + ); + return textGroup; } export function drawHeaderLinkText( - dataObj: SSSResultModel, - renderOptions: RenderOptions, - topPadding: number + dataObj: SSSResultModel, + renderOptions: RenderOptions, + topPadding: number ): [fabric.Text, TextType] { - // Sequence - const sequence = dataObj.query_def; - const textSeqObj = {...textDefaults}; - textSeqObj.fontFamily = "Menlo"; - textSeqObj.fontSize = renderOptions.fontSize! - 2; - textSeqObj.evented = true; - textSeqObj.top = topPadding - 15; - textSeqObj.left = 57.5; - const sequenceDefText = new fabric.Text(`${sequence}`, textSeqObj); - return [sequenceDefText, textSeqObj]; + // Sequence + const sequence = dataObj.query_def; + const textSeqObj = { ...textDefaults }; + textSeqObj.fontFamily = 'Menlo'; + textSeqObj.fontSize = renderOptions.fontSize! - 2; + textSeqObj.evented = true; + textSeqObj.top = topPadding - 15; + textSeqObj.left = 57.5; + const sequenceDefText = new fabric.Text(`${sequence}`, textSeqObj); + return [sequenceDefText, textSeqObj]; } export function drawContentHeaderTextGroup( - coordValues: CoordsValues, - renderOptions: RenderOptions, - topPadding: number + coordValues: CoordsValues, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const textObj = {...textDefaults}; - textObj.fontWeight = "bold"; - textObj.fontSize = renderOptions.fontSize! + 1; - textObj.top = topPadding + 2; - textObj.textAlign = "center"; - const totalQueryPixels = getTotalPixels( - coordValues.queryLen!, - coordValues.subjLen!, - coordValues.queryLen!, - renderOptions.contentWidth!, - renderOptions.contentScoringWidth! - ); - const totalSubjPixels = getTotalPixels( - coordValues.queryLen!, - coordValues.subjLen!, - coordValues.subjLen!, - renderOptions.contentWidth!, - renderOptions.contentScoringWidth! - ); - // Query Match - textObj.left = coordValues.startQueryPixels; - const queryText = new fabric.Text("Sequence Match", textObj); - queryText.width = totalQueryPixels; - textObj.left = coordValues.startEvalPixels; - let evalueText; - // E-value/ Bits - if (renderOptions.colorScheme === ColorSchemeEnum.ncbiblast) { - evalueText = new fabric.Text("Bit score", textObj); - } else { - evalueText = new fabric.Text("E-value", textObj); - } - evalueText.width = renderOptions.contentScoringWidth; - // Subject Match - textObj.left = coordValues.startSubjPixels; - const subjText = new fabric.Text("Subject Match", textObj); - subjText.width = totalSubjPixels; - const textGroup = new fabric.Group( - [queryText, evalueText, subjText], - objectDefaults - ); - return textGroup; + const textObj = { ...textDefaults }; + textObj.fontWeight = 'bold'; + textObj.fontSize = renderOptions.fontSize! + 1; + textObj.top = topPadding + 2; + textObj.textAlign = 'center'; + const totalQueryPixels = getTotalPixels( + coordValues.queryLen!, + coordValues.subjLen!, + coordValues.queryLen!, + renderOptions.contentWidth!, + renderOptions.contentScoringWidth! + ); + const totalSubjPixels = getTotalPixels( + coordValues.queryLen!, + coordValues.subjLen!, + coordValues.subjLen!, + renderOptions.contentWidth!, + renderOptions.contentScoringWidth! + ); + // Query Match + textObj.left = coordValues.startQueryPixels; + const queryText = new fabric.Text('Sequence Match', textObj); + queryText.width = totalQueryPixels; + textObj.left = coordValues.startEvalPixels; + let evalueText; + // E-value/ Bits + if (renderOptions.colorScheme === ColorSchemeEnum.ncbiblast) { + evalueText = new fabric.Text('Bit score', textObj); + } else { + evalueText = new fabric.Text('E-value', textObj); + } + evalueText.width = renderOptions.contentScoringWidth; + // Subject Match + textObj.left = coordValues.startSubjPixels; + const subjText = new fabric.Text('Subject Match', textObj); + subjText.width = totalSubjPixels; + const textGroup = new fabric.Group([queryText, evalueText, subjText], objectDefaults); + return textGroup; } export function drawLineTracksQuerySubject( - coordValues: CoordsValues, - renderOptions: RenderOptions, - topPadding: number + coordValues: CoordsValues, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const lineObj = {...lineDefaults}; - lineObj.top = topPadding; - lineObj.stroke = "black"; - lineObj.strokeWidth = renderOptions.strokeWidth; - // Query - const coordsQuery: [number, number, number, number] = [ - coordValues.startQueryPixels!, - topPadding, - coordValues.endQueryPixels!, - topPadding, - ]; - lineObj.left = coordValues.startQueryPixels; - const queryLine = new fabric.Line(coordsQuery, lineObj); - - const coordsQueryStartCap: [number, number, number, number] = [ - coordValues.startQueryPixels!, - topPadding - 3, - coordValues.startQueryPixels!, - topPadding + 3, - ]; - lineObj.top = topPadding - 2; - const queryStartCap = new fabric.Line(coordsQueryStartCap, lineObj); - - const coordsQueryEndCap: [number, number, number, number] = [ - coordValues.endQueryPixels!, - topPadding - 3, - coordValues.endQueryPixels!, - topPadding + 3, - ]; - lineObj.left = coordValues.endQueryPixels; - const queryEndCap = new fabric.Line(coordsQueryEndCap, lineObj); - - // Subject - const coordsSubj: [number, number, number, number] = [ - coordValues.startSubjPixels!, - topPadding, - coordValues.endSubjPixels!, - topPadding, - ]; - lineObj.top = topPadding; - lineObj.left = coordValues.startSubjPixels; - const subjLine = new fabric.Line(coordsSubj, lineObj); - - const coordsSubjStartCap: [number, number, number, number] = [ - coordValues.startSubjPixels!, - topPadding - 3, - coordValues.startSubjPixels!, - topPadding + 3, - ]; - lineObj.top = topPadding - 2; - const subjStartCap = new fabric.Line(coordsSubjStartCap, lineObj); - - const coordsSubjEndCap: [number, number, number, number] = [ - coordValues.endSubjPixels!, - topPadding - 3, - coordValues.endSubjPixels!, - topPadding + 3, - ]; - lineObj.left = coordValues.endSubjPixels; - const subjEndCap = new fabric.Line(coordsSubjEndCap, lineObj); - - // Group - const lineGroup = new fabric.Group( - [ - queryLine, - subjLine, - queryStartCap, - queryEndCap, - subjStartCap, - subjEndCap, - ], - objectDefaults - ); - return lineGroup; + const lineObj = { ...lineDefaults }; + lineObj.top = topPadding; + lineObj.stroke = 'black'; + lineObj.strokeWidth = renderOptions.strokeWidth; + // Query + const coordsQuery: [number, number, number, number] = [ + coordValues.startQueryPixels!, + topPadding, + coordValues.endQueryPixels!, + topPadding, + ]; + lineObj.left = coordValues.startQueryPixels; + const queryLine = new fabric.Line(coordsQuery, lineObj); + + const coordsQueryStartCap: [number, number, number, number] = [ + coordValues.startQueryPixels!, + topPadding - 3, + coordValues.startQueryPixels!, + topPadding + 3, + ]; + lineObj.top = topPadding - 2; + const queryStartCap = new fabric.Line(coordsQueryStartCap, lineObj); + + const coordsQueryEndCap: [number, number, number, number] = [ + coordValues.endQueryPixels!, + topPadding - 3, + coordValues.endQueryPixels!, + topPadding + 3, + ]; + lineObj.left = coordValues.endQueryPixels; + const queryEndCap = new fabric.Line(coordsQueryEndCap, lineObj); + + // Subject + const coordsSubj: [number, number, number, number] = [ + coordValues.startSubjPixels!, + topPadding, + coordValues.endSubjPixels!, + topPadding, + ]; + lineObj.top = topPadding; + lineObj.left = coordValues.startSubjPixels; + const subjLine = new fabric.Line(coordsSubj, lineObj); + + const coordsSubjStartCap: [number, number, number, number] = [ + coordValues.startSubjPixels!, + topPadding - 3, + coordValues.startSubjPixels!, + topPadding + 3, + ]; + lineObj.top = topPadding - 2; + const subjStartCap = new fabric.Line(coordsSubjStartCap, lineObj); + + const coordsSubjEndCap: [number, number, number, number] = [ + coordValues.endSubjPixels!, + topPadding - 3, + coordValues.endSubjPixels!, + topPadding + 3, + ]; + lineObj.left = coordValues.endSubjPixels; + const subjEndCap = new fabric.Line(coordsSubjEndCap, lineObj); + + // Group + const lineGroup = new fabric.Group( + [queryLine, subjLine, queryStartCap, queryEndCap, subjStartCap, subjEndCap], + objectDefaults + ); + return lineGroup; } export function drawLineTracks( - coordValues: CoordsValues, - renderOptions: RenderOptions, - topPadding: number + coordValues: CoordsValues, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const lineObj = {...lineDefaults}; - lineObj.top = topPadding; - lineObj.stroke = "black"; - lineObj.strokeWidth = renderOptions.strokeWidth; - // Query/Subject - const coordsQuery: [number, number, number, number] = [ - coordValues.startPixels!, - topPadding, - coordValues.endPixels!, - topPadding, - ]; - lineObj.left = coordValues.startPixels; - const Line = new fabric.Line(coordsQuery, lineObj); - - const coordsStartCap: [number, number, number, number] = [ - coordValues.startPixels!, - topPadding - 3, - coordValues.startPixels!, - topPadding + 3, - ]; - lineObj.top = topPadding - 2; - const startCap = new fabric.Line(coordsStartCap, lineObj); - - const coordsEndCap: [number, number, number, number] = [ - coordValues.endPixels!, - topPadding - 3, - coordValues.endPixels!, - topPadding + 3, - ]; - lineObj.left = coordValues.endPixels; - const endCap = new fabric.Line(coordsEndCap, lineObj); - - // Group - const lineGroup = new fabric.Group( - [Line, startCap, endCap], - objectDefaults - ); - return lineGroup; + const lineObj = { ...lineDefaults }; + lineObj.top = topPadding; + lineObj.stroke = 'black'; + lineObj.strokeWidth = renderOptions.strokeWidth; + // Query/Subject + const coordsQuery: [number, number, number, number] = [ + coordValues.startPixels!, + topPadding, + coordValues.endPixels!, + topPadding, + ]; + lineObj.left = coordValues.startPixels; + const Line = new fabric.Line(coordsQuery, lineObj); + + const coordsStartCap: [number, number, number, number] = [ + coordValues.startPixels!, + topPadding - 3, + coordValues.startPixels!, + topPadding + 3, + ]; + lineObj.top = topPadding - 2; + const startCap = new fabric.Line(coordsStartCap, lineObj); + + const coordsEndCap: [number, number, number, number] = [ + coordValues.endPixels!, + topPadding - 3, + coordValues.endPixels!, + topPadding + 3, + ]; + lineObj.left = coordValues.endPixels; + const endCap = new fabric.Line(coordsEndCap, lineObj); + + // Group + const lineGroup = new fabric.Group([Line, startCap, endCap], objectDefaults); + return lineGroup; } export function drawDomainLineTracks( - coordValues: CoordsValues, - renderOptions: RenderOptions, - topPadding: number + coordValues: CoordsValues, + renderOptions: RenderOptions, + topPadding: number ): fabric.Line { - const lineObj = {...lineDefaults}; - lineObj.top = topPadding; - lineObj.stroke = "black"; - lineObj.strokeWidth = renderOptions.strokeWidth; - lineObj.strokeDashArray = renderOptions.strokeDashArray; - // Query/Subject - const coordsQuery: [number, number, number, number] = [ - coordValues.startPixels!, - topPadding, - coordValues.endPixels!, - topPadding, - ]; - lineObj.left = coordValues.startPixels; - return new fabric.Line(coordsQuery, lineObj); + const lineObj = { ...lineDefaults }; + lineObj.top = topPadding; + lineObj.stroke = 'black'; + lineObj.strokeWidth = renderOptions.strokeWidth; + lineObj.strokeDashArray = renderOptions.strokeDashArray; + // Query/Subject + const coordsQuery: [number, number, number, number] = [ + coordValues.startPixels!, + topPadding, + coordValues.endPixels!, + topPadding, + ]; + lineObj.left = coordValues.startPixels; + return new fabric.Line(coordsQuery, lineObj); } export function drawContentFooterTextGroup( - coordValues: CoordsValues, - renderOptions: RenderOptions, - topPadding: number + coordValues: CoordsValues, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const textObj = {...textDefaults}; - textObj.fontSize = renderOptions.fontSize; - textObj.top = topPadding; - // Start Query/Subject - textObj.left = coordValues.startPixels! - 2.5; - const startText = new fabric.Text(`${coordValues.start}`, textObj); - // End Query/Subject - let positionFactor: number = getTextLegendPaddingFactor( - `${coordValues.end}` - ); - textObj.left = coordValues.endPixels! - positionFactor; - const endText = new fabric.Text(`${coordValues.end}`, textObj); - const textGroup = new fabric.Group([startText, endText], objectDefaults); - return textGroup; + const textObj = { ...textDefaults }; + textObj.fontSize = renderOptions.fontSize; + textObj.top = topPadding; + // Start Query/Subject + textObj.left = coordValues.startPixels! - 2.5; + const startText = new fabric.Text(`${coordValues.start}`, textObj); + // End Query/Subject + let positionFactor: number = getTextLegendPaddingFactor(`${coordValues.end}`); + textObj.left = coordValues.endPixels! - positionFactor; + const endText = new fabric.Text(`${coordValues.end}`, textObj); + const textGroup = new fabric.Group([startText, endText], objectDefaults); + return textGroup; } export function drawContentQuerySubjFooterTextGroup( - coordValues: CoordsValues, - renderOptions: RenderOptions, - topPadding: number + coordValues: CoordsValues, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const textObj = {...textDefaults}; - textObj.fontSize = renderOptions.fontSize; - textObj.top = topPadding; - // Start Query - textObj.left = coordValues.startQueryPixels! - 2.5; - const startQueryText = new fabric.Text("1", textObj); - // End Query - let positionFactor: number = getTextLegendPaddingFactor( - `${coordValues.queryLen}` - ); - textObj.left = coordValues.endQueryPixels! - positionFactor; - const endQueryText = new fabric.Text(`${coordValues.queryLen}`, textObj); - // Start Subject - textObj.left = coordValues.startSubjPixels! - 2.5; - const startSubjText = new fabric.Text("1", textObj); - // End Subject - positionFactor = getTextLegendPaddingFactor(`${coordValues.subjLen}`); - textObj.left = coordValues.endSubjPixels! - positionFactor; - const endSubjText = new fabric.Text(`${coordValues.subjLen}`, textObj); - const textGroup = new fabric.Group( - [startQueryText, endQueryText, startSubjText, endSubjText], - objectDefaults - ); - return textGroup; + const textObj = { ...textDefaults }; + textObj.fontSize = renderOptions.fontSize; + textObj.top = topPadding; + // Start Query + textObj.left = coordValues.startQueryPixels! - 2.5; + const startQueryText = new fabric.Text('1', textObj); + // End Query + let positionFactor: number = getTextLegendPaddingFactor(`${coordValues.queryLen}`); + textObj.left = coordValues.endQueryPixels! - positionFactor; + const endQueryText = new fabric.Text(`${coordValues.queryLen}`, textObj); + // Start Subject + textObj.left = coordValues.startSubjPixels! - 2.5; + const startSubjText = new fabric.Text('1', textObj); + // End Subject + positionFactor = getTextLegendPaddingFactor(`${coordValues.subjLen}`); + textObj.left = coordValues.endSubjPixels! - positionFactor; + const endSubjText = new fabric.Text(`${coordValues.subjLen}`, textObj); + const textGroup = new fabric.Group([startQueryText, endQueryText, startSubjText, endSubjText], objectDefaults); + return textGroup; } -export function drawNoHitsFoundText( - renderOptions: RenderOptions, - topPadding: number -): fabric.Text { - const textObj = {...textDefaults}; - textObj.fontWeight = "bold"; - textObj.fontSize = renderOptions.fontSize! + 1; - textObj.top = topPadding; - textObj.left = renderOptions.contentWidth! / 2; - textObj.fill = "red"; - const noHitsText = new fabric.Text( - "--------------------No hits found--------------------", - textObj - ); - return noHitsText; +export function drawNoHitsFoundText(renderOptions: RenderOptions, topPadding: number): fabric.Text { + const textObj = { ...textDefaults }; + textObj.fontWeight = 'bold'; + textObj.fontSize = renderOptions.fontSize! + 1; + textObj.top = topPadding; + textObj.left = renderOptions.contentWidth! / 2; + textObj.fill = 'red'; + const noHitsText = new fabric.Text('--------------------No hits found--------------------', textObj); + return noHitsText; } export function drawContentSequenceInfoText( - maxIDLen: number, - hit: Hit, - renderOptions: RenderOptions, - topPadding: number + maxIDLen: number, + hit: Hit, + renderOptions: RenderOptions, + topPadding: number ): [fabric.Text, fabric.Text, TextType] { - // Hit ID + Hit Description text tracks - const textObj = {...textDefaults}; - textObj.fontFamily = "Menlo"; - textObj.fontSize = renderOptions.fontSize! - 2; - textObj.top = topPadding - 2; - - const variableSpace = " ".repeat( - maxIDLen - (hit.hit_db.length + hit.hit_id.length) - ); - const spaceText: fabric.Text = new fabric.Text(variableSpace, textObj); - - let hit_def: string = `${hit.hit_db}:${hit.hit_id} ${hit.hit_desc}`; - let hit_def_full: string = `${variableSpace}${hit.hit_db}:${hit.hit_id} ${hit.hit_desc}`; - if (hit_def_full.length > 40) { - hit_def = (hit_def_full.slice(0, 38) + "...").slice( - variableSpace.length - ); - } - textObj.left = 10 + variableSpace.length * 6; - textObj.evented = true; - const hitText: fabric.Text = new fabric.Text(hit_def, textObj); - return [spaceText, hitText, textObj]; + // Hit ID + Hit Description text tracks + const textObj = { ...textDefaults }; + textObj.fontFamily = 'Menlo'; + textObj.fontSize = renderOptions.fontSize! - 2; + textObj.top = topPadding - 2; + + const variableSpace = ' '.repeat(maxIDLen - (hit.hit_db.length + hit.hit_id.length)); + const spaceText: fabric.Text = new fabric.Text(variableSpace, textObj); + + let hit_def: string = `${hit.hit_db}:${hit.hit_id} ${hit.hit_desc}`; + let hit_def_full: string = `${variableSpace}${hit.hit_db}:${hit.hit_id} ${hit.hit_desc}`; + if (hit_def_full.length > 40) { + hit_def = (hit_def_full.slice(0, 38) + '...').slice(variableSpace.length); + } + textObj.left = 10 + variableSpace.length * 6; + textObj.evented = true; + const hitText: fabric.Text = new fabric.Text(hit_def, textObj); + return [spaceText, hitText, textObj]; } export function drawHspNoticeText( - totalNumberHsps: number, - numberHsps: number, - renderOptions: RenderOptions, - topPadding: number + totalNumberHsps: number, + numberHsps: number, + renderOptions: RenderOptions, + topPadding: number ): fabric.Text { - // notice about not all HSPs being displayed - const textObj = {...textDefaults}; - textObj.fontSize = renderOptions.fontSize!; - textObj.top = topPadding; - textObj.left = renderOptions.contentWidth! / 2; - textObj.fill = "red"; - const hspTextNotice = new fabric.Text( - `This hit contains ${totalNumberHsps} alignments, ` + - `but only the first ${numberHsps} are displayed!`, - textObj - ); - return hspTextNotice; + // notice about not all HSPs being displayed + const textObj = { ...textDefaults }; + textObj.fontSize = renderOptions.fontSize!; + textObj.top = topPadding; + textObj.left = renderOptions.contentWidth! / 2; + textObj.fill = 'red'; + const hspTextNotice = new fabric.Text( + `This hit contains ${totalNumberHsps} alignments, ` + `but only the first ${numberHsps} are displayed!`, + textObj + ); + return hspTextNotice; } export function drawScoreText( - startEvalPixels: number, - hsp: Hsp, - renderOptions: RenderOptions, - topPadding: number + startEvalPixels: number, + hsp: Hsp, + renderOptions: RenderOptions, + topPadding: number ): fabric.Text { - // E-value text tracks - const textObj = {...textDefaults}; - textObj.fontSize = renderOptions.fontSize; - textObj.top = topPadding - 15; - textObj.textAlign = "center"; - - textObj.left = startEvalPixels; - let hspScoreText: fabric.Text; - if (renderOptions.colorScheme === ColorSchemeEnum.ncbiblast) { - hspScoreText = new fabric.Text( - numberToString(hsp.hsp_bit_score!), - textObj - ); - } else { - hspScoreText = new fabric.Text( - numberToString(hsp.hsp_expect!), - textObj - ); - } - return hspScoreText; + // E-value text tracks + const textObj = { ...textDefaults }; + textObj.fontSize = renderOptions.fontSize; + textObj.top = topPadding - 15; + textObj.textAlign = 'center'; + + textObj.left = startEvalPixels; + let hspScoreText: fabric.Text; + if (renderOptions.colorScheme === ColorSchemeEnum.ncbiblast) { + hspScoreText = new fabric.Text(numberToString(hsp.hsp_bit_score!), textObj); + } else { + hspScoreText = new fabric.Text(numberToString(hsp.hsp_expect!), textObj); + } + return hspScoreText; } export function drawDomainQueySubject( - startQueryPixels: number, - endQueryPixels: number, - startSubjPixels: number, - endSubjPixels: number, - topPadding: number, - fill: string + startQueryPixels: number, + endQueryPixels: number, + startSubjPixels: number, + endSubjPixels: number, + topPadding: number, + fill: string ): [fabric.Rect, fabric.Rect] { - const rectObj = {...rectDefaults}; - rectObj.evented = true; - rectObj.top = topPadding; - rectObj.fill = fill; - rectObj.rx = 5; - rectObj.ry = 5; - // Query - rectObj.top = topPadding - 15; - rectObj.left = startQueryPixels; - rectObj.width = endQueryPixels; - rectObj.height = 10; - const queryDomain = new fabric.Rect(rectObj); - - // Subject - rectObj.top = topPadding - 15; - rectObj.left = startSubjPixels; - rectObj.width = endSubjPixels; - rectObj.height = 10; - const subjDomain = new fabric.Rect(rectObj); - - return [queryDomain, subjDomain]; + const rectObj = { ...rectDefaults }; + rectObj.evented = true; + rectObj.top = topPadding; + rectObj.fill = fill; + rectObj.rx = 5; + rectObj.ry = 5; + // Query + rectObj.top = topPadding - 15; + rectObj.left = startQueryPixels; + rectObj.width = endQueryPixels; + rectObj.height = 10; + const queryDomain = new fabric.Rect(rectObj); + + // Subject + rectObj.top = topPadding - 15; + rectObj.left = startSubjPixels; + rectObj.width = endSubjPixels; + rectObj.height = 10; + const subjDomain = new fabric.Rect(rectObj); + + return [queryDomain, subjDomain]; } export function drawDomainTooltips( - startHspPixels: number, - endHspPixels: number, - seq_from: number, - seq_to: number, - hsp: Hsp, - renderOptions: RenderOptions, - topPadding: number + startHspPixels: number, + endHspPixels: number, + seq_from: number, + seq_to: number, + hsp: Hsp, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const floatTextObj = {...textDefaults}; - floatTextObj.fontSize = renderOptions.fontSize! + 1; - floatTextObj.textAlign = "left"; - floatTextObj.originX = "top"; - floatTextObj.originY = "top"; - floatTextObj.top = 5; - let tooltip: string; - if (renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast) { - tooltip = `Start: ${seq_from}\nEnd: ${seq_to}\nBit score: ${numberToString( - hsp.hsp_bit_score! - )}`; - } else { - tooltip = `Start: ${seq_from}\nEnd: ${seq_to}\nE-value: ${numberToString( - hsp.hsp_expect! - )}`; - } - const tooltipText = new fabric.Text(tooltip, floatTextObj); - const rectObj = {...rectDefaults}; - rectObj.fill = "white"; - rectObj.stroke = "lightseagreen"; - rectObj.rx = 5; - rectObj.ry = 5; - rectObj.originX = "top"; - rectObj.originY = "top"; - rectObj.width = 140; - rectObj.height = 60; - rectObj.opacity = 0.95; - - const tooltipBox: fabric.Rect = new fabric.Rect(rectObj); - const tooltipGroup: fabric.Group = new fabric.Group( - [tooltipBox, tooltipText], - { - selectable: false, - evented: false, - objectCaching: false, - visible: false, - top: topPadding, - left: startHspPixels + endHspPixels / 2, - } - ); - return tooltipGroup; + const floatTextObj = { ...textDefaults }; + floatTextObj.fontSize = renderOptions.fontSize! + 1; + floatTextObj.textAlign = 'left'; + floatTextObj.originX = 'top'; + floatTextObj.originY = 'top'; + floatTextObj.top = 5; + let tooltip: string; + if (renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast) { + tooltip = `Start: ${seq_from}\nEnd: ${seq_to}\nBit score: ${numberToString(hsp.hsp_bit_score!)}`; + } else { + tooltip = `Start: ${seq_from}\nEnd: ${seq_to}\nE-value: ${numberToString(hsp.hsp_expect!)}`; + } + const tooltipText = new fabric.Text(tooltip, floatTextObj); + const rectObj = { ...rectDefaults }; + rectObj.fill = 'white'; + rectObj.stroke = 'lightseagreen'; + rectObj.rx = 5; + rectObj.ry = 5; + rectObj.originX = 'top'; + rectObj.originY = 'top'; + rectObj.width = 140; + rectObj.height = 60; + rectObj.opacity = 0.95; + + const tooltipBox: fabric.Rect = new fabric.Rect(rectObj); + const tooltipGroup: fabric.Group = new fabric.Group([tooltipBox, tooltipText], { + selectable: false, + evented: false, + objectCaching: false, + visible: false, + top: topPadding, + left: startHspPixels + endHspPixels / 2, + }); + return tooltipGroup; } -export function drawScaleTypeText( - renderOptions: RenderOptions, - topPadding: number -): fabric.Text { - const textSelObj = {...textDefaults}; - textSelObj.fontSize = renderOptions.fontSize! + 1; - textSelObj.fontWeight = "bold"; - textSelObj.top = topPadding; - textSelObj.left = renderOptions.scaleLabelWidth!; - const scaleTypeText = new fabric.Text("Scale Type:", textSelObj); - return scaleTypeText; +export function drawScaleTypeText(renderOptions: RenderOptions, topPadding: number): fabric.Text { + const textSelObj = { ...textDefaults }; + textSelObj.fontSize = renderOptions.fontSize! + 1; + textSelObj.fontWeight = 'bold'; + textSelObj.top = topPadding; + textSelObj.left = renderOptions.scaleLabelWidth!; + const scaleTypeText = new fabric.Text('Scale Type:', textSelObj); + return scaleTypeText; } export function drawCheckBoxText( - renderOptions: RenderOptions, - topPadding: number -): [ - fabric.Text, - fabric.Text, - TextType, - fabric.Text, - fabric.Text, - TextType, - fabric.Text, - fabric.Text, - TextType -] { - // Scale Type selection - const textSelObj = {...textDefaults}; - textSelObj.fontSize = renderOptions.fontSize! + 1; - textSelObj.top = topPadding; - textSelObj.left = renderOptions.scaleLabelWidth!; - - const textCheckDynObj = {...textDefaults}; - textCheckDynObj.fontSize = renderOptions.fontSize! + 12; - textCheckDynObj.fill = "grey"; - textCheckDynObj.evented = true; - textCheckDynObj.top = topPadding - 8; - textCheckDynObj.left = renderOptions.scaleLabelWidth!; - const textCheckFixObj = {...textCheckDynObj}; - const textCheckNcbiObj = {...textCheckDynObj}; - - let checkSym: string; - renderOptions.colorScheme === ColorSchemeEnum.dynamic - ? (checkSym = "☒") - : (checkSym = "☐"); - if (renderOptions.colorScheme === ColorSchemeEnum.dynamic) - textCheckDynObj.fill = "black"; - textCheckDynObj.left! += 80; - const dynamicCheckboxText = new fabric.Text(checkSym, textCheckDynObj); - textSelObj.left! += 100; - const dynamicText = new fabric.Text( - "Dynamic (E-value: min to max)", - textSelObj - ); - - renderOptions.colorScheme! === ColorSchemeEnum.fixed - ? (checkSym = "☒") - : (checkSym = "☐"); - if (renderOptions.colorScheme! === ColorSchemeEnum.fixed) - textCheckFixObj.fill = "black"; - textCheckFixObj.left! += 290; - const fixedCheckboxText = new fabric.Text(checkSym, textCheckFixObj); - textSelObj.left! += 210; - const fixedText = new fabric.Text( - "Fixed (E-value: 0.0 to 100.0)", - textSelObj - ); - - renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast - ? (checkSym = "☒") - : (checkSym = "☐"); - if (renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast) - textCheckNcbiObj.fill = "black"; - textCheckNcbiObj.left! += 480; - const ncbiblastCheckboxText = new fabric.Text(checkSym, textCheckNcbiObj); - textSelObj.left! += 190; - const ncbiblastText = new fabric.Text( - "NCBI BLAST+ (Bit score: <40 to ≥200)", - textSelObj - ); - - return [ - dynamicCheckboxText, - dynamicText, - textCheckDynObj, - fixedCheckboxText, - fixedText, - textCheckFixObj, - ncbiblastCheckboxText, - ncbiblastText, - textCheckNcbiObj, - ]; + renderOptions: RenderOptions, + topPadding: number +): [fabric.Text, fabric.Text, TextType, fabric.Text, fabric.Text, TextType, fabric.Text, fabric.Text, TextType] { + // Scale Type selection + const textSelObj = { ...textDefaults }; + textSelObj.fontSize = renderOptions.fontSize! + 1; + textSelObj.top = topPadding; + textSelObj.left = renderOptions.scaleLabelWidth!; + + const textCheckDynObj = { ...textDefaults }; + textCheckDynObj.fontSize = renderOptions.fontSize! + 12; + textCheckDynObj.fill = 'grey'; + textCheckDynObj.evented = true; + textCheckDynObj.top = topPadding - 8; + textCheckDynObj.left = renderOptions.scaleLabelWidth!; + const textCheckFixObj = { ...textCheckDynObj }; + const textCheckNcbiObj = { ...textCheckDynObj }; + + let checkSym: string; + renderOptions.colorScheme === ColorSchemeEnum.dynamic ? (checkSym = '☒') : (checkSym = '☐'); + if (renderOptions.colorScheme === ColorSchemeEnum.dynamic) textCheckDynObj.fill = 'black'; + textCheckDynObj.left! += 80; + const dynamicCheckboxText = new fabric.Text(checkSym, textCheckDynObj); + textSelObj.left! += 100; + const dynamicText = new fabric.Text('Dynamic (E-value: min to max)', textSelObj); + + renderOptions.colorScheme! === ColorSchemeEnum.fixed ? (checkSym = '☒') : (checkSym = '☐'); + if (renderOptions.colorScheme! === ColorSchemeEnum.fixed) textCheckFixObj.fill = 'black'; + textCheckFixObj.left! += 290; + const fixedCheckboxText = new fabric.Text(checkSym, textCheckFixObj); + textSelObj.left! += 210; + const fixedText = new fabric.Text('Fixed (E-value: 0.0 to 100.0)', textSelObj); + + renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast ? (checkSym = '☒') : (checkSym = '☐'); + if (renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast) textCheckNcbiObj.fill = 'black'; + textCheckNcbiObj.left! += 480; + const ncbiblastCheckboxText = new fabric.Text(checkSym, textCheckNcbiObj); + textSelObj.left! += 190; + const ncbiblastText = new fabric.Text('NCBI BLAST+ (Bit score: <40 to ≥200)', textSelObj); + + return [ + dynamicCheckboxText, + dynamicText, + textCheckDynObj, + fixedCheckboxText, + fixedText, + textCheckFixObj, + ncbiblastCheckboxText, + ncbiblastText, + textCheckNcbiObj, + ]; } -export function drawScaleScoreText( - renderOptions: RenderOptions, - topPadding: number -): fabric.Text { - const textObj = {...textDefaults}; - textObj.fontSize = renderOptions.fontSize! + 1; - textObj.top = topPadding; - let scaleTypeLabel: string; - renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast - ? (scaleTypeLabel = "Bit score") - : (scaleTypeLabel = "E-value"); - renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast - ? (textObj.left = renderOptions.scaleLabelWidth! - 56) - : (textObj.left = renderOptions.scaleLabelWidth! - 50); - const scaleScoreText = new fabric.Text(`${scaleTypeLabel}`, textObj); - return scaleScoreText; +export function drawScaleScoreText(renderOptions: RenderOptions, topPadding: number): fabric.Text { + const textObj = { ...textDefaults }; + textObj.fontSize = renderOptions.fontSize! + 1; + textObj.top = topPadding; + let scaleTypeLabel: string; + renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast + ? (scaleTypeLabel = 'Bit score') + : (scaleTypeLabel = 'E-value'); + renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast + ? (textObj.left = renderOptions.scaleLabelWidth! - 56) + : (textObj.left = renderOptions.scaleLabelWidth! - 50); + const scaleScoreText = new fabric.Text(`${scaleTypeLabel}`, textObj); + return scaleScoreText; } -export function drawScaleColorGradient( - renderOptions: RenderOptions, - topPadding: number -): fabric.Rect { - const rectObj = {...rectDefaults}; - rectObj.top = topPadding; - rectObj.left = renderOptions.scaleLabelWidth!; - rectObj.width = renderOptions.scaleWidth!; - rectObj.height = 15; - const colorScale = new fabric.Rect(rectObj); - if (renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast) { - colorNcbiBlastGradient(colorScale, 0, renderOptions.scaleWidth!); - } else { - colorDefaultGradient(colorScale, 0, renderOptions.scaleWidth!); - } - return colorScale; +export function drawScaleColorGradient(renderOptions: RenderOptions, topPadding: number): fabric.Rect { + const rectObj = { ...rectDefaults }; + rectObj.top = topPadding; + rectObj.left = renderOptions.scaleLabelWidth!; + rectObj.width = renderOptions.scaleWidth!; + rectObj.height = 15; + const colorScale = new fabric.Rect(rectObj); + if (renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast) { + colorNcbiBlastGradient(colorScale, 0, renderOptions.scaleWidth!); + } else { + colorDefaultGradient(colorScale, 0, renderOptions.scaleWidth!); + } + return colorScale; } export function drawLineAxis5Buckets( - startGradPixels: number, - o25GradPixels: number, - o50GradPixels: number, - o75GradPixels: number, - endGradPixels: number, - renderOptions: RenderOptions, - topPadding: number + startGradPixels: number, + o25GradPixels: number, + o50GradPixels: number, + o75GradPixels: number, + endGradPixels: number, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - // Axis - const lineObj = {...lineDefaults}; - lineObj.top = topPadding; - lineObj.stroke = "black"; - lineObj.strokeWidth = renderOptions.strokeWidth!; - const coordsAxis: [number, number, number, number] = [ - startGradPixels, - topPadding, - endGradPixels, - topPadding, - ]; - lineObj.left = startGradPixels; - const axisLine = new fabric.Line(coordsAxis, lineObj); - - // Start tick - const coordsAxisStartTick: [number, number, number, number] = [ - startGradPixels, - topPadding, - startGradPixels, - topPadding + 4, - ]; - const axisStartTick = new fabric.Line(coordsAxisStartTick, lineObj); - - // 25% tick - const coordsAxis25Tick: [number, number, number, number] = [ - o25GradPixels, - topPadding, - o25GradPixels, - topPadding + 4, - ]; - lineObj.left = o25GradPixels; - const axis25Tick = new fabric.Line(coordsAxis25Tick, lineObj); - - // 50% tick - const coordsAxis50Tick: [number, number, number, number] = [ - o50GradPixels, - topPadding, - o50GradPixels, - topPadding + 4, - ]; - lineObj.left = o50GradPixels; - const axis50Tick = new fabric.Line(coordsAxis50Tick, lineObj); - - // 75% tick - const coordsAxis75Tick: [number, number, number, number] = [ - o75GradPixels, - topPadding, - o75GradPixels, - topPadding + 4, - ]; - lineObj.left = o75GradPixels; - const axis75Tick = new fabric.Line(coordsAxis75Tick, lineObj); - - // End tick - const coordsAxisEndTick: [number, number, number, number] = [ - endGradPixels, - topPadding, - endGradPixels, - topPadding + 4, - ]; - lineObj.left = endGradPixels; - const axisEndTick = new fabric.Line(coordsAxisEndTick, lineObj); - - // Group - const axisGroup = new fabric.Group( - [ - axisLine, - axisStartTick, - axis25Tick, - axis50Tick, - axis75Tick, - axisEndTick, - ], - objectDefaults - ); - return axisGroup; + // Axis + const lineObj = { ...lineDefaults }; + lineObj.top = topPadding; + lineObj.stroke = 'black'; + lineObj.strokeWidth = renderOptions.strokeWidth!; + const coordsAxis: [number, number, number, number] = [startGradPixels, topPadding, endGradPixels, topPadding]; + lineObj.left = startGradPixels; + const axisLine = new fabric.Line(coordsAxis, lineObj); + + // Start tick + const coordsAxisStartTick: [number, number, number, number] = [ + startGradPixels, + topPadding, + startGradPixels, + topPadding + 4, + ]; + const axisStartTick = new fabric.Line(coordsAxisStartTick, lineObj); + + // 25% tick + const coordsAxis25Tick: [number, number, number, number] = [o25GradPixels, topPadding, o25GradPixels, topPadding + 4]; + lineObj.left = o25GradPixels; + const axis25Tick = new fabric.Line(coordsAxis25Tick, lineObj); + + // 50% tick + const coordsAxis50Tick: [number, number, number, number] = [o50GradPixels, topPadding, o50GradPixels, topPadding + 4]; + lineObj.left = o50GradPixels; + const axis50Tick = new fabric.Line(coordsAxis50Tick, lineObj); + + // 75% tick + const coordsAxis75Tick: [number, number, number, number] = [o75GradPixels, topPadding, o75GradPixels, topPadding + 4]; + lineObj.left = o75GradPixels; + const axis75Tick = new fabric.Line(coordsAxis75Tick, lineObj); + + // End tick + const coordsAxisEndTick: [number, number, number, number] = [ + endGradPixels, + topPadding, + endGradPixels, + topPadding + 4, + ]; + lineObj.left = endGradPixels; + const axisEndTick = new fabric.Line(coordsAxisEndTick, lineObj); + + // Group + const axisGroup = new fabric.Group( + [axisLine, axisStartTick, axis25Tick, axis50Tick, axis75Tick, axisEndTick], + objectDefaults + ); + return axisGroup; } export function drawLineAxis6Buckets( - startGradPixels: number, - o20GradPixels: number, - o40GradPixels: number, - o60GradPixels: number, - o80GradPixels: number, - endGradPixels: number, - renderOptions: RenderOptions, - topPadding: number + startGradPixels: number, + o20GradPixels: number, + o40GradPixels: number, + o60GradPixels: number, + o80GradPixels: number, + endGradPixels: number, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - // Axis - const lineObj = {...lineDefaults}; - lineObj.top = topPadding; - lineObj.stroke = "black"; - lineObj.strokeWidth = renderOptions.strokeWidth!; - const coordsAxis: [number, number, number, number] = [ - startGradPixels, - topPadding, - endGradPixels, - topPadding, - ]; - lineObj.left = startGradPixels; - const axisLine = new fabric.Line(coordsAxis, lineObj); - - // Start tick - const coordsAxisStartTick: [number, number, number, number] = [ - startGradPixels, - topPadding, - startGradPixels, - topPadding + 4, - ]; - const axisStartTick = new fabric.Line(coordsAxisStartTick, lineObj); - - // 20% tick - const coordsAxis20Tick: [number, number, number, number] = [ - o20GradPixels, - topPadding, - o20GradPixels, - topPadding + 4, - ]; - lineObj.left = o20GradPixels; - const axis20Tick = new fabric.Line(coordsAxis20Tick, lineObj); - - // 40% tick - const coordsAxis40Tick: [number, number, number, number] = [ - o40GradPixels, - topPadding, - o40GradPixels, - topPadding + 4, - ]; - lineObj.left = o40GradPixels; - const axis40Tick = new fabric.Line(coordsAxis40Tick, lineObj); - - // 60% tick - const coordsAxis60Tick: [number, number, number, number] = [ - o60GradPixels, - topPadding, - o60GradPixels, - topPadding + 4, - ]; - lineObj.left = o60GradPixels; - const axis60Tick = new fabric.Line(coordsAxis60Tick, lineObj); - - // 80% tick - const coordsAxis80Tick: [number, number, number, number] = [ - o80GradPixels, - topPadding, - o80GradPixels, - topPadding + 4, - ]; - lineObj.left = o80GradPixels; - const axis80Tick = new fabric.Line(coordsAxis80Tick, lineObj); - - // End tick - const coordsAxisEndTick: [number, number, number, number] = [ - endGradPixels, - topPadding, - endGradPixels, - topPadding + 4, - ]; - lineObj.left = endGradPixels; - const axisEndTick = new fabric.Line(coordsAxisEndTick, lineObj); - - // Group - const axisGroup = new fabric.Group( - [ - axisLine, - axisStartTick, - axis20Tick, - axis40Tick, - axis60Tick, - axis80Tick, - axisEndTick, - ], - objectDefaults - ); - return axisGroup; + // Axis + const lineObj = { ...lineDefaults }; + lineObj.top = topPadding; + lineObj.stroke = 'black'; + lineObj.strokeWidth = renderOptions.strokeWidth!; + const coordsAxis: [number, number, number, number] = [startGradPixels, topPadding, endGradPixels, topPadding]; + lineObj.left = startGradPixels; + const axisLine = new fabric.Line(coordsAxis, lineObj); + + // Start tick + const coordsAxisStartTick: [number, number, number, number] = [ + startGradPixels, + topPadding, + startGradPixels, + topPadding + 4, + ]; + const axisStartTick = new fabric.Line(coordsAxisStartTick, lineObj); + + // 20% tick + const coordsAxis20Tick: [number, number, number, number] = [o20GradPixels, topPadding, o20GradPixels, topPadding + 4]; + lineObj.left = o20GradPixels; + const axis20Tick = new fabric.Line(coordsAxis20Tick, lineObj); + + // 40% tick + const coordsAxis40Tick: [number, number, number, number] = [o40GradPixels, topPadding, o40GradPixels, topPadding + 4]; + lineObj.left = o40GradPixels; + const axis40Tick = new fabric.Line(coordsAxis40Tick, lineObj); + + // 60% tick + const coordsAxis60Tick: [number, number, number, number] = [o60GradPixels, topPadding, o60GradPixels, topPadding + 4]; + lineObj.left = o60GradPixels; + const axis60Tick = new fabric.Line(coordsAxis60Tick, lineObj); + + // 80% tick + const coordsAxis80Tick: [number, number, number, number] = [o80GradPixels, topPadding, o80GradPixels, topPadding + 4]; + lineObj.left = o80GradPixels; + const axis80Tick = new fabric.Line(coordsAxis80Tick, lineObj); + + // End tick + const coordsAxisEndTick: [number, number, number, number] = [ + endGradPixels, + topPadding, + endGradPixels, + topPadding + 4, + ]; + lineObj.left = endGradPixels; + const axisEndTick = new fabric.Line(coordsAxisEndTick, lineObj); + + // Group + const axisGroup = new fabric.Group( + [axisLine, axisStartTick, axis20Tick, axis40Tick, axis60Tick, axis80Tick, axisEndTick], + objectDefaults + ); + return axisGroup; } export function drawScaleTick5LabelsGroup( - gradientSteps: number[], - leftPadding: number, - renderOptions: RenderOptions, - topPadding: number + gradientSteps: number[], + leftPadding: number, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const textObj = {...textDefaults}; - textObj.top = topPadding; - textObj.fontSize = renderOptions.fontSize!; - // 20% Tick Label - let label = `<${gradientSteps[1]}`; - textObj.left = - renderOptions.scaleLabelWidth! + leftPadding - label.length * 3 - 72; - const o20LabelText = new fabric.Text(label, textObj); - // 40% Tick Label - label = `${gradientSteps[1]} - ${gradientSteps[2]}`; - textObj.left = - renderOptions.scaleLabelWidth! + - leftPadding * 2 - - label.length * 3 - - 72; - const o40LabelText = new fabric.Text(label, textObj); - // 60% Tick Label - label = `${gradientSteps[2]} - ${gradientSteps[3]}`; - textObj.left = - renderOptions.scaleLabelWidth! + - leftPadding * 3 - - label.length * 3 - - 72; - const o60LabelText = new fabric.Text(label, textObj); - // 60% Tick Label - label = `${gradientSteps[3]} - ${gradientSteps[4]}`; - textObj.left = - renderOptions.scaleLabelWidth! + - leftPadding * 4 - - label.length * 3 - - 72; - const o80LabelText = new fabric.Text(label, textObj); - // End Tick Label - label = `≥${gradientSteps[4]}`; - textObj.left = - renderOptions.scaleLabelWidth! + - renderOptions.scaleWidth! - - label.length * 3 - - 72; - const endLabelText = new fabric.Text(label, textObj); - - const textGroup = new fabric.Group( - [o20LabelText, o40LabelText, o60LabelText, o80LabelText, endLabelText], - objectDefaults - ); - return textGroup; + const textObj = { ...textDefaults }; + textObj.top = topPadding; + textObj.fontSize = renderOptions.fontSize!; + // 20% Tick Label + let label = `<${gradientSteps[1]}`; + textObj.left = renderOptions.scaleLabelWidth! + leftPadding - label.length * 3 - 72; + const o20LabelText = new fabric.Text(label, textObj); + // 40% Tick Label + label = `${gradientSteps[1]} - ${gradientSteps[2]}`; + textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 2 - label.length * 3 - 72; + const o40LabelText = new fabric.Text(label, textObj); + // 60% Tick Label + label = `${gradientSteps[2]} - ${gradientSteps[3]}`; + textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 3 - label.length * 3 - 72; + const o60LabelText = new fabric.Text(label, textObj); + // 60% Tick Label + label = `${gradientSteps[3]} - ${gradientSteps[4]}`; + textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 4 - label.length * 3 - 72; + const o80LabelText = new fabric.Text(label, textObj); + // End Tick Label + label = `≥${gradientSteps[4]}`; + textObj.left = renderOptions.scaleLabelWidth! + renderOptions.scaleWidth! - label.length * 3 - 72; + const endLabelText = new fabric.Text(label, textObj); + + const textGroup = new fabric.Group( + [o20LabelText, o40LabelText, o60LabelText, o80LabelText, endLabelText], + objectDefaults + ); + return textGroup; } export function drawScaleTick4LabelsGroup( - gradientSteps: number[], - leftPadding: number, - renderOptions: RenderOptions, - topPadding: number + gradientSteps: number[], + leftPadding: number, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const textObj = {...textDefaults}; - textObj.top = topPadding; - textObj.fontSize = renderOptions.fontSize!; - // Start Tick Label - textObj.left = - renderOptions.scaleLabelWidth! - - numberToString(gradientSteps[0]).length * 3; - const startLabelText = new fabric.Text( - numberToString(gradientSteps[0]), - textObj - ); - // 25% Tick Label - textObj.left = - renderOptions.scaleLabelWidth! + - leftPadding - - numberToString(gradientSteps[1]).length * 3; - const o25LabelText = new fabric.Text( - numberToString(gradientSteps[1]), - textObj - ); - // 50% Tick Label - textObj.left = - renderOptions.scaleLabelWidth! + - leftPadding * 2 - - numberToString(gradientSteps[2]).length * 3; - const o50LabelText = new fabric.Text( - numberToString(gradientSteps[2]), - textObj - ); - // 75% Tick Label - textObj.left = - renderOptions.scaleLabelWidth! + - leftPadding * 3 - - numberToString(gradientSteps[3]).length * 3; - const o75LabelText = new fabric.Text( - numberToString(gradientSteps[3]), - textObj - ); - // End Tick Label - textObj.left = - renderOptions.scaleLabelWidth! + - renderOptions.scaleWidth! - - numberToString(gradientSteps[4]).length * 3; - const endLabelText = new fabric.Text( - numberToString(gradientSteps[4]), - textObj - ); - - const textGroup = new fabric.Group( - [ - startLabelText, - o25LabelText, - o50LabelText, - o75LabelText, - endLabelText, - ], - objectDefaults - ); - return textGroup; + const textObj = { ...textDefaults }; + textObj.top = topPadding; + textObj.fontSize = renderOptions.fontSize!; + // Start Tick Label + textObj.left = renderOptions.scaleLabelWidth! - numberToString(gradientSteps[0]).length * 3; + const startLabelText = new fabric.Text(numberToString(gradientSteps[0]), textObj); + // 25% Tick Label + textObj.left = renderOptions.scaleLabelWidth! + leftPadding - numberToString(gradientSteps[1]).length * 3; + const o25LabelText = new fabric.Text(numberToString(gradientSteps[1]), textObj); + // 50% Tick Label + textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 2 - numberToString(gradientSteps[2]).length * 3; + const o50LabelText = new fabric.Text(numberToString(gradientSteps[2]), textObj); + // 75% Tick Label + textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 3 - numberToString(gradientSteps[3]).length * 3; + const o75LabelText = new fabric.Text(numberToString(gradientSteps[3]), textObj); + // End Tick Label + textObj.left = + renderOptions.scaleLabelWidth! + renderOptions.scaleWidth! - numberToString(gradientSteps[4]).length * 3; + const endLabelText = new fabric.Text(numberToString(gradientSteps[4]), textObj); + + const textGroup = new fabric.Group( + [startLabelText, o25LabelText, o50LabelText, o75LabelText, endLabelText], + objectDefaults + ); + return textGroup; } -export function drawFooterText( - renderOptions: RenderOptions, - topPadding: number -): [fabric.Text, TextType] { - const textObj = {...textDefaults}; - textObj.fontSize = renderOptions.fontSize; - textObj.evented = true; - textObj.top = topPadding; - textObj.left = 225; - const copyright = - `European Bioinformatics Institute 2006-2022. ` + - `EBI is an Outstation of the European Molecular Biology Laboratory.`; - const copyrightText = new fabric.Text(`${copyright}`, textObj); - return [copyrightText, textObj]; +export function drawFooterText(renderOptions: RenderOptions, topPadding: number): [fabric.Text, TextType] { + const textObj = { ...textDefaults }; + textObj.fontSize = renderOptions.fontSize; + textObj.evented = true; + textObj.top = topPadding; + textObj.left = 225; + const copyright = + `European Bioinformatics Institute 2006-2022. ` + + `EBI is an Outstation of the European Molecular Biology Laboratory.`; + const copyrightText = new fabric.Text(`${copyright}`, textObj); + return [copyrightText, textObj]; } export function drawCanvasWrapperStroke(renderOptions: RenderOptions) { - const canvasWrapper = new fabric.Rect({ - selectable: false, - evented: false, - objectCaching: false, - top: 0, - left: 0, - width: renderOptions.canvasWidth! - 1, - height: renderOptions.canvasHeight! - 1, - strokeWidth: 1, - stroke: "lightseagreen", - fill: "transparent", - }); - return canvasWrapper; + const canvasWrapper = new fabric.Rect({ + selectable: false, + evented: false, + objectCaching: false, + top: 0, + left: 0, + width: renderOptions.canvasWidth! - 1, + height: renderOptions.canvasHeight! - 1, + strokeWidth: 1, + stroke: 'lightseagreen', + fill: 'transparent', + }); + return canvasWrapper; } -export function drawContentTitleText( - renderOptions: RenderOptions, - topPadding: number -): fabric.Text { - const textObj = {...textDefaults}; - textObj.fontWeight = "bold"; - textObj.fontSize = renderOptions.fontSize! + 2; - textObj.top = topPadding; - textObj.left = 350; - const title = "Fast Family and Domain Prediction by InterPro"; - return new fabric.Text(`${title}`, textObj); +export function drawContentTitleText(renderOptions: RenderOptions, topPadding: number): fabric.Text { + const textObj = { ...textDefaults }; + textObj.fontWeight = 'bold'; + textObj.fontSize = renderOptions.fontSize! + 2; + textObj.top = topPadding; + textObj.left = 350; + const title = 'Fast Family and Domain Prediction by InterPro'; + return new fabric.Text(`${title}`, textObj); } export function drawContentSupressText( - renderOptions: RenderOptions, - topPadding: number, - numberHits: number + renderOptions: RenderOptions, + topPadding: number, + numberHits: number ): fabric.Text { - const textObj = {...textDefaults}; - textObj.fontSize = renderOptions.fontSize!; - textObj.top = topPadding; - textObj.left = renderOptions.contentWidth! / 2; - textObj.fill = "red"; - const title = - `This is a partial representation of the result, ` + - `only the first ${numberHits} hits are displayed!`; - return new fabric.Text(`${title}`, textObj); + const textObj = { ...textDefaults }; + textObj.fontSize = renderOptions.fontSize!; + textObj.top = topPadding; + textObj.left = renderOptions.contentWidth! / 2; + textObj.fill = 'red'; + const title = `This is a partial representation of the result, ` + `only the first ${numberHits} hits are displayed!`; + return new fabric.Text(`${title}`, textObj); } -export function drawProteinFeaturesText( - renderOptions: RenderOptions, - topPadding: number -): fabric.Text { - const textSelObj = {...textDefaults}; - textSelObj.fontSize = renderOptions.fontSize! + 1; - textSelObj.fontWeight = "bold"; - textSelObj.top = topPadding; - textSelObj.left = renderOptions.scaleLabelWidth! - 10; - const scaleTypeText = new fabric.Text("Select your database:", textSelObj); - return scaleTypeText; +export function drawProteinFeaturesText(renderOptions: RenderOptions, topPadding: number): fabric.Text { + const textSelObj = { ...textDefaults }; + textSelObj.fontSize = renderOptions.fontSize! + 1; + textSelObj.fontWeight = 'bold'; + textSelObj.top = topPadding; + textSelObj.left = renderOptions.scaleLabelWidth! - 10; + const scaleTypeText = new fabric.Text('Select your database:', textSelObj); + return scaleTypeText; } export function drawDomainCheckbox( - renderOptions: RenderOptions, - topPadding: number, - leftPadding: number, - currentDomainDatabase: string + renderOptions: RenderOptions, + topPadding: number, + leftPadding: number, + currentDomainDatabase: string ): [fabric.Rect, fabric.Text, RectType, TextType] { - const rectObj = {...rectDefaults}; - rectObj.top = topPadding; - rectObj.left = leftPadding; - rectObj.height = 15; - rectObj.width = 15; - rectObj.evented = true; - const textObj = {...textDefaults}; - textObj.fontSize = renderOptions.fontSize! + 1; - textObj.top = topPadding; - textObj.left = leftPadding + 20; - - if (renderOptions.currentDisabled) { - textObj.fill = "grey"; - rectObj.fill = "white"; - rectObj.stroke = "grey"; - } else if (renderOptions.currentDomainDatabase !== undefined) { - rectObj.fill = colorByDatabaseName(renderOptions.currentDomainDatabase); - rectObj.stroke = "black"; - } else { - rectObj.fill = "white"; - rectObj.stroke = "grey"; - } - - const proteinFeatureRect = new fabric.Rect(rectObj); - const proteinFeatureText = new fabric.Text(currentDomainDatabase, textObj); - return [proteinFeatureRect, proteinFeatureText, rectObj, rectObj]; + const rectObj = { ...rectDefaults }; + rectObj.top = topPadding; + rectObj.left = leftPadding; + rectObj.height = 15; + rectObj.width = 15; + rectObj.evented = true; + const textObj = { ...textDefaults }; + textObj.fontSize = renderOptions.fontSize! + 1; + textObj.top = topPadding; + textObj.left = leftPadding + 20; + + if (renderOptions.currentDisabled) { + textObj.fill = 'grey'; + rectObj.fill = 'white'; + rectObj.stroke = 'grey'; + } else if (renderOptions.currentDomainDatabase !== undefined) { + rectObj.fill = colorByDatabaseName(renderOptions.currentDomainDatabase); + rectObj.stroke = 'black'; + } else { + rectObj.fill = 'white'; + rectObj.stroke = 'grey'; + } + + const proteinFeatureRect = new fabric.Rect(rectObj); + const proteinFeatureText = new fabric.Text(currentDomainDatabase, textObj); + return [proteinFeatureRect, proteinFeatureText, rectObj, rectObj]; } export function drawHitTransparentBox( - startPixels: number, - endPixels: number, - topPadding: number, - fill: string, - height: number + startPixels: number, + endPixels: number, + topPadding: number, + fill: string, + height: number ): fabric.Rect { - const rectObj = {...rectDefaults}; - rectObj.fill = fill; - rectObj.opacity = 0.5; - rectObj.rx = 5; - rectObj.ry = 5; - // Hit - rectObj.top = topPadding + 15; - rectObj.left = startPixels; - rectObj.width = endPixels; - rectObj.height = height; - return new fabric.Rect(rectObj); + const rectObj = { ...rectDefaults }; + rectObj.fill = fill; + rectObj.opacity = 0.5; + rectObj.rx = 5; + rectObj.ry = 5; + // Hit + rectObj.top = topPadding + 15; + rectObj.left = startPixels; + rectObj.width = endPixels; + rectObj.height = height; + return new fabric.Rect(rectObj); } export function drawContentDomainInfoText( - domainID: string, - renderOptions: RenderOptions, - topPadding: number + domainID: string, + renderOptions: RenderOptions, + topPadding: number ): [fabric.Text, fabric.Text, TextType] { - // Domain ID text tracks - const textObj = {...textDefaults}; - textObj.fontFamily = "Menlo"; - textObj.fontSize = renderOptions.fontSize! - 2; - textObj.top = topPadding - 5; - const variableSpace = " ".repeat(40 - domainID.length); - const spaceText: fabric.Text = new fabric.Text(variableSpace, textObj); - - let domain: string = `${domainID}`; - let domain_full: string = `${variableSpace}${domainID}`; - if (domain_full.length > 40) { - domain = (domain_full.slice(0, 38) + "...").slice(variableSpace.length); - } - textObj.left = 12 + variableSpace.length * 6; - textObj.evented = true; - const hitText: fabric.Text = new fabric.Text(domain, textObj); - return [spaceText, hitText, textObj]; + // Domain ID text tracks + const textObj = { ...textDefaults }; + textObj.fontFamily = 'Menlo'; + textObj.fontSize = renderOptions.fontSize! - 2; + textObj.top = topPadding - 5; + const variableSpace = ' '.repeat(40 - domainID.length); + const spaceText: fabric.Text = new fabric.Text(variableSpace, textObj); + + let domain: string = `${domainID}`; + let domain_full: string = `${variableSpace}${domainID}`; + if (domain_full.length > 40) { + domain = (domain_full.slice(0, 38) + '...').slice(variableSpace.length); + } + textObj.left = 12 + variableSpace.length * 6; + textObj.evented = true; + const hitText: fabric.Text = new fabric.Text(domain, textObj); + return [spaceText, hitText, textObj]; } // TODO FIXME: fix boxes around the edges of the canvas -export function drawDomains( - startPixels: number, - endPixels: number, - topPadding: number, - color: string -): fabric.Rect { - const rectObj = {...rectDefaults}; - rectObj.evented = true; - rectObj.top = topPadding; - rectObj.fill = color; - rectObj.rx = 5; - rectObj.ry = 5; - // Domain - rectObj.top = topPadding - 15; - rectObj.left = startPixels; - rectObj.width = endPixels; - rectObj.height = 10; - rectObj.stroke = "black"; - rectObj.strokeWidth = 0.5; - return new fabric.Rect(rectObj); +export function drawDomains(startPixels: number, endPixels: number, topPadding: number, color: string): fabric.Rect { + const rectObj = { ...rectDefaults }; + rectObj.evented = true; + rectObj.top = topPadding; + rectObj.fill = color; + rectObj.rx = 5; + rectObj.ry = 5; + // Domain + rectObj.top = topPadding - 15; + rectObj.left = startPixels; + rectObj.width = endPixels; + rectObj.height = 10; + rectObj.stroke = 'black'; + rectObj.strokeWidth = 0.5; + return new fabric.Rect(rectObj); } export function drawDomainInfoTooltips( - startPixels: number, - endPixels: number, - seq_from: number, - seq_to: number, - domain: IprMatchFlat, - renderOptions: RenderOptions, - topPadding: number + startPixels: number, + endPixels: number, + seq_from: number, + seq_to: number, + domain: IprMatchFlat, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const floatTextObj = {...textDefaults}; - floatTextObj.fontSize = renderOptions.fontSize! + 1; - floatTextObj.textAlign = "left"; - floatTextObj.originX = "top"; - floatTextObj.originY = "top"; - floatTextObj.top = 5; - floatTextObj.left = 10; - floatTextObj.width = 200; - let tooltip: string = - `Start: ${seq_from}\n` + - `End: ${seq_to}\n` + - `Database: ${domain.dbname}\n`; - if (domain.altid !== undefined && domain.altname !== undefined) { - tooltip += - `ID: ${domain.altid}\n` + - `Name: ${domain.altname}\n` + - `Type: ${domain.type}\n` + - `IPR ID: ${domain.id}\n` + - `IPR Name: ${domain.name}\n`; - } else { - tooltip += - `ID: ${domain.id}\n` + - `Name: ${domain.name}\n` + - `Type: ${domain.type}\n`; - } - const tooltipText = new fabric.Textbox(tooltip, floatTextObj); - - const rectObj = {...rectDefaults}; - rectObj.fill = "white"; - rectObj.stroke = "lightseagreen"; - rectObj.rx = 5; - rectObj.ry = 5; - rectObj.originX = "top"; - rectObj.originY = "top"; - rectObj.width = tooltipText.width! + 40; - rectObj.height = tooltipText.height!; - rectObj.opacity = 0.95; - - const tooltipBox: fabric.Rect = new fabric.Rect(rectObj); - const tooltipGroup: fabric.Group = new fabric.Group( - [tooltipBox, tooltipText], - { - selectable: false, - evented: false, - objectCaching: false, - visible: false, - top: topPadding, - left: startPixels + endPixels / 2, - } - ); - return tooltipGroup; + const floatTextObj = { ...textDefaults }; + floatTextObj.fontSize = renderOptions.fontSize! + 1; + floatTextObj.textAlign = 'left'; + floatTextObj.originX = 'top'; + floatTextObj.originY = 'top'; + floatTextObj.top = 5; + floatTextObj.left = 10; + floatTextObj.width = 200; + let tooltip: string = `Start: ${seq_from}\n` + `End: ${seq_to}\n` + `Database: ${domain.dbname}\n`; + if (domain.altid !== undefined && domain.altname !== undefined) { + tooltip += + `ID: ${domain.altid}\n` + + `Name: ${domain.altname}\n` + + `Type: ${domain.type}\n` + + `IPR ID: ${domain.id}\n` + + `IPR Name: ${domain.name}\n`; + } else { + tooltip += `ID: ${domain.id}\n` + `Name: ${domain.name}\n` + `Type: ${domain.type}\n`; + } + const tooltipText = new fabric.Textbox(tooltip, floatTextObj); + + const rectObj = { ...rectDefaults }; + rectObj.fill = 'white'; + rectObj.stroke = 'lightseagreen'; + rectObj.rx = 5; + rectObj.ry = 5; + rectObj.originX = 'top'; + rectObj.originY = 'top'; + rectObj.width = tooltipText.width! + 40; + rectObj.height = tooltipText.height!; + rectObj.opacity = 0.95; + + const tooltipBox: fabric.Rect = new fabric.Rect(rectObj); + const tooltipGroup: fabric.Group = new fabric.Group([tooltipBox, tooltipText], { + selectable: false, + evented: false, + objectCaching: false, + visible: false, + top: topPadding, + left: startPixels + endPixels / 2, + }); + return tooltipGroup; } export function drawURLInfoTooltip( - startPixels: number, - sequence: string, - URL: string, - renderOptions: RenderOptions, - topPadding: number + startPixels: number, + sequence: string, + URL: string, + renderOptions: RenderOptions, + topPadding: number ): fabric.Group { - const floatTextObj = {...textDefaults}; - floatTextObj.fontSize = renderOptions.fontSize! + 1; - floatTextObj.originX = "left"; - floatTextObj.originY = "top"; - floatTextObj.top = 5; - floatTextObj.left = 5; - if (sequence.length > 150) { - sequence = sequence.slice(0, 150) + "..."; - } - let tooltipText: fabric.Text; - if (sequence !== "") { - const seqLabel = sequence.length * 6.3; - const urlLabel = URL.length * 6.3; - if (seqLabel > urlLabel) { - floatTextObj.width = seqLabel + 5; - } else { - floatTextObj.width = urlLabel + 5; - } - tooltipText = new fabric.Text(`${sequence}\n` + `${URL}`, floatTextObj); + const floatTextObj = { ...textDefaults }; + floatTextObj.fontSize = renderOptions.fontSize! + 1; + floatTextObj.originX = 'left'; + floatTextObj.originY = 'top'; + floatTextObj.top = 5; + floatTextObj.left = 5; + if (sequence.length > 150) { + sequence = sequence.slice(0, 150) + '...'; + } + let tooltipText: fabric.Text; + if (sequence !== '') { + const seqLabel = sequence.length * 6.3; + const urlLabel = URL.length * 6.3; + if (seqLabel > urlLabel) { + floatTextObj.width = seqLabel + 5; } else { - const urlLabel = URL.length * 6.3; - floatTextObj.width = urlLabel + 5; - tooltipText = new fabric.Text(`${URL}`, floatTextObj); + floatTextObj.width = urlLabel + 5; } - const rectObj = {...rectDefaults}; - rectObj.fill = "white"; - rectObj.stroke = "lightseagreen"; - rectObj.strokeWidth = 0.5; - rectObj.rx = 5; - rectObj.ry = 5; - rectObj.originX = "left"; - rectObj.originY = "top"; - rectObj.width = tooltipText.width! + 10; - rectObj.height = tooltipText.height! + 10; - rectObj.opacity = 0.95; - - const tooltipBox: fabric.Rect = new fabric.Rect(rectObj); - const tooltipGroup: fabric.Group = new fabric.Group( - [tooltipBox, tooltipText], - { - selectable: false, - evented: false, - objectCaching: false, - visible: true, - top: topPadding, - originX: "left", - } - ); - tooltipGroup.left = startPixels + 10; - return tooltipGroup; + tooltipText = new fabric.Text(`${sequence}\n` + `${URL}`, floatTextObj); + } else { + const urlLabel = URL.length * 6.3; + floatTextObj.width = urlLabel + 5; + tooltipText = new fabric.Text(`${URL}`, floatTextObj); + } + const rectObj = { ...rectDefaults }; + rectObj.fill = 'white'; + rectObj.stroke = 'lightseagreen'; + rectObj.strokeWidth = 0.5; + rectObj.rx = 5; + rectObj.ry = 5; + rectObj.originX = 'left'; + rectObj.originY = 'top'; + rectObj.width = tooltipText.width! + 10; + rectObj.height = tooltipText.height! + 10; + rectObj.opacity = 0.95; + + const tooltipBox: fabric.Rect = new fabric.Rect(rectObj); + const tooltipGroup: fabric.Group = new fabric.Group([tooltipBox, tooltipText], { + selectable: false, + evented: false, + objectCaching: false, + visible: true, + top: topPadding, + originX: 'left', + }); + tooltipGroup.left = startPixels + 10; + return tooltipGroup; } diff --git a/src/functional-predictions-app.ts b/src/functional-predictions-app.ts index 60b6867..011ab76 100644 --- a/src/functional-predictions-app.ts +++ b/src/functional-predictions-app.ts @@ -1,988 +1,827 @@ -import {fabric} from "fabric"; -import {SSSResultModel, IPRMCResultModelFlat} from "./data-model"; -import {getPixelCoords, getDomainPixelCoords} from "./coords-utilities"; +import { fabric } from 'fabric'; +import { SSSResultModel, IPRMCResultModelFlat } from './data-model'; +import { getPixelCoords, getDomainPixelCoords } from './coords-utilities'; +import { getGradientSteps, getRgbColorFixed, getRgbColorGradient, colorByDatabaseName } from './color-utilities'; +import { defaultGradient, ncbiBlastGradient } from './color-schemes'; import { - getGradientSteps, - getRgbColorFixed, - getRgbColorGradient, - colorByDatabaseName, -} from "./color-utilities"; -import {defaultGradient, ncbiBlastGradient} from "./color-schemes"; + BasicCanvasRenderer, + ObjectCache, + getUniqueIPRMCDomainDatabases, + domainDatabaseNameToString, + getDomainURLbyDatabase, +} from './other-utilities'; +import { RenderOptions, ColorSchemeEnum, TextType, RectType } from './custom-types'; import { - BasicCanvasRenderer, - ObjectCache, - getUniqueIPRMCDomainDatabases, - domainDatabaseNameToString, - getDomainURLbyDatabase, -} from "./other-utilities"; + mouseDownText, + mouseOverText, + mouseOutText, + mouseOverCheckbox, + mouseDownCheckbox, + mouseOutCheckbox, + mouseOverDomainCheckbox, + mouseDownDomainCheckbox, + mouseOutDomainCheckbox, + mouseOverDomain, + mouseOutDomain, +} from './custom-events'; import { - RenderOptions, - ColorSchemeEnum, - TextType, - RectType, -} from "./custom-types"; -import { - mouseDownText, - mouseOverText, - mouseOutText, - mouseOverCheckbox, - mouseDownCheckbox, - mouseOutCheckbox, - mouseOverDomainCheckbox, - mouseDownDomainCheckbox, - mouseOutDomainCheckbox, - mouseOverDomain, - mouseOutDomain, -} from "./custom-events"; -import { - drawHeaderTextGroup, - drawHeaderLinkText, - drawNoHitsFoundText, - drawScaleTypeText, - drawScaleScoreText, - drawScaleColorGradient, - drawLineAxis5Buckets, - drawLineAxis6Buckets, - drawScaleTick5LabelsGroup, - drawScaleTick4LabelsGroup, - drawFooterText, - drawCanvasWrapperStroke, - drawCheckBoxText, - drawContentTitleText, - drawContentSupressText, - drawProteinFeaturesText, - drawDomainCheckbox, - drawLineTracks, - drawContentFooterTextGroup, - drawContentSequenceInfoText, - drawDomainLineTracks, - drawHitTransparentBox, - drawContentDomainInfoText, - drawDomains, -} from "./drawing-utilities"; + drawHeaderTextGroup, + drawHeaderLinkText, + drawNoHitsFoundText, + drawScaleTypeText, + drawScaleScoreText, + drawScaleColorGradient, + drawLineAxis5Buckets, + drawLineAxis6Buckets, + drawScaleTick5LabelsGroup, + drawScaleTick4LabelsGroup, + drawFooterText, + drawCanvasWrapperStroke, + drawCheckBoxText, + drawContentTitleText, + drawContentSupressText, + drawProteinFeaturesText, + drawDomainCheckbox, + drawLineTracks, + drawContentFooterTextGroup, + drawContentSequenceInfoText, + drawDomainLineTracks, + drawHitTransparentBox, + drawContentDomainInfoText, + drawDomains, +} from './drawing-utilities'; const defaultDomainDatabaseList = [ - "PRODOM", - "CATH-Gene3D", - "CDD", - "PANTHER", - "HAMAP", - "Pfam", - "PIRSF", - "PRINTS", - "PROSITE profiles", - "PROSITE patterns", - "SFLD", - "SMART", - "SUPERFAMILY", - "TIGRFAMs", + 'PRODOM', + 'CATH-Gene3D', + 'CDD', + 'PANTHER', + 'HAMAP', + 'Pfam', + 'PIRSF', + 'PRINTS', + 'PROSITE profiles', + 'PROSITE patterns', + 'SFLD', + 'SMART', + 'SUPERFAMILY', + 'TIGRFAMs', ]; function createDomainCheckbox( - _this: FunctionalPredictions, - currentDomainDatabase: string, - domainDatabases: string[], - topPadding: number, - leftPadding: number, - renderOptions: RenderOptions + _this: FunctionalPredictions, + currentDomainDatabase: string, + domainDatabases: string[], + topPadding: number, + leftPadding: number, + renderOptions: RenderOptions ) { - if (_this.domainDatabaseList.includes(currentDomainDatabase)) { - _this.currentDomainDatabase = currentDomainDatabase; - } else { - _this.currentDomainDatabase = undefined; - } - - _this.currentDomainDatabaseDisabled = false; - if (!domainDatabases.includes(currentDomainDatabase)) { - _this.currentDomainDatabaseDisabled = true; - } - - let rectObj: RectType; - let textObj: TextType; - let rect: fabric.Rect; - let text: fabric.Text; - [rect, text, rectObj, textObj] = drawDomainCheckbox( - { - currentDomainDatabase: _this.currentDomainDatabase, - currentDisabled: _this.currentDomainDatabaseDisabled, - fontSize: renderOptions.fontSize, - }, - topPadding, - leftPadding, - currentDomainDatabase - ); - _this.canvas.add(rect); - _this.canvas.add(text); - if (!renderOptions.staticCanvas) { - mouseOverDomainCheckbox(rect, rectObj, currentDomainDatabase, _this); - mouseOutDomainCheckbox(rect, rectObj, currentDomainDatabase, _this); - mouseDownDomainCheckbox(rect, currentDomainDatabase, _this); - } + if (_this.domainDatabaseList.includes(currentDomainDatabase)) { + _this.currentDomainDatabase = currentDomainDatabase; + } else { + _this.currentDomainDatabase = undefined; + } + + _this.currentDomainDatabaseDisabled = false; + if (!domainDatabases.includes(currentDomainDatabase)) { + _this.currentDomainDatabaseDisabled = true; + } + + let rectObj: RectType; + let textObj: TextType; + let rect: fabric.Rect; + let text: fabric.Text; + [rect, text, rectObj, textObj] = drawDomainCheckbox( + { + currentDomainDatabase: _this.currentDomainDatabase, + currentDisabled: _this.currentDomainDatabaseDisabled, + fontSize: renderOptions.fontSize, + }, + topPadding, + leftPadding, + currentDomainDatabase + ); + _this.canvas.add(rect); + _this.canvas.add(text); + if (!renderOptions.staticCanvas) { + mouseOverDomainCheckbox(rect, rectObj, currentDomainDatabase, _this); + mouseOutDomainCheckbox(rect, rectObj, currentDomainDatabase, _this); + mouseDownDomainCheckbox(rect, currentDomainDatabase, _this); + } } let objCache = new ObjectCache(); export class FunctionalPredictions extends BasicCanvasRenderer { - private topPadding: number = 0; - private queryStart: number = 0; - private queryEnd: number = 0; - private startPixels: number; - private endPixels: number; - private gradientSteps: number[] = []; - public currentDomainDatabase: string | undefined; - public uniqueDomainDatabases: string[] = []; - public currentDomainDatabaseDisabled: boolean = false; - - constructor( - element: string | HTMLCanvasElement, - private sssDataObj: SSSResultModel, - private iprmcDataObj: IPRMCResultModelFlat, - renderOptions: RenderOptions, - public domainDatabaseList: string[] = defaultDomainDatabaseList - ) { - super(element); - - renderOptions.canvasWidth != undefined - ? (this.canvasWidth = renderOptions.canvasWidth) - : (this.canvasWidth = 1000); - renderOptions.canvasHeight != undefined - ? (this.canvasHeight = renderOptions.canvasHeight) - : (this.canvasHeight = 110); - renderOptions.contentWidth != undefined - ? (this.contentWidth = renderOptions.contentWidth) - : (this.contentWidth = (72.5 * this.canvasWidth) / 100); - renderOptions.contentLabelWidth != undefined - ? (this.contentLabelWidth = renderOptions.contentLabelWidth) - : (this.contentLabelWidth = (26.5 * this.canvasWidth) / 100); - renderOptions.contentLabelLeftWidth != undefined - ? (this.contentLabelLeftWidth = renderOptions.contentLabelLeftWidth) - : (this.contentLabelLeftWidth = (8.25 * this.canvasWidth) / 100); - renderOptions.scaleWidth != undefined - ? (this.scaleWidth = renderOptions.scaleWidth) - : (this.scaleWidth = (75.0 * this.canvasWidth) / 100); - renderOptions.scaleLabelWidth != undefined - ? (this.scaleLabelWidth = renderOptions.scaleLabelWidth) - : (this.scaleLabelWidth = (20.0 * this.canvasWidth) / 100); - renderOptions.marginWidth != undefined - ? (this.marginWidth = renderOptions.marginWidth) - : (this.marginWidth = (0.15 * this.canvasWidth) / 100); - renderOptions.colorScheme != undefined - ? (this.colorScheme = renderOptions.colorScheme) - : (this.colorScheme = ColorSchemeEnum.dynamic); - renderOptions.numberHits != undefined - ? (this.numberHits = renderOptions.numberHits) - : (this.numberHits = 30); - renderOptions.fontSize != undefined - ? (this.fontSize = renderOptions.fontSize) - : (this.fontSize = 12); - renderOptions.fontWeigth != undefined - ? (this.fontWeigth = renderOptions.fontWeigth) - : (this.fontWeigth = "normal"); - renderOptions.fontFamily != undefined - ? (this.fontFamily = renderOptions.fontFamily) - : (this.fontFamily = "Times New Roman"); - renderOptions.canvasWrapperStroke != undefined - ? (this.canvasWrapperStroke = renderOptions.canvasWrapperStroke) - : (this.canvasWrapperStroke = false); - renderOptions.staticCanvas != undefined - ? (this.staticCanvas = renderOptions.staticCanvas) - : (this.staticCanvas = false); - - this.getFabricCanvas(); + private topPadding: number = 0; + private queryStart: number = 0; + private queryEnd: number = 0; + private startPixels: number; + private endPixels: number; + private gradientSteps: number[] = []; + public currentDomainDatabase: string | undefined; + public uniqueDomainDatabases: string[] = []; + public currentDomainDatabaseDisabled: boolean = false; + + constructor( + element: string | HTMLCanvasElement, + private sssDataObj: SSSResultModel, + private iprmcDataObj: IPRMCResultModelFlat, + renderOptions: RenderOptions, + public domainDatabaseList: string[] = defaultDomainDatabaseList + ) { + super(element); + + renderOptions.canvasWidth != undefined ? (this.canvasWidth = renderOptions.canvasWidth) : (this.canvasWidth = 1000); + renderOptions.canvasHeight != undefined + ? (this.canvasHeight = renderOptions.canvasHeight) + : (this.canvasHeight = 110); + renderOptions.contentWidth != undefined + ? (this.contentWidth = renderOptions.contentWidth) + : (this.contentWidth = (72.5 * this.canvasWidth) / 100); + renderOptions.contentLabelWidth != undefined + ? (this.contentLabelWidth = renderOptions.contentLabelWidth) + : (this.contentLabelWidth = (26.5 * this.canvasWidth) / 100); + renderOptions.contentLabelLeftWidth != undefined + ? (this.contentLabelLeftWidth = renderOptions.contentLabelLeftWidth) + : (this.contentLabelLeftWidth = (8.25 * this.canvasWidth) / 100); + renderOptions.scaleWidth != undefined + ? (this.scaleWidth = renderOptions.scaleWidth) + : (this.scaleWidth = (75.0 * this.canvasWidth) / 100); + renderOptions.scaleLabelWidth != undefined + ? (this.scaleLabelWidth = renderOptions.scaleLabelWidth) + : (this.scaleLabelWidth = (20.0 * this.canvasWidth) / 100); + renderOptions.marginWidth != undefined + ? (this.marginWidth = renderOptions.marginWidth) + : (this.marginWidth = (0.15 * this.canvasWidth) / 100); + renderOptions.colorScheme != undefined + ? (this.colorScheme = renderOptions.colorScheme) + : (this.colorScheme = ColorSchemeEnum.dynamic); + renderOptions.numberHits != undefined ? (this.numberHits = renderOptions.numberHits) : (this.numberHits = 30); + renderOptions.fontSize != undefined ? (this.fontSize = renderOptions.fontSize) : (this.fontSize = 12); + renderOptions.fontWeigth != undefined ? (this.fontWeigth = renderOptions.fontWeigth) : (this.fontWeigth = 'normal'); + renderOptions.fontFamily != undefined + ? (this.fontFamily = renderOptions.fontFamily) + : (this.fontFamily = 'Times New Roman'); + renderOptions.canvasWrapperStroke != undefined + ? (this.canvasWrapperStroke = renderOptions.canvasWrapperStroke) + : (this.canvasWrapperStroke = false); + renderOptions.staticCanvas != undefined + ? (this.staticCanvas = renderOptions.staticCanvas) + : (this.staticCanvas = false); + + this.getFabricCanvas(); + } + + public render() { + this.loadIPRMCProperties(); + this.loadInitalProperties(); + this.loadInitialCoords(); + // clear the canvas + this.canvas.clear(); + // canvas header + this.drawHeaderGroup(); + // canvas content + this.drawContentGroup(); + // canvas footer + this.drawFooterGroup(); + // finishing off + this.wrapCanvas(); + this.setFrameSize(); + this.renderCanvas(); + } + + private loadInitalProperties() { + this.queryStart = 1; + this.queryEnd = this.sssDataObj.query_len; + } + + private loadInitialCoords() { + this.startPixels = objCache.get('startPixels') as number; + this.endPixels = objCache.get('endPixels') as number; + if (!this.startPixels && !this.endPixels) { + [this.startPixels, this.endPixels] = getPixelCoords(this.contentWidth, this.contentLabelWidth, this.marginWidth); + objCache.put('startPixels', this.startPixels); + objCache.put('endPixels', this.endPixels); } - - public render() { - this.loadIPRMCProperties(); - this.loadInitalProperties(); - this.loadInitialCoords(); - // clear the canvas - this.canvas.clear(); - // canvas header - this.drawHeaderGroup(); - // canvas content - this.drawContentGroup(); - // canvas footer - this.drawFooterGroup(); - // finishing off - this.wrapCanvas(); - this.setFrameSize(); - this.renderCanvas(); + } + + private loadIPRMCProperties() { + if (this.sssDataObj != undefined) { + // disable domain checkboxes that have no predictions + this.uniqueDomainDatabases = objCache.get('uniqueDomainDatabases') as string[]; + if (!this.uniqueDomainDatabases) { + let proteinIdList: string[] = []; + for (const hit of this.sssDataObj.hits.slice(0, this.numberHits)) { + proteinIdList.push(hit.hit_acc); + } + this.uniqueDomainDatabases = getUniqueIPRMCDomainDatabases(this.iprmcDataObj, proteinIdList); + objCache.put('uniqueDomainDatabases', this.uniqueDomainDatabases); + } + // remove domainDatabases not in the set of unique domainDatabases + for (const db of this.domainDatabaseList) { + if (!this.uniqueDomainDatabases.includes(domainDatabaseNameToString(db))) { + const indx = this.domainDatabaseList.indexOf(db); + if (indx > -1) { + this.domainDatabaseList.splice(indx, 1); + } + } + } } - - private loadInitalProperties() { - this.queryStart = 1; - this.queryEnd = this.sssDataObj.query_len; + } + + private drawHeaderGroup() { + // canvas header + this.topPadding = 2; + let textHeaderGroup: fabric.Object; + textHeaderGroup = objCache.get('textHeaderGroup') as fabric.Object; + if (!textHeaderGroup) { + textHeaderGroup = drawHeaderTextGroup( + this.sssDataObj, + { + fontSize: this.fontSize, + canvasWidth: this.canvasWidth, + }, + this.topPadding + ); + objCache.put('textHeaderGroup', textHeaderGroup); } - - private loadInitialCoords() { - this.startPixels = objCache.get("startPixels") as number; - this.endPixels = objCache.get("endPixels") as number; - if (!this.startPixels && !this.endPixels) { - [this.startPixels, this.endPixels] = getPixelCoords( - this.contentWidth, - this.contentLabelWidth, - this.marginWidth - ); - objCache.put("startPixels", this.startPixels); - objCache.put("endPixels", this.endPixels); - } + this.canvas.add(textHeaderGroup); + + // canvas header (sequence info) + this.topPadding += 45; + let textHeaderLink: fabric.Text; + let textSeqObj: TextType; + textHeaderLink = objCache.get('textHeaderLink') as fabric.Text; + textSeqObj = objCache.get('textHeaderLink_textSeqObj') as TextType; + if (!textHeaderLink) { + [textHeaderLink, textSeqObj] = drawHeaderLinkText(this.sssDataObj, { fontSize: this.fontSize }, this.topPadding); + objCache.put('textHeaderLink', textHeaderLink); + objCache.put('textHeaderLink_textSeqObj', textSeqObj); } - - private loadIPRMCProperties() { - if (this.sssDataObj != undefined) { - // disable domain checkboxes that have no predictions - this.uniqueDomainDatabases = objCache.get( - "uniqueDomainDatabases" - ) as string[]; - if (!this.uniqueDomainDatabases) { - let proteinIdList: string[] = []; - for (const hit of this.sssDataObj.hits.slice( - 0, - this.numberHits - )) { - proteinIdList.push(hit.hit_acc); - } - this.uniqueDomainDatabases = getUniqueIPRMCDomainDatabases( - this.iprmcDataObj, - proteinIdList - ); - objCache.put( - "uniqueDomainDatabases", - this.uniqueDomainDatabases - ); - } - // remove domainDatabases not in the set of unique domainDatabases - for (const db of this.domainDatabaseList) { - if ( - !this.uniqueDomainDatabases.includes( - domainDatabaseNameToString(db) - ) - ) { - const indx = this.domainDatabaseList.indexOf(db); - if (indx > -1) { - this.domainDatabaseList.splice(indx, 1); - } - } - } - } + this.canvas.add(textHeaderLink); + if (!this.staticCanvas) { + if (this.sssDataObj.query_url != null && this.sssDataObj.query_url !== '') { + mouseOverText( + textHeaderLink, + textSeqObj, + this.sssDataObj.query_def, + this.sssDataObj.query_url, + { fontSize: this.fontSize }, + this + ); + mouseDownText(textHeaderLink, this.sssDataObj.query_url, this); + mouseOutText(textHeaderLink, textSeqObj, this); + } } - - private drawHeaderGroup() { - // canvas header - this.topPadding = 2; - let textHeaderGroup: fabric.Object; - textHeaderGroup = objCache.get("textHeaderGroup") as fabric.Object; - if (!textHeaderGroup) { - textHeaderGroup = drawHeaderTextGroup( - this.sssDataObj, - { - fontSize: this.fontSize, - canvasWidth: this.canvasWidth, - }, - this.topPadding - ); - objCache.put("textHeaderGroup", textHeaderGroup); - } - this.canvas.add(textHeaderGroup); - - // canvas header (sequence info) - this.topPadding += 45; - let textHeaderLink: fabric.Text; - let textSeqObj: TextType; - textHeaderLink = objCache.get("textHeaderLink") as fabric.Text; - textSeqObj = objCache.get("textHeaderLink_textSeqObj") as TextType; - if (!textHeaderLink) { - [textHeaderLink, textSeqObj] = drawHeaderLinkText( - this.sssDataObj, - {fontSize: this.fontSize}, - this.topPadding - ); - objCache.put("textHeaderLink", textHeaderLink); - objCache.put("textHeaderLink_textSeqObj", textSeqObj); - } - this.canvas.add(textHeaderLink); - if (!this.staticCanvas) { - if ( - this.sssDataObj.query_url != null && - this.sssDataObj.query_url !== "" - ) { - mouseOverText( - textHeaderLink, - textSeqObj, - this.sssDataObj.query_def, - this.sssDataObj.query_url, - {fontSize: this.fontSize}, - this - ); - mouseDownText(textHeaderLink, this.sssDataObj.query_url, this); - mouseOutText(textHeaderLink, textSeqObj, this); - } - } + } + + private drawContentGroup() { + // canvas content title + this.topPadding += 25; + let titleText: fabric.Text; + titleText = objCache.get('titleText') as fabric.Text; + if (!titleText) { + titleText = drawContentTitleText( + { + fontSize: this.fontSize + 1, + }, + this.topPadding + ); + objCache.put('titleText', titleText); } + this.canvas.add(titleText); - private drawContentGroup() { - // canvas content title - this.topPadding += 25; - let titleText: fabric.Text; - titleText = objCache.get("titleText") as fabric.Text; - if (!titleText) { - titleText = drawContentTitleText( - { - fontSize: this.fontSize + 1, - }, - this.topPadding - ); - objCache.put("titleText", titleText); - } - this.canvas.add(titleText); - - // canvas dynamic content - if (this.sssDataObj.hits.length > 0) { - // domain selection - this.topPadding += 35; - this.drawPredictionsGroup(); + // canvas dynamic content + if (this.sssDataObj.hits.length > 0) { + // domain selection + this.topPadding += 35; + this.drawPredictionsGroup(); - // dynamic content - this.topPadding += 50; - this.drawDynamicContentGroup(); + // dynamic content + this.topPadding += 50; + this.drawDynamicContentGroup(); - // color scale - this.drawColorScaleGroup(); + // color scale + this.drawColorScaleGroup(); + } else { + // text content: "No predictions found!" + this.topPadding += 20; + const noHitsTextGroup = drawNoHitsFoundText( + { + fontSize: this.fontSize, + contentWidth: this.contentWidth, + }, + this.topPadding + ); + this.canvas.add(noHitsTextGroup); + } + } + + private drawPredictionsGroup() { + // Protein Features - Database Selection + let pfLabelText: fabric.Text; + pfLabelText = objCache.get('pfLabelText') as fabric.Text; + if (!pfLabelText) { + pfLabelText = drawProteinFeaturesText( + { + fontSize: this.fontSize, + scaleLabelWidth: this.scaleLabelWidth - 50, + }, + this.topPadding + ); + objCache.put('pfLabelText', pfLabelText); + } + this.canvas.add(pfLabelText); + + // display the domain checkboxes + createDomainCheckbox(this, 'Pfam', this.uniqueDomainDatabases, this.topPadding, this.contentLabelLeftWidth + 190, { + fontSize: this.fontSize, + staticCanvas: this.staticCanvas, + }); + createDomainCheckbox( + this, + 'SUPERFAMILY', + this.uniqueDomainDatabases, + this.topPadding, + this.contentLabelLeftWidth + 260, + { fontSize: this.fontSize, staticCanvas: this.staticCanvas } + ); + createDomainCheckbox(this, 'SMART', this.uniqueDomainDatabases, this.topPadding, this.contentLabelLeftWidth + 390, { + fontSize: this.fontSize, + staticCanvas: this.staticCanvas, + }); + createDomainCheckbox(this, 'HAMAP', this.uniqueDomainDatabases, this.topPadding, this.contentLabelLeftWidth + 480, { + fontSize: this.fontSize, + staticCanvas: this.staticCanvas, + }); + createDomainCheckbox( + this, + 'PANTHER', + this.uniqueDomainDatabases, + this.topPadding, + this.contentLabelLeftWidth + 570, + { fontSize: this.fontSize, staticCanvas: this.staticCanvas } + ); + createDomainCheckbox( + this, + 'PRODOM', + this.uniqueDomainDatabases, + this.topPadding, + this.contentLabelLeftWidth + 680, + { fontSize: this.fontSize, staticCanvas: this.staticCanvas } + ); + createDomainCheckbox( + this, + 'PROSITE profiles', + this.uniqueDomainDatabases, + this.topPadding, + this.contentLabelLeftWidth + 770, + { fontSize: this.fontSize, staticCanvas: this.staticCanvas } + ); + this.topPadding += 30; + createDomainCheckbox(this, 'CDD', this.uniqueDomainDatabases, this.topPadding, this.contentLabelLeftWidth + 190, { + fontSize: this.fontSize, + staticCanvas: this.staticCanvas, + }); + createDomainCheckbox( + this, + 'CATH-Gene3D', + this.uniqueDomainDatabases, + this.topPadding, + this.contentLabelLeftWidth + 260, + { fontSize: this.fontSize, staticCanvas: this.staticCanvas } + ); + createDomainCheckbox(this, 'PIRSF', this.uniqueDomainDatabases, this.topPadding, this.contentLabelLeftWidth + 390, { + fontSize: this.fontSize, + staticCanvas: this.staticCanvas, + }); + createDomainCheckbox( + this, + 'PRINTS', + this.uniqueDomainDatabases, + this.topPadding, + this.contentLabelLeftWidth + 480, + { fontSize: this.fontSize, staticCanvas: this.staticCanvas } + ); + createDomainCheckbox( + this, + 'TIGRFAMs', + this.uniqueDomainDatabases, + this.topPadding, + this.contentLabelLeftWidth + 570, + { fontSize: this.fontSize, staticCanvas: this.staticCanvas } + ); + createDomainCheckbox(this, 'SFLD', this.uniqueDomainDatabases, this.topPadding, this.contentLabelLeftWidth + 680, { + fontSize: this.fontSize, + staticCanvas: this.staticCanvas, + }); + createDomainCheckbox( + this, + 'PROSITE patterns', + this.uniqueDomainDatabases, + this.topPadding, + this.contentLabelLeftWidth + 770, + { fontSize: this.fontSize, staticCanvas: this.staticCanvas } + ); + } + + private drawDynamicContentGroup() { + // draw a new track group per hit + // only display 30 hits by default + // draw only one HSP per hit + let maxIDLen: number = 0; + for (const hit of this.sssDataObj.hits.slice(0, this.numberHits)) { + if (hit.hit_db.length + hit.hit_id.length > maxIDLen) maxIDLen = hit.hit_db.length + hit.hit_id.length; + } + let minScore: number = Number.MAX_VALUE; + let maxScore: number = 0; + let minNotZeroScore: number = Number.MAX_VALUE; + for (const hit of this.sssDataObj.hits.slice(0, this.numberHits)) { + for (const hsp of hit.hit_hsps) { + if (this.colorScheme === ColorSchemeEnum.ncbiblast) { + if (hsp.hsp_bit_score! < minScore) minScore = hsp.hsp_bit_score!; + if (hsp.hsp_bit_score! > maxScore) maxScore = hsp.hsp_bit_score!; + if (hsp.hsp_bit_score! < minNotZeroScore && hsp.hsp_bit_score! > 0.0) minNotZeroScore = hsp.hsp_bit_score!; } else { - // text content: "No predictions found!" - this.topPadding += 20; - const noHitsTextGroup = drawNoHitsFoundText( - { - fontSize: this.fontSize, - contentWidth: this.contentWidth, - }, - this.topPadding - ); - this.canvas.add(noHitsTextGroup); + if (hsp.hsp_expect! < minScore) minScore = hsp.hsp_expect!; + if (hsp.hsp_expect! > maxScore) maxScore = hsp.hsp_expect!; + if (hsp.hsp_expect! < minNotZeroScore && hsp.hsp_expect! > 0.0) minNotZeroScore = hsp.hsp_expect!; } + } } - private drawPredictionsGroup() { - // Protein Features - Database Selection - let pfLabelText: fabric.Text; - pfLabelText = objCache.get("pfLabelText") as fabric.Text; - if (!pfLabelText) { - pfLabelText = drawProteinFeaturesText( - { - fontSize: this.fontSize, - scaleLabelWidth: this.scaleLabelWidth - 50, - }, - this.topPadding - ); - objCache.put("pfLabelText", pfLabelText); + if (this.colorScheme === ColorSchemeEnum.ncbiblast) { + this.gradientSteps = getGradientSteps(minScore, maxScore, minNotZeroScore, this.colorScheme); + } else { + this.gradientSteps = getGradientSteps(minScore, maxScore, minNotZeroScore, this.colorScheme); + } + let tmpNumberHits = 0; + for (const hit of this.sssDataObj.hits) { + tmpNumberHits++; + if (tmpNumberHits <= this.numberHits) { + // Hit ID + Hit Description text tracks + let textObj: TextType; + let spaceText, hitText: fabric.Text; + [spaceText, hitText, textObj] = drawContentSequenceInfoText( + maxIDLen, + hit, + { fontSize: this.fontSize }, + this.topPadding + ); + this.canvas.add(spaceText); + this.canvas.add(hitText); + if (!this.staticCanvas) { + mouseOverText(hitText, textObj, hit.hit_def, hit.hit_url, { fontSize: this.fontSize }, this); + mouseDownText(hitText, hit.hit_url, this); + mouseOutText(hitText, textObj, this); } - this.canvas.add(pfLabelText); - // display the domain checkboxes - createDomainCheckbox( - this, - "Pfam", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 190, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "SUPERFAMILY", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 260, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} + // domain line tracks + const lineTrackGroup = drawLineTracks( + { + startPixels: this.startPixels, + endPixels: this.endPixels, + }, + { strokeWidth: 1 }, + this.topPadding ); - createDomainCheckbox( - this, - "SMART", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 390, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "HAMAP", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 480, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "PANTHER", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 570, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} + this.canvas.add(lineTrackGroup); + + // domain line tracks - legends + this.topPadding += 5; + const textContentFooterGroup = drawContentFooterTextGroup( + { + start: this.queryStart, + end: hit.hit_len, + startPixels: this.startPixels, + endPixels: this.endPixels, + }, + { + fontSize: this.fontSize, + }, + this.topPadding ); - createDomainCheckbox( - this, - "PRODOM", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 680, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "PROSITE profiles", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 770, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - this.topPadding += 30; - createDomainCheckbox( - this, - "CDD", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 190, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "CATH-Gene3D", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 260, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "PIRSF", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 390, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "PRINTS", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 480, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "TIGRFAMs", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 570, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "SFLD", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 680, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} - ); - createDomainCheckbox( - this, - "PROSITE patterns", - this.uniqueDomainDatabases, - this.topPadding, - this.contentLabelLeftWidth + 770, - {fontSize: this.fontSize, staticCanvas: this.staticCanvas} + this.canvas.add(textContentFooterGroup); + this.topPadding += 15; + + // hit (1st HSP) transparent domain + let boxColor: string = 'white'; + let hspStart = 0; + let hspEnd = 0; + for (const hsp of hit.hit_hsps) { + if (hsp.hsp_hit_frame! === '-1') { + hspStart = hsp.hsp_hit_to; + hspEnd = hsp.hsp_hit_from; + } else { + hspStart = hsp.hsp_hit_from; + hspEnd = hsp.hsp_hit_to; + } + if (this.colorScheme === ColorSchemeEnum.ncbiblast) { + boxColor = getRgbColorFixed(hsp.hsp_bit_score!, this.gradientSteps, ncbiBlastGradient); + } else { + boxColor = getRgbColorGradient(hsp.hsp_expect!, this.gradientSteps, defaultGradient); + } + break; + } + let startDomainPixels: number = 0; + let endDomainPixels: number = 0; + [startDomainPixels, endDomainPixels] = getDomainPixelCoords( + this.startPixels, + this.endPixels, + hit.hit_len, + hspStart, + hspEnd, + this.marginWidth ); - } - private drawDynamicContentGroup() { - // draw a new track group per hit - // only display 30 hits by default - // draw only one HSP per hit - let maxIDLen: number = 0; - for (const hit of this.sssDataObj.hits.slice(0, this.numberHits)) { - if (hit.hit_db.length + hit.hit_id.length > maxIDLen) - maxIDLen = hit.hit_db.length + hit.hit_id.length; - } - let minScore: number = Number.MAX_VALUE; - let maxScore: number = 0; - let minNotZeroScore: number = Number.MAX_VALUE; - for (const hit of this.sssDataObj.hits.slice(0, this.numberHits)) { - for (const hsp of hit.hit_hsps) { - if (this.colorScheme === ColorSchemeEnum.ncbiblast) { - if (hsp.hsp_bit_score! < minScore) - minScore = hsp.hsp_bit_score!; - if (hsp.hsp_bit_score! > maxScore) - maxScore = hsp.hsp_bit_score!; - if ( - hsp.hsp_bit_score! < minNotZeroScore && - hsp.hsp_bit_score! > 0.0 - ) - minNotZeroScore = hsp.hsp_bit_score!; - } else { - if (hsp.hsp_expect! < minScore) minScore = hsp.hsp_expect!; - if (hsp.hsp_expect! > maxScore) maxScore = hsp.hsp_expect!; - if ( - hsp.hsp_expect! < minNotZeroScore && - hsp.hsp_expect! > 0.0 - ) - minNotZeroScore = hsp.hsp_expect!; - } - } - } + // unique domain predictions && selected domain Databases + let boxHeight = 0; + let tmpTopPadding = this.topPadding - 15; + if (hit.hit_acc in this.iprmcDataObj) { + if (this.iprmcDataObj[hit.hit_acc]['matches'] !== undefined) { + for (const did of this.iprmcDataObj[hit.hit_acc]['matches']) { + const domain = domainDatabaseNameToString( + this.iprmcDataObj[hit.hit_acc]['match'][did][0]['dbname'] as string + ); + if (this.domainDatabaseList.includes(domain)) { + this.topPadding += 15; + boxHeight += 15; + // domain dashed-line tracks + let dashedLineTrackGroup = drawDomainLineTracks( + { + startPixels: this.startPixels, + endPixels: this.endPixels, + }, + { strokeWidth: 1, strokeDashArray: [1, 5] }, + this.topPadding + ); + this.canvas.add(dashedLineTrackGroup); + dashedLineTrackGroup.sendObjectToBack(); - if (this.colorScheme === ColorSchemeEnum.ncbiblast) { - this.gradientSteps = getGradientSteps( - minScore, - maxScore, - minNotZeroScore, - this.colorScheme - ); - } else { - this.gradientSteps = getGradientSteps( - minScore, - maxScore, - minNotZeroScore, - this.colorScheme - ); - } - let tmpNumberHits = 0; - for (const hit of this.sssDataObj.hits) { - tmpNumberHits++; - if (tmpNumberHits <= this.numberHits) { - // Hit ID + Hit Description text tracks + // draw domain ID text let textObj: TextType; let spaceText, hitText: fabric.Text; - [spaceText, hitText, textObj] = drawContentSequenceInfoText( - maxIDLen, - hit, - {fontSize: this.fontSize}, - this.topPadding + [spaceText, hitText, textObj] = drawContentDomainInfoText( + did.split('_')[1] + ' ►', + { fontSize: this.fontSize }, + this.topPadding ); this.canvas.add(spaceText); this.canvas.add(hitText); + // Domain URL mapping + const domainURL = getDomainURLbyDatabase(did.split('_')[1], domain); if (!this.staticCanvas) { - mouseOverText( - hitText, - textObj, - hit.hit_def, - hit.hit_url, - {fontSize: this.fontSize}, - this - ); - mouseDownText(hitText, hit.hit_url, this); - mouseOutText(hitText, textObj, this); + mouseOverText(hitText, textObj, '', domainURL, { fontSize: this.fontSize }, this); + mouseDownText(hitText, domainURL, this); + mouseOutText(hitText, textObj, this); } - // domain line tracks - const lineTrackGroup = drawLineTracks( - { - startPixels: this.startPixels, - endPixels: this.endPixels, - }, - {strokeWidth: 1}, - this.topPadding - ); - this.canvas.add(lineTrackGroup); - - // domain line tracks - legends - this.topPadding += 5; - const textContentFooterGroup = drawContentFooterTextGroup( - { - start: this.queryStart, - end: hit.hit_len, - startPixels: this.startPixels, - endPixels: this.endPixels, - }, - { - fontSize: this.fontSize, - }, - this.topPadding - ); - this.canvas.add(textContentFooterGroup); - this.topPadding += 15; - - // hit (1st HSP) transparent domain - let boxColor: string = "white"; - let hspStart = 0; - let hspEnd = 0; - for (const hsp of hit.hit_hsps) { - if (hsp.hsp_hit_frame! === "-1") { - hspStart = hsp.hsp_hit_to; - hspEnd = hsp.hsp_hit_from; - } else { - hspStart = hsp.hsp_hit_from; - hspEnd = hsp.hsp_hit_to; - } - if (this.colorScheme === ColorSchemeEnum.ncbiblast) { - boxColor = getRgbColorFixed( - hsp.hsp_bit_score!, - this.gradientSteps, - ncbiBlastGradient - ); - } else { - boxColor = getRgbColorGradient( - hsp.hsp_expect!, - this.gradientSteps, - defaultGradient - ); - } - break; - } - let startDomainPixels: number = 0; - let endDomainPixels: number = 0; - [startDomainPixels, endDomainPixels] = getDomainPixelCoords( + // draw domain Predictions (loop over each prediction) + for (const dp of this.iprmcDataObj[hit.hit_acc]['match'][did]) { + // domain coordinates + let domainStart = dp.start as number; + let domainEnd = dp.end as number; + let startDomainPixels: number = 0; + let endDomainPixels: number = 0; + [startDomainPixels, endDomainPixels] = getDomainPixelCoords( this.startPixels, this.endPixels, hit.hit_len, - hspStart, - hspEnd, + domainStart, + domainEnd, this.marginWidth - ); + ); - // unique domain predictions && selected domain Databases - let boxHeight = 0; - let tmpTopPadding = this.topPadding - 15; - if (hit.hit_acc in this.iprmcDataObj) { - if ( - this.iprmcDataObj[hit.hit_acc]["matches"] !== undefined - ) { - for (const did of this.iprmcDataObj[hit.hit_acc][ - "matches" - ]) { - const domain = domainDatabaseNameToString( - this.iprmcDataObj[hit.hit_acc]["match"][did][0][ - "dbname" - ] as string - ); - if (this.domainDatabaseList.includes(domain)) { - this.topPadding += 15; - boxHeight += 15; - // domain dashed-line tracks - let dashedLineTrackGroup = drawDomainLineTracks( - { - startPixels: this.startPixels, - endPixels: this.endPixels, - }, - {strokeWidth: 1, strokeDashArray: [1, 5]}, - this.topPadding - ); - this.canvas.add(dashedLineTrackGroup); - dashedLineTrackGroup.sendToBack(); - - // draw domain ID text - let textObj: TextType; - let spaceText, hitText: fabric.Text; - [ - spaceText, - hitText, - textObj, - ] = drawContentDomainInfoText( - did.split("_")[1] + " ►", - {fontSize: this.fontSize}, - this.topPadding - ); - this.canvas.add(spaceText); - this.canvas.add(hitText); - // Domain URL mapping - const domainURL = getDomainURLbyDatabase( - did.split("_")[1], - domain - ); - if (!this.staticCanvas) { - mouseOverText( - hitText, - textObj, - "", - domainURL, - {fontSize: this.fontSize}, - this - ); - mouseDownText(hitText, domainURL, this); - mouseOutText(hitText, textObj, this); - } - - // draw domain Predictions (loop over each prediction) - for (const dp of this.iprmcDataObj[hit.hit_acc][ - "match" - ][did]) { - // domain coordinates - let domainStart = dp.start as number; - let domainEnd = dp.end as number; - let startDomainPixels: number = 0; - let endDomainPixels: number = 0; - [ - startDomainPixels, - endDomainPixels, - ] = getDomainPixelCoords( - this.startPixels, - this.endPixels, - hit.hit_len, - domainStart, - domainEnd, - this.marginWidth - ); - - // domain predictions - const dpDomain = drawDomains( - startDomainPixels, - endDomainPixels, - this.topPadding + 10, - colorByDatabaseName(dp.dbname as string) - ); - this.canvas.add(dpDomain); - // Domain hovering and tooltip - if (!this.staticCanvas) { - mouseOverDomain( - dpDomain, - startDomainPixels, - endDomainPixels, - domainStart, - domainEnd, - dp, - { - fontSize: this.fontSize, - }, - this - ); - mouseOutDomain(dpDomain, this); - } - } - } - } - } - } - // draw domain transparent box - boxHeight += 15; - const hitTransparentBox = drawHitTransparentBox( + // domain predictions + const dpDomain = drawDomains( startDomainPixels, endDomainPixels, - tmpTopPadding, - boxColor, - boxHeight - ); - this.canvas.add(hitTransparentBox); - hitTransparentBox.sendToBack(); - - // final padding - this.topPadding += 40; - } else { - // canvas content suppressed output - let supressText: fabric.Text; - supressText = objCache.get("supressText") as fabric.Text; - if (!supressText) { - supressText = drawContentSupressText( - { - fontSize: this.fontSize, - contentWidth: this.contentWidth, - }, - this.topPadding, - this.numberHits + this.topPadding + 10, + colorByDatabaseName(dp.dbname as string) + ); + this.canvas.add(dpDomain); + // Domain hovering and tooltip + if (!this.staticCanvas) { + mouseOverDomain( + dpDomain, + startDomainPixels, + endDomainPixels, + domainStart, + domainEnd, + dp, + { + fontSize: this.fontSize, + }, + this ); - objCache.put("supressText", supressText); + mouseOutDomain(dpDomain, this); + } } - supressText.top = this.topPadding; - this.canvas.add(supressText); - this.topPadding += 40; - break; + } } + } } - } - - private drawColorScaleGroup() { - // Scale Type - const scaleTypeText = drawScaleTypeText( - { - fontSize: this.fontSize, - scaleLabelWidth: this.scaleLabelWidth, - }, - this.topPadding + // draw domain transparent box + boxHeight += 15; + const hitTransparentBox = drawHitTransparentBox( + startDomainPixels, + endDomainPixels, + tmpTopPadding, + boxColor, + boxHeight ); - this.canvas.add(scaleTypeText); - - // Scale Type selection - let textCheckDynObj, textCheckFixObj, textCheckNcbiObj: TextType; - let dynamicBoxText, - dynamicText, - fixedBoxText, - fixedText, - ncbiblastBoxText, - ncbiblastText: fabric.Text; - [ - dynamicBoxText, - dynamicText, - textCheckDynObj, - fixedBoxText, - fixedText, - textCheckFixObj, - ncbiblastBoxText, - ncbiblastText, - textCheckNcbiObj, - ] = drawCheckBoxText( + this.canvas.add(hitTransparentBox); + hitTransparentBox.sendObjectToBack(); + + // final padding + this.topPadding += 40; + } else { + // canvas content suppressed output + let supressText: fabric.Text; + supressText = objCache.get('supressText') as fabric.Text; + if (!supressText) { + supressText = drawContentSupressText( { - colorScheme: this.colorScheme, - fontSize: this.fontSize, - scaleLabelWidth: this.scaleLabelWidth, + fontSize: this.fontSize, + contentWidth: this.contentWidth, }, - this.topPadding - ); - this.canvas.add(dynamicBoxText); - this.canvas.add(dynamicText); - if (!this.staticCanvas) { - mouseOverCheckbox(dynamicBoxText, textCheckDynObj, this); - mouseOutCheckbox( - dynamicBoxText, - textCheckDynObj, - ColorSchemeEnum.dynamic, - this - ); - mouseDownCheckbox(dynamicBoxText, ColorSchemeEnum.dynamic, this); - } - - this.canvas.add(fixedBoxText); - this.canvas.add(fixedText); - if (!this.staticCanvas) { - mouseOverCheckbox(fixedBoxText, textCheckFixObj, this); - mouseOutCheckbox( - fixedBoxText, - textCheckFixObj, - ColorSchemeEnum.fixed, - this - ); - mouseDownCheckbox(fixedBoxText, ColorSchemeEnum.fixed, this); - } - - this.canvas.add(ncbiblastBoxText); - this.canvas.add(ncbiblastText); - if (!this.staticCanvas) { - mouseOverCheckbox(ncbiblastBoxText, textCheckNcbiObj, this); - mouseOutCheckbox( - ncbiblastBoxText, - textCheckNcbiObj, - ColorSchemeEnum.ncbiblast, - this - ); - mouseDownCheckbox( - ncbiblastBoxText, - ColorSchemeEnum.ncbiblast, - this - ); + this.topPadding, + this.numberHits + ); + objCache.put('supressText', supressText); } + supressText.top = this.topPadding; + this.canvas.add(supressText); + this.topPadding += 40; + break; + } + } + } + + private drawColorScaleGroup() { + // Scale Type + const scaleTypeText = drawScaleTypeText( + { + fontSize: this.fontSize, + scaleLabelWidth: this.scaleLabelWidth, + }, + this.topPadding + ); + this.canvas.add(scaleTypeText); + + // Scale Type selection + let textCheckDynObj, textCheckFixObj, textCheckNcbiObj: TextType; + let dynamicBoxText, dynamicText, fixedBoxText, fixedText, ncbiblastBoxText, ncbiblastText: fabric.Text; + [ + dynamicBoxText, + dynamicText, + textCheckDynObj, + fixedBoxText, + fixedText, + textCheckFixObj, + ncbiblastBoxText, + ncbiblastText, + textCheckNcbiObj, + ] = drawCheckBoxText( + { + colorScheme: this.colorScheme, + fontSize: this.fontSize, + scaleLabelWidth: this.scaleLabelWidth, + }, + this.topPadding + ); + this.canvas.add(dynamicBoxText); + this.canvas.add(dynamicText); + if (!this.staticCanvas) { + mouseOverCheckbox(dynamicBoxText, textCheckDynObj, this); + mouseOutCheckbox(dynamicBoxText, textCheckDynObj, ColorSchemeEnum.dynamic, this); + mouseDownCheckbox(dynamicBoxText, ColorSchemeEnum.dynamic, this); + } - // E-value/Bit Score Text - this.topPadding += 25; - const scaleScoreText = drawScaleScoreText( - { - fontSize: this.fontSize, - scaleLabelWidth: this.scaleLabelWidth, - colorScheme: this.colorScheme, - }, - this.topPadding - ); - this.canvas.add(scaleScoreText); - - // E-value/Bit score Color Gradient - const colorScale = drawScaleColorGradient( - { - scaleWidth: this.scaleWidth, - scaleLabelWidth: this.scaleLabelWidth, - colorScheme: this.colorScheme, - }, - this.topPadding - ); - - this.canvas.add(colorScale); - - // E-value/Bit score Axis (line and ticks) - if (this.colorScheme === ColorSchemeEnum.ncbiblast) { - const oneFifthGradPixels = - (this.scaleLabelWidth + - this.scaleWidth - - this.scaleLabelWidth) / - 5; - this.topPadding += 15; - const axisGroup = drawLineAxis6Buckets( - this.scaleLabelWidth, - this.scaleLabelWidth + oneFifthGradPixels, - this.scaleLabelWidth + oneFifthGradPixels * 2, - this.scaleLabelWidth + oneFifthGradPixels * 3, - this.scaleLabelWidth + oneFifthGradPixels * 4, - this.scaleLabelWidth + this.scaleWidth, - {strokeWidth: 1}, - this.topPadding - ); - this.canvas.add(axisGroup); - - // Bits scale tick mark labels - this.topPadding += 5; - const tickLabels5Group = drawScaleTick5LabelsGroup( - this.gradientSteps, - oneFifthGradPixels, - { - fontSize: this.fontSize, - scaleWidth: this.scaleWidth, - scaleLabelWidth: this.scaleLabelWidth, - }, - this.topPadding - ); - this.canvas.add(tickLabels5Group); - } else { - const oneForthGradPixels = - (this.scaleLabelWidth + - this.scaleWidth - - this.scaleLabelWidth) / - 4; - this.topPadding += 15; - const axisGroup = drawLineAxis5Buckets( - this.scaleLabelWidth, - this.scaleLabelWidth + oneForthGradPixels, - this.scaleLabelWidth + oneForthGradPixels * 2, - this.scaleLabelWidth + oneForthGradPixels * 3, - this.scaleLabelWidth + this.scaleWidth, - {strokeWidth: 1}, - this.topPadding - ); - this.canvas.add(axisGroup); - - // E-value scale tick mark labels - this.topPadding += 5; - const tickLabels4Group = drawScaleTick4LabelsGroup( - this.gradientSteps, - oneForthGradPixels, - { - fontSize: this.fontSize, - scaleWidth: this.scaleWidth, - scaleLabelWidth: this.scaleLabelWidth, - }, - this.topPadding - ); - this.canvas.add(tickLabels4Group); - } + this.canvas.add(fixedBoxText); + this.canvas.add(fixedText); + if (!this.staticCanvas) { + mouseOverCheckbox(fixedBoxText, textCheckFixObj, this); + mouseOutCheckbox(fixedBoxText, textCheckFixObj, ColorSchemeEnum.fixed, this); + mouseDownCheckbox(fixedBoxText, ColorSchemeEnum.fixed, this); } - private drawFooterGroup() { - this.topPadding += 30; - let copyrightText: fabric.Text; - let textFooterObj: TextType; - [copyrightText, textFooterObj] = drawFooterText( - { - fontSize: this.fontSize, - }, - this.topPadding - ); - this.canvas.add(copyrightText); + this.canvas.add(ncbiblastBoxText); + this.canvas.add(ncbiblastText); + if (!this.staticCanvas) { + mouseOverCheckbox(ncbiblastBoxText, textCheckNcbiObj, this); + mouseOutCheckbox(ncbiblastBoxText, textCheckNcbiObj, ColorSchemeEnum.ncbiblast, this); + mouseDownCheckbox(ncbiblastBoxText, ColorSchemeEnum.ncbiblast, this); } - private wrapCanvas() { - this.topPadding += 20; - // topPadding always overrides the canvasHeight - this.canvasHeight = this.topPadding; - if (this.canvasWrapperStroke) { - // final canvas wrapper stroke - const canvasWrapper = drawCanvasWrapperStroke({ - canvasWidth: this.canvasWidth, - canvasHeight: this.canvasHeight, - }); - this.canvas.add(canvasWrapper); - } + // E-value/Bit Score Text + this.topPadding += 25; + const scaleScoreText = drawScaleScoreText( + { + fontSize: this.fontSize, + scaleLabelWidth: this.scaleLabelWidth, + colorScheme: this.colorScheme, + }, + this.topPadding + ); + this.canvas.add(scaleScoreText); + + // E-value/Bit score Color Gradient + const colorScale = drawScaleColorGradient( + { + scaleWidth: this.scaleWidth, + scaleLabelWidth: this.scaleLabelWidth, + colorScheme: this.colorScheme, + }, + this.topPadding + ); + + this.canvas.add(colorScale); + + // E-value/Bit score Axis (line and ticks) + if (this.colorScheme === ColorSchemeEnum.ncbiblast) { + const oneFifthGradPixels = (this.scaleLabelWidth + this.scaleWidth - this.scaleLabelWidth) / 5; + this.topPadding += 15; + const axisGroup = drawLineAxis6Buckets( + this.scaleLabelWidth, + this.scaleLabelWidth + oneFifthGradPixels, + this.scaleLabelWidth + oneFifthGradPixels * 2, + this.scaleLabelWidth + oneFifthGradPixels * 3, + this.scaleLabelWidth + oneFifthGradPixels * 4, + this.scaleLabelWidth + this.scaleWidth, + { strokeWidth: 1 }, + this.topPadding + ); + this.canvas.add(axisGroup); + + // Bits scale tick mark labels + this.topPadding += 5; + const tickLabels5Group = drawScaleTick5LabelsGroup( + this.gradientSteps, + oneFifthGradPixels, + { + fontSize: this.fontSize, + scaleWidth: this.scaleWidth, + scaleLabelWidth: this.scaleLabelWidth, + }, + this.topPadding + ); + this.canvas.add(tickLabels5Group); + } else { + const oneForthGradPixels = (this.scaleLabelWidth + this.scaleWidth - this.scaleLabelWidth) / 4; + this.topPadding += 15; + const axisGroup = drawLineAxis5Buckets( + this.scaleLabelWidth, + this.scaleLabelWidth + oneForthGradPixels, + this.scaleLabelWidth + oneForthGradPixels * 2, + this.scaleLabelWidth + oneForthGradPixels * 3, + this.scaleLabelWidth + this.scaleWidth, + { strokeWidth: 1 }, + this.topPadding + ); + this.canvas.add(axisGroup); + + // E-value scale tick mark labels + this.topPadding += 5; + const tickLabels4Group = drawScaleTick4LabelsGroup( + this.gradientSteps, + oneForthGradPixels, + { + fontSize: this.fontSize, + scaleWidth: this.scaleWidth, + scaleLabelWidth: this.scaleLabelWidth, + }, + this.topPadding + ); + this.canvas.add(tickLabels4Group); + } + } + + private drawFooterGroup() { + this.topPadding += 30; + let copyrightText: fabric.Text; + let textFooterObj: TextType; + [copyrightText, textFooterObj] = drawFooterText( + { + fontSize: this.fontSize, + }, + this.topPadding + ); + this.canvas.add(copyrightText); + } + + private wrapCanvas() { + this.topPadding += 20; + // topPadding always overrides the canvasHeight + this.canvasHeight = this.topPadding; + if (this.canvasWrapperStroke) { + // final canvas wrapper stroke + const canvasWrapper = drawCanvasWrapperStroke({ + canvasWidth: this.canvasWidth, + canvasHeight: this.canvasHeight, + }); + this.canvas.add(canvasWrapper); } + } } diff --git a/src/functional-predictions-webcomponent.ts b/src/functional-predictions-webcomponent.ts index d3599c2..6a96241 100644 --- a/src/functional-predictions-webcomponent.ts +++ b/src/functional-predictions-webcomponent.ts @@ -1,87 +1,74 @@ -import {LitElement, html} from "lit-element/lit-element.js"; -import {property, customElement} from "lit/decorators.js"; -import {RenderOptions, ColorSchemeEnum} from "./custom-types"; +import { LitElement, html } from 'lit-element/lit-element.js'; +import { property, customElement } from 'lit/decorators.js'; +import { RenderOptions, ColorSchemeEnum } from './custom-types'; import { - validateSubmittedJobIdInput, - validateSubmittedDbfetchInput, - getIPRMCDataModelFlatFromXML, - fetchData, - dataAsType, -} from "./other-utilities"; -import {FunctionalPredictions} from "./functional-predictions-app"; + validateSubmittedJobIdInput, + validateSubmittedDbfetchInput, + getIPRMCDataModelFlatFromXML, + fetchData, + dataAsType, +} from './other-utilities'; +import { FunctionalPredictions } from './functional-predictions-app'; -@customElement("jd-functional-predictions") +@customElement('jd-functional-predictions') export class CanvasRendererComponent extends LitElement { - @property({type: String}) data = ""; - @property({type: String}) colorScheme = "dynamic"; - @property({type: Number}) numberHits = 30; - @property({type: Boolean}) canvasWrapperStroke = true; + @property({ type: String }) data = ''; + @property({ type: String }) colorScheme = 'dynamic'; + @property({ type: Number }) numberHits = 30; + @property({ type: Boolean }) canvasWrapperStroke = true; - constructor() { - super(); - } - - async render() { - const renderOptions: RenderOptions = { - colorScheme: this.colorScheme as ColorSchemeEnum, - numberHits: this.numberHits, - canvasWrapperStroke: this.canvasWrapperStroke, - }; - - // Checks to find if canvas element exist (with id="canvas") - // if not, creates it and appends it to body - const canvasElement = document.getElementById( - "canvas" - )! as HTMLCanvasElement; - if (canvasElement === null) { - const newDiv = document.createElement("div"); - newDiv.id = "canvas-wrapper"; - const newCanvas = document.createElement("canvas"); - newCanvas.id = "canvas"; - newDiv.appendChild(newCanvas); - document.body.appendChild(newDiv); - } + constructor() { + super(); + } - // loading the JSON Data - const sssJsonData = validateSubmittedJobIdInput(this.data); - const sssJsonResponse = await fetchData(sssJsonData); - const sssDataObj = dataAsType(sssJsonResponse, "SSSResultModel"); - // jobID has been validated - let iprmcXmlData; - if (this.data === - "mock_jobid-I20200317-103136-0485-5599422-np2" - ) { - iprmcXmlData = "https://raw.githubusercontent.com/ebi-jdispatcher/jdispatcher-viewers/master/src/testdata/iprmc.xml"; - } else { - iprmcXmlData = validateSubmittedDbfetchInput(sssDataObj); - } - const iprmcXmlResponse = await fetchData(iprmcXmlData, "xml"); - // convert XML into Flattened JSON - const iprmcJSONResponse = getIPRMCDataModelFlatFromXML( - iprmcXmlResponse as string - ); - const iprmcDataObj = dataAsType( - iprmcJSONResponse, - "IPRMCResultModelFlat" - ); + async render() { + const renderOptions: RenderOptions = { + colorScheme: this.colorScheme as ColorSchemeEnum, + numberHits: this.numberHits, + canvasWrapperStroke: this.canvasWrapperStroke, + }; - // New JD Viewers Fabricjs Canvas - new FunctionalPredictions( - "canvas", - sssDataObj, - iprmcDataObj, - renderOptions - ).render(); - return html` ${this.canvasDivTemplate} `; + // Checks to find if canvas element exist (with id="canvas") + // if not, creates it and appends it to body + const canvasElement = document.getElementById('canvas')! as HTMLCanvasElement; + if (canvasElement === null) { + const newDiv = document.createElement('div'); + newDiv.id = 'canvas-wrapper'; + const newCanvas = document.createElement('canvas'); + newCanvas.id = 'canvas'; + newDiv.appendChild(newCanvas); + document.body.appendChild(newDiv); } - get canvasDivTemplate() { - return html``; + // loading the JSON Data + const sssJsonData = validateSubmittedJobIdInput(this.data); + const sssJsonResponse = await fetchData(sssJsonData); + const sssDataObj = dataAsType(sssJsonResponse, 'SSSResultModel'); + // jobID has been validated + let iprmcXmlData; + if (this.data === 'mock_jobid-I20200317-103136-0485-5599422-np2') { + iprmcXmlData = + 'https://raw.githubusercontent.com/ebi-jdispatcher/jdispatcher-viewers/master/src/testdata/iprmc.xml'; + } else { + iprmcXmlData = validateSubmittedDbfetchInput(sssDataObj); } + const iprmcXmlResponse = await fetchData(iprmcXmlData, 'xml'); + // convert XML into Flattened JSON + const iprmcJSONResponse = getIPRMCDataModelFlatFromXML(iprmcXmlResponse as string); + const iprmcDataObj = dataAsType(iprmcJSONResponse, 'IPRMCResultModelFlat'); + + // New JD Viewers Fabricjs Canvas + new FunctionalPredictions('canvas', sssDataObj, iprmcDataObj, renderOptions).render(); + return html` ${this.canvasDivTemplate} `; + } + + get canvasDivTemplate() { + return html``; + } } declare global { - interface HTMLElementTagNameMap { - "jd-functional-predictions": CanvasRendererComponent; - } + interface HTMLElementTagNameMap { + 'jd-functional-predictions': CanvasRendererComponent; + } } diff --git a/src/index.ts b/src/index.ts index 8d73262..5a6333e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,263 +1,210 @@ -import svgToMiniDataURI from "mini-svg-data-uri"; -import {VisualOutput} from "./visual-output-app"; -import {FunctionalPredictions} from "./functional-predictions-app"; -import {ColorSchemeEnum, jobIdDefaults} from "./custom-types"; +import svgToMiniDataURI from 'mini-svg-data-uri'; +import { VisualOutput } from './visual-output-app'; +import { FunctionalPredictions } from './functional-predictions-app'; +import { ColorSchemeEnum, jobIdDefaults } from './custom-types'; import { - validateJobId, - validateSubmittedJobIdInput, - validateSubmittedDbfetchInput, - fetchData, - dataAsType, - getIPRMCDataModelFlatFromXML, -} from "./other-utilities"; + validateJobId, + validateSubmittedJobIdInput, + validateSubmittedDbfetchInput, + fetchData, + dataAsType, + getIPRMCDataModelFlatFromXML, +} from './other-utilities'; interface InstanceObjType { - jobId: string; - data: string; - submitter: string; + jobId: string; + data: string; + submitter: string; } type Listener = (items: InstanceObjType) => void; interface SubmitEvent { - explicitOriginalTarget: HTMLElement; - submitter: HTMLButtonElement; + explicitOriginalTarget: HTMLElement; + submitter: HTMLButtonElement; } // Canvas State Management class CanvasState { - private canvasInstance: InstanceObjType; - private static instance: CanvasState; - private listener: Listener = () => { - }; - private jobIds: string[] = []; - private submitterName: string = ""; - - private constructor() { - } - - static getInstance() { - if (this.instance) { - return this.instance; - } else { - this.instance = new CanvasState(); - return this.instance; - } - } - - addListener(listenerFn: Listener) { - this.listener = listenerFn; + private canvasInstance: InstanceObjType; + private static instance: CanvasState; + private listener: Listener = () => {}; + private jobIds: string[] = []; + private submitterName: string = ''; + + private constructor() {} + + static getInstance() { + if (this.instance) { + return this.instance; + } else { + this.instance = new CanvasState(); + return this.instance; } - - addCanvas(jobId: string, data: string, submitter: string) { - if ( - this.jobIds.length === 0 || - !this.jobIds.includes(jobId) || - submitter !== this.submitterName - ) { - this.submitterName = submitter; - this.jobIds.push(jobId); - this.canvasInstance = { - jobId: jobId, - data: data, - submitter: submitter, - }; - this.listener(this.canvasInstance); - } + } + + addListener(listenerFn: Listener) { + this.listener = listenerFn; + } + + addCanvas(jobId: string, data: string, submitter: string) { + if (this.jobIds.length === 0 || !this.jobIds.includes(jobId) || submitter !== this.submitterName) { + this.submitterName = submitter; + this.jobIds.push(jobId); + this.canvasInstance = { + jobId: jobId, + data: data, + submitter: submitter, + }; + this.listener(this.canvasInstance); } + } } const canvasInstance = CanvasState.getInstance(); -function autobind( - _target: any, - _methodName: string, - descriptor: PropertyDescriptor -) { - const originalMethod = descriptor.value; - const adjDescriptor: PropertyDescriptor = { - configurable: true, - get() { - const boundFn = originalMethod.bind(this); - return boundFn; - }, - }; - return adjDescriptor; +function autobind(_target: any, _methodName: string, descriptor: PropertyDescriptor) { + const originalMethod = descriptor.value; + const adjDescriptor: PropertyDescriptor = { + configurable: true, + get() { + const boundFn = originalMethod.bind(this); + return boundFn; + }, + }; + return adjDescriptor; } // jobId Input Form class JobIdInputForm { - private templateElement: HTMLTemplateElement; - private hostElement: HTMLDivElement; - private element: HTMLFormElement; - private jobIdElement: HTMLInputElement; - public jobId: string = ""; - - constructor() { - this.templateElement = document.getElementById( - "input-jobid" - )! as HTMLTemplateElement; - this.hostElement = document.getElementById( - "jd-viewers-app" - )! as HTMLDivElement; - if (this.templateElement !== null) { - const importedHTMLcontent = document.importNode( - this.templateElement.content, - true - ); - this.element = importedHTMLcontent.firstElementChild as HTMLFormElement; - - this.jobIdElement = this.element.querySelector( - "#jobid" - )! as HTMLInputElement; - - this.submitListener(); - this.renderForm(); - } + private templateElement: HTMLTemplateElement; + private hostElement: HTMLDivElement; + private element: HTMLFormElement; + private jobIdElement: HTMLInputElement; + public jobId: string = ''; + + constructor() { + this.templateElement = document.getElementById('input-jobid')! as HTMLTemplateElement; + this.hostElement = document.getElementById('jd-viewers-app')! as HTMLDivElement; + if (this.templateElement !== null) { + const importedHTMLcontent = document.importNode(this.templateElement.content, true); + this.element = importedHTMLcontent.firstElementChild as HTMLFormElement; + + this.jobIdElement = this.element.querySelector('#jobid')! as HTMLInputElement; + + this.submitListener(); + this.renderForm(); } - - private submitListener() { - this.element.addEventListener("submit", this.submitHandler); - } - - private renderForm() { - this.hostElement.insertAdjacentElement("afterbegin", this.element); - } - - @autobind - private submitHandler(event: Event) { - event.preventDefault(); - const submittedEvent = (event as unknown) as SubmitEvent; - const jobId = this.jobIdElement.value.trim(); - let formValidatable = {...jobIdDefaults}; - formValidatable.value = jobId; - - if (validateJobId(formValidatable)) { - if (jobId === "mock_jobid-I20200317-103136-0485-5599422-np2") { - canvasInstance.addCanvas( - jobId, - "testdata/ncbiblast.json", - submittedEvent.submitter.name.trim() - ); - } else { - canvasInstance.addCanvas( - jobId, - jobId, - submittedEvent.submitter.name.trim() - ); - return; - } - } else { - alert("The jobId provided is not valid!"); - return; - } + } + + private submitListener() { + this.element.addEventListener('submit', this.submitHandler); + } + + private renderForm() { + this.hostElement.insertAdjacentElement('afterbegin', this.element); + } + + @autobind + private submitHandler(event: Event) { + event.preventDefault(); + const submittedEvent = event as unknown as SubmitEvent; + const jobId = this.jobIdElement.value.trim(); + let formValidatable = { ...jobIdDefaults }; + formValidatable.value = jobId; + + if (validateJobId(formValidatable)) { + if (jobId === 'mock_jobid-I20200317-103136-0485-5599422-np2') { + canvasInstance.addCanvas(jobId, 'testdata/ncbiblast.json', submittedEvent.submitter.name.trim()); + } else { + canvasInstance.addCanvas(jobId, jobId, submittedEvent.submitter.name.trim()); + return; + } + } else { + alert('The jobId provided is not valid!'); + return; } + } } // Fabricjs Render Class class FabricjsRenderer { - private templateElement: HTMLTemplateElement; - private hostElement: HTMLDivElement; - private elementCanvas: HTMLDivElement; - private canvasInstance: InstanceObjType; - - constructor() { - this.templateElement = document.getElementById( - "jd-viewers-output" - )! as HTMLTemplateElement; - this.hostElement = document.getElementById( - "jd-viewers-app" - )! as HTMLDivElement; - if (this.templateElement !== null) { - const importedHTMLcontent = document.importNode( - this.templateElement.content, - true - ); - this.elementCanvas = importedHTMLcontent.firstElementChild as HTMLDivElement; - - canvasInstance.addListener((canvasInstance: InstanceObjType) => { - this.canvasInstance = canvasInstance; - this.renderCanvas(); - }); - } + private templateElement: HTMLTemplateElement; + private hostElement: HTMLDivElement; + private elementCanvas: HTMLDivElement; + private canvasInstance: InstanceObjType; + + constructor() { + this.templateElement = document.getElementById('jd-viewers-output')! as HTMLTemplateElement; + this.hostElement = document.getElementById('jd-viewers-app')! as HTMLDivElement; + if (this.templateElement !== null) { + const importedHTMLcontent = document.importNode(this.templateElement.content, true); + this.elementCanvas = importedHTMLcontent.firstElementChild as HTMLDivElement; + + canvasInstance.addListener((canvasInstance: InstanceObjType) => { + this.canvasInstance = canvasInstance; + this.renderCanvas(); + }); } - - private async renderCanvas() { - this.hostElement.insertAdjacentElement("beforeend", this.elementCanvas); - let fabricjs: VisualOutput | FunctionalPredictions; - const sssJsonData = validateSubmittedJobIdInput( - this.canvasInstance.data - ); - const sssJsonResponse = await fetchData(sssJsonData); - const dataObj = dataAsType(sssJsonResponse, "SSSResultModel"); - if (this.canvasInstance.submitter === "visual-output") { - fabricjs = new VisualOutput("canvas", dataObj, { - colorScheme: ColorSchemeEnum.dynamic, - numberHits: 100, - numberHsps: 10, - logSkippedHsps: true, - canvasWrapperStroke: true, - }); - fabricjs.render(); - } else if (this.canvasInstance.submitter === "functional-predictions") { - let iprmcXmlData; - if ( - this.canvasInstance.jobId === - "mock_jobid-I20200317-103136-0485-5599422-np2" - ) { - iprmcXmlData = "testdata/iprmc.xml"; - } else { - iprmcXmlData = validateSubmittedDbfetchInput(dataObj); - } - const iprmcXmlResponse = await fetchData(iprmcXmlData, "xml"); - // convert XML into Flattened JSON - const iprmcJSONResponse = getIPRMCDataModelFlatFromXML( - iprmcXmlResponse as string - ); - const iprmcDataObj = dataAsType( - iprmcJSONResponse, - "IPRMCResultModelFlat" - ); - - fabricjs = new FunctionalPredictions( - "canvas", - dataObj, - iprmcDataObj, - { - colorScheme: ColorSchemeEnum.dynamic, - numberHits: 30, - canvasWrapperStroke: true, - } - ); - fabricjs.render(); - } - // export as SVG and PNG - document.getElementById("btn-svg")!.onclick = function () { - const img: HTMLImageElement = document.getElementById( - "svg" - ) as HTMLImageElement; - img.src = svgToMiniDataURI(fabricjs!.canvas.toSVG().toString()); - // remove canvas-wrapper - const el: HTMLElement = document.getElementById("canvas-wrapper")!; - el.parentNode?.removeChild(el); - }; - document.getElementById("btn-png")!.onclick = function () { - const img: HTMLImageElement = document.getElementById( - "png" - ) as HTMLImageElement; - img.src = fabricjs!.canvas - .toDataURL({ - format: "png", - enableRetinaScaling: true, - withoutTransform: true, - }) - .toString(); - img.width = fabricjs.canvas.getWidth(); - // remove canvas-wrapper - const el: HTMLElement = document.getElementById("canvas-wrapper")!; - el.parentNode?.removeChild(el); - }; + } + + private async renderCanvas() { + this.hostElement.insertAdjacentElement('beforeend', this.elementCanvas); + let fabricjs: VisualOutput | FunctionalPredictions; + const sssJsonData = validateSubmittedJobIdInput(this.canvasInstance.data); + const sssJsonResponse = await fetchData(sssJsonData); + const dataObj = dataAsType(sssJsonResponse, 'SSSResultModel'); + if (this.canvasInstance.submitter === 'visual-output') { + fabricjs = new VisualOutput('canvas', dataObj, { + colorScheme: ColorSchemeEnum.dynamic, + numberHits: 100, + numberHsps: 10, + logSkippedHsps: true, + canvasWrapperStroke: true, + }); + fabricjs.render(); + } else if (this.canvasInstance.submitter === 'functional-predictions') { + let iprmcXmlData; + if (this.canvasInstance.jobId === 'mock_jobid-I20200317-103136-0485-5599422-np2') { + iprmcXmlData = 'testdata/iprmc.xml'; + } else { + iprmcXmlData = validateSubmittedDbfetchInput(dataObj); + } + const iprmcXmlResponse = await fetchData(iprmcXmlData, 'xml'); + // convert XML into Flattened JSON + const iprmcJSONResponse = getIPRMCDataModelFlatFromXML(iprmcXmlResponse as string); + const iprmcDataObj = dataAsType(iprmcJSONResponse, 'IPRMCResultModelFlat'); + + fabricjs = new FunctionalPredictions('canvas', dataObj, iprmcDataObj, { + colorScheme: ColorSchemeEnum.dynamic, + numberHits: 30, + canvasWrapperStroke: true, + }); + fabricjs.render(); } + // export as SVG and PNG + document.getElementById('btn-svg')!.onclick = function () { + const img: HTMLImageElement = document.getElementById('svg') as HTMLImageElement; + img.src = svgToMiniDataURI(fabricjs!.canvas.toSVG().toString()); + // remove canvas-wrapper + const el: HTMLElement = document.getElementById('canvas-wrapper')!; + el.parentNode?.removeChild(el); + }; + document.getElementById('btn-png')!.onclick = function () { + const img: HTMLImageElement = document.getElementById('png') as HTMLImageElement; + img.src = fabricjs!.canvas + .toDataURL({ + format: 'png', + enableRetinaScaling: true, + withoutTransform: true, + }) + .toString(); + img.width = fabricjs.canvas.getWidth(); + // remove canvas-wrapper + const el: HTMLElement = document.getElementById('canvas-wrapper')!; + el.parentNode?.removeChild(el); + }; + } } new JobIdInputForm(); diff --git a/src/jd-viewers-cli.ts b/src/jd-viewers-cli.ts index 0534a68..68a1311 100644 --- a/src/jd-viewers-cli.ts +++ b/src/jd-viewers-cli.ts @@ -1,276 +1,227 @@ -import chalk from "chalk"; -import figlet from "figlet"; -import fetch from "node-fetch"; -import {Command} from "commander"; -import {promisify} from "util"; -import * as fs from "fs"; -import * as path from "path"; -import {VisualOutput} from "./visual-output-app"; -import {FunctionalPredictions} from "./functional-predictions-app"; -import {ColorSchemeEnum} from "./custom-types"; +import chalk from 'chalk'; +import figlet from 'figlet'; +import fetch from 'node-fetch'; +import { Command } from 'commander'; +import { promisify } from 'util'; +import * as fs from 'fs'; +import * as path from 'path'; +import { VisualOutput } from './visual-output-app'; +import { FunctionalPredictions } from './functional-predictions-app'; +import { ColorSchemeEnum } from './custom-types'; import { - dataAsType, - validateSubmittedJobIdInput, - validateSubmittedDbfetchInput, - getIPRMCDataModelFlatFromXML, -} from "./other-utilities"; + dataAsType, + validateSubmittedJobIdInput, + validateSubmittedDbfetchInput, + getIPRMCDataModelFlatFromXML, +} from './other-utilities'; async function fetchDataToFile(url: string, outfile: string) { - const writeFilePromise = promisify(fs.writeFile); - return fetch(url) - .then((x) => x.arrayBuffer()) - .then((x) => writeFilePromise(outfile, Buffer.from(x))) - .catch((error) => { - console.log(error); - process.exit(); - }); + const writeFilePromise = promisify(fs.writeFile); + return fetch(url) + .then(x => x.arrayBuffer()) + .then(x => writeFilePromise(outfile, Buffer.from(x))) + .catch(error => { + console.log(error); + process.exit(); + }); } function loadDataFromFile(file: string, format: string) { - if (format === "json") { - try { - return JSON.parse(fs.readFileSync(file, "utf8")); - } catch { - console.log( - `Unable to load the JSON file\n${file}\n` + - "The jobId might be 'not found' " + - "(jobs data are only available for 7 days)!" - ); - } - } else { - return fs.readFileSync(file, "utf8"); + if (format === 'json') { + try { + return JSON.parse(fs.readFileSync(file, 'utf8')); + } catch { + console.log( + `Unable to load the JSON file\n${file}\n` + + "The jobId might be 'not found' " + + '(jobs data are only available for 7 days)!' + ); } + } else { + return fs.readFileSync(file, 'utf8'); + } } async function cliHandler() { - if (!process.argv.slice(2).length) { - console.log( - chalk.green( - figlet.textSync("jd-viewers-cli", { - horizontalLayout: "default", - }) - ) - ); - console.log(""); - program.outputHelp(); - } else { - const programopts = program.opts(); - if (programopts.verbose) { - console.log("Running jdispatcher-viewers-cli..."); - console.log("Your options were:"); - console.log(process.argv); - } - let cmd = ""; - let cmdIndx = 0; - if (program.args[0] === "vo" || program.args[0] === "visual-output") { - cmd = "vo"; - } else if ( - program.args[0] === "fp" || - program.args[0] === "functional-predictions" - ) { - cmd = "fp"; - cmdIndx = 1; - } - let command = program.commands[cmdIndx].opts(); + if (!process.argv.slice(2).length) { + console.log( + chalk.green( + figlet.textSync('jd-viewers-cli', { + horizontalLayout: 'default', + }) + ) + ); + console.log(''); + program.outputHelp(); + } else { + const programopts = program.opts(); + if (programopts.verbose) { + console.log('Running jdispatcher-viewers-cli...'); + console.log('Your options were:'); + console.log(process.argv); + } + let cmd = ''; + let cmdIndx = 0; + if (program.args[0] === 'vo' || program.args[0] === 'visual-output') { + cmd = 'vo'; + } else if (program.args[0] === 'fp' || program.args[0] === 'functional-predictions') { + cmd = 'fp'; + cmdIndx = 1; + } + let command = program.commands[cmdIndx].opts(); - // Process input JobID - let jsonFile: string; - let sssJsonResponse: any; - let sssDataObj: any; - if (command.in === "mock_jobid-I20200317-103136-0485-5599422-np2") { - // local file - jsonFile = path.join( - process.cwd(), - "./src/testdata/ncbiblast.json" - ); - } else { - // validate input as a valid JobID, as a file path or URL - // if JobID, full service URL is returned - const sssJsonData = validateSubmittedJobIdInput(command.in); - if (sssJsonData.startsWith("http")) { - // download the JSON file - jsonFile = path.join(process.cwd(), `${command.in}.json`); - await fetchDataToFile(sssJsonData, jsonFile); - console.log(sssJsonData); - console.log(jsonFile); - } else { - // assumes is a valid file - if (!path.isAbsolute(command.in)) { - jsonFile = path.join(process.cwd(), command.in); - } else { - jsonFile = command.in; - } - } - } - if (fs.existsSync(jsonFile)) { - sssJsonResponse = loadDataFromFile(jsonFile, "json"); - sssDataObj = dataAsType(sssJsonResponse, "SSSResultModel"); + // Process input JobID + let jsonFile: string; + let sssJsonResponse: any; + let sssDataObj: any; + if (command.in === 'mock_jobid-I20200317-103136-0485-5599422-np2') { + // local file + jsonFile = path.join(process.cwd(), './src/testdata/ncbiblast.json'); + } else { + // validate input as a valid JobID, as a file path or URL + // if JobID, full service URL is returned + const sssJsonData = validateSubmittedJobIdInput(command.in); + if (sssJsonData.startsWith('http')) { + // download the JSON file + jsonFile = path.join(process.cwd(), `${command.in}.json`); + await fetchDataToFile(sssJsonData, jsonFile); + console.log(sssJsonData); + console.log(jsonFile); + } else { + // assumes is a valid file + if (!path.isAbsolute(command.in)) { + jsonFile = path.join(process.cwd(), command.in); } else { - console.log("JobID provided is not valid, or file not readable!"); - process.exit(); - } - if (sssDataObj === undefined) { - console.log("Failed to get the SSS JSON data!"); - process.exit(); + jsonFile = command.in; } + } + } + if (fs.existsSync(jsonFile)) { + sssJsonResponse = loadDataFromFile(jsonFile, 'json'); + sssDataObj = dataAsType(sssJsonResponse, 'SSSResultModel'); + } else { + console.log('JobID provided is not valid, or file not readable!'); + process.exit(); + } + if (sssDataObj === undefined) { + console.log('Failed to get the SSS JSON data!'); + process.exit(); + } - let fabricjs: VisualOutput | FunctionalPredictions; - if (cmd === "vo") { - if (command.verbose) console.log("Generating Visual Output..."); - - // Render Options - let options = { - colorScheme: command.colorscheme as ColorSchemeEnum, - numberHits: command.numbhits, - numberHsps: command.numbhsps, - logSkippedHsps: true, - canvasWrapperStroke: true, - staticCanvas: true, - }; - // Call render method to display the viz - fabricjs = new VisualOutput("canvas", sssDataObj, options); - fabricjs.render(); - } else if (cmd === "fp") { - if (command.verbose) - console.log("Generating Functional Predictions..."); - - let iprmcXmlFile; - let iprmcXmlResponse; - let iprmcJSONResponse; - let iprmcDataObj; - if (command.in === "mock_jobid-I20200317-103136-0485-5599422-np2") { - iprmcXmlFile = path.join( - process.cwd(), - "./src/testdata/iprmc.xml" - ); - } else { - if (command.inx) { - // assumes is a valid file - if (!path.isAbsolute(command.in)) { - iprmcXmlFile = path.join(process.cwd(), command.inx); - } else { - iprmcXmlFile = command.inx; - } - } else { - const iprmcXmlData = validateSubmittedDbfetchInput( - sssDataObj - ); - // download the JSON file - iprmcXmlFile = path.join( - process.cwd(), - `${command.in}.xml` - ); - console.log(iprmcXmlData); - await fetchDataToFile(iprmcXmlData, iprmcXmlFile); - } - } - if (fs.existsSync(jsonFile)) { - iprmcXmlResponse = loadDataFromFile(iprmcXmlFile, "xml"); - // convert XML into Flattened JSON - iprmcJSONResponse = getIPRMCDataModelFlatFromXML( - iprmcXmlResponse as string - ); - iprmcDataObj = dataAsType( - iprmcJSONResponse, - "IPRMCResultModelFlat" - ); - } else { - console.log("XML file not readable!"); - process.exit(); - } - if (sssDataObj === undefined) { - console.log("Failed to get the Dbfetch XML data!"); - process.exit(); - } + let fabricjs: VisualOutput | FunctionalPredictions; + if (cmd === 'vo') { + if (command.verbose) console.log('Generating Visual Output...'); - // Render Options - let options = { - colorScheme: command.colorscheme as ColorSchemeEnum, - numberHits: command.numbhits, - canvasWrapperStroke: true, - staticCanvas: true, - }; - // Call render method to display the viz - fabricjs = new FunctionalPredictions( - "canvas", - sssDataObj, - iprmcDataObj, - options - ); - fabricjs.render(); - } + // Render Options + let options = { + colorScheme: command.colorscheme as ColorSchemeEnum, + numberHits: command.numbhits, + numberHsps: command.numbhsps, + logSkippedHsps: true, + canvasWrapperStroke: true, + staticCanvas: true, + }; + // Call render method to display the viz + fabricjs = new VisualOutput('canvas', sssDataObj, options); + fabricjs.render(); + } else if (cmd === 'fp') { + if (command.verbose) console.log('Generating Functional Predictions...'); - // Save figure to file - if (command.verbose) - console.log( - `Generating ${command.outformat.toUpperCase()} output...` - ); - let output: any; - if (!path.isAbsolute(command.out)) { - output = path.join(process.cwd(), command.out); + let iprmcXmlFile; + let iprmcXmlResponse; + let iprmcJSONResponse; + let iprmcDataObj; + if (command.in === 'mock_jobid-I20200317-103136-0485-5599422-np2') { + iprmcXmlFile = path.join(process.cwd(), './src/testdata/iprmc.xml'); + } else { + if (command.inx) { + // assumes is a valid file + if (!path.isAbsolute(command.in)) { + iprmcXmlFile = path.join(process.cwd(), command.inx); + } else { + iprmcXmlFile = command.inx; + } } else { - output = command.out; + const iprmcXmlData = validateSubmittedDbfetchInput(sssDataObj); + // download the JSON file + iprmcXmlFile = path.join(process.cwd(), `${command.in}.xml`); + console.log(iprmcXmlData); + await fetchDataToFile(iprmcXmlData, iprmcXmlFile); } - if (command.outformat.toString().toLowerCase() === "png") { - fs.writeFileSync( - output, - fabricjs!.canvas - .toDataURL() - .replace("data:image/png;base64,", ""), - "base64" - ); - } else if (command.outformat.toString().toLowerCase() === "svg") { - fs.writeFileSync(output, fabricjs!.canvas.toSVG().toString()); - } - if (command.verbose) console.log(`Generated...\n${output}`); + } + if (fs.existsSync(jsonFile)) { + iprmcXmlResponse = loadDataFromFile(iprmcXmlFile, 'xml'); + // convert XML into Flattened JSON + iprmcJSONResponse = getIPRMCDataModelFlatFromXML(iprmcXmlResponse as string); + iprmcDataObj = dataAsType(iprmcJSONResponse, 'IPRMCResultModelFlat'); + } else { + console.log('XML file not readable!'); + process.exit(); + } + if (sssDataObj === undefined) { + console.log('Failed to get the Dbfetch XML data!'); + process.exit(); + } + + // Render Options + let options = { + colorScheme: command.colorscheme as ColorSchemeEnum, + numberHits: command.numbhits, + canvasWrapperStroke: true, + staticCanvas: true, + }; + // Call render method to display the viz + fabricjs = new FunctionalPredictions('canvas', sssDataObj, iprmcDataObj, options); + fabricjs.render(); + } + + // Save figure to file + if (command.verbose) console.log(`Generating ${command.outformat.toUpperCase()} output...`); + let output: any; + if (!path.isAbsolute(command.out)) { + output = path.join(process.cwd(), command.out); + } else { + output = command.out; } + if (command.outformat.toString().toLowerCase() === 'png') { + fs.writeFileSync(output, fabricjs!.canvas.toDataURL().replace('data:image/png;base64,', ''), 'base64'); + } else if (command.outformat.toString().toLowerCase() === 'svg') { + fs.writeFileSync(output, fabricjs!.canvas.toSVG().toString()); + } + if (command.verbose) console.log(`Generated...\n${output}`); + } } function makeCommand(cmd: string, description: string, alias: string) { - const command = new Command(cmd); - // inputs & outputs - command - .description(description) - .alias(alias) - .requiredOption( - "-i, --in ", - "JobID or URL/URI path to JSON (for VO and FP)" - ); - if (cmd === "fp") - command.option("-ix, --inx ", "URL/URI path to XML (for FP)"); - command - .requiredOption("-o, --out ", "File name used for output") - .requiredOption("-of, --outformat ", "Output format [png]") + const command = new Command(cmd); + // inputs & outputs + command + .description(description) + .alias(alias) + .requiredOption('-i, --in ', 'JobID or URL/URI path to JSON (for VO and FP)'); + if (cmd === 'fp') command.option('-ix, --inx ', 'URL/URI path to XML (for FP)'); + command + .requiredOption('-o, --out ', 'File name used for output') + .requiredOption('-of, --outformat ', 'Output format [png]'); - // render Options - command - .option("-color, --colorscheme [scheme]", "Color scheme to use [dynamic]") - if (cmd === "vo") - command - .option("-hits, --numbhits [hits]", "Number of hits to display [100]") - .option("-hsps, --numbhsps [hsps]", "Number of HSPs to display [10]") - else if (cmd === "fp") - command - .option("-hits, --numbhits [hits]", "Number of Hits to display [30]"); + // render Options + command.option('-color, --colorscheme [scheme]', 'Color scheme to use [dynamic]'); + if (cmd === 'vo') command + .option('-hits, --numbhits [hits]', 'Number of hits to display [100]') + .option('-hsps, --numbhsps [hsps]', 'Number of HSPs to display [10]'); + else if (cmd === 'fp') command.option('-hits, --numbhits [hits]', 'Number of Hits to display [30]'); + command; - // finally - command - .option("-v, --verbose", "Verbose [false]") - .action(cliHandler); - return command; + // finally + command.option('-v, --verbose', 'Verbose [false]').action(cliHandler); + return command; } const program = new Command(); program - .version("0.0.5") - .description("Generate Static Figures with jdispatcher-viewers") - .addCommand(makeCommand("vo", "Generate Visual Output", "visual-output")) - .addCommand( - makeCommand( - "fp", - "Generate Functional Predictions", - "functional-predictions" - ) - ) - .parseAsync(process.argv); + .version('0.0.5') + .description('Generate Static Figures with jdispatcher-viewers') + .addCommand(makeCommand('vo', 'Generate Visual Output', 'visual-output')) + .addCommand(makeCommand('fp', 'Generate Functional Predictions', 'functional-predictions')) + .parseAsync(process.argv); diff --git a/src/other-utilities.ts b/src/other-utilities.ts index eeaa046..5a2cc70 100644 --- a/src/other-utilities.ts +++ b/src/other-utilities.ts @@ -1,440 +1,390 @@ -import {fabric} from "fabric"; -import {xml2json} from "xml-js"; -import { - SSSResultModel, - IPRMCResultModel, - IPRMCResultModelFlat, - IprMatchesFlat, - IprMatchFlat, -} from "./data-model"; -import {JobIdValitable, ColorSchemeEnum, jobIdDefaults} from "./custom-types"; +import { fabric } from 'fabric'; +import { xml2json } from 'xml-js'; +import { SSSResultModel, IPRMCResultModel, IPRMCResultModelFlat, IprMatchesFlat, IprMatchFlat } from './data-model'; +import { JobIdValitable, ColorSchemeEnum, jobIdDefaults } from './custom-types'; export class BasicCanvasRenderer { - public canvas: fabric.Canvas | fabric.StaticCanvas; - protected canvasWidth: number; - protected canvasHeight: number; - protected contentWidth: number; - protected contentScoringWidth: number; - protected contentLabelWidth: number; - protected contentLabelLeftWidth: number; - protected scaleWidth: number; - protected scaleLabelWidth: number; - protected marginWidth: number; - public colorScheme: ColorSchemeEnum; - protected numberHits: number; - protected numberHsps: number; - protected logSkippedHsps: boolean; - protected fontSize: number; - protected fontWeigth: string; - protected fontFamily: string; - protected canvasWrapperStroke: boolean; - protected staticCanvas: boolean; + public canvas: fabric.Canvas | fabric.StaticCanvas; + protected canvasWidth: number; + protected canvasHeight: number; + protected contentWidth: number; + protected contentScoringWidth: number; + protected contentLabelWidth: number; + protected contentLabelLeftWidth: number; + protected scaleWidth: number; + protected scaleLabelWidth: number; + protected marginWidth: number; + public colorScheme: ColorSchemeEnum; + protected numberHits: number; + protected numberHsps: number; + protected logSkippedHsps: boolean; + protected fontSize: number; + protected fontWeigth: string; + protected fontFamily: string; + protected canvasWrapperStroke: boolean; + protected staticCanvas: boolean; - constructor(private element: string | HTMLCanvasElement) { - } + constructor(private element: string | HTMLCanvasElement) {} - protected getFabricCanvas() { - const startupDef = { - defaultCursor: "default", - moveCursor: "default", - hoverCursor: "default", - }; - if (this.staticCanvas) { - this.canvas = new fabric.StaticCanvas(this.element, startupDef); - } else { - this.canvas = new fabric.Canvas(this.element, startupDef); - } + protected getFabricCanvas() { + const startupDef = { + defaultCursor: 'default', + moveCursor: 'default', + hoverCursor: 'default', + }; + if (this.staticCanvas) { + this.canvas = new fabric.StaticCanvas(this.element, startupDef); + } else { + this.canvas = new fabric.Canvas(this.element, startupDef); } + } - protected setFrameSize() { - this.canvas.setWidth(this.canvasWidth); - this.canvas.setHeight(this.canvasHeight); - } + protected setFrameSize() { + this.canvas.setWidth(this.canvasWidth); + this.canvas.setHeight(this.canvasHeight); + } - protected renderCanvas() { - this.canvas.renderAll(); - } + protected renderCanvas() { + this.canvas.renderAll(); + } } export class ObjectCache { - private values: Map = new Map(); + private values: Map = new Map(); - public get(key: string): T | undefined { - const hasKey = this.values.has(key); - if (hasKey) { - return this.values.get(key) as T; - } - return; + public get(key: string): T | undefined { + const hasKey = this.values.has(key); + if (hasKey) { + return this.values.get(key) as T; } + return; + } - public put(key: string, value: T) { - const hasKey = this.values.has(key); - if (!hasKey) { - this.values.set(key, value); - } + public put(key: string, value: T) { + const hasKey = this.values.has(key); + if (!hasKey) { + this.values.set(key, value); } + } - public delete(key: string) { - const hasKey = this.values.has(key); - if (hasKey) { - this.values.delete(key); - } + public delete(key: string) { + const hasKey = this.values.has(key); + if (hasKey) { + this.values.delete(key); } + } } function countDecimals(n: number) { - if (Math.floor(n) === n) return 0; - return n.toString().split(".")[1].length || 0; + if (Math.floor(n) === n) return 0; + return n.toString().split('.')[1].length || 0; } export function numberToString(n: number) { - if (Number.isInteger(n)) { - return n + ".0"; - } else if (n < 0.0001 || n > 10000) { - return n.toExponential(2); - } else if (countDecimals(n) > 3) { - return n.toFixed(3).toString(); - } else { - return n.toString(); - } + if (Number.isInteger(n)) { + return n + '.0'; + } else if (n < 0.0001 || n > 10000) { + return n.toExponential(2); + } else if (countDecimals(n) > 3) { + return n.toFixed(3).toString(); + } else { + return n.toString(); + } } -export async function fetchData(dataLoc: string, format: string = "json") { - return await fetch(dataLoc) - .then((response) => { - if (!response.ok) { - throw new Error(`Could not retrieve data from ${dataLoc}`); - } - if (format === "json") { - try { - return response.json(); - } catch (error) { - throw new Error( - `Could not decode JSON data from ${dataLoc}` - ); - } - } else { - return response.text(); - } - }) - .catch((error) => console.log(error)); +export async function fetchData(dataLoc: string, format: string = 'json') { + return await fetch(dataLoc) + .then(response => { + if (!response.ok) { + throw new Error(`Could not retrieve data from ${dataLoc}`); + } + if (format === 'json') { + try { + return response.json(); + } catch (error) { + throw new Error(`Could not decode JSON data from ${dataLoc}`); + } + } else { + return response.text(); + } + }) + .catch(error => console.log(error)); } export function dataAsType(data: any, dtype: string) { - if (dtype === "SSSResultModel") { - return data as SSSResultModel; - } else if (dtype === "IPRMCResultModel") { - return data as IPRMCResultModel; - } else if (dtype === "IPRMCResultModelFlat") { - return data as IPRMCResultModelFlat; - } else { - return data; - } + if (dtype === 'SSSResultModel') { + return data as SSSResultModel; + } else if (dtype === 'IPRMCResultModel') { + return data as IPRMCResultModel; + } else if (dtype === 'IPRMCResultModelFlat') { + return data as IPRMCResultModelFlat; + } else { + return data; + } } export function getJdispatcherJsonURL(jobId: string) { - const toolName = jobId.split("-")[0]; - if (jobId === "mock_jobid-I20200317-103136-0485-5599422-np2") { - // mock jobId - return "https://raw.githubusercontent.com/ebi-jdispatcher/jdispatcher-viewers/master/src/testdata/ncbiblast.json"; - } else if (jobId.endsWith("-np2")) { - // wwwdev server (-np2$) - return `https://wwwdev.ebi.ac.uk/Tools/services/rest/${toolName}/result/${jobId}/json`; - } else { - // production servers (-p1m$ and -p2m$) - return `https://www.ebi.ac.uk/Tools/services/rest/${toolName}/result/${jobId}/json`; - } + const toolName = jobId.split('-')[0]; + if (jobId === 'mock_jobid-I20200317-103136-0485-5599422-np2') { + // mock jobId + return 'https://raw.githubusercontent.com/ebi-jdispatcher/jdispatcher-viewers/master/src/testdata/ncbiblast.json'; + } else if (jobId.endsWith('-np2')) { + // wwwdev server (-np2$) + return `https://wwwdev.ebi.ac.uk/Tools/services/rest/${toolName}/result/${jobId}/json`; + } else { + // production servers (-p1m$ and -p2m$) + return `https://www.ebi.ac.uk/Tools/services/rest/${toolName}/result/${jobId}/json`; + } } -export function validateJobId( - jobIdObj: JobIdValitable, - verbose: boolean = false -) { - let isValid = true; - if (jobIdObj.required) { - isValid = isValid && jobIdObj.value.trim().length !== 0; - } - if (jobIdObj.minLength) { - isValid = isValid && jobIdObj.value.trim().length >= jobIdObj.minLength; - } - if (jobIdObj.maxLength) { - isValid = isValid && jobIdObj.value.trim().length <= jobIdObj.maxLength; - } - if (jobIdObj.pattern) { - isValid = isValid && jobIdObj.pattern.test(jobIdObj.value.trim()); - } - if (verbose) { - if (isValid) { - console.log(`JobId "${jobIdObj.value}" is valid!`); - } else { - console.log(`JobId "${jobIdObj.value}" is not valid!`); - } +export function validateJobId(jobIdObj: JobIdValitable, verbose: boolean = false) { + let isValid = true; + if (jobIdObj.required) { + isValid = isValid && jobIdObj.value.trim().length !== 0; + } + if (jobIdObj.minLength) { + isValid = isValid && jobIdObj.value.trim().length >= jobIdObj.minLength; + } + if (jobIdObj.maxLength) { + isValid = isValid && jobIdObj.value.trim().length <= jobIdObj.maxLength; + } + if (jobIdObj.pattern) { + isValid = isValid && jobIdObj.pattern.test(jobIdObj.value.trim()); + } + if (verbose) { + if (isValid) { + console.log(`JobId "${jobIdObj.value}" is valid!`); + } else { + console.log(`JobId "${jobIdObj.value}" is not valid!`); } - return isValid; + } + return isValid; } export function validateSubmittedJobIdInput(data: string): string { - // check if input is a jobId - const jobId = {...jobIdDefaults}; - jobId.value = data; - // if so, get the service URL, else use as is - if ( - !jobId.value.startsWith("http") && - !jobId.value.includes("/") && - !jobId.value.includes("./") && - validateJobId(jobId) - ) { - data = getJdispatcherJsonURL(data); - } - return data; + // check if input is a jobId + const jobId = { ...jobIdDefaults }; + jobId.value = data; + // if so, get the service URL, else use as is + if ( + !jobId.value.startsWith('http') && + !jobId.value.includes('/') && + !jobId.value.includes('./') && + validateJobId(jobId) + ) { + data = getJdispatcherJsonURL(data); + } + return data; } // InterPro Match Complete XML data (via Dbfetch) function getIPRMCDbfetchURL(accessions: string) { - return `https://www.ebi.ac.uk/Tools/dbfetch/dbfetch?db=iprmc;id=${accessions};format=iprmcxml;style=raw`; + return `https://www.ebi.ac.uk/Tools/dbfetch/dbfetch?db=iprmc;id=${accessions};format=iprmcxml;style=raw`; } -function getIPRMCDbfetchAccessions( - sssDataObj: SSSResultModel, - numberHits: number = 30 -): string { - let accessions: string = ""; - for (const hit of sssDataObj.hits.slice(0, numberHits)) { - if (accessions === "") accessions += `${hit.hit_acc}`; - else accessions += `,${hit.hit_acc}`; - } - return accessions; +function getIPRMCDbfetchAccessions(sssDataObj: SSSResultModel, numberHits: number = 30): string { + let accessions: string = ''; + for (const hit of sssDataObj.hits.slice(0, numberHits)) { + if (accessions === '') accessions += `${hit.hit_acc}`; + else accessions += `,${hit.hit_acc}`; + } + return accessions; } -export function validateSubmittedDbfetchInput( - sssDataObj: SSSResultModel, - numberHits: number = 30 -): string { - const accessions = getIPRMCDbfetchAccessions(sssDataObj, numberHits); - return getIPRMCDbfetchURL(accessions); +export function validateSubmittedDbfetchInput(sssDataObj: SSSResultModel, numberHits: number = 30): string { + const accessions = getIPRMCDbfetchAccessions(sssDataObj, numberHits); + return getIPRMCDbfetchURL(accessions); } -export function getIPRMCDataModelFlatFromXML( - iprmcXML: string, - numberHits: number = 30 -) { - const iprmcDataObj = parseXMLData(iprmcXML) as IPRMCResultModel; - return getFlattenIPRMCDataModel(iprmcDataObj, numberHits); +export function getIPRMCDataModelFlatFromXML(iprmcXML: string, numberHits: number = 30) { + const iprmcDataObj = parseXMLData(iprmcXML) as IPRMCResultModel; + return getFlattenIPRMCDataModel(iprmcDataObj, numberHits); } function parseXMLData(data: string): IPRMCResultModel | object { - try { - return JSON.parse( - xml2json(data, { - compact: true, - spaces: 2, - alwaysArray: true, - }) - ); - } catch (error) { - console.log( - "Cannot parse the resulting " + - "Dbfetch response (likely not formatted XML)!" - ); - return {}; - } + try { + return JSON.parse( + xml2json(data, { + compact: true, + spaces: 2, + alwaysArray: true, + }) + ); + } catch (error) { + console.log('Cannot parse the resulting ' + 'Dbfetch response (likely not formatted XML)!'); + return {}; + } } export function domainDatabaseNameToString(domainName: string): string { - domainName = domainName.toUpperCase(); - let domainNameEnum = "Unclassified"; - if (domainName === "IPR" || domainName === "INTERPRO") { - domainNameEnum = "InterPro"; - } else if ( - domainName === "CATHGENE3D" || - domainName === "CATH-GENE3D" || - domainName === "GENE3D" - ) { - domainNameEnum = "CATH-Gene3D"; - } else if (domainName === "CDD") { - domainNameEnum = "CDD"; - } else if (domainName === "PANTHER") { - domainNameEnum = "PANTHER"; - } else if (domainName === "HAMAP") { - domainNameEnum = "HAMAP"; - } else if (domainName === "PFAM") { - domainNameEnum = "Pfam"; - } else if (domainName === "PIRSF") { - domainNameEnum = "PIRSF"; - } else if (domainName === "PRINTS") { - domainNameEnum = "PRINTS"; - } else if ( - domainName === "PROSITE PROFILES" || - domainName === "PROSITE_PROFILES" || - domainName === "PROFILE" - ) { - domainNameEnum = "PROSITE profiles"; - } else if ( - domainName === "PROSITE PATTERNS" || - domainName === "PROSITE_PATTERNS" || - domainName === "PROSITE" - ) { - domainNameEnum = "PROSITE patterns"; - } else if (domainName === "SFLD") { - domainNameEnum = "SFLD"; - } else if (domainName === "SMART") { - domainNameEnum = "SMART"; - } else if (domainName === "SUPERFAMILY" || domainName === "SSF") { - domainNameEnum = "SUPERFAMILY"; - } else if (domainName === "TIGERFAMS") { - domainNameEnum = "TIGRFAMs"; - } else if (domainName === "PRODOM") { - domainNameEnum = "PRODOM"; - } - return domainNameEnum; + domainName = domainName.toUpperCase(); + let domainNameEnum = 'Unclassified'; + if (domainName === 'IPR' || domainName === 'INTERPRO') { + domainNameEnum = 'InterPro'; + } else if (domainName === 'CATHGENE3D' || domainName === 'CATH-GENE3D' || domainName === 'GENE3D') { + domainNameEnum = 'CATH-Gene3D'; + } else if (domainName === 'CDD') { + domainNameEnum = 'CDD'; + } else if (domainName === 'PANTHER') { + domainNameEnum = 'PANTHER'; + } else if (domainName === 'HAMAP') { + domainNameEnum = 'HAMAP'; + } else if (domainName === 'PFAM') { + domainNameEnum = 'Pfam'; + } else if (domainName === 'PIRSF') { + domainNameEnum = 'PIRSF'; + } else if (domainName === 'PRINTS') { + domainNameEnum = 'PRINTS'; + } else if (domainName === 'PROSITE PROFILES' || domainName === 'PROSITE_PROFILES' || domainName === 'PROFILE') { + domainNameEnum = 'PROSITE profiles'; + } else if (domainName === 'PROSITE PATTERNS' || domainName === 'PROSITE_PATTERNS' || domainName === 'PROSITE') { + domainNameEnum = 'PROSITE patterns'; + } else if (domainName === 'SFLD') { + domainNameEnum = 'SFLD'; + } else if (domainName === 'SMART') { + domainNameEnum = 'SMART'; + } else if (domainName === 'SUPERFAMILY' || domainName === 'SSF') { + domainNameEnum = 'SUPERFAMILY'; + } else if (domainName === 'TIGERFAMS') { + domainNameEnum = 'TIGRFAMs'; + } else if (domainName === 'PRODOM') { + domainNameEnum = 'PRODOM'; + } + return domainNameEnum; } -export function getUniqueIPRMCDomainDatabases( - dataObj: IPRMCResultModelFlat, - proteinIdList: string[] -) { - const domainPredictions: string[] = []; - for (const protein of proteinIdList) { - for (const match of dataObj[`${protein}`]["matches"]) { - domainPredictions.push(match.split("_")[0]); - } +export function getUniqueIPRMCDomainDatabases(dataObj: IPRMCResultModelFlat, proteinIdList: string[]) { + const domainPredictions: string[] = []; + for (const protein of proteinIdList) { + for (const match of dataObj[`${protein}`]['matches']) { + domainPredictions.push(match.split('_')[0]); } - return domainPredictions.filter((v, i, x) => x.indexOf(v) === i); + } + return domainPredictions.filter((v, i, x) => x.indexOf(v) === i); } -function getFlattenIPRMCDataModel( - dataObj: IPRMCResultModel, - numberHits: number -): IPRMCResultModelFlat { - let tmpNumberHits = 0; - let iprmcDataFlatObj: IPRMCResultModelFlat = {}; - for (const protein of dataObj["interpromatch"][0]["protein"]) { - tmpNumberHits++; - if (tmpNumberHits <= numberHits) { - let matches: string[] = []; - let matchObjs: IprMatchesFlat = {}; - for (const match of protein["match"]) { - let matchObj: IprMatchFlat = {}; - if (match.ipr !== undefined) { - const iprdomain = `${domainDatabaseNameToString( - match._attributes.dbname - )}_${match.ipr[0]._attributes.id}`; - if (!matches.includes(iprdomain)) { - matches.push(iprdomain); - } - if (!(iprdomain in matchObjs)) { - matchObjs[iprdomain] = []; - } - matchObj = { - id: match.ipr[0]._attributes.id, - name: match.ipr[0]._attributes.name, - dbname: domainDatabaseNameToString( - match._attributes.dbname - ), - type: match.ipr[0]._attributes.type, - altid: match._attributes.id, - altname: match._attributes.name, - // altdbname: "InterPro", - status: match._attributes.status, - model: match._attributes.model, - evd: match._attributes.evd, - start: Number(match.lcn[0]._attributes.start), - end: Number(match.lcn[0]._attributes.end), - fragments: match.lcn[0]._attributes.fragments, - score: match.lcn[0]._attributes.fragments, - }; - matchObjs[iprdomain].push(matchObj); - } else { - const iprdomain = `${domainDatabaseNameToString( - match._attributes.dbname - )}_${match._attributes.id}`; - if (!matches.includes(iprdomain)) { - matches.push(iprdomain); - } - if (!(iprdomain in matchObjs)) { - matchObjs[iprdomain] = []; - } - matchObj = { - id: match._attributes.id, - name: match._attributes.name, - dbname: domainDatabaseNameToString( - match._attributes.dbname - ), - status: match._attributes.status, - model: match._attributes.model, - evd: match._attributes.evd, - type: "Unclassified", - start: Number(match.lcn[0]._attributes.start), - end: Number(match.lcn[0]._attributes.end), - fragments: match.lcn[0]._attributes.fragments, - score: match.lcn[0]._attributes.fragments, - }; - matchObjs[iprdomain].push(matchObj); - } - } - iprmcDataFlatObj[protein._attributes.id] = { - id: protein._attributes.id, - name: protein._attributes.name, - length: Number(protein._attributes.length), - matches: matches.sort(), - match: matchObjs, - }; +function getFlattenIPRMCDataModel(dataObj: IPRMCResultModel, numberHits: number): IPRMCResultModelFlat { + let tmpNumberHits = 0; + let iprmcDataFlatObj: IPRMCResultModelFlat = {}; + for (const protein of dataObj['interpromatch'][0]['protein']) { + tmpNumberHits++; + if (tmpNumberHits <= numberHits) { + let matches: string[] = []; + let matchObjs: IprMatchesFlat = {}; + for (const match of protein['match']) { + let matchObj: IprMatchFlat = {}; + if (match.ipr !== undefined) { + const iprdomain = `${domainDatabaseNameToString(match._attributes.dbname)}_${match.ipr[0]._attributes.id}`; + if (!matches.includes(iprdomain)) { + matches.push(iprdomain); + } + if (!(iprdomain in matchObjs)) { + matchObjs[iprdomain] = []; + } + matchObj = { + id: match.ipr[0]._attributes.id, + name: match.ipr[0]._attributes.name, + dbname: domainDatabaseNameToString(match._attributes.dbname), + type: match.ipr[0]._attributes.type, + altid: match._attributes.id, + altname: match._attributes.name, + // altdbname: "InterPro", + status: match._attributes.status, + model: match._attributes.model, + evd: match._attributes.evd, + start: Number(match.lcn[0]._attributes.start), + end: Number(match.lcn[0]._attributes.end), + fragments: match.lcn[0]._attributes.fragments, + score: match.lcn[0]._attributes.fragments, + }; + matchObjs[iprdomain].push(matchObj); + } else { + const iprdomain = `${domainDatabaseNameToString(match._attributes.dbname)}_${match._attributes.id}`; + if (!matches.includes(iprdomain)) { + matches.push(iprdomain); + } + if (!(iprdomain in matchObjs)) { + matchObjs[iprdomain] = []; + } + matchObj = { + id: match._attributes.id, + name: match._attributes.name, + dbname: domainDatabaseNameToString(match._attributes.dbname), + status: match._attributes.status, + model: match._attributes.model, + evd: match._attributes.evd, + type: 'Unclassified', + start: Number(match.lcn[0]._attributes.start), + end: Number(match.lcn[0]._attributes.end), + fragments: match.lcn[0]._attributes.fragments, + score: match.lcn[0]._attributes.fragments, + }; + matchObjs[iprdomain].push(matchObj); } - // else { - // console.log( - // `Skipping protein as number of hits has reached ${numberHits}` - // ); - // } + } + iprmcDataFlatObj[protein._attributes.id] = { + id: protein._attributes.id, + name: protein._attributes.name, + length: Number(protein._attributes.length), + matches: matches.sort(), + match: matchObjs, + }; } - return iprmcDataFlatObj; + // else { + // console.log( + // `Skipping protein as number of hits has reached ${numberHits}` + // ); + // } + } + return iprmcDataFlatObj; } export function getDomainURLbyDatabase(domainID: string, domainName: string) { - let domainURL = ""; - if (domainID.startsWith("IPR")) { - domainURL = `https://www.ebi.ac.uk/interpro/entry/InterPro/${domainID}`; - } else if (domainName === "CATH-Gene3D") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/cathgene3d/${domainID}`; - // domainURL = `http://www.cathdb.info/version/latest/superfamily/${domainID}`; - } else if (domainName === "CDD") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/cdd/${domainID}`; - // domainURL = `https://www.ncbi.nlm.nih.gov/Structure/cdd/cddsrv.cgi?uid=${domainID}`; - } else if (domainName === "PANTHER") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/panther/${domainID}`; - // domainURL = `http://www.pantherdb.org/panther/family.do?clsAccession=${domainID}`; - } else if (domainName === "HAMAP") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/hamap/${domainID}`; - // domainURL = `https://hamap.expasy.org/signature/${domainID}`; - } else if (domainName === "Pfam") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/pfam/${domainID}`; - // domainURL = `https://pfam.xfam.org/family/${domainID}`; - } else if (domainName === "PIRSF") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/pirsf/${domainID}`; - // domainURL = `https://pir.georgetown.edu/cgi-bin/ipcSF?id=${domainID}`; - } else if (domainName === "PRINTS") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/prints/${domainID}`; - // domainURL = `http://www.bioinf.manchester.ac.uk/cgi-bin/dbbrowser/sprint/searchprintss.cgi?prints_accn=${domainID}&display_opts=Prints&category=None&queryform=false®expr=off`; - } else if (domainName === "PROSITE profiles") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/profile/${domainID}`; - // domainURL = `https://www.expasy.org/prosite/${domainID}`; - } else if (domainName === "PROSITE patterns") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/prosite/${domainID}`; - // domainURL = `https://www.expasy.org/prosite/${domainID}`; - } else if (domainName === "SFLD") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/sfld/${domainID}`; - // domainURL = `http://sfld.rbvi.ucsf.edu/django/family/${domainID}`; - } else if (domainName === "SMART") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/smart/${domainID}`; - // domainURL = `https://smart.embl-heidelberg.de/smart/do_annotation.pl?BLAST=DUMMY&ACC=${domainID}`; - } else if (domainName === "SUPERFAMILY") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/ssf/${domainID}`; - // domainURL = `https://supfam.org/SUPERFAMILY/cgi-bin/scop.cgi?ipid=${domainID}`; - } else if (domainName === "TIGRFAMs") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/tigrfams/${domainID}`; - // domainURL = `https://cmr.tigr.org/tigr-scripts/CMR/HmmReport.cgi?hmm_acc=${domainID}`; - } else if (domainName === "PRODOM") { - domainURL = `https://www.ebi.ac.uk/interpro/entry/prodom/${domainID}`; - // domainURL = `https://prodom.prabi.fr/prodom/current/cgi-bin/request.pl?SSID=1289309949_1085&db_ent1=${domainID}`; - } - return domainURL; + let domainURL = ''; + if (domainID.startsWith('IPR')) { + domainURL = `https://www.ebi.ac.uk/interpro/entry/InterPro/${domainID}`; + } else if (domainName === 'CATH-Gene3D') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/cathgene3d/${domainID}`; + // domainURL = `http://www.cathdb.info/version/latest/superfamily/${domainID}`; + } else if (domainName === 'CDD') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/cdd/${domainID}`; + // domainURL = `https://www.ncbi.nlm.nih.gov/Structure/cdd/cddsrv.cgi?uid=${domainID}`; + } else if (domainName === 'PANTHER') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/panther/${domainID}`; + // domainURL = `http://www.pantherdb.org/panther/family.do?clsAccession=${domainID}`; + } else if (domainName === 'HAMAP') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/hamap/${domainID}`; + // domainURL = `https://hamap.expasy.org/signature/${domainID}`; + } else if (domainName === 'Pfam') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/pfam/${domainID}`; + // domainURL = `https://pfam.xfam.org/family/${domainID}`; + } else if (domainName === 'PIRSF') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/pirsf/${domainID}`; + // domainURL = `https://pir.georgetown.edu/cgi-bin/ipcSF?id=${domainID}`; + } else if (domainName === 'PRINTS') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/prints/${domainID}`; + // domainURL = `http://www.bioinf.manchester.ac.uk/cgi-bin/dbbrowser/sprint/searchprintss.cgi?prints_accn=${domainID}&display_opts=Prints&category=None&queryform=false®expr=off`; + } else if (domainName === 'PROSITE profiles') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/profile/${domainID}`; + // domainURL = `https://www.expasy.org/prosite/${domainID}`; + } else if (domainName === 'PROSITE patterns') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/prosite/${domainID}`; + // domainURL = `https://www.expasy.org/prosite/${domainID}`; + } else if (domainName === 'SFLD') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/sfld/${domainID}`; + // domainURL = `http://sfld.rbvi.ucsf.edu/django/family/${domainID}`; + } else if (domainName === 'SMART') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/smart/${domainID}`; + // domainURL = `https://smart.embl-heidelberg.de/smart/do_annotation.pl?BLAST=DUMMY&ACC=${domainID}`; + } else if (domainName === 'SUPERFAMILY') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/ssf/${domainID}`; + // domainURL = `https://supfam.org/SUPERFAMILY/cgi-bin/scop.cgi?ipid=${domainID}`; + } else if (domainName === 'TIGRFAMs') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/tigrfams/${domainID}`; + // domainURL = `https://cmr.tigr.org/tigr-scripts/CMR/HmmReport.cgi?hmm_acc=${domainID}`; + } else if (domainName === 'PRODOM') { + domainURL = `https://www.ebi.ac.uk/interpro/entry/prodom/${domainID}`; + // domainURL = `https://prodom.prabi.fr/prodom/current/cgi-bin/request.pl?SSID=1289309949_1085&db_ent1=${domainID}`; + } + return domainURL; } diff --git a/src/visual-output-app.ts b/src/visual-output-app.ts index 9bb56d5..23e1631 100644 --- a/src/visual-output-app.ts +++ b/src/visual-output-app.ts @@ -1,830 +1,716 @@ -import {fabric} from "fabric"; -import {SSSResultModel} from "./data-model"; -import {defaultGradient, ncbiBlastGradient} from "./color-schemes"; +import { fabric } from 'fabric'; +import { SSSResultModel } from './data-model'; +import { defaultGradient, ncbiBlastGradient } from './color-schemes'; +import { getQuerySubjPixelCoords, getDomainPixelCoords } from './coords-utilities'; +import { getRgbColorGradient, getRgbColorFixed, getGradientSteps } from './color-utilities'; +import { BasicCanvasRenderer, ObjectCache } from './other-utilities'; +import { RenderOptions, ColorSchemeEnum, TextType } from './custom-types'; import { - getQuerySubjPixelCoords, - getDomainPixelCoords, -} from "./coords-utilities"; + mouseDownText, + mouseOverText, + mouseOutText, + mouseOverDomain, + mouseOutDomain, + mouseOverCheckbox, + mouseDownCheckbox, + mouseOutCheckbox, +} from './custom-events'; import { - getRgbColorGradient, - getRgbColorFixed, - getGradientSteps, -} from "./color-utilities"; -import {BasicCanvasRenderer, ObjectCache} from "./other-utilities"; -import {RenderOptions, ColorSchemeEnum, TextType} from "./custom-types"; -import { - mouseDownText, - mouseOverText, - mouseOutText, - mouseOverDomain, - mouseOutDomain, - mouseOverCheckbox, - mouseDownCheckbox, - mouseOutCheckbox, -} from "./custom-events"; -import { - drawHeaderTextGroup, - drawHeaderLinkText, - drawContentHeaderTextGroup, - drawLineTracksQuerySubject, - drawContentSequenceInfoText, - drawHspNoticeText, - drawScoreText, - drawContentQuerySubjFooterTextGroup, - drawNoHitsFoundText, - drawDomainQueySubject, - drawScaleTypeText, - drawCheckBoxText, - drawScaleScoreText, - drawScaleColorGradient, - drawLineAxis5Buckets, - drawLineAxis6Buckets, - drawScaleTick5LabelsGroup, - drawScaleTick4LabelsGroup, - drawFooterText, - drawCanvasWrapperStroke, - drawContentSupressText, -} from "./drawing-utilities"; + drawHeaderTextGroup, + drawHeaderLinkText, + drawContentHeaderTextGroup, + drawLineTracksQuerySubject, + drawContentSequenceInfoText, + drawHspNoticeText, + drawScoreText, + drawContentQuerySubjFooterTextGroup, + drawNoHitsFoundText, + drawDomainQueySubject, + drawScaleTypeText, + drawCheckBoxText, + drawScaleScoreText, + drawScaleColorGradient, + drawLineAxis5Buckets, + drawLineAxis6Buckets, + drawScaleTick5LabelsGroup, + drawScaleTick4LabelsGroup, + drawFooterText, + drawCanvasWrapperStroke, + drawContentSupressText, +} from './drawing-utilities'; let objCache = new ObjectCache(); export class VisualOutput extends BasicCanvasRenderer { - private topPadding: number = 0; - private queryLen: number = 0; - private subjLen: number = 0; - private startQueryPixels: number; - private endQueryPixels: number; - private startEvalPixels: number; - private startSubjPixels: number; - private endSubjPixels: number; - private gradientSteps: number[] = []; - private queryFactor: number = 1.0; - private subjFactor: number = 1.0; - - constructor( - element: string | HTMLCanvasElement, - private dataObj: SSSResultModel, - renderOptions: RenderOptions + private topPadding: number = 0; + private queryLen: number = 0; + private subjLen: number = 0; + private startQueryPixels: number; + private endQueryPixels: number; + private startEvalPixels: number; + private startSubjPixels: number; + private endSubjPixels: number; + private gradientSteps: number[] = []; + private queryFactor: number = 1.0; + private subjFactor: number = 1.0; + + constructor( + element: string | HTMLCanvasElement, + private dataObj: SSSResultModel, + renderOptions: RenderOptions + ) { + super(element); + + renderOptions.canvasWidth != undefined ? (this.canvasWidth = renderOptions.canvasWidth) : (this.canvasWidth = 1000); + renderOptions.canvasHeight != undefined + ? (this.canvasHeight = renderOptions.canvasHeight) + : (this.canvasHeight = 110); + renderOptions.contentWidth != undefined + ? (this.contentWidth = renderOptions.contentWidth) + : (this.contentWidth = (65.5 * this.canvasWidth) / 100); + renderOptions.contentScoringWidth != undefined + ? (this.contentScoringWidth = renderOptions.contentScoringWidth) + : (this.contentScoringWidth = (7.0 * this.canvasWidth) / 100); + renderOptions.contentLabelWidth != undefined + ? (this.contentLabelWidth = renderOptions.contentLabelWidth) + : (this.contentLabelWidth = (26.5 * this.canvasWidth) / 100); + renderOptions.scaleWidth != undefined + ? (this.scaleWidth = renderOptions.scaleWidth) + : (this.scaleWidth = (75.0 * this.canvasWidth) / 100); + renderOptions.scaleLabelWidth != undefined + ? (this.scaleLabelWidth = renderOptions.scaleLabelWidth) + : (this.scaleLabelWidth = (20.0 * this.canvasWidth) / 100); + renderOptions.marginWidth != undefined + ? (this.marginWidth = renderOptions.marginWidth) + : (this.marginWidth = (0.15 * this.canvasWidth) / 100); + renderOptions.colorScheme != undefined + ? (this.colorScheme = renderOptions.colorScheme) + : (this.colorScheme = ColorSchemeEnum.dynamic); + renderOptions.numberHits != undefined ? (this.numberHits = renderOptions.numberHits) : (this.numberHits = 100); + renderOptions.numberHsps != undefined ? (this.numberHsps = renderOptions.numberHsps) : (this.numberHsps = 10); + renderOptions.logSkippedHsps != undefined + ? (this.logSkippedHsps = renderOptions.logSkippedHsps) + : (this.logSkippedHsps = true); + renderOptions.fontSize != undefined ? (this.fontSize = renderOptions.fontSize) : (this.fontSize = 12); + renderOptions.fontWeigth != undefined ? (this.fontWeigth = renderOptions.fontWeigth) : (this.fontWeigth = 'normal'); + renderOptions.fontFamily != undefined + ? (this.fontFamily = renderOptions.fontFamily) + : (this.fontFamily = 'Times New Roman'); + renderOptions.canvasWrapperStroke != undefined + ? (this.canvasWrapperStroke = renderOptions.canvasWrapperStroke) + : (this.canvasWrapperStroke = false); + renderOptions.staticCanvas != undefined + ? (this.staticCanvas = renderOptions.staticCanvas) + : (this.staticCanvas = false); + + this.getFabricCanvas(); + } + + public render() { + this.loadInitalProperties(); + this.loadInitialCoords(); + // clear the canvas + this.canvas.clear(); + // canvas header + this.drawHeaderGroup(); + // canvas content + this.drawContentGroup(); + // canvas footer + this.drawFooterGroup(); + // finishing off + this.wrapCanvas(); + this.setFrameSize(); + this.renderCanvas(); + } + + private loadInitalProperties() { + this.queryLen = this.dataObj.query_len; + for (const hit of this.dataObj.hits.slice(0, this.numberHits)) { + if (hit.hit_len > this.subjLen) { + this.subjLen = hit.hit_len; + } + } + // if size of query and subject sequences is to high, + // use a scalling factor + const diffQueryFactor = this.queryLen / this.subjLen; + const diffSubjFactor = this.subjLen / this.queryLen; + if (diffQueryFactor > 8) { + this.subjFactor = (this.queryLen * 0.5) / this.subjLen; + } + if (diffSubjFactor > 8) { + this.queryFactor = (this.subjLen * 0.5) / this.queryLen; + } + } + + private loadInitialCoords() { + this.startQueryPixels = objCache.get('startQueryPixels') as number; + this.endQueryPixels = objCache.get('endQueryPixels') as number; + this.startSubjPixels = objCache.get('startSubjPixels') as number; + this.endSubjPixels = objCache.get('endSubjPixels') as number; + this.startEvalPixels = objCache.get('startEvalPixels') as number; + if ( + !this.startQueryPixels && + !this.endQueryPixels && + !this.startSubjPixels && + !this.endSubjPixels && + !this.startEvalPixels ) { - super(element); - - renderOptions.canvasWidth != undefined - ? (this.canvasWidth = renderOptions.canvasWidth) - : (this.canvasWidth = 1000); - renderOptions.canvasHeight != undefined - ? (this.canvasHeight = renderOptions.canvasHeight) - : (this.canvasHeight = 110); - renderOptions.contentWidth != undefined - ? (this.contentWidth = renderOptions.contentWidth) - : (this.contentWidth = (65.5 * this.canvasWidth) / 100); - renderOptions.contentScoringWidth != undefined - ? (this.contentScoringWidth = renderOptions.contentScoringWidth) - : (this.contentScoringWidth = (7.0 * this.canvasWidth) / 100); - renderOptions.contentLabelWidth != undefined - ? (this.contentLabelWidth = renderOptions.contentLabelWidth) - : (this.contentLabelWidth = (26.5 * this.canvasWidth) / 100); - renderOptions.scaleWidth != undefined - ? (this.scaleWidth = renderOptions.scaleWidth) - : (this.scaleWidth = (75.0 * this.canvasWidth) / 100); - renderOptions.scaleLabelWidth != undefined - ? (this.scaleLabelWidth = renderOptions.scaleLabelWidth) - : (this.scaleLabelWidth = (20.0 * this.canvasWidth) / 100); - renderOptions.marginWidth != undefined - ? (this.marginWidth = renderOptions.marginWidth) - : (this.marginWidth = (0.15 * this.canvasWidth) / 100); - renderOptions.colorScheme != undefined - ? (this.colorScheme = renderOptions.colorScheme) - : (this.colorScheme = ColorSchemeEnum.dynamic); - renderOptions.numberHits != undefined - ? (this.numberHits = renderOptions.numberHits) - : (this.numberHits = 100); - renderOptions.numberHsps != undefined - ? (this.numberHsps = renderOptions.numberHsps) - : (this.numberHsps = 10); - renderOptions.logSkippedHsps != undefined - ? (this.logSkippedHsps = renderOptions.logSkippedHsps) - : (this.logSkippedHsps = true); - renderOptions.fontSize != undefined - ? (this.fontSize = renderOptions.fontSize) - : (this.fontSize = 12); - renderOptions.fontWeigth != undefined - ? (this.fontWeigth = renderOptions.fontWeigth) - : (this.fontWeigth = "normal"); - renderOptions.fontFamily != undefined - ? (this.fontFamily = renderOptions.fontFamily) - : (this.fontFamily = "Times New Roman"); - renderOptions.canvasWrapperStroke != undefined - ? (this.canvasWrapperStroke = renderOptions.canvasWrapperStroke) - : (this.canvasWrapperStroke = false); - renderOptions.staticCanvas != undefined - ? (this.staticCanvas = renderOptions.staticCanvas) - : (this.staticCanvas = false); - - this.getFabricCanvas(); + [this.startQueryPixels, this.endQueryPixels, this.startSubjPixels, this.endSubjPixels] = getQuerySubjPixelCoords( + this.queryLen * this.queryFactor, + this.subjLen * this.subjFactor, + this.subjLen * this.subjFactor, + this.contentWidth, + this.contentScoringWidth, + this.contentLabelWidth, + this.marginWidth + ); + this.startEvalPixels = this.endQueryPixels + 2 * this.marginWidth; + objCache.put('startQueryPixels', this.startQueryPixels); + objCache.put('endQueryPixels', this.endQueryPixels); + objCache.put('startSubjPixels', this.startSubjPixels); + objCache.put('endSubjPixels', this.endSubjPixels); + objCache.put('startEvalPixels', this.startEvalPixels); } - - public render() { - this.loadInitalProperties(); - this.loadInitialCoords(); - // clear the canvas - this.canvas.clear(); - // canvas header - this.drawHeaderGroup(); - // canvas content - this.drawContentGroup(); - // canvas footer - this.drawFooterGroup(); - // finishing off - this.wrapCanvas(); - this.setFrameSize(); - this.renderCanvas(); + } + + private drawHeaderGroup() { + // canvas header + this.topPadding = 2; + let textHeaderGroup: fabric.Object; + textHeaderGroup = objCache.get('textHeaderGroup') as fabric.Object; + if (!textHeaderGroup) { + textHeaderGroup = drawHeaderTextGroup( + this.dataObj, + { + fontSize: this.fontSize, + canvasWidth: this.canvasWidth, + }, + this.topPadding + ); + objCache.put('textHeaderGroup', textHeaderGroup); } - - private loadInitalProperties() { - this.queryLen = this.dataObj.query_len; - for (const hit of this.dataObj.hits.slice(0, this.numberHits)) { - if (hit.hit_len > this.subjLen) { - this.subjLen = hit.hit_len; - } - } - // if size of query and subject sequences is to high, - // use a scalling factor - const diffQueryFactor = this.queryLen / this.subjLen; - const diffSubjFactor = this.subjLen / this.queryLen; - if (diffQueryFactor > 8) { - this.subjFactor = (this.queryLen * 0.5) / this.subjLen; - } - if (diffSubjFactor > 8) { - this.queryFactor = (this.subjLen * 0.5) / this.queryLen; - } + this.canvas.add(textHeaderGroup); + + // canvas header (sequence info) + this.topPadding += 45; + let textHeaderLink: fabric.Text; + let textSeqObj: TextType; + textHeaderLink = objCache.get('textHeaderLink') as fabric.Text; + textSeqObj = objCache.get('textHeaderLink_textSeqObj') as TextType; + if (!textHeaderLink) { + [textHeaderLink, textSeqObj] = drawHeaderLinkText(this.dataObj, { fontSize: this.fontSize }, this.topPadding); + objCache.put('textHeaderLink', textHeaderLink); + objCache.put('textHeaderLink_textSeqObj', textSeqObj); } - - private loadInitialCoords() { - this.startQueryPixels = objCache.get("startQueryPixels") as number; - this.endQueryPixels = objCache.get("endQueryPixels") as number; - this.startSubjPixels = objCache.get("startSubjPixels") as number; - this.endSubjPixels = objCache.get("endSubjPixels") as number; - this.startEvalPixels = objCache.get("startEvalPixels") as number; - if ( - !this.startQueryPixels && - !this.endQueryPixels && - !this.startSubjPixels && - !this.endSubjPixels && - !this.startEvalPixels - ) { - [ - this.startQueryPixels, - this.endQueryPixels, - this.startSubjPixels, - this.endSubjPixels, - ] = getQuerySubjPixelCoords( - this.queryLen * this.queryFactor, - this.subjLen * this.subjFactor, - this.subjLen * this.subjFactor, - this.contentWidth, - this.contentScoringWidth, - this.contentLabelWidth, - this.marginWidth - ); - this.startEvalPixels = this.endQueryPixels + 2 * this.marginWidth; - objCache.put("startQueryPixels", this.startQueryPixels); - objCache.put("endQueryPixels", this.endQueryPixels); - objCache.put("startSubjPixels", this.startSubjPixels); - objCache.put("endSubjPixels", this.endSubjPixels); - objCache.put("startEvalPixels", this.startEvalPixels); - } + this.canvas.add(textHeaderLink); + if (!this.staticCanvas) { + if (this.dataObj.query_url !== null && this.dataObj.query_url !== '') { + mouseOverText( + textHeaderLink, + textSeqObj, + this.dataObj.query_def!, + this.dataObj.query_url!, + { fontSize: this.fontSize }, + this + ); + mouseDownText(textHeaderLink, this.dataObj.query_url!, this); + mouseOutText(textHeaderLink, textSeqObj, this); + } } - - private drawHeaderGroup() { - // canvas header - this.topPadding = 2; - let textHeaderGroup: fabric.Object; - textHeaderGroup = objCache.get("textHeaderGroup") as fabric.Object; - if (!textHeaderGroup) { - textHeaderGroup = drawHeaderTextGroup( - this.dataObj, - { - fontSize: this.fontSize, - canvasWidth: this.canvasWidth, - }, - this.topPadding - ); - objCache.put("textHeaderGroup", textHeaderGroup); - } - this.canvas.add(textHeaderGroup); - - // canvas header (sequence info) - this.topPadding += 45; - let textHeaderLink: fabric.Text; - let textSeqObj: TextType; - textHeaderLink = objCache.get("textHeaderLink") as fabric.Text; - textSeqObj = objCache.get("textHeaderLink_textSeqObj") as TextType; - if (!textHeaderLink) { - [textHeaderLink, textSeqObj] = drawHeaderLinkText( - this.dataObj, - {fontSize: this.fontSize}, - this.topPadding - ); - objCache.put("textHeaderLink", textHeaderLink); - objCache.put("textHeaderLink_textSeqObj", textSeqObj); - } - this.canvas.add(textHeaderLink); - if (!this.staticCanvas) { - if ( - this.dataObj.query_url !== null && - this.dataObj.query_url !== "" - ) { - mouseOverText( - textHeaderLink, - textSeqObj, - this.dataObj.query_def!, - this.dataObj.query_url!, - {fontSize: this.fontSize}, - this - ); - mouseDownText(textHeaderLink, this.dataObj.query_url!, this); - mouseOutText(textHeaderLink, textSeqObj, this); - } - } + } + + private drawContentGroup() { + if (this.dataObj.hits.length > 0) { + // content header + this.topPadding += 25; + let textContentHeaderGroup: fabric.Group; + textContentHeaderGroup = objCache.get('textContentHeaderGroup') as fabric.Group; + if (!textContentHeaderGroup) { + textContentHeaderGroup = drawContentHeaderTextGroup( + { + queryLen: this.queryLen * this.queryFactor, + subjLen: this.subjLen * this.subjFactor, + startQueryPixels: this.startQueryPixels, + startEvalPixels: this.startEvalPixels, + startSubjPixels: this.startSubjPixels, + }, + { + contentWidth: this.contentWidth, + contentScoringWidth: this.contentScoringWidth, + fontSize: this.fontSize, + colorScheme: this.colorScheme, + }, + this.topPadding + ); + objCache.put('textContentHeaderGroup', textContentHeaderGroup); + } + this.canvas.add(textContentHeaderGroup); + + // content header line tracks + this.topPadding += 20; + let lineTrackGroup: fabric.Group; + lineTrackGroup = objCache.get('lineTrackGroup') as fabric.Group; + if (!lineTrackGroup) { + lineTrackGroup = drawLineTracksQuerySubject( + { + startQueryPixels: this.startQueryPixels, + endQueryPixels: this.endQueryPixels, + startSubjPixels: this.startSubjPixels, + endSubjPixels: this.endSubjPixels, + }, + { strokeWidth: 2 }, + this.topPadding + ); + objCache.put('lineTrackGroup', lineTrackGroup); + } + this.canvas.add(lineTrackGroup); + + this.topPadding += 5; + let textContentFooterGroup: fabric.Group; + textContentFooterGroup = objCache.get('textContentFooterGroup') as fabric.Group; + if (!textContentFooterGroup) { + textContentFooterGroup = drawContentQuerySubjFooterTextGroup( + { + queryLen: this.queryLen, + subjLen: this.subjLen, + startQueryPixels: this.startQueryPixels, + endQueryPixels: this.endQueryPixels, + startSubjPixels: this.startSubjPixels, + endSubjPixels: this.endSubjPixels, + }, + { + fontSize: this.fontSize, + }, + this.topPadding + ); + objCache.put('textContentFooterGroup', textContentFooterGroup); + } + this.canvas.add(textContentFooterGroup); + + // dynamic content + this.topPadding += 25; + this.drawDynamicContentGroup(); + + // color scale + this.topPadding += 20; + this.drawColorScaleGroup(); + } else { + // text content: "No hits found!" + this.topPadding += 20; + const noHitsTextGroup = drawNoHitsFoundText( + { + fontSize: this.fontSize, + contentWidth: this.contentWidth, + }, + this.topPadding + ); + this.canvas.add(noHitsTextGroup); } - - private drawContentGroup() { - if (this.dataObj.hits.length > 0) { - // content header - this.topPadding += 25; - let textContentHeaderGroup: fabric.Group; - textContentHeaderGroup = objCache.get( - "textContentHeaderGroup" - ) as fabric.Group; - if (!textContentHeaderGroup) { - textContentHeaderGroup = drawContentHeaderTextGroup( - { - queryLen: this.queryLen * this.queryFactor, - subjLen: this.subjLen * this.subjFactor, - startQueryPixels: this.startQueryPixels, - startEvalPixels: this.startEvalPixels, - startSubjPixels: this.startSubjPixels, - }, - { - contentWidth: this.contentWidth, - contentScoringWidth: this.contentScoringWidth, - fontSize: this.fontSize, - colorScheme: this.colorScheme, - }, - this.topPadding - ); - objCache.put("textContentHeaderGroup", textContentHeaderGroup); - } - this.canvas.add(textContentHeaderGroup); - - // content header line tracks - this.topPadding += 20; - let lineTrackGroup: fabric.Group; - lineTrackGroup = objCache.get("lineTrackGroup") as fabric.Group; - if (!lineTrackGroup) { - lineTrackGroup = drawLineTracksQuerySubject( - { - startQueryPixels: this.startQueryPixels, - endQueryPixels: this.endQueryPixels, - startSubjPixels: this.startSubjPixels, - endSubjPixels: this.endSubjPixels, - }, - {strokeWidth: 2}, - this.topPadding - ); - objCache.put("lineTrackGroup", lineTrackGroup); - } - this.canvas.add(lineTrackGroup); - - this.topPadding += 5; - let textContentFooterGroup: fabric.Group; - textContentFooterGroup = objCache.get( - "textContentFooterGroup" - ) as fabric.Group; - if (!textContentFooterGroup) { - textContentFooterGroup = drawContentQuerySubjFooterTextGroup( - { - queryLen: this.queryLen, - subjLen: this.subjLen, - startQueryPixels: this.startQueryPixels, - endQueryPixels: this.endQueryPixels, - startSubjPixels: this.startSubjPixels, - endSubjPixels: this.endSubjPixels, - }, - { - fontSize: this.fontSize, - }, - this.topPadding - ); - objCache.put("textContentFooterGroup", textContentFooterGroup); - } - this.canvas.add(textContentFooterGroup); - - // dynamic content - this.topPadding += 25; - this.drawDynamicContentGroup(); - - // color scale - this.topPadding += 20; - this.drawColorScaleGroup(); - } else { - // text content: "No hits found!" - this.topPadding += 20; - const noHitsTextGroup = drawNoHitsFoundText( - { - fontSize: this.fontSize, - contentWidth: this.contentWidth, - }, - this.topPadding - ); - this.canvas.add(noHitsTextGroup); - } + } + + private drawDynamicContentGroup() { + // draw a new track per hsp for each hit + // only display 10 hsps per hit + let subjLen: number = 0; + let maxIDLen: number = 0; + for (const hit of this.dataObj.hits.slice(0, this.numberHits)) { + if (hit.hit_len > subjLen) subjLen = hit.hit_len; + if (hit.hit_db.length + hit.hit_id.length > maxIDLen) maxIDLen = hit.hit_db.length + hit.hit_id.length; } - - private drawDynamicContentGroup() { - // draw a new track per hsp for each hit - // only display 10 hsps per hit - let subjLen: number = 0; - let maxIDLen: number = 0; - for (const hit of this.dataObj.hits.slice(0, this.numberHits)) { - if (hit.hit_len > subjLen) subjLen = hit.hit_len; - if (hit.hit_db.length + hit.hit_id.length > maxIDLen) - maxIDLen = hit.hit_db.length + hit.hit_id.length; - } - let minScore: number = Number.MAX_VALUE; - let maxScore: number = 0; - let minNotZeroScore: number = Number.MAX_VALUE; - for (const hit of this.dataObj.hits.slice(0, this.numberHits)) { - for (const hsp of hit.hit_hsps) { - if (this.colorScheme === ColorSchemeEnum.ncbiblast) { - if (hsp.hsp_bit_score! < minScore) - minScore = hsp.hsp_bit_score!; - if (hsp.hsp_bit_score! > maxScore) - maxScore = hsp.hsp_bit_score!; - if ( - hsp.hsp_bit_score! < minNotZeroScore && - hsp.hsp_bit_score! > 0.0 - ) - minNotZeroScore = hsp.hsp_bit_score!; - } else { - if (hsp.hsp_expect! < minScore) minScore = hsp.hsp_expect!; - if (hsp.hsp_expect! > maxScore) maxScore = hsp.hsp_expect!; - if ( - hsp.hsp_expect! < minNotZeroScore && - hsp.hsp_expect! > 0.0 - ) - minNotZeroScore = hsp.hsp_expect!; - } - } - } - + let minScore: number = Number.MAX_VALUE; + let maxScore: number = 0; + let minNotZeroScore: number = Number.MAX_VALUE; + for (const hit of this.dataObj.hits.slice(0, this.numberHits)) { + for (const hsp of hit.hit_hsps) { if (this.colorScheme === ColorSchemeEnum.ncbiblast) { - this.gradientSteps = getGradientSteps( - minScore, - maxScore, - minNotZeroScore, - this.colorScheme - ); + if (hsp.hsp_bit_score! < minScore) minScore = hsp.hsp_bit_score!; + if (hsp.hsp_bit_score! > maxScore) maxScore = hsp.hsp_bit_score!; + if (hsp.hsp_bit_score! < minNotZeroScore && hsp.hsp_bit_score! > 0.0) minNotZeroScore = hsp.hsp_bit_score!; } else { - this.gradientSteps = getGradientSteps( - minScore, - maxScore, - minNotZeroScore, - this.colorScheme - ); + if (hsp.hsp_expect! < minScore) minScore = hsp.hsp_expect!; + if (hsp.hsp_expect! > maxScore) maxScore = hsp.hsp_expect!; + if (hsp.hsp_expect! < minNotZeroScore && hsp.hsp_expect! > 0.0) minNotZeroScore = hsp.hsp_expect!; } + } + } - let tmpNumberHits = 0; - for (const hit of this.dataObj.hits) { - tmpNumberHits++; - if (tmpNumberHits <= this.numberHits) { - let numberHsps: number = 0; - const totalNumberHsps: number = hit.hit_hsps.length; - // Hit ID + Hit Description text tracks - let textObj: TextType; - let spaceText, hitText: fabric.Text; - [spaceText, hitText, textObj] = drawContentSequenceInfoText( - maxIDLen, - hit, - {fontSize: this.fontSize}, - this.topPadding - ); - this.canvas.add(spaceText); - this.canvas.add(hitText); - if (!this.staticCanvas) { - mouseOverText( - hitText, - textObj, - hit.hit_def, - hit.hit_url, - {fontSize: this.fontSize}, - this - ); - mouseDownText(hitText, hit.hit_url, this); - mouseOutText(hitText, textObj, this); - } - for (const hsp of hit.hit_hsps) { - numberHsps++; - if (numberHsps <= this.numberHsps) { - // line Tracks - const subjHspLen: number = hit.hit_len; - let startQueryPixels: number; - let endQueryPixels: number; - let startSubjPixels: number; - let endSubjPixels: number; - [ - startQueryPixels, - endQueryPixels, - startSubjPixels, - endSubjPixels, - ] = getQuerySubjPixelCoords( - this.queryLen * this.queryFactor, - this.subjLen * this.subjFactor, - subjHspLen, - this.contentWidth, - this.contentScoringWidth, - this.contentLabelWidth, - this.marginWidth - ); - - this.topPadding += 5; - const linesGroup = drawLineTracksQuerySubject( - { - startQueryPixels: startQueryPixels, - endQueryPixels: endQueryPixels, - startSubjPixels: startSubjPixels, - endSubjPixels: endSubjPixels, - }, - {strokeWidth: 1}, - this.topPadding - ); - this.canvas.add(linesGroup); - - // domain tracks - let startQueryHspPixels: number; - let endQueryHspPixels: number; - let startSubjHspPixels: number; - let endSubjHspPixels: number; - let hspQueryStart: number; - let hspQueryEnd: number; - let hspSubjStart: number; - let hspSubjEnd: number; - if (hsp.hsp_query_frame! === "-1") { - hspQueryStart = hsp.hsp_query_to; - hspQueryEnd = hsp.hsp_query_from; - } else { - hspQueryStart = hsp.hsp_query_from; - hspQueryEnd = hsp.hsp_query_to; - } - if (hsp.hsp_hit_frame! === "-1") { - hspSubjStart = hsp.hsp_hit_to; - hspSubjEnd = hsp.hsp_hit_from; - } else { - hspSubjStart = hsp.hsp_hit_from; - hspSubjEnd = hsp.hsp_hit_to; - } - [ - startQueryHspPixels, - endQueryHspPixels, - ] = getDomainPixelCoords( - startQueryPixels, - endQueryPixels, - this.queryLen, - hspQueryStart, - hspQueryEnd, - this.marginWidth - ); - [ - startSubjHspPixels, - endSubjHspPixels, - ] = getDomainPixelCoords( - startSubjPixels, - endSubjPixels, - subjHspLen, - hspSubjStart, - hspSubjEnd, - this.marginWidth - ); - let color: string; - if (this.colorScheme === ColorSchemeEnum.ncbiblast) { - color = getRgbColorFixed( - hsp.hsp_bit_score!, - this.gradientSteps, - ncbiBlastGradient - ); - } else { - color = getRgbColorGradient( - hsp.hsp_expect!, - this.gradientSteps, - defaultGradient - ); - } - this.topPadding += 10; - let queryDomain, subjDomain: fabric.Rect; - [queryDomain, subjDomain] = drawDomainQueySubject( - startQueryHspPixels, - endQueryHspPixels, - startSubjHspPixels, - endSubjHspPixels, - this.topPadding, - color - ); - this.canvas.add(queryDomain); - this.canvas.add(subjDomain); - - // E-value text tracks - const scoreText = drawScoreText( - this.startEvalPixels, - hsp, - { - fontSize: this.fontSize, - colorScheme: this.colorScheme, - }, - this.topPadding - ); - scoreText.width = this.contentScoringWidth; - this.canvas.add(scoreText); - if (!this.staticCanvas) { - // Query hovering and tooltip - mouseOverDomain( - queryDomain, - startQueryHspPixels, - endQueryHspPixels, - hspQueryStart, - hspQueryEnd, - hsp, - { - fontSize: this.fontSize, - colorScheme: this.colorScheme, - }, - this - ); - mouseOutDomain(queryDomain, this); - - // Subject hovering and tooltip - mouseOverDomain( - subjDomain, - startSubjHspPixels, - endSubjHspPixels, - hspSubjStart, - hspSubjEnd, - hsp, - { - fontSize: this.fontSize, - colorScheme: this.colorScheme, - }, - this - ); - mouseOutDomain(subjDomain, this); - } - } else { - if (this.logSkippedHsps === true) { - let hspTextNotice: fabric.Text; - hspTextNotice = objCache.get( - "hspTextNotice" - ) as fabric.Text; - if (!hspTextNotice) { - hspTextNotice = drawHspNoticeText( - totalNumberHsps, - this.numberHsps, - { - fontSize: this.fontSize, - contentWidth: this.contentWidth, - }, - this.topPadding - ); - objCache.put("hspTextNotice", hspTextNotice); - } - this.canvas.add(hspTextNotice); - this.topPadding += 20; - } - break; - } - } - } else { - // canvas content suppressed output - this.topPadding += 20; - let supressText: fabric.Text; - supressText = objCache.get("supressText") as fabric.Text; - if (!supressText) { - supressText = drawContentSupressText( - { - fontSize: this.fontSize, - contentWidth: this.contentWidth, - }, - this.topPadding, - this.numberHits - ); - objCache.put("supressText", supressText); - } - supressText.top = this.topPadding; - this.canvas.add(supressText); - this.topPadding += 20; - break; - } - } + if (this.colorScheme === ColorSchemeEnum.ncbiblast) { + this.gradientSteps = getGradientSteps(minScore, maxScore, minNotZeroScore, this.colorScheme); + } else { + this.gradientSteps = getGradientSteps(minScore, maxScore, minNotZeroScore, this.colorScheme); } - private drawColorScaleGroup() { - // Scale Type - const scaleTypeText = drawScaleTypeText( - { - fontSize: this.fontSize, - scaleLabelWidth: this.scaleLabelWidth, - }, - this.topPadding + let tmpNumberHits = 0; + for (const hit of this.dataObj.hits) { + tmpNumberHits++; + if (tmpNumberHits <= this.numberHits) { + let numberHsps: number = 0; + const totalNumberHsps: number = hit.hit_hsps.length; + // Hit ID + Hit Description text tracks + let textObj: TextType; + let spaceText, hitText: fabric.Text; + [spaceText, hitText, textObj] = drawContentSequenceInfoText( + maxIDLen, + hit, + { fontSize: this.fontSize }, + this.topPadding ); - this.canvas.add(scaleTypeText); - - // Scale Type selection - let textCheckDynObj, textCheckFixObj, textCheckNcbiObj: TextType; - let dynamicBoxText, - dynamicText, - fixedBoxText, - fixedText, - ncbiblastBoxText, - ncbiblastText: fabric.Text; - [ - dynamicBoxText, - dynamicText, - textCheckDynObj, - fixedBoxText, - fixedText, - textCheckFixObj, - ncbiblastBoxText, - ncbiblastText, - textCheckNcbiObj, - ] = drawCheckBoxText( - { - colorScheme: this.colorScheme, - fontSize: this.fontSize, - scaleLabelWidth: this.scaleLabelWidth, - }, - this.topPadding - ); - this.canvas.add(dynamicBoxText); - this.canvas.add(dynamicText); + this.canvas.add(spaceText); + this.canvas.add(hitText); if (!this.staticCanvas) { - mouseOverCheckbox(dynamicBoxText, textCheckDynObj, this); - mouseOutCheckbox( - dynamicBoxText, - textCheckDynObj, - ColorSchemeEnum.dynamic, - this - ); - mouseDownCheckbox(dynamicBoxText, ColorSchemeEnum.dynamic, this); + mouseOverText(hitText, textObj, hit.hit_def, hit.hit_url, { fontSize: this.fontSize }, this); + mouseDownText(hitText, hit.hit_url, this); + mouseOutText(hitText, textObj, this); } - - this.canvas.add(fixedBoxText); - this.canvas.add(fixedText); - if (!this.staticCanvas) { - mouseOverCheckbox(fixedBoxText, textCheckFixObj, this); - mouseOutCheckbox( - fixedBoxText, - textCheckFixObj, - ColorSchemeEnum.fixed, - this + for (const hsp of hit.hit_hsps) { + numberHsps++; + if (numberHsps <= this.numberHsps) { + // line Tracks + const subjHspLen: number = hit.hit_len; + let startQueryPixels: number; + let endQueryPixels: number; + let startSubjPixels: number; + let endSubjPixels: number; + [startQueryPixels, endQueryPixels, startSubjPixels, endSubjPixels] = getQuerySubjPixelCoords( + this.queryLen * this.queryFactor, + this.subjLen * this.subjFactor, + subjHspLen, + this.contentWidth, + this.contentScoringWidth, + this.contentLabelWidth, + this.marginWidth ); - mouseDownCheckbox(fixedBoxText, ColorSchemeEnum.fixed, this); - } - this.canvas.add(ncbiblastBoxText); - this.canvas.add(ncbiblastText); - if (!this.staticCanvas) { - mouseOverCheckbox(ncbiblastBoxText, textCheckNcbiObj, this); - mouseOutCheckbox( - ncbiblastBoxText, - textCheckNcbiObj, - ColorSchemeEnum.ncbiblast, - this + this.topPadding += 5; + const linesGroup = drawLineTracksQuerySubject( + { + startQueryPixels: startQueryPixels, + endQueryPixels: endQueryPixels, + startSubjPixels: startSubjPixels, + endSubjPixels: endSubjPixels, + }, + { strokeWidth: 1 }, + this.topPadding ); - mouseDownCheckbox( - ncbiblastBoxText, - ColorSchemeEnum.ncbiblast, - this + this.canvas.add(linesGroup); + + // domain tracks + let startQueryHspPixels: number; + let endQueryHspPixels: number; + let startSubjHspPixels: number; + let endSubjHspPixels: number; + let hspQueryStart: number; + let hspQueryEnd: number; + let hspSubjStart: number; + let hspSubjEnd: number; + if (hsp.hsp_query_frame! === '-1') { + hspQueryStart = hsp.hsp_query_to; + hspQueryEnd = hsp.hsp_query_from; + } else { + hspQueryStart = hsp.hsp_query_from; + hspQueryEnd = hsp.hsp_query_to; + } + if (hsp.hsp_hit_frame! === '-1') { + hspSubjStart = hsp.hsp_hit_to; + hspSubjEnd = hsp.hsp_hit_from; + } else { + hspSubjStart = hsp.hsp_hit_from; + hspSubjEnd = hsp.hsp_hit_to; + } + [startQueryHspPixels, endQueryHspPixels] = getDomainPixelCoords( + startQueryPixels, + endQueryPixels, + this.queryLen, + hspQueryStart, + hspQueryEnd, + this.marginWidth ); - } - // E-value/Bit Score Text - this.topPadding += 25; - const scaleScoreText = drawScaleScoreText( - { + [startSubjHspPixels, endSubjHspPixels] = getDomainPixelCoords( + startSubjPixels, + endSubjPixels, + subjHspLen, + hspSubjStart, + hspSubjEnd, + this.marginWidth + ); + let color: string; + if (this.colorScheme === ColorSchemeEnum.ncbiblast) { + color = getRgbColorFixed(hsp.hsp_bit_score!, this.gradientSteps, ncbiBlastGradient); + } else { + color = getRgbColorGradient(hsp.hsp_expect!, this.gradientSteps, defaultGradient); + } + this.topPadding += 10; + let queryDomain, subjDomain: fabric.Rect; + [queryDomain, subjDomain] = drawDomainQueySubject( + startQueryHspPixels, + endQueryHspPixels, + startSubjHspPixels, + endSubjHspPixels, + this.topPadding, + color + ); + this.canvas.add(queryDomain); + this.canvas.add(subjDomain); + + // E-value text tracks + const scoreText = drawScoreText( + this.startEvalPixels, + hsp, + { fontSize: this.fontSize, - scaleLabelWidth: this.scaleLabelWidth, - colorScheme: this.colorScheme, - }, - this.topPadding - ); - this.canvas.add(scaleScoreText); - - // E-value/Bit score Color Gradient - const colorScale = drawScaleColorGradient( - { - scaleWidth: this.scaleWidth, - scaleLabelWidth: this.scaleLabelWidth, colorScheme: this.colorScheme, - }, - this.topPadding - ); - - this.canvas.add(colorScale); - - // E-value/Bit score Axis (line and ticks) - if (this.colorScheme === ColorSchemeEnum.ncbiblast) { - const oneFifthGradPixels = - (this.scaleLabelWidth + - this.scaleWidth - - this.scaleLabelWidth) / - 5; - this.topPadding += 15; - const axisGroup = drawLineAxis6Buckets( - this.scaleLabelWidth, - this.scaleLabelWidth + oneFifthGradPixels, - this.scaleLabelWidth + oneFifthGradPixels * 2, - this.scaleLabelWidth + oneFifthGradPixels * 3, - this.scaleLabelWidth + oneFifthGradPixels * 4, - this.scaleLabelWidth + this.scaleWidth, - {strokeWidth: 1}, - this.topPadding + }, + this.topPadding ); - this.canvas.add(axisGroup); - - // Bits scale tick mark labels - this.topPadding += 5; - const tickLabels5Group = drawScaleTick5LabelsGroup( - this.gradientSteps, - oneFifthGradPixels, + scoreText.width = this.contentScoringWidth; + this.canvas.add(scoreText); + if (!this.staticCanvas) { + // Query hovering and tooltip + mouseOverDomain( + queryDomain, + startQueryHspPixels, + endQueryHspPixels, + hspQueryStart, + hspQueryEnd, + hsp, { - fontSize: this.fontSize, - scaleWidth: this.scaleWidth, - scaleLabelWidth: this.scaleLabelWidth, + fontSize: this.fontSize, + colorScheme: this.colorScheme, }, - this.topPadding - ); - this.canvas.add(tickLabels5Group); - } else { - const oneForthGradPixels = - (this.scaleLabelWidth + - this.scaleWidth - - this.scaleLabelWidth) / - 4; - this.topPadding += 15; - const axisGroup = drawLineAxis5Buckets( - this.scaleLabelWidth, - this.scaleLabelWidth + oneForthGradPixels, - this.scaleLabelWidth + oneForthGradPixels * 2, - this.scaleLabelWidth + oneForthGradPixels * 3, - this.scaleLabelWidth + this.scaleWidth, - {strokeWidth: 1}, - this.topPadding - ); - this.canvas.add(axisGroup); - - // E-value scale tick mark labels - this.topPadding += 5; - const tickLabels4Group = drawScaleTick4LabelsGroup( - this.gradientSteps, - oneForthGradPixels, + this + ); + mouseOutDomain(queryDomain, this); + + // Subject hovering and tooltip + mouseOverDomain( + subjDomain, + startSubjHspPixels, + endSubjHspPixels, + hspSubjStart, + hspSubjEnd, + hsp, { - fontSize: this.fontSize, - scaleWidth: this.scaleWidth, - scaleLabelWidth: this.scaleLabelWidth, + fontSize: this.fontSize, + colorScheme: this.colorScheme, }, - this.topPadding - ); - this.canvas.add(tickLabels4Group); + this + ); + mouseOutDomain(subjDomain, this); + } + } else { + if (this.logSkippedHsps === true) { + let hspTextNotice: fabric.Text; + hspTextNotice = objCache.get('hspTextNotice') as fabric.Text; + if (!hspTextNotice) { + hspTextNotice = drawHspNoticeText( + totalNumberHsps, + this.numberHsps, + { + fontSize: this.fontSize, + contentWidth: this.contentWidth, + }, + this.topPadding + ); + objCache.put('hspTextNotice', hspTextNotice); + } + this.canvas.add(hspTextNotice); + this.topPadding += 20; + } + break; + } } + } else { + // canvas content suppressed output + this.topPadding += 20; + let supressText: fabric.Text; + supressText = objCache.get('supressText') as fabric.Text; + if (!supressText) { + supressText = drawContentSupressText( + { + fontSize: this.fontSize, + contentWidth: this.contentWidth, + }, + this.topPadding, + this.numberHits + ); + objCache.put('supressText', supressText); + } + supressText.top = this.topPadding; + this.canvas.add(supressText); + this.topPadding += 20; + break; + } + } + } + + private drawColorScaleGroup() { + // Scale Type + const scaleTypeText = drawScaleTypeText( + { + fontSize: this.fontSize, + scaleLabelWidth: this.scaleLabelWidth, + }, + this.topPadding + ); + this.canvas.add(scaleTypeText); + + // Scale Type selection + let textCheckDynObj, textCheckFixObj, textCheckNcbiObj: TextType; + let dynamicBoxText, dynamicText, fixedBoxText, fixedText, ncbiblastBoxText, ncbiblastText: fabric.Text; + [ + dynamicBoxText, + dynamicText, + textCheckDynObj, + fixedBoxText, + fixedText, + textCheckFixObj, + ncbiblastBoxText, + ncbiblastText, + textCheckNcbiObj, + ] = drawCheckBoxText( + { + colorScheme: this.colorScheme, + fontSize: this.fontSize, + scaleLabelWidth: this.scaleLabelWidth, + }, + this.topPadding + ); + this.canvas.add(dynamicBoxText); + this.canvas.add(dynamicText); + if (!this.staticCanvas) { + mouseOverCheckbox(dynamicBoxText, textCheckDynObj, this); + mouseOutCheckbox(dynamicBoxText, textCheckDynObj, ColorSchemeEnum.dynamic, this); + mouseDownCheckbox(dynamicBoxText, ColorSchemeEnum.dynamic, this); } - private drawFooterGroup() { - this.topPadding += 30; - let copyrightText: fabric.Text; - let textFooterObj: TextType; - copyrightText = objCache.get("copyrightText") as fabric.Text; - textFooterObj = objCache.get("copyrightText_textFooterObj") as TextType; - if (!copyrightText && !textFooterObj) { - [copyrightText, textFooterObj] = drawFooterText( - { - fontSize: this.fontSize, - }, - this.topPadding - ); - objCache.put("copyrightText", copyrightText); - objCache.put("copyrightText_textFooterObj", textFooterObj); - } - this.canvas.add(copyrightText); + this.canvas.add(fixedBoxText); + this.canvas.add(fixedText); + if (!this.staticCanvas) { + mouseOverCheckbox(fixedBoxText, textCheckFixObj, this); + mouseOutCheckbox(fixedBoxText, textCheckFixObj, ColorSchemeEnum.fixed, this); + mouseDownCheckbox(fixedBoxText, ColorSchemeEnum.fixed, this); } - private wrapCanvas() { - this.topPadding += 20; - // topPadding always overrides the canvasHeight - this.canvasHeight = this.topPadding; - if (this.canvasWrapperStroke) { - // final canvas wrapper stroke - const canvasWrapper = drawCanvasWrapperStroke({ - canvasWidth: this.canvasWidth, - canvasHeight: this.canvasHeight, - }); - this.canvas.add(canvasWrapper); - } + this.canvas.add(ncbiblastBoxText); + this.canvas.add(ncbiblastText); + if (!this.staticCanvas) { + mouseOverCheckbox(ncbiblastBoxText, textCheckNcbiObj, this); + mouseOutCheckbox(ncbiblastBoxText, textCheckNcbiObj, ColorSchemeEnum.ncbiblast, this); + mouseDownCheckbox(ncbiblastBoxText, ColorSchemeEnum.ncbiblast, this); + } + // E-value/Bit Score Text + this.topPadding += 25; + const scaleScoreText = drawScaleScoreText( + { + fontSize: this.fontSize, + scaleLabelWidth: this.scaleLabelWidth, + colorScheme: this.colorScheme, + }, + this.topPadding + ); + this.canvas.add(scaleScoreText); + + // E-value/Bit score Color Gradient + const colorScale = drawScaleColorGradient( + { + scaleWidth: this.scaleWidth, + scaleLabelWidth: this.scaleLabelWidth, + colorScheme: this.colorScheme, + }, + this.topPadding + ); + + this.canvas.add(colorScale); + + // E-value/Bit score Axis (line and ticks) + if (this.colorScheme === ColorSchemeEnum.ncbiblast) { + const oneFifthGradPixels = (this.scaleLabelWidth + this.scaleWidth - this.scaleLabelWidth) / 5; + this.topPadding += 15; + const axisGroup = drawLineAxis6Buckets( + this.scaleLabelWidth, + this.scaleLabelWidth + oneFifthGradPixels, + this.scaleLabelWidth + oneFifthGradPixels * 2, + this.scaleLabelWidth + oneFifthGradPixels * 3, + this.scaleLabelWidth + oneFifthGradPixels * 4, + this.scaleLabelWidth + this.scaleWidth, + { strokeWidth: 1 }, + this.topPadding + ); + this.canvas.add(axisGroup); + + // Bits scale tick mark labels + this.topPadding += 5; + const tickLabels5Group = drawScaleTick5LabelsGroup( + this.gradientSteps, + oneFifthGradPixels, + { + fontSize: this.fontSize, + scaleWidth: this.scaleWidth, + scaleLabelWidth: this.scaleLabelWidth, + }, + this.topPadding + ); + this.canvas.add(tickLabels5Group); + } else { + const oneForthGradPixels = (this.scaleLabelWidth + this.scaleWidth - this.scaleLabelWidth) / 4; + this.topPadding += 15; + const axisGroup = drawLineAxis5Buckets( + this.scaleLabelWidth, + this.scaleLabelWidth + oneForthGradPixels, + this.scaleLabelWidth + oneForthGradPixels * 2, + this.scaleLabelWidth + oneForthGradPixels * 3, + this.scaleLabelWidth + this.scaleWidth, + { strokeWidth: 1 }, + this.topPadding + ); + this.canvas.add(axisGroup); + + // E-value scale tick mark labels + this.topPadding += 5; + const tickLabels4Group = drawScaleTick4LabelsGroup( + this.gradientSteps, + oneForthGradPixels, + { + fontSize: this.fontSize, + scaleWidth: this.scaleWidth, + scaleLabelWidth: this.scaleLabelWidth, + }, + this.topPadding + ); + this.canvas.add(tickLabels4Group); + } + } + + private drawFooterGroup() { + this.topPadding += 30; + let copyrightText: fabric.Text; + let textFooterObj: TextType; + copyrightText = objCache.get('copyrightText') as fabric.Text; + textFooterObj = objCache.get('copyrightText_textFooterObj') as TextType; + if (!copyrightText && !textFooterObj) { + [copyrightText, textFooterObj] = drawFooterText( + { + fontSize: this.fontSize, + }, + this.topPadding + ); + objCache.put('copyrightText', copyrightText); + objCache.put('copyrightText_textFooterObj', textFooterObj); + } + this.canvas.add(copyrightText); + } + + private wrapCanvas() { + this.topPadding += 20; + // topPadding always overrides the canvasHeight + this.canvasHeight = this.topPadding; + if (this.canvasWrapperStroke) { + // final canvas wrapper stroke + const canvasWrapper = drawCanvasWrapperStroke({ + canvasWidth: this.canvasWidth, + canvasHeight: this.canvasHeight, + }); + this.canvas.add(canvasWrapper); } + } } diff --git a/src/visual-output-webcomponent.ts b/src/visual-output-webcomponent.ts index 932bdea..ec2fba5 100644 --- a/src/visual-output-webcomponent.ts +++ b/src/visual-output-webcomponent.ts @@ -1,65 +1,59 @@ -import {LitElement, html} from "lit-element/lit-element.js"; -import {property, customElement} from "lit/decorators.js"; -import {RenderOptions, ColorSchemeEnum} from "./custom-types"; -import { - validateSubmittedJobIdInput, - fetchData, - dataAsType, validateSubmittedDbfetchInput, -} from "./other-utilities"; -import {VisualOutput} from "./visual-output-app"; +import { LitElement, html } from 'lit-element/lit-element.js'; +import { property, customElement } from 'lit/decorators.js'; +import { RenderOptions, ColorSchemeEnum } from './custom-types'; +import { validateSubmittedJobIdInput, fetchData, dataAsType, validateSubmittedDbfetchInput } from './other-utilities'; +import { VisualOutput } from './visual-output-app'; -@customElement("jd-visual-output") +@customElement('jd-visual-output') export class CanvasRendererComponent extends LitElement { - @property({type: String}) data = ""; - @property({type: String}) colorScheme = "dynamic"; - @property({type: Number}) numberHits = 100; - @property({type: Number}) numberHsps = 10; - @property({type: Boolean}) logSkippedHsps = true; - @property({type: Boolean}) canvasWrapperStroke = true; + @property({ type: String }) data = ''; + @property({ type: String }) colorScheme = 'dynamic'; + @property({ type: Number }) numberHits = 100; + @property({ type: Number }) numberHsps = 10; + @property({ type: Boolean }) logSkippedHsps = true; + @property({ type: Boolean }) canvasWrapperStroke = true; - constructor() { - super(); - } - - async render() { - const renderOptions: RenderOptions = { - colorScheme: this.colorScheme as ColorSchemeEnum, - numberHits: this.numberHits, - numberHsps: this.numberHsps, - logSkippedHsps: this.logSkippedHsps, - canvasWrapperStroke: this.canvasWrapperStroke, - }; + constructor() { + super(); + } - // Checks to find if canvas element exist (with id="canvas") - // if not, creates it and appends it to body - const canvasElement = document.getElementById( - "canvas" - )! as HTMLCanvasElement; - if (canvasElement === null) { - const newDiv = document.createElement("div"); - newDiv.id = "canvas-wrapper"; - const newCanvas = document.createElement("canvas"); - newCanvas.id = "canvas"; - newDiv.appendChild(newCanvas); - document.body.appendChild(newDiv); - } - // loading the JSON Data - const sssJsonData = validateSubmittedJobIdInput(this.data); - const sssJsonResponse = await fetchData(sssJsonData); - const sssDataObj = dataAsType(sssJsonResponse, "SSSResultModel"); + async render() { + const renderOptions: RenderOptions = { + colorScheme: this.colorScheme as ColorSchemeEnum, + numberHits: this.numberHits, + numberHsps: this.numberHsps, + logSkippedHsps: this.logSkippedHsps, + canvasWrapperStroke: this.canvasWrapperStroke, + }; - // New JD Viewers Fabricjs Canvas - new VisualOutput("canvas", sssDataObj, renderOptions).render(); - return html`${this.canvasDivTemplate}`; + // Checks to find if canvas element exist (with id="canvas") + // if not, creates it and appends it to body + const canvasElement = document.getElementById('canvas')! as HTMLCanvasElement; + if (canvasElement === null) { + const newDiv = document.createElement('div'); + newDiv.id = 'canvas-wrapper'; + const newCanvas = document.createElement('canvas'); + newCanvas.id = 'canvas'; + newDiv.appendChild(newCanvas); + document.body.appendChild(newDiv); } + // loading the JSON Data + const sssJsonData = validateSubmittedJobIdInput(this.data); + const sssJsonResponse = await fetchData(sssJsonData); + const sssDataObj = dataAsType(sssJsonResponse, 'SSSResultModel'); - get canvasDivTemplate() { - return html``; - } + // New JD Viewers Fabricjs Canvas + new VisualOutput('canvas', sssDataObj, renderOptions).render(); + return html`${this.canvasDivTemplate}`; + } + + get canvasDivTemplate() { + return html``; + } } declare global { - interface HTMLElementTagNameMap { - "jd-visual-output": CanvasRendererComponent; - } + interface HTMLElementTagNameMap { + 'jd-visual-output': CanvasRendererComponent; + } } From df0cda9e81882ced670a005b4a52e7659184664a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Tue, 29 Oct 2024 16:26:55 +0000 Subject: [PATCH 07/12] fabric v4 to v6 migrations --- src/color-schemes.ts | 10 +- src/custom-events.ts | 53 +++--- src/drawing-utilities.ts | 282 ++++++++++++++---------------- src/functional-predictions-app.ts | 37 ++-- src/other-utilities.ts | 8 +- src/visual-output-app.ts | 46 +++-- 6 files changed, 210 insertions(+), 226 deletions(-) diff --git a/src/color-schemes.ts b/src/color-schemes.ts index 3f56e69..db2d66b 100644 --- a/src/color-schemes.ts +++ b/src/color-schemes.ts @@ -1,4 +1,4 @@ -import { fabric } from 'fabric'; +import { Gradient, FabricObject } from 'fabric'; import { ColorType } from './custom-types'; export const defaultGradient: ColorType = { @@ -10,10 +10,10 @@ export const defaultGradient: ColorType = { keys: [0.0, 0.25, 0.5, 0.75, 1.0], }; -export function colorDefaultGradient(canvasObj: fabric.Object, start: number, end: number) { +export function colorDefaultGradient(canvasObj: FabricObject, start: number, end: number) { canvasObj.set( 'fill', - new fabric.Gradient({ + new Gradient({ type: 'linear', coords: { x1: start, @@ -41,10 +41,10 @@ export const ncbiBlastGradient: ColorType = { keys: [0, 40, 50, 80, 200], }; -export function colorNcbiBlastGradient(canvasObj: fabric.Object, start: number, end: number) { +export function colorNcbiBlastGradient(canvasObj: FabricObject, start: number, end: number) { canvasObj.set( 'fill', - new fabric.Gradient({ + new Gradient({ type: 'linear', coords: { x1: start, diff --git a/src/custom-events.ts b/src/custom-events.ts index 0acee2f..1875f63 100644 --- a/src/custom-events.ts +++ b/src/custom-events.ts @@ -1,4 +1,4 @@ -import { fabric } from 'fabric'; +import { FabricObject, Group } from 'fabric'; import { TextType, RectType, ColorSchemeEnum, RenderOptions } from './custom-types'; import { VisualOutput } from './visual-output-app'; import { Hsp, IprMatchFlat } from './data-model'; @@ -6,14 +6,14 @@ import { FunctionalPredictions } from './functional-predictions-app'; import { drawURLInfoTooltip, drawDomainTooltips, drawDomainInfoTooltips } from './drawing-utilities'; export function mouseOverText( - fabricObj: fabric.Object, + fabricObj: FabricObject, textObj: TextType, sequence: string, URL: string, renderOptions: RenderOptions, _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on('mouseover', (e: fabric.IEvent) => { + fabricObj.on('mouseover', (e: any) => { if (e.target) { e.target.set('hoverCursor', 'pointer'); e.target.setOptions(textObj); @@ -27,8 +27,8 @@ export function mouseOverText( }); } -export function mouseDownText(fabricObj: fabric.Object, href: string, _this: VisualOutput | FunctionalPredictions) { - fabricObj.on('mousedown', (e: fabric.IEvent) => { +export function mouseDownText(fabricObj: FabricObject, href: string, _this: VisualOutput | FunctionalPredictions) { + fabricObj.on('mousedown', (e: any) => { if (e.target) { window.open(href, '_blank'); _this.canvas.renderAll(); @@ -36,8 +36,8 @@ export function mouseDownText(fabricObj: fabric.Object, href: string, _this: Vis }); } -export function mouseOutText(fabricObj: fabric.Object, textObj: TextType, _this: VisualOutput | FunctionalPredictions) { - fabricObj.on('mouseout', (e: fabric.IEvent) => { +export function mouseOutText(fabricObj: FabricObject, textObj: TextType, _this: VisualOutput | FunctionalPredictions) { + fabricObj.on('mouseout', (e: any) => { if (e.target) { e.target.setOptions(textObj); e.target.setOptions({ underline: false }); @@ -51,7 +51,7 @@ function isHsp(object: any): object is Hsp { } export function mouseOverDomain( - fabricObj: fabric.Object, + fabricObj: FabricObject, startPixels: number, endPixels: number, seq_from: number, @@ -60,10 +60,10 @@ export function mouseOverDomain( renderOptions: RenderOptions, _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on('mouseover', (e: fabric.IEvent) => { + fabricObj.on('mouseover', (e: any) => { if (e.target) { e.target.set('hoverCursor', 'pointer'); - let tooltipGroup: fabric.Group; + let tooltipGroup: Group; if (isHsp(domain)) { // Query/Subject tooltip tooltipGroup = drawDomainTooltips( @@ -89,16 +89,17 @@ export function mouseOverDomain( } _this.canvas.add(tooltipGroup); tooltipGroup.set({ visible: true }); - fabricObj.bringToFront(); - tooltipGroup.bringToFront(); + // FIXME + // fabricObj.bringToFront(); + // tooltipGroup.bringToFront(); _this.canvas.renderAll(); tooltipGroup.set({ visible: false }); } }); } -export function mouseOutDomain(fabricObj: fabric.Object, _this: VisualOutput | FunctionalPredictions) { - fabricObj.on('mouseout', (e: fabric.IEvent) => { +export function mouseOutDomain(fabricObj: FabricObject, _this: VisualOutput | FunctionalPredictions) { + fabricObj.on('mouseout', (e: any) => { if (e.target) { _this.canvas.renderAll(); } @@ -106,11 +107,11 @@ export function mouseOutDomain(fabricObj: fabric.Object, _this: VisualOutput | F } export function mouseOverCheckbox( - fabricObj: fabric.Object, + fabricObj: FabricObject, textObj: TextType, _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on('mouseover', (e: fabric.IEvent) => { + fabricObj.on('mouseover', (e: any) => { if (e.target) { e.target.set('hoverCursor', 'pointer'); e.target.setOptions(textObj); @@ -121,11 +122,11 @@ export function mouseOverCheckbox( } export function mouseDownCheckbox( - fabricObj: fabric.Object, + fabricObj: FabricObject, value: ColorSchemeEnum, _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on('mousedown', (e: fabric.IEvent) => { + fabricObj.on('mousedown', (e: any) => { if (e.target) { if (_this.colorScheme != value) { _this.colorScheme = value; @@ -136,12 +137,12 @@ export function mouseDownCheckbox( } export function mouseOutCheckbox( - fabricObj: fabric.Object, + fabricObj: FabricObject, textObj: TextType, value: ColorSchemeEnum, _this: VisualOutput | FunctionalPredictions ) { - fabricObj.on('mouseout', (e: fabric.IEvent) => { + fabricObj.on('mouseout', (e: any) => { if (e.target) { e.target.setOptions(textObj); if (_this.colorScheme != value) { @@ -155,12 +156,12 @@ export function mouseOutCheckbox( } export function mouseOverDomainCheckbox( - fabricObj: fabric.Object, + fabricObj: FabricObject, rectObj: RectType, currentDomainDatabase: string, _this: FunctionalPredictions ) { - fabricObj.on('mouseover', (e: fabric.IEvent) => { + fabricObj.on('mouseover', (e: any) => { if (e.target) { e.target.set('hoverCursor', 'pointer'); e.target.setOptions(rectObj); @@ -184,11 +185,11 @@ export function mouseOverDomainCheckbox( } export function mouseDownDomainCheckbox( - fabricObj: fabric.Object, + fabricObj: FabricObject, currentDomainDatabase: string, _this: FunctionalPredictions ) { - fabricObj.on('mousedown', (e: fabric.IEvent) => { + fabricObj.on('mousedown', (e: any) => { if (e.target) { if ( !_this.domainDatabaseList.includes(currentDomainDatabase) && @@ -210,12 +211,12 @@ export function mouseDownDomainCheckbox( } export function mouseOutDomainCheckbox( - fabricObj: fabric.Object, + fabricObj: FabricObject, rectObj: RectType, currentDomainDatabase: string, _this: FunctionalPredictions ) { - fabricObj.on('mouseout', (e: fabric.IEvent) => { + fabricObj.on('mouseout', (e: any) => { if (e.target) { let currentDomainDatabaseDisabled = false; if (!_this.uniqueDomainDatabases.includes(currentDomainDatabase)) { diff --git a/src/drawing-utilities.ts b/src/drawing-utilities.ts index eab3f55..073500d 100644 --- a/src/drawing-utilities.ts +++ b/src/drawing-utilities.ts @@ -1,4 +1,4 @@ -import { fabric } from 'fabric'; +import { Group, FabricText, Line, Rect, Textbox } from 'fabric'; import { numberToString } from './other-utilities'; import { SSSResultModel, Hit, Hsp, IprMatchFlat } from './data-model'; import { getTotalPixels, getTextLegendPaddingFactor } from './coords-utilities'; @@ -16,11 +16,7 @@ import { } from './custom-types'; import { colorByDatabaseName } from './color-utilities'; -export function drawHeaderTextGroup( - dataObj: SSSResultModel, - renderOptions: RenderOptions, - topPadding: number -): fabric.Group { +export function drawHeaderTextGroup(dataObj: SSSResultModel, renderOptions: RenderOptions, topPadding: number): Group { const origTopPadding = topPadding; const textObj = { ...textDefaults }; textObj.fontWeight = 'bold'; @@ -31,7 +27,7 @@ export function drawHeaderTextGroup( // program & version const program = dataObj.program; const version = dataObj.version; - const programText = new fabric.Text(`${program} (version: ${version})`, textObj); + const programText = new FabricText(`${program} (version: ${version})`, textObj); // Database(s) let db_names: string[] = []; for (const db of dataObj.dbs) { @@ -42,26 +38,26 @@ export function drawHeaderTextGroup( textObj.fontSize = renderOptions.fontSize!; topPadding += 15; textObj.top = topPadding; - const databaseText = new fabric.Text(`Database(s): ${dbs}`, textObj); + const databaseText = new FabricText(`Database(s): ${dbs}`, textObj); // Sequence topPadding += 15; textObj.top = topPadding; - const sequenceText = new fabric.Text('Sequence: ', textObj); + const sequenceText = new FabricText('Sequence: ', textObj); // Length const length = dataObj.query_len; topPadding += 15; textObj.top = topPadding; - const lengthText = new fabric.Text(`Length: ${length}`, textObj); + const lengthText = new FabricText(`Length: ${length}`, textObj); // Start const start = dataObj.start; textObj.top = origTopPadding; textObj.left = renderOptions.canvasWidth! - 135; - const startText = new fabric.Text(`${start}`, textObj); + const startText = new FabricText(`${start}`, textObj); // End const end = dataObj.end; textObj.top = origTopPadding + 15; - const endText = new fabric.Text(`${end}`, textObj); - const textGroup = new fabric.Group( + const endText = new FabricText(`${end}`, textObj); + const textGroup = new Group( [programText, databaseText, sequenceText, lengthText, startText, endText], objectDefaults ); @@ -72,7 +68,7 @@ export function drawHeaderLinkText( dataObj: SSSResultModel, renderOptions: RenderOptions, topPadding: number -): [fabric.Text, TextType] { +): [FabricText, TextType] { // Sequence const sequence = dataObj.query_def; const textSeqObj = { ...textDefaults }; @@ -81,7 +77,7 @@ export function drawHeaderLinkText( textSeqObj.evented = true; textSeqObj.top = topPadding - 15; textSeqObj.left = 57.5; - const sequenceDefText = new fabric.Text(`${sequence}`, textSeqObj); + const sequenceDefText = new FabricText(`${sequence}`, textSeqObj); return [sequenceDefText, textSeqObj]; } @@ -89,7 +85,7 @@ export function drawContentHeaderTextGroup( coordValues: CoordsValues, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { const textObj = { ...textDefaults }; textObj.fontWeight = 'bold'; textObj.fontSize = renderOptions.fontSize! + 1; @@ -111,22 +107,22 @@ export function drawContentHeaderTextGroup( ); // Query Match textObj.left = coordValues.startQueryPixels; - const queryText = new fabric.Text('Sequence Match', textObj); + const queryText = new FabricText('Sequence Match', textObj); queryText.width = totalQueryPixels; textObj.left = coordValues.startEvalPixels; let evalueText; // E-value/ Bits if (renderOptions.colorScheme === ColorSchemeEnum.ncbiblast) { - evalueText = new fabric.Text('Bit score', textObj); + evalueText = new FabricText('Bit score', textObj); } else { - evalueText = new fabric.Text('E-value', textObj); + evalueText = new FabricText('E-value', textObj); } - evalueText.width = renderOptions.contentScoringWidth; + evalueText.width = renderOptions.contentScoringWidth as number; // Subject Match textObj.left = coordValues.startSubjPixels; - const subjText = new fabric.Text('Subject Match', textObj); + const subjText = new FabricText('Subject Match', textObj); subjText.width = totalSubjPixels; - const textGroup = new fabric.Group([queryText, evalueText, subjText], objectDefaults); + const textGroup = new Group([queryText, evalueText, subjText], objectDefaults); return textGroup; } @@ -134,7 +130,7 @@ export function drawLineTracksQuerySubject( coordValues: CoordsValues, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { const lineObj = { ...lineDefaults }; lineObj.top = topPadding; lineObj.stroke = 'black'; @@ -147,7 +143,7 @@ export function drawLineTracksQuerySubject( topPadding, ]; lineObj.left = coordValues.startQueryPixels; - const queryLine = new fabric.Line(coordsQuery, lineObj); + const queryLine = new Line(coordsQuery, lineObj); const coordsQueryStartCap: [number, number, number, number] = [ coordValues.startQueryPixels!, @@ -156,7 +152,7 @@ export function drawLineTracksQuerySubject( topPadding + 3, ]; lineObj.top = topPadding - 2; - const queryStartCap = new fabric.Line(coordsQueryStartCap, lineObj); + const queryStartCap = new Line(coordsQueryStartCap, lineObj); const coordsQueryEndCap: [number, number, number, number] = [ coordValues.endQueryPixels!, @@ -165,7 +161,7 @@ export function drawLineTracksQuerySubject( topPadding + 3, ]; lineObj.left = coordValues.endQueryPixels; - const queryEndCap = new fabric.Line(coordsQueryEndCap, lineObj); + const queryEndCap = new Line(coordsQueryEndCap, lineObj); // Subject const coordsSubj: [number, number, number, number] = [ @@ -176,7 +172,7 @@ export function drawLineTracksQuerySubject( ]; lineObj.top = topPadding; lineObj.left = coordValues.startSubjPixels; - const subjLine = new fabric.Line(coordsSubj, lineObj); + const subjLine = new Line(coordsSubj, lineObj); const coordsSubjStartCap: [number, number, number, number] = [ coordValues.startSubjPixels!, @@ -185,7 +181,7 @@ export function drawLineTracksQuerySubject( topPadding + 3, ]; lineObj.top = topPadding - 2; - const subjStartCap = new fabric.Line(coordsSubjStartCap, lineObj); + const subjStartCap = new Line(coordsSubjStartCap, lineObj); const coordsSubjEndCap: [number, number, number, number] = [ coordValues.endSubjPixels!, @@ -194,21 +190,17 @@ export function drawLineTracksQuerySubject( topPadding + 3, ]; lineObj.left = coordValues.endSubjPixels; - const subjEndCap = new fabric.Line(coordsSubjEndCap, lineObj); + const subjEndCap = new Line(coordsSubjEndCap, lineObj); // Group - const lineGroup = new fabric.Group( + const lineGroup = new Group( [queryLine, subjLine, queryStartCap, queryEndCap, subjStartCap, subjEndCap], objectDefaults ); return lineGroup; } -export function drawLineTracks( - coordValues: CoordsValues, - renderOptions: RenderOptions, - topPadding: number -): fabric.Group { +export function drawLineTracks(coordValues: CoordsValues, renderOptions: RenderOptions, topPadding: number): Group { const lineObj = { ...lineDefaults }; lineObj.top = topPadding; lineObj.stroke = 'black'; @@ -221,7 +213,7 @@ export function drawLineTracks( topPadding, ]; lineObj.left = coordValues.startPixels; - const Line = new fabric.Line(coordsQuery, lineObj); + const line = new Line(coordsQuery, lineObj); const coordsStartCap: [number, number, number, number] = [ coordValues.startPixels!, @@ -230,7 +222,7 @@ export function drawLineTracks( topPadding + 3, ]; lineObj.top = topPadding - 2; - const startCap = new fabric.Line(coordsStartCap, lineObj); + const startCap = new Line(coordsStartCap, lineObj); const coordsEndCap: [number, number, number, number] = [ coordValues.endPixels!, @@ -239,10 +231,10 @@ export function drawLineTracks( topPadding + 3, ]; lineObj.left = coordValues.endPixels; - const endCap = new fabric.Line(coordsEndCap, lineObj); + const endCap = new Line(coordsEndCap, lineObj); // Group - const lineGroup = new fabric.Group([Line, startCap, endCap], objectDefaults); + const lineGroup = new Group([line, startCap, endCap], objectDefaults); return lineGroup; } @@ -250,7 +242,7 @@ export function drawDomainLineTracks( coordValues: CoordsValues, renderOptions: RenderOptions, topPadding: number -): fabric.Line { +): Line { const lineObj = { ...lineDefaults }; lineObj.top = topPadding; lineObj.stroke = 'black'; @@ -264,25 +256,25 @@ export function drawDomainLineTracks( topPadding, ]; lineObj.left = coordValues.startPixels; - return new fabric.Line(coordsQuery, lineObj); + return new Line(coordsQuery, lineObj); } export function drawContentFooterTextGroup( coordValues: CoordsValues, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { const textObj = { ...textDefaults }; textObj.fontSize = renderOptions.fontSize; textObj.top = topPadding; // Start Query/Subject textObj.left = coordValues.startPixels! - 2.5; - const startText = new fabric.Text(`${coordValues.start}`, textObj); + const startText = new FabricText(`${coordValues.start}`, textObj); // End Query/Subject let positionFactor: number = getTextLegendPaddingFactor(`${coordValues.end}`); textObj.left = coordValues.endPixels! - positionFactor; - const endText = new fabric.Text(`${coordValues.end}`, textObj); - const textGroup = new fabric.Group([startText, endText], objectDefaults); + const endText = new FabricText(`${coordValues.end}`, textObj); + const textGroup = new Group([startText, endText], objectDefaults); return textGroup; } @@ -290,36 +282,36 @@ export function drawContentQuerySubjFooterTextGroup( coordValues: CoordsValues, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { const textObj = { ...textDefaults }; textObj.fontSize = renderOptions.fontSize; textObj.top = topPadding; // Start Query textObj.left = coordValues.startQueryPixels! - 2.5; - const startQueryText = new fabric.Text('1', textObj); + const startQueryText = new FabricText('1', textObj); // End Query let positionFactor: number = getTextLegendPaddingFactor(`${coordValues.queryLen}`); textObj.left = coordValues.endQueryPixels! - positionFactor; - const endQueryText = new fabric.Text(`${coordValues.queryLen}`, textObj); + const endQueryText = new FabricText(`${coordValues.queryLen}`, textObj); // Start Subject textObj.left = coordValues.startSubjPixels! - 2.5; - const startSubjText = new fabric.Text('1', textObj); + const startSubjText = new FabricText('1', textObj); // End Subject positionFactor = getTextLegendPaddingFactor(`${coordValues.subjLen}`); textObj.left = coordValues.endSubjPixels! - positionFactor; - const endSubjText = new fabric.Text(`${coordValues.subjLen}`, textObj); - const textGroup = new fabric.Group([startQueryText, endQueryText, startSubjText, endSubjText], objectDefaults); + const endSubjText = new FabricText(`${coordValues.subjLen}`, textObj); + const textGroup = new Group([startQueryText, endQueryText, startSubjText, endSubjText], objectDefaults); return textGroup; } -export function drawNoHitsFoundText(renderOptions: RenderOptions, topPadding: number): fabric.Text { +export function drawNoHitsFoundText(renderOptions: RenderOptions, topPadding: number): FabricText { const textObj = { ...textDefaults }; textObj.fontWeight = 'bold'; textObj.fontSize = renderOptions.fontSize! + 1; textObj.top = topPadding; textObj.left = renderOptions.contentWidth! / 2; textObj.fill = 'red'; - const noHitsText = new fabric.Text('--------------------No hits found--------------------', textObj); + const noHitsText = new FabricText('--------------------No hits found--------------------', textObj); return noHitsText; } @@ -328,7 +320,7 @@ export function drawContentSequenceInfoText( hit: Hit, renderOptions: RenderOptions, topPadding: number -): [fabric.Text, fabric.Text, TextType] { +): [FabricText, FabricText, TextType] { // Hit ID + Hit Description text tracks const textObj = { ...textDefaults }; textObj.fontFamily = 'Menlo'; @@ -336,7 +328,7 @@ export function drawContentSequenceInfoText( textObj.top = topPadding - 2; const variableSpace = ' '.repeat(maxIDLen - (hit.hit_db.length + hit.hit_id.length)); - const spaceText: fabric.Text = new fabric.Text(variableSpace, textObj); + const spaceText: FabricText = new FabricText(variableSpace, textObj); let hit_def: string = `${hit.hit_db}:${hit.hit_id} ${hit.hit_desc}`; let hit_def_full: string = `${variableSpace}${hit.hit_db}:${hit.hit_id} ${hit.hit_desc}`; @@ -345,7 +337,7 @@ export function drawContentSequenceInfoText( } textObj.left = 10 + variableSpace.length * 6; textObj.evented = true; - const hitText: fabric.Text = new fabric.Text(hit_def, textObj); + const hitText: FabricText = new FabricText(hit_def, textObj); return [spaceText, hitText, textObj]; } @@ -354,14 +346,14 @@ export function drawHspNoticeText( numberHsps: number, renderOptions: RenderOptions, topPadding: number -): fabric.Text { +): FabricText { // notice about not all HSPs being displayed const textObj = { ...textDefaults }; textObj.fontSize = renderOptions.fontSize!; textObj.top = topPadding; textObj.left = renderOptions.contentWidth! / 2; textObj.fill = 'red'; - const hspTextNotice = new fabric.Text( + const hspTextNotice = new FabricText( `This hit contains ${totalNumberHsps} alignments, ` + `but only the first ${numberHsps} are displayed!`, textObj ); @@ -373,7 +365,7 @@ export function drawScoreText( hsp: Hsp, renderOptions: RenderOptions, topPadding: number -): fabric.Text { +): FabricText { // E-value text tracks const textObj = { ...textDefaults }; textObj.fontSize = renderOptions.fontSize; @@ -381,11 +373,11 @@ export function drawScoreText( textObj.textAlign = 'center'; textObj.left = startEvalPixels; - let hspScoreText: fabric.Text; + let hspScoreText: FabricText; if (renderOptions.colorScheme === ColorSchemeEnum.ncbiblast) { - hspScoreText = new fabric.Text(numberToString(hsp.hsp_bit_score!), textObj); + hspScoreText = new FabricText(numberToString(hsp.hsp_bit_score!), textObj); } else { - hspScoreText = new fabric.Text(numberToString(hsp.hsp_expect!), textObj); + hspScoreText = new FabricText(numberToString(hsp.hsp_expect!), textObj); } return hspScoreText; } @@ -397,7 +389,7 @@ export function drawDomainQueySubject( endSubjPixels: number, topPadding: number, fill: string -): [fabric.Rect, fabric.Rect] { +): [Rect, Rect] { const rectObj = { ...rectDefaults }; rectObj.evented = true; rectObj.top = topPadding; @@ -409,14 +401,14 @@ export function drawDomainQueySubject( rectObj.left = startQueryPixels; rectObj.width = endQueryPixels; rectObj.height = 10; - const queryDomain = new fabric.Rect(rectObj); + const queryDomain = new Rect(rectObj); // Subject rectObj.top = topPadding - 15; rectObj.left = startSubjPixels; rectObj.width = endSubjPixels; rectObj.height = 10; - const subjDomain = new fabric.Rect(rectObj); + const subjDomain = new Rect(rectObj); return [queryDomain, subjDomain]; } @@ -429,7 +421,7 @@ export function drawDomainTooltips( hsp: Hsp, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { const floatTextObj = { ...textDefaults }; floatTextObj.fontSize = renderOptions.fontSize! + 1; floatTextObj.textAlign = 'left'; @@ -442,7 +434,7 @@ export function drawDomainTooltips( } else { tooltip = `Start: ${seq_from}\nEnd: ${seq_to}\nE-value: ${numberToString(hsp.hsp_expect!)}`; } - const tooltipText = new fabric.Text(tooltip, floatTextObj); + const tooltipText = new FabricText(tooltip, floatTextObj); const rectObj = { ...rectDefaults }; rectObj.fill = 'white'; rectObj.stroke = 'lightseagreen'; @@ -454,8 +446,8 @@ export function drawDomainTooltips( rectObj.height = 60; rectObj.opacity = 0.95; - const tooltipBox: fabric.Rect = new fabric.Rect(rectObj); - const tooltipGroup: fabric.Group = new fabric.Group([tooltipBox, tooltipText], { + const tooltipBox: Rect = new Rect(rectObj); + const tooltipGroup: Group = new Group([tooltipBox, tooltipText], { selectable: false, evented: false, objectCaching: false, @@ -466,20 +458,20 @@ export function drawDomainTooltips( return tooltipGroup; } -export function drawScaleTypeText(renderOptions: RenderOptions, topPadding: number): fabric.Text { +export function drawScaleTypeText(renderOptions: RenderOptions, topPadding: number): FabricText { const textSelObj = { ...textDefaults }; textSelObj.fontSize = renderOptions.fontSize! + 1; textSelObj.fontWeight = 'bold'; textSelObj.top = topPadding; textSelObj.left = renderOptions.scaleLabelWidth!; - const scaleTypeText = new fabric.Text('Scale Type:', textSelObj); + const scaleTypeText = new FabricText('Scale Type:', textSelObj); return scaleTypeText; } export function drawCheckBoxText( renderOptions: RenderOptions, topPadding: number -): [fabric.Text, fabric.Text, TextType, fabric.Text, fabric.Text, TextType, fabric.Text, fabric.Text, TextType] { +): [FabricText, FabricText, TextType, FabricText, FabricText, TextType, FabricText, FabricText, TextType] { // Scale Type selection const textSelObj = { ...textDefaults }; textSelObj.fontSize = renderOptions.fontSize! + 1; @@ -499,23 +491,23 @@ export function drawCheckBoxText( renderOptions.colorScheme === ColorSchemeEnum.dynamic ? (checkSym = '☒') : (checkSym = '☐'); if (renderOptions.colorScheme === ColorSchemeEnum.dynamic) textCheckDynObj.fill = 'black'; textCheckDynObj.left! += 80; - const dynamicCheckboxText = new fabric.Text(checkSym, textCheckDynObj); + const dynamicCheckboxText = new FabricText(checkSym, textCheckDynObj); textSelObj.left! += 100; - const dynamicText = new fabric.Text('Dynamic (E-value: min to max)', textSelObj); + const dynamicText = new FabricText('Dynamic (E-value: min to max)', textSelObj); renderOptions.colorScheme! === ColorSchemeEnum.fixed ? (checkSym = '☒') : (checkSym = '☐'); if (renderOptions.colorScheme! === ColorSchemeEnum.fixed) textCheckFixObj.fill = 'black'; textCheckFixObj.left! += 290; - const fixedCheckboxText = new fabric.Text(checkSym, textCheckFixObj); + const fixedCheckboxText = new FabricText(checkSym, textCheckFixObj); textSelObj.left! += 210; - const fixedText = new fabric.Text('Fixed (E-value: 0.0 to 100.0)', textSelObj); + const fixedText = new FabricText('Fixed (E-value: 0.0 to 100.0)', textSelObj); renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast ? (checkSym = '☒') : (checkSym = '☐'); if (renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast) textCheckNcbiObj.fill = 'black'; textCheckNcbiObj.left! += 480; - const ncbiblastCheckboxText = new fabric.Text(checkSym, textCheckNcbiObj); + const ncbiblastCheckboxText = new FabricText(checkSym, textCheckNcbiObj); textSelObj.left! += 190; - const ncbiblastText = new fabric.Text('NCBI BLAST+ (Bit score: <40 to ≥200)', textSelObj); + const ncbiblastText = new FabricText('NCBI BLAST+ (Bit score: <40 to ≥200)', textSelObj); return [ dynamicCheckboxText, @@ -530,7 +522,7 @@ export function drawCheckBoxText( ]; } -export function drawScaleScoreText(renderOptions: RenderOptions, topPadding: number): fabric.Text { +export function drawScaleScoreText(renderOptions: RenderOptions, topPadding: number): FabricText { const textObj = { ...textDefaults }; textObj.fontSize = renderOptions.fontSize! + 1; textObj.top = topPadding; @@ -541,17 +533,17 @@ export function drawScaleScoreText(renderOptions: RenderOptions, topPadding: num renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast ? (textObj.left = renderOptions.scaleLabelWidth! - 56) : (textObj.left = renderOptions.scaleLabelWidth! - 50); - const scaleScoreText = new fabric.Text(`${scaleTypeLabel}`, textObj); + const scaleScoreText = new FabricText(`${scaleTypeLabel}`, textObj); return scaleScoreText; } -export function drawScaleColorGradient(renderOptions: RenderOptions, topPadding: number): fabric.Rect { +export function drawScaleColorGradient(renderOptions: RenderOptions, topPadding: number): Rect { const rectObj = { ...rectDefaults }; rectObj.top = topPadding; rectObj.left = renderOptions.scaleLabelWidth!; rectObj.width = renderOptions.scaleWidth!; rectObj.height = 15; - const colorScale = new fabric.Rect(rectObj); + const colorScale = new Rect(rectObj); if (renderOptions.colorScheme! === ColorSchemeEnum.ncbiblast) { colorNcbiBlastGradient(colorScale, 0, renderOptions.scaleWidth!); } else { @@ -568,7 +560,7 @@ export function drawLineAxis5Buckets( endGradPixels: number, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { // Axis const lineObj = { ...lineDefaults }; lineObj.top = topPadding; @@ -576,7 +568,7 @@ export function drawLineAxis5Buckets( lineObj.strokeWidth = renderOptions.strokeWidth!; const coordsAxis: [number, number, number, number] = [startGradPixels, topPadding, endGradPixels, topPadding]; lineObj.left = startGradPixels; - const axisLine = new fabric.Line(coordsAxis, lineObj); + const axisLine = new Line(coordsAxis, lineObj); // Start tick const coordsAxisStartTick: [number, number, number, number] = [ @@ -585,22 +577,22 @@ export function drawLineAxis5Buckets( startGradPixels, topPadding + 4, ]; - const axisStartTick = new fabric.Line(coordsAxisStartTick, lineObj); + const axisStartTick = new Line(coordsAxisStartTick, lineObj); // 25% tick const coordsAxis25Tick: [number, number, number, number] = [o25GradPixels, topPadding, o25GradPixels, topPadding + 4]; lineObj.left = o25GradPixels; - const axis25Tick = new fabric.Line(coordsAxis25Tick, lineObj); + const axis25Tick = new Line(coordsAxis25Tick, lineObj); // 50% tick const coordsAxis50Tick: [number, number, number, number] = [o50GradPixels, topPadding, o50GradPixels, topPadding + 4]; lineObj.left = o50GradPixels; - const axis50Tick = new fabric.Line(coordsAxis50Tick, lineObj); + const axis50Tick = new Line(coordsAxis50Tick, lineObj); // 75% tick const coordsAxis75Tick: [number, number, number, number] = [o75GradPixels, topPadding, o75GradPixels, topPadding + 4]; lineObj.left = o75GradPixels; - const axis75Tick = new fabric.Line(coordsAxis75Tick, lineObj); + const axis75Tick = new Line(coordsAxis75Tick, lineObj); // End tick const coordsAxisEndTick: [number, number, number, number] = [ @@ -610,10 +602,10 @@ export function drawLineAxis5Buckets( topPadding + 4, ]; lineObj.left = endGradPixels; - const axisEndTick = new fabric.Line(coordsAxisEndTick, lineObj); + const axisEndTick = new Line(coordsAxisEndTick, lineObj); // Group - const axisGroup = new fabric.Group( + const axisGroup = new Group( [axisLine, axisStartTick, axis25Tick, axis50Tick, axis75Tick, axisEndTick], objectDefaults ); @@ -629,7 +621,7 @@ export function drawLineAxis6Buckets( endGradPixels: number, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { // Axis const lineObj = { ...lineDefaults }; lineObj.top = topPadding; @@ -637,7 +629,7 @@ export function drawLineAxis6Buckets( lineObj.strokeWidth = renderOptions.strokeWidth!; const coordsAxis: [number, number, number, number] = [startGradPixels, topPadding, endGradPixels, topPadding]; lineObj.left = startGradPixels; - const axisLine = new fabric.Line(coordsAxis, lineObj); + const axisLine = new Line(coordsAxis, lineObj); // Start tick const coordsAxisStartTick: [number, number, number, number] = [ @@ -646,27 +638,27 @@ export function drawLineAxis6Buckets( startGradPixels, topPadding + 4, ]; - const axisStartTick = new fabric.Line(coordsAxisStartTick, lineObj); + const axisStartTick = new Line(coordsAxisStartTick, lineObj); // 20% tick const coordsAxis20Tick: [number, number, number, number] = [o20GradPixels, topPadding, o20GradPixels, topPadding + 4]; lineObj.left = o20GradPixels; - const axis20Tick = new fabric.Line(coordsAxis20Tick, lineObj); + const axis20Tick = new Line(coordsAxis20Tick, lineObj); // 40% tick const coordsAxis40Tick: [number, number, number, number] = [o40GradPixels, topPadding, o40GradPixels, topPadding + 4]; lineObj.left = o40GradPixels; - const axis40Tick = new fabric.Line(coordsAxis40Tick, lineObj); + const axis40Tick = new Line(coordsAxis40Tick, lineObj); // 60% tick const coordsAxis60Tick: [number, number, number, number] = [o60GradPixels, topPadding, o60GradPixels, topPadding + 4]; lineObj.left = o60GradPixels; - const axis60Tick = new fabric.Line(coordsAxis60Tick, lineObj); + const axis60Tick = new Line(coordsAxis60Tick, lineObj); // 80% tick const coordsAxis80Tick: [number, number, number, number] = [o80GradPixels, topPadding, o80GradPixels, topPadding + 4]; lineObj.left = o80GradPixels; - const axis80Tick = new fabric.Line(coordsAxis80Tick, lineObj); + const axis80Tick = new Line(coordsAxis80Tick, lineObj); // End tick const coordsAxisEndTick: [number, number, number, number] = [ @@ -676,10 +668,10 @@ export function drawLineAxis6Buckets( topPadding + 4, ]; lineObj.left = endGradPixels; - const axisEndTick = new fabric.Line(coordsAxisEndTick, lineObj); + const axisEndTick = new Line(coordsAxisEndTick, lineObj); // Group - const axisGroup = new fabric.Group( + const axisGroup = new Group( [axisLine, axisStartTick, axis20Tick, axis40Tick, axis60Tick, axis80Tick, axisEndTick], objectDefaults ); @@ -691,35 +683,32 @@ export function drawScaleTick5LabelsGroup( leftPadding: number, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { const textObj = { ...textDefaults }; textObj.top = topPadding; textObj.fontSize = renderOptions.fontSize!; // 20% Tick Label let label = `<${gradientSteps[1]}`; textObj.left = renderOptions.scaleLabelWidth! + leftPadding - label.length * 3 - 72; - const o20LabelText = new fabric.Text(label, textObj); + const o20LabelText = new FabricText(label, textObj); // 40% Tick Label label = `${gradientSteps[1]} - ${gradientSteps[2]}`; textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 2 - label.length * 3 - 72; - const o40LabelText = new fabric.Text(label, textObj); + const o40LabelText = new FabricText(label, textObj); // 60% Tick Label label = `${gradientSteps[2]} - ${gradientSteps[3]}`; textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 3 - label.length * 3 - 72; - const o60LabelText = new fabric.Text(label, textObj); + const o60LabelText = new FabricText(label, textObj); // 60% Tick Label label = `${gradientSteps[3]} - ${gradientSteps[4]}`; textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 4 - label.length * 3 - 72; - const o80LabelText = new fabric.Text(label, textObj); + const o80LabelText = new FabricText(label, textObj); // End Tick Label label = `≥${gradientSteps[4]}`; textObj.left = renderOptions.scaleLabelWidth! + renderOptions.scaleWidth! - label.length * 3 - 72; - const endLabelText = new fabric.Text(label, textObj); + const endLabelText = new FabricText(label, textObj); - const textGroup = new fabric.Group( - [o20LabelText, o40LabelText, o60LabelText, o80LabelText, endLabelText], - objectDefaults - ); + const textGroup = new Group([o20LabelText, o40LabelText, o60LabelText, o80LabelText, endLabelText], objectDefaults); return textGroup; } @@ -728,35 +717,32 @@ export function drawScaleTick4LabelsGroup( leftPadding: number, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { const textObj = { ...textDefaults }; textObj.top = topPadding; textObj.fontSize = renderOptions.fontSize!; // Start Tick Label textObj.left = renderOptions.scaleLabelWidth! - numberToString(gradientSteps[0]).length * 3; - const startLabelText = new fabric.Text(numberToString(gradientSteps[0]), textObj); + const startLabelText = new FabricText(numberToString(gradientSteps[0]), textObj); // 25% Tick Label textObj.left = renderOptions.scaleLabelWidth! + leftPadding - numberToString(gradientSteps[1]).length * 3; - const o25LabelText = new fabric.Text(numberToString(gradientSteps[1]), textObj); + const o25LabelText = new FabricText(numberToString(gradientSteps[1]), textObj); // 50% Tick Label textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 2 - numberToString(gradientSteps[2]).length * 3; - const o50LabelText = new fabric.Text(numberToString(gradientSteps[2]), textObj); + const o50LabelText = new FabricText(numberToString(gradientSteps[2]), textObj); // 75% Tick Label textObj.left = renderOptions.scaleLabelWidth! + leftPadding * 3 - numberToString(gradientSteps[3]).length * 3; - const o75LabelText = new fabric.Text(numberToString(gradientSteps[3]), textObj); + const o75LabelText = new FabricText(numberToString(gradientSteps[3]), textObj); // End Tick Label textObj.left = renderOptions.scaleLabelWidth! + renderOptions.scaleWidth! - numberToString(gradientSteps[4]).length * 3; - const endLabelText = new fabric.Text(numberToString(gradientSteps[4]), textObj); + const endLabelText = new FabricText(numberToString(gradientSteps[4]), textObj); - const textGroup = new fabric.Group( - [startLabelText, o25LabelText, o50LabelText, o75LabelText, endLabelText], - objectDefaults - ); + const textGroup = new Group([startLabelText, o25LabelText, o50LabelText, o75LabelText, endLabelText], objectDefaults); return textGroup; } -export function drawFooterText(renderOptions: RenderOptions, topPadding: number): [fabric.Text, TextType] { +export function drawFooterText(renderOptions: RenderOptions, topPadding: number): [FabricText, TextType] { const textObj = { ...textDefaults }; textObj.fontSize = renderOptions.fontSize; textObj.evented = true; @@ -765,12 +751,12 @@ export function drawFooterText(renderOptions: RenderOptions, topPadding: number) const copyright = `European Bioinformatics Institute 2006-2022. ` + `EBI is an Outstation of the European Molecular Biology Laboratory.`; - const copyrightText = new fabric.Text(`${copyright}`, textObj); + const copyrightText = new FabricText(`${copyright}`, textObj); return [copyrightText, textObj]; } export function drawCanvasWrapperStroke(renderOptions: RenderOptions) { - const canvasWrapper = new fabric.Rect({ + const canvasWrapper = new Rect({ selectable: false, evented: false, objectCaching: false, @@ -785,37 +771,37 @@ export function drawCanvasWrapperStroke(renderOptions: RenderOptions) { return canvasWrapper; } -export function drawContentTitleText(renderOptions: RenderOptions, topPadding: number): fabric.Text { +export function drawContentTitleText(renderOptions: RenderOptions, topPadding: number): FabricText { const textObj = { ...textDefaults }; textObj.fontWeight = 'bold'; textObj.fontSize = renderOptions.fontSize! + 2; textObj.top = topPadding; textObj.left = 350; const title = 'Fast Family and Domain Prediction by InterPro'; - return new fabric.Text(`${title}`, textObj); + return new FabricText(`${title}`, textObj); } export function drawContentSupressText( renderOptions: RenderOptions, topPadding: number, numberHits: number -): fabric.Text { +): FabricText { const textObj = { ...textDefaults }; textObj.fontSize = renderOptions.fontSize!; textObj.top = topPadding; textObj.left = renderOptions.contentWidth! / 2; textObj.fill = 'red'; const title = `This is a partial representation of the result, ` + `only the first ${numberHits} hits are displayed!`; - return new fabric.Text(`${title}`, textObj); + return new FabricText(`${title}`, textObj); } -export function drawProteinFeaturesText(renderOptions: RenderOptions, topPadding: number): fabric.Text { +export function drawProteinFeaturesText(renderOptions: RenderOptions, topPadding: number): FabricText { const textSelObj = { ...textDefaults }; textSelObj.fontSize = renderOptions.fontSize! + 1; textSelObj.fontWeight = 'bold'; textSelObj.top = topPadding; textSelObj.left = renderOptions.scaleLabelWidth! - 10; - const scaleTypeText = new fabric.Text('Select your database:', textSelObj); + const scaleTypeText = new FabricText('Select your database:', textSelObj); return scaleTypeText; } @@ -824,7 +810,7 @@ export function drawDomainCheckbox( topPadding: number, leftPadding: number, currentDomainDatabase: string -): [fabric.Rect, fabric.Text, RectType, TextType] { +): [Rect, FabricText, RectType, TextType] { const rectObj = { ...rectDefaults }; rectObj.top = topPadding; rectObj.left = leftPadding; @@ -848,8 +834,8 @@ export function drawDomainCheckbox( rectObj.stroke = 'grey'; } - const proteinFeatureRect = new fabric.Rect(rectObj); - const proteinFeatureText = new fabric.Text(currentDomainDatabase, textObj); + const proteinFeatureRect = new Rect(rectObj); + const proteinFeatureText = new FabricText(currentDomainDatabase, textObj); return [proteinFeatureRect, proteinFeatureText, rectObj, rectObj]; } @@ -859,7 +845,7 @@ export function drawHitTransparentBox( topPadding: number, fill: string, height: number -): fabric.Rect { +): Rect { const rectObj = { ...rectDefaults }; rectObj.fill = fill; rectObj.opacity = 0.5; @@ -870,21 +856,21 @@ export function drawHitTransparentBox( rectObj.left = startPixels; rectObj.width = endPixels; rectObj.height = height; - return new fabric.Rect(rectObj); + return new Rect(rectObj); } export function drawContentDomainInfoText( domainID: string, renderOptions: RenderOptions, topPadding: number -): [fabric.Text, fabric.Text, TextType] { +): [FabricText, FabricText, TextType] { // Domain ID text tracks const textObj = { ...textDefaults }; textObj.fontFamily = 'Menlo'; textObj.fontSize = renderOptions.fontSize! - 2; textObj.top = topPadding - 5; const variableSpace = ' '.repeat(40 - domainID.length); - const spaceText: fabric.Text = new fabric.Text(variableSpace, textObj); + const spaceText: FabricText = new FabricText(variableSpace, textObj); let domain: string = `${domainID}`; let domain_full: string = `${variableSpace}${domainID}`; @@ -893,12 +879,12 @@ export function drawContentDomainInfoText( } textObj.left = 12 + variableSpace.length * 6; textObj.evented = true; - const hitText: fabric.Text = new fabric.Text(domain, textObj); + const hitText: FabricText = new FabricText(domain, textObj); return [spaceText, hitText, textObj]; } // TODO FIXME: fix boxes around the edges of the canvas -export function drawDomains(startPixels: number, endPixels: number, topPadding: number, color: string): fabric.Rect { +export function drawDomains(startPixels: number, endPixels: number, topPadding: number, color: string): Rect { const rectObj = { ...rectDefaults }; rectObj.evented = true; rectObj.top = topPadding; @@ -912,7 +898,7 @@ export function drawDomains(startPixels: number, endPixels: number, topPadding: rectObj.height = 10; rectObj.stroke = 'black'; rectObj.strokeWidth = 0.5; - return new fabric.Rect(rectObj); + return new Rect(rectObj); } export function drawDomainInfoTooltips( @@ -923,7 +909,7 @@ export function drawDomainInfoTooltips( domain: IprMatchFlat, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { const floatTextObj = { ...textDefaults }; floatTextObj.fontSize = renderOptions.fontSize! + 1; floatTextObj.textAlign = 'left'; @@ -943,7 +929,7 @@ export function drawDomainInfoTooltips( } else { tooltip += `ID: ${domain.id}\n` + `Name: ${domain.name}\n` + `Type: ${domain.type}\n`; } - const tooltipText = new fabric.Textbox(tooltip, floatTextObj); + const tooltipText = new Textbox(tooltip, floatTextObj); const rectObj = { ...rectDefaults }; rectObj.fill = 'white'; @@ -956,8 +942,8 @@ export function drawDomainInfoTooltips( rectObj.height = tooltipText.height!; rectObj.opacity = 0.95; - const tooltipBox: fabric.Rect = new fabric.Rect(rectObj); - const tooltipGroup: fabric.Group = new fabric.Group([tooltipBox, tooltipText], { + const tooltipBox: Rect = new Rect(rectObj); + const tooltipGroup: Group = new Group([tooltipBox, tooltipText], { selectable: false, evented: false, objectCaching: false, @@ -974,7 +960,7 @@ export function drawURLInfoTooltip( URL: string, renderOptions: RenderOptions, topPadding: number -): fabric.Group { +): Group { const floatTextObj = { ...textDefaults }; floatTextObj.fontSize = renderOptions.fontSize! + 1; floatTextObj.originX = 'left'; @@ -984,7 +970,7 @@ export function drawURLInfoTooltip( if (sequence.length > 150) { sequence = sequence.slice(0, 150) + '...'; } - let tooltipText: fabric.Text; + let tooltipText: FabricText; if (sequence !== '') { const seqLabel = sequence.length * 6.3; const urlLabel = URL.length * 6.3; @@ -993,11 +979,11 @@ export function drawURLInfoTooltip( } else { floatTextObj.width = urlLabel + 5; } - tooltipText = new fabric.Text(`${sequence}\n` + `${URL}`, floatTextObj); + tooltipText = new FabricText(`${sequence}\n` + `${URL}`, floatTextObj); } else { const urlLabel = URL.length * 6.3; floatTextObj.width = urlLabel + 5; - tooltipText = new fabric.Text(`${URL}`, floatTextObj); + tooltipText = new FabricText(`${URL}`, floatTextObj); } const rectObj = { ...rectDefaults }; rectObj.fill = 'white'; @@ -1011,8 +997,8 @@ export function drawURLInfoTooltip( rectObj.height = tooltipText.height! + 10; rectObj.opacity = 0.95; - const tooltipBox: fabric.Rect = new fabric.Rect(rectObj); - const tooltipGroup: fabric.Group = new fabric.Group([tooltipBox, tooltipText], { + const tooltipBox: Rect = new Rect(rectObj); + const tooltipGroup: Group = new Group([tooltipBox, tooltipText], { selectable: false, evented: false, objectCaching: false, diff --git a/src/functional-predictions-app.ts b/src/functional-predictions-app.ts index 011ab76..f4711e4 100644 --- a/src/functional-predictions-app.ts +++ b/src/functional-predictions-app.ts @@ -1,4 +1,4 @@ -import { fabric } from 'fabric'; +import { FabricObject, Rect, FabricText } from 'fabric'; import { SSSResultModel, IPRMCResultModelFlat } from './data-model'; import { getPixelCoords, getDomainPixelCoords } from './coords-utilities'; import { getGradientSteps, getRgbColorFixed, getRgbColorGradient, colorByDatabaseName } from './color-utilities'; @@ -89,8 +89,8 @@ function createDomainCheckbox( let rectObj: RectType; let textObj: TextType; - let rect: fabric.Rect; - let text: fabric.Text; + let rect: Rect; + let text: FabricText; [rect, text, rectObj, textObj] = drawDomainCheckbox( { currentDomainDatabase: _this.currentDomainDatabase, @@ -233,8 +233,8 @@ export class FunctionalPredictions extends BasicCanvasRenderer { private drawHeaderGroup() { // canvas header this.topPadding = 2; - let textHeaderGroup: fabric.Object; - textHeaderGroup = objCache.get('textHeaderGroup') as fabric.Object; + let textHeaderGroup: FabricObject; + textHeaderGroup = objCache.get('textHeaderGroup') as FabricObject; if (!textHeaderGroup) { textHeaderGroup = drawHeaderTextGroup( this.sssDataObj, @@ -250,9 +250,9 @@ export class FunctionalPredictions extends BasicCanvasRenderer { // canvas header (sequence info) this.topPadding += 45; - let textHeaderLink: fabric.Text; + let textHeaderLink: FabricText; let textSeqObj: TextType; - textHeaderLink = objCache.get('textHeaderLink') as fabric.Text; + textHeaderLink = objCache.get('textHeaderLink') as FabricText; textSeqObj = objCache.get('textHeaderLink_textSeqObj') as TextType; if (!textHeaderLink) { [textHeaderLink, textSeqObj] = drawHeaderLinkText(this.sssDataObj, { fontSize: this.fontSize }, this.topPadding); @@ -279,8 +279,8 @@ export class FunctionalPredictions extends BasicCanvasRenderer { private drawContentGroup() { // canvas content title this.topPadding += 25; - let titleText: fabric.Text; - titleText = objCache.get('titleText') as fabric.Text; + let titleText: FabricText; + titleText = objCache.get('titleText') as FabricText; if (!titleText) { titleText = drawContentTitleText( { @@ -320,8 +320,8 @@ export class FunctionalPredictions extends BasicCanvasRenderer { private drawPredictionsGroup() { // Protein Features - Database Selection - let pfLabelText: fabric.Text; - pfLabelText = objCache.get('pfLabelText') as fabric.Text; + let pfLabelText: FabricText; + pfLabelText = objCache.get('pfLabelText') as FabricText; if (!pfLabelText) { pfLabelText = drawProteinFeaturesText( { @@ -462,7 +462,7 @@ export class FunctionalPredictions extends BasicCanvasRenderer { if (tmpNumberHits <= this.numberHits) { // Hit ID + Hit Description text tracks let textObj: TextType; - let spaceText, hitText: fabric.Text; + let spaceText, hitText: FabricText; [spaceText, hitText, textObj] = drawContentSequenceInfoText( maxIDLen, hit, @@ -557,11 +557,12 @@ export class FunctionalPredictions extends BasicCanvasRenderer { this.topPadding ); this.canvas.add(dashedLineTrackGroup); - dashedLineTrackGroup.sendObjectToBack(); + // FIXME + // dashedLineTrackGroup.sendObjectToBack(); // draw domain ID text let textObj: TextType; - let spaceText, hitText: fabric.Text; + let spaceText, hitText: FabricText; [spaceText, hitText, textObj] = drawContentDomainInfoText( did.split('_')[1] + ' ►', { fontSize: this.fontSize }, @@ -638,8 +639,8 @@ export class FunctionalPredictions extends BasicCanvasRenderer { this.topPadding += 40; } else { // canvas content suppressed output - let supressText: fabric.Text; - supressText = objCache.get('supressText') as fabric.Text; + let supressText: FabricText; + supressText = objCache.get('supressText') as FabricText; if (!supressText) { supressText = drawContentSupressText( { @@ -672,7 +673,7 @@ export class FunctionalPredictions extends BasicCanvasRenderer { // Scale Type selection let textCheckDynObj, textCheckFixObj, textCheckNcbiObj: TextType; - let dynamicBoxText, dynamicText, fixedBoxText, fixedText, ncbiblastBoxText, ncbiblastText: fabric.Text; + let dynamicBoxText, dynamicText, fixedBoxText, fixedText, ncbiblastBoxText, ncbiblastText: FabricText; [ dynamicBoxText, dynamicText, @@ -800,7 +801,7 @@ export class FunctionalPredictions extends BasicCanvasRenderer { private drawFooterGroup() { this.topPadding += 30; - let copyrightText: fabric.Text; + let copyrightText: FabricText; let textFooterObj: TextType; [copyrightText, textFooterObj] = drawFooterText( { diff --git a/src/other-utilities.ts b/src/other-utilities.ts index 5a2cc70..6138d90 100644 --- a/src/other-utilities.ts +++ b/src/other-utilities.ts @@ -1,10 +1,10 @@ -import { fabric } from 'fabric'; +import { Canvas, StaticCanvas } from 'fabric'; import { xml2json } from 'xml-js'; import { SSSResultModel, IPRMCResultModel, IPRMCResultModelFlat, IprMatchesFlat, IprMatchFlat } from './data-model'; import { JobIdValitable, ColorSchemeEnum, jobIdDefaults } from './custom-types'; export class BasicCanvasRenderer { - public canvas: fabric.Canvas | fabric.StaticCanvas; + public canvas: Canvas | StaticCanvas; protected canvasWidth: number; protected canvasHeight: number; protected contentWidth: number; @@ -33,9 +33,9 @@ export class BasicCanvasRenderer { hoverCursor: 'default', }; if (this.staticCanvas) { - this.canvas = new fabric.StaticCanvas(this.element, startupDef); + this.canvas = new StaticCanvas(this.element, startupDef); } else { - this.canvas = new fabric.Canvas(this.element, startupDef); + this.canvas = new Canvas(this.element, startupDef); } } diff --git a/src/visual-output-app.ts b/src/visual-output-app.ts index 23e1631..1e85c04 100644 --- a/src/visual-output-app.ts +++ b/src/visual-output-app.ts @@ -1,4 +1,4 @@ -import { fabric } from 'fabric'; +import { FabricText, Group, Rect } from 'fabric'; import { SSSResultModel } from './data-model'; import { defaultGradient, ncbiBlastGradient } from './color-schemes'; import { getQuerySubjPixelCoords, getDomainPixelCoords } from './coords-utilities'; @@ -54,11 +54,7 @@ export class VisualOutput extends BasicCanvasRenderer { private queryFactor: number = 1.0; private subjFactor: number = 1.0; - constructor( - element: string | HTMLCanvasElement, - private dataObj: SSSResultModel, - renderOptions: RenderOptions - ) { + constructor(element: string | HTMLCanvasElement, private dataObj: SSSResultModel, renderOptions: RenderOptions) { super(element); renderOptions.canvasWidth != undefined ? (this.canvasWidth = renderOptions.canvasWidth) : (this.canvasWidth = 1000); @@ -176,8 +172,8 @@ export class VisualOutput extends BasicCanvasRenderer { private drawHeaderGroup() { // canvas header this.topPadding = 2; - let textHeaderGroup: fabric.Object; - textHeaderGroup = objCache.get('textHeaderGroup') as fabric.Object; + let textHeaderGroup: Group; + textHeaderGroup = objCache.get('textHeaderGroup') as Group; if (!textHeaderGroup) { textHeaderGroup = drawHeaderTextGroup( this.dataObj, @@ -193,9 +189,9 @@ export class VisualOutput extends BasicCanvasRenderer { // canvas header (sequence info) this.topPadding += 45; - let textHeaderLink: fabric.Text; + let textHeaderLink: FabricText; let textSeqObj: TextType; - textHeaderLink = objCache.get('textHeaderLink') as fabric.Text; + textHeaderLink = objCache.get('textHeaderLink') as FabricText; textSeqObj = objCache.get('textHeaderLink_textSeqObj') as TextType; if (!textHeaderLink) { [textHeaderLink, textSeqObj] = drawHeaderLinkText(this.dataObj, { fontSize: this.fontSize }, this.topPadding); @@ -223,8 +219,8 @@ export class VisualOutput extends BasicCanvasRenderer { if (this.dataObj.hits.length > 0) { // content header this.topPadding += 25; - let textContentHeaderGroup: fabric.Group; - textContentHeaderGroup = objCache.get('textContentHeaderGroup') as fabric.Group; + let textContentHeaderGroup: Group; + textContentHeaderGroup = objCache.get('textContentHeaderGroup') as Group; if (!textContentHeaderGroup) { textContentHeaderGroup = drawContentHeaderTextGroup( { @@ -248,8 +244,8 @@ export class VisualOutput extends BasicCanvasRenderer { // content header line tracks this.topPadding += 20; - let lineTrackGroup: fabric.Group; - lineTrackGroup = objCache.get('lineTrackGroup') as fabric.Group; + let lineTrackGroup: Group; + lineTrackGroup = objCache.get('lineTrackGroup') as Group; if (!lineTrackGroup) { lineTrackGroup = drawLineTracksQuerySubject( { @@ -266,8 +262,8 @@ export class VisualOutput extends BasicCanvasRenderer { this.canvas.add(lineTrackGroup); this.topPadding += 5; - let textContentFooterGroup: fabric.Group; - textContentFooterGroup = objCache.get('textContentFooterGroup') as fabric.Group; + let textContentFooterGroup: Group; + textContentFooterGroup = objCache.get('textContentFooterGroup') as Group; if (!textContentFooterGroup) { textContentFooterGroup = drawContentQuerySubjFooterTextGroup( { @@ -348,7 +344,7 @@ export class VisualOutput extends BasicCanvasRenderer { const totalNumberHsps: number = hit.hit_hsps.length; // Hit ID + Hit Description text tracks let textObj: TextType; - let spaceText, hitText: fabric.Text; + let spaceText, hitText: FabricText; [spaceText, hitText, textObj] = drawContentSequenceInfoText( maxIDLen, hit, @@ -440,7 +436,7 @@ export class VisualOutput extends BasicCanvasRenderer { color = getRgbColorGradient(hsp.hsp_expect!, this.gradientSteps, defaultGradient); } this.topPadding += 10; - let queryDomain, subjDomain: fabric.Rect; + let queryDomain, subjDomain: Rect; [queryDomain, subjDomain] = drawDomainQueySubject( startQueryHspPixels, endQueryHspPixels, @@ -499,8 +495,8 @@ export class VisualOutput extends BasicCanvasRenderer { } } else { if (this.logSkippedHsps === true) { - let hspTextNotice: fabric.Text; - hspTextNotice = objCache.get('hspTextNotice') as fabric.Text; + let hspTextNotice: FabricText; + hspTextNotice = objCache.get('hspTextNotice') as FabricText; if (!hspTextNotice) { hspTextNotice = drawHspNoticeText( totalNumberHsps, @@ -522,8 +518,8 @@ export class VisualOutput extends BasicCanvasRenderer { } else { // canvas content suppressed output this.topPadding += 20; - let supressText: fabric.Text; - supressText = objCache.get('supressText') as fabric.Text; + let supressText: FabricText; + supressText = objCache.get('supressText') as FabricText; if (!supressText) { supressText = drawContentSupressText( { @@ -556,7 +552,7 @@ export class VisualOutput extends BasicCanvasRenderer { // Scale Type selection let textCheckDynObj, textCheckFixObj, textCheckNcbiObj: TextType; - let dynamicBoxText, dynamicText, fixedBoxText, fixedText, ncbiblastBoxText, ncbiblastText: fabric.Text; + let dynamicBoxText, dynamicText, fixedBoxText, fixedText, ncbiblastBoxText, ncbiblastText: FabricText; [ dynamicBoxText, dynamicText, @@ -683,9 +679,9 @@ export class VisualOutput extends BasicCanvasRenderer { private drawFooterGroup() { this.topPadding += 30; - let copyrightText: fabric.Text; + let copyrightText: FabricText; let textFooterObj: TextType; - copyrightText = objCache.get('copyrightText') as fabric.Text; + copyrightText = objCache.get('copyrightText') as FabricText; textFooterObj = objCache.get('copyrightText_textFooterObj') as TextType; if (!copyrightText && !textFooterObj) { [copyrightText, textFooterObj] = drawFooterText( From b06ceef91cb11d2038ca187e0815618335ac60a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Tue, 29 Oct 2024 16:27:17 +0000 Subject: [PATCH 08/12] fix order of objects as cannot use sendToBack anymore --- src/functional-predictions-app.ts | 37 ++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/functional-predictions-app.ts b/src/functional-predictions-app.ts index f4711e4..a0b1abf 100644 --- a/src/functional-predictions-app.ts +++ b/src/functional-predictions-app.ts @@ -538,6 +538,32 @@ export class FunctionalPredictions extends BasicCanvasRenderer { // unique domain predictions && selected domain Databases let boxHeight = 0; let tmpTopPadding = this.topPadding - 15; + + // draw domain transparent box + boxHeight += 15; + if (hit.hit_acc in this.iprmcDataObj) { + if (this.iprmcDataObj[hit.hit_acc]['matches'] !== undefined) { + for (const did of this.iprmcDataObj[hit.hit_acc]['matches']) { + const domain = domainDatabaseNameToString( + this.iprmcDataObj[hit.hit_acc]['match'][did][0]['dbname'] as string + ); + if (this.domainDatabaseList.includes(domain)) { + boxHeight += 15; + } + } + } + } + const hitTransparentBox = drawHitTransparentBox( + startDomainPixels, + endDomainPixels, + tmpTopPadding, + boxColor, + boxHeight + ); + this.canvas.add(hitTransparentBox); + // FIXME + // hitTransparentBox.sendObjectToBack(); + if (hit.hit_acc in this.iprmcDataObj) { if (this.iprmcDataObj[hit.hit_acc]['matches'] !== undefined) { for (const did of this.iprmcDataObj[hit.hit_acc]['matches']) { @@ -623,17 +649,6 @@ export class FunctionalPredictions extends BasicCanvasRenderer { } } } - // draw domain transparent box - boxHeight += 15; - const hitTransparentBox = drawHitTransparentBox( - startDomainPixels, - endDomainPixels, - tmpTopPadding, - boxColor, - boxHeight - ); - this.canvas.add(hitTransparentBox); - hitTransparentBox.sendObjectToBack(); // final padding this.topPadding += 40; From cb2e7d83c2b99e2f72eb11341592990fed687e2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Tue, 29 Oct 2024 16:27:41 +0000 Subject: [PATCH 09/12] fix invalid argument --- src/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 5a6333e..c0088bd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -193,10 +193,16 @@ class FabricjsRenderer { document.getElementById('btn-png')!.onclick = function () { const img: HTMLImageElement = document.getElementById('png') as HTMLImageElement; img.src = fabricjs!.canvas + // .toDataURL({ + // format: 'png', + // enableRetinaScaling: true, + // withoutTransform: true, + // }) .toDataURL({ format: 'png', enableRetinaScaling: true, - withoutTransform: true, + quality: 2, + multiplier: 2, }) .toString(); img.width = fabricjs.canvas.getWidth(); From e5f9e5398818aea83d3b45ee2471aaff62b32c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Wed, 30 Oct 2024 10:47:54 +0000 Subject: [PATCH 10/12] fix commands to use npx --- package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c302033..6492812 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,11 @@ "dev": "npx webpack serve --config webpack.config.js", "dev2": "npx webpack --watch --config webpack.config.js", "build": "npx webpack --config webpack.config.prod.js", - "tsc": "tsc -w -p ./tsconfig.json", - "dev:cli": "tsc -w -p ./tsconfig.cli.json", - "build:cli": "tsc -p ./tsconfig.cli.json", - "tsc:cli": "tsc -w -p ./tsconfig.cli.json", - "release": "standard-version", + "tsc": "npx tsc -w -p ./tsconfig.json", + "dev:cli": "npx tsc -w -p ./tsconfig.cli.json", + "build:cli": "npx tsc -p ./tsconfig.cli.json", + "tsc:cli": "npx tsc -w -p ./tsconfig.cli.json", + "release": "npx standard-version", "format": "npx prettier '**/*.ts' --check", "format:write": "npx prettier '**/*.ts' --write" }, From 4c1e3f51d61c6306f37ff2c11143d3d573f4224e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Wed, 30 Oct 2024 10:50:49 +0000 Subject: [PATCH 11/12] adds missing jsdom --- package-lock.json | 1673 ++++++++++++++++++++++++++++++++++----------- package.json | 1 + 2 files changed, 1270 insertions(+), 404 deletions(-) diff --git a/package-lock.json b/package-lock.json index b1d7120..9341a59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,6 +32,7 @@ "xml-js": "^1.6.11" }, "devDependencies": { + "@types/jsdom": "^21.1.7", "@typescript-eslint/eslint-plugin": "^8.11.0", "@typescript-eslint/parser": "^8.11.0", "clean-webpack-plugin": "^4.0.0", @@ -56,6 +57,7 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", @@ -70,6 +72,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -79,6 +82,7 @@ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -88,6 +92,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -106,6 +111,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -115,6 +121,7 @@ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", @@ -124,11 +131,36 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/core": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -138,6 +170,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -156,33 +189,36 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, "node_modules/@eslint/js": { "version": "9.13.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -192,15 +228,17 @@ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz", - "integrity": "sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", + "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "levn": "^0.4.1" }, @@ -213,6 +251,7 @@ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18.0" } @@ -222,6 +261,7 @@ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" @@ -235,6 +275,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -248,6 +289,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -261,6 +303,7 @@ "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=6.9.0" } @@ -270,6 +313,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -284,6 +328,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -293,6 +338,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -302,6 +348,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -311,13 +358,15 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -328,6 +377,7 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -344,6 +394,7 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/base64": "^1.1.1", "@jsonjoy.com/util": "^1.1.2", @@ -366,6 +417,7 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz", "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -381,17 +433,20 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@lit-labs/ssr-dom-shim": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz", - "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==" + "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==", + "license": "BSD-3-Clause" }, "node_modules/@lit/reactive-element": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.2.0" } @@ -400,6 +455,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "license": "BSD-3-Clause", "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -419,6 +475,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -437,17 +494,20 @@ "node_modules/@mapbox/node-pre-gyp/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/@mapbox/node-pre-gyp/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/@mapbox/node-pre-gyp/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -458,6 +518,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -471,6 +532,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -480,6 +542,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -493,6 +556,7 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -504,6 +568,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", "optional": true, "engines": { "node": ">= 10" @@ -514,6 +579,7 @@ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -524,6 +590,7 @@ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -531,13 +598,15 @@ "node_modules/@types/browser-or-node": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/browser-or-node/-/browser-or-node-1.3.2.tgz", - "integrity": "sha512-CkvJrvVMI4ZHbiL+Df22Owzq1IYnHnoSrM8s6Dmy4MRdqvdFi9bHsIvyFrSGJPOxvFI9Y3MqY2gFCqIafJBcfw==" + "integrity": "sha512-CkvJrvVMI4ZHbiL+Df22Owzq1IYnHnoSrM8s6Dmy4MRdqvdFi9bHsIvyFrSGJPOxvFI9Y3MqY2gFCqIafJBcfw==", + "license": "MIT" }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -547,6 +616,7 @@ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -556,13 +626,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -575,6 +647,7 @@ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz", "integrity": "sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -587,6 +660,7 @@ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -597,13 +671,15 @@ "node_modules/@types/figlet": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@types/figlet/-/figlet-1.7.0.tgz", - "integrity": "sha512-KwrT7p/8Eo3Op/HBSIwGXOsTZKYiM9NpWRBJ5sVjWP/SmlS+oxxRvJht/FNAtliJvja44N3ul1yATgohnVBV0Q==" + "integrity": "sha512-KwrT7p/8Eo3Op/HBSIwGXOsTZKYiM9NpWRBJ5sVjWP/SmlS+oxxRvJht/FNAtliJvja44N3ul1yATgohnVBV0Q==", + "license": "MIT" }, "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, + "license": "MIT", "dependencies": { "@types/minimatch": "*", "@types/node": "*" @@ -613,51 +689,71 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-proxy": { "version": "1.17.15", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, "node_modules/@types/json-schema": { "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 + "dev": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "22.8.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", - "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", + "version": "22.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.4.tgz", + "integrity": "sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw==", + "license": "MIT", "dependencies": { "undici-types": "~6.19.8" } @@ -666,6 +762,7 @@ "version": "2.6.11", "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "license": "MIT", "dependencies": { "@types/node": "*", "form-data": "^4.0.0" @@ -676,6 +773,7 @@ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -684,31 +782,36 @@ "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/qs": { "version": "6.9.16", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/retry": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -719,6 +822,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, + "license": "MIT", "dependencies": { "@types/express": "*" } @@ -728,6 +832,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -739,35 +844,46 @@ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" }, "node_modules/@types/ws": { "version": "8.5.12", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz", - "integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.2.tgz", + "integrity": "sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/type-utils": "8.11.0", - "@typescript-eslint/utils": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", + "@typescript-eslint/scope-manager": "8.12.2", + "@typescript-eslint/type-utils": "8.12.2", + "@typescript-eslint/utils": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -791,15 +907,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz", - "integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.12.2.tgz", + "integrity": "sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/typescript-estree": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", + "@typescript-eslint/scope-manager": "8.12.2", + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/typescript-estree": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2", "debug": "^4.3.4" }, "engines": { @@ -819,13 +936,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz", - "integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.12.2.tgz", + "integrity": "sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0" + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -836,13 +954,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz", - "integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.12.2.tgz", + "integrity": "sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.11.0", - "@typescript-eslint/utils": "8.11.0", + "@typescript-eslint/typescript-estree": "8.12.2", + "@typescript-eslint/utils": "8.12.2", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -860,10 +979,11 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz", - "integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.12.2.tgz", + "integrity": "sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -873,13 +993,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz", - "integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.2.tgz", + "integrity": "sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -900,40 +1021,17 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@typescript-eslint/utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz", - "integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.12.2.tgz", + "integrity": "sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/typescript-estree": "8.11.0" + "@typescript-eslint/scope-manager": "8.12.2", + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/typescript-estree": "8.12.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -947,12 +1045,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz", - "integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.2.tgz", + "integrity": "sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.11.0", + "@typescript-eslint/types": "8.12.2", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -968,6 +1067,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -977,25 +1077,29 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -1006,13 +1110,15 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -1025,6 +1131,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -1034,6 +1141,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -1042,13 +1150,15 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -1065,6 +1175,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -1078,6 +1189,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -1090,6 +1202,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", @@ -1104,6 +1217,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" @@ -1112,13 +1226,15 @@ "node_modules/@webcomponents/webcomponentsjs": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.8.0.tgz", - "integrity": "sha512-loGD63sacRzOzSJgQnB9ZAhaQGkN7wl2Zuw7tsphI5Isa0irijrRo6EnJii/GgjGefIFO8AIO7UivzRhFaEk9w==" + "integrity": "sha512-loGD63sacRzOzSJgQnB9ZAhaQGkN7wl2Zuw7tsphI5Isa0irijrRo6EnJii/GgjGefIFO8AIO7UivzRhFaEk9w==", + "license": "BSD-3-Clause" }, "node_modules/@webpack-cli/configtest": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -1132,6 +1248,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -1145,6 +1262,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -1162,30 +1280,35 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause", "optional": true }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC" }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -1198,6 +1321,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -1211,6 +1335,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "devOptional": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1222,6 +1347,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "license": "MIT", "optional": true, "dependencies": { "acorn": "^8.1.0", @@ -1233,6 +1359,7 @@ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -1242,6 +1369,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -1250,6 +1378,7 @@ "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "license": "MIT", "optional": true, "dependencies": { "acorn": "^8.11.0" @@ -1262,12 +1391,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", "dependencies": { "debug": "4" }, @@ -1276,15 +1407,16 @@ } }, "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { "type": "github", @@ -1296,6 +1428,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -1308,16 +1441,38 @@ } } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", "peerDependencies": { - "ajv": "^8.8.2" + "ajv": "^6.9.1" } }, "node_modules/ansi-html-community": { @@ -1328,6 +1483,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -1336,6 +1492,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -1345,6 +1502,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1360,6 +1518,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1371,13 +1530,15 @@ "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC" }, "node_modules/are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "deprecated": "This package is no longer supported.", + "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -1390,12 +1551,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -1411,19 +1574,22 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, + "license": "MIT", "dependencies": { "array-uniq": "^1.0.1" }, @@ -1436,6 +1602,7 @@ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1444,6 +1611,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -1466,6 +1634,7 @@ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1474,6 +1643,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -1485,12 +1655,14 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -1504,7 +1676,8 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -1523,19 +1696,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -1545,6 +1721,7 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -1557,6 +1734,7 @@ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -1581,6 +1759,7 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1590,6 +1769,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -1598,13 +1778,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bonjour-service": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -1614,15 +1796,17 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -1630,6 +1814,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -1640,7 +1825,8 @@ "node_modules/browser-or-node": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-3.0.0.tgz", - "integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==" + "integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==", + "license": "MIT" }, "node_modules/browserslist": { "version": "4.24.2", @@ -1661,6 +1847,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001669", "electron-to-chromium": "^1.5.41", @@ -1692,6 +1879,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -1701,13 +1889,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, + "license": "MIT", "dependencies": { "run-applescript": "^7.0.0" }, @@ -1723,6 +1913,7 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1731,6 +1922,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -1750,6 +1942,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1759,6 +1952,7 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -1769,6 +1963,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1778,6 +1973,7 @@ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -1791,9 +1987,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001673", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001673.tgz", - "integrity": "sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==", + "version": "1.0.30001675", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001675.tgz", + "integrity": "sha512-/wV1bQwPrkLiQMjaJF5yUMVM/VdRPOCU8QZ+PmG6uW6DvYSrNY1bpwHI/3mOcUosLaJCzYDi5o91IQB51ft6cg==", "dev": true, "funding": [ { @@ -1808,13 +2004,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/canvas": { "version": "2.11.2", "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", "hasInstallScript": true, + "license": "MIT", "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", "nan": "^2.17.0", @@ -1828,6 +2026,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -1840,6 +2039,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1864,6 +2064,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1875,6 +2076,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", "engines": { "node": ">=10" } @@ -1884,6 +2086,7 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } @@ -1893,6 +2096,7 @@ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -1905,6 +2109,7 @@ "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", "dev": true, + "license": "MIT", "dependencies": { "del": "^4.1.1" }, @@ -1920,6 +2125,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -1931,6 +2137,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -1945,6 +2152,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1956,12 +2164,14 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", "bin": { "color-support": "bin.js" } @@ -1970,12 +2180,14 @@ "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -1987,6 +2199,7 @@ "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", "engines": { "node": ">=18" } @@ -2008,6 +2221,7 @@ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, + "license": "MIT", "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" @@ -2017,6 +2231,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-2.0.0.tgz", "integrity": "sha512-4m5s3Me2xxlVKG9PkZpQqHQR7bgpnN7joDMJ4yvVkVXngjoITG76IaZmzmywSeRTeTpc6N6r3H3+KyUurV8OYw==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -2029,6 +2244,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -2041,6 +2257,7 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -2059,6 +2276,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -2067,18 +2285,21 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, "node_modules/concat-stream": { "version": "2.0.0", @@ -2088,6 +2309,7 @@ "engines": [ "node >= 6.0" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -2100,6 +2322,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -2107,13 +2330,15 @@ "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -2126,6 +2351,7 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2135,6 +2361,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", "dev": true, + "license": "MIT", "dependencies": { "conventional-changelog-angular": "^5.0.12", "conventional-changelog-atom": "^2.0.8", @@ -2157,6 +2384,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0", "q": "^1.5.1" @@ -2170,6 +2398,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", "dev": true, + "license": "ISC", "dependencies": { "q": "^1.5.1" }, @@ -2182,6 +2411,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", "dev": true, + "license": "ISC", "dependencies": { "q": "^1.5.1" }, @@ -2193,13 +2423,15 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/conventional-changelog-conventionalcommits": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0", "lodash": "^4.17.15", @@ -2214,6 +2446,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", "dev": true, + "license": "MIT", "dependencies": { "add-stream": "^1.0.0", "conventional-changelog-writer": "^5.0.0", @@ -2239,6 +2472,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", "dev": true, + "license": "ISC", "dependencies": { "q": "^1.5.1" }, @@ -2251,6 +2485,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", "dev": true, + "license": "ISC", "dependencies": { "q": "^1.5.1" }, @@ -2263,6 +2498,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", "dev": true, + "license": "ISC", "dependencies": { "q": "^1.5.1" }, @@ -2275,6 +2511,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", "dev": true, + "license": "ISC", "dependencies": { "q": "^1.5.1" }, @@ -2287,6 +2524,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0", "q": "^1.5.1" @@ -2300,6 +2538,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -2309,6 +2548,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", "dev": true, + "license": "MIT", "dependencies": { "conventional-commits-filter": "^2.0.7", "dateformat": "^3.0.0", @@ -2332,6 +2572,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2341,6 +2582,7 @@ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", "dev": true, + "license": "MIT", "dependencies": { "lodash.ismatch": "^4.4.0", "modify-values": "^1.0.0" @@ -2354,6 +2596,7 @@ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-text-path": "^1.0.1", "JSONStream": "^1.0.4", @@ -2374,6 +2617,7 @@ "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", "dev": true, + "license": "MIT", "dependencies": { "concat-stream": "^2.0.0", "conventional-changelog-preset-loader": "^2.3.4", @@ -2396,6 +2640,7 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2404,13 +2649,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/copy-webpack-plugin": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", "dev": true, + "license": "MIT", "dependencies": { "fast-glob": "^3.3.2", "glob-parent": "^6.0.1", @@ -2434,13 +2681,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2455,6 +2704,7 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -2471,6 +2721,7 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -2482,12 +2733,14 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "license": "MIT", "optional": true }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", "optional": true, "dependencies": { "cssom": "~0.3.6" @@ -2500,6 +2753,7 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT", "optional": true }, "node_modules/dargs": { @@ -2507,6 +2761,7 @@ "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2515,6 +2770,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", "engines": { "node": ">= 12" } @@ -2523,6 +2779,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "license": "MIT", "optional": true, "dependencies": { "abab": "^2.0.6", @@ -2537,6 +2794,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -2553,6 +2811,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -2569,6 +2828,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -2586,6 +2846,7 @@ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -2594,6 +2855,7 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -2611,6 +2873,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2620,6 +2883,7 @@ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, + "license": "MIT", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -2636,6 +2900,7 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2644,12 +2909,14 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "license": "MIT", "optional": true }, "node_modules/decompress-response": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "license": "MIT", "dependencies": { "mimic-response": "^2.0.0" }, @@ -2661,13 +2928,15 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/default-browser": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, + "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" @@ -2684,6 +2953,7 @@ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -2695,6 +2965,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2712,6 +2983,7 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2723,6 +2995,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -2740,6 +3013,7 @@ "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/glob": "^7.1.1", "globby": "^6.1.0", @@ -2758,6 +3032,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^1.0.1", "glob": "^7.0.3", @@ -2774,6 +3049,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2784,6 +3060,7 @@ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2795,6 +3072,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -2802,13 +3080,15 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -2818,6 +3098,7 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -2828,6 +3109,7 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2836,6 +3118,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -2845,6 +3128,7 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2853,13 +3137,15 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -2872,6 +3158,7 @@ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, + "license": "MIT", "dependencies": { "utila": "~0.4" } @@ -2881,6 +3168,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -2895,6 +3183,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -2909,13 +3198,15 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", "optional": true, "dependencies": { "webidl-conversions": "^7.0.0" @@ -2929,6 +3220,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -2944,6 +3236,7 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -2958,6 +3251,7 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -2968,6 +3262,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -2980,6 +3275,7 @@ "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", "dev": true, + "license": "ISC", "dependencies": { "find-up": "^3.0.0", "minimatch": "^3.0.4" @@ -2988,11 +3284,23 @@ "node": ">=6" } }, + "node_modules/dotgitignore/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/dotgitignore/node_modules/find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -3005,6 +3313,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -3013,11 +3322,25 @@ "node": ">=6" } }, + "node_modules/dotgitignore/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/dotgitignore/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -3033,6 +3356,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -3045,6 +3369,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -3053,24 +3378,28 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.47", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.47.tgz", - "integrity": "sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==", - "dev": true + "version": "1.5.49", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.49.tgz", + "integrity": "sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -3080,6 +3409,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3089,6 +3419,7 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -3101,7 +3432,8 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "optional": true, + "devOptional": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -3114,6 +3446,7 @@ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, + "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -3126,6 +3459,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -3134,6 +3468,7 @@ "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -3193,6 +3528,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -3204,6 +3540,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -3212,12 +3549,14 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -3229,6 +3568,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -3242,6 +3582,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -3259,6 +3600,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3267,21 +3609,27 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", "optional": true, "dependencies": { "esprima": "^4.0.1", @@ -3304,6 +3652,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", @@ -3360,25 +3709,20 @@ } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { @@ -3386,6 +3730,7 @@ "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, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3393,20 +3738,15 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/eslint/node_modules/chalk": { @@ -3414,6 +3754,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3425,27 +3766,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3453,29 +3779,25 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": "*" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/eslint/node_modules/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, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3484,14 +3806,15 @@ } }, "node_modules/espree": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.12.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3501,10 +3824,11 @@ } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3516,6 +3840,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "optional": true, "bin": { "esparse": "bin/esparse.js", @@ -3530,6 +3855,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -3542,6 +3868,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -3554,6 +3881,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "devOptional": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3563,6 +3891,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "devOptional": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -3572,6 +3901,7 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3580,6 +3910,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -3588,12 +3919,14 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -3603,6 +3936,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -3645,6 +3979,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -3653,12 +3988,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fabric": { "version": "6.4.3", "resolved": "https://registry.npmjs.org/fabric/-/fabric-6.4.3.tgz", "integrity": "sha512-z/bJna3kWOBv+wmvVK4XxUQgCXLGb//VaSr5xPFIP708obH7472uuVsWbXam+xq+y21bLBtr4OHO1HuJyYi4FQ==", + "license": "MIT", "engines": { "node": ">=16.20.0" }, @@ -3671,13 +4008,15 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3694,6 +4033,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3705,25 +4045,29 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-uri": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.9.1" } @@ -3733,6 +4077,7 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -3742,6 +4087,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -3763,6 +4109,7 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -3775,6 +4122,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.8.0.tgz", "integrity": "sha512-chzvGjd+Sp7KUvPHZv6EXV5Ir3Q7kYNpCr4aHrRW79qFtTefmQZNny+W1pW9kf5zeE6dikku2W50W/wAH2xWgw==", + "license": "MIT", "bin": { "figlet": "bin/index.js" }, @@ -3787,6 +4135,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -3797,11 +4146,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^4.0.0" }, @@ -3814,6 +4174,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3826,6 +4187,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -3844,6 +4206,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -3852,13 +4215,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3875,6 +4240,7 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -3884,6 +4250,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" @@ -3896,7 +4263,8 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { "version": "1.15.9", @@ -3909,6 +4277,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -3922,6 +4291,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -3930,6 +4300,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -3943,6 +4314,7 @@ "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" }, @@ -3955,6 +4327,7 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3964,6 +4337,7 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3972,6 +4346,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3983,6 +4358,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3993,7 +4369,8 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -4001,6 +4378,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4013,6 +4391,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4021,6 +4400,7 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4038,6 +4418,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4047,6 +4428,7 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "deprecated": "This package is no longer supported.", + "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -4067,6 +4449,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -4075,6 +4458,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -4094,6 +4478,7 @@ "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, + "license": "MIT", "dependencies": { "@hutson/parse-repository-url": "^3.0.0", "hosted-git-info": "^4.0.0", @@ -4111,13 +4496,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/get-pkg-repo/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -4132,13 +4519,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/get-pkg-repo/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -4148,6 +4537,7 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -4157,6 +4547,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -4174,6 +4565,7 @@ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", "dev": true, + "license": "MIT", "dependencies": { "dargs": "^7.0.0", "lodash": "^4.17.15", @@ -4193,6 +4585,7 @@ "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, + "license": "MIT", "dependencies": { "gitconfiglocal": "^1.0.0", "pify": "^2.3.0" @@ -4206,6 +4599,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4215,6 +4609,7 @@ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", "dev": true, + "license": "MIT", "dependencies": { "meow": "^8.0.0", "semver": "^6.0.0" @@ -4231,6 +4626,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -4240,6 +4636,7 @@ "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, + "license": "BSD", "dependencies": { "ini": "^1.3.2" } @@ -4249,6 +4646,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4269,6 +4667,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -4280,13 +4679,37 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, "node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -4298,6 +4721,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -4314,6 +4738,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.2", @@ -4333,6 +4758,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -4344,25 +4770,29 @@ "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 + "dev": true, + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -4384,6 +4814,7 @@ "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4392,6 +4823,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4401,6 +4833,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4409,6 +4842,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -4420,6 +4854,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4431,6 +4866,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4442,6 +4878,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -4455,12 +4892,14 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -4473,6 +4912,7 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } @@ -4482,6 +4922,7 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4494,6 +4935,7 @@ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -4505,13 +4947,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -4526,13 +4970,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -4541,6 +4987,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "license": "MIT", "optional": true, "dependencies": { "whatwg-encoding": "^2.0.0" @@ -4563,13 +5010,15 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" }, "node_modules/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -4591,6 +5040,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } @@ -4600,6 +5050,7 @@ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", "dev": true, + "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -4639,6 +5090,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -4651,6 +5103,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -4659,13 +5112,15 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -4681,13 +5136,15 @@ "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -4701,6 +5158,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", "optional": true, "dependencies": { "@tootallnate/once": "2", @@ -4716,6 +5174,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -4740,6 +5199,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4751,6 +5211,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -4764,6 +5225,7 @@ "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.18" } @@ -4773,6 +5235,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -4797,13 +5260,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -4813,6 +5278,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4824,20 +5290,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -4857,6 +5315,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -4866,6 +5325,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4875,6 +5335,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4883,18 +5344,21 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -4909,6 +5373,7 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -4918,6 +5383,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -4926,6 +5392,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4941,6 +5408,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -4956,12 +5424,14 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -4974,6 +5444,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -4985,6 +5456,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -5000,6 +5472,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5012,6 +5485,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -5026,6 +5500,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" }, @@ -5040,6 +5515,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5055,6 +5531,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -5070,6 +5547,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5078,6 +5556,7 @@ "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==", + "license": "MIT", "engines": { "node": ">=8" } @@ -5086,6 +5565,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5101,6 +5581,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -5113,6 +5594,7 @@ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^3.0.0" }, @@ -5130,6 +5612,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -5145,6 +5628,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5157,6 +5641,7 @@ "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -5169,6 +5654,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -5177,6 +5663,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5192,6 +5679,7 @@ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5201,6 +5689,7 @@ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5210,6 +5699,7 @@ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "dev": true, + "license": "MIT", "dependencies": { "is-path-inside": "^2.1.0" }, @@ -5222,6 +5712,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", "dev": true, + "license": "MIT", "dependencies": { "path-is-inside": "^1.0.2" }, @@ -5234,6 +5725,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5243,6 +5735,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -5254,12 +5747,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT", "optional": true }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -5275,6 +5770,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -5289,6 +5785,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5303,6 +5800,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -5318,6 +5816,7 @@ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, + "license": "MIT", "dependencies": { "text-extensions": "^1.0.0" }, @@ -5329,6 +5828,7 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -5343,6 +5843,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -5355,6 +5856,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, + "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -5368,19 +5870,22 @@ "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5390,6 +5895,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -5403,13 +5909,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5421,6 +5929,7 @@ "version": "20.0.3", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "license": "MIT", "optional": true, "dependencies": { "abab": "^2.0.6", @@ -5466,43 +5975,50 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -5517,13 +6033,15 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, + "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -5540,6 +6058,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -5549,6 +6068,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5558,6 +6078,7 @@ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -5568,6 +6089,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -5580,12 +6102,14 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lit": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", + "license": "BSD-3-Clause", "dependencies": { "@lit/reactive-element": "^2.0.4", "lit-element": "^4.1.0", @@ -5596,6 +6120,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz", "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==", + "license": "BSD-3-Clause", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.2.0", "@lit/reactive-element": "^2.0.4", @@ -5606,6 +6131,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", + "license": "BSD-3-Clause", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -5615,6 +6141,7 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -5630,6 +6157,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -5639,6 +6167,7 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" } @@ -5648,6 +6177,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -5662,6 +6192,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -5676,25 +6207,29 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.ismatch": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -5704,6 +6239,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5715,6 +6251,7 @@ "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==", + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -5729,6 +6266,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -5738,6 +6276,7 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -5750,6 +6289,7 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5759,6 +6299,7 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.14.0.tgz", "integrity": "sha512-JUeY0F/fQZgIod31Ja1eJgiSxLn7BfQlCnqhwXFBzFHEw63OdLK7VJUJ7bnzNsWgCyoUP5tEp1VRY8rDaYzqOA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", "@jsonjoy.com/util": "^1.3.0", @@ -5778,6 +6319,7 @@ "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -5803,6 +6345,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -5815,13 +6358,15 @@ "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/meow/node_modules/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, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -5834,6 +6379,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -5849,6 +6395,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -5861,6 +6408,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -5879,6 +6427,7 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -5894,6 +6443,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -5911,6 +6461,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } @@ -5920,6 +6471,7 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -5932,6 +6484,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } @@ -5941,6 +6494,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -5950,6 +6504,7 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -5958,13 +6513,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -5974,6 +6531,7 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5983,6 +6541,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -5996,6 +6555,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -6007,6 +6567,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6015,6 +6576,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -6026,6 +6588,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -6038,6 +6601,7 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6046,6 +6610,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "license": "MIT", "bin": { "mini-svg-data-uri": "cli.js" } @@ -6054,23 +6619,30 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6080,6 +6652,7 @@ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, + "license": "MIT", "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -6093,6 +6666,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", "engines": { "node": ">=8" } @@ -6101,6 +6675,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -6113,6 +6688,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -6124,6 +6700,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -6136,6 +6713,7 @@ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6143,13 +6721,15 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -6161,19 +6741,22 @@ "node_modules/nan": { "version": "2.22.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", - "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==" + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6182,13 +6765,15 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -6208,6 +6793,7 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "engines": { "node": ">=10.5.0" } @@ -6216,6 +6802,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -6234,6 +6821,7 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -6243,6 +6831,7 @@ "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", "integrity": "sha512-I5VN34NO4/5UYJaUBtkrODPWxbobrE4hgDqPrjB25yPkonFhCmZ146vTH+Zg417E9Iwoh1l/MbRs1apc5J295Q==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0" }, @@ -6261,12 +6850,14 @@ "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", "dependencies": { "abbrev": "1" }, @@ -6282,6 +6873,7 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -6297,6 +6889,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6306,6 +6899,7 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "deprecated": "This package is no longer supported.", + "license": "ISC", "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -6318,6 +6912,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -6329,12 +6924,14 @@ "version": "2.2.13", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", + "license": "MIT", "optional": true }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6343,6 +6940,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6354,6 +6952,7 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" @@ -6369,6 +6968,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -6377,6 +6977,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -6394,13 +6995,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -6413,6 +7016,7 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6421,6 +7025,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -6430,6 +7035,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", "dev": true, + "license": "MIT", "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -6448,6 +7054,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -6465,6 +7072,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6480,6 +7088,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -6495,6 +7104,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6504,6 +7114,7 @@ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dev": true, + "license": "MIT", "dependencies": { "@types/retry": "0.12.2", "is-network-error": "^1.0.0", @@ -6521,6 +7132,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6530,6 +7142,7 @@ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -6540,6 +7153,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -6552,6 +7166,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, + "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -6564,7 +7179,8 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", - "optional": true, + "devOptional": true, + "license": "MIT", "dependencies": { "entities": "^4.5.0" }, @@ -6577,6 +7193,7 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6586,6 +7203,7 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -6596,6 +7214,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6604,6 +7223,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6612,13 +7232,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true + "dev": true, + "license": "(WTFPL OR MIT)" }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6627,19 +7249,22 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-to-regexp": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6651,13 +7276,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -6670,6 +7297,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6679,6 +7307,7 @@ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6688,6 +7317,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, + "license": "MIT", "dependencies": { "pinkie": "^2.0.0" }, @@ -6700,6 +7330,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -6712,6 +7343,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -6725,6 +7357,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -6737,6 +7370,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -6752,6 +7386,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -6763,6 +7398,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -6772,6 +7408,7 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -6781,6 +7418,7 @@ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -6790,6 +7428,7 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -6798,13 +7437,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -6818,6 +7459,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -6826,6 +7468,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "license": "MIT", "optional": true }, "node_modules/punycode": { @@ -6833,6 +7476,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6843,6 +7487,7 @@ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -6853,6 +7498,7 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -6867,6 +7513,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT", "optional": true }, "node_modules/queue-microtask": { @@ -6887,13 +7534,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6903,6 +7552,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -6912,6 +7562,7 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6921,6 +7572,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -6936,6 +7588,7 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6945,6 +7598,7 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, + "license": "MIT", "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", @@ -6959,6 +7613,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^2.0.0", "read-pkg": "^3.0.0" @@ -6972,6 +7627,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -6984,6 +7640,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -6997,6 +7654,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -7009,6 +7667,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -7021,6 +7680,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7030,6 +7690,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7038,13 +7699,15 @@ "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -7057,6 +7720,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^3.0.0" }, @@ -7069,6 +7733,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7078,6 +7743,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -7086,6 +7752,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -7100,6 +7767,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -7112,6 +7780,7 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.20.0" }, @@ -7124,6 +7793,7 @@ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, + "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -7136,6 +7806,7 @@ "version": "1.5.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7154,6 +7825,7 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -7163,6 +7835,7 @@ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, + "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -7176,6 +7849,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7185,6 +7859,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7193,13 +7868,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -7217,6 +7894,7 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -7224,20 +7902,32 @@ "node": ">=8" } }, - "node_modules/resolve-from": { + "node_modules/resolve-cwd/node_modules/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, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -7247,6 +7937,7 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -7257,6 +7948,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -7272,6 +7964,7 @@ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -7298,6 +7991,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -7306,6 +8000,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -7336,12 +8031,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -7358,17 +8055,20 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", "optional": true, "dependencies": { "xmlchars": "^2.2.0" @@ -7382,6 +8082,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -7396,17 +8097,56 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -7419,6 +8159,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -7431,6 +8172,7 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -7455,6 +8197,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -7463,13 +8206,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/send/node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7479,6 +8224,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -7488,6 +8234,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -7506,6 +8253,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -7515,6 +8263,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7524,6 +8273,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -7538,25 +8288,29 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7566,6 +8320,7 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, + "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -7579,12 +8334,14 @@ "node_modules/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==" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7601,6 +8358,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7615,13 +8373,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -7634,6 +8394,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -7646,6 +8407,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7655,6 +8417,7 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7663,6 +8426,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -7679,7 +8443,8 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" }, "node_modules/simple-concat": { "version": "1.0.1", @@ -7698,12 +8463,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/simple-get": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "license": "MIT", "dependencies": { "decompress-response": "^4.2.0", "once": "^1.3.1", @@ -7715,6 +8482,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -7727,6 +8495,7 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -7738,6 +8507,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "devOptional": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7747,6 +8517,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -7757,6 +8528,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -7766,13 +8538,15 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -7782,13 +8556,15 @@ "version": "3.0.20", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -7805,6 +8581,7 @@ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -7819,6 +8596,7 @@ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, + "license": "MIT", "dependencies": { "through": "2" }, @@ -7831,6 +8609,7 @@ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, + "license": "ISC", "dependencies": { "readable-stream": "^3.0.0" } @@ -7840,6 +8619,7 @@ "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.5.0.tgz", "integrity": "sha512-3zWJ/mmZQsOaO+fOlsa0+QK90pwhNd042qEcw6hKFNoLFs7peGyvPffpEBbK/DSGPbyOvli0mUIFv5A4qTjh2Q==", "dev": true, + "license": "ISC", "dependencies": { "chalk": "^2.4.2", "conventional-changelog": "3.1.25", @@ -7868,6 +8648,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -7880,6 +8661,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -7894,6 +8676,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -7902,13 +8685,25 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/standard-version/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } }, "node_modules/standard-version/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7918,6 +8713,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -7930,6 +8726,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7938,6 +8735,7 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.3.tgz", "integrity": "sha512-aMsbn7VKrl4A2T7QAQQbzgN7NVc70vgF5INQrBXqn4dCXN1zy3L9HGgLO5s7PExmdrzTJ8uR/27aviW8or8/+A==", + "license": "MIT", "dependencies": { "component-emitter": "^2.0.0" } @@ -7946,6 +8744,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -7954,6 +8753,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7967,6 +8767,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.10.tgz", "integrity": "sha512-PKLapcZUZmXUdfIM6rTTTMYOxaj4JiQrgl0SKEeCFug1CdMAuJq8hVZd4eek9yMXAW4ldGUq+TiZRtjLJRU96g==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7988,6 +8789,7 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -8005,6 +8807,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -8018,6 +8821,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -8035,12 +8839,14 @@ "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", "deprecated": "This module is not used anymore, and has been replaced by @npmcli/package-json", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -8053,6 +8859,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -8062,6 +8869,7 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -8074,6 +8882,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -8086,6 +8895,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8101,6 +8911,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8112,12 +8923,14 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT", "optional": true }, "node_modules/system": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/system/-/system-2.0.1.tgz", "integrity": "sha512-BwSUSa8LMHZouGadZ34ck3TsrH5s3oMmTKPK+xHdbBnTCZOZMJ38fHGKLAHkBl0PXru1Z4BsymQU4qqvTxWzdQ==", + "license": "MIT", "bin": { "jscat": "bundle.js" } @@ -8127,6 +8940,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -8135,6 +8949,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -8152,6 +8967,7 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -8170,6 +8986,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -8199,42 +9016,12 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -8252,12 +9039,14 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/test": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/test/-/test-3.3.0.tgz", "integrity": "sha512-JKlEohxDIJRjwBH/+BrTcAPHljBALrAHw3Zs99RqZlaC605f6BggqXhxkdqZThbSHgaYPwpNJlf9bTSWkb/1rA==", + "license": "MIT", "dependencies": { "minimist": "^1.2.6", "readable-stream": "^4.3.0", @@ -8274,6 +9063,7 @@ "version": "4.5.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -8290,6 +9080,7 @@ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } @@ -8298,13 +9089,15 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thingies": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", "dev": true, + "license": "Unlicense", "engines": { "node": ">=10.18" }, @@ -8316,13 +9109,15 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through2": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "3" } @@ -8331,13 +9126,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -8350,6 +9147,7 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } @@ -8358,6 +9156,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", "optional": true, "dependencies": { "psl": "^1.1.33", @@ -8373,6 +9172,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "license": "MIT", "optional": true, "dependencies": { "punycode": "^2.1.1" @@ -8386,6 +9186,7 @@ "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -8402,6 +9203,7 @@ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8411,6 +9213,7 @@ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -8423,6 +9226,7 @@ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", @@ -8443,6 +9247,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8459,6 +9264,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } @@ -8468,6 +9274,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8479,13 +9286,15 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -8498,6 +9307,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -8510,6 +9320,7 @@ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -8522,6 +9333,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -8535,6 +9347,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -8553,6 +9366,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -8572,6 +9386,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -8591,13 +9406,15 @@ "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/typescript": { "version": "5.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -8611,6 +9428,7 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, + "license": "BSD-2-Clause", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -8623,6 +9441,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -8636,13 +9455,15 @@ "node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" }, "node_modules/unicorn-magic": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -8654,6 +9475,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", "optional": true, "engines": { "node": ">= 4.0.0" @@ -8664,6 +9486,7 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8687,6 +9510,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.0" @@ -8703,6 +9527,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -8711,6 +9536,7 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", "optional": true, "dependencies": { "querystringify": "^2.1.1", @@ -8721,6 +9547,7 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -8732,19 +9559,22 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -8754,6 +9584,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -8763,6 +9594,7 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -8773,6 +9605,7 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8781,6 +9614,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "license": "MIT", "optional": true, "dependencies": { "xml-name-validator": "^4.0.0" @@ -8794,6 +9628,7 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -8807,6 +9642,7 @@ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } @@ -8815,6 +9651,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -8823,6 +9660,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", "optional": true, "engines": { "node": ">=12" @@ -8833,6 +9671,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", @@ -8879,6 +9718,7 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, + "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.1.1", @@ -8924,6 +9764,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } @@ -8933,6 +9774,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^4.6.0", @@ -8962,6 +9804,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.1.0.tgz", "integrity": "sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", @@ -9019,6 +9862,7 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -9033,6 +9877,7 @@ "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -9042,46 +9887,41 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -9100,6 +9940,7 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -9114,6 +9955,7 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } @@ -9122,6 +9964,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "0.6.3" @@ -9134,6 +9977,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -9146,6 +9990,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "license": "MIT", "optional": true, "engines": { "node": ">=12" @@ -9155,6 +10000,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "license": "MIT", "optional": true, "dependencies": { "tr46": "^3.0.0", @@ -9169,6 +10015,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -9183,6 +10030,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -9198,6 +10046,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -9216,6 +10065,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -9224,13 +10074,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9239,13 +10091,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -9261,13 +10115,15 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -9288,6 +10144,7 @@ "version": "1.6.11", "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", "dependencies": { "sax": "^1.2.4" }, @@ -9299,6 +10156,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "license": "Apache-2.0", "optional": true, "engines": { "node": ">=12" @@ -9308,6 +10166,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT", "optional": true }, "node_modules/xtend": { @@ -9315,6 +10174,7 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4" } @@ -9324,6 +10184,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -9331,13 +10192,15 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -9356,6 +10219,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -9365,6 +10229,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 6492812..ba28872 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "xml-js": "^1.6.11" }, "devDependencies": { + "@types/jsdom": "^21.1.7", "@typescript-eslint/eslint-plugin": "^8.11.0", "@typescript-eslint/parser": "^8.11.0", "clean-webpack-plugin": "^4.0.0", From 56deaccbfff728ac0e058ed31819b047ca8b7e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fa=CC=81bio=20Madeira?= Date: Wed, 30 Oct 2024 14:57:21 +0000 Subject: [PATCH 12/12] auto-formatting --- webpack.config.cli.js | 66 +++++++++++++++++----------------- webpack.config.js | 82 +++++++++++++++++++++--------------------- webpack.config.prod.js | 44 +++++++++++------------ 3 files changed, 95 insertions(+), 97 deletions(-) diff --git a/webpack.config.cli.js b/webpack.config.cli.js index 8f658fc..87482db 100644 --- a/webpack.config.cli.js +++ b/webpack.config.cli.js @@ -1,40 +1,40 @@ import path from 'node:path'; -import {fileURLToPath} from 'node:url'; -import cleanPlugin from "clean-webpack-plugin"; -import nodeExternals from "webpack-node-externals"; +import { fileURLToPath } from 'node:url'; +import cleanPlugin from 'clean-webpack-plugin'; +import nodeExternals from 'webpack-node-externals'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { - mode: "production", - entry: "./src/jd-viewers-cli.ts", - output: { - filename: `jd-viewers-cli.js`, - path: path.resolve(__dirname, "bin"), - library: { - type: "module", - }, - libraryTarget: 'module', - }, - experiments: { - outputModule: true, - }, - module: { - rules: [ - { - test: /\.(ts)$/, - loader: "ts-loader", - exclude: [/node_modules/], - options: { - configFile: "tsconfig.cli.json", - }, - }, - ], + mode: 'production', + entry: './src/jd-viewers-cli.ts', + output: { + filename: `jd-viewers-cli.js`, + path: path.resolve(__dirname, 'bin'), + library: { + type: 'module', }, - resolve: { - extensions: [".ts", ".js"], - }, - plugins: [new cleanPlugin.CleanWebpackPlugin()], - node: false, - externals: [nodeExternals()], + libraryTarget: 'module', + }, + experiments: { + outputModule: true, + }, + module: { + rules: [ + { + test: /\.(ts)$/, + loader: 'ts-loader', + exclude: [/node_modules/], + options: { + configFile: 'tsconfig.cli.json', + }, + }, + ], + }, + resolve: { + extensions: ['.ts', '.js'], + }, + // plugins: [new cleanPlugin.CleanWebpackPlugin()], + node: false, + externals: [nodeExternals()], }; diff --git a/webpack.config.js b/webpack.config.js index 8df0912..4b70e92 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,49 +1,47 @@ import path from 'node:path'; -import {fileURLToPath} from 'node:url'; -import HtmlWebpackPlugin from "html-webpack-plugin"; -import CopyPlugin from "copy-webpack-plugin"; +import { fileURLToPath } from 'node:url'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; +import CopyPlugin from 'copy-webpack-plugin'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default { - mode: "development", - entry: "./src/app.ts", - output: { - filename: "jd_viewers.bundle.js", - path: path.resolve(__dirname, "dist") + mode: 'development', + entry: './src/app.ts', + output: { + filename: 'jd_viewers.bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + devtool: 'inline-source-map', + devServer: { + port: 8080, + compress: false, + static: { + directory: path.join(__dirname, 'dist'), + watch: true, }, - devtool: "inline-source-map", - devServer: { - port: 8080, - compress: false, - static: { - directory: path.join(__dirname, 'dist'), - watch: true - } - }, - module: { - rules: [ - { - test: /\.ts$/, - loader: "ts-loader", - exclude: /node_modules/, - }, - ], - }, - resolve: { - extensions: [".ts", ".js", ".json"], - }, - plugins: [ - new HtmlWebpackPlugin({ - template: "./static/index.html" - }), - new CopyPlugin({ - patterns: [ - { from: path.join(__dirname, 'static', "style.css"), - to: path.join(__dirname, 'dist', "style.css")}, - { from: path.join(__dirname, 'src', "testdata"), - to: path.join(__dirname, 'dist', "testdata")}, - ], - }) - ] + }, + module: { + rules: [ + { + test: /\.ts$/, + loader: 'ts-loader', + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: ['.ts', '.js', '.json'], + }, + plugins: [ + new HtmlWebpackPlugin({ + template: './static/index.html', + }), + new CopyPlugin({ + patterns: [ + { from: path.join(__dirname, 'static', 'style.css'), to: path.join(__dirname, 'dist', 'style.css') }, + { from: path.join(__dirname, 'src', 'testdata'), to: path.join(__dirname, 'dist', 'testdata') }, + ], + }), + ], }; diff --git a/webpack.config.prod.js b/webpack.config.prod.js index 7f3aac9..ae3bc4f 100644 --- a/webpack.config.prod.js +++ b/webpack.config.prod.js @@ -1,30 +1,30 @@ import path from 'node:path'; -import {fileURLToPath} from 'node:url'; +import { fileURLToPath } from 'node:url'; import fs from 'node:fs/promises'; -import cleanPlugin from "clean-webpack-plugin"; +import cleanPlugin from 'clean-webpack-plugin'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const packageJson = JSON.parse(await fs.readFile('package.json')); export default { - mode: "production", - entry: "./src/app.ts", - output: { - filename: `jd_viewers_${packageJson.version}.bundle.min.js`, - path: path.resolve(__dirname, "dist"), - }, - devtool: false, - module: { - rules: [ - { - test: /\.ts$/, - loader: "ts-loader", - exclude: /node_modules/, - }, - ], - }, - resolve: { - extensions: [".ts", ".js"], - }, - plugins: [new cleanPlugin.CleanWebpackPlugin()], + mode: 'production', + entry: './src/app.ts', + output: { + filename: `jd_viewers_${packageJson.version}.bundle.min.js`, + path: path.resolve(__dirname, 'dist'), + }, + devtool: false, + module: { + rules: [ + { + test: /\.ts$/, + loader: 'ts-loader', + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: ['.ts', '.js'], + }, + plugins: [new cleanPlugin.CleanWebpackPlugin()], };