diff --git a/.github/workflows/reviewdog.yml b/.github/workflows/reviewdog.yml index ffcb5a8567..844a3ed3ed 100644 --- a/.github/workflows/reviewdog.yml +++ b/.github/workflows/reviewdog.yml @@ -6,8 +6,8 @@ env: NODE_VERSION: "22.x" jobs: - eslint: - name: runner / eslint + biome: + name: runner / Biome runs-on: ubuntu-latest permissions: contents: read @@ -33,9 +33,8 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - uses: reviewdog/action-eslint@v1.34.0 + - uses: mongolyy/reviewdog-action-biome@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-review # Change reporter. - eslint_flags: './src' fail_level: error diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index c6ce9c54f4..0000000000 --- a/.prettierrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "tabWidth": 2, - "useTabs": false, - "singleQuote": true, - "trailingComma": "all", - "quoteProps": "consistent" -} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000000..699ed73319 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["biomejs.biome"] +} diff --git a/README.md b/README.md index d7aebd4a85..cc19ba8878 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![GitHub release](https://img.shields.io/github/release/pear-devs/pear-desktop.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/releases/) [![GitHub license](https://img.shields.io/github/license/pear-devs/pear-desktop.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/license) -[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/eslint.config.mjs) +[![Formatted with Biome](https://img.shields.io/badge/Formatted_with-Biome-60a5fa?style=for-the-badge&logo=biome)](https://biomejs.dev/) [![Build status](https://img.shields.io/github/actions/workflow/status/pear-devs/pear-desktop/build.yml?branch=master&style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/) [![GitHub All Releases](https://img.shields.io/github/downloads/pear-devs/pear-desktop/total?style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/) diff --git a/biome.jsonc b/biome.jsonc new file mode 100644 index 0000000000..0d18127c71 --- /dev/null +++ b/biome.jsonc @@ -0,0 +1,243 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.2.5/schema.json", + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true + }, + "files": { + "ignoreUnknown": false + }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "space", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 80, + "attributePosition": "auto", + "bracketSameLine": false, + "bracketSpacing": true, + "expand": "auto", + "useEditorconfig": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": false, + "complexity": { + "noAdjacentSpacesInRegex": "error", + "noExtraBooleanCast": "error", + "noUselessCatch": "error", + "noUselessEscapeInRegex": "error", + "noUselessThisAlias": "error", + "noUselessTypeConstraint": "error", + "noVoid": "error", + "useArrowFunction": "off" + }, + "correctness": { + "noConstAssign": "error", + "noConstantCondition": "error", + "noEmptyCharacterClassInRegex": "error", + "noEmptyPattern": "error", + "noGlobalObjectCalls": "error", + "noInvalidBuiltinInstantiation": "error", + "noInvalidConstructorSuper": "error", + "noNonoctalDecimalEscape": "error", + "noPrecisionLoss": "error", + "noSelfAssign": "error", + "noSetterReturn": "error", + "noSwitchDeclarations": "error", + "noUndeclaredVariables": "error", + "noUnreachable": "error", + "noUnreachableSuper": "error", + "noUnsafeFinally": "error", + "noUnsafeOptionalChaining": "error", + "noUnusedLabels": "error", + "noUnusedPrivateClassMembers": "error", + "noUnusedVariables": "error", + "useIsNan": "error", + "useValidForDirection": "error", + "useValidTypeof": "error", + "useYield": "error" + }, + "nursery": { + "noFloatingPromises": "off", + "noMisusedPromises": "off", + "noNonNullAssertedOptionalChain": "off", + "noUnusedExpressions": "off", + "useConsistentArrowReturn": "off" + }, + "style": { + "noCommonJs": "error", + "noNamespace": "warn", + "noNonNullAssertion": "off", + "useArrayLiterals": "error", + "useAsConstAssertion": "error", + "useBlockStatements": "off", + "useImportType": { + "level": "error", + "options": { + "style": "inlineType" + } + }, + "useThrowOnlyError": "off" + }, + "suspicious": { + "noAssignInExpressions": "warn", + "noAsyncPromiseExecutor": "error", + "noCatchAssign": "error", + "noClassAssign": "error", + "noCompareNegZero": "error", + "noConstantBinaryExpressions": "error", + "noControlCharactersInRegex": "error", + "noDebugger": "error", + "noDuplicateCase": "error", + "noDuplicateClassMembers": "error", + "noDuplicateElseIf": "error", + "noDuplicateObjectKeys": "error", + "noDuplicateParameters": "error", + "noEmptyBlockStatements": "warn", + "noExplicitAny": "error", + "noExtraNonNullAssertion": "error", + "noFallthroughSwitchClause": "error", + "noFunctionAssign": "error", + "noGlobalAssign": "error", + "noImportAssign": "error", + "noIrregularWhitespace": "error", + "noMisleadingCharacterClass": "error", + "noMisleadingInstantiator": "error", + "noPrototypeBuiltins": "error", + "noRedeclare": "error", + "noShadowRestrictedNames": "error", + "noSparseArray": "error", + "noTsIgnore": "error", + "noUnsafeDeclarationMerging": "error", + "noUnsafeNegation": "error", + "noUselessRegexBackrefs": "error", + "noWith": "error", + "useAwait": "error", + "useGetterReturn": "error", + "useNamespaceKeyword": "error" + } + }, + "includes": [ + "**", + "!dist", + "!node_modules", + "!*.config.*js", + "!*.test.*js" + ] + }, + "javascript": { + "formatter": { + "jsxQuoteStyle": "double", + "quoteProperties": "asNeeded", + "trailingCommas": "all", + "semicolons": "always", + "arrowParentheses": "always", + "bracketSameLine": false, + "quoteStyle": "single", + "attributePosition": "auto", + "bracketSpacing": true + }, + "globals": [] + }, + "html": { + "formatter": { + "selfCloseVoidElements": "always" + } + }, + "overrides": [ + { + "includes": [ + "**/*.ts", + "**/*.tsx", + "**/*.mts", + "**/*.cts" + ], + "linter": { + "rules": { + "complexity": { + "noArguments": "error" + }, + "correctness": { + "noConstAssign": "off", + "noGlobalObjectCalls": "off", + "noInvalidBuiltinInstantiation": "off", + "noInvalidConstructorSuper": "off", + "noSetterReturn": "off", + "noUndeclaredVariables": "off", + "noUnreachable": "off", + "noUnreachableSuper": "off" + }, + "style": { + "useConst": "error" + }, + "suspicious": { + "noClassAssign": "off", + "noDuplicateClassMembers": "off", + "noDuplicateObjectKeys": "off", + "noDuplicateParameters": "off", + "noFunctionAssign": "off", + "noImportAssign": "off", + "noRedeclare": "off", + "noUnsafeNegation": "off", + "noVar": "error", + "noWith": "off", + "useGetterReturn": "off" + } + } + } + }, + { + "includes": [ + "**/*.ts", + "**/*.tsx", + "**/*.mts", + "**/*.cts" + ], + "linter": { + "rules": { + "complexity": { + "noArguments": "error" + }, + "correctness": { + "noConstAssign": "off", + "noGlobalObjectCalls": "off", + "noInvalidBuiltinInstantiation": "off", + "noInvalidConstructorSuper": "off", + "noSetterReturn": "off", + "noUndeclaredVariables": "off", + "noUnreachable": "off", + "noUnreachableSuper": "off" + }, + "style": { + "useConst": "error" + }, + "suspicious": { + "noClassAssign": "off", + "noDuplicateClassMembers": "off", + "noDuplicateObjectKeys": "off", + "noDuplicateParameters": "off", + "noFunctionAssign": "off", + "noImportAssign": "off", + "noRedeclare": "off", + "noUnsafeNegation": "off", + "noVar": "error", + "noWith": "off", + "useGetterReturn": "off" + } + } + } + } + ], + "assist": { + "enabled": true, + "actions": { + "source": { + "organizeImports": "on" + } + } + } +} \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs deleted file mode 100644 index 2586a7811f..0000000000 --- a/eslint.config.mjs +++ /dev/null @@ -1,90 +0,0 @@ -//@ts-check - -import eslint from '@eslint/js'; -import prettier from 'eslint-plugin-prettier/recommended'; -import solid from 'eslint-plugin-solid/configs/recommended'; -import stylistic from '@stylistic/eslint-plugin'; -import tsEslint from 'typescript-eslint'; - -import * as importPlugin from 'eslint-plugin-import'; - -export default tsEslint.config( - eslint.configs.recommended, - tsEslint.configs.eslintRecommended, - ...tsEslint.configs.recommendedTypeChecked, - prettier, - solid, - { ignores: ['dist', 'node_modules', '*.config.*js', '*.test.*js'] }, - { - plugins: { - stylistic, - importPlugin - }, - languageOptions: { - parser: tsEslint.parser, - parserOptions: { - project: true, - sourceType: 'module', - ecmaVersion: 'latest' - } - }, - rules: { - 'stylistic/arrow-parens': ['error', 'always'], - 'stylistic/object-curly-spacing': ['error', 'always'], - 'stylistic/jsx-pascal-case': 'error', - 'stylistic/jsx-curly-spacing': ['error', { when: 'never', children: true }], - 'stylistic/jsx-sort-props': 'error', - 'prettier/prettier': ['error', { singleQuote: true, semi: true, tabWidth: 2, trailingComma: 'all', quoteProps: 'preserve' }], - '@typescript-eslint/no-floating-promises': 'off', - '@typescript-eslint/no-misused-promises': ['off', { checksVoidReturn: false }], - '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }], - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/consistent-type-imports': ['error', { - fixStyle: 'inline-type-imports', - prefer: 'type-imports', - disallowTypeAnnotations: false, - }], - 'importPlugin/first': 'error', - 'importPlugin/newline-after-import': 'off', - 'importPlugin/no-default-export': 'off', - 'importPlugin/no-duplicates': 'error', - 'importPlugin/no-unresolved': ['error', { ignore: ['^virtual:', '\\?inline$', '\\?raw$', '\\?asset&asarUnpack'] }], - 'importPlugin/order': ['error', { - 'groups': ['builtin', 'external', ['internal', 'index', 'sibling'], 'parent', 'type'], - 'newlines-between': 'always-and-inside-groups', - 'alphabetize': { order: 'ignore', caseInsensitive: false } - }], - 'importPlugin/prefer-default-export': 'off', - 'camelcase': ['error', { properties: 'never' }], - 'class-methods-use-this': 'off', - 'stylistic/lines-around-comment': ['error', { - beforeBlockComment: false, - afterBlockComment: false, - beforeLineComment: false, - afterLineComment: false, - }], - 'stylistic/max-len': 'off', - 'stylistic/no-mixed-operators': 'warn', // prettier does not support no-mixed-operators - 'stylistic/no-multi-spaces': ['error', { ignoreEOLComments: true }], - 'stylistic/no-tabs': 'error', - 'no-void': 'error', - 'no-empty': 'off', - 'prefer-promise-reject-errors': 'off', - 'stylistic/quotes': ['error', 'single', { - avoidEscape: true, - allowTemplateLiterals: false, - }], - 'stylistic/quote-props': ['error', 'consistent'], - 'stylistic/semi': ['error', 'always'], - }, - settings: { - 'import/parsers': { - '@typescript-eslint/parser': ['.ts'] - }, - 'import/resolver': { - typescript: {}, - exports: {}, - }, - }, - }, -); diff --git a/package.json b/package.json index e209028fd4..0161d7af5f 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,10 @@ "dist:mac:arm64": "pnpm clean && pnpm build && pnpm electron-builder --mac dmg:arm64 -p never", "dist:win": "pnpm clean && pnpm build && pnpm electron-builder --win -p never", "dist:win:x64": "pnpm clean && pnpm build && pnpm electron-builder --win nsis-web:x64 -p never", - "lint": "pnpm eslint ./src", + "lint": "pnpm exec biome lint ./src", + "lint:fix": "pnpm exec biome lint --write ./src", + "format": "pnpm exec biome format ./src", + "format:fix": "pnpm exec biome format --write ./src", "changelog": "pnpm dlx auto-changelog", "release:linux": "pnpm clean && pnpm build && pnpm electron-builder --linux -p always -c.snap.publish=github", "release:mac": "pnpm clean && pnpm build && pnpm electron-builder --mac -p always", @@ -136,11 +139,10 @@ "zod": "4.1.5" }, "devDependencies": { + "@biomejs/biome": "2.2.5", "@electron-toolkit/tsconfig": "1.0.1", - "@eslint/js": "9.35.0", "@malept/flatpak-bundler": "0.4.0", "@playwright/test": "1.55.0", - "@stylistic/eslint-plugin": "5.3.1", "@total-typescript/ts-reset": "0.6.1", "@types/electron-localshortcut": "3.1.3", "@types/howler": "2.2.12", @@ -157,19 +159,11 @@ "electron-builder-squirrel-windows": "26.0.12", "electron-devtools-installer": "4.0.0", "electron-vite": "4.0.0", - "eslint": "9.35.0", - "eslint-config-prettier": "10.1.8", - "eslint-import-resolver-exports": "1.0.0-beta.5", - "eslint-import-resolver-typescript": "4.4.4", - "eslint-plugin-import": "2.32.0", - "eslint-plugin-prettier": "5.5.4", - "eslint-plugin-solid": "0.14.5", "glob": "11.0.3", "node-gyp": "11.4.2", "playwright": "1.55.0", "ts-morph": "27.0.0", "typescript": "5.9.2", - "typescript-eslint": "8.43.0", "utf-8-validate": "6.0.5", "vite": "npm:rolldown-vite@7.1.8", "vite-plugin-inspect": "11.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 60535de66f..8ec2dda09d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -236,7 +236,7 @@ importers: version: 1.3.4 virtua: specifier: 0.42.3 - version: 0.42.3(solid-js@1.9.9) + version: 0.42.3(react-dom@18.3.1(react@17.0.2))(react@17.0.2)(solid-js@1.9.9) vudio: specifier: 2.1.1 version: 2.1.1(patch_hash=0e06c2ed11c02bdc490c209fa80070e98517c2735c641f5738b6e15d7dc1959d) @@ -250,18 +250,15 @@ importers: specifier: 4.1.5 version: 4.1.5 devDependencies: - '@eslint/js': - specifier: 9.35.0 - version: 9.35.0 + '@biomejs/biome': + specifier: 2.2.5 + version: 2.2.5 '@malept/flatpak-bundler': specifier: 0.4.0 version: 0.4.0(patch_hash=c787371eeb2af011ea934e8818a0dad6d7dcb2df31bbb1686babc7231af0183c) '@playwright/test': specifier: 1.55.0 version: 1.55.0 - '@stylistic/eslint-plugin': - specifier: 5.3.1 - version: 5.3.1(eslint@9.35.0) '@total-typescript/ts-reset': specifier: 0.6.1 version: 0.6.1 @@ -310,27 +307,6 @@ importers: electron-vite: specifier: 4.0.0 version: 4.0.0(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)) - eslint: - specifier: 9.35.0 - version: 9.35.0 - eslint-config-prettier: - specifier: 10.1.8 - version: 10.1.8(eslint@9.35.0) - eslint-import-resolver-exports: - specifier: 1.0.0-beta.5 - version: 1.0.0-beta.5(eslint-plugin-import@2.32.0)(eslint@9.35.0) - eslint-import-resolver-typescript: - specifier: 4.4.4 - version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0) - eslint-plugin-import: - specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0) - eslint-plugin-prettier: - specifier: 5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0))(eslint@9.35.0)(prettier@3.6.2) - eslint-plugin-solid: - specifier: 0.14.5 - version: 0.14.5(eslint@9.35.0)(typescript@5.9.2) glob: specifier: 11.0.3 version: 11.0.3 @@ -346,9 +322,6 @@ importers: typescript: specifier: 5.9.2 version: 5.9.2 - typescript-eslint: - specifier: 8.43.0 - version: 8.43.0(eslint@9.35.0)(typescript@5.9.2) utf-8-validate: specifier: 6.0.5 version: 6.0.5 @@ -476,6 +449,59 @@ packages: resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} + '@biomejs/biome@2.2.5': + resolution: {integrity: sha512-zcIi+163Rc3HtyHbEO7CjeHq8DjQRs40HsGbW6vx2WI0tg8mYQOPouhvHSyEnCBAorfYNnKdR64/IxO7xQ5faw==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@2.2.5': + resolution: {integrity: sha512-MYT+nZ38wEIWVcL5xLyOhYQQ7nlWD0b/4mgATW2c8dvq7R4OQjt/XGXFkXrmtWmQofaIM14L7V8qIz/M+bx5QQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@2.2.5': + resolution: {integrity: sha512-FLIEl73fv0R7dI10EnEiZLw+IMz3mWLnF95ASDI0kbx6DDLJjWxE5JxxBfmG+udz1hIDd3fr5wsuP7nwuTRdAg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@2.2.5': + resolution: {integrity: sha512-5Ov2wgAFwqDvQiESnu7b9ufD1faRa+40uwrohgBopeY84El2TnBDoMNXx6iuQdreoFGjwW8vH6k68G21EpNERw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@2.2.5': + resolution: {integrity: sha512-5DjiiDfHqGgR2MS9D+AZ8kOfrzTGqLKywn8hoXpXXlJXIECGQ32t+gt/uiS2XyGBM2XQhR6ztUvbjZWeccFMoQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@2.2.5': + resolution: {integrity: sha512-AVqLCDb/6K7aPNIcxHaTQj01sl1m989CJIQFQEaiQkGr2EQwyOpaATJ473h+nXDUuAcREhccfRpe/tu+0wu0eQ==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@2.2.5': + resolution: {integrity: sha512-fq9meKm1AEXeAWan3uCg6XSP5ObA6F/Ovm89TwaMiy1DNIwdgxPkNwxlXJX8iM6oRbFysYeGnT0OG8diCWb9ew==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@2.2.5': + resolution: {integrity: sha512-xaOIad4wBambwJa6mdp1FigYSIF9i7PCqRbvBqtIi9y29QtPVQ13sDGtUnsRoe6SjL10auMzQ6YAe+B3RpZXVg==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@2.2.5': + resolution: {integrity: sha512-F/jhuXCssPFAuciMhHKk00xnCAxJRS/pUzVfXYmOMUp//XW7mO6QeCjsjvnm8L4AO/dG2VOB0O+fJPiJ2uXtIw==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + '@bufbuild/protobuf@2.6.3': resolution: {integrity: sha512-w/gJKME9mYN7ZoUAmSMAWXk4hkVpxRKvEJCb3dV5g9wwWdxTJJ0ayOJAVcNxtdqaxDyFuC0uz4RSGVacJ030PQ==} @@ -728,44 +754,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.8.0': - resolution: {integrity: sha512-MJQFqrZgcW0UNYLGOuQpey/oTN59vyWwplvCGZztn1cKz9agZPPYpJB7h2OMmuu7VLqkvEjN8feFZJmxNF9D+Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.21.0': - resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.3.1': - resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.15.2': - resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.35.0': - resolution: {integrity: sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.3.5': - resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ffmpeg.wasm/core-mt@0.12.0': resolution: {integrity: sha512-M9pjL7JQX4AYl3WI8vGcPGPTz/O7JmhW8ac/fHA3oXTxoRAPwYSY/OsY1N9C0XahIM0+fxa1QSLN9Ekz8sBM/Q==} @@ -841,26 +829,6 @@ packages: hono: '>=3.9.0' zod: ^3.25.0 || ^4.0.0 - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -1023,9 +991,6 @@ packages: resolution: {integrity: sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@napi-rs/wasm-runtime@1.0.3': resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} @@ -1073,10 +1038,6 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.55.0': resolution: {integrity: sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==} engines: {node: '>=18'} @@ -1189,9 +1150,6 @@ packages: '@rolldown/pluginutils@1.0.0-beta.36': resolution: {integrity: sha512-qa+gfzhv0/Xv52zZInENLu6JbsnSjSExD7kTaNm7Qn5LUIH6IQb7l9pB+NrsU5/Bvt9aqcBTdRGc7x1DYMTiqQ==} - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@sapphire/async-queue@1.5.5': resolution: {integrity: sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} @@ -1230,12 +1188,6 @@ packages: peerDependencies: solid-js: ^1.6.12 - '@stylistic/eslint-plugin@5.3.1': - resolution: {integrity: sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=9.0.0' - '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} @@ -1277,9 +1229,6 @@ packages: '@types/electron-localshortcut@3.1.3': resolution: {integrity: sha512-D+CRdDTRZ4/9UmcSaZ5qvW4uq2VyyVmqsH9cdNReB4CL6MSIgyhr9w2PKeNEb0J/ZS7db7irJM/+ZiA5uSQsLw==} - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/fs-extra@9.0.13': resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} @@ -1292,12 +1241,6 @@ packages: '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} @@ -1337,197 +1280,6 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.43.0': - resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.43.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/parser@8.43.0': - resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/project-service@8.42.0': - resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/project-service@8.43.0': - resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/scope-manager@8.42.0': - resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.43.0': - resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.42.0': - resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/tsconfig-utils@8.43.0': - resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/type-utils@8.43.0': - resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/types@8.42.0': - resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.43.0': - resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.42.0': - resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/typescript-estree@8.43.0': - resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/utils@8.42.0': - resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/utils@8.43.0': - resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/visitor-keys@8.42.0': - resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.43.0': - resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} - cpu: [arm] - os: [android] - - '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} - cpu: [arm64] - os: [android] - - '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} - cpu: [arm64] - os: [darwin] - - '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} - cpu: [x64] - os: [darwin] - - '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} - cpu: [x64] - os: [freebsd] - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} - cpu: [arm64] - os: [linux] - - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} - cpu: [arm64] - os: [linux] - - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} - cpu: [ppc64] - os: [linux] - - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} - cpu: [riscv64] - os: [linux] - - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} - cpu: [riscv64] - os: [linux] - - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} - cpu: [s390x] - os: [linux] - - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} - cpu: [x64] - os: [linux] - - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} - cpu: [x64] - os: [linux] - - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} - cpu: [arm64] - os: [win32] - - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} - cpu: [ia32] - os: [win32] - - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} - cpu: [x64] - os: [win32] - '@vladfrangu/async_event_emitter@2.4.6': resolution: {integrity: sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} @@ -1554,11 +1306,6 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -1651,26 +1398,6 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} @@ -1683,10 +1410,6 @@ packages: resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} engines: {node: '>=0.12.0'} - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - async-mutex@0.5.0: resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} @@ -1852,10 +1575,6 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} @@ -2043,18 +1762,6 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - debounce-fn@6.0.0: resolution: {integrity: sha512-rBMW+F2TXryBwB54Q0d8drNEI+TfoS9JpNTAoVpukbWEhjXQq4rySFYLaqXMFXwdv61Zb2OHtj5bviSoimqxRQ==} engines: {node: '>=18'} @@ -2067,14 +1774,6 @@ packages: supports-color: optional: true - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -2096,9 +1795,6 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - deepmerge-ts@7.1.5: resolution: {integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==} engines: {node: '>=16.0.0'} @@ -2173,10 +1869,6 @@ packages: os: [darwin] hasBin: true - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -2332,10 +2024,6 @@ packages: error-stack-parser-es@1.0.5: resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} - engines: {node: '>= 0.4'} - es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -2358,14 +2046,6 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} - - es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} - es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} @@ -2386,137 +2066,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-prettier@10.1.8: - resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-import-context@0.1.9: - resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - peerDependencies: - unrs-resolver: ^1.0.0 - peerDependenciesMeta: - unrs-resolver: - optional: true - - eslint-import-resolver-exports@1.0.0-beta.5: - resolution: {integrity: sha512-o6t0w7muUpXr7MkUVzD5igQoDfAQvTmcPp8HEAJdNF8eOuAO+yn6I/TTyMxz9ecCwzX7e02vzlkHURoScUuidg==} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-import-resolver-typescript@4.4.4: - resolution: {integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==} - engines: {node: ^16.17.0 || >=18.6.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-module-utils@2.12.1: - resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} - 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 - - eslint-plugin-import@2.32.0: - resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-prettier@5.5.4: - resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - - eslint-plugin-solid@0.14.5: - resolution: {integrity: sha512-nfuYK09ah5aJG/oEN6P1qziy1zLgW4PDWe75VNPi4CEFYk1x2AEqwFeQfEPR7gNn0F2jOeqKhx2E+5oNCOBYWQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - typescript: '>=4.8.4' - - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.35.0: - resolution: {integrity: sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - event-stream@4.0.1: resolution: {integrity: sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==} @@ -2560,9 +2109,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-equals@5.2.2: resolution: {integrity: sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==} engines: {node: '>=6.0.0'} @@ -2574,9 +2120,6 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -2602,10 +2145,6 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - file-type@16.5.4: resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} engines: {node: '>=10'} @@ -2625,17 +2164,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} @@ -2699,10 +2227,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} @@ -2730,13 +2254,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.10.1: - resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} - gifwrap@0.10.1: resolution: {integrity: sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==} @@ -2744,10 +2261,6 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -2770,10 +2283,6 @@ packages: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} engines: {node: '>=10.0'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -2798,9 +2307,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - hanja@1.1.5: resolution: {integrity: sha512-gKNEkX+IIBmxXUIm5Lf859YlvHnGD01kbiHL+7CoV1ZxGI+EttflD1k/Ntz8zbymMVIlVELunTk8pK5SNYOVlg==} @@ -2819,10 +2325,6 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -2853,10 +2355,6 @@ packages: html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} - html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - html-to-text@9.0.5: resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} engines: {node: '>=14'} @@ -2918,10 +2416,6 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - ignore@7.0.5: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} @@ -2932,10 +2426,6 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -2957,9 +2447,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -2976,10 +2463,6 @@ packages: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} - is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - is-bigint@1.1.0: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} @@ -2988,9 +2471,6 @@ packages: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} - is-bun-module@2.0.0: - resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -2999,14 +2479,6 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - is-date-object@1.1.0: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} @@ -3025,26 +2497,14 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-html@2.0.0: - resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==} - engines: {node: '>=8'} - is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -3061,10 +2521,6 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -3109,10 +2565,6 @@ packages: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -3124,10 +2576,6 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - is-weakset@2.0.4: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} @@ -3214,16 +2662,9 @@ packages: json-schema-typed@8.0.1: resolution: {integrity: sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg==} - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -3238,9 +2679,6 @@ packages: jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - kebab-case@1.0.2: - resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} - keyboardevent-from-electron-accelerator@2.0.0: resolution: {integrity: sha512-iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA==} @@ -3250,9 +2688,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - known-css-properties@0.30.0: - resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} - kuromoji@0.1.2: resolution: {integrity: sha512-V0dUf+C2LpcPEXhoHLMAop/bOht16Dyr+mDiIE39yX3vqau7p80De/koFqpiTcL1zzdZlc3xuHZ8u5gjYRfFaQ==} @@ -3272,10 +2707,6 @@ packages: leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - lib-esm@0.4.2: resolution: {integrity: sha512-VGqaEGuryUbT7FLGxXg46nrSzkhLzyk+JQjYoYEORH5UtdIu3yf6DCOqh65FOR3bWOHHGINQH/vR5YGGIFBgJw==} @@ -3346,10 +2777,6 @@ packages: resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -3360,9 +2787,6 @@ packages: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -3373,6 +2797,10 @@ packages: long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} @@ -3580,14 +3008,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.3.3: - resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.4: resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} @@ -3654,6 +3074,10 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -3670,18 +3094,6 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} @@ -3706,10 +3118,6 @@ packages: openapi3-ts@4.5.0: resolution: {integrity: sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==} - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -3718,10 +3126,6 @@ packages: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -3730,10 +3134,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -3748,10 +3148,6 @@ packages: pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - parse-bmfont-ascii@1.0.6: resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} @@ -3770,10 +3166,6 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -3785,9 +3177,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -3884,19 +3273,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} - engines: {node: '>=14'} - hasBin: true - proc-log@2.0.1: resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -3950,6 +3326,15 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react@17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + read-binary-file-arch@1.0.6: resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} hasBin: true @@ -3969,10 +3354,6 @@ packages: resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} engines: {node: '>=8'} - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -4002,22 +3383,6 @@ packages: resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} @@ -4099,20 +3464,12 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -4126,6 +3483,9 @@ packages: sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + sdp@3.2.1: resolution: {integrity: sha512-lwsAIzOPlH8/7IIjjz3K0zYBk7aBVVcvjMwt3M4fLxpjMYyy7i3I97SLHebgn4YBjirkzfp3RvRDWSKsh/+WFw==} @@ -4182,10 +3542,6 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -4317,10 +3673,6 @@ packages: resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - stable-hash-x@0.2.0: - resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} - engines: {node: '>=12.0.0'} - stat-mode@1.0.0: resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} engines: {node: '>= 6'} @@ -4340,18 +3692,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -4366,10 +3706,6 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -4378,10 +3714,6 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - strtok3@6.3.0: resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} engines: {node: '>=10'} @@ -4389,9 +3721,6 @@ packages: stubborn-fs@1.2.5: resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} - style-to-object@1.0.9: - resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} - sumchecker@3.0.1: resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} engines: {node: '>= 8.0'} @@ -4400,14 +3729,6 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} - engines: {node: ^14.18.0 || >=16.0.0} - tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -4479,25 +3800,12 @@ packages: truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - ts-morph@27.0.0: resolution: {integrity: sha512-xcqelpTR5PCuZMs54qp9DE3t7tPgA2v/P1/qdW4ke5b3Y5liTGTYj6a/twT35EQW/H5okRqp1UOqwNlgg0K0eQ==} - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} @@ -4510,29 +3818,6 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - - typescript-eslint@8.43.0: - resolution: {integrity: sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - typescript@5.9.2: resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} @@ -4542,10 +3827,6 @@ packages: resolution: {integrity: sha512-+NWHrac9dvilNgme+gP4YrBSumsaMZP0fNBtXXFIf33RLLKEcBUKaQZ7ULUbS0sBfcjxIZ4V96OTRkCbM7hxpw==} engines: {node: '>=18'} - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -4588,9 +3869,6 @@ packages: resolution: {integrity: sha512-JLoggz+PvLVMJo+jZt97hdIIIZ2yTzGgft9e9q8iMrC4ewufl62ekeW7mixBghonn2gVb/ICjyvlmOCUBnJLQg==} engines: {node: '>=20.19.0'} - unrs-resolver@1.11.1: - resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - unzip-crx-3@0.2.0: resolution: {integrity: sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ==} @@ -4720,10 +3998,6 @@ packages: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - which-collection@1.0.2: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} @@ -4746,10 +4020,6 @@ packages: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -4978,6 +4248,41 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@biomejs/biome@2.2.5': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.2.5 + '@biomejs/cli-darwin-x64': 2.2.5 + '@biomejs/cli-linux-arm64': 2.2.5 + '@biomejs/cli-linux-arm64-musl': 2.2.5 + '@biomejs/cli-linux-x64': 2.2.5 + '@biomejs/cli-linux-x64-musl': 2.2.5 + '@biomejs/cli-win32-arm64': 2.2.5 + '@biomejs/cli-win32-x64': 2.2.5 + + '@biomejs/cli-darwin-arm64@2.2.5': + optional: true + + '@biomejs/cli-darwin-x64@2.2.5': + optional: true + + '@biomejs/cli-linux-arm64-musl@2.2.5': + optional: true + + '@biomejs/cli-linux-arm64@2.2.5': + optional: true + + '@biomejs/cli-linux-x64-musl@2.2.5': + optional: true + + '@biomejs/cli-linux-x64@2.2.5': + optional: true + + '@biomejs/cli-win32-arm64@2.2.5': + optional: true + + '@biomejs/cli-win32-x64@2.2.5': + optional: true + '@bufbuild/protobuf@2.6.3': {} '@dehoist/romanize-thai@1.0.0': {} @@ -5222,50 +4527,6 @@ snapshots: '@esbuild/win32-x64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.8.0(eslint@9.35.0)': - dependencies: - eslint: 9.35.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.21.0': - dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.1 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.3.1': {} - - '@eslint/core@0.15.2': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.1': - dependencies: - ajv: 6.12.6 - debug: 4.4.1 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.35.0': {} - - '@eslint/object-schema@2.1.6': {} - - '@eslint/plugin-kit@0.3.5': - dependencies: - '@eslint/core': 0.15.2 - levn: 0.4.1 - '@ffmpeg.wasm/core-mt@0.12.0': {} '@ffmpeg.wasm/main@0.12.0': @@ -5351,19 +4612,6 @@ snapshots: hono: 4.9.6 zod: 4.1.5 - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.3': {} - '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -5621,13 +4869,6 @@ snapshots: '@msgpack/msgpack@2.8.0': {} - '@napi-rs/wasm-runtime@0.2.12': - dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 - '@tybys/wasm-util': 0.10.0 - optional: true - '@napi-rs/wasm-runtime@1.0.3': dependencies: '@emnapi/core': 1.4.5 @@ -5680,8 +4921,6 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.2.9': {} - '@playwright/test@1.55.0': dependencies: playwright: 1.55.0 @@ -5751,8 +4990,6 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.36': {} - '@rtsao/scc@1.1.0': {} - '@sapphire/async-queue@1.5.5': {} '@sapphire/snowflake@3.5.5': {} @@ -5781,16 +5018,6 @@ snapshots: dependencies: solid-js: 1.9.9 - '@stylistic/eslint-plugin@5.3.1(eslint@9.35.0)': - dependencies: - '@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0) - '@typescript-eslint/types': 8.42.0 - eslint: 9.35.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - estraverse: 5.3.0 - picomatch: 4.0.3 - '@szmarczak/http-timer@4.0.6': dependencies: defer-to-connect: 2.0.1 @@ -5850,8 +5077,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@types/estree@1.0.8': {} - '@types/fs-extra@9.0.13': dependencies: '@types/node': 24.3.0 @@ -5862,10 +5087,6 @@ snapshots: '@types/http-cache-semantics@4.0.4': {} - '@types/json-schema@7.0.15': {} - - '@types/json5@0.0.29': {} - '@types/keyv@3.1.4': dependencies: '@types/node': 24.3.0 @@ -5910,266 +5131,58 @@ snapshots: '@types/node': 24.3.0 optional: true - '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.43.0 - eslint: 9.35.0 - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color + '@vladfrangu/async_event_emitter@2.4.6': {} - '@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2)': + '@xhayper/discord-rpc@1.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.43.0 - debug: 4.4.1 - eslint: 9.35.0 - typescript: 5.9.2 + '@discordjs/rest': 2.5.1 + '@vladfrangu/async_event_emitter': 2.4.6 + discord-api-types: 0.38.23 + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - - supports-color + - bufferutil + - utf-8-validate - '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) - '@typescript-eslint/types': 8.42.0 - debug: 4.4.1 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color + '@xmldom/xmldom@0.8.11': {} - '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - debug: 4.4.1 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color + '@zeit/schemas@2.36.0': {} - '@typescript-eslint/scope-manager@8.42.0': - dependencies: - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/visitor-keys': 8.42.0 + abbrev@1.1.1: {} - '@typescript-eslint/scope-manager@8.43.0': - dependencies: - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/visitor-keys': 8.43.0 + abbrev@3.0.1: {} - '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)': + abort-controller@3.0.0: dependencies: - typescript: 5.9.2 + event-target-shim: 5.0.1 - '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': - dependencies: - typescript: 5.9.2 + acorn@8.15.0: {} - '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0)(typescript@5.9.2)': + agent-base@6.0.2: dependencies: - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2) debug: 4.4.1 - eslint: 9.35.0 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.42.0': {} - - '@typescript-eslint/types@8.43.0': {} - - '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)': - dependencies: - '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/visitor-keys': 8.42.0 - debug: 4.4.1 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color + agent-base@7.1.4: {} - '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': + agentkeepalive@4.6.0: dependencies: - '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/visitor-keys': 8.43.0 - debug: 4.4.1 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color + humanize-ms: 1.2.1 - '@typescript-eslint/utils@8.42.0(eslint@9.35.0)(typescript@5.9.2)': + aggregate-error@3.1.0: dependencies: - '@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0) - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - eslint: 9.35.0 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color + clean-stack: 2.2.0 + indent-string: 4.0.0 - '@typescript-eslint/utils@8.43.0(eslint@9.35.0)(typescript@5.9.2)': - dependencies: - '@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - eslint: 9.35.0 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color + ajv-formats@3.0.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 - '@typescript-eslint/visitor-keys@8.42.0': + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: - '@typescript-eslint/types': 8.42.0 - eslint-visitor-keys: 4.2.1 + ajv: 6.12.6 - '@typescript-eslint/visitor-keys@8.43.0': - dependencies: - '@typescript-eslint/types': 8.43.0 - eslint-visitor-keys: 4.2.1 - - '@unrs/resolver-binding-android-arm-eabi@1.11.1': - optional: true - - '@unrs/resolver-binding-android-arm64@1.11.1': - optional: true - - '@unrs/resolver-binding-darwin-arm64@1.11.1': - optional: true - - '@unrs/resolver-binding-darwin-x64@1.11.1': - optional: true - - '@unrs/resolver-binding-freebsd-x64@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - optional: true - - '@unrs/resolver-binding-linux-x64-musl@1.11.1': - optional: true - - '@unrs/resolver-binding-wasm32-wasi@1.11.1': - dependencies: - '@napi-rs/wasm-runtime': 0.2.12 - optional: true - - '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - optional: true - - '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - optional: true - - '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - optional: true - - '@vladfrangu/async_event_emitter@2.4.6': {} - - '@xhayper/discord-rpc@1.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': - dependencies: - '@discordjs/rest': 2.5.1 - '@vladfrangu/async_event_emitter': 2.4.6 - discord-api-types: 0.38.23 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@xmldom/xmldom@0.8.11': {} - - '@zeit/schemas@2.36.0': {} - - abbrev@1.1.1: {} - - abbrev@3.0.1: {} - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - acorn-jsx@5.3.2(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn@8.15.0: {} - - agent-base@6.0.2: - dependencies: - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - - agent-base@7.1.4: {} - - agentkeepalive@4.6.0: - dependencies: - humanize-ms: 1.2.1 - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - ajv-formats@3.0.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - ajv@6.12.6: + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -6262,51 +5275,6 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-includes@3.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - math-intrinsics: 1.1.0 - - array.prototype.findlastindex@1.2.6: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - - array.prototype.flat@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-shim-unscopables: 1.1.0 - - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-shim-unscopables: 1.1.0 - - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - assert-plus@1.0.0: optional: true @@ -6315,8 +5283,6 @@ snapshots: async-exit-hook@2.0.1: {} - async-function@1.0.0: {} - async-mutex@0.5.0: dependencies: tslib: 2.8.1 @@ -6551,8 +5517,6 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - callsites@3.1.0: {} - camelcase@7.0.1: {} caniuse-lite@1.0.30001735: {} @@ -6733,24 +5697,6 @@ snapshots: data-uri-to-buffer@4.0.1: {} - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - debounce-fn@6.0.0: dependencies: mimic-function: 5.0.1 @@ -6759,10 +5705,6 @@ snapshots: dependencies: ms: 2.0.0 - debug@3.2.7: - dependencies: - ms: 2.1.3 - debug@4.4.1: dependencies: ms: 2.1.3 @@ -6794,8 +5736,6 @@ snapshots: deep-extend@0.6.0: {} - deep-is@0.1.4: {} - deepmerge-ts@7.1.5: {} deepmerge@4.3.1: {} @@ -6884,10 +5824,6 @@ snapshots: verror: 1.10.1 optional: true - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -7094,63 +6030,6 @@ snapshots: error-stack-parser-es@1.0.5: {} - es-abstract@1.24.0: - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-negative-zero: 2.0.3 - is-regex: 1.2.1 - is-set: 2.0.3 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 - es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -7180,16 +6059,6 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - es-shim-unscopables@1.1.0: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.3.0: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - es6-error@4.1.1: optional: true @@ -7224,179 +6093,11 @@ snapshots: escalade@3.2.0: {} - escape-string-regexp@4.0.0: {} + escape-string-regexp@4.0.0: + optional: true escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.35.0): - dependencies: - eslint: 9.35.0 - - eslint-import-context@0.1.9(unrs-resolver@1.11.1): - dependencies: - get-tsconfig: 4.10.1 - stable-hash-x: 0.2.0 - optionalDependencies: - unrs-resolver: 1.11.1 - - eslint-import-resolver-exports@1.0.0-beta.5(eslint-plugin-import@2.32.0)(eslint@9.35.0): - dependencies: - eslint: 9.35.0 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0) - resolve.exports: 2.0.3 - - eslint-import-resolver-node@0.3.9: - dependencies: - debug: 3.2.7 - is-core-module: 2.16.1 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0): - dependencies: - debug: 4.4.1 - eslint: 9.35.0 - eslint-import-context: 0.1.9(unrs-resolver@1.11.1) - get-tsconfig: 4.10.1 - is-bun-module: 2.0.0 - stable-hash-x: 0.2.0 - tinyglobby: 0.2.14 - unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2) - eslint: 9.35.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0) - transitivePeerDependencies: - - supports-color - - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.35.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0))(eslint@9.35.0)(prettier@3.6.2): - dependencies: - eslint: 9.35.0 - prettier: 3.6.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.11 - optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@9.35.0) - - eslint-plugin-solid@0.14.5(eslint@9.35.0)(typescript@5.9.2): - dependencies: - '@typescript-eslint/utils': 8.42.0(eslint@9.35.0)(typescript@5.9.2) - eslint: 9.35.0 - estraverse: 5.3.0 - is-html: 2.0.0 - kebab-case: 1.0.2 - known-css-properties: 0.30.0 - style-to-object: 1.0.9 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - - eslint@9.35.0: - dependencies: - '@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.1 - '@eslint/core': 0.15.2 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.35.0 - '@eslint/plugin-kit': 0.3.5 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.1 - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - transitivePeerDependencies: - - supports-color - - espree@10.4.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - esutils@2.0.3: {} - event-stream@4.0.1: dependencies: duplexer: 0.1.2 @@ -7448,8 +6149,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-diff@1.3.0: {} - fast-equals@5.2.2: {} fast-glob@3.3.3: @@ -7462,8 +6161,6 @@ snapshots: fast-json-stable-stringify@2.1.0: {} - fast-levenshtein@2.0.6: {} - fast-uri@3.0.6: {} fastq@1.19.1: @@ -7485,10 +6182,6 @@ snapshots: fflate@0.8.2: {} - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - file-type@16.5.4(patch_hash=fa6e3546c096bc3579fd83808c2dfac1a64546eb2ce096bf838076bda630baf5): dependencies: readable-web-to-node-stream: 3.0.4 @@ -7509,18 +6202,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - - flatted@3.3.3: {} - for-each@0.3.5: dependencies: is-callable: 1.2.7 @@ -7594,15 +6275,6 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.8: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.2 - is-callable: 1.2.7 - functions-have-names@1.2.3: {} gensync@1.0.0-beta.2: {} @@ -7633,16 +6305,6 @@ snapshots: get-stream@6.0.1: {} - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - - get-tsconfig@4.10.1: - dependencies: - resolve-pkg-maps: 1.0.0 - gifwrap@0.10.1: dependencies: image-q: 4.0.0 @@ -7652,10 +6314,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - glob@10.4.5: dependencies: foreground-child: 3.3.1 @@ -7701,12 +6359,11 @@ snapshots: serialize-error: 7.0.1 optional: true - globals@14.0.0: {} - globalthis@1.0.4: dependencies: define-properties: 1.2.1 gopd: 1.2.0 + optional: true globby@14.1.0: dependencies: @@ -7739,8 +6396,6 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - hanja@1.1.5: {} happy-dom@18.0.1: @@ -7757,10 +6412,6 @@ snapshots: dependencies: es-define-property: 1.0.1 - has-proto@1.2.0: - dependencies: - dunder-proto: 1.0.1 - has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -7783,8 +6434,6 @@ snapshots: html-entities@2.3.3: {} - html-tags@3.3.1: {} - html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 @@ -7864,8 +6513,6 @@ snapshots: ieee754@1.2.1: {} - ignore@5.3.2: {} - ignore@7.0.5: {} image-q@4.0.0: @@ -7874,11 +6521,6 @@ snapshots: immediate@3.0.6: {} - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -7894,8 +6536,6 @@ snapshots: ini@1.3.8: {} - inline-style-parser@0.2.4: {} - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -7915,14 +6555,6 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 - is-async-function@2.1.1: - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - is-bigint@1.1.0: dependencies: has-bigints: 1.1.0 @@ -7932,26 +6564,12 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-bun-module@2.0.0: - dependencies: - semver: 7.7.2 - is-callable@1.2.7: {} is-ci@3.0.1: dependencies: ci-info: 3.9.0 - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - is-date-object@1.1.0: dependencies: call-bound: 1.0.4 @@ -7963,27 +6581,12 @@ snapshots: is-extglob@2.1.1: {} - is-finalizationregistry@1.1.1: - dependencies: - call-bound: 1.0.4 - is-fullwidth-code-point@3.0.0: {} - is-generator-function@1.1.0: - dependencies: - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-html@2.0.0: - dependencies: - html-tags: 3.3.1 - is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -7994,8 +6597,6 @@ snapshots: is-map@2.0.3: {} - is-negative-zero@2.0.3: {} - is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -8035,20 +6636,12 @@ snapshots: has-symbols: 1.1.0 safe-regex-test: 1.1.0 - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.19 - is-unicode-supported@0.1.0: {} is-url@1.2.4: {} is-weakmap@2.0.2: {} - is-weakref@1.1.1: - dependencies: - call-bound: 1.0.4 - is-weakset@2.0.4: dependencies: call-bound: 1.0.4 @@ -8146,15 +6739,9 @@ snapshots: json-schema-typed@8.0.1: {} - json-stable-stringify-without-jsonify@1.0.1: {} - json-stringify-safe@5.0.1: optional: true - json5@1.0.2: - dependencies: - minimist: 1.2.8 - json5@2.2.3: {} jsonfile@4.0.0: @@ -8174,8 +6761,6 @@ snapshots: readable-stream: 2.3.8 setimmediate: 1.0.5 - kebab-case@1.0.2: {} - keyboardevent-from-electron-accelerator@2.0.0: {} keyboardevents-areequal@0.2.2: {} @@ -8184,8 +6769,6 @@ snapshots: dependencies: json-buffer: 3.0.1 - known-css-properties@0.30.0: {} - kuromoji@0.1.2(patch_hash=4a948f1ea45c61779fa371feb020253ccf7a24e1f7c6b2e250b3ce53d86216d4): dependencies: async: 2.6.4 @@ -8206,11 +6789,6 @@ snapshots: leac@0.6.0: {} - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - lib-esm@0.4.2: {} lie@3.3.0: @@ -8262,18 +6840,12 @@ snapshots: lightningcss-win32-arm64-msvc: 1.30.1 lightningcss-win32-x64-msvc: 1.30.1 - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - lodash.debounce@4.0.8: {} lodash.escaperegexp@4.1.2: {} lodash.isequal@4.5.0: {} - lodash.merge@4.6.2: {} - lodash@4.17.21: {} log-symbols@4.1.0: @@ -8283,6 +6855,11 @@ snapshots: long@4.0.0: {} + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + optional: true + lowercase-keys@2.0.0: {} lru-cache@10.4.3: {} @@ -8480,10 +7057,6 @@ snapshots: nanoid@3.3.11: {} - napi-postinstall@0.3.3: {} - - natural-compare@1.4.0: {} - negotiator@0.6.4: {} negotiator@1.0.0: {} @@ -8553,6 +7126,9 @@ snapshots: dependencies: boolbase: 1.0.0 + object-assign@4.1.1: + optional: true + object-inspect@1.13.4: {} object-is@1.1.6: @@ -8571,26 +7147,6 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - - object.values@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - ohash@2.0.11: {} omggif@1.0.10: {} @@ -8616,15 +7172,6 @@ snapshots: dependencies: yaml: 2.8.1 - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - ora@5.4.1: dependencies: bl: 4.1.0 @@ -8639,22 +7186,12 @@ snapshots: os-homedir@1.0.2: {} - own-keys@1.0.1: - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - p-cancelable@2.1.1: {} p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - p-map@4.0.0: dependencies: aggregate-error: 3.1.0 @@ -8665,10 +7202,6 @@ snapshots: pako@1.0.11: {} - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - parse-bmfont-ascii@1.0.6: {} parse-bmfont-binary@1.0.6: {} @@ -8689,16 +7222,12 @@ snapshots: path-browserify@1.0.1: {} - path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} path-is-inside@1.0.2: {} path-key@3.1.1: {} - path-parse@1.0.7: {} - path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -8779,14 +7308,6 @@ snapshots: commander: 9.5.0 optional: true - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier@3.6.2: {} - proc-log@2.0.1: {} proc-log@5.0.0: {} @@ -8824,6 +7345,19 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 + react-dom@18.3.1(react@17.0.2): + dependencies: + loose-envify: 1.4.0 + react: 17.0.2 + scheduler: 0.23.2 + optional: true + + react@17.0.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + optional: true + read-binary-file-arch@1.0.6: dependencies: debug: 4.4.1 @@ -8858,17 +7392,6 @@ snapshots: dependencies: readable-stream: 4.7.0 - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - regenerator-runtime@0.13.11: {} regexp.prototype.flags@1.5.4: @@ -8899,18 +7422,6 @@ snapshots: resolve-alpn@1.2.1: {} - resolve-from@4.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve.exports@2.0.3: {} - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - responselike@2.0.1: dependencies: lowercase-keys: 2.0.0 @@ -8984,23 +7495,10 @@ snapshots: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.3: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - safe-regex-test@1.1.0: dependencies: call-bound: 1.0.4 @@ -9015,6 +7513,11 @@ snapshots: sax@1.4.1: {} + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + optional: true + sdp@3.2.1: {} selderee@0.11.0: @@ -9087,12 +7590,6 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - setimmediate@1.0.5: {} shebang-command@2.0.0: @@ -9240,8 +7737,6 @@ snapshots: dependencies: minipass: 3.3.6 - stable-hash-x@0.2.0: {} - stat-mode@1.0.0: {} stop-iteration-iterator@1.1.0: @@ -9266,29 +7761,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.trim@1.2.10: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - - string.prototype.trimend@1.0.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -9305,14 +7777,10 @@ snapshots: dependencies: ansi-regex: 6.1.0 - strip-bom@3.0.0: {} - strip-final-newline@2.0.0: {} strip-json-comments@2.0.1: {} - strip-json-comments@3.1.1: {} - strtok3@6.3.0: dependencies: '@tokenizer/token': 0.3.0 @@ -9320,10 +7788,6 @@ snapshots: stubborn-fs@1.2.5: {} - style-to-object@1.0.9: - dependencies: - inline-style-parser: 0.2.4 - sumchecker@3.0.1: dependencies: debug: 4.4.1 @@ -9334,12 +7798,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} - - synckit@0.11.11: - dependencies: - '@pkgr/core': 0.2.9 - tar@6.2.1: dependencies: chownr: 2.0.0 @@ -9419,28 +7877,13 @@ snapshots: dependencies: utf8-byte-length: 1.0.5 - ts-api-utils@2.1.0(typescript@5.9.2): - dependencies: - typescript: 5.9.2 - ts-morph@27.0.0: dependencies: '@ts-morph/common': 0.28.0 code-block-writer: 13.0.3 - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - tslib@2.8.1: {} - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - type-fest@0.13.1: optional: true @@ -9448,61 +7891,10 @@ snapshots: type-fest@4.41.0: {} - typed-array-buffer@1.0.3: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - - typed-array-byte-length@1.0.3: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - typed-array-byte-offset@1.0.4: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - typed-array-length@1.0.7: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - - typescript-eslint@8.43.0(eslint@9.35.0)(typescript@5.9.2): - dependencies: - '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2) - eslint: 9.35.0 - typescript: 5.9.2 - transitivePeerDependencies: - - supports-color - typescript@5.9.2: {} uint8array-extras@1.4.1: {} - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - undici-types@6.21.0: {} undici-types@7.10.0: {} @@ -9536,30 +7928,6 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.3 - unrs-resolver@1.11.1: - dependencies: - napi-postinstall: 0.3.3 - optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.11.1 - '@unrs/resolver-binding-android-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-arm64': 1.11.1 - '@unrs/resolver-binding-darwin-x64': 1.11.1 - '@unrs/resolver-binding-freebsd-x64': 1.11.1 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 - '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 - '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 - '@unrs/resolver-binding-linux-x64-musl': 1.11.1 - '@unrs/resolver-binding-wasm32-wasi': 1.11.1 - '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 - '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 - '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - unzip-crx-3@0.2.0: dependencies: jszip: 3.10.1 @@ -9606,8 +7974,10 @@ snapshots: extsprintf: 1.4.1 optional: true - virtua@0.42.3(solid-js@1.9.9): + virtua@0.42.3(react-dom@18.3.1(react@17.0.2))(react@17.0.2)(solid-js@1.9.9): optionalDependencies: + react: 17.0.2 + react-dom: 18.3.1(react@17.0.2) solid-js: 1.9.9 vite-dev-rpc@1.1.0(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)): @@ -9680,22 +8050,6 @@ snapshots: is-string: 1.1.1 is-symbol: 1.1.1 - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.19 - which-collection@1.0.2: dependencies: is-map: 2.0.3 @@ -9725,8 +8079,6 @@ snapshots: dependencies: string-width: 5.1.2 - word-wrap@1.2.5: {} - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 diff --git a/src/config/store.ts b/src/config/store.ts index 253b298ab7..5ce9889f79 100644 --- a/src/config/store.ts +++ b/src/config/store.ts @@ -1,10 +1,7 @@ import Store from 'electron-store'; - -import { defaultConfig as defaults } from './defaults'; - import { DefaultPresetList, type Preset } from '@/plugins/downloader/types'; - -import type { SyncedLyricsPluginConfig } from '@/plugins/synced-lyrics/types'; +import { type SyncedLyricsPluginConfig } from '@/plugins/synced-lyrics/types'; +import { defaultConfig as defaults } from './defaults'; export type IStore = InstanceType< typeof import('conf').default> @@ -231,7 +228,7 @@ const migrations = { } // Include custom options - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: Plugin configurations have dynamic structures that vary by plugin type const plugins: Record = { adblocker: { enabled: true, @@ -246,7 +243,6 @@ const migrations = { }; for (const enabledPlugin of enabledPlugins) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment plugins[enabledPlugin] = { ...plugins[enabledPlugin], enabled: true, diff --git a/src/index.ts b/src/index.ts index a46e33fed9..5ee798415e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,65 +1,54 @@ +import fs from 'node:fs'; import path from 'node:path'; import url from 'node:url'; -import fs from 'node:fs'; - +import { languageResources } from 'virtual:i18n'; +import { allPlugins, mainPlugins } from 'virtual:plugins'; +import ErrorHtmlAsset from '@assets/error.html?asset'; +import enhanceWebRequest, { + type BetterSession, +} from '@jellybrick/electron-better-web-request'; +import { deepmerge } from 'deepmerge-ts'; import { - BrowserWindow, app, - screen, - globalShortcut, - session, - shell, + BrowserWindow, + type BrowserWindowConstructorOptions, dialog, + globalShortcut, ipcMain, protocol, - type BrowserWindowConstructorOptions, + screen, + session, + shell, } from 'electron'; -import enhanceWebRequest, { - type BetterSession, -} from '@jellybrick/electron-better-web-request'; +import electronDebug from 'electron-debug'; import is from 'electron-is'; import unhandled from 'electron-unhandled'; import { autoUpdater } from 'electron-updater'; -import electronDebug from 'electron-debug'; -import { parse } from 'node-html-parser'; -import { deepmerge } from 'deepmerge-ts'; import { deepEqual } from 'fast-equals'; - -import { allPlugins, mainPlugins } from 'virtual:plugins'; - -import { languageResources } from 'virtual:i18n'; - +import { parse } from 'node-html-parser'; import * as config from '@/config'; - +import { loadI18n, setLanguage, t } from '@/i18n'; +import { + forceLoadMainPlugin, + forceUnloadMainPlugin, + getAllLoadedMainPlugins, + loadAllMainPlugins, +} from '@/loader/main'; import { refreshMenu, setApplicationMenu } from '@/menu'; +import { defaultAuthProxyConfig } from '@/plugins/auth-proxy-adapter/config'; import { fileExists, injectCSS, injectCSSAsFile } from '@/plugins/utils/main'; -import { isTesting } from '@/utils/testing'; -import { setUpTray } from '@/tray'; -import { setupSongInfo } from '@/providers/song-info'; import { restart, setupAppControls } from '@/providers/app-controls'; import { APP_PROTOCOL, handleProtocol, setupProtocolHandler, } from '@/providers/protocol-handler'; - -import youtubeMusicCSS from '@/youtube-music.css?inline'; - -import { - forceLoadMainPlugin, - forceUnloadMainPlugin, - getAllLoadedMainPlugins, - loadAllMainPlugins, -} from '@/loader/main'; - +import { setupSongInfo } from '@/providers/song-info'; +import { setUpTray } from '@/tray'; +import { type PluginConfig } from '@/types/plugins'; import { LoggerPrefix } from '@/utils'; -import { loadI18n, setLanguage, t } from '@/i18n'; - -import ErrorHtmlAsset from '@assets/error.html?asset'; - -import { defaultAuthProxyConfig } from '@/plugins/auth-proxy-adapter/config'; - -import type { PluginConfig } from '@/types/plugins'; +import { isTesting } from '@/utils/testing'; +import youtubeMusicCSS from '@/youtube-music.css?inline'; // Catch errors and log them unhandled({ @@ -684,7 +673,6 @@ app.whenReady().then(async () => { shortcutDetails.target !== appLocation || shortcutDetails.appUserModelId !== appID ) { - // eslint-disable-next-line @typescript-eslint/only-throw-error throw 'needUpdate'; } } catch (error) { @@ -943,7 +931,9 @@ function removeContentSecurityPolicy( !details.responseHeaders['access-control-allow-origin'] && !details.responseHeaders['Access-Control-Allow-Origin'] ) { - details.responseHeaders['access-control-allow-origin'] = ['https://music.youtube.com']; + details.responseHeaders['access-control-allow-origin'] = [ + 'https://music.youtube.com', + ]; } } @@ -953,6 +943,7 @@ function removeContentSecurityPolicy( // When multiple listeners are defined, apply them all betterSession.webRequest.setResolver( 'onHeadersReceived', + // biome-ignore lint/suspicious/useAwait: Async function required by setResolver API signature even though no await is used async (listeners) => { return listeners.reduce( async (accumulator, listener) => { diff --git a/src/loader/main.ts b/src/loader/main.ts index c6202e7c66..531f89eb1b 100644 --- a/src/loader/main.ts +++ b/src/loader/main.ts @@ -1,15 +1,14 @@ -import { type BrowserWindow, ipcMain } from 'electron'; +import { allPlugins, mainPlugins } from 'virtual:plugins'; import { deepmerge } from 'deepmerge-ts'; -import { allPlugins, mainPlugins } from 'virtual:plugins'; +import { type BrowserWindow, ipcMain } from 'electron'; import * as config from '@/config'; -import { LoggerPrefix, startPlugin, stopPlugin } from '@/utils'; - import { t } from '@/i18n'; +import { type BackendContext } from '@/types/contexts'; -import type { PluginConfig, PluginDef } from '@/types/plugins'; -import type { BackendContext } from '@/types/contexts'; +import { type PluginConfig, type PluginDef } from '@/types/plugins'; +import { LoggerPrefix, startPlugin, stopPlugin } from '@/utils'; const loadedPluginMap: Record< string, @@ -38,12 +37,10 @@ const createContext = ( win.webContents.send(event, ...args); }, handle: (event: string, listener: CallableFunction) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call ipcMain.handle(event, (_, ...args: unknown[]) => listener(...args)); }, on: (event: string, listener: CallableFunction) => { ipcMain.on(event, (_, ...args: unknown[]) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-call listener(...args); }); }, diff --git a/src/loader/renderer.ts b/src/loader/renderer.ts index 8ca76b0225..388c2a4871 100644 --- a/src/loader/renderer.ts +++ b/src/loader/renderer.ts @@ -1,13 +1,9 @@ -import { deepmerge } from 'deepmerge-ts'; - import { rendererPlugins } from 'virtual:plugins'; - -import { LoggerPrefix, startPlugin, stopPlugin } from '@/utils'; - +import { deepmerge } from 'deepmerge-ts'; import { t } from '@/i18n'; - -import type { RendererContext } from '@/types/contexts'; -import type { PluginConfig, PluginDef } from '@/types/plugins'; +import { type RendererContext } from '@/types/contexts'; +import { type PluginConfig, type PluginDef } from '@/types/plugins'; +import { LoggerPrefix, startPlugin, stopPlugin } from '@/utils'; const unregisterStyleMap: Record void)[]> = {}; const loadedPluginMap: Record< @@ -31,7 +27,6 @@ export const createContext = ( window.ipcRenderer.invoke(event, ...args), on: (event: string, listener: CallableFunction) => { window.ipcRenderer.on(event, (_, ...args: unknown[]) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-call listener(...args); }); }, diff --git a/src/navigation.d.ts b/src/navigation.d.ts index c2912a2ab8..d94cc5a506 100644 --- a/src/navigation.d.ts +++ b/src/navigation.d.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ +/** biome-ignore-all lint/suspicious/noExplicitAny: Type definitions for experimental Navigation API use 'any' to match browser API specification */ interface NavigationOptions { info: any; diff --git a/src/plugins/api-server/backend/main.ts b/src/plugins/api-server/backend/main.ts index ae05d9247c..9690e2f843 100644 --- a/src/plugins/api-server/backend/main.ts +++ b/src/plugins/api-server/backend/main.ts @@ -1,24 +1,23 @@ -import { jwt } from 'hono/jwt'; -import { OpenAPIHono as Hono } from '@hono/zod-openapi'; -import { cors } from 'hono/cors'; -import { swaggerUI } from '@hono/swagger-ui'; +/** biome-ignore-all lint/suspicious/noAssignInExpressions: Hono framework patterns use assignment expressions in conditionals for concise route handling */ + import { serve } from '@hono/node-server'; import { createNodeWebSocket } from '@hono/node-ws'; +import { swaggerUI } from '@hono/swagger-ui'; +import { OpenAPIHono as Hono } from '@hono/zod-openapi'; +import { cors } from 'hono/cors'; +import { jwt } from 'hono/jwt'; import { registerCallback } from '@/providers/song-info'; +import { + type LikeType, + type RepeatMode, + type VolumeState, +} from '@/types/datahost-get-state'; import { createBackend } from '@/utils'; - -import { JWTPayloadSchema } from './scheme'; -import { registerAuth, registerControl, registerWebsocket } from './routes'; - import { type APIServerConfig, AuthStrategy } from '../config'; - -import type { BackendType } from './types'; -import type { - LikeType, - RepeatMode, - VolumeState, -} from '@/types/datahost-get-state'; +import { registerAuth, registerControl, registerWebsocket } from './routes'; +import { JWTPayloadSchema } from './scheme'; +import { type BackendType } from './types'; export const backend = createBackend({ async start(ctx) { diff --git a/src/plugins/api-server/backend/routes/websocket.ts b/src/plugins/api-server/backend/routes/websocket.ts index dc744b4fb0..9b33645fbd 100644 --- a/src/plugins/api-server/backend/routes/websocket.ts +++ b/src/plugins/api-server/backend/routes/websocket.ts @@ -1,21 +1,17 @@ -import { createRoute } from '@hono/zod-openapi'; - import { type NodeWebSocket } from '@hono/node-ws'; - +import { createRoute } from '@hono/zod-openapi'; +import { type Context, type Next } from 'hono'; +import { type WSContext } from 'hono/ws'; +import { type APIServerConfig } from '@/plugins/api-server/config'; import { registerCallback, type SongInfo, SongInfoEvent, } from '@/providers/song-info'; - +import { type BackendContext } from '@/types/contexts'; +import { type RepeatMode, type VolumeState } from '@/types/datahost-get-state'; import { API_VERSION } from '../api-version'; - -import type { WSContext } from 'hono/ws'; -import type { Context, Next } from 'hono'; -import type { RepeatMode, VolumeState } from '@/types/datahost-get-state'; -import type { HonoApp } from '../types'; -import type { BackendContext } from '@/types/contexts'; -import type { APIServerConfig } from '@/plugins/api-server/config'; +import { type HonoApp } from '../types'; enum DataTypes { PlayerInfo = 'PLAYER_INFO', @@ -130,7 +126,6 @@ export const register = ( }), upgradeWebSocket(() => ({ onOpen(_, ws) { - // "Unsafe argument of type `WSContext` assigned to a parameter of type `WSContext`. (@typescript-eslint/no-unsafe-argument)" ????? what? sockets.add(ws as WSContext); ws.send( diff --git a/src/plugins/downloader/main/index.ts b/src/plugins/downloader/main/index.ts index c866eb87c1..e070eaed2a 100644 --- a/src/plugins/downloader/main/index.ts +++ b/src/plugins/downloader/main/index.ts @@ -1,45 +1,41 @@ +import { randomBytes } from 'node:crypto'; import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; -import { randomBytes } from 'node:crypto'; - +import { Mutex } from 'async-mutex'; +import { BG, type BgConfig } from 'bgutils-js'; import { app, type BrowserWindow, dialog, ipcMain } from 'electron'; -import { Innertube, UniversalCache, Utils, YTNodes } from 'youtubei.js'; import is from 'electron-is'; import filenamify from 'filenamify'; -import { Mutex } from 'async-mutex'; -import * as NodeID3 from 'node-id3'; -import { BG, type BgConfig } from 'bgutils-js'; import { lazy } from 'lazy-var'; - +import { type PlayerErrorMessage } from 'node_modules/youtubei.js/dist/src/parser/nodes'; +import { type VideoInfo } from 'node_modules/youtubei.js/dist/src/parser/youtube'; import { - cropMaxWidth, - getFolder, - sendFeedback as sendFeedback_, - setBadge, -} from './utils'; + type Playlist, + type TrackInfo, +} from 'node_modules/youtubei.js/dist/src/parser/ytmusic'; +import { type FormatOptions } from 'node_modules/youtubei.js/dist/src/types'; +import * as NodeID3 from 'node-id3'; +import { Innertube, UniversalCache, Utils, YTNodes } from 'youtubei.js'; +import { t } from '@/i18n'; +import { getNetFetchAsFetch } from '@/plugins/utils/main'; import { - registerCallback, cleanupName, getImage, MediaType, + registerCallback, type SongInfo, SongInfoEvent, } from '@/providers/song-info'; -import { getNetFetchAsFetch } from '@/plugins/utils/main'; -import { t } from '@/i18n'; - +import { type BackendContext } from '@/types/contexts'; +import { type GetPlayerResponse } from '@/types/get-player-response'; +import { type DownloaderPluginConfig } from '../index'; import { DefaultPresetList, type Preset, YoutubeFormatList } from '../types'; - -import type { DownloaderPluginConfig } from '../index'; -import type { BackendContext } from '@/types/contexts'; -import type { GetPlayerResponse } from '@/types/get-player-response'; -import type { FormatOptions } from 'node_modules/youtubei.js/dist/src/types'; -import type { VideoInfo } from 'node_modules/youtubei.js/dist/src/parser/youtube'; -import type { PlayerErrorMessage } from 'node_modules/youtubei.js/dist/src/parser/nodes'; -import type { - TrackInfo, - Playlist, -} from 'node_modules/youtubei.js/dist/src/parser/ytmusic'; +import { + cropMaxWidth, + getFolder, + sendFeedback as sendFeedback_, + setBadge, +} from './utils'; type CustomSongInfo = SongInfo & { trackId?: string }; @@ -87,7 +83,6 @@ const sendError = (error: Error, source?: string) => { const songNameMessage = source ? `\nin ${source}` : ''; const cause = error.cause ? `\n\n${ - // eslint-disable-next-line @typescript-eslint/no-base-to-string,@typescript-eslint/restrict-template-expressions error.cause instanceof Error ? error.cause.toString() : error.cause }` : ''; @@ -171,7 +166,6 @@ export const onMainLoad = async ({ if (interpreterJavascript) { // This is a workaround to run the interpreterJavascript code // Maybe there is a better way to do this (e.g. https://github.com/Siubaak/sval ?) - // eslint-disable-next-line @typescript-eslint/no-implied-eval,@typescript-eslint/no-unsafe-call new Function(interpreterJavascript)(); const poTokenResult = await BG.PoToken.generate({ diff --git a/src/plugins/music-together/connection.ts b/src/plugins/music-together/connection.ts index a85ab0611c..8c41cff76d 100644 --- a/src/plugins/music-together/connection.ts +++ b/src/plugins/music-together/connection.ts @@ -1,12 +1,12 @@ +import delay from 'delay'; import { type DataConnection, Peer, type PeerError, PeerErrorType, } from 'peerjs'; -import delay from 'delay'; -import type { Permission, Profile, VideoData } from './types'; +import { type Permission, type Profile, type VideoData } from './types'; export type ConnectionEventMap = { ADD_SONGS: { videoList: VideoData[]; index?: number }; @@ -123,6 +123,7 @@ export class Connection { } /* public */ + // biome-ignore lint/suspicious/useAwait: Method returns a promise to maintain async API consistency for future enhancements async waitForReady() { return this.waitOpen.promise; } @@ -188,6 +189,7 @@ export class Connection { } /* privates */ + // biome-ignore lint/suspicious/useAwait: Method returns a promise to maintain async API consistency with other connection methods private async registerConnection(conn: DataConnection) { return new Promise((resolve, reject) => { this.peer.once('error', (err) => { diff --git a/src/plugins/performance-improvement/scripts/cpu-tamer/cpu-tamer-by-animationframe.js b/src/plugins/performance-improvement/scripts/cpu-tamer/cpu-tamer-by-animationframe.js index bffcc97726..9e2279cc04 100644 --- a/src/plugins/performance-improvement/scripts/cpu-tamer/cpu-tamer-by-animationframe.js +++ b/src/plugins/performance-improvement/scripts/cpu-tamer/cpu-tamer-by-animationframe.js @@ -24,9 +24,9 @@ SOFTWARE. */ -/* eslint-disable */ +/** biome-ignore-all lint: Third-party library maintained externally, modifications should be avoided to ease future updates */ -export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { +export const injectCpuTamerByAnimationFrame = (__CONTEXT__) => { 'use strict'; const win = this instanceof Window ? this : window; @@ -37,9 +37,12 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { win[hkey_script] = true; /** @type {globalThis.PromiseConstructor} */ - const Promise = (async () => { })().constructor; // YouTube hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve. + const Promise = (async () => {})().constructor; // YouTube hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve. const PromiseExternal = ((resolve_, reject_) => { - const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject }; + const h = (resolve, reject) => { + resolve_ = resolve; + reject_ = reject; + }; return class PromiseExternal extends Promise { constructor(cb = h) { super(cb); @@ -57,46 +60,56 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { // https://gist.github.com/cvan/042b2448fcecefafbb6a91469484cdf8 try { const canvas = document.createElement('canvas'); - return !!(canvas.getContext('webgl') || canvas.getContext('experimental-webgl')); + return !!( + canvas.getContext('webgl') || canvas.getContext('experimental-webgl') + ); } catch (e) { return false; } })(); if (!isGPUAccelerationAvailable) { - throw new Error('Your browser does not support GPU Acceleration. YouTube CPU Tamer by AnimationFrame is skipped.'); + throw new Error( + 'Your browser does not support GPU Acceleration. YouTube CPU Tamer by AnimationFrame is skipped.', + ); } const timeupdateDT = (() => { - window.__j6YiAc__ = 1; - document.addEventListener('timeupdate', () => { - window.__j6YiAc__ = Date.now(); - }, true); + document.addEventListener( + 'timeupdate', + () => { + window.__j6YiAc__ = Date.now(); + }, + true, + ); let kz = -1; try { kz = top.__j6YiAc__; - } catch (e) { - - } + } catch (e) {} return kz >= 1 ? () => top.__j6YiAc__ : () => window.__j6YiAc__; - })(); const cleanContext = async (win) => { const waitFn = requestAnimationFrame; // shall have been binded to window try { let mx = 16; // MAX TRIAL - const frameId = 'vanillajs-iframe-v1' + const frameId = 'vanillajs-iframe-v1'; let frame = document.getElementById(frameId); let removeIframeFn = null; if (!frame) { frame = document.createElement('iframe'); frame.id = frameId; - const blobURL = typeof webkitCancelAnimationFrame === 'function' && typeof kagi === 'undefined' ? (frame.src = URL.createObjectURL(new Blob([], { type: 'text/html' }))) : null; // avoid Brave Crash + const blobURL = + typeof webkitCancelAnimationFrame === 'function' && + typeof kagi === 'undefined' + ? (frame.src = URL.createObjectURL( + new Blob([], { type: 'text/html' }), + )) + : null; // avoid Brave Crash frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting) n.appendChild(frame); @@ -107,26 +120,48 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { removeIframeFn = (setTimeout) => { const removeIframeOnDocumentReady = (e) => { - e && win.removeEventListener("DOMContentLoaded", removeIframeOnDocumentReady, false); + e && + win.removeEventListener( + 'DOMContentLoaded', + removeIframeOnDocumentReady, + false, + ); e = n; n = win = removeIframeFn = 0; setTimeout ? setTimeout(() => e.remove(), 200) : e.remove(); - } + }; if (!setTimeout || document.readyState !== 'loading') { removeIframeOnDocumentReady(); } else { - win.addEventListener("DOMContentLoaded", removeIframeOnDocumentReady, false); + win.addEventListener( + 'DOMContentLoaded', + removeIframeOnDocumentReady, + false, + ); } - } + }; } while (!frame.contentWindow && mx-- > 0) await new Promise(waitFn); const fc = frame.contentWindow; - if (!fc) throw "window is not found."; // throw error if root is null due to exceeding MAX TRIAL + if (!fc) throw 'window is not found.'; // throw error if root is null due to exceeding MAX TRIAL try { - const { requestAnimationFrame, setInterval, setTimeout, clearInterval, clearTimeout } = fc; - const res = { requestAnimationFrame, setInterval, setTimeout, clearInterval, clearTimeout }; + const { + requestAnimationFrame, + setInterval, + setTimeout, + clearInterval, + clearTimeout, + } = fc; + const res = { + requestAnimationFrame, + setInterval, + setTimeout, + clearInterval, + clearTimeout, + }; for (let k in res) res[k] = res[k].bind(win); // necessary - if (removeIframeFn) Promise.resolve(res.setTimeout).then(removeIframeFn); + if (removeIframeFn) + Promise.resolve(res.setTimeout).then(removeIframeFn); return res; } catch (e) { if (removeIframeFn) removeIframeFn(); @@ -138,11 +173,16 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { } }; - cleanContext(win).then(__CONTEXT__ => { - + cleanContext(win).then((__CONTEXT__) => { if (!__CONTEXT__) return null; - const { requestAnimationFrame, setTimeout, setInterval, clearTimeout, clearInterval } = __CONTEXT__; + const { + requestAnimationFrame, + setTimeout, + setInterval, + clearTimeout, + clearInterval, + } = __CONTEXT__; /** @type {Function|null} */ let afInterupter = null; @@ -150,13 +190,13 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { const getRAFHelper = () => { const asc = document.createElement('a-f'); if (!('onanimationiteration' in asc)) { - return (resolve) => requestAnimationFrame(afInterupter = resolve); + return (resolve) => requestAnimationFrame((afInterupter = resolve)); } asc.id = 'a-f'; let qr = null; asc.onanimationiteration = function () { if (qr !== null) qr = (qr(), null); - } + }; if (!document.getElementById('afscript')) { const style = document.createElement('style'); style.id = 'afscript'; @@ -189,7 +229,10 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { `; (document.head || document.documentElement).appendChild(style); } - document.documentElement.insertBefore(asc, document.documentElement.firstChild); + document.documentElement.insertBefore( + asc, + document.documentElement.firstChild, + ); return (resolve) => (qr = afInterupter = resolve); }; @@ -203,7 +246,7 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { const afResolve = async (rX) => { await new Promise(rafPN); rX.resolved = true; - const t = afix = (afix & 1073741823) + 1; + const t = (afix = (afix & 1073741823) + 1); return rX.resolve(t), t; }; const eFunc = async () => { @@ -217,12 +260,13 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { } else { const vP = !uP ? (afPromiseP = new PromiseExternal()) : null; const vQ = !uQ ? (afPromiseQ = new PromiseExternal()) : null; - if (uQ) await uQ; else if (uP) await uP; + if (uQ) await uQ; + else if (uP) await uP; if (vP) t = await afResolve(vP); if (vQ) t = await afResolve(vQ); } return t; - } + }; const inExec = new Set(); const wFunc = async (handler, wStore) => { try { @@ -244,9 +288,15 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { }; const sFunc = (propFunc) => { return (func, ms = 0, ...args) => { - if (typeof func === 'function') { // ignore all non-function parameter (e.g. string) + if (typeof func === 'function') { + // ignore all non-function parameter (e.g. string) const wStore = { dt: Date.now() }; - return (wStore.cid = propFunc(wFunc, ms, (args.length > 0 ? func.bind(null, ...args) : func), wStore)); + return (wStore.cid = propFunc( + wFunc, + ms, + args.length > 0 ? func.bind(null, ...args) : func, + wStore, + )); } else { return propFunc(func, ms, ...args); } @@ -269,18 +319,19 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => { win.setInterval.toString = setInterval.toString.bind(setInterval); win.clearTimeout.toString = clearTimeout.toString.bind(clearTimeout); win.clearInterval.toString = clearInterval.toString.bind(clearInterval); - } catch (e) { console.warn(e) } - + } catch (e) { + console.warn(e); + } })(); let mInterupter = null; setInterval(() => { if (mInterupter === afInterupter) { - if (mInterupter !== null) afInterupter = mInterupter = (mInterupter(), null); + if (mInterupter !== null) + afInterupter = mInterupter = (mInterupter(), null); } else { mInterupter = afInterupter; } }, 125); }); - -}); +}; diff --git a/src/plugins/performance-improvement/scripts/cpu-tamer/cpu-tamer-by-dom-mutation.js b/src/plugins/performance-improvement/scripts/cpu-tamer/cpu-tamer-by-dom-mutation.js index cc5a9fbdf4..922153758d 100644 --- a/src/plugins/performance-improvement/scripts/cpu-tamer/cpu-tamer-by-dom-mutation.js +++ b/src/plugins/performance-improvement/scripts/cpu-tamer/cpu-tamer-by-dom-mutation.js @@ -24,9 +24,9 @@ SOFTWARE. */ -/* eslint-disable */ +/** biome-ignore-all lint: Third-party library maintained externally, modifications should be avoided to ease future updates */ -export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { +export const injectCpuTamerByDomMutation = (__CONTEXT__) => { 'use strict'; const win = this instanceof Window ? this : window; @@ -37,9 +37,12 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { win[hkey_script] = true; /** @type {globalThis.PromiseConstructor} */ - const Promise = (async () => { })().constructor; // YouTube hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve. + const Promise = (async () => {})().constructor; // YouTube hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve. const PromiseExternal = ((resolve_, reject_) => { - const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject }; + const h = (resolve, reject) => { + resolve_ = resolve; + reject_ = reject; + }; return class PromiseExternal extends Promise { constructor(cb = h) { super(cb); @@ -79,13 +82,19 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { const waitFn = requestAnimationFrame; // shall have been binded to window try { let mx = 16; // MAX TRIAL - const frameId = 'vanillajs-iframe-v1' + const frameId = 'vanillajs-iframe-v1'; let frame = document.getElementById(frameId); let removeIframeFn = null; if (!frame) { frame = document.createElement('iframe'); frame.id = frameId; - const blobURL = typeof webkitCancelAnimationFrame === 'function' && typeof kagi === 'undefined' ? (frame.src = URL.createObjectURL(new Blob([], { type: 'text/html' }))) : null; // avoid Brave Crash + const blobURL = + typeof webkitCancelAnimationFrame === 'function' && + typeof kagi === 'undefined' + ? (frame.src = URL.createObjectURL( + new Blob([], { type: 'text/html' }), + )) + : null; // avoid Brave Crash frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting) n.appendChild(frame); @@ -96,26 +105,48 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { removeIframeFn = (setTimeout) => { const removeIframeOnDocumentReady = (e) => { - e && win.removeEventListener("DOMContentLoaded", removeIframeOnDocumentReady, false); + e && + win.removeEventListener( + 'DOMContentLoaded', + removeIframeOnDocumentReady, + false, + ); e = n; n = win = removeIframeFn = 0; setTimeout ? setTimeout(() => e.remove(), 200) : e.remove(); - } + }; if (!setTimeout || document.readyState !== 'loading') { removeIframeOnDocumentReady(); } else { - win.addEventListener("DOMContentLoaded", removeIframeOnDocumentReady, false); + win.addEventListener( + 'DOMContentLoaded', + removeIframeOnDocumentReady, + false, + ); } - } + }; } while (!frame.contentWindow && mx-- > 0) await new Promise(waitFn); const fc = frame.contentWindow; - if (!fc) throw "window is not found."; // throw error if root is null due to exceeding MAX TRIAL + if (!fc) throw 'window is not found.'; // throw error if root is null due to exceeding MAX TRIAL try { - const { requestAnimationFrame, setInterval, setTimeout, clearInterval, clearTimeout } = fc; - const res = { requestAnimationFrame, setInterval, setTimeout, clearInterval, clearTimeout }; + const { + requestAnimationFrame, + setInterval, + setTimeout, + clearInterval, + clearTimeout, + } = fc; + const res = { + requestAnimationFrame, + setInterval, + setTimeout, + clearInterval, + clearTimeout, + }; for (let k in res) res[k] = res[k].bind(win); // necessary - if (removeIframeFn) Promise.resolve(res.setTimeout).then(removeIframeFn); + if (removeIframeFn) + Promise.resolve(res.setTimeout).then(removeIframeFn); return res; } catch (e) { if (removeIframeFn) removeIframeFn(); @@ -127,28 +158,27 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { } }; - const { _setAttribute, _insertBefore, _hasAttribute } = (() => { let _setAttribute = Element.prototype.setAttribute; try { _setAttribute = ShadyDOM.nativeMethods.setAttribute || _setAttribute; - } catch (e) { } + } catch (e) {} let _hasAttribute = Element.prototype.hasAttribute; try { _hasAttribute = ShadyDOM.nativeMethods.hasAttribute || _hasAttribute; - } catch (e) { } + } catch (e) {} let _insertBefore = Node.prototype.insertBefore; try { _insertBefore = ShadyDOM.nativeMethods.insertBefore || _insertBefore; - } catch (e) { } - return { _setAttribute, _insertBefore, _hasAttribute}; + } catch (e) {} + return { _setAttribute, _insertBefore, _hasAttribute }; })(); - cleanContext(win).then(__CONTEXT__ => { - + cleanContext(win).then((__CONTEXT__) => { if (!__CONTEXT__) return null; - const { setTimeout, setInterval, clearTimeout, clearInterval } = __CONTEXT__; + const { setTimeout, setInterval, clearTimeout, clearInterval } = + __CONTEXT__; /* /-** @type {Function|null} *-/ @@ -160,14 +190,22 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { if (!_dm) { _dm = document.createElementNS('http://www.w3.org/2000/svg', 'defs'); _dm.id = 'd-m'; - _insertBefore.call(document.documentElement, _dm, document.documentElement.firstChild); + _insertBefore.call( + document.documentElement, + _dm, + document.documentElement.firstChild, + ); } const dm = _dm; dm._setAttribute = _setAttribute; dm._hasAttribute = _hasAttribute; let j = 0; let attributeName_; - while (dm._hasAttribute(attributeName_ = `dm-${Math.floor(Math.random() * 314159265359 + 314159265359).toString(36)}`)) { + while ( + dm._hasAttribute( + (attributeName_ = `dm-${Math.floor(Math.random() * 314159265359 + 314159265359).toString(36)}`), + ) + ) { // none } const attributeName = attributeName_; @@ -180,9 +218,16 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { sr_.resolve(); } }); - mo.observe(document, { childList: true, subtree: true, attributes: true }); + mo.observe(document, { + childList: true, + subtree: true, + attributes: true, + }); return () => { - return sr || (sr = (dm._setAttribute(attributeName, ++j), (new PromiseExternal()))); // mutationcallback in next macrotask + return ( + sr || + (sr = (dm._setAttribute(attributeName, ++j), new PromiseExternal())) + ); // mutationcallback in next macrotask }; }; @@ -196,7 +241,7 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { const dmResolve = async (rX) => { await dmSN(); rX.resolved = true; - const t = dmix = (dmix & 1073741823) + 1; + const t = (dmix = (dmix & 1073741823) + 1); return rX.resolve(t), t; }; const eFunc = async () => { @@ -210,12 +255,13 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { } else { const vP = !uP ? (dmPromiseP = new PromiseExternal()) : null; const vQ = !uQ ? (dmPromiseQ = new PromiseExternal()) : null; - if (uQ) await uQ; else if (uP) await uP; + if (uQ) await uQ; + else if (uP) await uP; if (vP) t = await dmResolve(vP); if (vQ) t = await dmResolve(vQ); } return t; - } + }; const inExec = new Set(); const wFunc = async (handler, wStore) => { try { @@ -237,9 +283,15 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { }; const sFunc = (propFunc) => { return (func, ms = 0, ...args) => { - if (typeof func === 'function') { // ignore all non-function parameter (e.g. string) + if (typeof func === 'function') { + // ignore all non-function parameter (e.g. string) const wStore = { dt: Date.now() }; - return (wStore.cid = propFunc(wFunc, ms, (args.length > 0 ? func.bind(null, ...args) : func), wStore)); + return (wStore.cid = propFunc( + wFunc, + ms, + args.length > 0 ? func.bind(null, ...args) : func, + wStore, + )); } else { return propFunc(func, ms, ...args); } @@ -262,8 +314,9 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { win.setInterval.toString = setInterval.toString.bind(setInterval); win.clearTimeout.toString = clearTimeout.toString.bind(clearTimeout); win.clearInterval.toString = clearInterval.toString.bind(clearInterval); - } catch (e) { console.warn(e) } - + } catch (e) { + console.warn(e); + } })(); /* @@ -277,5 +330,4 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => { }, 125); */ }); - -}); +}; diff --git a/src/plugins/performance-improvement/scripts/rm3/rm3.js b/src/plugins/performance-improvement/scripts/rm3/rm3.js index 1d82e3a699..5ffaf4880d 100644 --- a/src/plugins/performance-improvement/scripts/rm3/rm3.js +++ b/src/plugins/performance-improvement/scripts/rm3/rm3.js @@ -24,7 +24,7 @@ SOFTWARE. */ -/* eslint-disable */ +/** biome-ignore-all lint: Third-party library maintained externally, modifications should be avoided to ease future updates */ export const rm3 = {}; @@ -54,7 +54,7 @@ export const injectRm3 = () => { ); // [[debug]] }; - const insp = (o) => o ? o.polymerController || o.inst || o || 0 : o || 0; + const insp = (o) => (o ? o.polymerController || o.inst || o || 0 : o || 0); const indr = (o) => insp(o).$ || o.$ || 0; const getProto = (element) => { @@ -339,9 +339,9 @@ export const injectRm3 = () => { // rm3.list = []; - const operations = rm3.operations = new Set(); // to find out the "oldest elements" + const operations = (rm3.operations = new Set()); // to find out the "oldest elements" - const availablePools = rm3.availablePools = new Map(); // those "old elements" can be used + const availablePools = (rm3.availablePools = new Map()); // those "old elements" can be used let lastTimeCheck = 0; const reuseRecord_ = new LimitedSizeSet(256); // [[debug]] @@ -419,7 +419,7 @@ export const injectRm3 = () => { let availablePool = availablePools.get(eKey); if (!availablePool) - availablePools.set(eKey, availablePool = new LinkedArray()); + availablePools.set(eKey, (availablePool = new LinkedArray())); if (!(availablePool instanceof LinkedArray)) throw new Error(); DEBUG_OPT && console.log(3885, 'add key', eKey, availablePools.size); @@ -431,7 +431,7 @@ export const injectRm3 = () => { // }, 8000) let pivotNode = pivotNodes.get(availablePool); if (!pivotNode) - pivotNodes.set(availablePool, pivotNode = availablePool.head); // cached the previous newest node (head) as pivotNode + pivotNodes.set(availablePool, (pivotNode = availablePool.head)); // cached the previous newest node (head) as pivotNode availablePool.insertBeforeNode(pivotNode, entryRecord); // head = newest, tail = oldest } diff --git a/src/plugins/precise-volume/override.ts b/src/plugins/precise-volume/override.ts index f8f3d3845c..2a3b06acf2 100644 --- a/src/plugins/precise-volume/override.ts +++ b/src/plugins/precise-volume/override.ts @@ -9,7 +9,6 @@ function overrideAddEventListener() { // YO WHAT ARE YOU DOING NOW?!?! // Save native addEventListener // @ts-expect-error - We know what we're doing - // eslint-disable-next-line @typescript-eslint/unbound-method Element.prototype._addEventListener = Element.prototype.addEventListener; // Override addEventListener to Ignore specific events in volume-slider Element.prototype.addEventListener = function ( @@ -18,7 +17,7 @@ function overrideAddEventListener() { useCapture = false, ) { if (!(ignored.id.includes(this.id) && ignored.types.includes(type))) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access + // biome-ignore lint/suspicious/noExplicitAny: Accessing custom property on Element prototype that stores original addEventListener (this as any)._addEventListener(type, listener, useCapture); } else if (window.electronIs.dev()) { console.log(`Ignoring event: "${this.id}.${type}()"`); @@ -32,12 +31,11 @@ export const overrideListener = () => { window.addEventListener( 'load', () => { - /* eslint-disable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-member-access */ - Element.prototype.addEventListener = ( - Element.prototype as any - )._addEventListener; + Element.prototype.addEventListener = + // biome-ignore lint/suspicious/noExplicitAny: Restoring original addEventListener from custom property + (Element.prototype as any)._addEventListener; + // biome-ignore lint/suspicious/noExplicitAny: Cleaning up custom property after restoration (Element.prototype as any)._addEventListener = undefined; - /* eslint-enable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-member-access */ }, { once: true }, ); diff --git a/src/plugins/scrobbler/services/lastfm.ts b/src/plugins/scrobbler/services/lastfm.ts index 8397a7de50..2f312385cc 100644 --- a/src/plugins/scrobbler/services/lastfm.ts +++ b/src/plugins/scrobbler/services/lastfm.ts @@ -1,14 +1,12 @@ import crypto from 'node:crypto'; import { BrowserWindow, dialog, net } from 'electron'; - -import { ScrobblerBase } from './base'; - import { t } from '@/i18n'; +import { type SongInfo } from '@/providers/song-info'; -import type { ScrobblerPluginConfig } from '../index'; -import type { SetConfType } from '../main'; -import type { SongInfo } from '@/providers/song-info'; +import { type ScrobblerPluginConfig } from '../index'; +import { type SetConfType } from '../main'; +import { ScrobblerBase } from './base'; interface LastFmData { method: string; @@ -255,6 +253,7 @@ const createToken = async ({ let authWindowOpened = false; let latestAuthResult = false; +// biome-ignore lint/suspicious/useAwait: Function returns a Promise and contains nested async callbacks for window navigation const authenticate = async ( config: ScrobblerPluginConfig, mainWindow: BrowserWindow, diff --git a/src/plugins/shortcuts/mpris-service.d.ts b/src/plugins/shortcuts/mpris-service.d.ts index 44281819ad..25d6276865 100644 --- a/src/plugins/shortcuts/mpris-service.d.ts +++ b/src/plugins/shortcuts/mpris-service.d.ts @@ -61,7 +61,7 @@ declare module '@jellybrick/mpris-service' { position: number; } - declare class Player extends EventEmitter { + declare abstract class Player extends EventEmitter { constructor(opts: { name: string; identity: string; @@ -180,10 +180,8 @@ declare module '@jellybrick/mpris-service' { setProperty(property: string, valuePlain: unknown): void; } - // eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface RootInterface {} - // eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface PlayerInterface {} export interface TracklistInterface { diff --git a/src/plugins/utils/main/fetch.ts b/src/plugins/utils/main/fetch.ts index b36eaf3d9a..791b3a5e71 100644 --- a/src/plugins/utils/main/fetch.ts +++ b/src/plugins/utils/main/fetch.ts @@ -1,6 +1,7 @@ import { net } from 'electron'; export const getNetFetchAsFetch = () => + // biome-ignore lint/suspicious/useAwait: Must remain async to match the fetch API signature which returns Promise (async (input: RequestInfo | URL, init?: RequestInit) => { const url = typeof input === 'string' diff --git a/src/plugins/visualizer/index.ts b/src/plugins/visualizer/index.ts index 0d1dbbaaf2..78a1e03783 100644 --- a/src/plugins/visualizer/index.ts +++ b/src/plugins/visualizer/index.ts @@ -1,12 +1,12 @@ -import emptyStyle from './empty-player.css?inline'; +import { t } from '@/i18n'; import { createPlugin } from '@/utils'; -import { type Visualizer } from './visualizers/visualizer'; +import emptyStyle from './empty-player.css?inline'; import { ButterchurnVisualizer as butterchurn, VudioVisualizer as vudio, WaveVisualizer as wave, } from './visualizers'; -import { t } from '@/i18n'; +import { type Visualizer } from './visualizers/visualizer'; type WaveColor = { gradient: string[]; @@ -151,7 +151,7 @@ export default createPlugin({ async onPlayerApiReady(_, { getConfig }) { const config = await getConfig(); - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: Visualizer constructors accept varying argument types depending on the visualizer implementation let visualizerType: { new (...args: any[]): Visualizer } = vudio; if (config.type === 'wave') { diff --git a/src/providers/song-info-front.ts b/src/providers/song-info-front.ts index 9bed8abc37..71e6f5baca 100644 --- a/src/providers/song-info-front.ts +++ b/src/providers/song-info-front.ts @@ -1,16 +1,13 @@ -import { singleton } from './decorators'; - -import { LikeType, type GetState } from '@/types/datahost-get-state'; - -import type { YoutubePlayer } from '@/types/youtube-player'; -import type { - AlbumDetails, - PlayerOverlays, - VideoDataChangeValue, +import { type GetState, LikeType } from '@/types/datahost-get-state'; +import { + type AlbumDetails, + type PlayerOverlays, + type VideoDataChangeValue, } from '@/types/player-api-events'; - -import type { SongInfo } from './song-info'; -import type { VideoDataChanged } from '@/types/video-data-changed'; +import { type VideoDataChanged } from '@/types/video-data-changed'; +import { type YoutubePlayer } from '@/types/youtube-player'; +import { singleton } from './decorators'; +import { type SongInfo } from './song-info'; const DATAUPDATED_FALLBACK_TIMEOUT_MS = 1500; @@ -246,7 +243,6 @@ export const setupSongInfo = (api: YoutubePlayer) => { const videoEventDispatcher = async ( name: string, videoData: VideoDataChangeValue, - // eslint-disable-next-line @typescript-eslint/require-await ) => document.dispatchEvent( new CustomEvent('videodatachange', { diff --git a/src/renderer.ts b/src/renderer.ts index b535a89b09..fd86ddc40b 100644 --- a/src/renderer.ts +++ b/src/renderer.ts @@ -1,7 +1,15 @@ import i18next from 'i18next'; - -import { startingPages } from './providers/extracted-data'; -import { setupSongInfo } from './providers/song-info-front'; +import { t as i18t, loadI18n, setLanguage } from '@/i18n'; +import { type PluginConfig } from '@/types/plugins'; +import { type QueueElement } from '@/types/queue'; +import { type SearchBoxElement } from '@/types/search-box-element'; +import { type YouTubeMusicAppElement } from '@/types/youtube-music-app-element'; +import { type QueueResponse } from '@/types/youtube-music-desktop-internal'; +import { type YoutubePlayer } from '@/types/youtube-player'; +import { + defaultTrustedTypePolicy, + registerWindowDefaultTrustedTypePolicy, +} from '@/utils/trusted-types'; import { createContext, forceLoadRendererPlugin, @@ -10,20 +18,8 @@ import { getLoadedRendererPlugin, loadAllRendererPlugins, } from './loader/renderer'; - -import { loadI18n, setLanguage, t as i18t } from '@/i18n'; - -import { - defaultTrustedTypePolicy, - registerWindowDefaultTrustedTypePolicy, -} from '@/utils/trusted-types'; - -import type { PluginConfig } from '@/types/plugins'; -import type { YoutubePlayer } from '@/types/youtube-player'; -import type { QueueElement } from '@/types/queue'; -import type { QueueResponse } from '@/types/youtube-music-desktop-internal'; -import type { YouTubeMusicAppElement } from '@/types/youtube-music-app-element'; -import type { SearchBoxElement } from '@/types/search-box-element'; +import { startingPages } from './providers/extracted-data'; +import { setupSongInfo } from './providers/song-info-front'; let api: (Element & YoutubePlayer) | null = null; let isPluginLoaded = false; @@ -88,9 +84,9 @@ async function onApiLoaded() { window.ipcRenderer.on('ytmd:seek-by', (_, t: number) => api!.seekBy(t)); window.ipcRenderer.on('ytmd:shuffle', () => { document - .querySelector< - HTMLElement & { queue: { shuffle: () => void } } - >('ytmusic-player-bar') + .querySelector void } }>( + 'ytmusic-player-bar', + ) ?.queue.shuffle(); }); @@ -120,17 +116,17 @@ async function onApiLoaded() { window.ipcRenderer.on('ytmd:switch-repeat', (_, repeat = 1) => { for (let i = 0; i < repeat; i++) { document - .querySelector< - HTMLElement & { onRepeatButtonClick: () => void } - >('ytmusic-player-bar') + .querySelector void }>( + 'ytmusic-player-bar', + ) ?.onRepeatButtonClick(); } }); window.ipcRenderer.on('ytmd:update-volume', (_, volume: number) => { document - .querySelector< - HTMLElement & { updateVolume: (volume: number) => void } - >('ytmusic-player-bar') + .querySelector void }>( + 'ytmusic-player-bar', + ) ?.updateVolume(volume); }); @@ -169,9 +165,9 @@ async function onApiLoaded() { window.ipcRenderer.on('ytmd:toggle-mute', (_) => { document - .querySelector< - HTMLElement & { onVolumeClick: () => void } - >('ytmusic-player-bar') + .querySelector void }>( + 'ytmusic-player-bar', + ) ?.onVolumeClick(); }); @@ -402,10 +398,9 @@ async function onApiLoaded() { * YouTube Music still using ES5, so we need to define custom elements using ES5 style */ const defineYTMDTransElements = () => { + // biome-ignore lint/suspicious/noEmptyBlockStatements: Empty constructor required for ES5-style custom element definition const YTMDTrans = function () {}; - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment YTMDTrans.prototype = Object.create(HTMLElement.prototype); - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access YTMDTrans.prototype.connectedCallback = function () { const that = this as HTMLElement; const key = that.getAttribute('key'); diff --git a/src/types/contexts.ts b/src/types/contexts.ts index 166bdd98de..c95fa0fa2c 100644 --- a/src/types/contexts.ts +++ b/src/types/contexts.ts @@ -1,10 +1,10 @@ -import type { - IpcMain, - IpcRenderer, - WebContents, - BrowserWindow, +import { + type BrowserWindow, + type IpcMain, + type IpcRenderer, + type WebContents, } from 'electron'; -import type { PluginConfig } from '@/types/plugins'; +import { type PluginConfig } from '@/types/plugins'; export interface BaseContext { getConfig: () => Promise | Config; @@ -29,7 +29,6 @@ export interface MenuContext refresh: () => Promise | void; } -// eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface PreloadContext extends BaseContext {} diff --git a/src/types/datahost-get-state.ts b/src/types/datahost-get-state.ts index 9a4de26eb8..1c3477c11b 100644 --- a/src/types/datahost-get-state.ts +++ b/src/types/datahost-get-state.ts @@ -1,4 +1,4 @@ -import type { PlayerConfig } from '@/types/get-player-response'; +import { type PlayerConfig } from '@/types/get-player-response'; export interface GetState { castStatus: CastStatus; @@ -31,7 +31,6 @@ export interface Download { isLeaderTab: boolean; } -// eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface Entities {} export interface LikeStatus { diff --git a/src/types/get-player-response.ts b/src/types/get-player-response.ts index ac51b5beb9..b9250f3f3d 100644 --- a/src/types/get-player-response.ts +++ b/src/types/get-player-response.ts @@ -108,7 +108,6 @@ export interface Endpoint { watchEndpoint: WatchEndpoint; } -// eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface CommandMetadata {} export interface WatchEndpoint { diff --git a/src/utils/index.ts b/src/utils/index.ts index 427082ca77..6bde94e376 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,18 +1,18 @@ import { t } from '@/i18n'; -import type { - BackendContext, - PreloadContext, - RendererContext, +import { + type BackendContext, + type PreloadContext, + type RendererContext, } from '@/types/contexts'; -import type { - PluginDef, - PluginConfig, - PluginLifecycleExtra, - PluginLifecycleSimple, - PluginLifecycle, - RendererPluginLifecycle, +import { + type PluginConfig, + type PluginDef, + type PluginLifecycle, + type PluginLifecycleExtra, + type PluginLifecycleSimple, + type RendererPluginLifecycle, } from '@/types/plugins'; export const LoggerPrefix = '[YTMusic]'; @@ -93,7 +93,6 @@ export const startPlugin = async ( if (defContext && typeof defContext !== 'function') { Object.entries(defContext).forEach(([key, value]) => { if (typeof value === 'function') { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access defContext[key as keyof typeof defContext] = value.bind(defContext); } });