diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..3e0781152 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,73 @@ +{ + "extends": "zardoy", + "rules": { + "semi": [ + "error", + "never" + ], + "indent": [ + "error", + 2, + { + "SwitchCase": 2, + "ignoredNodes": [ + "TemplateLiteral" + ] + } + ], + "quotes": [ + "error", + "single", + { + "allowTemplateLiterals": true + } + ], + // perf + "import/no-deprecated": "off", + // --- + "@typescript-eslint/prefer-nullish-coalescing": "off", + "@typescript-eslint/naming-convention": "off", + "prefer-template": "off", + // intentional: improve readability in some cases + "no-else-return": "off", + "@typescript-eslint/padding-line-between-statements": "off", + "arrow-body-style": "off", + "unicorn/prefer-ternary": "off", + "unicorn/switch-case-braces": "off", + "@typescript-eslint/consistent-type-definitions": "off", + "unicorn/explicit-length-check": "off", + "unicorn/prefer-dom-node-append": "off", + "typescript-eslint/no-confusing-void-expression": "off", + "unicorn/no-lonely-if": "off", + "no-multi-assign": "off", + "sonarjs/no-duplicate-string": "off", + "new-cap": "off", + "unicorn/consistent-destructuring": "off", + "unicorn/no-await-expression-member": "off", + "unicorn/prefer-add-event-listener": "off", + "unicorn/prefer-top-level-await": "off", + "default-case": "off", + // I guess it would better to fix + "node/prefer-global/buffer": "off", + "unicorn/prefer-optional-catch-binding": "off", // still useful for debugging + "no-alert": "off", // todo once replaced with ui, enable + "@typescript-eslint/restrict-plus-operands": "off", + // --- + "@typescript-eslint/no-throw-literal": "off", // disabling because of "rule expansion" + "no-empty-function": "off", + "@typescript-eslint/no-explicit-any": "off", + "import/no-extraneous-dependencies": "off", + "@typescript-eslint/ban-types": "off", + "unicorn/prefer-query-selector": "off", + "@typescript-eslint/dot-notation": "off", // trick prop type-checking + "@typescript-eslint/consistent-type-imports": "off", + "no-negated-condition": "off", + "@typescript-eslint/no-require-imports": "off", + "unicorn/prefer-number-properties": "off", + "@typescript-eslint/no-confusing-void-expression": "off", + // needs to be fixed actually + "@typescript-eslint/no-floating-promises": "warn", + "no-async-promise-executor": "off", + "no-bitwise": "off" + } +} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c132fa563..c53d6061e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,7 @@ jobs: - name: Install pnpm run: npm i -g pnpm - run: pnpm install + - run: pnpm lint - run: pnpm check-build - run: nohup pnpm prod-start & - run: nohup node cypress/minecraft-server.mjs & diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 13c5e68d4..0a6378a93 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,8 +19,13 @@ jobs: - run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} # will install + build to .vercel/output/static - run: vercel build --token=${{ secrets.VERCEL_TOKEN }} --prod - - run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} --prod - - run: pnpx zardoy-release node + - name: Deploy Project to Vercel + uses: mathiasvr/command-output@v2.0.0 + with: + run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} --prod + id: deploy + - run: | + pnpx zardoy-release node --footer "This release URL: ${{ steps.deploy.outputs.stdout }}" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: cp vercel.json .vercel/output/static/vercel.json diff --git a/cypress/integration/index.spec.ts b/cypress/integration/index.spec.ts index c4f239178..bfc5ff8c9 100644 --- a/cypress/integration/index.spec.ts +++ b/cypress/integration/index.spec.ts @@ -2,77 +2,78 @@ import type { AppOptions } from '../../src/optionsStorage' const cleanVisit = () => { - window.localStorage.clear() - visit() + window.localStorage.clear() + visit() } const visit = (url = '/') => { - window.localStorage.cypress = 'true' - cy.visit(url) + window.localStorage.cypress = 'true' + cy.visit(url) } // todo use ssl const compareRenderedFlatWorld = () => { - // wait for render - // cy.wait(6000) - // cy.get('body').toMatchImageSnapshot({ - // name: 'superflat-world', - // }) + // wait for render + // cy.wait(6000) + // cy.get('body').toMatchImageSnapshot({ + // name: 'superflat-world', + // }) } const testWorldLoad = () => { - cy.document().then({ timeout: 20_000, }, doc => { - return new Cypress.Promise(resolve => { - doc.addEventListener('cypress-world-ready', resolve) - }) - }).then(() => { - compareRenderedFlatWorld() + cy.document().then({ timeout: 20_000, }, doc => { + return new Cypress.Promise(resolve => { + doc.addEventListener('cypress-world-ready', resolve) }) + }).then(() => { + compareRenderedFlatWorld() + }) } const setOptions = (options: Partial) => { - cy.window().then(win => { - Object.assign(win['options'], options) - }) + cy.window().then(win => { + Object.assign(win['options'], options) + }) } it('Loads & renders singleplayer', () => { - cleanVisit() - setOptions({ - localServerOptions: { - generation: { - name: 'superflat', - options: { seed: 250869072 } - }, - }, - renderDistance: 2 - }) - cy.get('#title-screen').find('[data-test-id="singleplayer-button"]', { includeShadowDom: true, }).click() - testWorldLoad() + cleanVisit() + setOptions({ + localServerOptions: { + generation: { + name: 'superflat', + // eslint-disable-next-line unicorn/numeric-separators-style + options: { seed: 250869072 } + }, + }, + renderDistance: 2 + }) + cy.get('#title-screen').find('[data-test-id="singleplayer-button"]', { includeShadowDom: true, }).click() + testWorldLoad() }) it('Joins to server', () => { - // visit('/?version=1.16.1') - window.localStorage.version = '1.16.1' - visit() - // todo replace with data-test - cy.get('#title-screen').find('[data-test-id="connect-screen-button"]', { includeShadowDom: true, }).click() - cy.get('input#serverip', { includeShadowDom: true, }).clear().focus().type('localhost') - cy.get('[data-test-id="connect-to-server"]', { includeShadowDom: true, }).click() - testWorldLoad() + // visit('/?version=1.16.1') + window.localStorage.version = '' + visit() + // todo replace with data-test + cy.get('#title-screen').find('[data-test-id="connect-screen-button"]', { includeShadowDom: true, }).click() + cy.get('input#serverip', { includeShadowDom: true, }).clear().focus().type('localhost') + cy.get('[data-test-id="connect-to-server"]', { includeShadowDom: true, }).click() + testWorldLoad() }) it('Loads & renders zip world', () => { - cleanVisit() - cy.get('#title-screen').find('[data-test-id="select-file-folder"]', { includeShadowDom: true, }).click({ shiftKey: true }) - cy.get('input[type="file"]').selectFile('cypress/superflat.zip', { force: true }) - testWorldLoad() + cleanVisit() + cy.get('#title-screen').find('[data-test-id="select-file-folder"]', { includeShadowDom: true, }).click({ shiftKey: true }) + cy.get('input[type="file"]').selectFile('cypress/superflat.zip', { force: true }) + testWorldLoad() }) it.skip('Performance test', () => { - // select that world - // from -2 85 24 - // await bot.loadPlugin(pathfinder.pathfinder) - // bot.pathfinder.goto(new pathfinder.goals.GoalXZ(28, -28)) + // select that world + // from -2 85 24 + // await bot.loadPlugin(pathfinder.pathfinder) + // bot.pathfinder.goto(new pathfinder.goals.GoalXZ(28, -28)) }) diff --git a/package.json b/package.json index c4d2300f4..6a7fdac1c 100644 --- a/package.json +++ b/package.json @@ -7,23 +7,22 @@ "start-watch-script": "nodemon -w esbuild.mjs esbuild.mjs", "build": "node scripts/build.js copyFiles && node scripts/prepareData.mjs -f && node esbuild.mjs --minify --prod", "check-build": "tsc && pnpm build", - "watch": "node scripts/build.js copyFilesDev && webpack serve --config webpack.dev.js --progress", "test:cypress": "cypress run", "test:e2e": "start-test http-get://localhost:8080 test:cypress", "prod-start": "node server.js", - "postinstall": "node scripts/gen-texturepack-files.mjs" + "postinstall": "node scripts/gen-texturepack-files.mjs", + "lint": "eslint \"{src,cypress}/**/*.{ts,js,jsx,tsx}\"" }, "keywords": [ "prismarine", "web", "client" ], + "bin": "./server.js", "author": "PrismarineJS", "license": "MIT", "dependencies": { "@dimaka/interface": "0.0.3-alpha.0", - "@emotion/css": "^11.11.2", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", "@types/wicg-file-system-access": "^2020.9.6", @@ -33,10 +32,8 @@ "compression": "^1.7.4", "cypress-plugin-snapshots": "^1.4.4", "debug": "^4.3.4", - "diamond-square": "^1.2.0", "eruda": "^3.0.1", "esbuild": "^0.19.3", - "esbuild-loader": "^4.0.0", "esbuild-plugin-polyfill-node": "^0.3.0", "express": "^4.18.2", "flying-squid": "github:zardoy/space-squid#everything", @@ -46,16 +43,13 @@ "lit": "^2.8.0", "lodash": "^4.17.21", "minecraft-data": "^3.0.0", - "net-browserify": "github:PrismarineJS/net-browserify", + "net-browserify": "github:zardoy/prismarinejs-net-browserify", "peerjs": "^1.5.0", "pretty-bytes": "^6.1.1", "qrcode.react": "^3.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-refresh": "^0.14.0", - "speed-measure-webpack-plugin": "^1.5.0", "stats.js": "^0.17.0", - "url": "^0.11.1", "valtio": "^1.11.1", "workbox-build": "^7.0.0" }, @@ -64,22 +58,18 @@ "assert": "^2.0.0", "browserify-zlib": "^0.2.0", "buffer": "^6.0.3", - "clean-webpack-plugin": "^4.0.0", "constants-browserify": "^1.0.0", "contro-max": "^0.1.1", - "copy-webpack-plugin": "^11.0.0", "crypto-browserify": "^3.12.0", - "css-loader": "^6.8.1", "cypress": "^9.5.4", "cypress-esbuild-preprocessor": "^1.0.2", + "eslint": "^8.50.0", + "eslint-config-zardoy": "^0.2.17", "events": "^3.3.0", "filesize": "^10.0.12", - "html-webpack-plugin": "^5.5.3", "http-browserify": "^1.7.0", "http-server": "^14.1.1", "https-browserify": "^1.0.0", - "lodash-webpack-plugin": "^0.11.6", - "memfs": "^3.5.3", "minecraft-inventory-gui": "github:zardoy/minecraft-inventory-gui#next", "mineflayer": "github:zardoy/mineflayer#custom", "mineflayer-pathfinder": "^2.4.4", @@ -90,19 +80,10 @@ "process": "github:PrismarineJS/node-process", "rimraf": "^5.0.1", "stream-browserify": "^3.0.0", - "style-loader": "^3.3.3", "three": "0.128.0", "timers-browserify": "^2.0.12", "typescript": "^5.2.2", - "url-loader": "^4.1.1", "use-typed-event-listener": "^4.0.2", - "vite": "^4.4.9", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "webpack-dev-middleware": "^6.1.1", - "webpack-dev-server": "^4.15.1", - "webpack-merge": "^5.9.0", - "workbox-webpack-plugin": "^6.6.0", "yaml": "^2.3.2" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb814ed6d..9ec9eda32 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,12 +18,6 @@ importers: '@dimaka/interface': specifier: 0.0.3-alpha.0 version: 0.0.3-alpha.0(@babel/core@7.22.11)(@popperjs/core@2.11.8)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@emotion/css': - specifier: ^11.11.2 - version: 11.11.2 - '@pmmmwh/react-refresh-webpack-plugin': - specifier: ^0.5.11 - version: 0.5.11(react-refresh@0.14.0)(webpack-dev-server@4.15.1)(webpack@5.88.2) '@types/react': specifier: ^18.2.20 version: 18.2.20 @@ -51,18 +45,12 @@ importers: debug: specifier: ^4.3.4 version: 4.3.4(supports-color@8.1.1) - diamond-square: - specifier: ^1.2.0 - version: 1.2.0 eruda: specifier: ^3.0.1 version: 3.0.1 esbuild: specifier: ^0.19.3 version: 0.19.3 - esbuild-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.88.2) esbuild-plugin-polyfill-node: specifier: ^0.3.0 version: 0.3.0(esbuild@0.19.3) @@ -91,8 +79,8 @@ importers: specifier: 3.45.0 version: 3.45.0 net-browserify: - specifier: github:PrismarineJS/net-browserify - version: github.com/PrismarineJS/net-browserify/0acebf76d5a14991e6b2586f83f707be5171579c + specifier: github:zardoy/prismarinejs-net-browserify + version: github.com/zardoy/prismarinejs-net-browserify/51262fe139a6a4856ffd4a6dc7b9145c3d6d8039 peerjs: specifier: ^1.5.0 version: 1.5.0 @@ -108,18 +96,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) - react-refresh: - specifier: ^0.14.0 - version: 0.14.0 - speed-measure-webpack-plugin: - specifier: ^1.5.0 - version: 1.5.0(webpack@5.88.2) stats.js: specifier: ^0.17.0 version: 0.17.0 - url: - specifier: ^0.11.1 - version: 0.11.1 valtio: specifier: ^1.11.1 version: 1.11.1(react@18.2.0) @@ -139,39 +118,33 @@ importers: buffer: specifier: ^6.0.3 version: 6.0.3 - clean-webpack-plugin: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.88.2) constants-browserify: specifier: ^1.0.0 version: 1.0.0 contro-max: specifier: ^0.1.1 version: 0.1.1(typescript@5.2.2) - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.88.2) crypto-browserify: specifier: ^3.12.0 version: 3.12.0 - css-loader: - specifier: ^6.8.1 - version: 6.8.1(webpack@5.88.2) cypress: specifier: ^9.5.4 version: 9.5.4 cypress-esbuild-preprocessor: specifier: ^1.0.2 version: 1.0.2 + eslint: + specifier: ^8.50.0 + version: 8.50.0 + eslint-config-zardoy: + specifier: ^0.2.17 + version: 0.2.17(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0)(typescript@5.2.2) events: specifier: ^3.3.0 version: 3.3.0 filesize: specifier: ^10.0.12 version: 10.0.12 - html-webpack-plugin: - specifier: ^5.5.3 - version: 5.5.3(webpack@5.88.2) http-browserify: specifier: ^1.7.0 version: 1.7.0 @@ -181,12 +154,6 @@ importers: https-browserify: specifier: ^1.0.0 version: 1.0.0 - lodash-webpack-plugin: - specifier: ^0.11.6 - version: 0.11.6(webpack@5.88.2) - memfs: - specifier: ^3.5.3 - version: 3.5.3 minecraft-inventory-gui: specifier: github:zardoy/minecraft-inventory-gui#next version: github.com/zardoy/minecraft-inventory-gui/c1331c91fb39bd562dc48eeb33321240d4870edd(@types/react@18.2.20)(react@18.2.0) @@ -217,9 +184,6 @@ importers: stream-browserify: specifier: ^3.0.0 version: 3.0.0 - style-loader: - specifier: ^3.3.3 - version: 3.3.3(webpack@5.88.2) three: specifier: 0.128.0 version: 0.128.0 @@ -229,33 +193,9 @@ importers: typescript: specifier: ^5.2.2 version: 5.2.2 - url-loader: - specifier: ^4.1.1 - version: 4.1.1(webpack@5.88.2) use-typed-event-listener: specifier: ^4.0.2 version: 4.0.2(react@18.2.0)(typescript@5.2.2) - vite: - specifier: ^4.4.9 - version: 4.4.9 - webpack: - specifier: ^5.88.2 - version: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.88.2) - webpack-dev-middleware: - specifier: ^6.1.1 - version: 6.1.1(webpack@5.88.2) - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.1(debug@4.3.4)(webpack-cli@5.1.4)(webpack@5.88.2) - webpack-merge: - specifier: ^5.9.0 - version: 5.9.0 - workbox-webpack-plugin: - specifier: ^6.6.0 - version: 6.6.0(webpack@5.88.2) yaml: specifier: ^2.3.2 version: 2.3.2 @@ -349,13 +289,13 @@ importers: version: 16.0.0 standard: specifier: ^17.0.0 - version: 17.0.0 + version: 17.0.0(@typescript-eslint/parser@6.7.3) webpack: specifier: ^5.10.2 version: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.1 - version: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.88.2) + version: 5.1.4(webpack@5.88.2) packages: @@ -381,6 +321,7 @@ packages: json-schema: 0.4.0 jsonpointer: 5.0.1 leven: 3.1.0 + dev: false /@azure/msal-common@13.3.0: resolution: {integrity: sha512-/VFWTicjcJbrGp3yQP7A24xU95NiDMe23vxIU1U6qdRPFsprMDNUohMudclnd+WSHE4/McqkZs/nUU3sAKkVjg==} @@ -441,12 +382,14 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.11 + dev: false /@babel/helper-builder-binary-assignment-operator-visitor@7.22.10: resolution: {integrity: sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.11 + dev: false /@babel/helper-compilation-targets@7.22.10: resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} @@ -474,6 +417,7 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 + dev: false /@babel/helper-create-regexp-features-plugin@7.22.9(@babel/core@7.22.11): resolution: {integrity: sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==} @@ -485,6 +429,7 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 + dev: false /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.11): resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} @@ -499,6 +444,7 @@ packages: resolve: 1.22.4 transitivePeerDependencies: - supports-color + dev: false /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} @@ -522,6 +468,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.11 + dev: false /@babel/helper-module-imports@7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} @@ -547,6 +494,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.11 + dev: false /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} @@ -562,6 +510,7 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-wrap-function': 7.22.10 + dev: false /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.11): resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} @@ -573,6 +522,7 @@ packages: '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 + dev: false /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} @@ -585,6 +535,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.11 + dev: false /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} @@ -611,6 +562,7 @@ packages: '@babel/helper-function-name': 7.22.5 '@babel/template': 7.22.5 '@babel/types': 7.22.11 + dev: false /@babel/helpers@7.22.11: resolution: {integrity: sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==} @@ -645,6 +597,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} @@ -656,6 +609,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.22.12(@babel/core@7.22.11) + dev: false /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.11): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} @@ -664,6 +618,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.11 + dev: false /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.11): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -698,6 +653,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -706,6 +662,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -714,6 +671,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} @@ -723,6 +681,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} @@ -732,6 +691,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.11): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} @@ -805,6 +765,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.11): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -834,6 +795,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} @@ -843,6 +805,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-async-generator-functions@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==} @@ -855,6 +818,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.11) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} @@ -866,6 +830,7 @@ packages: '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} @@ -875,6 +840,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-block-scoping@7.22.10(@babel/core@7.22.11): resolution: {integrity: sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==} @@ -884,6 +850,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} @@ -894,6 +861,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} @@ -905,6 +873,7 @@ packages: '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.11): resolution: {integrity: sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==} @@ -922,6 +891,7 @@ packages: '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 + dev: false /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} @@ -932,6 +902,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.5 + dev: false /@babel/plugin-transform-destructuring@7.22.10(@babel/core@7.22.11): resolution: {integrity: sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==} @@ -941,6 +912,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} @@ -951,6 +923,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} @@ -960,6 +933,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} @@ -970,6 +944,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} @@ -980,6 +955,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.10 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} @@ -990,6 +966,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} @@ -999,6 +976,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} @@ -1010,6 +988,7 @@ packages: '@babel/helper-compilation-targets': 7.22.10 '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} @@ -1020,6 +999,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} @@ -1029,6 +1009,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} @@ -1039,6 +1020,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} @@ -1048,6 +1030,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} @@ -1058,6 +1041,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-modules-commonjs@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==} @@ -1069,6 +1053,7 @@ packages: '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 + dev: false /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} @@ -1081,6 +1066,7 @@ packages: '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.5 + dev: false /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} @@ -1091,6 +1077,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} @@ -1101,6 +1088,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} @@ -1110,6 +1098,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} @@ -1120,6 +1109,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} @@ -1130,6 +1120,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-object-rest-spread@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==} @@ -1143,6 +1134,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.11) '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} @@ -1153,6 +1145,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} @@ -1163,6 +1156,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-optional-chaining@7.22.12(@babel/core@7.22.11): resolution: {integrity: sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==} @@ -1174,6 +1168,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} @@ -1183,6 +1178,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} @@ -1193,6 +1189,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.11): resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} @@ -1205,6 +1202,7 @@ packages: '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.11) + dev: false /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} @@ -1214,6 +1212,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.11): resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} @@ -1224,6 +1223,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 + dev: false /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} @@ -1233,6 +1233,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} @@ -1242,6 +1243,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} @@ -1252,6 +1254,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: false /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} @@ -1261,6 +1264,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} @@ -1270,6 +1274,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} @@ -1279,6 +1284,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.11): resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} @@ -1288,6 +1294,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} @@ -1298,6 +1305,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} @@ -1308,6 +1316,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.11): resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} @@ -1318,6 +1327,7 @@ packages: '@babel/core': 7.22.11 '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/preset-env@7.22.10(@babel/core@7.22.11): resolution: {integrity: sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==} @@ -1408,6 +1418,7 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: false /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.11): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} @@ -1418,9 +1429,11 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/types': 7.22.11 esutils: 2.0.3 + dev: false /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: false /@babel/runtime@7.22.11: resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} @@ -1576,6 +1589,7 @@ packages: /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} + dev: true /@emotion/babel-plugin@11.11.0: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} @@ -1603,16 +1617,6 @@ packages: stylis: 4.2.0 dev: false - /@emotion/css@11.11.2: - resolution: {integrity: sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew==} - dependencies: - '@emotion/babel-plugin': 11.11.0 - '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.2 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - dev: false - /@emotion/css@11.5.0(@babel/core@7.22.11): resolution: {integrity: sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==} peerDependencies: @@ -1663,15 +1667,6 @@ packages: resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} dev: false - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.19.3: resolution: {integrity: sha512-w+Akc0vv5leog550kjJV9Ru+MXMR2VuMrui3C61mnysim0gkFCPOUTAfzTP0qX+HpN9Syu3YA3p1hf3EPqObRw==} engines: {node: '>=12'} @@ -1680,15 +1675,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.19.3: resolution: {integrity: sha512-Lemgw4io4VZl9GHJmjiBGzQ7ONXRfRPHcUEerndjwiSkbxzrpq0Uggku5MxxrXdwJ+pTj1qyw4jwTu7hkPsgIA==} engines: {node: '>=12'} @@ -1697,15 +1683,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.19.3: resolution: {integrity: sha512-FKQJKkK5MXcBHoNZMDNUAg1+WcZlV/cuXrWCoGF/TvdRiYS4znA0m5Il5idUwfxrE20bG/vU1Cr5e1AD6IEIjQ==} engines: {node: '>=12'} @@ -1714,15 +1691,6 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.19.3: resolution: {integrity: sha512-kw7e3FXU+VsJSSSl2nMKvACYlwtvZB8RUIeVShIEY6PVnuZ3c9+L9lWB2nWeeKWNNYDdtL19foCQ0ZyUL7nqGw==} engines: {node: '>=12'} @@ -1731,15 +1699,6 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.19.3: resolution: {integrity: sha512-tPfZiwF9rO0jW6Jh9ipi58N5ZLoSjdxXeSrAYypy4psA2Yl1dAMhM71KxVfmjZhJmxRjSnb29YlRXXhh3GqzYw==} engines: {node: '>=12'} @@ -1748,15 +1707,6 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.19.3: resolution: {integrity: sha512-ERDyjOgYeKe0Vrlr1iLrqTByB026YLPzTytDTz1DRCYM+JI92Dw2dbpRHYmdqn6VBnQ9Bor6J8ZlNwdZdxjlSg==} engines: {node: '>=12'} @@ -1765,15 +1715,6 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.19.3: resolution: {integrity: sha512-nXesBZ2Ad1qL+Rm3crN7NmEVJ5uvfLFPLJev3x1j3feCQXfAhoYrojC681RhpdOph8NsvKBBwpYZHR7W0ifTTA==} engines: {node: '>=12'} @@ -1782,15 +1723,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.19.3: resolution: {integrity: sha512-qXvYKmXj8GcJgWq3aGvxL/JG1ZM3UR272SdPU4QSTzD0eymrM7leiZH77pvY3UetCy0k1xuXZ+VPvoJNdtrsWQ==} engines: {node: '>=12'} @@ -1799,15 +1731,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.19.3: resolution: {integrity: sha512-zr48Cg/8zkzZCzDHNxXO/89bf9e+r4HtzNUPoz4GmgAkF1gFAFmfgOdCbR8zMbzFDGb1FqBBhdXUpcTQRYS1cQ==} engines: {node: '>=12'} @@ -1816,15 +1739,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.19.3: resolution: {integrity: sha512-7XlCKCA0nWcbvYpusARWkFjRQNWNGlt45S+Q18UeS///K6Aw8bB2FKYe9mhVWy/XLShvCweOLZPrnMswIaDXQA==} engines: {node: '>=12'} @@ -1833,15 +1747,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.19.3: resolution: {integrity: sha512-qGTgjweER5xqweiWtUIDl9OKz338EQqCwbS9c2Bh5jgEH19xQ1yhgGPNesugmDFq+UUSDtWgZ264st26b3de8A==} engines: {node: '>=12'} @@ -1850,15 +1755,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.19.3: resolution: {integrity: sha512-gy1bFskwEyxVMFRNYSvBauDIWNggD6pyxUksc0MV9UOBD138dKTzr8XnM2R4mBsHwVzeuIH8X5JhmNs2Pzrx+A==} engines: {node: '>=12'} @@ -1867,15 +1763,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.19.3: resolution: {integrity: sha512-UrYLFu62x1MmmIe85rpR3qou92wB9lEXluwMB/STDzPF9k8mi/9UvNsG07Tt9AqwPQXluMQ6bZbTzYt01+Ue5g==} engines: {node: '>=12'} @@ -1884,15 +1771,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.19.3: resolution: {integrity: sha512-9E73TfyMCbE+1AwFOg3glnzZ5fBAFK4aawssvuMgCRqCYzE0ylVxxzjEfut8xjmKkR320BEoMui4o/t9KA96gA==} engines: {node: '>=12'} @@ -1901,15 +1779,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.19.3: resolution: {integrity: sha512-LlmsbuBdm1/D66TJ3HW6URY8wO6IlYHf+ChOUz8SUAjVTuaisfuwCOAgcxo3Zsu3BZGxmI7yt//yGOxV+lHcEA==} engines: {node: '>=12'} @@ -1918,15 +1787,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.19.3: resolution: {integrity: sha512-ogV0+GwEmvwg/8ZbsyfkYGaLACBQWDvO0Kkh8LKBGKj9Ru8VM39zssrnu9Sxn1wbapA2qNS6BiLdwJZGouyCwQ==} engines: {node: '>=12'} @@ -1935,15 +1795,6 @@ packages: requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.19.3: resolution: {integrity: sha512-o1jLNe4uzQv2DKXMlmEzf66Wd8MoIhLNO2nlQBHLtWyh2MitDG7sMpfCO3NTcoTMuqHjfufgUQDFRI5C+xsXQw==} engines: {node: '>=12'} @@ -1952,15 +1803,6 @@ packages: requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.19.3: resolution: {integrity: sha512-AZJCnr5CZgZOdhouLcfRdnk9Zv6HbaBxjcyhq0StNcvAdVZJSKIdOiPB9az2zc06ywl0ePYJz60CjdKsQacp5Q==} engines: {node: '>=12'} @@ -1969,15 +1811,6 @@ packages: requiresBuild: true optional: true - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.19.3: resolution: {integrity: sha512-Acsujgeqg9InR4glTRvLKGZ+1HMtDm94ehTIHKhJjFpgVzZG9/pIcWW/HA/DoMfEyXmANLDuDZ2sNrWcjq1lxw==} engines: {node: '>=12'} @@ -1986,15 +1819,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.19.3: resolution: {integrity: sha512-FSrAfjVVy7TifFgYgliiJOyYynhQmqgPj15pzLyJk8BUsnlWNwP/IAy6GAiB1LqtoivowRgidZsfpoYLZH586A==} engines: {node: '>=12'} @@ -2003,15 +1827,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.19.3: resolution: {integrity: sha512-xTScXYi12xLOWZ/sc5RBmMN99BcXp/eEf7scUC0oeiRoiT5Vvo9AycuqCp+xdpDyAU+LkrCqEpUS9fCSZF8J3Q==} engines: {node: '>=12'} @@ -2020,15 +1835,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.19.3: resolution: {integrity: sha512-FbUN+0ZRXsypPyWE2IwIkVjDkDnJoMJARWOcFZn4KPPli+QnKqF0z1anvfaYe3ev5HFCpRDLLBDHyOALLppWHw==} engines: {node: '>=12'} @@ -2047,6 +1853,16 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.50.0 + eslint-visitor-keys: 3.4.3 + dev: true + /@eslint-community/regexpp@4.8.0: resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -2074,6 +1890,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@eslint/js@8.50.0: + resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} dev: true @@ -2095,6 +1916,17 @@ packages: - supports-color dev: true + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -2771,9 +2603,6 @@ packages: resolution: {integrity: sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw==} dev: false - /@leichtgewicht/ip-codec@2.0.4: - resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} - /@lit-labs/ssr-dom-shim@1.1.1: resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false @@ -2835,46 +2664,6 @@ packages: dev: true optional: true - /@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(webpack-dev-server@4.15.1)(webpack@5.88.2): - resolution: {integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==} - engines: {node: '>= 10.13'} - peerDependencies: - '@types/webpack': 4.x || 5.x - react-refresh: '>=0.10.0 <1.0.0' - sockjs-client: ^1.4.0 - type-fest: '>=0.17.0 <5.0.0' - webpack: '>=4.43.0 <6.0.0' - webpack-dev-server: 3.x || 4.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - '@types/webpack': - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - dependencies: - ansi-html-community: 0.0.8 - common-path-prefix: 3.0.0 - core-js-pure: 3.32.1 - error-stack-parser: 2.1.4 - find-up: 5.0.0 - html-entities: 2.4.0 - loader-utils: 2.0.4 - react-refresh: 0.14.0 - schema-utils: 3.3.0 - source-map: 0.7.4 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - webpack-dev-server: 4.15.1(debug@4.3.4)(webpack-cli@5.1.4)(webpack@5.88.2) - dev: false - /@popperjs/core@2.11.8: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false @@ -2894,6 +2683,7 @@ packages: '@babel/helper-module-imports': 7.22.5 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 + dev: false /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} @@ -2908,6 +2698,7 @@ packages: is-module: 1.0.0 resolve: 1.22.4 rollup: 2.79.1 + dev: false /@rollup/plugin-replace@2.4.2(rollup@2.79.1): resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} @@ -2917,6 +2708,7 @@ packages: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) magic-string: 0.25.9 rollup: 2.79.1 + dev: false /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} @@ -2928,6 +2720,11 @@ packages: estree-walker: 1.0.1 picomatch: 2.3.1 rollup: 2.79.1 + dev: false + + /@rushstack/eslint-patch@1.4.0: + resolution: {integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==} + dev: true /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} @@ -2965,6 +2762,7 @@ packages: json5: 2.2.3 magic-string: 0.25.9 string.prototype.matchall: 4.0.8 + dev: false /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} @@ -3003,28 +2801,6 @@ packages: '@babel/types': 7.22.11 dev: true - /@types/body-parser@1.19.2: - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} - dependencies: - '@types/connect': 3.4.35 - '@types/node': 20.5.7 - - /@types/bonjour@3.5.10: - resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} - dependencies: - '@types/node': 20.5.7 - - /@types/connect-history-api-fallback@1.5.0: - resolution: {integrity: sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==} - dependencies: - '@types/express-serve-static-core': 4.17.36 - '@types/node': 20.5.7 - - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} - dependencies: - '@types/node': 20.6.4 - /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -3038,40 +2814,21 @@ packages: dependencies: '@types/eslint': 8.44.2 '@types/estree': 1.0.1 + dev: true /@types/eslint@8.44.2: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 + dev: true /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: false /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - - /@types/express-serve-static-core@4.17.36: - resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} - dependencies: - '@types/node': 20.5.7 - '@types/qs': 6.9.7 - '@types/range-parser': 1.2.4 - '@types/send': 0.17.1 - - /@types/express@4.17.17: - resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} - dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.36 - '@types/qs': 6.9.7 - '@types/serve-static': 1.15.2 - - /@types/glob@7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 20.5.7 dev: true /@types/graceful-fs@4.1.6: @@ -3080,18 +2837,6 @@ packages: '@types/node': 20.6.2 dev: true - /@types/html-minifier-terser@6.1.0: - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - dev: true - - /@types/http-errors@2.0.1: - resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} - - /@types/http-proxy@1.17.11: - resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==} - dependencies: - '@types/node': 20.5.7 - /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true @@ -3114,21 +2859,12 @@ packages: /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + dev: true /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/mime@1.3.2: - resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} - - /@types/mime@3.0.1: - resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: true - /@types/node@14.18.56: resolution: {integrity: sha512-+k+57NVS9opgrEn5l9c0gvD1r6C+PtyhVE4BTnMMRwiEA8ZO8uFcs6Yy2sXIy0eC95ZurBtRSvhZiHXBysbl6w==} @@ -3142,6 +2878,10 @@ packages: /@types/node@20.6.4: resolution: {integrity: sha512-nU6d9MPY0NBUMiE/nXd2IIoC4OLvsLpwAjheoAeuzgvDZA1Cb10QYg+91AF6zQiKWRN5i1m07x6sMe0niBznoQ==} + /@types/normalize-package-data@2.4.2: + resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==} + dev: true + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false @@ -3153,12 +2893,6 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/qs@6.9.7: - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - - /@types/range-parser@1.2.4: - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: @@ -3182,30 +2916,14 @@ packages: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: '@types/node': 20.6.4 - - /@types/retry@0.12.0: - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: false /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - /@types/send@0.17.1: - resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} - dependencies: - '@types/mime': 1.3.2 - '@types/node': 20.6.4 - - /@types/serve-index@1.9.1: - resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} - dependencies: - '@types/express': 4.17.17 - - /@types/serve-static@1.15.2: - resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} - dependencies: - '@types/http-errors': 2.0.1 - '@types/mime': 3.0.1 - '@types/node': 20.5.7 + /@types/semver@7.5.3: + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + dev: true /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} @@ -3213,11 +2931,6 @@ packages: /@types/sizzle@2.3.3: resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} - /@types/sockjs@0.3.33: - resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} - dependencies: - '@types/node': 20.5.7 - /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true @@ -3228,16 +2941,12 @@ packages: /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} + dev: false /@types/wicg-file-system-access@2020.9.6: resolution: {integrity: sha512-6hogE75Hl2Ov/jgp8ZhDaGmIF/q3J07GtXf8nCJCwKTHq7971po5+DId7grft09zG7plBwpF6ZU0yx9Du4/e1A==} dev: false - /@types/ws@8.5.5: - resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} - dependencies: - '@types/node': 20.5.7 - /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true @@ -3255,20 +2964,198 @@ packages: '@types/node': 20.5.7 optional: true + /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/type-utils': 6.1.0(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.1.0(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.1.0 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.50.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.7.3 + '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.3 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.50.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.1.0: + resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 + dev: true + + /@typescript-eslint/scope-manager@6.7.3: + resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/visitor-keys': 6.7.3 + dev: true + + /@typescript-eslint/type-utils@6.1.0(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.1.0(eslint@8.50.0)(typescript@5.2.2) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.50.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.1.0: + resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/types@6.7.3: + resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.1.0(typescript@5.2.2): + resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.7.3(typescript@5.2.2): + resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/visitor-keys': 6.7.3 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.1.0(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.2.2) + eslint: 8.50.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.1.0: + resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.1.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.7.3: + resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.3 + eslint-visitor-keys: 3.4.3 + dev: true + /@webassemblyjs/ast@1.11.6: resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true /@webassemblyjs/helper-buffer@1.11.6: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} @@ -3276,9 +3163,11 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 + dev: true /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true /@webassemblyjs/helper-wasm-section@1.11.6: resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} @@ -3287,19 +3176,23 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 + dev: true /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 + dev: true /@webassemblyjs/leb128@1.11.6: resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 + dev: true /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true /@webassemblyjs/wasm-edit@1.11.6: resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} @@ -3312,6 +3205,7 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 + dev: true /@webassemblyjs/wasm-gen@1.11.6: resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} @@ -3321,6 +3215,7 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: true /@webassemblyjs/wasm-opt@1.11.6: resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} @@ -3329,6 +3224,7 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 + dev: true /@webassemblyjs/wasm-parser@1.11.6: resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} @@ -3339,12 +3235,14 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 + dev: true /@webassemblyjs/wast-printer@1.11.6: resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 + dev: true /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.2): resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} @@ -3354,7 +3252,8 @@ packages: webpack-cli: 5.x.x dependencies: webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.88.2) + webpack-cli: 5.1.4(webpack@5.88.2) + dev: true /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.2): resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} @@ -3364,9 +3263,10 @@ packages: webpack-cli: 5.x.x dependencies: webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.88.2) + webpack-cli: 5.1.4(webpack@5.88.2) + dev: true - /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.1)(webpack@5.88.2): + /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.2): resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} engines: {node: '>=14.15.0'} peerDependencies: @@ -3378,8 +3278,8 @@ packages: optional: true dependencies: webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.88.2) - webpack-dev-server: 4.15.1(debug@4.3.4)(webpack-cli@5.1.4)(webpack@5.88.2) + webpack-cli: 5.1.4(webpack@5.88.2) + dev: true /@xboxreplay/errors@0.1.0: resolution: {integrity: sha512-Tgz1d/OIPDWPeyOvuL5+aai5VCcqObhPnlI3skQuf80GVF3k1I0lPCnGC+8Cm5PV9aLBT5m8qPcJoIUQ2U4y9g==} @@ -3398,9 +3298,11 @@ packages: /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true /@zardoy/react-util@0.2.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-glABtx54mh4XSaK6BNALWE3mlshPjcPwPsRj/GnOXEA7WJY/6n43iJoukbaYF3758mGZRU5Fq6gklyFjBg0yHQ==} @@ -3461,6 +3363,7 @@ packages: acorn: ^8 dependencies: acorn: 8.10.0 + dev: true /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -3509,30 +3412,13 @@ packages: clean-stack: 2.2.0 indent-string: 4.0.0 - /ajv-formats@2.1.1(ajv@8.12.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.12.0 - /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: ajv: ^6.9.1 dependencies: ajv: 6.12.6 - - /ajv-keywords@5.1.0(ajv@8.12.0): - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - dependencies: - ajv: 8.12.0 - fast-deep-equal: 3.1.3 + dev: true /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -3549,6 +3435,7 @@ packages: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + dev: false /animejs@3.2.1: resolution: {integrity: sha512-sWno3ugFryK5nhiDm/2BKeFCpZv7vzerWUcUPyAZLDhMek3+S/p418ldZJbJXo5ZUOpfm2kP2XRO4NJcULMy9A==} @@ -3564,11 +3451,6 @@ packages: dependencies: type-fest: 0.21.3 - /ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -3614,6 +3496,7 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: true /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -3654,9 +3537,6 @@ packages: /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - /array-flatten@2.1.2: - resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} - /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} @@ -3668,16 +3548,9 @@ packages: is-string: 1.0.7 dev: true - /array-union@1.0.2: - resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} - engines: {node: '>=0.10.0'} - dependencies: - array-uniq: 1.0.3 - dev: true - - /array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} dev: true /array.prototype.findlastindex@1.2.2: @@ -3886,6 +3759,7 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: false /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.11): resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} @@ -3897,6 +3771,7 @@ packages: core-js-compat: 3.32.1 transitivePeerDependencies: - supports-color + dev: false /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.11): resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} @@ -3907,6 +3782,7 @@ packages: '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.11) transitivePeerDependencies: - supports-color + dev: false /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.11): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} @@ -3965,21 +3841,11 @@ packages: safe-buffer: 5.1.2 dev: true - /batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - /bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 - /big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -4049,18 +3915,6 @@ packages: - supports-color dev: false - /bonjour-service@1.1.1: - resolution: {integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==} - dependencies: - array-flatten: 2.1.2 - dns-equal: 1.0.0 - fast-deep-equal: 3.1.3 - multicast-dns: 7.2.5 - - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -4077,6 +3931,7 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + dev: true /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} @@ -4228,6 +4083,7 @@ packages: dependencies: pascal-case: 3.1.2 tslib: 2.6.2 + dev: false /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} @@ -4329,20 +4185,6 @@ packages: resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} engines: {node: '>= 0.8.0'} - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: true @@ -4355,6 +4197,7 @@ packages: /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} + dev: true /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} @@ -4375,27 +4218,17 @@ packages: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false - /clean-css@5.3.2: - resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} - engines: {node: '>= 10.0'} + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} dependencies: - source-map: 0.6.1 + escape-string-regexp: 1.0.5 dev: true /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - /clean-webpack-plugin@4.0.0(webpack@5.88.2): - resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} - engines: {node: '>=10.0.0'} - peerDependencies: - webpack: '>=4.0.0 <6.0.0' - dependencies: - del: 4.1.1 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - dev: true - /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -4452,6 +4285,7 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 + dev: true /clsx@1.1.1: resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} @@ -4506,6 +4340,7 @@ packages: /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + dev: true /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -4514,15 +4349,6 @@ packages: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} - /commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: true - - /common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: false - /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -4566,9 +4392,9 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -4628,29 +4454,10 @@ packages: toggle-selection: 1.0.6 dev: false - /copy-webpack-plugin@11.0.0(webpack@5.88.2): - resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} - engines: {node: '>= 14.15.0'} - peerDependencies: - webpack: ^5.1.0 - dependencies: - fast-glob: 3.3.1 - glob-parent: 6.0.2 - globby: 13.2.2 - normalize-path: 3.0.0 - schema-utils: 4.2.0 - serialize-javascript: 6.0.1 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - dev: true - /core-js-compat@3.32.1: resolution: {integrity: sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==} dependencies: browserslist: 4.21.10 - - /core-js-pure@3.32.1: - resolution: {integrity: sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ==} - requiresBuild: true dev: false /core-js@3.32.1: @@ -4663,6 +4470,7 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -4761,6 +4569,7 @@ packages: /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + dev: false /css-in-js-utils@3.1.0: resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} @@ -4768,33 +4577,6 @@ packages: hyphenate-style-name: 1.0.4 dev: false - /css-loader@6.8.1(webpack@5.88.2): - resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 - dependencies: - icss-utils: 5.1.0(postcss@8.4.28) - postcss: 8.4.28 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.28) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.28) - postcss-modules-scope: 3.0.0(postcss@8.4.28) - postcss-modules-values: 4.0.0(postcss@8.4.28) - postcss-value-parser: 4.2.0 - semver: 7.5.4 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - dev: true - - /css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - dev: true - /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} @@ -4803,17 +4585,6 @@ packages: source-map: 0.6.1 dev: false - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: true - - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: true - /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true @@ -5022,16 +4793,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - /default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} - dependencies: - execa: 5.1.1 - - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} @@ -5039,19 +4800,6 @@ packages: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - /del@4.1.1: - resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} - engines: {node: '>=6'} - dependencies: - '@types/glob': 7.2.0 - globby: 6.1.0 - is-path-cwd: 2.2.0 - is-path-in-cwd: 2.1.0 - p-map: 2.1.0 - pify: 4.0.1 - rimraf: 2.7.1 - dev: true - /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -5060,10 +4808,6 @@ packages: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: true - /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -5094,9 +4838,6 @@ packages: engines: {node: '>=8'} dev: true - /detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - /devtools-protocol@0.0.1019158: resolution: {integrity: sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==} dev: true @@ -5153,15 +4894,6 @@ packages: /discontinuous-range@1.0.0: resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} - /dns-equal@1.0.0: - resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} - - /dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - dependencies: - '@leichtgewicht/ip-codec': 2.0.4 - /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -5176,28 +4908,10 @@ packages: esutils: 2.0.3 dev: true - /dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - dependencies: - utila: 0.4.0 - dev: true - - /dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dev: true - /dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} dev: false - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - /domexception@2.0.1: resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} engines: {node: '>=8'} @@ -5205,26 +4919,12 @@ packages: webidl-conversions: 5.0.0 dev: true - /domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dev: true - /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 tslib: 2.6.2 + dev: false /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -5250,6 +4950,7 @@ packages: hasBin: true dependencies: jake: 10.8.7 + dev: false /electron-to-chromium@1.4.504: resolution: {integrity: sha512-cSMwIAd8yUh54VwitVRVvHK66QqHWE39C3DRj8SWiXitEpVSY3wNPD9y1pxQtLIi4w3UdzF9klLsmuPshz09DQ==} @@ -5288,10 +4989,6 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -5392,6 +5089,7 @@ packages: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 + dev: true /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} @@ -5400,14 +5098,11 @@ packages: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - /entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true - /envinfo@7.10.0: resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} engines: {node: '>=4'} hasBin: true + dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -5489,6 +5184,7 @@ packages: /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + dev: true /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} @@ -5526,18 +5222,6 @@ packages: es6-promise: 4.2.8 dev: true - /esbuild-loader@4.0.0(webpack@5.88.2): - resolution: {integrity: sha512-J7TJWyHV2YHmflZaXLZ0Vf4wYmixDyGTw26bt4Ok+XOqSyYA4VWAVt2zJGqIfCA7TwZRDKN8hvus4akN2yAbmA==} - peerDependencies: - webpack: ^4.40.0 || ^5.0.0 - dependencies: - esbuild: 0.19.3 - get-tsconfig: 4.7.0 - loader-utils: 2.0.4 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - webpack-sources: 1.4.3 - dev: false - /esbuild-plugin-polyfill-node@0.3.0(esbuild@0.19.3): resolution: {integrity: sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==} peerDependencies: @@ -5548,36 +5232,6 @@ packages: import-meta-resolve: 3.0.0 dev: false - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - dev: true - /esbuild@0.19.3: resolution: {integrity: sha512-UlJ1qUUA2jL2nNib1JTSkifQTcYTroFqRjwCFW4QYEKEsixXD5Tik9xML7zh2gTxkYTBKGHNH9y7txMwVyPbjw==} engines: {node: '>=12'} @@ -5639,6 +5293,15 @@ packages: source-map: 0.6.1 dev: true + /eslint-config-prettier@8.10.0(eslint@8.50.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.50.0 + dev: true + /eslint-config-standard-jsx@11.0.0(eslint-plugin-react@7.33.2)(eslint@8.48.0): resolution: {integrity: sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==} peerDependencies: @@ -5658,11 +5321,85 @@ packages: eslint-plugin-promise: ^6.0.0 dependencies: eslint: 8.48.0 - eslint-plugin-import: 2.28.1(eslint@8.48.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint@8.48.0) eslint-plugin-n: 15.7.0(eslint@8.48.0) eslint-plugin-promise: 6.1.1(eslint@8.48.0) dev: true + /eslint-config-xo-react@0.27.0(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0): + resolution: {integrity: sha512-wiV215xQIn71XZyyVfaOXHaFpR1B14IJttwOjMi/eqUK1s+ojJdHr7eHqTLaGUfh6FKgWha1QNwePlIXx7mBUg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=8.6.0' + eslint-plugin-react: '>=7.29.0' + eslint-plugin-react-hooks: '>=4.3.0' + dependencies: + eslint: 8.50.0 + eslint-plugin-react: 7.33.2(eslint@8.50.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.50.0) + dev: true + + /eslint-config-xo-typescript@1.0.1(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-vPQssnRSUgBFOEfB/KY12CXwltwFSn4RSCfa+w7gjBC2PFQ7Yfgmyei+1XUZ3K+8LRGef2NMJUcxts7PldhDjg==} + engines: {node: '>=16'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '>=6.0.0' + '@typescript-eslint/parser': '>=6.0.0' + eslint: '>=8.0.0' + typescript: '>=4.7' + dependencies: + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + eslint: 8.50.0 + typescript: 5.2.2 + dev: true + + /eslint-config-xo@0.43.1(eslint@8.50.0): + resolution: {integrity: sha512-azv1L2PysRA0NkZOgbndUpN+581L7wPqkgJOgxxw3hxwXAbJgD6Hqb/SjHRiACifXt/AvxCzE/jIKFAlI7XjvQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=8.27.0' + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.50.0 + dev: true + + /eslint-config-zardoy@0.2.17(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-d31WsjyVSQqHbzTpBSmH96+nw5gwY2yhDbZatU89gr+U8ou1FRUkJSApYJUgmcINt8AQocj1RDDAVYmVSILZgQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + eslint: ^8.5.0 + eslint-plugin-vue: ^8.4.1 + typescript: ^4.5.2 + vue-eslint-parser: ^8.2.0 + peerDependenciesMeta: + eslint-plugin-vue: + optional: true + vue-eslint-parser: + optional: true + dependencies: + '@rushstack/eslint-patch': 1.4.0 + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + eslint: 8.50.0 + eslint-config-prettier: 8.10.0(eslint@8.50.0) + eslint-config-xo: 0.43.1(eslint@8.50.0) + eslint-config-xo-react: 0.27.0(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0) + eslint-config-xo-typescript: 1.0.1(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.50.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.7.3)(eslint@8.50.0) + eslint-plugin-node: 11.1.0(eslint@8.50.0) + eslint-plugin-sonarjs: 0.19.0(eslint@8.50.0) + eslint-plugin-unicorn: 48.0.0(eslint@8.50.0) + typescript: 5.2.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - eslint-plugin-react + - eslint-plugin-react-hooks + - supports-color + dev: true + /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: @@ -5673,7 +5410,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -5694,6 +5431,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) debug: 3.2.7(supports-color@8.1.1) eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 @@ -5701,6 +5439,46 @@ packages: - supports-color dev: true + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + debug: 3.2.7(supports-color@8.1.1) + eslint: 8.50.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es@3.0.1(eslint@8.50.0): + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 8.50.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + /eslint-plugin-es@4.1.0(eslint@8.48.0): resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} engines: {node: '>=8.10.0'} @@ -5712,7 +5490,51 @@ packages: regexpp: 3.2.0 dev: true - /eslint-plugin-import@2.28.1(eslint@8.48.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.50.0): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + escape-string-regexp: 1.0.5 + eslint: 8.50.0 + ignore: 5.2.4 + dev: true + + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.7.3)(eslint@8.50.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7(supports-color@8.1.1) + doctrine: 2.1.0 + eslint: 8.50.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) + has: 1.0.3 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.7 + resolve: 1.22.4 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.3)(eslint@8.48.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: @@ -5722,6 +5544,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 @@ -5730,7 +5553,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.9)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -5763,6 +5586,21 @@ packages: semver: 7.5.4 dev: true + /eslint-plugin-node@11.1.0(eslint@8.50.0): + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 8.50.0 + eslint-plugin-es: 3.0.1(eslint@8.50.0) + eslint-utils: 2.1.0 + ignore: 5.2.4 + minimatch: 3.1.2 + resolve: 1.22.4 + semver: 6.3.1 + dev: true + /eslint-plugin-promise@6.1.1(eslint@8.48.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5772,6 +5610,15 @@ packages: eslint: 8.48.0 dev: true + /eslint-plugin-react-hooks@4.6.0(eslint@8.50.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.50.0 + dev: true + /eslint-plugin-react@7.33.2(eslint@8.48.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} @@ -5797,12 +5644,71 @@ packages: string.prototype.matchall: 4.0.8 dev: true + /eslint-plugin-react@7.33.2(eslint@8.50.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.14 + eslint: 8.50.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.6 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.1 + string.prototype.matchall: 4.0.8 + dev: true + + /eslint-plugin-sonarjs@0.19.0(eslint@8.50.0): + resolution: {integrity: sha512-6+s5oNk5TFtVlbRxqZN7FIGmjdPCYQKaTzFPmqieCmsU1kBYDzndTeQav0xtQNwZJWu5awWfTGe8Srq9xFOGnw==} + engines: {node: '>=14'} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.50.0 + dev: true + + /eslint-plugin-unicorn@48.0.0(eslint@8.50.0): + resolution: {integrity: sha512-8fk/v3p1ro34JSVDBEmtOq6EEQRpMR0iTir79q69KnXFZ6DJyPkT3RAi+ZoTqhQMdDSpGh8BGR68ne1sP5cnAA==} + engines: {node: '>=16'} + peerDependencies: + eslint: '>=8.44.0' + dependencies: + '@babel/helper-validator-identifier': 7.22.5 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + ci-info: 3.8.0 + clean-regexp: 1.0.0 + eslint: 8.50.0 + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.5.4 + strip-indent: 3.0.0 + dev: true + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: true /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} @@ -5890,6 +5796,52 @@ packages: - supports-color dev: true + /eslint@8.50.0: + resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/regexpp': 4.8.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.50.0 + '@humanwhocodes/config-array': 0.11.11 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.21.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5917,17 +5869,21 @@ packages: engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: true /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} + dev: true /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + dev: true /estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: false /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -5991,6 +5947,7 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: true /executable@4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} @@ -6136,6 +6093,7 @@ packages: /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} + dev: true /fastest-stable-stringify@2.0.2: resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} @@ -6147,12 +6105,6 @@ packages: reusify: 1.0.4 dev: true - /faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - dependencies: - websocket-driver: 0.7.4 - /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: @@ -6186,6 +6138,7 @@ packages: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 + dev: false /filesize@10.0.12: resolution: {integrity: sha512-6RS9gDchbn+qWmtV2uSjo5vmKizgfCQeb5jKmqx8HyzA3MoLqqyQxN+QcjkGBJt7FjJ9qFce67Auyya5rRRbpw==} @@ -6197,6 +6150,7 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + dev: true /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} @@ -6255,6 +6209,7 @@ packages: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 + dev: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -6262,6 +6217,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true /flat-cache@3.1.0: resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} @@ -6289,6 +6245,7 @@ packages: optional: true dependencies: debug: 4.3.4(supports-color@8.1.1) + dev: true /follow-redirects@1.15.3(debug@4.3.4): resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} @@ -6401,9 +6358,6 @@ packages: minipass: 3.3.6 dev: true - /fs-monkey@1.0.4: - resolution: {integrity: sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==} - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -6462,6 +6416,7 @@ packages: /get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: false /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} @@ -6482,6 +6437,7 @@ packages: /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + dev: true /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -6490,12 +6446,6 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.2.1 - /get-tsconfig@4.7.0: - resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: false - /getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} dependencies: @@ -6511,6 +6461,7 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: true /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -6521,6 +6472,7 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true /glob@10.3.3: resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} @@ -6592,26 +6544,16 @@ packages: dependencies: define-properties: 1.2.0 - /globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: + array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 - slash: 4.0.0 - dev: true - - /globby@6.1.0: - resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} - engines: {node: '>=0.10.0'} - dependencies: - array-union: 1.0.2 - glob: 7.2.3 - object-assign: 4.1.1 - pify: 2.3.0 - pinkie-promise: 2.0.1 + slash: 3.0.0 dev: true /gopd@1.0.1: @@ -6626,9 +6568,6 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} @@ -6748,14 +6687,6 @@ packages: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.8 - wbuf: 1.7.3 - /html-encoding-sniffer@2.0.1: resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} engines: {node: '>=10'} @@ -6770,50 +6701,10 @@ packages: whatwg-encoding: 2.0.0 dev: true - /html-entities@2.4.0: - resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} - /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.2 - commander: 8.3.0 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.19.2 - dev: true - - /html-webpack-plugin@5.5.3(webpack@5.88.2): - resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} - engines: {node: '>=10.13.0'} - peerDependencies: - webpack: ^5.20.0 - dependencies: - '@types/html-minifier-terser': 6.1.0 - html-minifier-terser: 6.1.0 - lodash: 4.17.21 - pretty-error: 4.0.0 - tapable: 2.2.1 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - dev: true - - /htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - dev: true - /http-browserify@1.7.0: resolution: {integrity: sha512-Irf/LJXmE3cBzU1eaR4+NEX6bmVLqt1wkmDiA7kBwH7zmb0D8kBAXsDmQ88hhj/qv9iEZKlyGx/hrMcFi8sOHw==} dependencies: @@ -6821,18 +6712,6 @@ packages: inherits: 2.0.4 dev: true - /http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - - /http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -6843,9 +6722,6 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 - /http-parser-js@0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - /http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} @@ -6857,24 +6733,6 @@ packages: - supports-color dev: true - /http-proxy-middleware@2.0.6(@types/express@4.17.17)(debug@4.3.4): - resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - dependencies: - '@types/express': 4.17.17 - '@types/http-proxy': 1.17.11 - http-proxy: 1.18.1(debug@4.3.4) - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.5 - transitivePeerDependencies: - - debug - /http-proxy@1.18.1(debug@4.3.4): resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} @@ -6884,6 +6742,7 @@ packages: requires-port: 1.0.0 transitivePeerDependencies: - debug + dev: true /http-server@14.1.1(debug@4.3.4): resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} @@ -6946,6 +6805,7 @@ packages: /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + dev: true /hyphenate-style-name@1.0.4: resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} @@ -6970,17 +6830,9 @@ packages: safer-buffer: 2.1.2 dev: true - /icss-utils@5.1.0(postcss@8.4.28): - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.28 - dev: true - /idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + dev: false /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -7014,6 +6866,7 @@ packages: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + dev: true /import-meta-resolve@3.0.0: resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} @@ -7038,9 +6891,6 @@ packages: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -7070,15 +6920,12 @@ packages: /interpret@3.1.1: resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} engines: {node: '>=10.13.0'} + dev: true /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - /ipaddr.js@2.1.0: - resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} - engines: {node: '>= 10'} - /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -7109,12 +6956,6 @@ packages: dependencies: has-bigints: 1.0.2 - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} @@ -7126,6 +6967,13 @@ packages: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: true + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -7147,11 +6995,6 @@ packages: dependencies: has-tostringtag: 1.0.0 - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -7160,6 +7003,7 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + dev: true /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} @@ -7192,6 +7036,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + dev: true /is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} @@ -7206,6 +7051,7 @@ packages: /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: false /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} @@ -7228,43 +7074,23 @@ packages: /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + dev: true /is-obj@1.0.1: resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} engines: {node: '>=0.10.0'} - - /is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - dev: true - - /is-path-in-cwd@2.1.0: - resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} - engines: {node: '>=6'} - dependencies: - is-path-inside: 2.1.0 - dev: true - - /is-path-inside@2.1.0: - resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} - engines: {node: '>=6'} - dependencies: - path-is-inside: 1.0.2 - dev: true + dev: false /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - /is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 + dev: true /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -7280,6 +7106,7 @@ packages: /is-regexp@1.0.0: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} + dev: false /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} @@ -7340,14 +7167,9 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false /isarray@2.0.1: resolution: {integrity: sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==} @@ -7362,6 +7184,7 @@ packages: /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + dev: true /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -7440,6 +7263,7 @@ packages: chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 + dev: false /jest-changed-files@27.5.1: resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} @@ -7925,6 +7749,7 @@ packages: '@types/node': 20.6.4 merge-stream: 2.0.0 supports-color: 7.2.0 + dev: false /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} @@ -7933,6 +7758,7 @@ packages: '@types/node': 20.5.7 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: true /jest@27.0.4(canvas@2.11.2): resolution: {integrity: sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==} @@ -8064,6 +7890,12 @@ packages: engines: {node: '>=4'} hasBin: true + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: true + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -8080,6 +7912,7 @@ packages: /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false /json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} @@ -8119,6 +7952,7 @@ packages: /jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + dev: false /jsonwebtoken@9.0.2: resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} @@ -8209,18 +8043,13 @@ packages: /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + dev: true /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /launch-editor@2.6.0: - resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==} - dependencies: - picocolors: 1.0.0 - shell-quote: 1.8.1 - /lazy-ass@1.6.0: resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} engines: {node: '> 0.8'} @@ -8334,14 +8163,7 @@ packages: /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - - /loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 + dev: true /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} @@ -8356,32 +8178,26 @@ packages: engines: {node: '>=8'} dependencies: p-locate: 4.1.0 + dev: true /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: true - /lodash-webpack-plugin@0.11.6(webpack@5.88.2): - resolution: {integrity: sha512-nsHN/+IxZK/C425vGC8pAxkKJ8KQH2+NJnhDul14zYNWr6HJcA95w+oRR7Cp0oZpOdMplDZXmjVROp8prPk7ig==} - peerDependencies: - webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.1.0 - dependencies: - lodash: 4.17.21 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - dev: true - /lodash.compact@3.0.1: resolution: {integrity: sha512-2ozeiPi+5eBXW1CLtzjk8XQFhQOEMwwfxblqeq6EGyTxZJ1bPATqilY0e6g2SLQpP4KuMeuioBhEnWz5Pr7ICQ==} dev: false /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} @@ -8415,6 +8231,7 @@ packages: /lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: false /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -8449,6 +8266,7 @@ packages: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.6.2 + dev: false /lru-cache@10.0.1: resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} @@ -8473,6 +8291,7 @@ packages: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 + dev: false /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -8516,12 +8335,6 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - /memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - dependencies: - fs-monkey: 1.0.4 - /memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} @@ -8561,6 +8374,7 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 + dev: true /miller-rabin@4.0.1: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} @@ -8600,6 +8414,11 @@ packages: dom-walk: 0.1.2 dev: false + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + /minecraft-assets@1.9.0: resolution: {integrity: sha512-KtvIRd9gcKlxbvrswGv1Ap9k7tVs//QW2ukp+8vJ28miYwkhUmYfjTZyElIG8KUXV/46wL2kDzLH8SJbXQ56Mg==} dev: true @@ -8708,6 +8527,7 @@ packages: /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true /minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} @@ -8723,6 +8543,7 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: false /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -8809,13 +8630,6 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /multicast-dns@7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true - dependencies: - dns-packet: 5.6.1 - thunky: 1.1.0 - /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -8846,10 +8660,8 @@ packages: stylis: 4.2.0 dev: false - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true /natural-compare@1.4.0: @@ -8883,6 +8695,7 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} @@ -8893,6 +8706,7 @@ packages: dependencies: lower-case: 2.0.2 tslib: 2.6.2 + dev: false /node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} @@ -8917,10 +8731,6 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - /node-gyp-build-optional-packages@5.0.3: resolution: {integrity: sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==} hasBin: true @@ -8971,6 +8781,7 @@ packages: /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + dev: true /npm-run-all@4.1.5: resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} @@ -9003,12 +8814,6 @@ packages: set-blocking: 2.0.0 dev: true - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: true - /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true @@ -9088,9 +8893,6 @@ packages: es-abstract: 1.22.1 dev: true - /obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - /omggif@1.0.10: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} dev: false @@ -9116,14 +8918,6 @@ packages: dependencies: mimic-fn: 2.1.0 - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true @@ -9158,12 +8952,14 @@ packages: engines: {node: '>=6'} dependencies: p-try: 2.2.0 + dev: true /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: true /p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} @@ -9177,16 +8973,13 @@ packages: engines: {node: '>=8'} dependencies: p-limit: 2.3.0 + dev: true /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} dev: true /p-map@4.0.0: @@ -9195,16 +8988,10 @@ packages: dependencies: aggregate-error: 3.1.0 - /p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} - dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 - /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + dev: true /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -9214,6 +9001,7 @@ packages: dependencies: dot-case: 3.0.4 tslib: 2.6.2 + dev: false /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -9293,6 +9081,7 @@ packages: dependencies: no-case: 3.0.4 tslib: 2.6.2 + dev: false /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -9313,15 +9102,12 @@ packages: /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + dev: true /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - dev: true - /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} @@ -9420,18 +9206,6 @@ packages: engines: {node: '>=6'} dev: true - /pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie: 2.0.4 - dev: true - - /pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - dev: true - /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} @@ -9457,6 +9231,12 @@ packages: engines: {node: '>=8'} dependencies: find-up: 4.1.0 + dev: true + + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true /pngjs@3.4.0: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} @@ -9474,68 +9254,6 @@ packages: - supports-color dev: true - /postcss-modules-extract-imports@3.0.0(postcss@8.4.28): - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.28 - dev: true - - /postcss-modules-local-by-default@4.0.3(postcss@8.4.28): - resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0(postcss@8.4.28) - postcss: 8.4.28 - postcss-selector-parser: 6.0.13 - postcss-value-parser: 4.2.0 - dev: true - - /postcss-modules-scope@3.0.0(postcss@8.4.28): - resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.4.28 - postcss-selector-parser: 6.0.13 - dev: true - - /postcss-modules-values@4.0.0(postcss@8.4.28): - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0(postcss@8.4.28) - postcss: 8.4.28 - dev: true - - /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: true - - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true - - /postcss@8.4.28: - resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -9556,13 +9274,6 @@ packages: engines: {node: ^14.13.1 || >=16.0.0} dev: false - /pretty-error@4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - dependencies: - lodash: 4.17.21 - renderkid: 3.0.0 - dev: true - /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -9701,6 +9412,7 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} @@ -9789,10 +9501,6 @@ packages: end-of-stream: 1.4.4 once: 1.4.0 - /punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - dev: false - /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -9847,6 +9555,7 @@ packages: engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 + dev: true /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} @@ -9967,11 +9676,6 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - dev: false - /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.2): resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} peerDependencies: @@ -10033,6 +9737,15 @@ packages: dependencies: loose-envify: 1.4.0 + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + /read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} @@ -10042,6 +9755,16 @@ packages: path-type: 3.0.0 dev: true + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.2 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: @@ -10052,6 +9775,7 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 + dev: false /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -10071,12 +9795,6 @@ packages: process: 0.11.10 string_decoder: 1.3.0 - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - /readline@1.3.0: resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} dev: false @@ -10086,6 +9804,7 @@ packages: engines: {node: '>= 10.13.0'} dependencies: resolve: 1.22.4 + dev: true /reflect.getprototypeof@1.0.3: resolution: {integrity: sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==} @@ -10104,9 +9823,11 @@ packages: engines: {node: '>=4'} dependencies: regenerate: 1.4.2 + dev: false /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: false /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -10119,6 +9840,12 @@ packages: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: '@babel/runtime': 7.22.11 + dev: false + + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} @@ -10143,27 +9870,21 @@ packages: regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 + dev: false - /regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + /regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} hasBin: true dependencies: jsesc: 0.5.0 - - /relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} dev: true - /renderkid@3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 6.0.1 - dev: true + jsesc: 0.5.0 + dev: false /request-progress@3.0.0: resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} @@ -10228,6 +9949,7 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + dev: false /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -10241,6 +9963,7 @@ packages: engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true /resolve-dir@0.1.1: resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} @@ -10257,10 +9980,7 @@ packages: /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: false + dev: true /resolve.exports@1.1.1: resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} @@ -10295,10 +10015,6 @@ packages: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} - /retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -10312,6 +10028,7 @@ packages: hasBin: true dependencies: glob: 7.2.3 + dev: false /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} @@ -10345,6 +10062,7 @@ packages: rollup: 2.79.1 serialize-javascript: 4.0.0 terser: 5.19.2 + dev: false /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} @@ -10352,14 +10070,7 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 - - /rollup@3.28.1: - resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true + dev: false /rtl-css-js@1.16.1: resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} @@ -10434,15 +10145,7 @@ packages: '@types/json-schema': 7.0.12 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - - /schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} - dependencies: - '@types/json-schema': 7.0.12 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) + dev: true /screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} @@ -10457,15 +10160,6 @@ packages: resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} dev: true - /select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - - /selfsigned@2.1.1: - resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} - engines: {node: '>=10'} - dependencies: - node-forge: 1.3.1 - /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -10514,25 +10208,13 @@ packages: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: randombytes: 2.1.0 + dev: false /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 - - /serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color + dev: true /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} @@ -10557,9 +10239,6 @@ packages: /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - /setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -10586,6 +10265,7 @@ packages: engines: {node: '>=8'} dependencies: kind-of: 6.0.3 + dev: true /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -10611,6 +10291,7 @@ packages: /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -10648,11 +10329,6 @@ packages: engines: {node: '>=8'} dev: true - /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: true - /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -10786,21 +10462,6 @@ packages: - supports-color - utf-8-validate - /sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - - /source-list-map@2.0.1: - resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} - - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -10824,16 +10485,19 @@ packages: /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} + dev: true /source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} dependencies: whatwg-url: 7.1.0 + dev: false /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead + dev: false /spawnd@6.2.0: resolution: {integrity: sha512-qX/I4lQy4KgVEcNle0kuc4FxFWHISzBhZW1YemPfwmrmQjyZmfTK/OhBKkhrD2ooAaFZEm1maEBLE6/6enwt+g==} @@ -10857,47 +10521,13 @@ packages: /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - dev: true - - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: true - - /spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - dependencies: - debug: 4.3.4(supports-color@8.1.1) - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.2 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - - /spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - dependencies: - debug: 4.3.4(supports-color@8.1.1) - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color - - /speed-measure-webpack-plugin@1.5.0(webpack@5.88.2): - resolution: {integrity: sha512-Re0wX5CtM6gW7bZA64ONOfEPEhwbiSF/vz6e2GvadjuaPrQcHTQdRGsD8+BE7iUOysXH8tIenkPCQBEcspXsNg==} - engines: {node: '>=6.0.0'} - peerDependencies: - webpack: ^1 || ^2 || ^3 || ^4 || ^5 - dependencies: - chalk: 4.1.2 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - dev: false + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + dev: true + + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + dev: true /spiralloop@1.0.2: resolution: {integrity: sha512-arrGOnli7tXoLWMqK8xXdV0qXLj3zd0OtgeME5SL/Nub0ssSYD27m9SlEsYcJGNi+VvEzVQIoBnAHOOhdZqc5Q==} @@ -10964,7 +10594,7 @@ packages: xdg-basedir: 4.0.0 dev: true - /standard@17.0.0: + /standard@17.0.0(@typescript-eslint/parser@6.7.3): resolution: {integrity: sha512-GlCM9nzbLUkr+TYR5I2WQoIah4wHA2lMauqbyPLV/oI5gJxqhHzhjl9EG2N0lr/nRqI3KCbCvm/W3smxvLaChA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true @@ -10972,7 +10602,7 @@ packages: eslint: 8.48.0 eslint-config-standard: 17.0.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.48.0) eslint-config-standard-jsx: 11.0.0(eslint-plugin-react@7.33.2)(eslint@8.48.0) - eslint-plugin-import: 2.28.1(eslint@8.48.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint@8.48.0) eslint-plugin-n: 15.7.0(eslint@8.48.0) eslint-plugin-promise: 6.1.1(eslint@8.48.0) eslint-plugin-react: 7.33.2(eslint@8.48.0) @@ -10988,10 +10618,6 @@ packages: resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} dev: false - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -11080,6 +10706,7 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 + dev: false /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -11093,6 +10720,7 @@ packages: get-own-enumerable-property-symbols: 3.0.2 is-obj: 1.0.1 is-regexp: 1.0.0 + dev: false /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -11120,23 +10748,22 @@ packages: /strip-comments@2.0.1: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} engines: {node: '>=10'} + dev: false /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 dev: true - /style-loader@3.3.3(webpack@5.88.2): - resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 - dependencies: - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} dev: true /stylis@4.2.0: @@ -11180,6 +10807,7 @@ packages: /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + dev: true /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -11216,6 +10844,7 @@ packages: /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} + dev: false /tempy@0.6.0: resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} @@ -11225,6 +10854,7 @@ packages: temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 + dev: false /terminal-link@2.1.1: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} @@ -11257,6 +10887,7 @@ packages: serialize-javascript: 6.0.1 terser: 5.19.2 webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) + dev: true /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} @@ -11315,9 +10946,6 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - /thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - /timers-browserify@2.0.12: resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} engines: {node: '>=0.6.0'} @@ -11356,6 +10984,7 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + dev: true /toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} @@ -11389,6 +11018,7 @@ packages: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: punycode: 2.3.0 + dev: false /tr46@2.1.0: resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} @@ -11408,6 +11038,15 @@ packages: utf8-byte-length: 1.0.4 dev: false + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + /ts-easing@0.2.0: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} dev: false @@ -11447,6 +11086,7 @@ packages: /type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} + dev: false /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -11462,6 +11102,16 @@ packages: engines: {node: '>=6'} dev: true + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -11550,6 +11200,7 @@ packages: /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} + dev: false /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} @@ -11557,14 +11208,17 @@ packages: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 + dev: false /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} + dev: false /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + dev: false /unidiff@1.0.2: resolution: {integrity: sha512-2sbEzki5fBmjgAqoafwxRenfMcumMlmVAoJDwYJa3CI4ZVugkdR6qjTw5sVsl29/4JfBBXhWEAd5ars8nRdqXg==} @@ -11584,6 +11238,7 @@ packages: engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 + dev: false /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -11609,6 +11264,7 @@ packages: /upath@1.2.0: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} + dev: false /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} @@ -11641,35 +11297,12 @@ packages: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} dev: true - /url-loader@4.1.1(webpack@5.88.2): - resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - file-loader: '*' - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - file-loader: - optional: true - dependencies: - loader-utils: 2.0.4 - mime-types: 2.1.35 - schema-utils: 3.3.0 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - dev: true - /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - /url@0.11.1: - resolution: {integrity: sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==} - dependencies: - punycode: 1.4.1 - qs: 6.11.2 - dev: false - /use-deep-compare@1.1.0(react@17.0.2): resolution: {integrity: sha512-6yY3zmKNCJ1jjIivfZMZMReZjr8e6iC6Uqtp701jvWJ6ejC/usXD+JjmslZDPJQgX8P4B1Oi5XSLHkOLeYSJsA==} peerDependencies: @@ -11752,10 +11385,6 @@ packages: which-typed-array: 1.1.11 dev: true - /utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - dev: true - /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} @@ -11837,41 +11466,6 @@ packages: core-util-is: 1.0.2 extsprintf: 1.3.0 - /vite@4.4.9: - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.18.20 - postcss: 8.4.28 - rollup: 3.28.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true - /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin. @@ -11918,17 +11512,14 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - - /wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - dependencies: - minimalistic-assert: 1.0.1 + dev: true /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} /webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: false /webidl-conversions@5.0.0: resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} @@ -11940,7 +11531,7 @@ packages: engines: {node: '>=10.4'} dev: true - /webpack-cli@5.1.4(webpack-dev-server@4.15.1)(webpack@5.88.2): + /webpack-cli@5.1.4(webpack@5.88.2): resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} engines: {node: '>=14.15.0'} hasBin: true @@ -11960,7 +11551,7 @@ packages: '@discoveryjs/json-ext': 0.5.7 '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.88.2) '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.88.2) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.1)(webpack@5.88.2) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.88.2) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -11970,106 +11561,21 @@ packages: interpret: 3.1.1 rechoir: 0.8.0 webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - webpack-dev-server: 4.15.1(debug@4.3.4)(webpack-cli@5.1.4)(webpack@5.88.2) webpack-merge: 5.9.0 - - /webpack-dev-middleware@5.3.3(webpack@5.88.2): - resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.2.0 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - - /webpack-dev-middleware@6.1.1(webpack@5.88.2): - resolution: {integrity: sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==} - engines: {node: '>= 14.15.0'} - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.2.0 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) dev: true - /webpack-dev-server@4.15.1(debug@4.3.4)(webpack-cli@5.1.4)(webpack@5.88.2): - resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} - engines: {node: '>= 12.13.0'} - hasBin: true - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - dependencies: - '@types/bonjour': 3.5.10 - '@types/connect-history-api-fallback': 1.5.0 - '@types/express': 4.17.17 - '@types/serve-index': 1.9.1 - '@types/serve-static': 1.15.2 - '@types/sockjs': 0.3.33 - '@types/ws': 8.5.5 - ansi-html-community: 0.0.8 - bonjour-service: 1.1.1 - chokidar: 3.5.3 - colorette: 2.0.20 - compression: 1.7.4 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.18.2 - graceful-fs: 4.2.11 - html-entities: 2.4.0 - http-proxy-middleware: 2.0.6(@types/express@4.17.17)(debug@4.3.4) - ipaddr.js: 2.1.0 - launch-editor: 2.6.0 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 - schema-utils: 4.2.0 - selfsigned: 2.1.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.88.2) - webpack-dev-middleware: 5.3.3(webpack@5.88.2) - ws: 8.13.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - /webpack-merge@5.9.0: resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} engines: {node: '>=10.0.0'} dependencies: clone-deep: 4.0.1 wildcard: 2.0.1 - - /webpack-sources@1.4.3: - resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} - dependencies: - source-list-map: 2.0.1 - source-map: 0.6.1 + dev: true /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} + dev: true /webpack@5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4): resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} @@ -12104,12 +11610,13 @@ packages: tapable: 2.2.1 terser-webpack-plugin: 5.3.9(esbuild@0.19.3)(webpack@5.88.2) watchpack: 2.4.0 - webpack-cli: 5.1.4(webpack-dev-server@4.15.1)(webpack@5.88.2) + webpack-cli: 5.1.4(webpack@5.88.2) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js + dev: true /webrtc-adapter@8.2.3: resolution: {integrity: sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==} @@ -12118,18 +11625,6 @@ packages: sdp: 3.2.0 dev: false - /websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - dependencies: - http-parser-js: 0.5.8 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - - /websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - /whatwg-encoding@1.0.5: resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} dependencies: @@ -12163,6 +11658,7 @@ packages: lodash.sortby: 4.7.0 tr46: 1.0.1 webidl-conversions: 4.0.2 + dev: false /whatwg-url@8.7.0: resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} @@ -12241,12 +11737,6 @@ packages: /wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - - /workbox-background-sync@6.6.0: - resolution: {integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==} - dependencies: - idb: 7.1.1 - workbox-core: 6.6.0 dev: true /workbox-background-sync@7.0.0: @@ -12256,64 +11746,12 @@ packages: workbox-core: 7.0.0 dev: false - /workbox-broadcast-update@6.6.0: - resolution: {integrity: sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==} - dependencies: - workbox-core: 6.6.0 - dev: true - /workbox-broadcast-update@7.0.0: resolution: {integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==} dependencies: workbox-core: 7.0.0 dev: false - /workbox-build@6.6.0: - resolution: {integrity: sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==} - engines: {node: '>=10.0.0'} - dependencies: - '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) - '@babel/core': 7.22.11 - '@babel/preset-env': 7.22.10(@babel/core@7.22.11) - '@babel/runtime': 7.22.11 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.22.11)(rollup@2.79.1) - '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) - '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) - '@surma/rollup-plugin-off-main-thread': 2.2.3 - ajv: 8.12.0 - common-tags: 1.8.2 - fast-json-stable-stringify: 2.1.0 - fs-extra: 9.1.0 - glob: 7.2.3 - lodash: 4.17.21 - pretty-bytes: 5.6.0 - rollup: 2.79.1 - rollup-plugin-terser: 7.0.2(rollup@2.79.1) - source-map: 0.8.0-beta.0 - stringify-object: 3.3.0 - strip-comments: 2.0.1 - tempy: 0.6.0 - upath: 1.2.0 - workbox-background-sync: 6.6.0 - workbox-broadcast-update: 6.6.0 - workbox-cacheable-response: 6.6.0 - workbox-core: 6.6.0 - workbox-expiration: 6.6.0 - workbox-google-analytics: 6.6.0 - workbox-navigation-preload: 6.6.0 - workbox-precaching: 6.6.0 - workbox-range-requests: 6.6.0 - workbox-recipes: 6.6.0 - workbox-routing: 6.6.0 - workbox-strategies: 6.6.0 - workbox-streams: 6.6.0 - workbox-sw: 6.6.0 - workbox-window: 6.6.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - dev: true - /workbox-build@7.0.0: resolution: {integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==} engines: {node: '>=16.0.0'} @@ -12360,34 +11798,16 @@ packages: - supports-color dev: false - /workbox-cacheable-response@6.6.0: - resolution: {integrity: sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==} - deprecated: workbox-background-sync@6.6.0 - dependencies: - workbox-core: 6.6.0 - dev: true - /workbox-cacheable-response@7.0.0: resolution: {integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==} dependencies: workbox-core: 7.0.0 dev: false - /workbox-core@6.6.0: - resolution: {integrity: sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==} - dev: true - /workbox-core@7.0.0: resolution: {integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==} dev: false - /workbox-expiration@6.6.0: - resolution: {integrity: sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==} - dependencies: - idb: 7.1.1 - workbox-core: 6.6.0 - dev: true - /workbox-expiration@7.0.0: resolution: {integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==} dependencies: @@ -12395,15 +11815,6 @@ packages: workbox-core: 7.0.0 dev: false - /workbox-google-analytics@6.6.0: - resolution: {integrity: sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==} - dependencies: - workbox-background-sync: 6.6.0 - workbox-core: 6.6.0 - workbox-routing: 6.6.0 - workbox-strategies: 6.6.0 - dev: true - /workbox-google-analytics@7.0.0: resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} dependencies: @@ -12413,26 +11824,12 @@ packages: workbox-strategies: 7.0.0 dev: false - /workbox-navigation-preload@6.6.0: - resolution: {integrity: sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==} - dependencies: - workbox-core: 6.6.0 - dev: true - /workbox-navigation-preload@7.0.0: resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==} dependencies: workbox-core: 7.0.0 dev: false - /workbox-precaching@6.6.0: - resolution: {integrity: sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==} - dependencies: - workbox-core: 6.6.0 - workbox-routing: 6.6.0 - workbox-strategies: 6.6.0 - dev: true - /workbox-precaching@7.0.0: resolution: {integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==} dependencies: @@ -12441,29 +11838,12 @@ packages: workbox-strategies: 7.0.0 dev: false - /workbox-range-requests@6.6.0: - resolution: {integrity: sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==} - dependencies: - workbox-core: 6.6.0 - dev: true - /workbox-range-requests@7.0.0: resolution: {integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==} dependencies: workbox-core: 7.0.0 dev: false - /workbox-recipes@6.6.0: - resolution: {integrity: sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==} - dependencies: - workbox-cacheable-response: 6.6.0 - workbox-core: 6.6.0 - workbox-expiration: 6.6.0 - workbox-precaching: 6.6.0 - workbox-routing: 6.6.0 - workbox-strategies: 6.6.0 - dev: true - /workbox-recipes@7.0.0: resolution: {integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==} dependencies: @@ -12475,37 +11855,18 @@ packages: workbox-strategies: 7.0.0 dev: false - /workbox-routing@6.6.0: - resolution: {integrity: sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==} - dependencies: - workbox-core: 6.6.0 - dev: true - /workbox-routing@7.0.0: resolution: {integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==} dependencies: workbox-core: 7.0.0 dev: false - /workbox-strategies@6.6.0: - resolution: {integrity: sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==} - dependencies: - workbox-core: 6.6.0 - dev: true - /workbox-strategies@7.0.0: resolution: {integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==} dependencies: workbox-core: 7.0.0 dev: false - /workbox-streams@6.6.0: - resolution: {integrity: sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==} - dependencies: - workbox-core: 6.6.0 - workbox-routing: 6.6.0 - dev: true - /workbox-streams@7.0.0: resolution: {integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==} dependencies: @@ -12513,38 +11874,10 @@ packages: workbox-routing: 7.0.0 dev: false - /workbox-sw@6.6.0: - resolution: {integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==} - dev: true - /workbox-sw@7.0.0: resolution: {integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==} dev: false - /workbox-webpack-plugin@6.6.0(webpack@5.88.2): - resolution: {integrity: sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==} - engines: {node: '>=10.0.0'} - peerDependencies: - webpack: ^4.4.0 || ^5.9.0 - dependencies: - fast-json-stable-stringify: 2.1.0 - pretty-bytes: 5.6.0 - upath: 1.2.0 - webpack: 5.88.2(esbuild@0.19.3)(webpack-cli@5.1.4) - webpack-sources: 1.4.3 - workbox-build: 6.6.0 - transitivePeerDependencies: - - '@types/babel__core' - - supports-color - dev: true - - /workbox-window@6.6.0: - resolution: {integrity: sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==} - dependencies: - '@types/trusted-types': 2.0.3 - workbox-core: 6.6.0 - dev: true - /workbox-window@7.0.0: resolution: {integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==} dependencies: @@ -12641,18 +11974,6 @@ packages: utf-8-validate: optional: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - /ws@8.8.1: resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==} engines: {node: '>=10.0.0'} @@ -12799,6 +12120,7 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + dev: true /zustand@3.6.5(react@18.2.0): resolution: {integrity: sha512-/WfLJuXiEJimt61KGMHebrFBwckkCHGhAgVXTgPQHl6IMzjqm6MREb1OnDSnCRiSmRdhgdFCctceg6tSm79hiw==} @@ -12835,20 +12157,6 @@ packages: - utf-8-validate dev: true - github.com/PrismarineJS/net-browserify/0acebf76d5a14991e6b2586f83f707be5171579c: - resolution: {tarball: https://codeload.github.com/PrismarineJS/net-browserify/tar.gz/0acebf76d5a14991e6b2586f83f707be5171579c} - name: net-browserify - version: 0.2.4 - dependencies: - body-parser: 1.20.2 - express: 4.18.2 - express-ws: 4.0.0(express@4.18.2) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - github.com/PrismarineJS/node-process/380d0b4f4c86f1b65b216c311bf00431f314e88e: resolution: {tarball: https://codeload.github.com/PrismarineJS/node-process/tar.gz/380d0b4f4c86f1b65b216c311bf00431f314e88e} name: process @@ -12966,6 +12274,20 @@ packages: dependencies: vec3: 0.1.8 + github.com/zardoy/prismarinejs-net-browserify/51262fe139a6a4856ffd4a6dc7b9145c3d6d8039: + resolution: {tarball: https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/51262fe139a6a4856ffd4a6dc7b9145c3d6d8039} + name: net-browserify + version: 0.2.4 + dependencies: + body-parser: 1.20.2 + express: 4.18.2 + express-ws: 4.0.0(express@4.18.2) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + github.com/zardoy/space-squid/eec886b7a881eb40dd8efc6d48fa52e638e07693: resolution: {tarball: https://codeload.github.com/zardoy/space-squid/tar.gz/eec886b7a881eb40dd8efc6d48fa52e638e07693} name: flying-squid diff --git a/scripts/build.js b/scripts/build.js index 94ece21a6..90cc36c4f 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -9,15 +9,15 @@ const path = require('path') const prismarineViewerBase = "./node_modules/prismarine-viewer" // these files could be copied at build time eg with copy plugin, but copy plugin slows down the config so we copy them there, alternative we could inline it in esbuild config -const webpackFilesToCopy = [ +const filesToCopy = [ { from: `${prismarineViewerBase}/public/blocksStates/`, to: 'dist/blocksStates/' }, { from: `${prismarineViewerBase}/public/worker.js`, to: 'dist/worker.js' }, { from: './assets/', to: './dist/' }, { from: './config.json', to: 'dist/config.json' }, { from: `${prismarineViewerBase}/public/textures/1.16.4/entity`, to: 'dist/textures/1.16.4/entity' }, ] -exports.webpackFilesToCopy = webpackFilesToCopy -exports.copyFiles = (isDev = false) => { +exports.filesToCopy = filesToCopy +exports.copyFiles = () => { console.time('copy files') // copy glob const cwd = `${prismarineViewerBase}/public/textures/` @@ -28,7 +28,7 @@ exports.copyFiles = (isDev = false) => { fs.copyFileSync(path.join(cwd, file), copyDest) } - webpackFilesToCopy.forEach(file => { + filesToCopy.forEach(file => { fsExtra.copySync(file.from, file.to) }) @@ -37,7 +37,7 @@ exports.copyFiles = (isDev = false) => { exports.copyFilesDev = () => { if (fsExtra.existsSync('dist/config.json')) return - exports.copyFiles(true) + exports.copyFiles() } exports.getSwAdditionalEntries = () => { diff --git a/src/browserfs.ts b/src/browserfs.ts index ed2f7eba7..26316b58f 100644 --- a/src/browserfs.ts +++ b/src/browserfs.ts @@ -1,21 +1,21 @@ //@ts-check -import { fsState, loadSave } from './loadSave' +import { join } from 'path' +import { promisify } from 'util' +import fs from 'fs' import { oneOf } from '@zardoy/utils' import JSZip from 'jszip' -import { join } from 'path' +import * as browserfs from 'browserfs' import { options } from './optionsStorage' -import { promisify } from 'util' -import * as browserfs from 'browserfs' -import fs from 'fs' +import { fsState, loadSave } from './loadSave' import { installTexturePack, updateTexturePackInstalledState } from './texturePack' browserfs.install(window) // todo migrate to StorageManager API for localsave as localstorage has only 5mb limit, when localstorage is fallback test limit warning on 4mb const deafultMountablePoints = { - "/world": { fs: "LocalStorage" }, + '/world': { fs: 'LocalStorage' }, '/userData': { fs: 'IndexedDB' }, -}; +} browserfs.configure({ fs: 'MountableFileSystem', options: deafultMountablePoints, @@ -26,10 +26,9 @@ browserfs.configure({ export const forceCachedDataPaths = {} -//@ts-ignore +//@ts-expect-error fs.promises = new Proxy(Object.fromEntries(['readFile', 'writeFile', 'stat', 'mkdir', 'rmdir', 'unlink', 'rename', /* 'copyFile', */'readdir'].map(key => [key, promisify(fs[key])])), { - get(target, p, receiver) { - //@ts-ignore + get(target, p: string, receiver) { if (!target[p]) throw new Error(`Not implemented fs.promises.${p}`) return (...args) => { // browser fs bug: if path doesn't start with / dirname will return . which would cause infinite loop, so we need to normalize paths @@ -50,20 +49,20 @@ fs.promises = new Proxy(Object.fromEntries(['readFile', 'writeFile', 'stat', 'mk if (p === 'open' && fsState.isReadonly) { args[1] = 'r' // read-only, zipfs throw otherwise } - //@ts-ignore return target[p](...args) } } }) -//@ts-ignore +//@ts-expect-error fs.promises.open = async (...args) => { const fd = await promisify(fs.open)(...args) return { ...Object.fromEntries(['read', 'write', 'close'].map(x => [x, async (...args) => { - return await new Promise(resolve => { + return new Promise(resolve => { // todo it results in world corruption on interactions eg block placements if (x === 'write' && fsState.isReadonly) { - return resolve({ buffer: Buffer.from([]), bytesRead: 0 }) + resolve({ buffer: Buffer.from([]), bytesRead: 0 }) + return } fs[x](fd, ...args, (err, bytesRead, buffer) => { @@ -80,7 +79,7 @@ fs.promises.open = async (...args) => { // for debugging fd, filename: args[0], - close: () => { + async close() { return new Promise(resolve => { fs.close(fd, (err) => { if (err) { @@ -96,7 +95,7 @@ fs.promises.open = async (...args) => { // for testing purposes, todo move it to core patch const removeFileRecursiveSync = (path) => { - fs.readdirSync(path).forEach((file) => { + for (const file of fs.readdirSync(path)) { const curPath = join(path, file) if (fs.lstatSync(curPath).isDirectory()) { // recurse @@ -106,30 +105,26 @@ const removeFileRecursiveSync = (path) => { // delete file fs.unlinkSync(curPath) } - }) + } } window.removeFileRecursiveSync = removeFileRecursiveSync // todo it still doesnt clean the storage, need to debug export async function removeFileRecursiveAsync(path) { - try { - const files = await fs.promises.readdir(path); - for (const file of files) { - const curPath = join(path, file); - const stats = await fs.promises.stat(curPath); - if (stats.isDirectory()) { - // Recurse - await removeFileRecursiveAsync(curPath); - } else { - // Delete file - await fs.promises.unlink(curPath); - } + const files = await fs.promises.readdir(path) + for (const file of files) { + const curPath = join(path, file) + const stats = await fs.promises.stat(curPath) + if (stats.isDirectory()) { + // Recurse + await removeFileRecursiveAsync(curPath) + } else { + // Delete file + await fs.promises.unlink(curPath) } - await fs.promises.rmdir(path); - } catch (error) { - throw error; } + await fs.promises.rmdir(path) } @@ -159,8 +154,8 @@ export const openWorldDirectory = async (dragndropHandle?: FileSystemDirectoryHa // todo fs: 'MountableFileSystem', options: { - "/world": { - fs: "FileSystemAccess", + '/world': { + fs: 'FileSystemAccess', options: { handle: directoryHandle } @@ -181,9 +176,9 @@ export const openWorldDirectory = async (dragndropHandle?: FileSystemDirectoryHa const tryToDetectResourcePack = async (file: File | ArrayBuffer) => { const askInstall = async () => { return alert('ATM You can install texturepacks only via options menu. WIll be fixed') - if (confirm('Resource pack detected, do you want to install it?')) { - await installTexturePack(file) - } + // if (confirm('Resource pack detected, do you want to install it?')) { + // await installTexturePack(file) + // } } if (fs.existsSync('/world/pack.mcmeta')) { @@ -220,8 +215,8 @@ const openWorldZipInner = async (file: File | ArrayBuffer, name = file['name']) fs: 'MountableFileSystem', options: { ...deafultMountablePoints, - "/world": { - fs: "ZipFS", + '/world': { + fs: 'ZipFS', options: { zipData: Buffer.from(file instanceof File ? (await file.arrayBuffer()) : file), name @@ -243,7 +238,7 @@ const openWorldZipInner = async (file: File | ArrayBuffer, name = file['name']) await loadSave() } else { const dirs = fs.readdirSync('/world') - let availableWorlds: string[] = [] + const availableWorlds: string[] = [] for (const dir of dirs) { if (fs.existsSync(`/world/${dir}/level.dat`)) { availableWorlds.push(dir) @@ -281,12 +276,12 @@ export async function generateAndDownloadWorldZip() { zip.folder('world') // Generate the ZIP archive content - const zipContent = await zip.generateAsync({ type: "blob" }) + const zipContent = await zip.generateAsync({ type: 'blob' }) // Create a download link and trigger the download - const downloadLink = document.createElement("a") + const downloadLink = document.createElement('a') downloadLink.href = URL.createObjectURL(zipContent) - downloadLink.download = "prismarine-world.zip" + downloadLink.download = 'prismarine-world.zip' downloadLink.click() // Clean up the URL object after download diff --git a/src/builtinCommands.ts b/src/builtinCommands.ts index 2168655bb..34abe8eea 100644 --- a/src/builtinCommands.ts +++ b/src/builtinCommands.ts @@ -1,6 +1,6 @@ -import JSZip from 'jszip' import fs from 'fs' import { join } from 'path' +import JSZip from 'jszip' import { fsState } from './loadSave' import { closeWan, openToWanAndCopyJoinLink } from './localServerMultiplayer' @@ -32,17 +32,17 @@ async function addFolderToZip(folderPath, zip, relativePath) { const exportWorld = async () => { // todo issue into chat warning if fs is writable! const zip = new JSZip() - let worldFolder: string = localServer.options.worldFolder + let {worldFolder} = localServer.options if (!worldFolder.startsWith('/')) worldFolder = `/${worldFolder}` await addFolderToZip(worldFolder, zip, '') // Generate the ZIP archive content - const zipContent = await zip.generateAsync({ type: "blob" }) + const zipContent = await zip.generateAsync({ type: 'blob' }) // Create a download link and trigger the download - const downloadLink = document.createElement("a") + const downloadLink = document.createElement('a') downloadLink.href = URL.createObjectURL(zipContent) - downloadLink.download = "world-exported.zip" + downloadLink.download = 'world-exported.zip' downloadLink.click() // Clean up the URL object after download @@ -64,21 +64,21 @@ const commands = [ }, { command: ['/publish', '/share'], - invoke: async () => { + async invoke() { const text = await openToWanAndCopyJoinLink(writeText) if (text) writeText(text) } }, { command: ['/close'], - invoke: () => { + invoke() { const text = closeWan() if (text) writeText(text) } }, { command: '/reset-world -y', - invoke: async () => { + async invoke() { if (fsState.inMemorySave) return // todo for testing purposes sessionStorage.oldData = localStorage @@ -90,7 +90,7 @@ const commands = [ }, { command: ['/save'], - invoke: () => { + invoke() { saveWorld() } } diff --git a/src/controls.ts b/src/controls.ts index 7b7017fa4..8b887736c 100644 --- a/src/controls.ts +++ b/src/controls.ts @@ -1,12 +1,12 @@ //@ts-check import { Vec3 } from 'vec3' -import { isGameActive, showModal, gameAdditionalState, activeModalStack, hideCurrentModal } from './globalState' import { proxy, subscribe } from 'valtio' import { ControMax } from 'contro-max/build/controMax' import { CommandEventArgument, SchemaCommandInput } from 'contro-max/build/types' import { stringStartsWith } from 'contro-max/build/stringUtils' +import { isGameActive, showModal, gameAdditionalState, activeModalStack, hideCurrentModal } from './globalState' import { reloadChunks } from './utils' // doesnt seem to work for now @@ -137,23 +137,24 @@ const onTriggerOrReleased = (command: Command, pressed: boolean) => { } if (stringStartsWith(command, 'general')) { // handle general commands + // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check switch (command) { - case 'general.jump': - bot.setControlState('jump', pressed) - break - case 'general.sneak': - gameAdditionalState.isSneaking = pressed - bot.setControlState('sneak', pressed) - break - case 'general.sprint': + case 'general.jump': + bot.setControlState('jump', pressed) + break + case 'general.sneak': + gameAdditionalState.isSneaking = pressed + bot.setControlState('sneak', pressed) + break + case 'general.sprint': // todo add setting to change behavior - if (pressed) { - setSprinting(pressed) - } - break - case 'general.attackDestroy': - document.dispatchEvent(new MouseEvent(pressed ? 'mousedown' : 'mouseup', { button: 0 })) - break + if (pressed) { + setSprinting(pressed) + } + break + case 'general.attackDestroy': + document.dispatchEvent(new MouseEvent(pressed ? 'mousedown' : 'mouseup', { button: 0 })) + break } } } @@ -189,27 +190,28 @@ contro.on('trigger', ({ command }) => { onTriggerOrReleased(command, true) if (stringStartsWith(command, 'general')) { + // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check switch (command) { - case 'general.inventory': - document.exitPointerLock?.() - showModal({ reactType: 'inventory' }) - break - case 'general.drop': - if (bot.heldItem) bot.tossStack(bot.heldItem) - break - case 'general.chat': - document.getElementById('hud').shadowRoot.getElementById('chat').enableChat() - break - case 'general.command': - document.getElementById('hud').shadowRoot.getElementById('chat').enableChat('/') - break - case 'general.interactPlace': - document.dispatchEvent(new MouseEvent('mousedown', { button: 2 })) - setTimeout(() => { + case 'general.inventory': + document.exitPointerLock?.() + showModal({ reactType: 'inventory' }) + break + case 'general.drop': + if (bot.heldItem) bot.tossStack(bot.heldItem) + break + case 'general.chat': + document.getElementById('hud').shadowRoot.getElementById('chat').enableChat() + break + case 'general.command': + document.getElementById('hud').shadowRoot.getElementById('chat').enableChat('/') + break + case 'general.interactPlace': + document.dispatchEvent(new MouseEvent('mousedown', { button: 2 })) + setTimeout(() => { // todo cleanup - document.dispatchEvent(new MouseEvent('mouseup', { button: 2 })) - }) - break + document.dispatchEvent(new MouseEvent('mouseup', { button: 2 })) + }) + break } } }) @@ -225,7 +227,7 @@ document.addEventListener('keydown', (e) => { if (hardcodedPressedKeys.has('F3')) { // reload chunks if (e.code === 'KeyA') { - //@ts-ignore + //@ts-expect-error const loadedChunks = Object.entries(worldView.loadedChunks).filter(([, v]) => v).map(([key]) => key.split(',').map(Number)) for (const [x, z] of loadedChunks) { worldView.unloadChunk({ x, z }) @@ -318,6 +320,7 @@ const toggleFly = () => { } // #endregion addEventListener('mousedown', (e) => { + if (!bot) return // wheel click // todo support ctrl+wheel (+nbt) if (e.button === 1) { diff --git a/src/downloadAndOpenFile.ts b/src/downloadAndOpenFile.ts index 0192ab4c3..66e2cbd5b 100644 --- a/src/downloadAndOpenFile.ts +++ b/src/downloadAndOpenFile.ts @@ -1,7 +1,7 @@ +import prettyBytes from 'pretty-bytes' import { openWorldZip } from './browserfs' import { getResourcePackName, installTexturePack, resourcePackState, updateTexturePackInstalledState } from './texturePack' import { setLoadingScreenStatus } from './utils' -import prettyBytes from 'pretty-bytes' const getConstantFilesize = (bytes: number) => { return prettyBytes(bytes, { minimumFractionDigits: 2, maximumFractionDigits: 2 }) @@ -15,14 +15,14 @@ export default async () => { if (texturepack) mapUrl = texturepack if (!mapUrl) return false - if (!texturepack) { - const menu = document.getElementById('play-screen') - menu.style = 'display: none;' - } else { + if (texturepack) { await updateTexturePackInstalledState() if (resourcePackState.resourcePackInstalled) { - if (!confirm(`You are going to install a new texturepack which would override a current one: ${getResourcePackName()} Continue?`)) return + if (!confirm(`You are going to install a new texturepack which would override a current one: ${await getResourcePackName()} Continue?`)) return } + } else { + const menu = document.getElementById('play-screen') + menu.style = 'display: none;' } const name = mapUrl.slice(mapUrl.lastIndexOf('/') + 1).slice(-25) const downloadThing = texturepack ? 'texturepack' : 'world' @@ -42,6 +42,7 @@ export default async () => { async start(controller) { const reader = response.body.getReader() + // eslint-disable-next-line no-constant-condition while (true) { const { done, value } = await reader.read() diff --git a/src/dragndrop.ts b/src/dragndrop.ts index bcb8d5711..46a20788c 100644 --- a/src/dragndrop.ts +++ b/src/dragndrop.ts @@ -1,23 +1,23 @@ -import * as nbt from 'prismarine-nbt' import { promisify } from 'util' +import * as nbt from 'prismarine-nbt' import { showNotification } from './menus/notification' import { openWorldDirectory, openWorldZip } from './browserfs' import { isGameActive } from './globalState' const parseNbt = promisify(nbt.parse) -window.nbt = nbt; +window.nbt = nbt // todo display drop zone -["drag", "dragstart", "dragend", "dragover", "dragenter", "dragleave", "drop"].forEach(event => { +for (const event of ['drag', 'dragstart', 'dragend', 'dragover', 'dragenter', 'dragleave', 'drop']) { window.addEventListener(event, (e: any) => { - if (e.dataTransfer && !e.dataTransfer.types.includes("Files")) { + if (e.dataTransfer && !e.dataTransfer.types.includes('Files')) { // e.dataTransfer.effectAllowed = "none" return } e.preventDefault() }) -}) -window.addEventListener("drop", async e => { +} +window.addEventListener('drop', async e => { if (!e.dataTransfer?.files.length) return const { items } = e.dataTransfer const item = items[0] @@ -32,7 +32,7 @@ window.addEventListener("drop", async e => { alert('Exit current world first, before loading a new one.') return } - await openWorldDirectory(filehandle as FileSystemDirectoryHandle) + await openWorldDirectory(filehandle ) } } else { await handleDroppedFile(item.getAsFile()) diff --git a/src/globalState.ts b/src/globalState.ts index 50cbde65f..0257ca232 100644 --- a/src/globalState.ts +++ b/src/globalState.ts @@ -45,7 +45,7 @@ const showModalInner = (modal: Modal) => { export const showModal = (elem: (HTMLElement & Record) | { reactType: string }) => { const resolved = elem instanceof HTMLElement ? { elem: ref(elem) } : elem - const curModal = activeModalStack.slice(-1)[0] + const curModal = activeModalStack.at(-1) if (elem === curModal?.elem || !showModalInner(resolved)) return if (curModal) defaultModalActions.hide(curModal) activeModalStack.push(resolved) @@ -55,7 +55,7 @@ export const showModal = (elem: (HTMLElement & Record) | { reactTyp * * @returns true if previous modal was restored */ -export const hideModal = (modal = activeModalStack.slice(-1)[0], data: any = undefined, options: { force?: boolean; restorePrevious?: boolean } = {}) => { +export const hideModal = (modal = activeModalStack.at(-1), data: any = undefined, options: { force?: boolean; restorePrevious?: boolean } = {}) => { const { force = false, restorePrevious = true } = options if (!modal) return let cancel = modal.elem?.hide?.(data) @@ -66,7 +66,7 @@ export const hideModal = (modal = activeModalStack.slice(-1)[0], data: any = und if (!cancel || cancel === customDisplayManageKeyword) { if (cancel !== customDisplayManageKeyword) defaultModalActions.hide(modal) activeModalStack.pop() - const newModal = activeModalStack.slice(-1)[0] + const newModal = activeModalStack.at(-1) if (newModal && restorePrevious) { // would be great to ignore cancel I guess? showModalInner(newModal) @@ -79,10 +79,10 @@ export const hideCurrentModal = (_data = undefined, restoredActions = undefined) if (hideModal(undefined, undefined)) { restoredActions?.() if (activeModalStack.length === 0) { - if (!isGameActive(false)) { - showModal(document.getElementById('title-screen')) - } else { + if (isGameActive(false)) { pointerLock.requestPointerLock() + } else { + showModal(document.getElementById('title-screen')) } } } @@ -149,8 +149,8 @@ window.inspectPlayer = () => require('fs').promises.readFile('/world/playerdata/ window.addEventListener('beforeunload', (event) => { // todo-low maybe exclude chat? if (!isGameActive(true) && activeModalStack.at(-1)?.elem.id !== 'chat') return - if (sessionStorage.lastReload && options.preventDevReloadWhilePlaying === false) return - if (options.closeConfirmation === false) return + if (sessionStorage.lastReload && !options.preventDevReloadWhilePlaying) return + if (!options.closeConfirmation) return // For major browsers doning only this is enough event.preventDefault() diff --git a/src/globals.d.ts b/src/globals.d.ts index dadeafa72..79918e939 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -1,7 +1,7 @@ /// declare const THREE: typeof import('three') -// todo +// todo make optional declare const bot: import('mineflayer').Bot declare const viewer: import('../prismarine-viewer/viewer/lib/viewer').Viewer | undefined declare const worldView: import('../prismarine-viewer/viewer/lib/worldView').WorldView | undefined @@ -30,10 +30,10 @@ type StringKeys = Extract interface ObjectConstructor { - keys(obj: T): StringKeys[] - entries(obj: T): [StringKeys, T[keyof T]][] + keys(obj: T): Array> + entries(obj: T): Array<[StringKeys, T[keyof T]]> // todo review https://stackoverflow.com/questions/57390305/trying-to-get-fromentries-type-right - fromEntries(obj: T): Record + fromEntries>(obj: T): Record assign, K extends Record>(target: T, source: K): asserts target is T & K } diff --git a/src/index.ts b/src/index.ts index 68ecbbb2d..1c1883cd9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable import/order */ import './importsWorkaround' import './styles.css' import './globals' @@ -25,9 +26,9 @@ import './menus/advanced_options_screen' import { notification } from './menus/notification' import './menus/title_screen' -import './optionsStorage' +import { options, watchValue } from './optionsStorage' import './reactUi.jsx' -import './controls' +import { contro } from './controls' import './dragndrop' import './browserfs' import './eruda' @@ -75,25 +76,24 @@ import { import { startLocalServer, unsupportedLocalServerFeatures } from './createLocalServer' import serverOptions from './defaultLocalServerOptions' import updateTime from './updateTime' -import { options, watchValue } from './optionsStorage' + import { subscribeKey } from 'valtio/utils' import _ from 'lodash' -import { contro } from './controls' + import { genTexturePackTextures, watchTexturepackInViewer } from './texturePack' import { connectToPeer } from './localServerMultiplayer' import CustomChannelClient from './customClient' import debug from 'debug' window.debug = debug -//@ts-ignore window.THREE = THREE if ('serviceWorker' in navigator && !isCypress() && process.env.NODE_ENV !== 'development') { window.addEventListener('load', () => { navigator.serviceWorker.register('./service-worker.js').then(registration => { - console.log('SW registered: ', registration) + console.log('SW registered:', registration) }).catch(registrationError => { - console.log('SW registration failed: ', registrationError) + console.log('SW registration failed:', registrationError) }) }) } @@ -101,10 +101,8 @@ if ('serviceWorker' in navigator && !isCypress() && process.env.NODE_ENV !== 'de // ACTUAL CODE // todo stats-gl -let stats -let stats2 -stats = new Stats() -stats2 = new Stats() +const stats = new Stats() +const stats2 = new Stats() stats2.showPanel(2) document.body.appendChild(stats.dom) @@ -121,19 +119,6 @@ if (localStorage.hideStats || isCypress()) { stats2.dom.style.display = 'none' } -// const debugPitch = document.createElement('span') -// debugPitch.style.cssText = ` -// position: absolute; -// top: 0; -// right: 0; -// z-index: 100; -// color:white; -// ` -// document.body.appendChild(debugPitch) - -const maxPitch = 0.5 * Math.PI -const minPitch = -0.5 * Math.PI - // Create three.js context, add to page const renderer = new THREE.WebGLRenderer() renderer.setPixelRatio(window.devicePixelRatio || 1) // todo this value is too high on ios, need to check, probably we should use avg, also need to make it configurable @@ -152,7 +137,6 @@ watchValue(options, (o) => { renderInterval = o.frameLimit && 1000 / o.frameLimit }) -let nextFrameFn = [] let postRenderFrameFn = () => { } let delta = 0 let lastTime = performance.now() @@ -164,7 +148,7 @@ const renderFrame = (time: DOMHighResTimeStamp) => { delta += time - lastTime lastTime = time if (delta > renderInterval) { - delta = delta % renderInterval + delta %= renderInterval // continue rendering } else { return @@ -175,12 +159,6 @@ const renderFrame = (time: DOMHighResTimeStamp) => { viewer.update() renderer.render(viewer.scene, viewer.camera) postRenderFrameFn() - if (nextFrameFn.length) { - for (const fn of nextFrameFn) { - fn() - } - nextFrameFn = [] - } stats?.end() stats2?.end() } @@ -214,7 +192,6 @@ function onCameraMove(e) { lastMouseMove = now let { mouseSensX, mouseSensY } = options if (mouseSensY === true) mouseSensY = mouseSensX - // debugPitch.innerText = +debugPitch.innerText + e.movementX mouseMovePostHandle({ x: e.movementX * mouseSensX * 0.0001, y: e.movementY * mouseSensY * 0.0001 @@ -241,7 +218,7 @@ async function main() { connect({ server: '', port: '', proxy: '', singleplayer: true, username: options.localUsername, password: '', serverOverrides }) } document.querySelector('#title-screen').addEventListener('singleplayer', (e) => { - //@ts-ignore + //@ts-expect-error connectSingleplayer(e.detail) }) const qs = new URLSearchParams(window.location.search) @@ -254,9 +231,7 @@ async function main() { } let listeners = [] -let disposables = [] let timeouts = [] -let intervals = [] // only for dom listeners (no removeAllListeners) // todo refactor them out of connect fn instead const registerListener: import('./utilsTs').RegisterListener = (target, event, callback) => { @@ -264,16 +239,14 @@ const registerListener: import('./utilsTs').RegisterListener = (target, event, c listeners.push({ target, event, callback }) } const removeAllListeners = () => { - listeners.forEach(({ target, event, callback }) => { + for (const { target, event, callback } of listeners) { target.removeEventListener(event, callback) - }) - listeners = [] - for (const disposable of disposables) { - disposable() } - disposables = [] + listeners = [] } +// todo +// eslint-disable-next-line complexity async function connect(connectOptions: { server: any; port?: string; singleplayer?: any; username: any; password: any; proxy: any; botVersion?: any; serverOverrides?; peerId?: string }) { @@ -285,15 +258,8 @@ async function connect(connectOptions: { const p2pMultiplayer = !!connectOptions.peerId miscUiState.singleplayer = singeplayer miscUiState.flyingSquid = singeplayer || p2pMultiplayer - const oldSetInterval = window.setInterval - // @ts-ignore - window.setInterval = (callback, ms) => { - const id = oldSetInterval.call(window, callback, ms) - timeouts.push(id) - return id - } const oldSetTimeout = window.setTimeout - //@ts-ignore + //@ts-expect-error window.setTimeout = (callback, ms) => { const id = oldSetTimeout.call(window, callback, ms) timeouts.push(id) @@ -302,24 +268,24 @@ async function connect(connectOptions: { const { renderDistance, maxMultiplayerRenderDistance } = options const hostprompt = connectOptions.server const proxyprompt = connectOptions.proxy - const username = connectOptions.username - const password = connectOptions.password + const { username } = connectOptions + const { password } = connectOptions - let host, port, proxy, proxyport - if (!hostprompt.includes(':')) { - host = hostprompt - port = 25565 - } else { + let host; let port; let proxy; let proxyport + if (hostprompt.includes(':')) { [host, port] = hostprompt.split(':') port = parseInt(port, 10) + } else { + host = hostprompt + port = 25_565 } - if (!proxyprompt.includes(':')) { - proxy = proxyprompt - proxyport = undefined - } else { + if (proxyprompt.includes(':')) { [proxy, proxyport] = proxyprompt.split(':') proxyport = parseInt(proxyport, 10) + } else { + proxy = proxyprompt + proxyport = undefined } console.log(`connecting to ${host} ${port} with ${username}`) @@ -345,10 +311,6 @@ async function connect(connectOptions: { clearTimeout(timeout) } timeouts = [] - for (const interval of intervals) { - clearInterval(interval) - } - intervals = [] } const handleError = (err) => { console.log('Encountered error!', err) @@ -396,7 +358,7 @@ async function connect(connectOptions: { // console.error(err) // throw new Error(`Proxy server ${proxy}:${proxyport} is not available`) // } - //@ts-ignore + //@ts-expect-error net.setProxy({ hostname: proxy, port: proxyport }) } @@ -451,7 +413,7 @@ async function connect(connectOptions: { bot = mineflayer.createBot({ host, port, - version: !connectOptions.botVersion ? false : connectOptions.botVersion, + version: connectOptions.botVersion || false, ...p2pMultiplayer ? { stream: await connectToPeer(connectOptions.peerId), } : {}, @@ -488,26 +450,38 @@ async function connect(connectOptions: { bot.emit('inject_allowed') bot._client.emit('connect') } else { - bot._client.socket.on('connect', () => { - console.log('TCP connection established') - //@ts-ignore - bot._client.socket._ws.addEventListener('close', () => { - console.log('TCP connection closed') - setTimeout(() => { - if (bot) { - bot.emit('end', 'TCP connection closed with unknown reason') - } + const setupConnectHandlers = () => { + bot._client.socket.on('connect', () => { + console.log('TCP connection established') + //@ts-expect-error + bot._client.socket._ws.addEventListener('close', () => { + console.log('TCP connection closed') + setTimeout(() => { + if (bot) { + bot.emit('end', 'TCP connection closed with unknown reason') + } + }) }) }) - }) + } + // socket setup actually can be delayed because of dns lookup + if (bot._client.socket) { + setupConnectHandlers() + } else { + const originalSetSocket = bot._client.setSocket.bind(bot._client) + bot._client.setSocket = (socket) => { + originalSetSocket(socket) + setupConnectHandlers() + } + } + } } catch (err) { handleError(err) } if (!bot) return - // bot.on('move', () => updateCursor()) - let p2pConnectTimeout = p2pMultiplayer ? setTimeout(() => { throw new Error('Spawn timeout. There might be error on other side, check console.') }, 20_000) : undefined + const p2pConnectTimeout = p2pMultiplayer ? setTimeout(() => { throw new Error('Spawn timeout. There might be error on other side, check console.') }, 20_000) : undefined hud.preload(bot) // bot.on('inject_allowed', () => { @@ -547,7 +521,7 @@ async function connect(connectOptions: { console.log('bot spawned - starting viewer') - const version = bot.version + const { version } = bot const center = bot.entity.position @@ -619,6 +593,8 @@ async function connect(connectOptions: { setLoadingScreenStatus('Setting callbacks') + const maxPitch = 0.5 * Math.PI + const minPitch = -0.5 * Math.PI mouseMovePostHandle = ({ x, y }) => { bot.entity.pitch -= y bot.entity.pitch = Math.max(minPitch, Math.min(maxPitch, bot.entity.pitch)) @@ -680,7 +656,6 @@ async function connect(connectOptions: { activateCameraMove: false, time: Date.now() } - console.log('capture!') virtualClickTimeout ??= setTimeout(() => { virtualClickActive = true document.dispatchEvent(new MouseEvent('mousedown', { button: 0 })) @@ -745,23 +720,23 @@ async function connect(connectOptions: { }, false) setLoadingScreenStatus('Done!') - miscUiState.gameLoaded = true console.log('Done!') hud.init(renderer, bot, host) hud.style.display = 'block' blockInteraction.init() - setTimeout(function () { + setTimeout(() => { errorAbortController.abort() if (loadingScreen.hasError) return // remove loading screen, wait a second to make sure a frame has properly rendered setLoadingScreenStatus(undefined) hideCurrentScreens() - viewer.waitForChunksToRender().then(() => { + void viewer.waitForChunksToRender().then(() => { console.log('All done and ready!') document.dispatchEvent(new Event('cypress-world-ready')) }) + miscUiState.gameLoaded = true }, singeplayer ? 0 : 2500) }) } @@ -778,15 +753,13 @@ window.addEventListener('keydown', (e) => { pointerLock.justHitEscape = true } }) - } else { - if (pointerLock.hasPointerLock) { - document.exitPointerLock() - if (options.autoExitFullscreen) { - document.exitFullscreen() - } - } else { - document.dispatchEvent(new Event('pointerlockchange')) + } else if (pointerLock.hasPointerLock) { + document.exitPointerLock() + if (options.autoExitFullscreen) { + document.exitFullscreen() } + } else { + document.dispatchEvent(new Event('pointerlockchange')) } }) @@ -802,9 +775,9 @@ window.addEventListener('keydown', (e) => { addPanoramaCubeMap() showModal(document.getElementById('title-screen')) -main() +void main() downloadAndOpenFile().then((downloadAction) => { - if (downloadAction !== false) return + if (downloadAction) return window.addEventListener('hud-ready', (e) => { // try to connect to peer diff --git a/src/inventory.ts b/src/inventory.ts index 2efce7fca..c5212215c 100644 --- a/src/inventory.ts +++ b/src/inventory.ts @@ -1,16 +1,16 @@ import { subscribe } from 'valtio' -import { activeModalStack, hideCurrentModal, miscUiState } from './globalState' import { showInventory } from 'minecraft-inventory-gui/web/ext.mjs' import InventoryGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/inventory.png' import Dirt from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/dirt.png' import { subscribeKey } from 'valtio/utils' import MinecraftData from 'minecraft-data' -import invspriteJson from './invsprite.json' import { getVersion } from 'prismarine-viewer/viewer/lib/version' +import invspriteJson from './invsprite.json' +import { activeModalStack, hideCurrentModal, miscUiState } from './globalState' const loadedImages = new Map() export type BlockStates = Record + }>> }> let blockStates: BlockStates @@ -37,7 +37,7 @@ subscribeKey(miscUiState, 'gameLoaded', async () => { // on game load version = getVersion(bot.version) - blockStates = await fetch(`blocksStates/${version}.json`).then(res => res.json()) + blockStates = await fetch(`blocksStates/${version}.json`).then(async res => res.json()) getImage({ path: 'blocks', } as any) getImage({ path: 'invsprite', } as any) mcData = MinecraftData(version) @@ -53,7 +53,7 @@ const findBlockStateTexturesAtlas = (name) => { const getBlockData = (name) => { const blocksImg = loadedImages.get('blocks') - if (!blocksImg || !blocksImg.width) return + if (!blocksImg?.width) return const data = findBlockStateTexturesAtlas(name) if (!data) return @@ -79,7 +79,7 @@ const getBlockData = (name) => { const getItemSlice = (name) => { const invspriteImg = loadedImages.get('invsprite') - if (!invspriteImg || !invspriteImg.width) return + if (!invspriteImg?.width) return const { x, y } = invspriteJson[name] ?? /* unknown item */ { x: 0, y: 0 } const sprite = [x, y, 32, 32] @@ -88,9 +88,9 @@ const getItemSlice = (name) => { const getImageSrc = (path) => { switch (path) { - case 'gui/container/inventory': return InventoryGui - case 'blocks': return globalThis.texturePackDataUrl || `textures/${version}.png` - case 'invsprite': return `invsprite.png` + case 'gui/container/inventory': return InventoryGui + case 'blocks': return globalThis.texturePackDataUrl || `textures/${version}.png` + case 'invsprite': return `invsprite.png` } return Dirt } @@ -131,7 +131,7 @@ const upInventory = () => { } subscribe(activeModalStack, () => { - const inventoryOpened = activeModalStack.slice(-1)[0]?.reactType === 'inventory' + const inventoryOpened = activeModalStack.at(-1)?.reactType === 'inventory' if (inventoryOpened) { const inv = showInventory(undefined, getImage, {}, bot) inv.canvas.style.zIndex = 10 diff --git a/src/loadSave.ts b/src/loadSave.ts index 4edcafd44..c0260279c 100644 --- a/src/loadSave.ts +++ b/src/loadSave.ts @@ -1,12 +1,12 @@ import fs from 'fs' +import { promisify } from 'util' import { supportedVersions } from 'flying-squid/src/lib/version' import * as nbt from 'prismarine-nbt' -import { promisify } from 'util' -import { options } from './optionsStorage' import { proxy } from 'valtio' +import { gzip } from 'node-gzip' +import { options } from './optionsStorage' import { nameToMcOfflineUUID } from './utils' import { forceCachedDataPaths } from './browserfs' -import { gzip } from 'node-gzip' const parseNbt = promisify(nbt.parse) @@ -20,11 +20,14 @@ export const fsState = proxy({ const PROPOSE_BACKUP = true +// eslint-disable-next-line complexity export const loadSave = async (root = '/world') => { const disablePrompts = options.disableLoadPrompts // todo do it in singleplayer as well + // eslint-disable-next-line guard-for-in for (const key in forceCachedDataPaths) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete forceCachedDataPaths[key] } @@ -35,10 +38,10 @@ export const loadSave = async (root = '/world') => { levelDatContent = await fs.promises.readFile(`${root}/level.dat`) } catch (err) { if (err.code === 'ENOENT') { - if (!fsState.isReadonly) { - warnings.push('level.dat not found, world in current folder will be created') - } else { + if (fsState.isReadonly) { throw new Error('level.dat not found, ensure you are loading world folder') + } else { + warnings.push('level.dat not found, world in current folder will be created') } } else { throw err @@ -52,9 +55,9 @@ export const loadSave = async (root = '/world') => { const levelDat: import('./mcTypes').LevelDat = nbt.simplify(parsedRaw).Data const qs = new URLSearchParams(window.location.search) - version = levelDat.Version?.Name ?? qs.get('mapVersion') + version = qs.get('mapVersion') ?? levelDat.Version?.Name if (!version) { - const newVersion = disablePrompts ? '1.8.8' : prompt(`In 1.8 and before world save doesn\'t contain version info, please enter version you want to use to load the world.\nSupported versions ${supportedVersions.join(', ')}`, '1.8.8') + const newVersion = disablePrompts ? '1.8.8' : prompt(`In 1.8 and before world save doesn't contain version info, please enter version you want to use to load the world.\nSupported versions ${supportedVersions.join(', ')}`, '1.8.8') if (!newVersion) return version = newVersion } @@ -118,7 +121,7 @@ export const loadSave = async (root = '/world') => { if (!fsState.isReadonly) { // todo allow also to ctrl+s - alert("Note: the world is saved only on /save or disconnect! ENSURE YOU HAVE BACKUP!") + alert('Note: the world is saved only on /save or disconnect! ENSURE YOU HAVE BACKUP!') } fsState.saveLoaded = true @@ -131,9 +134,9 @@ export const loadSave = async (root = '/world') => { name: 'superflat' } } : {}, - ...root !== '/world' ? { + ...root === '/world' ? {} : { 'worldFolder': root - } : {} + } }, })) } diff --git a/src/localServerMultiplayer.ts b/src/localServerMultiplayer.ts index a63822846..3096e9321 100644 --- a/src/localServerMultiplayer.ts +++ b/src/localServerMultiplayer.ts @@ -5,146 +5,146 @@ import { resolveTimeout, setLoadingScreenStatus } from './utils' import { miscUiState } from './globalState' class CustomDuplex extends Duplex { - constructor(options, public writeAction) { - super(options) - } + constructor(options, public writeAction) { + super(options) + } - _read() { } + _read() { } - _write(chunk, encoding, callback) { - this.writeAction(chunk) - callback() - } + _write(chunk, encoding, callback) { + this.writeAction(chunk) + callback() + } } let peerInstance: Peer | undefined export const getJoinLink = () => { - if (!peerInstance) return - const url = new URL(window.location.href) - url.searchParams.set('connectPeer', peerInstance.id) - url.searchParams.set('peerVersion', localServer.options.version) - return url.toString() + if (!peerInstance) return + const url = new URL(window.location.href) + url.searchParams.set('connectPeer', peerInstance.id) + url.searchParams.set('peerVersion', localServer.options.version) + return url.toString() } const copyJoinLink = async () => { - miscUiState.wanOpened = true - const joinLink = getJoinLink() - if (navigator.clipboard) { - await navigator.clipboard.writeText(joinLink) - } else { - window.prompt('Copy to clipboard: Ctrl+C, Enter', joinLink) - } + miscUiState.wanOpened = true + const joinLink = getJoinLink() + if (navigator.clipboard) { + await navigator.clipboard.writeText(joinLink) + } else { + window.prompt('Copy to clipboard: Ctrl+C, Enter', joinLink) + } } export const openToWanAndCopyJoinLink = async (writeText: (text) => void, doCopy = true) => { - if (!localServer) return - if (peerInstance) { - if (doCopy) await copyJoinLink() - return 'Already opened to wan. Join link copied' - } - const peer = new Peer({ - debug: 3, - }) - peerInstance = peer - peer.on('connection', (connection) => { - console.log('connection') - const serverDuplex = new CustomDuplex({}, (data) => connection.send(data)) - const client = new Client(true, localServer.options.version, undefined) - client.setSocket(serverDuplex) - localServer._server.emit('connection', client) - - connection.on('data', (data: any) => { - serverDuplex.push(Buffer.from(data)) - }) - // our side disconnect - const endConnection = () => { - console.log('connection.close') - serverDuplex.end() - connection.close() - } - serverDuplex.on('end', endConnection) - serverDuplex.on('force-close', endConnection) - client.on('end', endConnection) + if (!localServer) return + if (peerInstance) { + if (doCopy) await copyJoinLink() + return 'Already opened to wan. Join link copied' + } + const peer = new Peer({ + debug: 3, + }) + peerInstance = peer + peer.on('connection', (connection) => { + console.log('connection') + const serverDuplex = new CustomDuplex({}, (data) => connection.send(data)) + const client = new Client(true, localServer.options.version, undefined) + client.setSocket(serverDuplex) + localServer._server.emit('connection', client) - const disconnected = () => { - serverDuplex.end() - client.end() - } - connection.on('iceStateChanged', (state) => { - console.log('iceStateChanged', state) - if (state === 'disconnected') { - disconnected() - } - }) - connection.on('close', disconnected) - connection.on('error', disconnected) + connection.on('data', (data: any) => { + serverDuplex.push(Buffer.from(data)) }) - peer.on('error', (error) => { - console.error(error) - writeText(error.message) + // our side disconnect + const endConnection = () => { + console.log('connection.close') + serverDuplex.end() + connection.close() + } + serverDuplex.on('end', endConnection) + serverDuplex.on('force-close', endConnection) + client.on('end', endConnection) + + const disconnected = () => { + serverDuplex.end() + client.end() + } + connection.on('iceStateChanged', (state) => { + console.log('iceStateChanged', state) + if (state === 'disconnected') { + disconnected() + } }) - return await new Promise(resolve => { - peer.on('open', async () => { - await copyJoinLink() - resolve('Copied join link to clipboard') - }) - setTimeout(() => { - resolve('Failed to open to wan (timeout)') - }, 5000) + connection.on('close', disconnected) + connection.on('error', disconnected) + }) + peer.on('error', (error) => { + console.error(error) + writeText(error.message) + }) + return new Promise(resolve => { + peer.on('open', async () => { + await copyJoinLink() + resolve('Copied join link to clipboard') }) + setTimeout(() => { + resolve('Failed to open to wan (timeout)') + }, 5000) + }) } export const closeWan = () => { - if (!peerInstance) return - peerInstance.destroy() - peerInstance = undefined - miscUiState.wanOpened = false - return 'Closed to wan' + if (!peerInstance) return + peerInstance.destroy() + peerInstance = undefined + miscUiState.wanOpened = false + return 'Closed to wan' } export const connectToPeer = async (peerId: string) => { - setLoadingScreenStatus('Connecting to peer server') - // todo destroy connection on error - const peer = new Peer({ - debug: 3, + setLoadingScreenStatus('Connecting to peer server') + // todo destroy connection on error + const peer = new Peer({ + debug: 3, + }) + await resolveTimeout(new Promise(resolve => { + peer.once('open', resolve) + })) + setLoadingScreenStatus('Connecting to the peer') + const connection = peer.connect(peerId, { + serialization: 'raw', + }) + await resolveTimeout(new Promise((resolve, reject) => { + connection.once('error', (error) => { + console.log(error.type, error.name) + console.log(error) + reject(error.message) }) - await resolveTimeout(new Promise(resolve => { - peer.once('open', resolve) - })) - setLoadingScreenStatus('Connecting to the peer') - const connection = peer.connect(peerId, { - serialization: 'raw', - }) - await resolveTimeout(new Promise((resolve, reject) => { - connection.once('error', (error) => { - console.log(error.type, error.name) - console.log(error) - return reject(error.message) - }) - connection.once('open', resolve) - })) + connection.once('open', resolve) + })) - const clientDuplex = new CustomDuplex({}, (data) => { - // todo rm debug - console.debug('sending', data.toString()) - connection.send(data) - }) - connection.on('data', (data: any) => { - console.debug('received', Buffer.from(data).toString()) - clientDuplex.push(Buffer.from(data)) - }) - connection.on('close', () => { - console.log('connection closed') - clientDuplex.end() - // bot._client.end() - // bot.end() - bot.emit('end', 'Disconnected.') - }) - connection.on('error', (error) => { - console.error(error) - clientDuplex.end() - }) + const clientDuplex = new CustomDuplex({}, (data) => { + // todo rm debug + console.debug('sending', data.toString()) + connection.send(data) + }) + connection.on('data', (data: any) => { + console.debug('received', Buffer.from(data).toString()) + clientDuplex.push(Buffer.from(data)) + }) + connection.on('close', () => { + console.log('connection closed') + clientDuplex.end() + // bot._client.end() + // bot.end() + bot.emit('end', 'Disconnected.') + }) + connection.on('error', (error) => { + console.error(error) + clientDuplex.end() + }) - return clientDuplex + return clientDuplex } diff --git a/src/menus/hud.js b/src/menus/hud.js index 590085a43..bd7e567f0 100644 --- a/src/menus/hud.js +++ b/src/menus/hud.js @@ -240,11 +240,9 @@ class Hud extends LitElement { hotbar.bot = bot debugMenu.bot = bot - if (bot._client) { - hotbar.init() - chat.init(bot._client) - playerList.init(bot, host) - } + hotbar.init() + chat.init(bot._client) + playerList.init(bot, host) bot.on('entityHurt', (entity) => { if (entity !== bot.entity) return diff --git a/src/menus/loading_or_error_screen.js b/src/menus/loading_or_error_screen.js index d2259d42d..7a9588d85 100644 --- a/src/menus/loading_or_error_screen.js +++ b/src/menus/loading_or_error_screen.js @@ -79,7 +79,7 @@ class LoadingErrorScreen extends LitElement { return html`
-
${this.status}${this.hasError || this.hideDots ? '' : this._loadingDots} +
${this.status}${this.hasError || this.hideDots ? '' : this._loadingDots}

${this.hasError ? guessProblem(this.status) : ''}

${this.lastStatus ? `Last status: ${this.lastStatus}` : this.lastStatus}

diff --git a/src/optionsStorage.ts b/src/optionsStorage.ts index 51aeb35d5..64850314b 100644 --- a/src/optionsStorage.ts +++ b/src/optionsStorage.ts @@ -62,11 +62,11 @@ export const watchValue: WatchValue = (proxy, callback) => { return Reflect.get(target, p, receiver) }, })) - watchedProps.forEach(prop => { + for (const prop of watchedProps) { subscribeKey(proxy, prop, () => { callback(proxy) }) - }) + } } watchValue(options, o => { diff --git a/src/panorama.js b/src/panorama.js index 1c67df825..21d01359f 100644 --- a/src/panorama.js +++ b/src/panorama.js @@ -37,7 +37,7 @@ const possiblyLoadPanoramaFromResourcePack = async (file) => { else return join('extra-textures/background', file) } -const updateResourecePackSupportPanorama = async () => { +const updateResourcePackSupportPanorama = async () => { try { await fs.promises.readFile(fromTexturePackPath(join(panoramaResourcePackPath, panoramaFiles[0])), 'base64') panoramaUsesResourePack = true @@ -48,7 +48,7 @@ const updateResourecePackSupportPanorama = async () => { subscribeKey(resourcePackState, 'resourcePackInstalled', async () => { const oldState = panoramaUsesResourePack - const newState = resourcePackState.resourcePackInstalled && (await updateResourecePackSupportPanorama(), panoramaUsesResourePack) + const newState = resourcePackState.resourcePackInstalled && (await updateResourcePackSupportPanorama(), panoramaUsesResourePack) if (newState === oldState) return removePanorama() addPanoramaCubeMap() @@ -56,6 +56,7 @@ subscribeKey(resourcePackState, 'resourcePackInstalled', async () => { // Menu panorama background export async function addPanoramaCubeMap () { + if (panoramaCubeMap) return // remove all existing object in the viewer.scene // viewer.scene.children = [] @@ -68,7 +69,7 @@ export async function addPanoramaCubeMap () { const loader = new THREE.TextureLoader() let panorMaterials = [] - await updateResourecePackSupportPanorama() + await updateResourcePackSupportPanorama() for (const file of panoramaFiles) { panorMaterials.push(new THREE.MeshBasicMaterial({ map: loader.load(await possiblyLoadPanoramaFromResourcePack(file)), diff --git a/src/reactUi.jsx b/src/reactUi.jsx index efe49792e..64713aa67 100644 --- a/src/reactUi.jsx +++ b/src/reactUi.jsx @@ -3,59 +3,59 @@ import { renderToDom } from '@zardoy/react-util' import { LeftTouchArea, RightTouchArea, useUsingTouch, useInterfaceState } from '@dimaka/interface' import { css } from '@emotion/css' -import { activeModalStack, isGameActive, miscUiState } from './globalState' // import DeathScreen from './react/DeathScreen' import { useSnapshot } from 'valtio' -import { contro } from './controls' import { QRCodeSVG } from 'qrcode.react' import { createPortal } from 'react-dom' +import { contro } from './controls' +import { activeModalStack, isGameActive, miscUiState } from './globalState' import { options, watchValue } from './optionsStorage' // todo useInterfaceState.setState({ - isFlying: false, - uiCustomization: { - touchButtonSize: 40, - }, - updateCoord: ([coord, state]) => { - const coordToAction = [ - ['z', -1, 'KeyW'], - ['z', 1, 'KeyS'], - ['x', -1, 'KeyA'], - ['x', 1, 'KeyD'], - ['y', 1, 'Space'], // todo jump - ['y', -1, 'ShiftLeft'], // todo jump - ] - // todo refactor - const actionAndState = state !== 0 ? coordToAction.find(([axis, value]) => axis === coord && value === state) : coordToAction.filter(([axis]) => axis === coord) - if (!bot) return - if (state === 0) { - for (const action of actionAndState) { - contro.pressedKeyOrButtonChanged({code: action[2],}, false) - } - } else { - //@ts-ignore - contro.pressedKeyOrButtonChanged({code: actionAndState[2],}, true) - } + isFlying: false, + uiCustomization: { + touchButtonSize: 40, + }, + updateCoord([coord, state]) { + const coordToAction = [ + ['z', -1, 'KeyW'], + ['z', 1, 'KeyS'], + ['x', -1, 'KeyA'], + ['x', 1, 'KeyD'], + ['y', 1, 'Space'], // todo jump + ['y', -1, 'ShiftLeft'], // todo jump + ] + // todo refactor + const actionAndState = state === 0 ? coordToAction.filter(([axis]) => axis === coord) : coordToAction.find(([axis, value]) => axis === coord && value === state) + if (!bot) return + if (state === 0) { + for (const action of actionAndState) { + contro.pressedKeyOrButtonChanged({code: action[2],}, false) + } + } else { + //@ts-expect-error + contro.pressedKeyOrButtonChanged({code: actionAndState[2],}, true) } + } }) watchValue(options, (o) => { - useInterfaceState.setState({ - uiCustomization: { - touchButtonSize: o.touchButtonsSize, - }, - }) + useInterfaceState.setState({ + uiCustomization: { + touchButtonSize: o.touchButtonsSize, + }, + }) }) const TouchControls = () => { - // todo setting - const usingTouch = useUsingTouch() + // todo setting + const usingTouch = useUsingTouch() - if (!usingTouch) return null - return ( -
{ pointer-events: auto; } `} - > - -
- -
- ) + > + +
+ +
+ ) } function useIsBotAvailable() { - const stack = useSnapshot(activeModalStack) + const stack = useSnapshot(activeModalStack) - return isGameActive(false) + return isGameActive(false) } const DisplayQr = () => { - const { currentDisplayQr } = useSnapshot(miscUiState) + const { currentDisplayQr } = useSnapshot(miscUiState) - if (!currentDisplayQr) return null + if (!currentDisplayQr) return null - return createPortal(
{ - miscUiState.currentDisplayQr = null - }} - > - -
, document.body) + return createPortal(
{ + miscUiState.currentDisplayQr = null + }} + > + +
, document.body) } const App = () => { - const isBotAvailable = useIsBotAvailable() - if (!isBotAvailable) return null + const isBotAvailable = useIsBotAvailable() + if (!isBotAvailable) return null - return
- - -
+ return
+ + +
} renderToDom(, { - strictMode: false, - selector: '#react-root', + strictMode: false, + selector: '#react-root', }) diff --git a/src/texturePack.ts b/src/texturePack.ts index 0f54e2961..83a783186 100644 --- a/src/texturePack.ts +++ b/src/texturePack.ts @@ -1,272 +1,272 @@ -import { setLoadingScreenStatus } from './utils' -import blocksFileNames from '../generated/blocks.json' -import JSZip from 'jszip' import { join, dirname } from 'path' import fs from 'fs' -import type { BlockStates } from './inventory' +import JSZip from 'jszip' import type { Viewer } from 'prismarine-viewer/viewer/lib/viewer' -import { removeFileRecursiveAsync } from './browserfs' import { subscribeKey } from 'valtio/utils' -import { showNotification } from './menus/notification' import { proxy, ref } from 'valtio' +import blocksFileNames from '../generated/blocks.json' +import { showNotification } from './menus/notification' +import type { BlockStates } from './inventory' +import { removeFileRecursiveAsync } from './browserfs' +import { setLoadingScreenStatus } from './utils' export const resourcePackState = proxy({ - resourcePackInstalled: false, - currentTexturesDataUrl: undefined as string | undefined, - currentTexturesBlockStates: undefined as BlockStates | undefined, + resourcePackInstalled: false, + currentTexturesDataUrl: undefined as string | undefined, + currentTexturesBlockStates: undefined as BlockStates | undefined, }) function nextPowerOfTwo(n) { - if (n === 0) return 1 - n-- - n |= n >> 1 - n |= n >> 2 - n |= n >> 4 - n |= n >> 8 - n |= n >> 16 - return n + 1 + if (n === 0) return 1 + n-- + n |= n >> 1 + n |= n >> 2 + n |= n >> 4 + n |= n >> 8 + n |= n >> 16 + return n + 1 } const mkdirRecursive = async (path) => { - const parts = path.split('/') - let current = '' - for (const part of parts) { - current += part + '/' - try { - await fs.promises.mkdir(current) - } catch (err) { - } + const parts = path.split('/') + let current = '' + for (const part of parts) { + current += part + '/' + try { + await fs.promises.mkdir(current) + } catch (err) { } + } } const texturePackBasePath = '/userData/resourcePacks/default' export const uninstallTexturePack = async () => { - await removeFileRecursiveAsync(texturePackBasePath) - setCustomTexturePackData(undefined, undefined) + await removeFileRecursiveAsync(texturePackBasePath) + setCustomTexturePackData(undefined, undefined) } export const getResourcePackName = async () => { - // temp - try { - return await fs.promises.readFile(join(texturePackBasePath, 'name.txt'), 'utf8') - } catch (err) { - return '???' - } + // temp + try { + return await fs.promises.readFile(join(texturePackBasePath, 'name.txt'), 'utf8') + } catch (err) { + return '???' + } } export const fromTexturePackPath = (path) => { - return join(texturePackBasePath, path) + return join(texturePackBasePath, path) } export const updateTexturePackInstalledState = async () => { - try { - resourcePackState.resourcePackInstalled = await existsAsync(texturePackBasePath) - } catch { - } + try { + resourcePackState.resourcePackInstalled = await existsAsync(texturePackBasePath) + } catch { + } } export const installTexturePack = async (file: File | ArrayBuffer) => { - try { - await uninstallTexturePack() - } catch (err) { - } - const status = 'Installing resource pack: copying all files' - setLoadingScreenStatus(status) - // extract the zip and write to fs every file in it - const zip = new JSZip() - const zipFile = await zip.loadAsync(file) - if (!zipFile.file('pack.mcmeta')) throw new Error('Not a resource pack: missing pack.mcmeta') - await mkdirRecursive(texturePackBasePath) + try { + await uninstallTexturePack() + } catch (err) { + } + const status = 'Installing resource pack: copying all files' + setLoadingScreenStatus(status) + // extract the zip and write to fs every file in it + const zip = new JSZip() + const zipFile = await zip.loadAsync(file) + if (!zipFile.file('pack.mcmeta')) throw new Error('Not a resource pack: missing pack.mcmeta') + await mkdirRecursive(texturePackBasePath) - const allFilesArr = Object.entries(zipFile.files) - let done = 0 - const upStatus = () => { - setLoadingScreenStatus(`${status} ${Math.round(++done / allFilesArr.length * 100)}%`) - } - await Promise.all(allFilesArr.map(async ([path, file]) => { - const writePath = join(texturePackBasePath, path) - if (path.endsWith('/')) return - await mkdirRecursive(dirname(writePath)) - await fs.promises.writeFile(writePath, Buffer.from(await file.async('arraybuffer'))) - done++ - upStatus() - })) - await fs.promises.writeFile(join(texturePackBasePath, 'name.txt'), file['name'] ?? '??', 'utf8') + const allFilesArr = Object.entries(zipFile.files) + let done = 0 + const upStatus = () => { + setLoadingScreenStatus(`${status} ${Math.round(++done / allFilesArr.length * 100)}%`) + } + await Promise.all(allFilesArr.map(async ([path, file]) => { + const writePath = join(texturePackBasePath, path) + if (path.endsWith('/')) return + await mkdirRecursive(dirname(writePath)) + await fs.promises.writeFile(writePath, Buffer.from(await file.async('arraybuffer'))) + done++ + upStatus() + })) + await fs.promises.writeFile(join(texturePackBasePath, 'name.txt'), file['name'] ?? '??', 'utf8') - if (viewer?.world.active) { - await genTexturePackTextures(viewer.version) - } - setLoadingScreenStatus(undefined) - showNotification({ - message: 'Texturepack installed!', - }) + if (viewer?.world.active) { + await genTexturePackTextures(viewer.version) + } + setLoadingScreenStatus(undefined) + showNotification({ + message: 'Texturepack installed!', + }) } const existsAsync = async (path) => { - try { - await fs.promises.stat(path) - return true - } catch (err) { - return false - } + try { + await fs.promises.stat(path) + return true + } catch (err) { + return false + } } type TextureResolvedData = { - blockSize: number - // itemsUrlContent: string + blockSize: number + // itemsUrlContent: string } const arrEqual = (a: any[], b: any[]) => a.length === b.length && a.every((x) => b.includes(x)) const applyTexturePackData = async (version: string, { blockSize }: TextureResolvedData, blocksUrlContent: string) => { - const result = await fetch(`blocksStates/${version}.json`) - const blockStates: BlockStates = await result.json() - const factor = blockSize / 16 + const result = await fetch(`blocksStates/${version}.json`) + const blockStates: BlockStates = await result.json() + const factor = blockSize / 16 - // this will be refactored with generateTextures refactor - const processObj = (x) => { - if (typeof x !== 'object' || !x) return - if (Array.isArray(x)) { - for (const v of x) { - processObj(v) - } - return - } else { - const actual = Object.keys(x) - const needed = ['u', 'v', 'su', 'sv'] + // this will be refactored with generateTextures refactor + const processObj = (x) => { + if (typeof x !== 'object' || !x) return + if (Array.isArray(x)) { + for (const v of x) { + processObj(v) + } - if (!arrEqual(actual, needed)) { - for (const v of Object.values(x)) { - processObj(v) - } - return - } - for (const k of needed) { - x[k] *= factor - } + } else { + const actual = Object.keys(x) + const needed = ['u', 'v', 'su', 'sv'] + + if (!arrEqual(actual, needed)) { + for (const v of Object.values(x)) { + processObj(v) } + return + } + for (const k of needed) { + x[k] *= factor + } } - processObj(blockStates) - setCustomTexturePackData(blocksUrlContent, blockStates) + } + processObj(blockStates) + setCustomTexturePackData(blocksUrlContent, blockStates) } const setCustomTexturePackData = (blockTextures, blockStates) => { - resourcePackState.currentTexturesBlockStates = blockStates && ref(blockStates) - resourcePackState.currentTexturesDataUrl = blockTextures - resourcePackState.resourcePackInstalled = blockTextures !== undefined + resourcePackState.currentTexturesBlockStates = blockStates && ref(blockStates) + resourcePackState.currentTexturesDataUrl = blockTextures + resourcePackState.resourcePackInstalled = blockTextures !== undefined } const getSizeFromImage = async (filePath: string) => { - const probeImg = new Image() - const file = await fs.promises.readFile(filePath, 'base64') - probeImg.src = `data:image/png;base64,${file}` - await new Promise((resolve, reject) => { - probeImg.onload = resolve - }) - if (probeImg.width !== probeImg.height) throw new Error(`Probe texture ${filePath} is not square`) - return probeImg.width + const probeImg = new Image() + const file = await fs.promises.readFile(filePath, 'base64') + probeImg.src = `data:image/png;base64,${file}` + await new Promise((resolve, reject) => { + probeImg.addEventListener('load', resolve) + }) + if (probeImg.width !== probeImg.height) throw new Error(`Probe texture ${filePath} is not square`) + return probeImg.width } export const genTexturePackTextures = async (version: string) => { - setCustomTexturePackData(undefined, undefined) - let blocksBasePath = '/userData/resourcePacks/default/assets/minecraft/textures/block' - // todo not clear why this is needed - const blocksBasePathAlt = '/userData/resourcePacks/default/assets/minecraft/textures/blocks' - const blocksGenereatedPath = `/userData/resourcePacks/default/${version}.png` - const genereatedPathData = `/userData/resourcePacks/default/${version}.json` - if (await existsAsync(blocksBasePath) === false) { - if (await existsAsync(blocksBasePathAlt) === false) { - return - } else { - blocksBasePath = blocksBasePathAlt - } - } - if (await existsAsync(blocksGenereatedPath) === true) { - applyTexturePackData(version, JSON.parse(await fs.promises.readFile(genereatedPathData, 'utf8')), await fs.promises.readFile(blocksGenereatedPath, 'utf8')) - return + setCustomTexturePackData(undefined, undefined) + let blocksBasePath = '/userData/resourcePacks/default/assets/minecraft/textures/block' + // todo not clear why this is needed + const blocksBasePathAlt = '/userData/resourcePacks/default/assets/minecraft/textures/blocks' + const blocksGenereatedPath = `/userData/resourcePacks/default/${version}.png` + const genereatedPathData = `/userData/resourcePacks/default/${version}.json` + if (!(await existsAsync(blocksBasePath))) { + if (await existsAsync(blocksBasePathAlt)) { + blocksBasePath = blocksBasePathAlt + } else { + return } + } + if (await existsAsync(blocksGenereatedPath)) { + applyTexturePackData(version, JSON.parse(await fs.promises.readFile(genereatedPathData, 'utf8')), await fs.promises.readFile(blocksGenereatedPath, 'utf8')) + return + } - setLoadingScreenStatus('Generating custom textures') + setLoadingScreenStatus('Generating custom textures') - const textureFiles = blocksFileNames.indexes[version].map(k => blocksFileNames.blockNames[k]) - textureFiles.unshift('missing_texture.png') + const textureFiles = blocksFileNames.indexes[version].map(k => blocksFileNames.blockNames[k]) + textureFiles.unshift('missing_texture.png') - const texSize = nextPowerOfTwo(Math.ceil(Math.sqrt(textureFiles.length))) - const originalTileSize = 16 - - const firstBlockFile = (await fs.promises.readdir(blocksBasePath)).find(f => f.endsWith('.png')) - if (!firstBlockFile) { - return - } + const texSize = nextPowerOfTwo(Math.ceil(Math.sqrt(textureFiles.length))) + const originalTileSize = 16 - // we get the size of image from the first block file, which is not ideal but works in 99% cases - const tileSize = await getSizeFromImage(join(blocksBasePath, firstBlockFile)) + const firstBlockFile = (await fs.promises.readdir(blocksBasePath)).find(f => f.endsWith('.png')) + if (!firstBlockFile) { + return + } - const imgSize = texSize * tileSize + // we get the size of image from the first block file, which is not ideal but works in 99% cases + const tileSize = await getSizeFromImage(join(blocksBasePath, firstBlockFile)) - const canvas = document.createElement('canvas') - canvas.width = imgSize - canvas.height = imgSize - const src = `textures/${version}.png` - const ctx = canvas.getContext('2d') - ctx.imageSmoothingEnabled = false - const img = new Image() - img.src = src - await new Promise((resolve, reject) => { - img.onerror = reject - img.onload = resolve - }) - for (const [i, fileName] of textureFiles.entries()) { - const x = (i % texSize) * tileSize - const y = Math.floor(i / texSize) * tileSize - const xOrig = (i % texSize) * originalTileSize - const yOrig = Math.floor(i / texSize) * originalTileSize - let imgCustom: HTMLImageElement - try { - const fileBase64 = await fs.promises.readFile(join(blocksBasePath, fileName), 'base64') - const _imgCustom = new Image() - await new Promise(resolve => { - _imgCustom.onload = () => { - imgCustom = _imgCustom - resolve() - } - _imgCustom.onerror = () => { - console.log('Skipping issued texture', fileName) - resolve() - } - _imgCustom.src = `data:image/png;base64,${fileBase64}` - }) - } catch { - console.log('Skipping not found texture', fileName) - } + const imgSize = texSize * tileSize - if (imgCustom) { - ctx.drawImage(imgCustom, x, y, tileSize, tileSize) - } else { - // todo this involves incorrect mappings for existing textures when the size is different - ctx.drawImage(img, xOrig, yOrig, originalTileSize, originalTileSize, x, y, tileSize, tileSize) + const canvas = document.createElement('canvas') + canvas.width = imgSize + canvas.height = imgSize + const src = `textures/${version}.png` + const ctx = canvas.getContext('2d') + ctx.imageSmoothingEnabled = false + const img = new Image() + img.src = src + await new Promise((resolve, reject) => { + img.onerror = reject + img.addEventListener('load', resolve) + }) + for (const [i, fileName] of textureFiles.entries()) { + const x = (i % texSize) * tileSize + const y = Math.floor(i / texSize) * tileSize + const xOrig = (i % texSize) * originalTileSize + const yOrig = Math.floor(i / texSize) * originalTileSize + let imgCustom: HTMLImageElement + try { + const fileBase64 = await fs.promises.readFile(join(blocksBasePath, fileName), 'base64') + const _imgCustom = new Image() + await new Promise(resolve => { + _imgCustom.addEventListener('load', () => { + imgCustom = _imgCustom + resolve() + }) + _imgCustom.onerror = () => { + console.log('Skipping issued texture', fileName) + resolve() } + _imgCustom.src = `data:image/png;base64,${fileBase64}` + }) + } catch { + console.log('Skipping not found texture', fileName) } - const blockDataUrl = canvas.toDataURL('image/png') - const newData: TextureResolvedData = { - blockSize: tileSize, + + if (imgCustom) { + ctx.drawImage(imgCustom, x, y, tileSize, tileSize) + } else { + // todo this involves incorrect mappings for existing textures when the size is different + ctx.drawImage(img, xOrig, yOrig, originalTileSize, originalTileSize, x, y, tileSize, tileSize) } - await fs.promises.writeFile(genereatedPathData, JSON.stringify(newData), 'utf8') - await fs.promises.writeFile(blocksGenereatedPath, blockDataUrl, 'utf8') - await applyTexturePackData(version, newData, blockDataUrl) + } + const blockDataUrl = canvas.toDataURL('image/png') + const newData: TextureResolvedData = { + blockSize: tileSize, + } + await fs.promises.writeFile(genereatedPathData, JSON.stringify(newData), 'utf8') + await fs.promises.writeFile(blocksGenereatedPath, blockDataUrl, 'utf8') + await applyTexturePackData(version, newData, blockDataUrl) - // const a = document.createElement('a') - // a.href = dataUrl - // a.download = 'pack.png' - // a.click() + // const a = document.createElement('a') + // a.href = dataUrl + // a.download = 'pack.png' + // a.click() } export const watchTexturepackInViewer = (viewer: Viewer) => { - subscribeKey(resourcePackState, 'currentTexturesDataUrl', () => { - console.log('applying resourcepack world data') - viewer.world.texturesDataUrl = resourcePackState.currentTexturesDataUrl - viewer.world.blockStatesData = resourcePackState.currentTexturesBlockStates - if (!viewer?.world.active) return - viewer.world.updateTexturesData() - }) + subscribeKey(resourcePackState, 'currentTexturesDataUrl', () => { + console.log('applying resourcepack world data') + viewer.world.texturesDataUrl = resourcePackState.currentTexturesDataUrl + viewer.world.blockStatesData = resourcePackState.currentTexturesBlockStates + if (!viewer?.world.active) return + viewer.world.updateTexturesData() + }) } diff --git a/src/updateTime.ts b/src/updateTime.ts index 3d871ff5f..6ba296ad9 100644 --- a/src/updateTime.ts +++ b/src/updateTime.ts @@ -2,15 +2,16 @@ export default (bot: import('mineflayer').Bot) => { bot.on('time', () => { // 0 morning const dayTotal = 24_000 - const evening = 12542 / dayTotal - const night = 17843 / dayTotal - const morningStart = 22300 / dayTotal - const morningEnd = 23961 / dayTotal + const evening = 12_542 / dayTotal + const night = 17_843 / dayTotal + const morningStart = 22_300 / dayTotal + const morningEnd = 23_961 / dayTotal const timeProgress = bot.time.time / dayTotal // todo check actual colors const dayColorRainy = { r: 111 / 255, g: 156 / 255, b: 236 / 255 } // todo yes, we should make animations (and rain) + // eslint-disable-next-line unicorn/numeric-separators-style const dayColor = bot.isRaining ? dayColorRainy : { r: 0.6784313725490196, g: 0.8470588235294118, b: 0.9019607843137255 } // lightblue // let newColor = dayColor let int = 1 diff --git a/src/utils.ts b/src/utils.ts index 03e6df790..706f2f638 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,7 +1,7 @@ -import { activeModalStack, hideModal, miscUiState, showModal } from './globalState' -import { notification } from './menus/notification' import * as crypto from 'crypto' import UUID from 'uuid-1345' +import { activeModalStack, hideModal, miscUiState, showModal } from './globalState' +import { notification } from './menus/notification' import { options } from './optionsStorage' import { saveWorld } from './builtinCommands' import { openWorldZip } from './browserfs' @@ -12,7 +12,7 @@ export const goFullscreen = async (doToggle = false) => { // todo display a message or repeat? await document.documentElement.requestFullscreen().catch(() => { }) // request full keyboard access - //@ts-ignore + //@ts-expect-error navigator.keyboard?.lock?.(['Escape', 'KeyW']) } else if (doToggle) { await document.exitFullscreen().catch(() => { }) @@ -43,12 +43,12 @@ export const pointerLock = { if (!(document.fullscreenElement && navigator['keyboard']) && this.justHitEscape) { displayBrowserProblem() } else { - //@ts-ignore + //@ts-expect-error const promise: any = document.documentElement.requestPointerLock({ unadjustedMovement: options.mouseRawInput }) promise?.catch((error) => { - if (error.name === "NotSupportedError") { + if (error.name === 'NotSupportedError') { // Some platforms may not support unadjusted movement, request again a regular pointer lock. document.documentElement.requestPointerLock() } else if (error.name === 'SecurityError') { @@ -68,7 +68,7 @@ window.getScreenRefreshRate = getScreenRefreshRate /** * Allows to obtain the estimated Hz of the primary monitor in the system. */ -export function getScreenRefreshRate(): Promise { +export async function getScreenRefreshRate(): Promise { let requestId = null let callbackTriggered = false let resolve @@ -79,8 +79,8 @@ export function getScreenRefreshRate(): Promise { DOMHighResTimeStampCollection.unshift(DOMHighResTimeStamp) if (DOMHighResTimeStampCollection.length > 10) { - let t0 = DOMHighResTimeStampCollection.pop() - let fps = Math.floor(1000 * 10 / (DOMHighResTimeStamp - t0)) + const t0 = DOMHighResTimeStampCollection.pop() + const fps = Math.floor(1000 * 10 / (DOMHighResTimeStamp - t0)) if (!callbackTriggered) { resolve(fps/* , DOMHighResTimeStampCollection */) @@ -106,11 +106,11 @@ export function getScreenRefreshRate(): Promise { export const getGamemodeNumber = (bot) => { switch (bot.game.gameMode) { - case 'survival': return 0 - case 'creative': return 1 - case 'adventure': return 2 - case 'spectator': return 3 - default: return -1 + case 'survival': return 0 + case 'creative': return 1 + case 'adventure': return 2 + case 'spectator': return 3 + default: return -1 } } @@ -177,9 +177,9 @@ export const loadScript = async function (scriptSrc: string) { scriptElement.src = scriptSrc scriptElement.async = true - scriptElement.onload = () => { + scriptElement.addEventListener('load', () => { resolve(scriptElement) - } + }) scriptElement.onerror = (error) => { reject(error) @@ -191,7 +191,7 @@ export const loadScript = async function (scriptSrc: string) { // doesn't support snapshots export const toMajorVersion = (version) => { - const [a, b] = (version + '').split('.') + const [a, b] = (String(version)).split('.') return `${a}.${b}` } @@ -239,7 +239,7 @@ export const openFilePicker = (specificCase?: 'resourcepack') => { picker.click() } -export const resolveTimeout = (promise, timeout = 10000) => { +export const resolveTimeout = async (promise, timeout = 10_000) => { return new Promise((resolve, reject) => { promise.then(resolve, reject) setTimeout(() => { diff --git a/src/utilsTs.ts b/src/utilsTs.ts index 75cd623a3..5c5f0999e 100644 --- a/src/utilsTs.ts +++ b/src/utilsTs.ts @@ -3,29 +3,25 @@ type Options = boolean | Readonly | undefined function registerListener( element: Readonly | null | undefined, eventType: KD, - // eslint-disable-next-line functional/prefer-immutable-types listener: (this: Document, evt: DocumentEventMap[KD]) => void, options?: Options, ): void function registerListener( element: Readonly | null | undefined, eventType: KH, - // eslint-disable-next-line functional/prefer-immutable-types listener: (this: HTMLElement, evt: HTMLElementEventMap[KH]) => void, options?: Options, ): void function registerListener( element: Readonly | null | undefined, eventType: KW, - // eslint-disable-next-line functional/prefer-immutable-types listener: (this: Window, evt: WindowEventMap[KW]) => void, options?: Options, ): void -//@ts-ignore +//@ts-expect-error function registerListener( element: Readonly | null | undefined, eventType: string, - // eslint-disable-next-line functional/prefer-immutable-types listener: (evt: Event) => void, options?: Options, ): void diff --git a/webpack.common.js b/webpack.common.js deleted file mode 100644 index 0d4308685..000000000 --- a/webpack.common.js +++ /dev/null @@ -1,127 +0,0 @@ -const webpack = require('webpack') -const path = require('path') -const CopyPlugin = require('copy-webpack-plugin') -const HtmlWebpackPlugin = require('html-webpack-plugin') -// https://webpack.js.org/guides/production/ - -/** @type {import('webpack').Configuration} */ -const config = { - entry: path.resolve(__dirname, './src/index.js'), - output: { - path: path.resolve(__dirname, './dist'), - filename: './[name].js', - publicPath: './', - hotUpdateChunkFilename: 'hot/hot-update.[name].js', - hotUpdateMainFilename: 'hot/hot-update.json' - }, - resolve: { - alias: { - 'browserfs$': 'browserfs/dist/browserfs.mjs', - 'bfsGlobal': 'browserfs', - 'fs': 'browserfs/dist/shims/fs.js', - 'buffer': 'browserfs/dist/shims/buffer.js', - 'path': 'browserfs/dist/shims/path.js', - buffer: require.resolve('buffer/'), - - 'minecraft-protocol$': path.resolve( - __dirname, - 'node_modules/minecraft-protocol/src/index.js' - ), // Hack to allow creating the client in a browser - express: false, - net: 'net-browserify', - 'valtio$': require.resolve('./valtio.js'), - 'valtio/vanilla$': require.resolve('./valtio.js'), - 'valtio/utils$': require.resolve('./valtio.js'), - jose: false - }, - fallback: { - jose: false, - zlib: require.resolve('browserify-zlib'), - stream: require.resolve('stream-browserify'), - buffer: require.resolve('buffer/'), - events: require.resolve('events/'), - assert: require.resolve('assert/'), - crypto: require.resolve('crypto-browserify'), - path: require.resolve('path-browserify'), - constants: require.resolve('constants-browserify'), - os: require.resolve('os-browserify/browser'), - http: require.resolve('http-browserify'), - https: require.resolve('https-browserify'), - timers: require.resolve('timers-browserify'), - child_process: false, - tls: false, - perf_hooks: path.resolve(__dirname, 'src/perf_hooks_replacement.js'), - dns: path.resolve(__dirname, 'src/dns.js') - }, - extensions: [ - '.js', - '.ts', - '.json', - '.jsx', - '.tsx' - ], - }, - module: { - rules: [ - { - test: /\.(tsx?)|(jsx)$/, - loader: 'esbuild-loader', - // options: { - // // JavaScript version to compile to - // target: 'es2015' - // } - }, - { - test: /\.(png|jpg|gif|svg)$/i, - use: [ - { - loader: 'url-loader', - options: { - limit: true, - }, - }, - ], - }, - { - test: /\.css$/i, - use: ["style-loader", { - loader: 'css-loader', - options: { url: false } - }], - }, - ], - parser: { - javascript: { - commonjsMagicComments: true, - }, - }, - }, - plugins: [ - new HtmlWebpackPlugin({ - template: 'index.html', - // adding hash will make stop service worker from caching! - hash: process.argv.includes('webpack.prod.js') ? false : true, - minify: false, - chunks: ['main', 'vendors'], - }), - new webpack.ProvidePlugin({ - process: 'process/browser.js', - BrowserFS: 'bfsGlobal', - Buffer: ['buffer', 'Buffer'] - }), - // new webpack.ProvidePlugin({ - // Buffer: ['buffer', 'Buffer'] - // }), - new webpack.NormalModuleReplacementPlugin( - /prismarine-viewer[/|\\]viewer[/|\\]lib[/|\\]utils/, - './utils.web.js' - ), - new CopyPlugin({ - patterns: [ - { from: path.join(__dirname, 'src/styles.css'), to: './index.css' }, - ] - }) - ] -} - -module.exports = config diff --git a/webpack.dev.js b/webpack.dev.js deleted file mode 100644 index 4ec0913b7..000000000 --- a/webpack.dev.js +++ /dev/null @@ -1,51 +0,0 @@ -const { merge } = require('webpack-merge') -const common = require('./webpack.common.js') -const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin') - -/** @type {import('webpack-dev-server').Configuration['rel']} */ -module.exports = merge(common, - /** @type {import('webpack').Configuration} */ - { - mode: 'development', - devtool: 'inline-source-map', - cache: true, - // experiments: { - // cacheUnaffected: true, - // }, - devServer: { - // contentBase: path.resolve(__dirname, './public'), - compress: true, - // inline: true, - // open: true, - hot: true, - // liveReload: true, - devMiddleware: { - writeToDisk: true, - }, - port: 8081, - }, - optimization: { - splitChunks: { - chunks: 'all', - maxAsyncRequests: 10, - maxInitialRequests: 10, - cacheGroups: { - minecraftData: { - test: /[\\/]node_modules[\\/]minecraft-data[\\/]/, - name: "minecraftData", - priority: 15, - chunks: 'all' - }, - vendors: { - test: /[\\/]node_modules[\\/]/, - name: "vendors", - priority: 10, - chunks: 'all' - } - } - } - }, - plugins: [ - new ReactRefreshWebpackPlugin() - ], - }) diff --git a/webpack.prod.js b/webpack.prod.js deleted file mode 100644 index d1f41f692..000000000 --- a/webpack.prod.js +++ /dev/null @@ -1,51 +0,0 @@ -const { merge } = require('webpack-merge') -const common = require('./webpack.common.js') -const { EsbuildPlugin } = require('esbuild-loader') - -const LodashModuleReplacementPlugin = require('lodash-webpack-plugin') -const WorkboxPlugin = require('workbox-webpack-plugin') -const webpack = require('webpack') -const fs = require('fs') -const CopyPlugin = require('copy-webpack-plugin') -const { webpackFilesToCopy, getSwAdditionalEntries } = require('./scripts/build.js') - -const buildingVersion = new Date().toISOString().split(':')[0] -fs.writeFileSync('public/version.txt', buildingVersion, 'utf-8') - -module.exports = merge(common, { - output: { - filename: './[name].js', - }, - mode: 'production', - optimization: { - minimizer: [ - new EsbuildPlugin({ - // would be better to use 2019 with polyfilling bigints (disabling them?) - target: 'es2021' // Syntax to transpile to (see options below for possible values) - }) - ] - }, - devtool: 'source-map', - plugins: [ - new webpack.optimize.ModuleConcatenationPlugin(), - new LodashModuleReplacementPlugin(), - new WorkboxPlugin.GenerateSW({ - // these options encourage the ServiceWorkers to get in there fast - // and not allow any straggling "old" SWs to hang around - clientsClaim: true, - skipWaiting: true, - maximumFileSizeToCacheInBytes: 35_000_000, // todo will be lowered - additionalManifestEntries: getSwAdditionalEntries(), - exclude: [/\.map$/, 'version.txt'] - }), - // new CopyPlugin({ - // patterns: webpackFilesToCopy - // }), - new webpack.DefinePlugin({ - // get from github actions or vercel env - 'process.env.BUILD_VERSION': JSON.stringify(buildingVersion), - 'process.env.GITHUB_URL': - JSON.stringify(`https://github.com/${process.env.GITHUB_REPOSITORY || `${process.env.VERCEL_GIT_REPO_OWNER}/${process.env.VERCEL_GIT_REPO_SLUG}`}`) - }) - ], -})