From f449e6cb6825274234f83c2e045a607081a28806 Mon Sep 17 00:00:00 2001 From: Prozilla Date: Sun, 5 May 2024 11:27:53 +0200 Subject: [PATCH] Started migration to TypeScript --- package-lock.json | 1654 +++++++++++++---- package.json | 10 +- src/{App.jsx => App.tsx} | 20 +- .../apps/file-explorer/FileExplorer.jsx | 4 +- .../apps/media-viewer/MediaViewer.jsx | 2 +- .../apps/settings/tabs/AboutSettings.jsx | 4 +- .../apps/settings/tabs/AppOption.jsx | 4 +- .../apps/settings/tabs/AppearanceSettings.jsx | 4 +- .../apps/settings/tabs/AppsSettings.jsx | 2 +- .../apps/settings/tabs/StorageSettings.jsx | 2 +- src/components/apps/terminal/Terminal.jsx | 2 +- .../apps/text-editor/TextEditor.jsx | 2 +- src/components/desktop/Desktop.jsx | 10 +- src/components/modals/ModalsView.jsx | 4 +- .../modals/file-selector/FileSelector.jsx | 2 +- src/components/taskbar/Taskbar.jsx | 8 +- src/components/taskbar/app-icon/AppIcon.jsx | 2 +- src/components/taskbar/menus/HomeMenu.jsx | 4 +- src/components/taskbar/menus/SearchMenu.jsx | 2 +- src/components/windows/WindowFallbackView.jsx | 2 +- src/components/windows/WindowView.jsx | 4 +- src/components/windows/WindowsView.jsx | 9 +- src/features/apps/terminal/command.js | 115 -- src/features/apps/terminal/command.ts | 88 + src/features/apps/terminal/commands.js | 2 +- src/features/apps/terminal/commands/cat.js | 2 +- src/features/apps/terminal/commands/cd.js | 2 +- src/features/apps/terminal/commands/clear.js | 2 +- .../apps/terminal/commands/compgen.js | 2 +- src/features/apps/terminal/commands/cowsay.js | 2 +- src/features/apps/terminal/commands/dir.js | 2 +- src/features/apps/terminal/commands/echo.js | 2 +- src/features/apps/terminal/commands/exit.js | 2 +- .../apps/terminal/commands/fortune.js | 2 +- src/features/apps/terminal/commands/help.js | 2 +- .../apps/terminal/commands/hostname.js | 2 +- src/features/apps/terminal/commands/lolcat.js | 2 +- src/features/apps/terminal/commands/ls.js | 2 +- src/features/apps/terminal/commands/make.js | 2 +- src/features/apps/terminal/commands/man.js | 2 +- src/features/apps/terminal/commands/mkdir.js | 2 +- .../apps/terminal/commands/neofetch.js | 4 +- src/features/apps/terminal/commands/pwd.js | 2 +- src/features/apps/terminal/commands/reboot.js | 2 +- src/features/apps/terminal/commands/reload.js | 2 +- src/features/apps/terminal/commands/rev.js | 2 +- src/features/apps/terminal/commands/rm.js | 2 +- src/features/apps/terminal/commands/rmdir.js | 2 +- src/features/apps/terminal/commands/sl.js | 2 +- src/features/apps/terminal/commands/touch.js | 4 +- src/features/apps/terminal/commands/uptime.js | 4 +- src/features/apps/terminal/commands/whatis.js | 2 +- src/features/apps/terminal/commands/whoami.js | 2 +- src/globals.d.ts | 4 + src/hooks/modals/contextMenu.js | 2 +- src/hooks/modals/modalsContext.js | 33 - src/hooks/modals/modalsContext.tsx | 27 + src/hooks/modals/modalsManagerContext.js | 29 - src/hooks/modals/modalsManagerContext.tsx | 23 + src/hooks/modals/windowedModal.js | 2 +- src/hooks/settings/settingsManagerContext.js | 29 - src/hooks/settings/settingsManagerContext.tsx | 26 + src/hooks/virtual-drive/VirtualRootContext.js | 26 - .../virtual-drive/virtualRootContext.tsx | 19 + src/hooks/windows/windowsContext.js | 32 - src/hooks/windows/windowsContext.tsx | 26 + src/hooks/windows/windowsManagerContext.js | 29 - src/hooks/windows/windowsManagerContext.tsx | 23 + src/hooks/z-index/zIndex.js | 2 +- src/hooks/z-index/zIndexManagerContext.js | 24 - src/hooks/z-index/zIndexManagerContext.tsx | 18 + src/{index.js => index.tsx} | 10 +- tsconfig.json | 118 ++ 73 files changed, 1741 insertions(+), 785 deletions(-) rename src/{App.jsx => App.tsx} (86%) delete mode 100644 src/features/apps/terminal/command.js create mode 100644 src/features/apps/terminal/command.ts create mode 100644 src/globals.d.ts delete mode 100644 src/hooks/modals/modalsContext.js create mode 100644 src/hooks/modals/modalsContext.tsx delete mode 100644 src/hooks/modals/modalsManagerContext.js create mode 100644 src/hooks/modals/modalsManagerContext.tsx delete mode 100644 src/hooks/settings/settingsManagerContext.js create mode 100644 src/hooks/settings/settingsManagerContext.tsx delete mode 100644 src/hooks/virtual-drive/VirtualRootContext.js create mode 100644 src/hooks/virtual-drive/virtualRootContext.tsx delete mode 100644 src/hooks/windows/windowsContext.js create mode 100644 src/hooks/windows/windowsContext.tsx delete mode 100644 src/hooks/windows/windowsManagerContext.js create mode 100644 src/hooks/windows/windowsManagerContext.tsx delete mode 100644 src/hooks/z-index/zIndexManagerContext.js create mode 100644 src/hooks/z-index/zIndexManagerContext.tsx rename src/{index.js => index.tsx} (91%) create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index 8349a7a..5c608eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,9 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "@types/node": "^20.12.8", + "@types/react": "^18.3.1", + "@types/react-dom": "^18.3.0", "anser": "^2.1.1", "core-js": "^3.31.1", "escape-carriage": "^1.3.1", @@ -28,11 +31,16 @@ "react-svg": "^16.1.18", "react-syntax-highlighter": "^15.5.0", "react-tabs": "^6.0.2", + "typescript": "^5.4.5", "web-vitals": "^2.1.4" }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@types/webpack-env": "^1.18.4", + "@typescript-eslint/eslint-plugin": "^7.8.0", + "@typescript-eslint/parser": "^7.8.0", "eslint-plugin-jsdoc": "^46.4.6", + "eslint-plugin-react": "^7.34.1", "gh-pages": "^5.0.0" } }, @@ -2350,17 +2358,17 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2385,9 +2393,9 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -2421,9 +2429,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -2486,12 +2494,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -2511,9 +2519,9 @@ } }, "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==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -4436,9 +4444,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/json5": { "version": "0.0.29", @@ -4451,9 +4459,12 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "node_modules/@types/node": { - "version": "20.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", - "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==" + "version": "20.12.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.8.tgz", + "integrity": "sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -4486,19 +4497,18 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "18.2.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.15.tgz", - "integrity": "sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", + "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", - "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dependencies": { "@types/react": "*" } @@ -4516,15 +4526,10 @@ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" - }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" }, "node_modules/@types/send": { "version": "0.17.1", @@ -4584,6 +4589,12 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" }, + "node_modules/@types/webpack-env": { + "version": "1.18.4", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.4.tgz", + "integrity": "sha512-I6e+9+HtWADAWeeJWDFQtdk4EVSAbj6Rtz4q8fJ7mSr1M0jzlFcs8/HZ+Xb5SHzVm1dxH7aUiI+A8kA8Gcrm0A==", + "dev": true + }, "node_modules/@types/ws": { "version": "8.5.5", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", @@ -4606,31 +4617,33 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", + "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", + "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/type-utils": "7.8.0", + "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "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.0.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": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -4638,6 +4651,130 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", + "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", + "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", + "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", + "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "semver": "^7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", + "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/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/eslint-plugin/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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/experimental-utils": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", @@ -4657,24 +4794,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz", + "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==", + "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -4682,6 +4821,105 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", + "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", + "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", + "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", + "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/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/parser/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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/scope-manager": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", @@ -4699,24 +4937,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", + "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", + "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "@typescript-eslint/utils": "7.8.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.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -4724,6 +4963,130 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", + "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", + "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", + "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", + "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "semver": "^7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", + "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/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/type-utils/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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/types": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", @@ -4823,6 +5186,11 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -5223,12 +5591,15 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "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.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5240,14 +5611,15 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -5274,6 +5646,25 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "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", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", @@ -5292,13 +5683,13 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -5326,16 +5717,48 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "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/asap": { @@ -5399,9 +5822,12 @@ } }, "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" }, @@ -5902,12 +6328,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" @@ -6833,6 +7265,54 @@ "node": ">=10" } }, + "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": { + "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/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/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -6911,6 +7391,22 @@ "node": ">= 10" } }, + "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", @@ -6920,10 +7416,11 @@ } }, "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" }, @@ -7266,45 +7763,56 @@ } }, "node_modules/es-abstract": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.3.tgz", - "integrity": "sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==", + "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.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "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.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "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.5", - "is-array-buffer": "^3.0.2", + "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.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-byte-offset": "^1.0.0", - "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.10" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -7318,6 +7826,25 @@ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, + "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-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -7337,30 +7864,65 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==" }, - "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==", + "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": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "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.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -7435,26 +7997,27 @@ } }, "node_modules/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "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.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -7464,7 +8027,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -7476,7 +8038,6 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -7516,6 +8077,114 @@ "eslint": "^8.0.0" } }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.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" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-react-app/node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", @@ -7630,29 +8299,6 @@ "semver": "bin/semver.js" } }, - "node_modules/eslint-plugin-jest": { - "version": "25.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", - "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", - "dependencies": { - "@typescript-eslint/experimental-utils": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, "node_modules/eslint-plugin-jsdoc": { "version": "46.4.6", "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.4.6.tgz", @@ -7726,25 +8372,28 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" }, "engines": { "node": ">=4" @@ -7776,11 +8425,11 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "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" }, @@ -7815,9 +8464,9 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -7830,9 +8479,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "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==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -8064,9 +8713,9 @@ } }, "node_modules/espree": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", - "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -8787,19 +9436,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" @@ -8833,14 +9485,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "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", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8871,12 +9527,13 @@ } }, "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" @@ -9157,20 +9814,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" }, @@ -9190,11 +9847,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" @@ -9203,6 +9860,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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/hast-util-parse-selector": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", @@ -9519,9 +10187,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.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "engines": { "node": ">= 4" } @@ -9612,12 +10280,12 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "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": { @@ -9670,13 +10338,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "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.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9687,6 +10357,20 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -9751,11 +10435,25 @@ } }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" + }, + "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" @@ -9806,6 +10504,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -9822,6 +10531,20 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -9856,9 +10579,9 @@ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" }, "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" }, @@ -9960,11 +10683,14 @@ } }, "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" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10010,15 +10736,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" @@ -10180,6 +10902,18 @@ "node": ">=8" } }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -12908,9 +13642,9 @@ } }, "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.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12939,12 +13673,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" }, @@ -12956,26 +13690,27 @@ } }, "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "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" } }, "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "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-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -13003,25 +13738,29 @@ } }, "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "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" @@ -13458,6 +14197,14 @@ "node": ">=4" } }, + "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/postcss": { "version": "8.4.26", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", @@ -15274,6 +16021,26 @@ "node": ">=8" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/refractor": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", @@ -15331,13 +16098,14 @@ "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -15644,12 +16412,12 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "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.2", - "get-intrinsic": "^1.2.0", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -15680,14 +16448,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" } @@ -15797,9 +16568,9 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -15959,6 +16730,36 @@ "node": ">= 0.8.0" } }, + "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", @@ -15992,13 +16793,17 @@ } }, "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" @@ -16253,31 +17058,39 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "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", + "gopd": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "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.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "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" @@ -16287,26 +17100,29 @@ } }, "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" @@ -16894,6 +17710,18 @@ "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" }, + "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-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -16995,16 +17823,48 @@ "node": ">= 0.6" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "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": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "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", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "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" @@ -17014,13 +17874,19 @@ } }, "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" @@ -17035,16 +17901,15 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "peer": true, + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/unbox-primitive": { @@ -17061,6 +17926,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -17705,6 +18575,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-collection": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", @@ -17720,16 +18615,15 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.10.tgz", - "integrity": "sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==", + "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" diff --git a/package.json b/package.json index ea15dce..d079e0c 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,9 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "@types/node": "^20.12.8", + "@types/react": "^18.3.1", + "@types/react-dom": "^18.3.0", "anser": "^2.1.1", "core-js": "^3.31.1", "escape-carriage": "^1.3.1", @@ -34,14 +37,20 @@ "react-svg": "^16.1.18", "react-syntax-highlighter": "^15.5.0", "react-tabs": "^6.0.2", + "typescript": "^5.4.5", "web-vitals": "^2.1.4" }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@types/webpack-env": "^1.18.4", + "@typescript-eslint/eslint-plugin": "^7.8.0", + "@typescript-eslint/parser": "^7.8.0", "eslint-plugin-jsdoc": "^46.4.6", + "eslint-plugin-react": "^7.34.1", "gh-pages": "^5.0.0" }, "eslintConfig": { + "parser": "@typescript-eslint/parser", "extends": [ "react-app", "react-app/jest" @@ -79,7 +88,6 @@ } ], "jsdoc/no-undefined-types": "warn", - "jsdoc/require-param": "warn", "jsdoc/check-tag-names": "warn", "jsdoc/check-types": [ "warn", diff --git a/src/App.jsx b/src/App.tsx similarity index 86% rename from src/App.jsx rename to src/App.tsx index 881f4d4..70ee040 100644 --- a/src/App.jsx +++ b/src/App.tsx @@ -1,21 +1,21 @@ import styles from "./App.module.css"; import { Taskbar } from "./components/taskbar/Taskbar.jsx"; -import { WindowsManagerProvider } from "./hooks/windows/windowsManagerContext.js"; +import { WindowsManagerProvider } from "./hooks/windows/windowsManagerContext"; import { WindowsView } from "./components/windows/WindowsView.jsx"; -import { VirtualRootProvider } from "./hooks/virtual-drive/virtualRootContext.js"; +import { VirtualRootProvider } from "./hooks/virtual-drive/virtualRootContext"; import { Desktop } from "./components/desktop/Desktop.jsx"; -import { SettingsManagerProvider } from "./hooks/settings/settingsManagerContext.js"; +import { SettingsManagerProvider } from "./hooks/settings/settingsManagerContext"; import { ModalsView } from "./components/modals/ModalsView.jsx"; -import { useEffect } from "react"; -import { ZIndexManagerProvider } from "./hooks/z-index/zIndexManagerContext.js"; +import React, { FC, useEffect } from "react"; +import { ZIndexManagerProvider } from "./hooks/z-index/zIndexManagerContext"; import { TrackingManager } from "./features/tracking/trackingManager.js"; -import { ModalsManagerProvider } from "./hooks/modals/modalsManagerContext.js"; +import { ModalsManagerProvider } from "./hooks/modals/modalsManagerContext"; TrackingManager.initialize(); -function App() { +const App: FC = () => { useEffect(() => { - const onContextMenu = (event) => { + const onContextMenu = (event: Event) => { event.preventDefault(); }; @@ -44,6 +44,6 @@ function App() { ); -} +}; -export default App; +export default App; \ No newline at end of file diff --git a/src/components/apps/file-explorer/FileExplorer.jsx b/src/components/apps/file-explorer/FileExplorer.jsx index 25e6b70..a422780 100644 --- a/src/components/apps/file-explorer/FileExplorer.jsx +++ b/src/components/apps/file-explorer/FileExplorer.jsx @@ -1,9 +1,9 @@ import { useCallback, useEffect, useState } from "react"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext.js"; +import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext"; import styles from "./FileExplorer.module.css"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faArrowUp, faCaretLeft, faCaretRight, faCircleInfo, faCog, faDesktop, faFileLines, faHouse, faImage, faPlus, faSearch, faTrash } from "@fortawesome/free-solid-svg-icons"; -import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext"; import { useContextMenu } from "../../../hooks/modals/contextMenu.js"; import { QuickAccessButton } from "./QuickAccessButton.jsx"; import { useWindowedModal } from "../../../hooks/modals/windowedModal.js"; diff --git a/src/components/apps/media-viewer/MediaViewer.jsx b/src/components/apps/media-viewer/MediaViewer.jsx index 79dd94e..7f9fcd3 100644 --- a/src/components/apps/media-viewer/MediaViewer.jsx +++ b/src/components/apps/media-viewer/MediaViewer.jsx @@ -1,6 +1,6 @@ import { useEffect } from "react"; -import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext"; import styles from "./MediaViewer.module.css"; import { APPS } from "../../../config/apps.config.js"; import { IMAGE_FORMATS } from "../../../config/apps/mediaViewer.config.js"; diff --git a/src/components/apps/settings/tabs/AboutSettings.jsx b/src/components/apps/settings/tabs/AboutSettings.jsx index de46a7f..9ff19e5 100644 --- a/src/components/apps/settings/tabs/AboutSettings.jsx +++ b/src/components/apps/settings/tabs/AboutSettings.jsx @@ -2,8 +2,8 @@ import { Button } from "../../../_utils/button/Button.jsx"; import styles from "../Settings.module.css"; import utilStyles from "../../../../styles/utils.module.css"; import Vector2 from "../../../../features/math/vector2.js"; -import { useWindowsManager } from "../../../../hooks/windows/windowsManagerContext.js"; -import { useVirtualRoot } from "../../../../hooks/virtual-drive/virtualRootContext.js"; +import { useWindowsManager } from "../../../../hooks/windows/windowsManagerContext"; +import { useVirtualRoot } from "../../../../hooks/virtual-drive/virtualRootContext"; import { NAME } from "../../../../config/branding.config.js"; export function AboutSettings() { diff --git a/src/components/apps/settings/tabs/AppOption.jsx b/src/components/apps/settings/tabs/AppOption.jsx index 5bb9cce..765f2e5 100644 --- a/src/components/apps/settings/tabs/AppOption.jsx +++ b/src/components/apps/settings/tabs/AppOption.jsx @@ -3,12 +3,12 @@ import AppsManager from "../../../../features/apps/appsManager.js"; import { ImagePreview } from "../../file-explorer/directory-list/ImagePreview.jsx"; import styles from "../Settings.module.css"; import { faEllipsisVertical, faThumbTack } from "@fortawesome/free-solid-svg-icons"; -import { useWindowsManager } from "../../../../hooks/windows/windowsManagerContext.js"; +import { useWindowsManager } from "../../../../hooks/windows/windowsManagerContext"; import { useContextMenu } from "../../../../hooks/modals/contextMenu.js"; import { Actions } from "../../../actions/Actions.jsx"; import { ClickAction } from "../../../actions/actions/ClickAction.jsx"; import { removeFromArray } from "../../../../features/_utils/array.utils.js"; -import { useSettingsManager } from "../../../../hooks/settings/settingsManagerContext.js"; +import { useSettingsManager } from "../../../../hooks/settings/settingsManagerContext"; import { SettingsManager } from "../../../../features/settings/settingsManager.js"; export function AppOption({ app, pins, setPins }) { diff --git a/src/components/apps/settings/tabs/AppearanceSettings.jsx b/src/components/apps/settings/tabs/AppearanceSettings.jsx index c8e89e2..3f80416 100644 --- a/src/components/apps/settings/tabs/AppearanceSettings.jsx +++ b/src/components/apps/settings/tabs/AppearanceSettings.jsx @@ -2,8 +2,8 @@ import { useEffect, useState } from "react"; import { SettingsManager } from "../../../../features/settings/settingsManager.js"; import styles from "../Settings.module.css"; import utilStyles from "../../../../styles/utils.module.css"; -import { useVirtualRoot } from "../../../../hooks/virtual-drive/virtualRootContext.js"; -import { useSettingsManager } from "../../../../hooks/settings/settingsManagerContext.js"; +import { useVirtualRoot } from "../../../../hooks/virtual-drive/virtualRootContext"; +import { useSettingsManager } from "../../../../hooks/settings/settingsManagerContext"; import { WALLPAPERS_PATH } from "../../../../config/apps/settings.config.js"; import { useWindowedModal } from "../../../../hooks/modals/windowedModal.js"; import ModalsManager from "../../../../features/modals/modalsManager.js"; diff --git a/src/components/apps/settings/tabs/AppsSettings.jsx b/src/components/apps/settings/tabs/AppsSettings.jsx index 40267af..e9efcd1 100644 --- a/src/components/apps/settings/tabs/AppsSettings.jsx +++ b/src/components/apps/settings/tabs/AppsSettings.jsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; import styles from "../Settings.module.css"; import AppsManager from "../../../../features/apps/appsManager.js"; -import { useSettingsManager } from "../../../../hooks/settings/settingsManagerContext.js"; +import { useSettingsManager } from "../../../../hooks/settings/settingsManagerContext"; import { SettingsManager } from "../../../../features/settings/settingsManager.js"; import ModalsManager from "../../../../features/modals/modalsManager.js"; import { AppOption } from "./AppOption.jsx"; diff --git a/src/components/apps/settings/tabs/StorageSettings.jsx b/src/components/apps/settings/tabs/StorageSettings.jsx index 907b738..23f248a 100644 --- a/src/components/apps/settings/tabs/StorageSettings.jsx +++ b/src/components/apps/settings/tabs/StorageSettings.jsx @@ -3,7 +3,7 @@ import utilStyles from "../../../../styles/utils.module.css"; import { round } from "../../../../features/math/round.js"; import { ProgressBar } from "../../../_utils/progress-bar/ProgressBar.jsx"; import { Button } from "../../../_utils/button/Button.jsx"; -import { useVirtualRoot } from "../../../../hooks/virtual-drive/virtualRootContext.js"; +import { useVirtualRoot } from "../../../../hooks/virtual-drive/virtualRootContext"; import { StorageManager } from "../../../../features/storage/storageManager.js"; export function StorageTab() { diff --git a/src/components/apps/terminal/Terminal.jsx b/src/components/apps/terminal/Terminal.jsx index a267e9c..5754883 100644 --- a/src/components/apps/terminal/Terminal.jsx +++ b/src/components/apps/terminal/Terminal.jsx @@ -1,6 +1,6 @@ import { useEffect, useRef, useState } from "react"; import styles from "./Terminal.module.css"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext.js"; +import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext"; import { clamp } from "../../../features/math/clamp.js"; import { OutputLine } from "./OutputLine.jsx"; import { InputLine } from "./InputLine.jsx"; diff --git a/src/components/apps/text-editor/TextEditor.jsx b/src/components/apps/text-editor/TextEditor.jsx index 7d546c5..814bf63 100644 --- a/src/components/apps/text-editor/TextEditor.jsx +++ b/src/components/apps/text-editor/TextEditor.jsx @@ -7,7 +7,7 @@ import AppsManager from "../../../features/apps/appsManager.js"; import { TITLE_SEPARATOR } from "../../../config/windows.config.js"; import { MarkdownLink } from "./overrides/MarkdownLink.jsx"; import { MarkdownImage } from "./overrides/MarkdownImage.jsx"; -import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext"; import SyntaxHighlighter from "react-syntax-highlighter"; import { useWindowedModal } from "../../../hooks/modals/windowedModal.js"; import { DEFAULT_FILE_SELECTOR_SIZE } from "../../../config/modals.config.js"; diff --git a/src/components/desktop/Desktop.jsx b/src/components/desktop/Desktop.jsx index 7cf2bc8..bf9e3ae 100644 --- a/src/components/desktop/Desktop.jsx +++ b/src/components/desktop/Desktop.jsx @@ -1,13 +1,13 @@ import { memo, useState } from "react"; import { SettingsManager } from "../../features/settings/settingsManager.js"; -import { useSettingsManager } from "../../hooks/settings/settingsManagerContext.js"; +import { useSettingsManager } from "../../hooks/settings/settingsManagerContext"; import styles from "./Desktop.module.css"; import { useEffect } from "react"; -import { useWindowsManager } from "../../hooks/windows/windowsManagerContext.js"; +import { useWindowsManager } from "../../hooks/windows/windowsManagerContext"; import { useContextMenu } from "../../hooks/modals/contextMenu.js"; import { FALLBACK_ICON_SIZE, FALLBACK_WALLPAPER } from "../../config/desktop.config.js"; import { reloadViewport } from "../../features/_utils/browser.utils.js"; -import { useVirtualRoot } from "../../hooks/virtual-drive/virtualRootContext.js"; +import { useVirtualRoot } from "../../hooks/virtual-drive/virtualRootContext"; import { DirectoryList } from "../apps/file-explorer/directory-list/DirectoryList.jsx"; import { APPS, APP_ICONS, APP_NAMES } from "../../config/apps.config.js"; import Vector2 from "../../features/math/vector2.js"; @@ -21,8 +21,8 @@ import { Divider } from "../actions/actions/Divider.jsx"; import { isValidInteger } from "../../features/_utils/number.utils.js"; import { useWindowedModal } from "../../hooks/modals/windowedModal.js"; import { Share } from "../modals/share/Share.jsx"; -import ModalsManager from "../../features/modals/modalsManager.js"; -import { useModalsManager } from "../../hooks/modals/modalsManagerContext.js"; +import ModalsManager from "../../features/modals/modalsManager"; +import { useModalsManager } from "../../hooks/modals/modalsManagerContext"; export const Desktop = memo(() => { const settingsManager = useSettingsManager(); diff --git a/src/components/modals/ModalsView.jsx b/src/components/modals/ModalsView.jsx index d301bf5..17235fc 100644 --- a/src/components/modals/ModalsView.jsx +++ b/src/components/modals/ModalsView.jsx @@ -1,8 +1,8 @@ import { memo, useEffect, useRef, useState } from "react"; import { ModalView } from "./ModalView.jsx"; import styles from "./ModalsView.module.css"; -import { useModals } from "../../hooks/modals/modalsContext.js"; -import { useModalsManager } from "../../hooks/modals/modalsManagerContext.js"; +import { useModals } from "../../hooks/modals/modalsContext"; +import { useModalsManager } from "../../hooks/modals/modalsManagerContext"; export const ModalsView = memo(() => { const ref = useRef(null); diff --git a/src/components/modals/file-selector/FileSelector.jsx b/src/components/modals/file-selector/FileSelector.jsx index 428ad58..df3bb50 100644 --- a/src/components/modals/file-selector/FileSelector.jsx +++ b/src/components/modals/file-selector/FileSelector.jsx @@ -7,7 +7,7 @@ import { WindowedModal } from "../_utils/WindowedModal.jsx"; import styles from "./FileSelector.module.css"; import { VirtualFile } from "../../../features/virtual-drive/file/virtualFile.js"; import Modal from "../../../features/modals/modal.js"; -import { useModalsManager } from "../../../hooks/modals/modalsManagerContext.js"; +import { useModalsManager } from "../../../hooks/modals/modalsManagerContext"; /** * @callback onFinish diff --git a/src/components/taskbar/Taskbar.jsx b/src/components/taskbar/Taskbar.jsx index 741bc8f..fbba7f3 100644 --- a/src/components/taskbar/Taskbar.jsx +++ b/src/components/taskbar/Taskbar.jsx @@ -17,14 +17,14 @@ import { useContextMenu } from "../../hooks/modals/contextMenu.js"; import { Actions } from "../actions/Actions.jsx"; import { ClickAction } from "../actions/actions/ClickAction.jsx"; import { APPS, APP_NAMES } from "../../config/apps.config.js"; -import { useWindowsManager } from "../../hooks/windows/windowsManagerContext.js"; +import { useWindowsManager } from "../../hooks/windows/windowsManagerContext"; import { TASKBAR_HEIGHT } from "../../config/taskbar.config.js"; -import { useSettingsManager } from "../../hooks/settings/settingsManagerContext.js"; +import { useSettingsManager } from "../../hooks/settings/settingsManagerContext"; import { SettingsManager } from "../../features/settings/settingsManager.js"; -import { useWindows } from "../../hooks/windows/windowsContext.js"; +import { useWindows } from "../../hooks/windows/windowsContext"; import { ZIndexManager } from "../../features/z-index/zIndexManager.js"; import { useZIndex } from "../../hooks/z-index/zIndex.js"; -import { useModalsManager } from "../../hooks/modals/modalsManagerContext.js"; +import { useModalsManager } from "../../hooks/modals/modalsManagerContext"; export const Taskbar = memo(() => { const ref = useRef(null); diff --git a/src/components/taskbar/app-icon/AppIcon.jsx b/src/components/taskbar/app-icon/AppIcon.jsx index 1df8fe0..6f5efbc 100644 --- a/src/components/taskbar/app-icon/AppIcon.jsx +++ b/src/components/taskbar/app-icon/AppIcon.jsx @@ -2,7 +2,7 @@ import { memo } from "react"; import App from "../../../features/apps/app.js"; import styles from "./AppIcon.module.css"; import { ReactSVG } from "react-svg"; -import { useSettingsManager } from "../../../hooks/settings/settingsManagerContext.js"; +import { useSettingsManager } from "../../../hooks/settings/settingsManagerContext"; import { useContextMenu } from "../../../hooks/modals/contextMenu.js"; import ModalsManager from "../../../features/modals/modalsManager.js"; import { Actions } from "../../actions/Actions.jsx"; diff --git a/src/components/taskbar/menus/HomeMenu.jsx b/src/components/taskbar/menus/HomeMenu.jsx index 1ffdbd4..429dd0d 100644 --- a/src/components/taskbar/menus/HomeMenu.jsx +++ b/src/components/taskbar/menus/HomeMenu.jsx @@ -2,12 +2,12 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import styles from "./HomeMenu.module.css"; import appStyles from "./AppList.module.css"; import { faCircleInfo, faFileLines, faGear, faImage, faPowerOff } from "@fortawesome/free-solid-svg-icons"; -import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext"; import AppsManager from "../../../features/apps/appsManager.js"; import { ReactSVG } from "react-svg"; import { closeViewport } from "../../../features/_utils/browser.utils.js"; import { useKeyboardListener } from "../../../hooks/_utils/keyboard.js"; -import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext.js"; +import { useVirtualRoot } from "../../../hooks/virtual-drive/virtualRootContext"; import { useEffect, useState } from "react"; import Vector2 from "../../../features/math/vector2.js"; import utilStyles from "../../../styles/utils.module.css"; diff --git a/src/components/taskbar/menus/SearchMenu.jsx b/src/components/taskbar/menus/SearchMenu.jsx index eda7d7c..91a97ae 100644 --- a/src/components/taskbar/menus/SearchMenu.jsx +++ b/src/components/taskbar/menus/SearchMenu.jsx @@ -1,7 +1,7 @@ import styles from "./SearchMenu.module.css"; import appStyles from "./AppList.module.css"; import AppsManager from "../../../features/apps/appsManager.js"; -import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext.js"; +import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext"; import { ReactSVG } from "react-svg"; import { useEffect, useState } from "react"; import { useKeyboardListener } from "../../../hooks/_utils/keyboard.js"; diff --git a/src/components/windows/WindowFallbackView.jsx b/src/components/windows/WindowFallbackView.jsx index 7d34c48..737bb06 100644 --- a/src/components/windows/WindowFallbackView.jsx +++ b/src/components/windows/WindowFallbackView.jsx @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import { useModalsManager } from "../../hooks/modals/modalsManagerContext.js"; +import { useModalsManager } from "../../hooks/modals/modalsManagerContext"; import { useAlert } from "../../hooks/modals/alert.js"; import AppsManager from "../../features/apps/appsManager.js"; import Vector2 from "../../features/math/vector2.js"; diff --git a/src/components/windows/WindowView.jsx b/src/components/windows/WindowView.jsx index 79f736f..b172b41 100644 --- a/src/components/windows/WindowView.jsx +++ b/src/components/windows/WindowView.jsx @@ -2,7 +2,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import styles from "./WindowView.module.css"; import { faExpand, faMinus, faWindowMaximize as fasWindowMaximize, faTimes, faXmark } from "@fortawesome/free-solid-svg-icons"; import { ReactSVG } from "react-svg"; -import { useWindowsManager } from "../../hooks/windows/windowsManagerContext.js"; +import { useWindowsManager } from "../../hooks/windows/windowsManagerContext"; import Draggable from "react-draggable"; import { memo, useEffect, useRef, useState } from "react"; import App from "../../features/apps/app.js"; @@ -17,7 +17,7 @@ import { useScreenDimensions } from "../../hooks/_utils/screen.js"; import { NAME } from "../../config/branding.config.js"; import { setViewportIcon, setViewportTitle } from "../../features/_utils/browser.utils.js"; import { ZIndexManager } from "../../features/z-index/zIndexManager.js"; -import { useZIndex } from "../../hooks/z-index/zIndex.js"; +import { useZIndex } from "../../hooks/z-index/zIndex"; import { useWindowedModal } from "../../hooks/modals/windowedModal.js"; import { Divider } from "../actions/actions/Divider.jsx"; import ModalsManager from "../../features/modals/modalsManager.js"; diff --git a/src/components/windows/WindowsView.jsx b/src/components/windows/WindowsView.jsx index 4e8c69e..d6cb016 100644 --- a/src/components/windows/WindowsView.jsx +++ b/src/components/windows/WindowsView.jsx @@ -1,9 +1,9 @@ -import { useWindows } from "../../hooks/windows/windowsContext.js"; -import { useWindowsManager } from "../../hooks/windows/windowsManagerContext.js"; +import { useWindows } from "../../hooks/windows/windowsContext"; +import { useWindowsManager } from "../../hooks/windows/windowsManagerContext"; import { memo, useEffect, useState } from "react"; import { WindowView } from "./WindowView.jsx"; -import { useSettingsManager } from "../../hooks/settings/settingsManagerContext.js"; -import { SettingsManager } from "../../features/settings/settingsManager.js"; +import { useSettingsManager } from "../../hooks/settings/settingsManagerContext"; +import { SettingsManager } from "../../features/settings/settingsManager"; import { NAME, TAG_LINE } from "../../config/branding.config.js"; import { getViewportParams, setViewportIcon, setViewportTitle } from "../../features/_utils/browser.utils.js"; import { removeDuplicatesFromArray } from "../../features/_utils/array.utils.js"; @@ -17,6 +17,7 @@ export const WindowsView = memo(() => { // Sort windows useEffect(() => { setSortedWindows([...windows].sort((windowA, windowB) => + // @ts-ignore windowA.lastInteraction - windowB.lastInteraction )); }, [windows]); diff --git a/src/features/apps/terminal/command.js b/src/features/apps/terminal/command.js deleted file mode 100644 index fb9d3eb..0000000 --- a/src/features/apps/terminal/command.js +++ /dev/null @@ -1,115 +0,0 @@ -import { VirtualFolder } from "../../virtual-drive/folder/virtualFolder.js"; -import { VirtualRoot } from "../../virtual-drive/root/virtualRoot.js"; - -/** - * @callback executeType - * @param {string[]} args - * @param {object} options - * @param {Function} options.promptOutput - * @param {Function} options.pushHistory - * @param {VirtualRoot} options.virtualRoot - * @param {VirtualFolder} options.currentDirectory - * @param {Function} options.setCurrentDirectory - * @param {string} options.username - * @param {string} options.hostname - * @param {string} options.rawInputValue - * @param {string[]} options.options - * @param {Function} options.exit - * @param {[]} options.inputs - * @returns {string|{ blank: boolean }} - */ - -/** - * @typedef {object} optionType - * @property {string} long - * @property {string} short - * @property {boolean} isInput - */ - -export default class Command { - /** @type {string} */ - name; - - /** @type {optionType[]} */ - options = []; - - /** @type {executeType} */ - execute = () => {}; - - /** - * @param {string} name - * @returns {Command} - */ - setName(name) { - this.name = name; - - if (!this.manual?.usage) { - if (!this.manual) - this.manual = {}; - - this.manual.usage = name; - } - - return this; - } - - /** - * @param {executeType} execute - * @returns {Command} - */ - setExecute(execute) { - this.execute = execute; - return this; - } - - /** - * @param {boolean} value - * @returns {Command} - */ - setRequireArgs(value) { - this.requireArgs = value; - return this; - } - - /** - * @param {boolean} value - * @returns {Command} - */ - setRequireOptions(value) { - this.requireOptions = value; - return this; - } - - /** - * @param {{ purpose: string, usage: string, description: string, options: object }} manual - * @returns {Command} - */ - setManual({ purpose, usage, description, options }) { - this.manual = { purpose, usage, description, options }; - return this; - } - - /** - * @param {optionType} option - * @returns {Command} - */ - addOption({ short, long, isInput }) { - this.options.push({ short, long, isInput }); - return this; - } - - /** - * @param {string} key - * @returns {optionType} - */ - getOption(key) { - let matchingOption = null; - - this.options.forEach((option) => { - if (option.short === key || option.long === key) - matchingOption = option; - }); - - return matchingOption; - } -} \ No newline at end of file diff --git a/src/features/apps/terminal/command.ts b/src/features/apps/terminal/command.ts new file mode 100644 index 0000000..407ffd3 --- /dev/null +++ b/src/features/apps/terminal/command.ts @@ -0,0 +1,88 @@ +import { VirtualFolder } from "../../virtual-drive/folder/virtualFolder.js"; +import { VirtualRoot } from "../../virtual-drive/root/virtualRoot.js"; + +type Option = { + long: string, + short: string, + isInput: boolean +}; + +type Execute = (args: string[], options: { + promptOutput: void, + pushHistory: void, + virtualRoot: VirtualRoot, + currentDirectory: VirtualFolder, + setCurrentDirectory: void, + username: string, + hostname: string, + rawInputValue: string, + options: string[], + exit: void, + inputs: string[] +}) => string | { blank: boolean } | void; + +type Manual = { + purpose?: string, + usage?: string, + description?: string, + options?: object +}; + +export default class Command { + name: string | undefined; + options: Option[] = []; + manual: Manual; + requireArgs: boolean; + requireOptions: boolean; + + execute: Execute = () => {}; + + setName(name: string): Command { + this.name = name; + + if (!this.manual?.usage) { + if (!this.manual) + this.manual = {}; + + this.manual.usage = name; + } + + return this; + } + + setExecute(execute: Execute): Command { + this.execute = execute; + return this; + } + + setRequireArgs(value: boolean): Command { + this.requireArgs = value; + return this; + } + + setRequireOptions(value: boolean): Command { + this.requireOptions = value; + return this; + } + + setManual({ purpose, usage, description, options }: Manual): Command { + this.manual = { purpose, usage, description, options }; + return this; + } + + addOption({ short, long, isInput }: Option): Command { + this.options.push({ short, long, isInput }); + return this; + } + + getOption(key: string): Option { + let matchingOption = null; + + this.options.forEach((option) => { + if (option.short === key || option.long === key) + matchingOption = option; + }); + + return matchingOption; + } +} \ No newline at end of file diff --git a/src/features/apps/terminal/commands.js b/src/features/apps/terminal/commands.js index 307a9d6..5ad0645 100644 --- a/src/features/apps/terminal/commands.js +++ b/src/features/apps/terminal/commands.js @@ -1,4 +1,4 @@ -import Command from "./command.js"; +import Command from "./command"; let commands = []; diff --git a/src/features/apps/terminal/commands/cat.js b/src/features/apps/terminal/commands/cat.js index d297199..6e9740f 100644 --- a/src/features/apps/terminal/commands/cat.js +++ b/src/features/apps/terminal/commands/cat.js @@ -1,6 +1,6 @@ import { VirtualFile } from "../../../virtual-drive/file/virtualFile.js"; import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; export const cat = new Command() .setRequireArgs(true) diff --git a/src/features/apps/terminal/commands/cd.js b/src/features/apps/terminal/commands/cd.js index 7c975fd..2953e3a 100644 --- a/src/features/apps/terminal/commands/cd.js +++ b/src/features/apps/terminal/commands/cd.js @@ -1,5 +1,5 @@ import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; export const cd = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/clear.js b/src/features/apps/terminal/commands/clear.js index 8d46381..bc4f5a5 100644 --- a/src/features/apps/terminal/commands/clear.js +++ b/src/features/apps/terminal/commands/clear.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; export const clear = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/compgen.js b/src/features/apps/terminal/commands/compgen.js index 043b1f0..d1d95e8 100644 --- a/src/features/apps/terminal/commands/compgen.js +++ b/src/features/apps/terminal/commands/compgen.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; import CommandsManager from "../commands.js"; export const compgen = new Command() diff --git a/src/features/apps/terminal/commands/cowsay.js b/src/features/apps/terminal/commands/cowsay.js index 92c802a..62ed609 100644 --- a/src/features/apps/terminal/commands/cowsay.js +++ b/src/features/apps/terminal/commands/cowsay.js @@ -1,5 +1,5 @@ import { MAX_WIDTH } from "../../../../config/apps/terminal.config.js"; -import Command from "../command.js"; +import Command from "../command"; const COW = ` \\ ^__^ diff --git a/src/features/apps/terminal/commands/dir.js b/src/features/apps/terminal/commands/dir.js index 66ebb5b..8524563 100644 --- a/src/features/apps/terminal/commands/dir.js +++ b/src/features/apps/terminal/commands/dir.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; export const dir = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/echo.js b/src/features/apps/terminal/commands/echo.js index 31cf8e4..80c8d2a 100644 --- a/src/features/apps/terminal/commands/echo.js +++ b/src/features/apps/terminal/commands/echo.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; export const echo = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/exit.js b/src/features/apps/terminal/commands/exit.js index 5a61c2b..e578872 100644 --- a/src/features/apps/terminal/commands/exit.js +++ b/src/features/apps/terminal/commands/exit.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; export const exit = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/fortune.js b/src/features/apps/terminal/commands/fortune.js index 50eac79..25927a3 100644 --- a/src/features/apps/terminal/commands/fortune.js +++ b/src/features/apps/terminal/commands/fortune.js @@ -1,5 +1,5 @@ import { randomFromArray } from "../../../_utils/array.utils.js"; -import Command from "../command.js"; +import Command from "../command"; /** * Source: https://github.com/shlomif/fortune-mod/blob/master/fortune-mod/datfiles/fortunes diff --git a/src/features/apps/terminal/commands/help.js b/src/features/apps/terminal/commands/help.js index a367847..f7a16b9 100644 --- a/src/features/apps/terminal/commands/help.js +++ b/src/features/apps/terminal/commands/help.js @@ -1,6 +1,6 @@ import { ANSI } from "../../../../config/apps/terminal.config.js"; import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; import CommandsManager from "../commands.js"; export const help = new Command() diff --git a/src/features/apps/terminal/commands/hostname.js b/src/features/apps/terminal/commands/hostname.js index e7c7ab6..5b2ef49 100644 --- a/src/features/apps/terminal/commands/hostname.js +++ b/src/features/apps/terminal/commands/hostname.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; export const hostname = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/lolcat.js b/src/features/apps/terminal/commands/lolcat.js index 4858f86..37e1d8f 100644 --- a/src/features/apps/terminal/commands/lolcat.js +++ b/src/features/apps/terminal/commands/lolcat.js @@ -1,6 +1,6 @@ import { ANSI } from "../../../../config/apps/terminal.config.js"; import { removeAnsi } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; const COLUMN_WIDTH = 5; const ROW_OFFSET = 2; diff --git a/src/features/apps/terminal/commands/ls.js b/src/features/apps/terminal/commands/ls.js index 0ef92da..9423fec 100644 --- a/src/features/apps/terminal/commands/ls.js +++ b/src/features/apps/terminal/commands/ls.js @@ -1,6 +1,6 @@ import { ANSI } from "../../../../config/apps/terminal.config.js"; import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; export const ls = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/make.js b/src/features/apps/terminal/commands/make.js index 6263dc2..ad0006e 100644 --- a/src/features/apps/terminal/commands/make.js +++ b/src/features/apps/terminal/commands/make.js @@ -1,5 +1,5 @@ import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; export const make = new Command() .setRequireArgs(true) diff --git a/src/features/apps/terminal/commands/man.js b/src/features/apps/terminal/commands/man.js index 901b9b5..47ab52d 100644 --- a/src/features/apps/terminal/commands/man.js +++ b/src/features/apps/terminal/commands/man.js @@ -1,6 +1,6 @@ import { ANSI } from "../../../../config/apps/terminal.config.js"; import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; import CommandsManager from "../commands.js"; const MARGIN = 5; diff --git a/src/features/apps/terminal/commands/mkdir.js b/src/features/apps/terminal/commands/mkdir.js index 6427328..becae5a 100644 --- a/src/features/apps/terminal/commands/mkdir.js +++ b/src/features/apps/terminal/commands/mkdir.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; export const mkdir = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/neofetch.js b/src/features/apps/terminal/commands/neofetch.js index cb870af..5a2bf7b 100644 --- a/src/features/apps/terminal/commands/neofetch.js +++ b/src/features/apps/terminal/commands/neofetch.js @@ -1,10 +1,10 @@ import { APPS } from "../../../../config/apps.config.js"; import { ANSI } from "../../../../config/apps/terminal.config.js"; import { ANSI_ASCII_LOGO, ANSI_LOGO_COLOR, NAME } from "../../../../config/branding.config.js"; -import { START_DATE } from "../../../../index.js"; +import { START_DATE } from "../../../../index"; import { formatRelativeTime } from "../../../_utils/date.utils.js"; import AppsManager from "../../appsManager.js"; -import Command from "../command.js"; +import Command from "../command"; export const neofetch = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/pwd.js b/src/features/apps/terminal/commands/pwd.js index 51d5457..a3d6a05 100644 --- a/src/features/apps/terminal/commands/pwd.js +++ b/src/features/apps/terminal/commands/pwd.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; export const pwd = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/reboot.js b/src/features/apps/terminal/commands/reboot.js index 549386f..60b508a 100644 --- a/src/features/apps/terminal/commands/reboot.js +++ b/src/features/apps/terminal/commands/reboot.js @@ -1,5 +1,5 @@ import { reloadViewport } from "../../../_utils/browser.utils.js"; -import Command from "../command.js"; +import Command from "../command"; export const reboot = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/reload.js b/src/features/apps/terminal/commands/reload.js index ffa71fe..ddb1788 100644 --- a/src/features/apps/terminal/commands/reload.js +++ b/src/features/apps/terminal/commands/reload.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; import CommandsManager from "../commands.js"; export const reload = new Command() diff --git a/src/features/apps/terminal/commands/rev.js b/src/features/apps/terminal/commands/rev.js index 7346eab..eccee22 100644 --- a/src/features/apps/terminal/commands/rev.js +++ b/src/features/apps/terminal/commands/rev.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; export const rev = new Command() .setManual({ diff --git a/src/features/apps/terminal/commands/rm.js b/src/features/apps/terminal/commands/rm.js index 75b6d7e..2eb2518 100644 --- a/src/features/apps/terminal/commands/rm.js +++ b/src/features/apps/terminal/commands/rm.js @@ -1,6 +1,6 @@ import { VirtualFile } from "../../../virtual-drive/file/virtualFile.js"; import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; export const rm = new Command() .setRequireArgs(true) diff --git a/src/features/apps/terminal/commands/rmdir.js b/src/features/apps/terminal/commands/rmdir.js index 9186045..49c6f56 100644 --- a/src/features/apps/terminal/commands/rmdir.js +++ b/src/features/apps/terminal/commands/rmdir.js @@ -1,5 +1,5 @@ import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; export const rmdir = new Command() .setRequireArgs(true) diff --git a/src/features/apps/terminal/commands/sl.js b/src/features/apps/terminal/commands/sl.js index d8a5533..6fe7ee0 100644 --- a/src/features/apps/terminal/commands/sl.js +++ b/src/features/apps/terminal/commands/sl.js @@ -1,5 +1,5 @@ import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; import Stream from "../stream.js"; const ANIMATION_SPEED = 1.25; diff --git a/src/features/apps/terminal/commands/touch.js b/src/features/apps/terminal/commands/touch.js index ecd7966..b527b38 100644 --- a/src/features/apps/terminal/commands/touch.js +++ b/src/features/apps/terminal/commands/touch.js @@ -1,11 +1,11 @@ import { VirtualFile } from "../../../virtual-drive/file/virtualFile.js"; import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; export const touch = new Command() .setRequireArgs(true) .setManual({ - purpose: "Changes file timestamps", + purpose: "Change file timestamps", usage: "touch [options] files", description: "Update the access and modification times of each FILE to the current time.\n\n" + "A file argument that does not exist is created empty." diff --git a/src/features/apps/terminal/commands/uptime.js b/src/features/apps/terminal/commands/uptime.js index f2a0cd0..a753e23 100644 --- a/src/features/apps/terminal/commands/uptime.js +++ b/src/features/apps/terminal/commands/uptime.js @@ -1,6 +1,6 @@ -import { START_DATE } from "../../../../index.js"; +import { START_DATE } from "../../../../index"; import { formatRelativeTime } from "../../../_utils/date.utils.js"; -import Command from "../command.js"; +import Command from "../command"; export const uptime = new Command() diff --git a/src/features/apps/terminal/commands/whatis.js b/src/features/apps/terminal/commands/whatis.js index 435d3e8..d313693 100644 --- a/src/features/apps/terminal/commands/whatis.js +++ b/src/features/apps/terminal/commands/whatis.js @@ -1,6 +1,6 @@ import { ANSI } from "../../../../config/apps/terminal.config.js"; import { formatError } from "../_utils/terminal.utils.js"; -import Command from "../command.js"; +import Command from "../command"; import CommandsManager from "../commands.js"; export const whatis = new Command() diff --git a/src/features/apps/terminal/commands/whoami.js b/src/features/apps/terminal/commands/whoami.js index 8807d86..0fd3002 100644 --- a/src/features/apps/terminal/commands/whoami.js +++ b/src/features/apps/terminal/commands/whoami.js @@ -1,4 +1,4 @@ -import Command from "../command.js"; +import Command from "../command"; export const whoami = new Command() .setManual({ diff --git a/src/globals.d.ts b/src/globals.d.ts new file mode 100644 index 0000000..f0a505d --- /dev/null +++ b/src/globals.d.ts @@ -0,0 +1,4 @@ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} \ No newline at end of file diff --git a/src/hooks/modals/contextMenu.js b/src/hooks/modals/contextMenu.js index aa8f11d..85daea8 100644 --- a/src/hooks/modals/contextMenu.js +++ b/src/hooks/modals/contextMenu.js @@ -2,7 +2,7 @@ import { useCallback } from "react"; import Vector2 from "../../features/math/vector2.js"; import Modal from "../../features/modals/modal.js"; import { STYLES } from "../../components/actions/Actions.jsx"; -import { useModalsManager } from "./modalsManagerContext.js"; +import { useModalsManager } from "./modalsManagerContext"; /** * @callback onContextMenuType diff --git a/src/hooks/modals/modalsContext.js b/src/hooks/modals/modalsContext.js deleted file mode 100644 index 9d4d596..0000000 --- a/src/hooks/modals/modalsContext.js +++ /dev/null @@ -1,33 +0,0 @@ -import { createContext, useCallback, useContext, useState } from "react"; -import Modal from "../../features/modals/modal.js"; - -const ModalsContext = createContext(); - -/** - * @param props - * @param props.children - * @param props.modalsManager - * @returns {import("react").Provider} - */ -export function ModalsProvider({ children, modalsManager }) { - const [modals, setModals] = useState([]); - - const updateModals = useCallback((updatedModals) => { - setModals(Object.values(updatedModals)); - }, []); - - modalsManager.setUpdateModals(updateModals); - - return ( - - {children} - - ); -} - -/** - * @returns {Modal[]} - */ -export function useModals() { - return useContext(ModalsContext); -} \ No newline at end of file diff --git a/src/hooks/modals/modalsContext.tsx b/src/hooks/modals/modalsContext.tsx new file mode 100644 index 0000000..a5ba3a4 --- /dev/null +++ b/src/hooks/modals/modalsContext.tsx @@ -0,0 +1,27 @@ +import React, { createContext, FC, ReactNode, useCallback, useContext, useState } from "react"; +import Modal from "../../features/modals/modal.js"; +import ModalsManager from "../../features/modals/modalsManager.js"; + +type ModalsState = Modal[] | undefined; + +const ModalsContext = createContext(undefined); + +export const ModalsProvider: FC<{ children: ReactNode, modalsManager: ModalsManager }> = ({ children, modalsManager }) => { + const [modals, setModals] = useState([]); + + const updateModals = useCallback((updatedModals: Record) => { + setModals(Object.values(updatedModals)); + }, []); + + modalsManager.setUpdateModals(updateModals); + + return ( + + {children} + + ); +}; + +export function useModals(): ModalsState { + return useContext(ModalsContext); +} \ No newline at end of file diff --git a/src/hooks/modals/modalsManagerContext.js b/src/hooks/modals/modalsManagerContext.js deleted file mode 100644 index a6c3bc4..0000000 --- a/src/hooks/modals/modalsManagerContext.js +++ /dev/null @@ -1,29 +0,0 @@ -import { createContext, useContext } from "react"; -import ModalsManager from "../../features/modals/modalsManager.js"; -import { ModalsProvider } from "./modalsContext.js"; - -const modalsManagerContext = createContext(); - -/** - * @param {object} props - * @param {import("react").ElementType} props.children - * @returns {import("react").Provider} - */ -export function ModalsManagerProvider({ children }) { - const modalsManager = new ModalsManager(); - - return ( - - - {children} - - - ); -} - -/** - * @returns {ModalsManager} - */ -export function useModalsManager() { - return useContext(modalsManagerContext); -} \ No newline at end of file diff --git a/src/hooks/modals/modalsManagerContext.tsx b/src/hooks/modals/modalsManagerContext.tsx new file mode 100644 index 0000000..0c3e287 --- /dev/null +++ b/src/hooks/modals/modalsManagerContext.tsx @@ -0,0 +1,23 @@ +import React, { createContext, FC, ReactNode, useContext } from "react"; +import ModalsManager from "../../features/modals/modalsManager.js"; +import { ModalsProvider } from "./modalsContext"; + +type ModalsManagerState = ModalsManager | undefined; + +const modalsManagerContext = createContext(undefined); + +export const ModalsManagerProvider: FC<{ children: ReactNode }> = ({ children }) => { + const modalsManager = new ModalsManager(); + + return ( + + + {children} + + + ); +}; + +export function useModalsManager(): ModalsManagerState { + return useContext(modalsManagerContext); +} \ No newline at end of file diff --git a/src/hooks/modals/windowedModal.js b/src/hooks/modals/windowedModal.js index cbf2346..b2dcee6 100644 --- a/src/hooks/modals/windowedModal.js +++ b/src/hooks/modals/windowedModal.js @@ -2,7 +2,7 @@ import { useCallback } from "react"; import Modal from "../../features/modals/modal.js"; import Vector2 from "../../features/math/vector2.js"; import { DEFAULT_DIALOG_SIZE } from "../../config/modals.config.js"; -import { useModalsManager } from "./modalsManagerContext.js"; +import { useModalsManager } from "./modalsManagerContext"; /** * @callback windowedModalType diff --git a/src/hooks/settings/settingsManagerContext.js b/src/hooks/settings/settingsManagerContext.js deleted file mode 100644 index 47dadb2..0000000 --- a/src/hooks/settings/settingsManagerContext.js +++ /dev/null @@ -1,29 +0,0 @@ -import { createContext, useContext } from "react"; -import { SettingsManager } from "../../features/settings/settingsManager.js"; -import { useVirtualRoot } from "../virtual-drive/virtualRootContext.js"; - -const SettingsContext = createContext(); - -/** - * Note: needs to be inside a virtual root provider - * @param props - * @param props.children - * @returns {import("react").Provider} - */ -export function SettingsManagerProvider({ children }) { - const virtualRoot = useVirtualRoot(); - const settingsManager = new SettingsManager(virtualRoot); - - return ( - - {children} - - ); -} - -/** - * @returns {SettingsManager} - */ -export function useSettingsManager() { - return useContext(SettingsContext); -} \ No newline at end of file diff --git a/src/hooks/settings/settingsManagerContext.tsx b/src/hooks/settings/settingsManagerContext.tsx new file mode 100644 index 0000000..dfadbf3 --- /dev/null +++ b/src/hooks/settings/settingsManagerContext.tsx @@ -0,0 +1,26 @@ +import React, { createContext, FC, ReactNode, useContext } from "react"; +import { SettingsManager } from "../../features/settings/settingsManager.js"; +import { useVirtualRoot } from "../virtual-drive/virtualRootContext"; +import { VirtualRoot } from "../../features/virtual-drive/root/virtualRoot.js"; + +type SettingsManagerState = SettingsManager | undefined; + +const SettingsManagerContext = createContext(undefined); + +/** + * Note: needs to be inside a virtual root provider + */ +export const SettingsManagerProvider: FC<{ children: ReactNode }> = ({ children }) => { + const virtualRoot = useVirtualRoot(); + const settingsManager = new SettingsManager(virtualRoot as VirtualRoot); + + return ( + + {children} + + ); +}; + +export function useSettingsManager(): SettingsManagerState { + return useContext(SettingsManagerContext); +} \ No newline at end of file diff --git a/src/hooks/virtual-drive/VirtualRootContext.js b/src/hooks/virtual-drive/VirtualRootContext.js deleted file mode 100644 index 0ed3daf..0000000 --- a/src/hooks/virtual-drive/VirtualRootContext.js +++ /dev/null @@ -1,26 +0,0 @@ -import { createContext, useContext } from "react"; -import { VirtualRoot } from "../../features/virtual-drive/root/virtualRoot.js"; - -const VirtualRootContext = createContext(); - -/** - * @param props - * @param props.children - * @returns {import("react").Provider} - */ -export function VirtualRootProvider({ children }) { - const virtualRoot = new VirtualRoot().init(); - - return ( - - {children} - - ); -} - -/** - * @returns {VirtualRoot} - */ -export function useVirtualRoot() { - return useContext(VirtualRootContext); -} \ No newline at end of file diff --git a/src/hooks/virtual-drive/virtualRootContext.tsx b/src/hooks/virtual-drive/virtualRootContext.tsx new file mode 100644 index 0000000..a6830ad --- /dev/null +++ b/src/hooks/virtual-drive/virtualRootContext.tsx @@ -0,0 +1,19 @@ +import React, { createContext, useContext, FC, ReactNode } from "react"; +import { VirtualRoot } from "../../features/virtual-drive/root/virtualRoot.js"; + +const VirtualRootContext = createContext(undefined); + +export const VirtualRootProvider: FC<{ children: ReactNode }> = ({ children }) => { + const virtualRoot = new VirtualRoot().init(); + + return + {children} + ; +}; + +/** + * @returns {VirtualRoot} + */ +export function useVirtualRoot() { + return useContext(VirtualRootContext); +} \ No newline at end of file diff --git a/src/hooks/windows/windowsContext.js b/src/hooks/windows/windowsContext.js deleted file mode 100644 index d1a9556..0000000 --- a/src/hooks/windows/windowsContext.js +++ /dev/null @@ -1,32 +0,0 @@ -import { createContext, useCallback, useContext, useState } from "react"; - -const WindowsContext = createContext(); - -/** - * @param props - * @param props.children - * @param props.windowsManager - * @returns {import("react").Provider} - */ -export function WindowsProvider({ children, windowsManager }) { - const [windows, setWindows] = useState([]); - - const updateWindows = useCallback((updatedWindows) => { - setWindows(Object.values(updatedWindows)); - }, []); - - windowsManager.setUpdateWindows(updateWindows); - - return ( - - {children} - - ); -} - -/** - * @returns {object[]} - */ -export function useWindows() { - return useContext(WindowsContext); -} \ No newline at end of file diff --git a/src/hooks/windows/windowsContext.tsx b/src/hooks/windows/windowsContext.tsx new file mode 100644 index 0000000..b8482c0 --- /dev/null +++ b/src/hooks/windows/windowsContext.tsx @@ -0,0 +1,26 @@ +import React, { createContext, FC, ReactNode, useCallback, useContext, useState } from "react"; +import WindowsManager from "../../features/windows/windowsManager"; + +type WindowsState = object[] | undefined; + +const WindowsContext = createContext(undefined); + +export const WindowsProvider: FC<{ children: ReactNode, windowsManager: WindowsManager }> = ({ children, windowsManager }) => { + const [windows, setWindows] = useState([]); + + const updateWindows = useCallback((updatedWindows: Record) => { + setWindows(Object.values(updatedWindows)); + }, []); + + windowsManager.setUpdateWindows(updateWindows); + + return ( + + {children} + + ); +}; + +export function useWindows(): WindowsState { + return useContext(WindowsContext); +} \ No newline at end of file diff --git a/src/hooks/windows/windowsManagerContext.js b/src/hooks/windows/windowsManagerContext.js deleted file mode 100644 index bf746c4..0000000 --- a/src/hooks/windows/windowsManagerContext.js +++ /dev/null @@ -1,29 +0,0 @@ -import { createContext, useContext } from "react"; -import WindowsManager from "../../features/windows/windowsManager.js"; -import { WindowsProvider } from "./windowsContext.js"; - -const WindowsManagerContext = createContext(); - -/** - * @param {object} props - * @param {import("react").ElementType} props.children - * @returns {import("react").Provider} - */ -export function WindowsManagerProvider({ children }) { - const windowsManager = new WindowsManager(); - - return ( - - - {children} - - - ); -} - -/** - * @returns {WindowsManager} - */ -export function useWindowsManager() { - return useContext(WindowsManagerContext); -} \ No newline at end of file diff --git a/src/hooks/windows/windowsManagerContext.tsx b/src/hooks/windows/windowsManagerContext.tsx new file mode 100644 index 0000000..504196a --- /dev/null +++ b/src/hooks/windows/windowsManagerContext.tsx @@ -0,0 +1,23 @@ +import React, { createContext, FC, ReactNode, useContext } from "react"; +import WindowsManager from "../../features/windows/windowsManager.js"; +import { WindowsProvider } from "./windowsContext"; + +type WindowsManagerState = WindowsManager | undefined; + +const WindowsManagerContext = createContext(undefined); + +export const WindowsManagerProvider: FC<{ children: ReactNode }> = ({ children }) => { + const windowsManager = new WindowsManager(); + + return ( + + + {children} + + + ); +}; + +export function useWindowsManager(): WindowsManagerState { + return useContext(WindowsManagerContext); +} \ No newline at end of file diff --git a/src/hooks/z-index/zIndex.js b/src/hooks/z-index/zIndex.js index 6e3d94a..5dfe4cd 100644 --- a/src/hooks/z-index/zIndex.js +++ b/src/hooks/z-index/zIndex.js @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import { useZIndexManager } from "./zIndexManagerContext.js"; +import { useZIndexManager } from "./zIndexManagerContext"; import { ZIndexManager } from "../../features/z-index/zIndexManager.js"; export function useZIndex({ groupIndex, index }) { diff --git a/src/hooks/z-index/zIndexManagerContext.js b/src/hooks/z-index/zIndexManagerContext.js deleted file mode 100644 index 723b9d2..0000000 --- a/src/hooks/z-index/zIndexManagerContext.js +++ /dev/null @@ -1,24 +0,0 @@ -import { createContext, useContext } from "react"; -import { ZIndexManager } from "../../features/z-index/zIndexManager.js"; - -const ZIndexManagerContext = createContext(); - -/** - * @param {object} props - * @param {import("react").ElementType} props.children - * @returns {import("react").Provider} - */ -export function ZIndexManagerProvider({ children }) { - const zIndexManager = new ZIndexManager(); - - return - {children} - ; -} - -/** - * @returns {ZIndexManager} - */ -export function useZIndexManager() { - return useContext(ZIndexManagerContext); -} \ No newline at end of file diff --git a/src/hooks/z-index/zIndexManagerContext.tsx b/src/hooks/z-index/zIndexManagerContext.tsx new file mode 100644 index 0000000..1797763 --- /dev/null +++ b/src/hooks/z-index/zIndexManagerContext.tsx @@ -0,0 +1,18 @@ +import React, { createContext, FC, ReactNode, useContext } from "react"; +import { ZIndexManager } from "../../features/z-index/zIndexManager.js"; + +type ZIndexManagerState = ZIndexManager | undefined; + +const ZIndexManagerContext = createContext(undefined); + +export const ZIndexManagerProvider: FC<{ children: ReactNode }> = ({ children }) => { + const zIndexManager = new ZIndexManager(); + + return + {children} + ; +}; + +export function useZIndexManager(): ZIndexManagerState { + return useContext(ZIndexManagerContext); +} \ No newline at end of file diff --git a/src/index.js b/src/index.tsx similarity index 91% rename from src/index.js rename to src/index.tsx index 2e89953..c7aaf45 100644 --- a/src/index.js +++ b/src/index.tsx @@ -8,12 +8,10 @@ import { ASCII_LOGO, NAME } from "./config/branding.config.js"; export const START_DATE = new Date(); // Render app -const root = ReactDOM.createRoot(document.getElementById("root")); -root.render( - - - -); +const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); +root.render( + +); // Log welcome message const asciiLogoWidth = ASCII_LOGO.split("\n")[1].length; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..c4450b0 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,118 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "jsx": "react", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "Node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + "types": ["webpack-env"], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + "checkJs": false, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": false, /* Enable all strict type-checking options. */ + // "noImplicitAny": false, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": false, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": false, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": false, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": false, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + // "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": [ + "src/**/*" + ], + "exclude": [ + "./node_modules", + "./build", + "./dist", + "./.vscode" + ] +} \ No newline at end of file