diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 1aa63b6d1..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,160 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - parserOptions: { - tsconfigRootDir: __dirname, - project: [ './tsconfig.json', './test/tsconfig.json', './scripts/tsconfig.json' ], - }, - // Ignoring js files (such as this one) since they seem to conflict with rules that require typing info - ignorePatterns: [ '*.js' ], - globals: { - AsyncIterable: 'readonly', - BufferEncoding: 'readonly', - NodeJS: 'readonly', - RequestInit: 'readonly', - }, - plugins: [ - 'tsdoc', - 'import', - 'unused-imports', - ], - extends: [ - 'es/node', - 'eslint:recommended', - 'plugin:import/errors', - 'plugin:import/warnings', - 'plugin:import/typescript', - ], - settings: { - 'import/resolver': { - typescript: { - // Always try to resolve types under `@types` directory - // even it doesn't contain any source code, like `@types/rdf-js` - alwaysTryTypes: true, - }, - }, - }, - rules: { - // There are valid typing reasons to have one or the other - '@typescript-eslint/consistent-type-definitions': 'off', - '@typescript-eslint/lines-between-class-members': [ 'error', { exceptAfterSingleLine: true }], - // We almost exclusively do dynamic deletes - '@typescript-eslint/no-dynamic-delete': 'off', - '@typescript-eslint/no-empty-interface': 'off', - // Breaks with default void in AsyncHandler 2nd generic - '@typescript-eslint/no-invalid-void-type': 'off', - // Problems with optional parameters - '@typescript-eslint/no-unnecessary-condition': 'off', - "@typescript-eslint/no-unused-vars": [ "error", { "ignoreRestSiblings": true } ], - '@typescript-eslint/prefer-optional-chain': 'error', - '@typescript-eslint/promise-function-async': [ 'error', { checkArrowFunctions: false } ], - '@typescript-eslint/space-before-function-paren': [ 'error', 'never' ], - '@typescript-eslint/unbound-method': 'off', - '@typescript-eslint/unified-signatures': 'off', - // Conflicts with functions from interfaces that sometimes don't require `this` - 'class-methods-use-this': 'off', - 'comma-dangle': [ 'error', 'always-multiline' ], - 'dot-location': [ 'error', 'property' ], - 'eslint-comments/disable-enable-pair': 'off', - // Allow declaring overloads in TypeScript (https://eslint.org/docs/rules/func-style) - 'func-style': [ 'error', 'declaration' ], - 'generator-star-spacing': [ 'error', 'after' ], - // Conflicts with padded-blocks - 'lines-around-comment': 'off', - 'lines-between-class-members': [ 'error', 'always', { exceptAfterSingleLine: true }], - 'max-len': [ 'error', { code: 120, ignoreUrls: true }], - // Used for RDF constants - 'new-cap': 'off', - // Necessary in constructor overloading - 'no-param-reassign': 'off', - // Checked by @typescript-eslint/no-redeclare - 'no-redeclare': 'off', - // Conflicts with external libraries - 'no-underscore-dangle': 'off', - // Already checked by @typescript-eslint/no-unused-vars - 'no-unused-vars': 'off', - 'padding-line-between-statements': 'off', - // Forcing destructuring on existing variables causes clunky code - 'prefer-destructuring': 'off', - 'prefer-named-capture-group': 'off', - // Already generated by TypeScript - strict: 'off', - 'tsdoc/syntax': 'error', - 'unicorn/catch-error-name': 'off', - // Can cause some clunky situations if it forces us to assign to an existing variable - 'unicorn/consistent-destructuring': 'off', - 'unicorn/import-index': 'off', - 'unicorn/import-style': 'off', - // The next 2 would prevent some functional programming paradigms - 'unicorn/no-array-callback-reference': 'off', - 'unicorn/no-fn-reference-in-iterator': 'off', - // Triggers on all functions called `find`, not just on arrays - 'unicorn/no-array-method-this-argument':'off', - 'unicorn/no-object-as-default-parameter': 'off', - 'unicorn/numeric-separators-style': 'off', - // At function only supported in Node v16.6.0 - 'unicorn/prefer-at': 'off', - // Does not make sense for more complex cases - 'unicorn/prefer-object-from-entries': 'off', - // Only supported in Node v15 - 'unicorn/prefer-string-replace-all' : 'off', - // Can get ugly with large single statements - 'unicorn/prefer-ternary': 'off', - 'yield-star-spacing': [ 'error', 'after' ], - - // Need to use the typescript version of this rule to support overloading - "no-dupe-class-members": "off", - "@typescript-eslint/no-dupe-class-members": ["error"], - - // Naming conventions - '@typescript-eslint/naming-convention': [ - 'error', - { - selector: 'default', - format: [ 'camelCase' ], - leadingUnderscore: 'forbid', - trailingUnderscore: 'forbid', - }, - { - selector: 'variable', - format: [ 'camelCase', 'UPPER_CASE' ], - leadingUnderscore: 'forbid', - trailingUnderscore: 'forbid', - }, - { - selector: 'typeLike', - format: [ 'PascalCase' ], - }, - { - selector: [ 'typeParameter' ], - format: [ 'PascalCase' ], - prefix: [ 'T' ], - }, - ], - - // Import - '@typescript-eslint/consistent-type-imports': [ 'error', { prefer: 'type-imports' }], - // Disabled in favor of eslint-plugin-import - 'sort-imports': 'off', - 'import/order': [ 'error', { - alphabetize: { - order: 'asc', - caseInsensitive: true, - }, - }], - 'import/no-duplicates': 'error', - 'import/no-extraneous-dependencies': 'error', - 'import/no-named-as-default': 'off', - // Doesn't work with type imports - 'no-duplicate-imports': 'off', - 'unused-imports/no-unused-imports-ts': 'error', - }, - - overrides: [ - { - files: '*.js', - parser: 'espree', - }, - ], -}; diff --git a/.github/.markdownlint-cli2.cjs b/.github/.markdownlint-cli2.cjs index 14d4bd3a6..2bd4caf1f 100644 --- a/.github/.markdownlint-cli2.cjs +++ b/.github/.markdownlint-cli2.cjs @@ -1,14 +1,14 @@ +'use strict'; const options = require('../.markdownlint-cli2.cjs'); -"use strict"; module.exports = { - globs: [ "**/*.md" ], + globs: [ '**/*.md' ], config: { // Re-use the base config ...options.config, // Allow first line to not be top level heading - MD041: false - } + MD041: false, + }, }; diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6b9aba65b..69beea285 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,33 +1,33 @@ version: 2 updates: - - package-ecosystem: "github-actions" + - package-ecosystem: github-actions directory: / schedule: - interval: "daily" - time: "02:13" - timezone: "Europe/Brussels" + interval: daily + time: '02:13' + timezone: Europe/Brussels labels: - - "⚙️ dependencies" - - package-ecosystem: "npm" + - ⚙️ dependencies + - package-ecosystem: npm directory: / schedule: - interval: "daily" - time: "03:35" - timezone: "Europe/Brussels" - target-branch: "versions/next-major" + interval: daily + time: '03:35' + timezone: Europe/Brussels + target-branch: versions/next-major ignore: # Ignore minor and patch version updates - - dependency-name: "*" - update-types: ["version-update:semver-minor", "version-update:semver-patch"] + - dependency-name: '*' + update-types: ['version-update:semver-minor', 'version-update:semver-patch'] # Sticking with Husky 4.x - - dependency-name: "husky" + - dependency-name: husky labels: - - "⚙️ dependencies" - - package-ecosystem: "docker" + - ⚙️ dependencies + - package-ecosystem: docker directory: / schedule: - interval: "daily" - time: "04:22" - timezone: "Europe/Brussels" + interval: daily + time: '04:22' + timezone: Europe/Brussels labels: - - "⚙️ dependencies" + - ⚙️ dependencies diff --git a/.github/workflows/cth-test.yml b/.github/workflows/cth-test.yml index 459b63fb6..b2ec9777d 100644 --- a/.github/workflows/cth-test.yml +++ b/.github/workflows/cth-test.yml @@ -52,7 +52,7 @@ jobs: - name: Create the necessary folders run: mkdir -p reports/css - name: Pull the conformance harness docker - run: "docker pull solidproject/conformance-test-harness:${{ inputs.version }}" + run: 'docker pull solidproject/conformance-test-harness:${{ inputs.version }}' - name: Wait until the server has started run: > curl --output /dev/null --silent --head --fail --retry 30 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index b1eaf0cd5..a8eff7001 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -11,10 +11,10 @@ on: jobs: docker-meta: - # Generates the metadata (labels and tags) for the docker containers - # - push to main results in the edge tag - # - version tag results in edge, latest and semver, major, major.minor tags - # - push to versions/ results in the next tag + # Generates the metadata (labels and tags) for the docker containers + # - push to main results in the edge tag + # - version tag results in edge, latest and semver, major, major.minor tags + # - push to versions/ results in the next tag runs-on: ubuntu-latest outputs: labels: ${{ steps.meta-main.outputs.labels || steps.meta-version.outputs.labels }} @@ -49,8 +49,8 @@ jobs: github-token: ${{ secrets.github_token }} docker: - # Builds, tests and pushes docker containers - # Containers are built for both linux/amd64 and linux/arm/v7 platforms + # Builds, tests and pushes docker containers + # Containers are built for both linux/amd64 and linux/arm/v7 platforms needs: docker-meta runs-on: ubuntu-latest steps: @@ -73,7 +73,7 @@ jobs: tags: ${{ needs.docker-meta.outputs.tags }} labels: ${{ needs.docker-meta.outputs.labels }} - - name: "Test all docker-built image tags" + - name: Test all docker-built image tags shell: bash # Loop over all generated image:tag names and docker run them. # If they aren't built previously, the command will error. diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b8283c7f7..f4bf935f9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,7 +2,7 @@ name: CI on: push: branches: - - 'main' + - main - 'versions/*' tags: - 'v*' @@ -14,11 +14,11 @@ concurrency: jobs: npm-test: - # Run the tests in every case + # Run the tests in every case uses: ./.github/workflows/npm-test.yml cth-test: - # Run the Conformance Test Harness on PRs targeting main or versions/ + # Run the Conformance Test Harness on PRs targeting main or versions/ if: github.event_name == 'pull_request' && ( github.base_ref == 'main' || startsWith( github.base_ref, 'versions/' ) ) uses: ./.github/workflows/cth-test.yml with: @@ -26,7 +26,7 @@ jobs: version: 1.1.14 # The latest version that CSS is confirmed to pass docker: - # Build docker containers on version tag, push to main and push to versions/ + # Build docker containers on version tag, push to main and push to versions/ needs: npm-test if: startsWith(github.ref, 'refs/tags/v') || (github.ref == 'refs/heads/main') || startsWith(github.ref, 'refs/heads/versions/') uses: ./.github/workflows/docker.yml @@ -35,6 +35,6 @@ jobs: DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} mkdocs-release: - # Release documentation on version tag, but ignore pre-releases + # Release documentation on version tag, but ignore pre-releases if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-') uses: ./.github/workflows/mkdocs.yml diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml index 3958ada39..39c8f068c 100644 --- a/.github/workflows/mkdocs.yml +++ b/.github/workflows/mkdocs.yml @@ -2,21 +2,21 @@ name: Documentation on: workflow_call: -# Additional trigger to deploy changes to the documentation/ folder -# on push to main, ignoring tags so we don't trigger twice upon release + # Additional trigger to deploy changes to the documentation/ folder + # on push to main, ignoring tags so we don't trigger twice upon release push: branches: - main paths: - documentation/** tags-ignore: - - "*" + - '*' jobs: mkdocs-prep: - # Runs the markdown linter to ensure we don't release faulty markdown. - # Also gets the correct major version, whether the job is triggered by a version tag - # or a push to main to update the latest documentation. + # Runs the markdown linter to ensure we don't release faulty markdown. + # Also gets the correct major version, whether the job is triggered by a version tag + # or a push to main to update the latest documentation. runs-on: ubuntu-latest outputs: major: ${{ steps.tagged_version.outputs.major || steps.current_version.outputs.major }} @@ -24,7 +24,7 @@ jobs: - uses: actions/checkout@v4.1.1 - uses: actions/setup-node@v4 with: - node-version: '16.x' + node-version: 16.x - run: npm ci --ignore-scripts - name: Lint documentation markdown run: npm run lint:markdown -- documentation/**/*.md @@ -55,7 +55,6 @@ jobs: - run: | cd documentation && mike deploy --push --update-aliases \ ${{ needs.mkdocs-prep.outputs.major }}.x latest - typedocs: # Build typedocs and publish them to the GH page. @@ -66,7 +65,7 @@ jobs: - uses: actions/checkout@v4.1.1 - uses: actions/setup-node@v4 with: - node-version: '16.x' + node-version: 16.x - run: npm ci --ignore-scripts - name: Generate typedocs run: npm run typedocs @@ -75,4 +74,4 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./docs - destination_dir: ${{ needs.mkdocs-prep.outputs.major }}.x/docs + destination_dir: ${{ needs.mkdocs-prep.outputs.major }}.x/docs diff --git a/.github/workflows/npm-test.yml b/.github/workflows/npm-test.yml index 682dc9d9b..d6b24c1bd 100644 --- a/.github/workflows/npm-test.yml +++ b/.github/workflows/npm-test.yml @@ -10,12 +10,12 @@ jobs: - uses: actions/checkout@v4.1.1 - uses: actions/setup-node@v4 with: - node-version: '16.x' + node-version: 16.x - run: npm ci --ignore-scripts - run: npm run lint test-unit: - # Run unit tests on windows and linux + # Run unit tests on windows and linux runs-on: ${{ matrix.operating-system }} strategy: matrix: @@ -24,9 +24,9 @@ jobs: - windows-latest node-version: - '18.0' - - '18.x' + - 18.x - '20.0' - - '20.x' + - 20.x timeout-minutes: 15 steps: - name: Use Node.js ${{ matrix.node-version }} @@ -51,13 +51,13 @@ jobs: parallel: true test-integration: - # Run integration tests on linux (full suite, with external dependencies) + # Run integration tests on linux (full suite, with external dependencies) runs-on: ubuntu-latest strategy: matrix: node-version: - - '18.x' - - '20.x' + - 18.x + - 20.x env: TEST_DOCKER: true services: @@ -85,13 +85,13 @@ jobs: run: npm run test:integration test-integration-windows: - # Run integration tests on windows (no external dependencies) + # Run integration tests on windows (no external dependencies) runs-on: windows-latest strategy: matrix: node-version: - - '18.x' - - '20.x' + - 18.x + - 20.x timeout-minutes: 20 steps: - name: Use Node.js ${{ matrix.node-version }} @@ -108,7 +108,7 @@ jobs: run: npm run test:integration test-configs: - # Test startup of CSS with all configs inside the config/ folder + # Test startup of CSS with all configs inside the config/ folder runs-on: ubuntu-latest services: sparql-endpoint: @@ -121,7 +121,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v4 with: - node-version: '16.x' + node-version: 16.x - name: Check out repository uses: actions/checkout@v4.1.1 - name: Install dependencies and run build scripts @@ -130,7 +130,7 @@ jobs: run: npm run test:deploy coveralls: - # Consolidate test coverage reports from all unit tests + # Consolidate test coverage reports from all unit tests needs: test-unit runs-on: ubuntu-latest steps: diff --git a/.github/workflows/schedule.yml b/.github/workflows/schedule.yml index b40e1433f..ef41f071b 100644 --- a/.github/workflows/schedule.yml +++ b/.github/workflows/schedule.yml @@ -11,8 +11,8 @@ jobs: fail-fast: false matrix: branch: - - 'main' - - 'versions/next-major' + - main + - versions/next-major uses: ./.github/workflows/cth-test.yml with: branch: ${{ matrix.branch }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index c369edbbb..fe10825d8 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,4 +1,4 @@ -name: 'Stale issues and PRs' +name: Stale issues and PRs on: schedule: - cron: '30 1 * * *' @@ -24,6 +24,6 @@ jobs: days-before-close: 30 days-before-pr-stale: -1 operations-per-run: 700 - exempt-issue-labels: "🐛 bug,☀️ enhancement,📚 documentation,➕ feature,🐌 performance, - ➕ test,📝 task,:ant: worker threads,👩🏾‍💻 developer experience" + exempt-issue-labels: '🐛 bug,☀️ enhancement,📚 documentation,➕ feature,🐌 performance, + ➕ test,📝 task,:ant: worker threads,👩🏾‍💻 developer experience' exempt-all-assignees: true diff --git a/.markdownlint-cli2.cjs b/.markdownlint-cli2.cjs index 94cff71da..b9355ada5 100644 --- a/.markdownlint-cli2.cjs +++ b/.markdownlint-cli2.cjs @@ -1,34 +1,34 @@ -"use strict"; +'use strict'; module.exports = { - ignores: [ "node_modules/", "LICENSE.md", ".github/" ], + ignores: [ 'node_modules/', 'LICENSE.md', '.github/' ], - globs: [ "**/*.md" ], + globs: [ '**/*.md' ], config: { // Enable all markdownlint rules default: true, // Set list indent level to 4 which mkdocs / Python-Markdown requires - MD007: { "indent": 4 }, + MD007: { indent: 4 }, // Enable line length check but exclude tables and code blocks MD013: { line_length: 120, tables: false, - code_blocks: false + code_blocks: false, }, // Allow multiple subheadings with the same content // across different section (#1 ##A ##B #2 ##A ##B) MD024: { - allow_different_nesting: true + allow_different_nesting: true, }, // Set Ordered list item prefix to "ordered" (use 1. 2. 3. not 1. 1. 1.) - MD029: { "style": "ordered" }, + MD029: { style: 'ordered' }, // Allow inline HTML MD033: false, - } + }, }; diff --git a/.versionrc.json b/.versionrc.json index c4a97c754..79b92b96a 100644 --- a/.versionrc.json +++ b/.versionrc.json @@ -1,15 +1,15 @@ { - "types": [ - {"type": "feat", "section": "Features"}, - {"type": "fix", "section": "Fixes"}, - {"type": "chore", "section": "Chores"}, - {"type": "chore(deps)", "section": "Dependency updates"}, - {"type": "docs", "section": "Documentation"}, - {"type": "style", "section": "Styling"}, - {"type": "refactor", "section": "Refactors"}, - {"type": "perf", "section": "Performance"}, - {"type": "test", "section": "Testing"} - ], - "header": "\n# Changelog\n\nAll notable changes to this project will be documented in this file.", - "releaseCommitMessageFormat": "chore(release): Release version {{currentTag}} of the npm package" + "types": [ + { "type": "feat", "section": "Features" }, + { "type": "fix", "section": "Fixes" }, + { "type": "chore", "section": "Chores" }, + { "type": "chore(deps)", "section": "Dependency updates" }, + { "type": "docs", "section": "Documentation" }, + { "type": "style", "section": "Styling" }, + { "type": "refactor", "section": "Refactors" }, + { "type": "perf", "section": "Performance" }, + { "type": "test", "section": "Testing" } + ], + "header": "\n# Changelog\n\nAll notable changes to this project will be documented in this file.", + "releaseCommitMessageFormat": "chore(release): Release version {{currentTag}} of the npm package" } diff --git a/bin/server.js b/bin/server.js index e2f6e684c..8d31fefcf 100755 --- a/bin/server.js +++ b/bin/server.js @@ -4,7 +4,9 @@ const { AppRunner } = require('..'); // Attaching a logger to the uncaughtExceptionMonitor event, // such that the default uncaughtException behavior still occurs. process.on('uncaughtExceptionMonitor', (err, origin) => { + // eslint-disable-next-line no-console console.error(`Process is halting due to an ${origin} with error ${err.message}`); }); +// eslint-disable-next-line no-sync new AppRunner().runCliSync(process); diff --git a/commitlint.config.js b/commitlint.config.js index fa41fd250..e1c712835 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1,10 +1,10 @@ module.exports = { - extends: ['@commitlint/config-conventional'], + extends: [ '@commitlint/config-conventional' ], rules: { 'subject-case': [ 2, 'never', - ['start-case', 'kebab-case', 'snake-case'], + [ 'start-case', 'kebab-case', 'snake-case' ], ], - } + }, }; diff --git a/config/README.md b/config/README.md index fa0aebe29..4b03b91be 100644 --- a/config/README.md +++ b/config/README.md @@ -28,13 +28,13 @@ you could import `ldp/metadata-parser/default.json` and then add the following in your root config: ```json - { - "@id": "urn:solid-server:default:MetadataParser", - "@type": "ParallelHandler", - "handlers": [ - { "@type": "MyNewParser" } - ] - } +{ + "@id": "urn:solid-server:default:MetadataParser", + "@type": "ParallelHandler", + "handlers": [ + { "@type": "MyNewParser" } + ] +} ``` This will add the new parser to the list of metadata parsers. @@ -54,13 +54,13 @@ you would have to not import anything from `ldp/metadata-parser` folder, but instead have the following in your root config: ```json - { - "@id": "urn:solid-server:default:MetadataParser", - "@type": "ParallelHandler", - "handlers": [ - { "@type": "SlugParser" } - ] - } +{ + "@id": "urn:solid-server:default:MetadataParser", + "@type": "ParallelHandler", + "handlers": [ + { "@type": "SlugParser" } + ] +} ``` Don't forget that in some cases you would also have to copy some imports! diff --git a/config/app/init/base/init.json b/config/app/init/base/init.json index 218bded06..acfe076fe 100644 --- a/config/app/init/base/init.json +++ b/config/app/init/base/init.json @@ -30,9 +30,9 @@ "source": { "comment": "These initializers will all be executed sequentially when starting the server.", "@id": "urn:solid-server:default:PrimarySequenceInitializer", - "@type":"SequenceHandler", + "@type": "SequenceHandler", "handlers": [ - { "@id": "urn:solid-server:default:CleanupInitializer"}, + { "@id": "urn:solid-server:default:CleanupInitializer" }, { "@id": "urn:solid-server:default:MigrationInitializer" }, { "@id": "urn:solid-server:default:BaseUrlVerifier" }, { "@id": "urn:solid-server:default:PrimaryParallelInitializer" }, @@ -61,7 +61,7 @@ { "comment": "Initializers that need to cleanup or do anything else before something writes to the backend should be added here.", "@id": "urn:solid-server:default:CleanupInitializer", - "@type":"SequenceHandler", + "@type": "SequenceHandler", "handlers": [ ] } diff --git a/config/app/main/default.json b/config/app/main/default.json index 3d36ba295..7f9c13d64 100644 --- a/config/app/main/default.json +++ b/config/app/main/default.json @@ -21,7 +21,7 @@ "@id": "urn:solid-server:default:ClusterManager", "@type": "ClusterManager", "workers": { "@id": "urn:solid-server:default:variable:workers" } - } + } }, { "comment": "This is going to contain the list of finalizers that need to be called. These should be added in the configs where such classes are configured.", @@ -37,7 +37,7 @@ { "comment": "Finalizers that need to cleanup once no more data will be written to the backend should be added here.", "@id": "urn:solid-server:default:CleanupFinalizer", - "@type":"SequenceHandler", + "@type": "SequenceHandler", "handlers": [ ] } diff --git a/config/app/variables/resolver/resolver.json b/config/app/variables/resolver/resolver.json index fd5ad012f..f984e4709 100644 --- a/config/app/variables/resolver/resolver.json +++ b/config/app/variables/resolver/resolver.json @@ -33,7 +33,7 @@ "CombinedShorthandResolver:_resolvers_value": { "@type": "KeyExtractor", "key": "socket", - "defaultValue" : "" + "defaultValue": "" } }, { diff --git a/config/http/notifications/base/listener.json b/config/http/notifications/base/listener.json index 13238d575..df020a2ff 100644 --- a/config/http/notifications/base/listener.json +++ b/config/http/notifications/base/listener.json @@ -20,7 +20,7 @@ "comment": "The ListeningActivityHandler is added to the list of Initializers so Components.js finds and instantiates it.", "@id": "urn:solid-server:default:PrimaryParallelInitializer", "@type": "ParallelHandler", - "handlers": [ { "@id": "urn:solid-server:default:ListeningActivityHandler" } ] + "handlers": [{ "@id": "urn:solid-server:default:ListeningActivityHandler" }] } ] } diff --git a/config/identity/handler/base/provider-factory.json b/config/identity/handler/base/provider-factory.json index 09f236bfa..73d1cd6e6 100644 --- a/config/identity/handler/base/provider-factory.json +++ b/config/identity/handler/base/provider-factory.json @@ -2,7 +2,7 @@ "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld", "@graph": [ { - "comment": "Sets all the relevant Solid-OIDC parameters.", + "comment": "Sets all the relevant Solid-OIDC parameters.", "@id": "urn:solid-server:default:IdentityProviderFactory", "@type": "IdentityProviderFactory", "promptFactory": { diff --git a/config/identity/handler/enable/account.json b/config/identity/handler/enable/account.json index f0b13624f..22fc5c335 100644 --- a/config/identity/handler/enable/account.json +++ b/config/identity/handler/enable/account.json @@ -53,4 +53,3 @@ } ] } - diff --git a/config/identity/handler/enable/password.json b/config/identity/handler/enable/password.json index 92614d3f7..ade11848c 100644 --- a/config/identity/handler/enable/password.json +++ b/config/identity/handler/enable/password.json @@ -49,4 +49,3 @@ } ] } - diff --git a/config/identity/handler/routing/default.json b/config/identity/handler/routing/default.json index f405d355b..930eb5529 100644 --- a/config/identity/handler/routing/default.json +++ b/config/identity/handler/routing/default.json @@ -44,7 +44,7 @@ "comment": "Adds the API version to the JSON response.", "@id": "urn:solid-server:default:VersionHandler", "@type": "VersionHandler", - "source" : { "@id": "urn:solid-server:default:CookieInteractionHandler" } + "source": { "@id": "urn:solid-server:default:CookieInteractionHandler" } }, { "comment": "Updates the cookie values as necessary.", @@ -67,13 +67,13 @@ "controls": [] } }], - "source" : { "@id": "urn:solid-server:default:LocationInteractionHandler" } + "source": { "@id": "urn:solid-server:default:LocationInteractionHandler" } }, { "comment": "Converts 3xx redirects to 200 JSON responses for consumption by browser scripts.", "@id": "urn:solid-server:default:LocationInteractionHandler", "@type": "LocationInteractionHandler", - "source" : { "@id": "urn:solid-server:default:InteractionRouteHandler" } + "source": { "@id": "urn:solid-server:default:InteractionRouteHandler" } }, { "comment": "Contains all JsonInteractionHandlers that can potentially handle the input request.", diff --git a/config/identity/handler/routing/password/create.json b/config/identity/handler/routing/password/create.json index bad8aa720..a37fb0e01 100644 --- a/config/identity/handler/routing/password/create.json +++ b/config/identity/handler/routing/password/create.json @@ -32,8 +32,8 @@ "@id": "urn:solid-server:default:PasswordControlHandler", "@type": "ControlHandler", "controls": [{ - "ControlHandler:_controls_key": "create", - "ControlHandler:_controls_value": { "@id": "urn:solid-server:default:AccountPasswordRoute" } + "ControlHandler:_controls_key": "create", + "ControlHandler:_controls_value": { "@id": "urn:solid-server:default:AccountPasswordRoute" } }] }, @@ -41,10 +41,10 @@ "@id": "urn:solid-server:default:HtmlViewHandler", "@type": "HtmlViewHandler", "templates": [{ - "@id": "urn:solid-server:default:CreatePasswordHtml", - "@type": "HtmlViewEntry", - "filePath": "@css:templates/identity/password/create.html.ejs", - "route": { "@id": "urn:solid-server:default:AccountPasswordRoute" } + "@id": "urn:solid-server:default:CreatePasswordHtml", + "@type": "HtmlViewEntry", + "filePath": "@css:templates/identity/password/create.html.ejs", + "route": { "@id": "urn:solid-server:default:AccountPasswordRoute" } }] }, { diff --git a/config/identity/handler/routing/password/forgot.json b/config/identity/handler/routing/password/forgot.json index 075b6e34d..a55deaca4 100644 --- a/config/identity/handler/routing/password/forgot.json +++ b/config/identity/handler/routing/password/forgot.json @@ -59,8 +59,8 @@ "@id": "urn:solid-server:default:PasswordHtmlControlHandler", "@type": "ControlHandler", "controls": [{ - "ControlHandler:_controls_key": "forgot", - "ControlHandler:_controls_value": { "@id": "urn:solid-server:default:ForgotPasswordRoute" } + "ControlHandler:_controls_key": "forgot", + "ControlHandler:_controls_value": { "@id": "urn:solid-server:default:ForgotPasswordRoute" } }] } } diff --git a/config/identity/handler/routing/pod/resource.json b/config/identity/handler/routing/pod/resource.json index 9b5920dc3..6b734aeaf 100644 --- a/config/identity/handler/routing/pod/resource.json +++ b/config/identity/handler/routing/pod/resource.json @@ -10,7 +10,7 @@ "@type": "BasePodIdRoute", "base": { "@id": "urn:solid-server:default:AccountPodRoute" } }, - "source":{ + "source": { "@type": "ViewInteractionHandler", "source": { "@id": "urn:solid-server:default:PodResourceHandler", @@ -21,7 +21,6 @@ } }, - { "@id": "urn:solid-server:default:MetadataWriter", "@type": "ParallelHandler", diff --git a/config/identity/pod/resource-generators/templated.json b/config/identity/pod/resource-generators/templated.json index 9976077ed..283715369 100644 --- a/config/identity/pod/resource-generators/templated.json +++ b/config/identity/pod/resource-generators/templated.json @@ -25,7 +25,7 @@ "@id": "urn:solid-server:default:TemplateEngine" }, "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" }, - "store": { "@id": "urn:solid-server:default:ResourceStore"} + "store": { "@id": "urn:solid-server:default:ResourceStore" } } } ] diff --git a/config/ldp/handler/components/operation-handler.json b/config/ldp/handler/components/operation-handler.json index 98ba4f99f..6d602a77c 100644 --- a/config/ldp/handler/components/operation-handler.json +++ b/config/ldp/handler/components/operation-handler.json @@ -12,12 +12,12 @@ }, { "@type": "PostOperationHandler", - "store": { "@id": "urn:solid-server:default:ResourceStore" } + "store": { "@id": "urn:solid-server:default:ResourceStore" } }, { "@type": "PutOperationHandler", "store": { "@id": "urn:solid-server:default:ResourceStore" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } }, { "@type": "DeleteOperationHandler", diff --git a/config/ldp/metadata-parser/parsers/cookie.json b/config/ldp/metadata-parser/parsers/cookie.json index 57b29bf78..943c86843 100644 --- a/config/ldp/metadata-parser/parsers/cookie.json +++ b/config/ldp/metadata-parser/parsers/cookie.json @@ -13,7 +13,7 @@ "cookieMap": [ { "CookieParser:_cookieMap_key": { "@id": "urn:solid-server:default:value:accountCookieName" }, - "CookieParser:_cookieMap_value": "urn:npm:solid:community-server:http:accountCookie", + "CookieParser:_cookieMap_value": "urn:npm:solid:community-server:http:accountCookie" } ] } diff --git a/config/ldp/metadata-writer/writers/link-rel-metadata.json b/config/ldp/metadata-writer/writers/link-rel-metadata.json index f740e2847..e2c3be39c 100644 --- a/config/ldp/metadata-writer/writers/link-rel-metadata.json +++ b/config/ldp/metadata-writer/writers/link-rel-metadata.json @@ -7,7 +7,7 @@ "@type": "AuxiliaryLinkMetadataWriter", "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "specificStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" }, - "relationType" : "describedby" + "relationType": "describedby" } ] } diff --git a/config/ldp/modes/default.json b/config/ldp/modes/default.json index 4712dbfaa..a94e3c131 100644 --- a/config/ldp/modes/default.json +++ b/config/ldp/modes/default.json @@ -5,12 +5,12 @@ "comment": "Caches the requested modes based on the incoming operation.", "@id": "urn:solid-server:default:ModesExtractor", "@type": "CachedHandler", - "source" : { + "source": { "comment": "Checks if an operation on a resource requires permissions on intermediate resources (such as newly created parent containers).", "@type": "IntermediateCreateExtractor", "resourceSet": { "@id": "urn:solid-server:default:CachedResourceSet" }, "strategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, - "source": { "@id": "urn:solid-server:default:HttpModesExtractor" }, + "source": { "@id": "urn:solid-server:default:HttpModesExtractor" } } }, { diff --git a/config/sparql-file-storage.json b/config/sparql-file-storage.json index 8e994933a..ea830986d 100644 --- a/config/sparql-file-storage.json +++ b/config/sparql-file-storage.json @@ -74,12 +74,12 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:FileDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } }, { "@id": "urn:solid-server:default:SparqlResourceStore", "@type": "RepresentationConvertingStore", - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" }, + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" }, "options_inConverter": { "@id": "urn:solid-server:default:RepresentationConverter" }, "options_inPreferences_type": { "RepresentationConvertingStore:_options_inPreferences_type_key": "internal/quads", @@ -90,7 +90,7 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:SparqlDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } } } ] diff --git a/config/storage/backend/dynamic.json b/config/storage/backend/dynamic.json index 4c6a3505f..713ab6a81 100644 --- a/config/storage/backend/dynamic.json +++ b/config/storage/backend/dynamic.json @@ -20,7 +20,7 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:FileDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } } } ] diff --git a/config/storage/backend/file.json b/config/storage/backend/file.json index cb60221f0..4480c5d18 100644 --- a/config/storage/backend/file.json +++ b/config/storage/backend/file.json @@ -11,7 +11,7 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:FileDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } } ] } diff --git a/config/storage/backend/global-quota-file.json b/config/storage/backend/global-quota-file.json index 161243f80..c1d1c47e6 100644 --- a/config/storage/backend/global-quota-file.json +++ b/config/storage/backend/global-quota-file.json @@ -13,7 +13,7 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:FileDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } }, { "comment": "Add content-length parser to the MetadataParser.", diff --git a/config/storage/backend/pod-quota-file.json b/config/storage/backend/pod-quota-file.json index b0b8085ae..797ea1ab6 100644 --- a/config/storage/backend/pod-quota-file.json +++ b/config/storage/backend/pod-quota-file.json @@ -13,7 +13,7 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:FileDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } }, { "comment": "Add content-length parser to the MetadataParser.", diff --git a/config/storage/backend/regex.json b/config/storage/backend/regex.json index a0b397219..90fff4aaf 100644 --- a/config/storage/backend/regex.json +++ b/config/storage/backend/regex.json @@ -51,7 +51,7 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:FileDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } }, { "@id": "urn:solid-server:default:MemoryResourceStore", @@ -59,13 +59,13 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:MemoryDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } }, { "comment": "SparqlDataAccessor only accepts quad objects so data to that route needs to be converted", "@id": "urn:solid-server:default:SparqlResourceStore", "@type": "RepresentationConvertingStore", - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" }, + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" }, "options_inConverter": { "@id": "urn:solid-server:default:RepresentationConverter" }, "options_inPreferences_type": { "RepresentationConvertingStore:_options_inPreferences_type_key": "internal/quads", @@ -76,7 +76,7 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:SparqlDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } } } ] diff --git a/config/storage/backend/sparql.json b/config/storage/backend/sparql.json index 5d09dfb9b..af9b57de2 100644 --- a/config/storage/backend/sparql.json +++ b/config/storage/backend/sparql.json @@ -11,7 +11,7 @@ "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "accessor": { "@id": "urn:solid-server:default:SparqlDataAccessor" }, - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" } + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" } }, { "comment": "This makes it so all incoming data is converted to quad objects.", diff --git a/config/storage/middleware/stores/converting.json b/config/storage/middleware/stores/converting.json index e2cab216f..23b7b0958 100644 --- a/config/storage/middleware/stores/converting.json +++ b/config/storage/middleware/stores/converting.json @@ -5,7 +5,7 @@ "comment": "Converts all outgoing resources based on the preferences.", "@id": "urn:solid-server:default:ResourceStore_Converting", "@type": "RepresentationConvertingStore", - "metadataStrategy":{ "@id": "urn:solid-server:default:MetadataStrategy" }, + "metadataStrategy": { "@id": "urn:solid-server:default:MetadataStrategy" }, "options_inConverter": { "@id": "urn:solid-server:default:RepresentationConverter" }, "options_outConverter": { "@id": "urn:solid-server:default:UiEnabledConverter" } } diff --git a/config/storage/middleware/stores/patching.json b/config/storage/middleware/stores/patching.json index 084f284bc..79043ff31 100644 --- a/config/storage/middleware/stores/patching.json +++ b/config/storage/middleware/stores/patching.json @@ -36,7 +36,7 @@ "@id": "urn:solid-server:default:PatchHandler_RDFStore", "@type": "WaterfallHandler", "handlers": [ - { "@id": "urn:solid-server:default:PatchHandler_ImmutableMetadata"}, + { "@id": "urn:solid-server:default:PatchHandler_ImmutableMetadata" }, { "@id": "urn:solid-server:default:PatchHandler_RDF" } ] }, diff --git a/config/util/auxiliary/strategies/acl.json b/config/util/auxiliary/strategies/acl.json index aa3cd1ccd..a52361a96 100644 --- a/config/util/auxiliary/strategies/acl.json +++ b/config/util/auxiliary/strategies/acl.json @@ -24,7 +24,7 @@ "@type": "AuxiliaryLinkMetadataWriter", "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "specificStrategy": { "@id": "urn:solid-server:default:AclStrategy" }, - "relationType" : "acl" + "relationType": "acl" }, { "@id": "urn:solid-server:default:MetadataWriter", diff --git a/config/util/auxiliary/strategies/acr.json b/config/util/auxiliary/strategies/acr.json index f13e98d2c..3aec296c4 100644 --- a/config/util/auxiliary/strategies/acr.json +++ b/config/util/auxiliary/strategies/acr.json @@ -24,7 +24,7 @@ "@type": "AuxiliaryLinkMetadataWriter", "auxiliaryStrategy": { "@id": "urn:solid-server:default:AuxiliaryStrategy" }, "specificStrategy": { "@id": "urn:solid-server:default:AcrStrategy" }, - "relationType" : "acl" + "relationType": "acl" }, { "@id": "urn:solid-server:default:MetadataWriter", diff --git a/documentation/markdown/usage/account/json-api.md b/documentation/markdown/usage/account/json-api.md index 2d1d02a4a..9bbcf83b9 100644 --- a/documentation/markdown/usage/account/json-api.md +++ b/documentation/markdown/usage/account/json-api.md @@ -132,10 +132,10 @@ You can also send a POST request to this resource with a `webId` and `remove: tr ```json { - "baseUrl": "http://localhost:3000/my-pod/", + "baseUrl": "http://localhost:3000/my-pod/", "owners": [ - { - "webId": "http://localhost:3000/my-pod/profile/card#me", + { + "webId": "http://localhost:3000/my-pod/profile/card#me", "visible": false } ] diff --git a/documentation/markdown/usage/dev-configuration.md b/documentation/markdown/usage/dev-configuration.md index 965b2323d..a4c806939 100644 --- a/documentation/markdown/usage/dev-configuration.md +++ b/documentation/markdown/usage/dev-configuration.md @@ -44,6 +44,6 @@ such as the following `.community-solid-server.config.js`: ```js module.exports = { port: 3001, - loggingLevel: "error" + loggingLevel: 'error' }; ``` diff --git a/documentation/markdown/usage/notifications.md b/documentation/markdown/usage/notifications.md index 5cadcd1dc..6a51e7196 100644 --- a/documentation/markdown/usage/notifications.md +++ b/documentation/markdown/usage/notifications.md @@ -71,7 +71,7 @@ at `http://localhost:3000/.notifications/WebSocketChannel2023/`: ```json { - "@context": ["https://www.w3.org/ns/solid/notification/v1"], + "@context": [ "https://www.w3.org/ns/solid/notification/v1" ], "type": "http://www.w3.org/ns/solid/notifications#WebSocketChannel2023", "topic": "http://localhost:3000/foo" } diff --git a/documentation/mkdocs.yml b/documentation/mkdocs.yml index ca45b3a07..043c731dd 100644 --- a/documentation/mkdocs.yml +++ b/documentation/mkdocs.yml @@ -1,12 +1,12 @@ docs_dir: markdown theme: - name: 'material' + name: material custom_dir: overrides icon: repo: fontawesome/brands/github palette: - - media: "(prefers-color-scheme: light)" + - media: '(prefers-color-scheme: light)' scheme: default toggle: icon: material/weather-night @@ -15,7 +15,7 @@ theme: accent: deep orange # Palette toggle for dark mode - - media: "(prefers-color-scheme: dark)" + - media: '(prefers-color-scheme: dark)' scheme: slate toggle: icon: material/weather-sunny @@ -28,12 +28,12 @@ theme: - navigation.top - navigation.indexes -site_name: 'Community Solid Server' +site_name: Community Solid Server site_url: https://communitysolidserver.github.io/CommunitySolidServer repo_url: https://github.com/CommunitySolidServer/CommunitySolidServer repo_name: CommunitySolidServer -edit_uri: "" +edit_uri: '' plugins: - search @@ -76,40 +76,40 @@ extra: nav: - Welcome: - - README.md + - README.md - Usage: - - Example request: usage/example-requests.md - - Metadata: usage/metadata.md - - Identity provider: - - Overview: usage/identity-provider.md - - JSON API: usage/account/json-api.md - - New login method: usage/account/login-method.md - - Data migration: usage/account/migration.md - - Client credentials: usage/client-credentials.md - - Seeding pods: usage/seeding-pods.md - - Notifications: usage/notifications.md - - Development server: usage/dev-configuration.md + - Example request: usage/example-requests.md + - Metadata: usage/metadata.md + - Identity provider: + - Overview: usage/identity-provider.md + - JSON API: usage/account/json-api.md + - New login method: usage/account/login-method.md + - Data migration: usage/account/migration.md + - Client credentials: usage/client-credentials.md + - Seeding pods: usage/seeding-pods.md + - Notifications: usage/notifications.md + - Development server: usage/dev-configuration.md - Architecture: - - Overview: architecture/overview.md - - Dependency injection: architecture/dependency-injection.md - - Core: architecture/core.md - - Features: - - Command line arguments: architecture/features/cli.md - - Server initialization: architecture/features/initialization.md - - HTTP requests: architecture/features/http-handler.md - - Solid protocol: - - Overview: architecture/features/protocol/overview.md - - Parsing: architecture/features/protocol/parsing.md - - Authorization: architecture/features/protocol/authorization.md - - Resource Store: architecture/features/protocol/resource-store.md - - Account management: - - Overview: architecture/features/accounts/overview.md - - Controls: architecture/features/accounts/controls.md - - Routes: architecture/features/accounts/routes.md - - Notifications: architecture/features/notifications.md + - Overview: architecture/overview.md + - Dependency injection: architecture/dependency-injection.md + - Core: architecture/core.md + - Features: + - Command line arguments: architecture/features/cli.md + - Server initialization: architecture/features/initialization.md + - HTTP requests: architecture/features/http-handler.md + - Solid protocol: + - Overview: architecture/features/protocol/overview.md + - Parsing: architecture/features/protocol/parsing.md + - Authorization: architecture/features/protocol/authorization.md + - Resource Store: architecture/features/protocol/resource-store.md + - Account management: + - Overview: architecture/features/accounts/overview.md + - Controls: architecture/features/accounts/controls.md + - Routes: architecture/features/accounts/routes.md + - Notifications: architecture/features/notifications.md - Contributing: - - Pull requests: contributing/making-changes.md - - Releases: contributing/release.md + - Pull requests: contributing/making-changes.md + - Releases: contributing/release.md - API: ./docs/" target="_blank # To write documentation locally, execute the next line and browse to http://localhost:8000 diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..9b7a070a7 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,255 @@ +const antfu = require('@antfu/eslint-config').default; +const jest = require('eslint-plugin-jest'); + +// Copied from https://github.com/antfu/eslint-config/blob/main/src/configs/typescript.ts +// Doing it like this, so we can make sure these only try to trigger on *.ts files, +// preventing issues with the *.js files. +const typeAwareRules = { + 'dot-notation': 'off', + 'no-implied-eval': 'off', + 'no-throw-literal': 'off', + 'ts/await-thenable': 'error', + 'ts/dot-notation': [ 'error', { allowKeywords: true }], + 'ts/no-floating-promises': 'error', + 'ts/no-for-in-array': 'error', + 'ts/no-implied-eval': 'error', + 'ts/no-misused-promises': 'error', + 'ts/no-throw-literal': 'error', + 'ts/no-unnecessary-type-assertion': 'error', + 'ts/no-unsafe-argument': 'error', + 'ts/no-unsafe-assignment': 'error', + 'ts/no-unsafe-call': 'error', + 'ts/no-unsafe-member-access': 'error', + 'ts/no-unsafe-return': 'error', + 'ts/restrict-plus-operands': 'error', + 'ts/restrict-template-expressions': 'error', + 'ts/unbound-method': 'error', +}; + +module.exports = antfu( + {}, + { + // Don't want to lint test assets, or TS snippets in markdown files + ignores: [ 'test/assets/*', '**/*.md/**/*.ts' ], + }, + { + rules: { + 'max-len': 'off', + 'unicorn/filename-case': [ 'error', { + cases: { + camelCase: false, + pascalCase: false, + kebabCase: true, + snakeCase: false, + }, + }], + }, + }, + { + // By default, antfu also triggers type rules on *.js files which causes all kinds of issues for us + files: [ '**/*.ts' ], + languageOptions: { + parserOptions: { + tsconfigRootDir: __dirname, + project: [ './tsconfig.json', './scripts/tsconfig.json', './test/tsconfig.json' ], + }, + }, + rules: { + ...typeAwareRules, + 'ts/naming-convention': [ + 'error', + { + selector: 'default', + format: [ 'camelCase' ], + leadingUnderscore: 'forbid', + trailingUnderscore: 'forbid', + }, + { + selector: 'import', + format: null, + }, + { + selector: 'variable', + format: [ 'camelCase', 'UPPER_CASE' ], + leadingUnderscore: 'forbid', + trailingUnderscore: 'forbid', + }, + { + selector: 'typeLike', + format: [ 'PascalCase' ], + }, + { + selector: [ 'typeParameter' ], + format: [ 'PascalCase' ], + prefix: [ 'T' ], + }, + ], + 'ts/no-floating-promises': [ 'error', { ignoreVoid: false }], + 'ts/promise-function-async': 'error', + + // These are not type specific, but we only care for TS files + 'max-len': [ 'error', { code: 120, ignoreUrls: true }], + 'unicorn/filename-case': [ 'error', { + cases: { + camelCase: true, + pascalCase: true, + kebabCase: false, + snakeCase: false, + }, + }], + }, + }, + { + rules: { + // Might want to enable this one but has a drastic impact on the already existing code + 'antfu/consistent-list-newline': 'off', + + curly: [ 'error', 'all' ], + 'function-paren-newline': [ 'error', 'consistent' ], + 'jsdoc/no-multi-asterisks': [ 'error', { allowWhitespace: true }], + // Need to override `allow` value + 'no-console': [ 'error', { allow: [ '' ]}], + 'no-constructor-return': 'error', + 'no-sync': [ 'error', { allowAtRootLevel: false }], + 'node/prefer-global/buffer': 'off', + 'node/prefer-global/process': 'off', + 'require-unicode-regexp': 'error', + 'sort-imports': [ + 'error', + { + allowSeparatedGroups: false, + ignoreCase: true, + ignoreDeclarationSort: true, + ignoreMemberSort: false, + memberSyntaxSortOrder: [ 'none', 'all', 'multiple', 'single' ], + }, + ], + + 'style/array-bracket-spacing': [ 'error', 'always', { + singleValue: true, + objectsInArrays: false, + arraysInArrays: false, + }], + // Conflicts with style/object-curly-spacing + 'style/block-spacing': 'off', + 'style/brace-style': [ 'error', '1tbs', { allowSingleLine: false }], + 'style/member-delimiter-style': [ 'error', { + multiline: { delimiter: 'semi', requireLast: true }, + singleline: { delimiter: 'semi', requireLast: false }, + }], + 'style/no-extra-parens': [ 'error', 'all', { + conditionalAssign: false, + enforceForArrowConditionals: false, + ignoreJSX: 'all', + nestedBinaryExpressions: false, + returnAssign: false, + }], + 'style/object-curly-spacing': [ 'error', 'always', { + objectsInObjects: false, + arraysInObjects: false, + }], + 'style/operator-linebreak': [ 'error', 'after' ], + 'style/semi': [ 'error', 'always' ], + 'style/space-before-function-paren': [ 'error', 'never' ], + 'style/quote-props': [ 'error', 'as-needed', { + keywords: false, + unnecessary: true, + numbers: false, + }], + 'style/yield-star-spacing': [ 'error', 'after' ], + + 'test/prefer-lowercase-title': 'off', + 'ts/consistent-indexed-object-style': [ 'error', 'record' ], + 'ts/consistent-type-definitions': 'off', + 'ts/method-signature-style': 'error', + 'ts/no-extraneous-class': [ 'error', { + allowConstructorOnly: false, + allowEmpty: false, + allowStaticOnly: false, + }], + + 'unicorn/consistent-function-scoping': 'error', + 'unicorn/expiring-todo-comments': [ 'error', { + ignoreDatesOnPullRequests: false, + terms: [ 'todo' ], + allowWarningComments: false, + }], + 'unicorn/no-process-exit': 'error', + 'unicorn/no-useless-undefined': 'error', + 'unicorn/prefer-array-flat-map': 'error', + 'unicorn/prefer-node-protocol': 'off', + 'unicorn/prefer-spread': 'error', + 'unicorn/require-array-join-separator': 'error', + + 'unused-imports/no-unused-vars': [ + 'error', + { args: 'after-used', vars: 'all', ignoreRestSiblings: true }, + ], + }, + }, + { + // Specifically for tests + // See https://github.com/jest-community/eslint-plugin-jest/issues/1408 + plugins: { + jest, + }, + files: [ 'test/**/*.ts' ], + rules: { + ...jest.configs.all.rules, + // Rule is not smart enough to check called function in the test + 'jest/expect-expect': 'off', + 'jest/valid-title': [ 'error', { + mustNotMatch: { + describe: /\.$/u.source, + }, + mustMatch: { + it: /\.$/u.source, + }, + }], + + // Default rules that are overkill + 'jest/no-hooks': 'off', + 'jest/max-expects': 'off', + 'jest/prefer-expect-assertions': 'off', + 'jest/prefer-lowercase-title': 'off', + 'jest/prefer-strict-equal': 'off', + + // Default rules that might be useful but would require too many files to be changed right now + 'jest/no-conditional-in-test': 'off', + 'jest/prefer-mock-promise-shorthand': 'off', + 'jest/prefer-expect-resolves': 'off', + 'jest/prefer-spy-on': 'off', + 'jest/require-hook': 'off', + 'jest/require-to-throw-message': 'off', + + 'ts/naming-convention': 'off', + 'ts/no-unsafe-argument': 'off', + 'ts/no-unsafe-assignment': 'off', + 'ts/no-unsafe-call': 'off', + 'ts/no-unsafe-member-access': 'off', + 'ts/no-unsafe-return': 'off', + 'ts/unbound-method': 'off', + + // Incorrectly detects usage of undefined in "toHaveBeenLastCalledWith" checks + 'unicorn/no-useless-undefined': 'off', + }, + }, + { + // JSON rules + files: [ '**/*.json' ], + rules: { + 'jsonc/array-bracket-spacing': [ 'error', 'always', { + singleValue: true, + objectsInArrays: false, + arraysInArrays: false, + }], + }, + }, + { + // This is necessary to prevent filename checks caused by JSON being present in a README. + files: [ '**/README.md/**' ], + rules: { + 'unicorn/filename-case': 'off', + }, + }, +); diff --git a/jest.config.js b/jest.config.js index a1204dc91..7fc0e0153 100644 --- a/jest.config.js +++ b/jest.config.js @@ -46,15 +46,15 @@ const esModules = [ module.exports = { transform: { '^.+\\.ts$': [ 'ts-jest', { - tsconfig: '/test/tsconfig.json', - diagnostics: false, - isolatedModules: true, + tsconfig: '/test/tsconfig.json', + diagnostics: false, + isolatedModules: true, }], // This transformer converts ESM packages to CJS '^.+node_modules.+\\.js$': 'jest-esm-transformer-2', }, // By default, node_modules are not transformed, but we want to transform the ESM packages - transformIgnorePatterns: [`/node_modules/(?!(${esModules.join('|')})/)`], + transformIgnorePatterns: [ `/node_modules/(?!(${esModules.join('|')})/)` ], testRegex: '/test/(unit|integration)/.*\\.test\\.ts$', moduleFileExtensions: [ 'ts', @@ -72,6 +72,6 @@ module.exports = { // Slower machines had problems calling the WebSocket integration callbacks on time testTimeout: 60000, - reporters: ci ? ['default', 'github-actions'] : ['default'], - ...(ci && jestGithubRunnerSpecs()), + reporters: ci ? [ 'default', 'github-actions' ] : [ 'default' ], + ...ci && jestGithubRunnerSpecs(), }; diff --git a/package-lock.json b/package-lock.json index c3cf6fc2c..936e14435 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@types/fs-extra": "^11.0.2", "@types/lodash.orderby": "^4.6.7", "@types/mime-types": "^2.1.2", - "@types/n3": "^1.16.2", + "@types/n3": "^1.16.3", "@types/node": "^18.18.4", "@types/nodemailer": "^6.4.11", "@types/oidc-provider": "^8.4.0", @@ -82,28 +82,18 @@ "community-solid-server": "bin/server.js" }, "devDependencies": { + "@antfu/eslint-config": "^1.0.0-beta.27", "@commitlint/cli": "^17.7.2", "@commitlint/config-conventional": "^17.7.0", "@inrupt/solid-client-authn-core": "^1.17.3", "@inrupt/solid-client-authn-node": "^1.17.3", - "@microsoft/tsdoc-config": "^0.16.2", "@tsconfig/node18": "^18.2.2", "@types/jest": "^29.5.5", "@types/set-cookie-parser": "^2.4.4", "@types/supertest": "^2.0.14", - "@typescript-eslint/eslint-plugin": "^5.3.0", - "@typescript-eslint/parser": "^5.3.0", "commit-and-tag-version": "^11.3.0", "componentsjs-generator": "^3.1.2", - "eslint": "^8.21.0", - "eslint-config-es": "4.1.0", - "eslint-import-resolver-typescript": "^3.2.5", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-tsdoc": "^0.2.14", - "eslint-plugin-unicorn": "^37.0.1", - "eslint-plugin-unused-imports": "^2.0.0", + "eslint-plugin-jest": "^27.4.3", "husky": "^4.3.8", "jest": "^29.7.0", "jest-esm-transformer-2": "^1.0.0", @@ -123,6 +113,16 @@ "node": ">=18.0" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -136,6 +136,292 @@ "node": ">=6.0.0" } }, + "node_modules/@antfu/eslint-config": { + "version": "1.0.0-beta.28", + "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-1.0.0-beta.28.tgz", + "integrity": "sha512-JhY4vmucBbJgISm04C5ze3T+amCrWWIdc3SUQ3+utLNLKT9PFJIJt5YIatZNRHxuR2/myMFBTlshgOepUmYwaA==", + "dev": true, + "dependencies": { + "@antfu/eslint-define-config": "^1.23.0-1", + "@stylistic/eslint-plugin": "^0.1.1", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "eslint-config-flat-gitignore": "^0.1.1", + "eslint-plugin-antfu": "^1.0.0-beta.12", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-i": "^2.28.1", + "eslint-plugin-jsdoc": "^46.8.2", + "eslint-plugin-jsonc": "^2.10.0", + "eslint-plugin-markdown": "^3.0.1", + "eslint-plugin-n": "^16.2.0", + "eslint-plugin-no-only-tests": "^3.1.0", + "eslint-plugin-sort-keys": "^2.3.5", + "eslint-plugin-unicorn": "^48.0.1", + "eslint-plugin-unused-imports": "^3.0.0", + "eslint-plugin-vitest": "^0.3.8", + "eslint-plugin-vue": "^9.17.0", + "eslint-plugin-yml": "^1.10.0", + "globals": "^13.23.0", + "jsonc-eslint-parser": "^2.3.0", + "local-pkg": "^0.5.0", + "vue-eslint-parser": "^9.3.2", + "yaml-eslint-parser": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "eslint": ">=8.0.0" + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/parser": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@antfu/eslint-config/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@antfu/eslint-config/node_modules/eslint-plugin-unicorn": { + "version": "48.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-48.0.1.tgz", + "integrity": "sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "@eslint-community/eslint-utils": "^4.4.0", + "ci-info": "^3.8.0", + "clean-regexp": "^1.0.0", + "esquery": "^1.5.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.1", + "jsesc": "^3.0.2", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.10.0", + "semver": "^7.5.4", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=8.44.0" + } + }, + "node_modules/@antfu/eslint-config/node_modules/eslint-plugin-unused-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz", + "integrity": "sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==", + "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0", + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/@antfu/eslint-config/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@antfu/eslint-define-config": { + "version": "1.23.0-2", + "resolved": "https://registry.npmjs.org/@antfu/eslint-define-config/-/eslint-define-config-1.23.0-2.tgz", + "integrity": "sha512-LvxY21+ZhpuBf/aHeBUtGQhSEfad4PkNKXKvDOSvukaM3XVTfBhwmHX2EKwAsdq5DlfjbT3qqYyMiueBIO5iDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/Shinigami92" + }, + { + "type": "paypal", + "url": "https://www.paypal.com/donate/?hosted_button_id=L7GY729FBKTZY" + } + ], + "engines": { + "node": ">=18.0.0", + "npm": ">=9.0.0", + "pnpm": ">= 8.6.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", @@ -253,33 +539,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/eslint-parser": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.5.tgz", - "integrity": "sha512-mUqYa46lgWqHKQ33Q6LNCGp/wPR3eqOYTUixHFsfrSQqRxH0+WOzca75iEjFr5RDGH1dDz622LaHhLOzOuQRUA==", - "dev": true, - "dependencies": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", @@ -3858,16 +4117,438 @@ "kuler": "^2.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "node_modules/@es-joy/jsdoccomment": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", + "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", "dev": true, + "dependencies": { + "comment-parser": "1.4.0", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@es-joy/jsdoccomment/node_modules/comment-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", + "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -3876,19 +4557,24 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -3896,6 +4582,16 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@eslint/js": { + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@fastify/busboy": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", @@ -3906,34 +4602,40 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, + "peer": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "peer": true, + "engines": { + "node": ">=12.22" + }, "funding": { "type": "github", "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true, + "peer": true }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", @@ -4425,30 +5127,6 @@ "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", "dev": true }, - "node_modules/@microsoft/tsdoc": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz", - "integrity": "sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg==", - "dev": true - }, - "node_modules/@microsoft/tsdoc-config": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", - "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", - "dev": true, - "dependencies": { - "@microsoft/tsdoc": "0.14.2", - "ajv": "~6.12.6", - "jju": "~1.4.0", - "resolve": "~1.19.0" - } - }, - "node_modules/@microsoft/tsdoc-config/node_modules/@microsoft/tsdoc": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", - "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", - "dev": true - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4484,32 +5162,6 @@ "node": ">= 8" } }, - "node_modules/@pkgr/utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.0.tgz", - "integrity": "sha512-7dIJ9CRVzBnqyEl7diUHPUFJf/oty2SeoVzcMocc5PeOUDK9KGzvgIBjGRRzzlRDaOjh3ADwH0WeibQvi3ls2Q==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "is-glob": "^4.0.3", - "open": "^8.4.0", - "picocolors": "^1.0.0", - "tiny-glob": "^0.2.9", - "tslib": "^2.4.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@pkgr/utils/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, "node_modules/@rdfjs/data-model": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-1.3.4.tgz", @@ -4627,6 +5279,170 @@ "ts-guards": "^0.5.1" } }, + "node_modules/@stylistic/eslint-plugin": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-0.1.1.tgz", + "integrity": "sha512-pOuT7q5XOain+YBExC7vHHSWEmvp2Z9/v1HTuYjy+EzvZkv7w8pXlC44qmO14G8A5uVaUp3CZtNzTvT2h4Ilaw==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "0.1.1", + "@stylistic/eslint-plugin-jsx": "0.1.1", + "@stylistic/eslint-plugin-ts": "0.1.1" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@stylistic/eslint-plugin-js": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-0.1.1.tgz", + "integrity": "sha512-gZbT/Sqz1viW+87YaGrzosjI54IIAwGuYE+5AgXO1C9zGMLpxDroyU+HpcqVSynN5Nihuaocp89UU49nCJh9KA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "acorn": "^8.10.0", + "escape-string-regexp": "^4.0.0", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esutils": "^2.0.3", + "graphemer": "^1.4.0" + } + }, + "node_modules/@stylistic/eslint-plugin-jsx": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-0.1.1.tgz", + "integrity": "sha512-36+iAWxGIAwGb2k7vS4S14NIt/2NVBCJSn3Q+T91t4MF1fWyaQFOoc5l6c4oW5UTzfr0vgMMcqsr8f8JJjqm0g==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "^0.1.1", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^3.3.5" + } + }, + "node_modules/@stylistic/eslint-plugin-jsx/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-0.1.1.tgz", + "integrity": "sha512-mJHYWzljqrDykOop60nyCAXRp4LLstfNQWXxubJFMOz5tlAoqd2Mex60TCa/fctPhaOd36f/lu1CuU9WgFh+DA==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "0.1.1", + "@typescript-eslint/scope-manager": "^6.8.0", + "@typescript-eslint/type-utils": "^6.8.0", + "@typescript-eslint/utils": "^6.8.0", + "graphemer": "^1.4.0" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", @@ -4736,6 +5552,23 @@ "@types/node": "*" } }, + "node_modules/@types/chai": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", + "dev": true, + "peer": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.4.tgz", + "integrity": "sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/chai": "*" + } + }, "node_modules/@types/clownface": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@types/clownface/-/clownface-1.5.1.tgz", @@ -4897,15 +5730,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, "node_modules/@types/jsonfile": { @@ -4963,6 +5790,15 @@ "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", "dev": true }, + "node_modules/@types/mdast": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.14.tgz", + "integrity": "sha512-gVZ04PGgw1qLZKsnWnyFv4ORnaJ+DXLdHTVSFbU8yX6xZ34Bjg4Q32yPkmveUP1yItXReKfB0Aknlh/3zxTKAw==", + "dev": true, + "dependencies": { + "@types/unist": "^2" + } + }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -4979,9 +5815,9 @@ "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=" }, "node_modules/@types/n3": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.16.2.tgz", - "integrity": "sha512-Qe341EXScwNQdBgCcDQN1ejslB1kznTnzs/4Acv/K7P58BXaYqy3Q56xEPOnM7BhQW5r8ADW7njtlxWyaJy6AA==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.16.3.tgz", + "integrity": "sha512-6PDn2/tUtveGQONiFJDOpl2Aa/YnmwQhdQ8SznUJVFmjI/NEBBdNhnkmYeEFmvOQbhbIeGR+SfmTk71TdqJ5mg==", "dependencies": { "@rdfjs/types": "^1.1.0", "@types/node": "*" @@ -5080,9 +5916,9 @@ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" }, "node_modules/@types/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-0caWDWmpCp0uifxFh+FaqK3CuZ2SkRR/ZRxAV5+zNdC3QVUi6wyOJnefhPvtNt8NQWXB5OA93BUvZsXpWat2Xw==" + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==" }, "node_modules/@types/serve-static": { "version": "1.13.9", @@ -5140,6 +5976,12 @@ "@types/superagent": "*" } }, + "node_modules/@types/unist": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", + "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==", + "dev": true + }, "node_modules/@types/uritemplate": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@types/uritemplate/-/uritemplate-0.3.4.tgz", @@ -5176,263 +6018,14 @@ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.0.tgz", - "integrity": "sha512-ARUEJHJrq85aaiCqez7SANeahDsJTD3AEua34EoQN9pHS6S5Bq9emcIaGGySt/4X2zSi+vF5hAH52sEen7IO7g==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "5.3.0", - "@typescript-eslint/scope-manager": "5.3.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/experimental-utils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.0.tgz", - "integrity": "sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.0.tgz", - "integrity": "sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.0.tgz", - "integrity": "sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz", - "integrity": "sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz", - "integrity": "sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.3.0", - "eslint-visitor-keys": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz", - "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "debug": "^4.3.2" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz", - "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz", - "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz", - "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz", - "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.4.0", - "eslint-visitor-keys": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5442,49 +6035,136 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "node_modules/@typescript-eslint/type-utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.18.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/scope-manager/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/types": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.32.0.tgz", - "integrity": "sha512-EBUKs68DOcT/EjGfzywp+f8wG9Zw6gj6BjWu7KV/IYllqKJFPlZlLSYw/PTvVyiRw50t6wVbgv4p9uE2h6sZrQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5495,13 +6175,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.32.0.tgz", - "integrity": "sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/visitor-keys": "5.32.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5522,17 +6202,19 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5545,79 +6227,13 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.18.0", - "eslint-visitor-keys": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.32.0.tgz", - "integrity": "sha512-S54xOHZgfThiZ38/ZGTgB2rqx51CMJ5MCfVT2IplK4Q7hgzGfe0nLzLCcenDnc/cSjP568hdeKfeDcBgqNHD/g==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.32.0", + "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -5628,13 +6244,113 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true, + "peer": true + }, + "node_modules/@vitest/expect": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", + "dev": true, + "peer": true, + "dependencies": { + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", + "dev": true, + "peer": true, + "dependencies": { + "@vitest/utils": "0.34.6", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "peer": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", + "dev": true, + "peer": true, + "dependencies": { + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", + "dev": true, + "peer": true, + "dependencies": { + "tinyspy": "^2.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", + "dev": true, + "peer": true, + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, "node_modules/abbrev": { @@ -5667,9 +6383,9 @@ } }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5707,6 +6423,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5802,6 +6519,15 @@ "node": ">= 8" } }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -5817,6 +6543,19 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -5824,15 +6563,15 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" }, "engines": { @@ -5852,14 +6591,15 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -5868,16 +6608,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, - "peer": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5906,6 +6649,16 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, "node_modules/async": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", @@ -5935,6 +6688,18 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -6072,6 +6837,12 @@ "node": ">=8" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6176,9 +6947,9 @@ "dev": true }, "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, "engines": { "node": ">=6" @@ -6187,6 +6958,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -6195,6 +6975,16 @@ "node": ">= 0.8" } }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/cache-content-type": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", @@ -6233,13 +7023,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6305,6 +7096,25 @@ "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" }, + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "peer": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -6329,6 +7139,49 @@ "node": ">=10" } }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "peer": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, "node_modules/chokidar": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", @@ -6351,10 +7204,19 @@ } }, "node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } }, "node_modules/cjs-module-lexer": { "version": "1.2.3", @@ -7416,6 +8278,18 @@ "node": ">= 8" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -7525,16 +8399,30 @@ } } }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "peer": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true }, "node_modules/deepmerge": { "version": "4.3.1", @@ -7553,27 +8441,37 @@ "node": ">=10" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { - "object-keys": "^1.0.12" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -7676,6 +8574,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -7879,19 +8778,6 @@ "once": "^1.4.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/entities": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", @@ -7920,31 +8806,50 @@ "dev": true }, "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -7953,6 +8858,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -7970,6 +8898,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -7995,50 +8961,50 @@ } }, "node_modules/eslint": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", - "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, + "peer": true, "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.3", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -8050,32 +9016,39 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-config-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-es/-/eslint-config-es-4.1.0.tgz", - "integrity": "sha512-o7sRistJAqsiVB437ptIodjcBTz+JwUj2youjU9P2zIJMHZOY2eRpEnIMhqOusbWDVqPKefp+3hPSI/qFotECQ==", + "node_modules/eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", "dev": true, - "dependencies": { - "lodash": "4.17.21" + "engines": { + "node": ">=12" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "5.3.0", - "@typescript-eslint/parser": "5.4.0", - "eslint-plugin-eslint-comments": "3.2.0", - "eslint-plugin-extended": "0.2.0", - "eslint-plugin-mocha": "9.0.0", - "eslint-plugin-react": "7.27.1", - "eslint-plugin-unicorn": "37.0.1" + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-config-flat-gitignore": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-flat-gitignore/-/eslint-config-flat-gitignore-0.1.1.tgz", + "integrity": "sha512-ysq0QpN63+uaxE67U0g0HeCweIpv8Ztp7yvm0nYiM2TBalRIG6KQLO5J6lAz2gkA8KVis/QsJppe+BR5VigtWQ==", + "dev": true, + "dependencies": { + "parse-gitignore": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -8094,85 +9067,37 @@ "dev": true }, "node_modules/eslint-import-resolver-node/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.4.0.tgz", - "integrity": "sha512-rBCgiEovwX/HQ8ESWV+XIWZaFiRtDeAXNZdcTATB8UbMuadc9qfGOlIP+vy+c7nsgfEBN4NTwy5qunGNptDP0Q==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.10.0", - "get-tsconfig": "^4.2.0", - "globby": "^13.1.2", - "is-core-module": "^2.9.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.1" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-module-utils/node_modules/debug": { @@ -8184,77 +9109,143 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-module-utils/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-module-utils/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/eslint-plugin-antfu": { + "version": "1.0.0-beta.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-antfu/-/eslint-plugin-antfu-1.0.0-beta.12.tgz", + "integrity": "sha512-vPe0vigzDMmStU/hSZLAXfe6vdc26bOaxQt1a92tuOp3jkp0iT3/VXKlkMxsD9XTV/UL8/SNNTprMOUABC1vhQ==", "dev": true, "dependencies": { - "p-try": "^1.0.0" + "@typescript-eslint/utils": "^6.7.4" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "eslint": "*" } }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "node_modules/eslint-plugin-antfu/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "dependencies": { - "p-limit": "^1.1.0" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" }, "engines": { - "node": ">=4" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-module-utils/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "node_modules/eslint-plugin-antfu/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true, "engines": { - "node": ">=4" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-module-utils/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/eslint-plugin-antfu/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, "engines": { - "node": ">=4" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-antfu/node_modules/@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-antfu/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-es-x": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.2.0.tgz", + "integrity": "sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=8" } }, "node_modules/eslint-plugin-eslint-comments": { @@ -8285,53 +9276,42 @@ "node": ">=0.8.0" } }, - "node_modules/eslint-plugin-extended": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-extended/-/eslint-plugin-extended-0.2.0.tgz", - "integrity": "sha1-iqM1eXaAPBHGQgPVudJkIlfjiBk=", - "dev": true, - "peer": true, - "dependencies": { - "varname": "2.0.2" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "node_modules/eslint-plugin-i": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-i/-/eslint-plugin-i-2.28.1.tgz", + "integrity": "sha512-a4oVt0j3ixNhGhvV4XF6NS7OWRFK2rrJ0Q5C4S2dSRb8FxZi31J0uUd5WJLL58wnVJ/OiQ1BxiXnFA4dWQO1Cg==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", - "has": "^1.0.3", - "is-core-module": "^2.8.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "get-tsconfig": "^4.6.2", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "minimatch": "^3.1.2", + "resolve": "^1.22.3", + "semver": "^7.5.3" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://opencollective.com/unts" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^7.2.0 || ^8" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/eslint-plugin-i/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { + "node_modules/eslint-plugin-i/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", @@ -8343,23 +9323,33 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "node_modules/eslint-plugin-i/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-plugin-i/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-jest": { - "version": "27.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz", - "integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==", + "version": "27.4.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.3.tgz", + "integrity": "sha512-7S6SmmsHsgIm06BAGCAxL+ABd9/IB3MWkz2pudj6Qqor2y1qQpWPfuFU4SG9pWj4xDjF0e+D7Llh5useuSzAZw==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -8368,8 +9358,9 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" }, "peerDependenciesMeta": { "@typescript-eslint/eslint-plugin": { @@ -8380,174 +9371,301 @@ } } }, - "node_modules/eslint-plugin-mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", - "integrity": "sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==", + "node_modules/eslint-plugin-jsdoc": { + "version": "46.8.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz", + "integrity": "sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==", "dev": true, - "peer": true, "dependencies": { - "eslint-utils": "^3.0.0", - "ramda": "^0.27.1" + "@es-joy/jsdoccomment": "~0.40.1", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.0", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.5.4", + "spdx-expression-parse": "^3.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=16" }, "peerDependencies": { - "eslint": ">=7.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/eslint-plugin-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz", - "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==", + "node_modules/eslint-plugin-jsdoc/node_modules/comment-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", + "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", + "dev": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/eslint-plugin-jsonc": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.10.0.tgz", + "integrity": "sha512-9d//o6Jyh4s1RxC9fNSt1+MMaFN2ruFdXPG9XZcb/mR2KkfjADYiNL/hbU6W0Cyxfg3tS/XSFuhl5LgtMD8hmw==", "dev": true, - "peer": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "@eslint-community/eslint-utils": "^4.2.0", + "eslint-compat-utils": "^0.1.2", + "jsonc-eslint-parser": "^2.0.4", + "natural-compare": "^1.4.0" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "peer": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-tsdoc": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.14.tgz", - "integrity": "sha512-fJ3fnZRsdIoBZgzkQjv8vAj6NeeOoFkTfgosj6mKsFjX70QV256sA/wq+y/R2+OL4L8E79VVaVWrPeZnKNe8Ng==", - "dev": true, - "dependencies": { - "@microsoft/tsdoc": "0.13.2", - "@microsoft/tsdoc-config": "0.15.2" - } - }, - "node_modules/eslint-plugin-tsdoc/node_modules/@microsoft/tsdoc-config": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.15.2.tgz", - "integrity": "sha512-mK19b2wJHSdNf8znXSMYVShAHktVr/ib0Ck2FA3lsVBSEhSI/TfXT7DJQkAYgcztTuwazGcg58ZjYdk0hTCVrA==", - "dev": true, - "dependencies": { - "@microsoft/tsdoc": "0.13.2", - "ajv": "~6.12.6", - "jju": "~1.4.0", - "resolve": "~1.19.0" - } - }, - "node_modules/eslint-plugin-unicorn": { - "version": "37.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-37.0.1.tgz", - "integrity": "sha512-E1jq5u9ojnadisJcPi+hMXTGSiIzkIUMDvWsBudsCGXvKUB2aNSU2TcfyW2/jAS5A4ryBXfzxLykMxX1EdluSQ==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "ci-info": "^3.2.0", - "clean-regexp": "^1.0.0", - "eslint-template-visitor": "^2.3.2", - "eslint-utils": "^3.0.0", - "esquery": "^1.4.0", - "indent-string": "4", - "is-builtin-module": "^3.1.0", - "lodash": "^4.17.21", - "pluralize": "^8.0.0", - "read-pkg-up": "^7.0.1", - "regexp-tree": "^0.1.23", - "safe-regex": "^2.1.1", - "semver": "^7.3.5", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "eslint": ">=7.32.0" + "eslint": ">=6.0.0" } }, - "node_modules/eslint-plugin-unused-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", - "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", + "node_modules/eslint-plugin-markdown": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz", + "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==", "dev": true, "dependencies": { - "eslint-rule-composer": "^0.3.0" + "mdast-util-from-markdown": "^0.8.5" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^8.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-n": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.2.0.tgz", + "integrity": "sha512-AQER2jEyQOt1LG6JkGJCCIFotzmlcCZFur2wdKrp1JX2cNotC7Ae0BcD/4lLv3lUAArM9uNS8z/fsvXTd0L71g==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.1.0", + "get-tsconfig": "^4.7.0", + "ignore": "^5.2.4", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-no-only-tests": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz", + "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==", + "dev": true, + "engines": { + "node": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-sort-keys": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-sort-keys/-/eslint-plugin-sort-keys-2.3.5.tgz", + "integrity": "sha512-2j/XKQ9sNJwK8kIp/U0EvuF6stS6/8aIc53/NskE4C5NRNh4dt3xzbZyOdrVC11cTH6Zo59/pdzA0Kb+2fQGWg==", + "dev": true, + "dependencies": { + "natural-compare": "1.4.0" + } + }, + "node_modules/eslint-plugin-vitest": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/eslint-plugin-vitest/-/eslint-plugin-vitest-0.3.8.tgz", + "integrity": "sha512-MYQJzg3i+nLkaIQgjnOhtqHYIt0W6nErqAOKI3LTSQ2aOgcNHGYTwOhpnwGC1IXTvGWjKgAwb7rHwLpcHWHSAQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^6.7.5" + }, + "engines": { + "node": "14.x || >= 16" + }, + "peerDependencies": { + "eslint": ">=8.0.0", + "vitest": "*" }, "peerDependenciesMeta": { "@typescript-eslint/eslint-plugin": { "optional": true + }, + "vitest": { + "vitest": "*" } } }, + "node_modules/eslint-plugin-vitest/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-vitest/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-vitest/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vitest/node_modules/@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vitest/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.0.tgz", + "integrity": "sha512-yUM8a2OD/7Qs0PiugkRaxgz5KBRvzMvWShity2UvVFAN0yk8029mGpTdg/TNARPiYzp335mEwDHwcAR8tQNe4g==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-yml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.10.0.tgz", + "integrity": "sha512-53SUwuNDna97lVk38hL/5++WXDuugPM9SUQ1T645R0EHMRCdBIIxGye/oOX2qO3FQ7aImxaUZJU/ju+NMUBrLQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "eslint-compat-utils": "^0.1.0", + "lodash": "^4.17.21", + "natural-compare": "^1.4.0", + "yaml-eslint-parser": "^1.2.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-rule-composer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", @@ -8570,75 +9688,40 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-template-visitor": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz", - "integrity": "sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "@babel/core": "^7.12.16", - "@babel/eslint-parser": "^7.12.16", - "eslint-visitor-keys": "^2.0.0", - "esquery": "^1.3.1", - "multimap": "^1.1.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "peer": true }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/estraverse": { @@ -8646,6 +9729,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "peer": true, "engines": { "node": ">=4.0" } @@ -8655,6 +9739,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "peer": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -8671,6 +9756,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "peer": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -8683,6 +9769,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -8695,6 +9782,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "peer": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -8710,6 +9798,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "peer": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -8725,6 +9814,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "peer": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -8736,14 +9826,14 @@ } }, "node_modules/espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8752,15 +9842,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -8775,9 +9856,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -8939,8 +10020,9 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "peer": true }, "node_modules/fast-safe-stringify": { "version": "2.1.1", @@ -9032,6 +10114,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -9111,6 +10194,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, + "peer": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -9123,13 +10207,23 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -9208,16 +10302,40 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -9236,15 +10354,26 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9375,10 +10504,13 @@ } }, "node_modules/get-tsconfig": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", - "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, "funding": { "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } @@ -9494,9 +10626,9 @@ } }, "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -9520,11 +10652,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/globby": { "version": "11.1.0", @@ -9546,11 +10687,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/got": { "version": "13.0.0", @@ -9581,10 +10728,10 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "node_modules/graphql": { @@ -9653,9 +10800,9 @@ } }, "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9669,10 +10816,34 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -9703,6 +10874,18 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -10090,13 +11273,13 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -10126,16 +11309,57 @@ "url": "https://opencollective.com/ioredis" } }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10153,12 +11377,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10168,21 +11393,24 @@ } }, "node_modules/is-builtin-module": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", - "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, "dependencies": { - "builtin-modules": "^3.0.0" + "builtin-modules": "^3.3.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { "node": ">= 0.4" @@ -10215,19 +11443,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/is-extglob": { @@ -10282,10 +11505,20 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, "engines": { "node": ">= 0.4" @@ -10304,10 +11537,13 @@ } }, "node_modules/is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -10324,6 +11560,16 @@ "node": ">=8" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -10350,10 +11596,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10411,6 +11660,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -10423,18 +11687,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -11192,12 +12444,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", - "dev": true - }, "node_modules/jose": { "version": "4.15.2", "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.2.tgz", @@ -11225,6 +12471,15 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -11258,13 +12513,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "peer": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "dev": true, + "peer": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -11284,6 +12541,24 @@ "node": ">=6" } }, + "node_modules/jsonc-eslint-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", + "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, "node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", @@ -11408,14 +12683,15 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, - "peer": true, "dependencies": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { "node": ">=4.0" @@ -11566,6 +12842,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -11626,6 +12903,22 @@ "node": ">=4" } }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -11748,17 +13041,14 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "peer": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" + "get-func-name": "^2.0.1" } }, "node_modules/lowercase-keys": { @@ -11789,6 +13079,26 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "peer": true + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -11966,6 +13276,33 @@ "node": ">= 16" } }, + "node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -12099,6 +13436,26 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -12207,6 +13564,18 @@ "node": ">= 6" } }, + "node_modules/mlly": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", + "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" + } + }, "node_modules/modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -12216,18 +13585,6 @@ "node": ">=0.10.0" } }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/multimap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz", - "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==", - "dev": true - }, "node_modules/n3": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/n3/-/n3-1.17.1.tgz", @@ -12506,6 +13863,18 @@ "node": ">=8" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -12524,9 +13893,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12541,14 +13910,14 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -12558,62 +13927,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "peer": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -12730,23 +14052,6 @@ "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/opencollective-postinstall": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", @@ -12772,17 +14077,18 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, + "peer": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -12844,6 +14150,33 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-gitignore": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz", + "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -12917,6 +14250,22 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -12965,6 +14314,17 @@ "node": ">=8" } }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, "node_modules/please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -12983,11 +14343,73 @@ "node": ">=4" } }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "peer": true, "engines": { "node": ">= 0.8.0" } @@ -13050,25 +14472,6 @@ "node": ">= 6" } }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "peer": true - }, "node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", @@ -13176,13 +14579,6 @@ "node": ">=8" } }, - "node_modules/ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true, - "peer": true - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -13670,23 +15066,23 @@ } }, "node_modules/regexp-tree": { - "version": "0.1.24", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", - "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, "bin": { "regexp-tree": "bin/regexp-tree" } }, "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -13695,16 +15091,25 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/regjsparser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", + "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "jsesc": "~0.5.0" }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" } }, "node_modules/relative-to-absolute-iri": { @@ -13789,6 +15194,15 @@ "node": ">=8" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve.exports": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", @@ -13835,6 +15249,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -13845,6 +15260,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "peer": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -13868,6 +15300,30 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -13887,13 +15343,18 @@ } ] }, - "node_modules/safe-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", - "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, "dependencies": { - "regexp-tree": "~0.1.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safe-stable-stringify": { @@ -13947,6 +15408,35 @@ "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -14018,6 +15508,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "peer": true + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -14081,6 +15578,16 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", @@ -14280,6 +15787,13 @@ "node": ">=8" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "peer": true + }, "node_modules/standard-as-callback": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", @@ -14293,6 +15807,13 @@ "node": ">= 0.8" } }, + "node_modules/std-env": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", + "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", + "dev": true, + "peer": true + }, "node_modules/stream-to-string": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/stream-to-string/-/stream-to-string-1.2.0.tgz", @@ -14345,47 +15866,46 @@ "node": ">=8" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14444,6 +15964,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "peer": true, + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/superagent": { "version": "8.0.9", "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", @@ -14513,37 +16046,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/synckit": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.1.tgz", - "integrity": "sha512-rJEeygO5PNmcZICmrgnbOd2usi5zWE1ESc0Gn5tTmJlongoU8zCTwMFQtar2UgMSiR68vK9afPQ+uVs2lURSIA==", - "dev": true, - "dependencies": { - "@pkgr/utils": "^2.3.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/synckit/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -14576,7 +16078,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "dev": true, + "peer": true }, "node_modules/through": { "version": "2.3.8", @@ -14598,14 +16101,31 @@ "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "node_modules/tinybench": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", + "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", "dev": true, - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" + "peer": true + }, + "node_modules/tinypool": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "dev": true, + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", + "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=14.0.0" } }, "node_modules/tmpl": { @@ -14674,6 +16194,18 @@ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-guards": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/ts-guards/-/ts-guards-0.5.1.tgz", @@ -14774,30 +16306,6 @@ } } }, - "node_modules/tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -14832,6 +16340,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -14869,6 +16378,71 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -14951,6 +16525,12 @@ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, + "node_modules/ufo": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", + "integrity": "sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==", + "dev": true + }, "node_modules/uglify-js": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.0.tgz", @@ -14964,14 +16544,14 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" }, "funding": { @@ -14996,6 +16576,19 @@ "node": ">=14.0" } }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -15078,12 +16671,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -15119,16 +16706,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/varname": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/varname/-/varname-2.0.2.tgz", - "integrity": "sha1-33lplSuIL20BH4UCnhOyyD5yEVg=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -15137,6 +16714,177 @@ "node": ">= 0.8" } }, + "node_modules/vite": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dev": true, + "peer": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", + "dev": true, + "peer": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", + "dev": true, + "peer": true, + "dependencies": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "vite-node": "0.34.6", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*", + "playwright": "*", + "safaridriver": "*", + "webdriverio": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", @@ -15149,6 +16897,55 @@ "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", "dev": true }, + "node_modules/vue-eslint-parser": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", + "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -15200,6 +16997,42 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "peer": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/winston": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", @@ -15242,15 +17075,6 @@ "node": ">=0.1.90" } }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -15310,6 +17134,15 @@ } } }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -15346,6 +17179,32 @@ "node": ">= 6" } }, + "node_modules/yaml-eslint-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz", + "integrity": "sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.0.0", + "lodash": "^4.17.21", + "yaml": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/yaml-eslint-parser/node_modules/yaml": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", + "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -15446,6 +17305,13 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "peer": true + }, "@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -15456,6 +17322,172 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, + "@antfu/eslint-config": { + "version": "1.0.0-beta.28", + "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-1.0.0-beta.28.tgz", + "integrity": "sha512-JhY4vmucBbJgISm04C5ze3T+amCrWWIdc3SUQ3+utLNLKT9PFJIJt5YIatZNRHxuR2/myMFBTlshgOepUmYwaA==", + "dev": true, + "requires": { + "@antfu/eslint-define-config": "^1.23.0-1", + "@stylistic/eslint-plugin": "^0.1.1", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "eslint-config-flat-gitignore": "^0.1.1", + "eslint-plugin-antfu": "^1.0.0-beta.12", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-i": "^2.28.1", + "eslint-plugin-jsdoc": "^46.8.2", + "eslint-plugin-jsonc": "^2.10.0", + "eslint-plugin-markdown": "^3.0.1", + "eslint-plugin-n": "^16.2.0", + "eslint-plugin-no-only-tests": "^3.1.0", + "eslint-plugin-sort-keys": "^2.3.5", + "eslint-plugin-unicorn": "^48.0.1", + "eslint-plugin-unused-imports": "^3.0.0", + "eslint-plugin-vitest": "^0.3.8", + "eslint-plugin-vue": "^9.17.0", + "eslint-plugin-yml": "^1.10.0", + "globals": "^13.23.0", + "jsonc-eslint-parser": "^2.3.0", + "local-pkg": "^0.5.0", + "vue-eslint-parser": "^9.3.2", + "yaml-eslint-parser": "^1.2.2" + }, + "dependencies": { + "@typescript-eslint/eslint-plugin": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/parser": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + } + }, + "@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + } + }, + "eslint-plugin-unicorn": { + "version": "48.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-48.0.1.tgz", + "integrity": "sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "@eslint-community/eslint-utils": "^4.4.0", + "ci-info": "^3.8.0", + "clean-regexp": "^1.0.0", + "esquery": "^1.5.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.1", + "jsesc": "^3.0.2", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.10.0", + "semver": "^7.5.4", + "strip-indent": "^3.0.0" + } + }, + "eslint-plugin-unused-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz", + "integrity": "sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==", + "dev": true, + "requires": { + "eslint-rule-composer": "^0.3.0" + } + }, + "jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true + } + } + }, + "@antfu/eslint-define-config": { + "version": "1.23.0-2", + "resolved": "https://registry.npmjs.org/@antfu/eslint-define-config/-/eslint-define-config-1.23.0-2.tgz", + "integrity": "sha512-LvxY21+ZhpuBf/aHeBUtGQhSEfad4PkNKXKvDOSvukaM3XVTfBhwmHX2EKwAsdq5DlfjbT3qqYyMiueBIO5iDQ==", + "dev": true + }, "@babel/code-frame": { "version": "7.22.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", @@ -15546,25 +17578,6 @@ } } }, - "@babel/eslint-parser": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.5.tgz", - "integrity": "sha512-mUqYa46lgWqHKQ33Q6LNCGp/wPR3eqOYTUixHFsfrSQqRxH0+WOzca75iEjFr5RDGH1dDz622LaHhLOzOuQRUA==", - "dev": true, - "requires": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, "@babel/generator": { "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", @@ -18838,16 +20851,227 @@ "kuler": "^2.0.0" } }, - "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "@es-joy/jsdoccomment": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", + "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", "dev": true, + "requires": { + "comment-parser": "1.4.0", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "dependencies": { + "comment-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", + "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", + "dev": true + } + } + }, + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "peer": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -18859,19 +21083,28 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "peer": true }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "peer": true, "requires": { "argparse": "^2.0.1" } } } }, + "@eslint/js": { + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", + "dev": true, + "peer": true + }, "@fastify/busboy": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", @@ -18879,27 +21112,30 @@ "dev": true }, "@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, + "peer": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" } }, - "@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "peer": true }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true, + "peer": true }, "@hutson/parse-repository-url": { "version": "3.0.2", @@ -19301,32 +21537,6 @@ "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", "dev": true }, - "@microsoft/tsdoc": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz", - "integrity": "sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg==", - "dev": true - }, - "@microsoft/tsdoc-config": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", - "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", - "dev": true, - "requires": { - "@microsoft/tsdoc": "0.14.2", - "ajv": "~6.12.6", - "jju": "~1.4.0", - "resolve": "~1.19.0" - }, - "dependencies": { - "@microsoft/tsdoc": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", - "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", - "dev": true - } - } - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -19353,28 +21563,6 @@ "fastq": "^1.6.0" } }, - "@pkgr/utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.0.tgz", - "integrity": "sha512-7dIJ9CRVzBnqyEl7diUHPUFJf/oty2SeoVzcMocc5PeOUDK9KGzvgIBjGRRzzlRDaOjh3ADwH0WeibQvi3ls2Q==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "is-glob": "^4.0.3", - "open": "^8.4.0", - "picocolors": "^1.0.0", - "tiny-glob": "^0.2.9", - "tslib": "^2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - } - } - }, "@rdfjs/data-model": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-1.3.4.tgz", @@ -19474,6 +21662,122 @@ "ts-guards": "^0.5.1" } }, + "@stylistic/eslint-plugin": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-0.1.1.tgz", + "integrity": "sha512-pOuT7q5XOain+YBExC7vHHSWEmvp2Z9/v1HTuYjy+EzvZkv7w8pXlC44qmO14G8A5uVaUp3CZtNzTvT2h4Ilaw==", + "dev": true, + "requires": { + "@stylistic/eslint-plugin-js": "0.1.1", + "@stylistic/eslint-plugin-jsx": "0.1.1", + "@stylistic/eslint-plugin-ts": "0.1.1" + } + }, + "@stylistic/eslint-plugin-js": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-0.1.1.tgz", + "integrity": "sha512-gZbT/Sqz1viW+87YaGrzosjI54IIAwGuYE+5AgXO1C9zGMLpxDroyU+HpcqVSynN5Nihuaocp89UU49nCJh9KA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "acorn": "^8.10.0", + "escape-string-regexp": "^4.0.0", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esutils": "^2.0.3", + "graphemer": "^1.4.0" + } + }, + "@stylistic/eslint-plugin-jsx": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-0.1.1.tgz", + "integrity": "sha512-36+iAWxGIAwGb2k7vS4S14NIt/2NVBCJSn3Q+T91t4MF1fWyaQFOoc5l6c4oW5UTzfr0vgMMcqsr8f8JJjqm0g==", + "dev": true, + "requires": { + "@stylistic/eslint-plugin-js": "^0.1.1", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^3.3.5" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "@stylistic/eslint-plugin-ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-0.1.1.tgz", + "integrity": "sha512-mJHYWzljqrDykOop60nyCAXRp4LLstfNQWXxubJFMOz5tlAoqd2Mex60TCa/fctPhaOd36f/lu1CuU9WgFh+DA==", + "dev": true, + "requires": { + "@stylistic/eslint-plugin-js": "0.1.1", + "@typescript-eslint/scope-manager": "^6.8.0", + "@typescript-eslint/type-utils": "^6.8.0", + "@typescript-eslint/utils": "^6.8.0", + "graphemer": "^1.4.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + } + }, + "@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + } + } + } + }, "@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", @@ -19580,6 +21884,23 @@ "@types/node": "*" } }, + "@types/chai": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", + "dev": true, + "peer": true + }, + "@types/chai-subset": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.4.tgz", + "integrity": "sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==", + "dev": true, + "peer": true, + "requires": { + "@types/chai": "*" + } + }, "@types/clownface": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@types/clownface/-/clownface-1.5.1.tgz", @@ -19741,15 +22062,9 @@ } }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, "@types/jsonfile": { @@ -19807,6 +22122,15 @@ "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", "dev": true }, + "@types/mdast": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.14.tgz", + "integrity": "sha512-gVZ04PGgw1qLZKsnWnyFv4ORnaJ+DXLdHTVSFbU8yX6xZ34Bjg4Q32yPkmveUP1yItXReKfB0Aknlh/3zxTKAw==", + "dev": true, + "requires": { + "@types/unist": "^2" + } + }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -19823,9 +22147,9 @@ "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=" }, "@types/n3": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.16.2.tgz", - "integrity": "sha512-Qe341EXScwNQdBgCcDQN1ejslB1kznTnzs/4Acv/K7P58BXaYqy3Q56xEPOnM7BhQW5r8ADW7njtlxWyaJy6AA==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.16.3.tgz", + "integrity": "sha512-6PDn2/tUtveGQONiFJDOpl2Aa/YnmwQhdQ8SznUJVFmjI/NEBBdNhnkmYeEFmvOQbhbIeGR+SfmTk71TdqJ5mg==", "requires": { "@rdfjs/types": "^1.1.0", "@types/node": "*" @@ -19926,9 +22250,9 @@ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" }, "@types/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-0caWDWmpCp0uifxFh+FaqK3CuZ2SkRR/ZRxAV5+zNdC3QVUi6wyOJnefhPvtNt8NQWXB5OA93BUvZsXpWat2Xw==" + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==" }, "@types/serve-static": { "version": "1.13.9", @@ -19986,6 +22310,12 @@ "@types/superagent": "*" } }, + "@types/unist": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", + "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==", + "dev": true + }, "@types/uritemplate": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@types/uritemplate/-/uritemplate-0.3.4.tgz", @@ -20022,194 +22352,100 @@ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" }, - "@typescript-eslint/eslint-plugin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.0.tgz", - "integrity": "sha512-ARUEJHJrq85aaiCqez7SANeahDsJTD3AEua34EoQN9pHS6S5Bq9emcIaGGySt/4X2zSi+vF5hAH52sEen7IO7g==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "5.3.0", - "@typescript-eslint/scope-manager": "5.3.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/experimental-utils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.0.tgz", - "integrity": "sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.0.tgz", - "integrity": "sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0" - } - }, - "@typescript-eslint/types": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.0.tgz", - "integrity": "sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz", - "integrity": "sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz", - "integrity": "sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.3.0", - "eslint-visitor-keys": "^3.0.0" - } - }, - "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true - } - } - }, - "@typescript-eslint/parser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz", - "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.4.0", - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/typescript-estree": "5.4.0", - "debug": "^4.3.2" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz", - "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0" - } - }, - "@typescript-eslint/types": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz", - "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz", - "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.4.0", - "@typescript-eslint/visitor-keys": "5.4.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz", - "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.4.0", - "eslint-visitor-keys": "^3.0.0" - } - }, - "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true - } - } - }, "@typescript-eslint/scope-manager": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz", - "integrity": "sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "dependencies": { - "@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", - "dev": true - }, - "@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", + "@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.18.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" } }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + } } } }, "@typescript-eslint/types": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.32.0.tgz", - "integrity": "sha512-EBUKs68DOcT/EjGfzywp+f8wG9Zw6gj6BjWu7KV/IYllqKJFPlZlLSYw/PTvVyiRw50t6wVbgv4p9uE2h6sZrQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.32.0.tgz", - "integrity": "sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/visitor-keys": "5.32.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -20218,76 +22454,115 @@ } }, "@typescript-eslint/utils": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.18.0.tgz", - "integrity": "sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "requires": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.18.0", - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/typescript-estree": "5.18.0", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "@typescript-eslint/types": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.18.0.tgz", - "integrity": "sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz", - "integrity": "sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.18.0", - "@typescript-eslint/visitor-keys": "5.18.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz", - "integrity": "sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.18.0", - "eslint-visitor-keys": "^3.0.0" - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - } + "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.32.0.tgz", - "integrity": "sha512-S54xOHZgfThiZ38/ZGTgB2rqx51CMJ5MCfVT2IplK4Q7hgzGfe0nLzLCcenDnc/cSjP568hdeKfeDcBgqNHD/g==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.32.0", + "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "peer": true + }, + "@vitest/expect": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", + "dev": true, + "peer": true, + "requires": { + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" + } + }, + "@vitest/runner": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", + "dev": true, + "peer": true, + "requires": { + "@vitest/utils": "0.34.6", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" }, "dependencies": { - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "peer": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "peer": true } } }, + "@vitest/snapshot": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", + "dev": true, + "peer": true, + "requires": { + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" + } + }, + "@vitest/spy": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", + "dev": true, + "peer": true, + "requires": { + "tinyspy": "^2.1.1" + } + }, + "@vitest/utils": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", + "dev": true, + "peer": true, + "requires": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -20312,9 +22587,9 @@ } }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-jsx": { @@ -20341,6 +22616,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -20409,6 +22685,12 @@ "picomatch": "^2.0.4" } }, + "are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -20424,6 +22706,16 @@ "sprintf-js": "~1.0.2" } }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, "array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -20431,15 +22723,15 @@ "dev": true }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" } }, @@ -20450,26 +22742,30 @@ "dev": true }, "array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" } }, - "array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, - "peer": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" } }, "arrayify-stream": { @@ -20489,6 +22785,13 @@ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "peer": true + }, "async": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", @@ -20518,6 +22821,12 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, "babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -20614,6 +22923,12 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -20678,16 +22993,32 @@ "dev": true }, "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, + "cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "peer": true + }, "cache-content-type": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", @@ -20717,13 +23048,14 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" } }, "callsites": { @@ -20760,6 +23092,22 @@ "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" }, + "chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "peer": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -20775,6 +23123,34 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "peer": true, + "requires": { + "get-func-name": "^2.0.2" + } + }, "chokidar": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", @@ -20792,9 +23168,9 @@ } }, "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true }, "cjs-module-lexer": { @@ -21626,6 +24002,12 @@ "which": "^2.0.1" } }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, "dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -21699,16 +24081,27 @@ "dev": true, "requires": {} }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "peer": true, + "requires": { + "type-detect": "^4.0.0" + } + }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true }, "deepmerge": { "version": "4.3.1", @@ -21721,19 +24114,26 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "delayed-stream": { @@ -21810,6 +24210,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "peer": true, "requires": { "esutils": "^2.0.2" } @@ -21957,16 +24358,6 @@ "once": "^1.4.0" } }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, "entities": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", @@ -21991,31 +24382,70 @@ } }, "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "requires": { - "call-bind": "^1.0.2", + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + } + }, + "es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" } }, "es-to-primitive": { @@ -22029,6 +24459,37 @@ "is-symbol": "^1.0.2" } }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "peer": true, + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -22045,85 +24506,83 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", - "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, + "peer": true, "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.3", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "peer": true }, "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "peer": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "dev": true, + "peer": true }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "peer": true, "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -22134,6 +24593,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "peer": true, "requires": { "is-glob": "^4.0.3" } @@ -22143,6 +24603,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "peer": true, "requires": { "argparse": "^2.0.1" } @@ -22152,6 +24613,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "peer": true, "requires": { "p-locate": "^5.0.0" } @@ -22161,6 +24623,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "peer": true, "requires": { "yocto-queue": "^0.1.0" } @@ -22170,29 +24633,38 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "peer": true, "requires": { "p-limit": "^3.0.2" } } } }, - "eslint-config-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-es/-/eslint-config-es-4.1.0.tgz", - "integrity": "sha512-o7sRistJAqsiVB437ptIodjcBTz+JwUj2youjU9P2zIJMHZOY2eRpEnIMhqOusbWDVqPKefp+3hPSI/qFotECQ==", + "eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "dev": true, + "requires": {} + }, + "eslint-config-flat-gitignore": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-flat-gitignore/-/eslint-config-flat-gitignore-0.1.1.tgz", + "integrity": "sha512-ysq0QpN63+uaxE67U0g0HeCweIpv8Ztp7yvm0nYiM2TBalRIG6KQLO5J6lAz2gkA8KVis/QsJppe+BR5VigtWQ==", "dev": true, "requires": { - "lodash": "4.17.21" + "parse-gitignore": "^2.0.0" } }, "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" }, "dependencies": { "debug": { @@ -22211,61 +24683,25 @@ "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } } } }, - "eslint-import-resolver-typescript": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.4.0.tgz", - "integrity": "sha512-rBCgiEovwX/HQ8ESWV+XIWZaFiRtDeAXNZdcTATB8UbMuadc9qfGOlIP+vy+c7nsgfEBN4NTwy5qunGNptDP0Q==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.10.0", - "get-tsconfig": "^4.2.0", - "globby": "^13.1.2", - "is-core-module": "^2.9.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.1" - }, - "dependencies": { - "globby": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", - "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - } - } - }, "eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "dependencies": { "debug": { @@ -22277,63 +24713,91 @@ "ms": "^2.1.1" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true } } }, + "eslint-plugin-antfu": { + "version": "1.0.0-beta.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-antfu/-/eslint-plugin-antfu-1.0.0-beta.12.tgz", + "integrity": "sha512-vPe0vigzDMmStU/hSZLAXfe6vdc26bOaxQt1a92tuOp3jkp0iT3/VXKlkMxsD9XTV/UL8/SNNTprMOUABC1vhQ==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^6.7.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + } + }, + "@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + } + } + } + }, + "eslint-plugin-es-x": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.2.0.tgz", + "integrity": "sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0" + } + }, "eslint-plugin-eslint-comments": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", @@ -22352,44 +24816,30 @@ } } }, - "eslint-plugin-extended": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-extended/-/eslint-plugin-extended-0.2.0.tgz", - "integrity": "sha1-iqM1eXaAPBHGQgPVudJkIlfjiBk=", - "dev": true, - "peer": true, - "requires": { - "varname": "2.0.2" - } - }, - "eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "eslint-plugin-i": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-i/-/eslint-plugin-i-2.28.1.tgz", + "integrity": "sha512-a4oVt0j3ixNhGhvV4XF6NS7OWRFK2rrJ0Q5C4S2dSRb8FxZi31J0uUd5WJLL58wnVJ/OiQ1BxiXnFA4dWQO1Cg==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", - "has": "^1.0.3", - "is-core-module": "^2.8.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "get-tsconfig": "^4.6.2", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "minimatch": "^3.1.2", + "resolve": "^1.22.3", + "semver": "^7.5.3" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "doctrine": { @@ -22401,152 +24851,218 @@ "esutils": "^2.0.2" } }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } } } }, "eslint-plugin-jest": { - "version": "27.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz", - "integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==", + "version": "27.4.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.3.tgz", + "integrity": "sha512-7S6SmmsHsgIm06BAGCAxL+ABd9/IB3MWkz2pudj6Qqor2y1qQpWPfuFU4SG9pWj4xDjF0e+D7Llh5useuSzAZw==", "dev": true, "requires": { "@typescript-eslint/utils": "^5.10.0" } }, - "eslint-plugin-mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", - "integrity": "sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==", + "eslint-plugin-jsdoc": { + "version": "46.8.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz", + "integrity": "sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==", "dev": true, - "peer": true, "requires": { - "eslint-utils": "^3.0.0", - "ramda": "^0.27.1" - } - }, - "eslint-plugin-react": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz", - "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==", - "dev": true, - "peer": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "@es-joy/jsdoccomment": "~0.40.1", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.0", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.5.4", + "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "comment-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", + "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", + "dev": true + } + } + }, + "eslint-plugin-jsonc": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.10.0.tgz", + "integrity": "sha512-9d//o6Jyh4s1RxC9fNSt1+MMaFN2ruFdXPG9XZcb/mR2KkfjADYiNL/hbU6W0Cyxfg3tS/XSFuhl5LgtMD8hmw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "eslint-compat-utils": "^0.1.2", + "jsonc-eslint-parser": "^2.0.4", + "natural-compare": "^1.4.0" + } + }, + "eslint-plugin-markdown": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz", + "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==", + "dev": true, + "requires": { + "mdast-util-from-markdown": "^0.8.5" + } + }, + "eslint-plugin-n": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.2.0.tgz", + "integrity": "sha512-AQER2jEyQOt1LG6JkGJCCIFotzmlcCZFur2wdKrp1JX2cNotC7Ae0BcD/4lLv3lUAArM9uNS8z/fsvXTd0L71g==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.1.0", + "get-tsconfig": "^4.7.0", + "ignore": "^5.2.4", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" }, "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "peer": true - }, "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, - "peer": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true } } }, - "eslint-plugin-tsdoc": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.14.tgz", - "integrity": "sha512-fJ3fnZRsdIoBZgzkQjv8vAj6NeeOoFkTfgosj6mKsFjX70QV256sA/wq+y/R2+OL4L8E79VVaVWrPeZnKNe8Ng==", + "eslint-plugin-no-only-tests": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz", + "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==", + "dev": true + }, + "eslint-plugin-sort-keys": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-sort-keys/-/eslint-plugin-sort-keys-2.3.5.tgz", + "integrity": "sha512-2j/XKQ9sNJwK8kIp/U0EvuF6stS6/8aIc53/NskE4C5NRNh4dt3xzbZyOdrVC11cTH6Zo59/pdzA0Kb+2fQGWg==", "dev": true, "requires": { - "@microsoft/tsdoc": "0.13.2", - "@microsoft/tsdoc-config": "0.15.2" + "natural-compare": "1.4.0" + } + }, + "eslint-plugin-vitest": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/eslint-plugin-vitest/-/eslint-plugin-vitest-0.3.8.tgz", + "integrity": "sha512-MYQJzg3i+nLkaIQgjnOhtqHYIt0W6nErqAOKI3LTSQ2aOgcNHGYTwOhpnwGC1IXTvGWjKgAwb7rHwLpcHWHSAQ==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^6.7.5" }, "dependencies": { - "@microsoft/tsdoc-config": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.15.2.tgz", - "integrity": "sha512-mK19b2wJHSdNf8znXSMYVShAHktVr/ib0Ck2FA3lsVBSEhSI/TfXT7DJQkAYgcztTuwazGcg58ZjYdk0hTCVrA==", + "@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "requires": { - "@microsoft/tsdoc": "0.13.2", - "ajv": "~6.12.6", - "jju": "~1.4.0", - "resolve": "~1.19.0" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + } + }, + "@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" } } } }, - "eslint-plugin-unicorn": { - "version": "37.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-37.0.1.tgz", - "integrity": "sha512-E1jq5u9ojnadisJcPi+hMXTGSiIzkIUMDvWsBudsCGXvKUB2aNSU2TcfyW2/jAS5A4ryBXfzxLykMxX1EdluSQ==", + "eslint-plugin-vue": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.0.tgz", + "integrity": "sha512-yUM8a2OD/7Qs0PiugkRaxgz5KBRvzMvWShity2UvVFAN0yk8029mGpTdg/TNARPiYzp335mEwDHwcAR8tQNe4g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "ci-info": "^3.2.0", - "clean-regexp": "^1.0.0", - "eslint-template-visitor": "^2.3.2", - "eslint-utils": "^3.0.0", - "esquery": "^1.4.0", - "indent-string": "4", - "is-builtin-module": "^3.1.0", - "lodash": "^4.17.21", - "pluralize": "^8.0.0", - "read-pkg-up": "^7.0.1", - "regexp-tree": "^0.1.23", - "safe-regex": "^2.1.1", - "semver": "^7.3.5", - "strip-indent": "^3.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" } }, - "eslint-plugin-unused-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", - "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", + "eslint-plugin-yml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.10.0.tgz", + "integrity": "sha512-53SUwuNDna97lVk38hL/5++WXDuugPM9SUQ1T645R0EHMRCdBIIxGye/oOX2qO3FQ7aImxaUZJU/ju+NMUBrLQ==", "dev": true, "requires": { - "eslint-rule-composer": "^0.3.0" + "debug": "^4.3.2", + "eslint-compat-utils": "^0.1.0", + "lodash": "^4.17.21", + "natural-compare": "^1.4.0", + "yaml-eslint-parser": "^1.2.1" } }, "eslint-rule-composer": { @@ -22565,51 +25081,21 @@ "estraverse": "^4.1.1" } }, - "eslint-template-visitor": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz", - "integrity": "sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==", - "dev": true, - "requires": { - "@babel/core": "^7.12.16", - "@babel/eslint-parser": "^7.12.16", - "eslint-visitor-keys": "^2.0.0", - "esquery": "^1.3.1", - "multimap": "^1.1.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - } + "eslint-visitor-keys": "^3.4.1" } }, "esprima": { @@ -22619,9 +25105,9 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -22742,8 +25228,9 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "peer": true }, "fast-safe-stringify": { "version": "2.1.1", @@ -22827,6 +25314,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "peer": true, "requires": { "flat-cache": "^3.0.4" } @@ -22890,6 +25378,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, + "peer": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -22899,13 +25388,23 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true + "dev": true, + "peer": true }, "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -22962,15 +25461,27 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, "gensync": { @@ -22984,15 +25495,23 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, + "get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "peer": true + }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-package-type": { @@ -23095,10 +25614,13 @@ } }, "get-tsconfig": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", - "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==", - "dev": true + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } }, "git-raw-commits": { "version": "2.0.11", @@ -23183,9 +25705,9 @@ } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -23199,11 +25721,14 @@ } } }, - "globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } }, "globby": { "version": "11.1.0", @@ -23219,11 +25744,14 @@ "slash": "^3.0.0" } }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } }, "got": { "version": "13.0.0", @@ -23248,10 +25776,10 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "graphql": { @@ -23300,9 +25828,9 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true }, "has-flag": { @@ -23310,10 +25838,25 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", @@ -23332,6 +25875,15 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -23603,13 +26155,13 @@ "dev": true }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -23629,16 +26181,46 @@ "standard-as-callback": "^2.1.0" } }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, "is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } }, "is-binary-path": { "version": "2.1.0", @@ -23650,27 +26232,28 @@ } }, "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-builtin-module": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", - "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, "requires": { - "builtin-modules": "^3.0.0" + "builtin-modules": "^3.3.0" } }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-core-module": { @@ -23688,10 +26271,10 @@ "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", "dev": true }, "is-extglob": { @@ -23728,10 +26311,16 @@ "is-extglob": "^2.1.1" } }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, "is-number": { @@ -23741,10 +26330,13 @@ "dev": true }, "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-obj": { "version": "2.0.0", @@ -23752,6 +26344,13 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "peer": true + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -23769,10 +26368,13 @@ } }, "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } }, "is-stream": { "version": "2.0.1", @@ -23806,6 +26408,15 @@ "text-extensions": "^1.0.0" } }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.11" + } + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -23815,15 +26426,6 @@ "call-bind": "^1.0.2" } }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -24413,12 +27015,6 @@ } } }, - "jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", - "dev": true - }, "jose": { "version": "4.15.2", "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.2.tgz", @@ -24440,6 +27036,12 @@ "esprima": "^4.0.0" } }, + "jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -24467,13 +27069,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "peer": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "dev": true, + "peer": true }, "json-stringify-safe": { "version": "5.0.1", @@ -24487,6 +27091,18 @@ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, + "jsonc-eslint-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", + "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + } + }, "jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", @@ -24597,14 +27213,15 @@ } }, "jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, - "peer": true, "requires": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" } }, "keygrip": { @@ -24726,6 +27343,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "peer": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -24776,6 +27394,16 @@ } } }, + "local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "requires": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -24897,14 +27525,14 @@ } } }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "peer": true, "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "get-func-name": "^2.0.1" } }, "lowercase-keys": { @@ -24926,6 +27554,25 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, + "magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "peer": true + } + } + }, "make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -25052,6 +27699,25 @@ "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.0.tgz", "integrity": "sha512-VZjm0PM5DMv7WodqOUps3g6Q7dmxs9YGiFUZ7a2majzQTTCgX+6S6NAJHPvOhgFBzYz8s4QZKWWMfZKFmsfOgA==" }, + "mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -25159,6 +27825,16 @@ } } }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -25234,24 +27910,24 @@ "kind-of": "^6.0.3" } }, + "mlly": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", + "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "dev": true, + "requires": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" + } + }, "modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multimap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz", - "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==", - "dev": true - }, "n3": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/n3/-/n3-1.17.1.tgz", @@ -25463,6 +28139,15 @@ "path-key": "^3.0.0" } }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -25475,9 +28160,9 @@ "dev": true }, "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-keys": { "version": "1.1.1", @@ -25486,61 +28171,26 @@ "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, - "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", - "dev": true, - "peer": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "oidc-provider": { @@ -25623,17 +28273,6 @@ "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, "opencollective-postinstall": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", @@ -25653,17 +28292,18 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, + "peer": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "p-cancelable": { @@ -25704,6 +28344,26 @@ "callsites": "^3.0.0" } }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-gitignore": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz", + "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==", + "dev": true + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -25756,6 +28416,19 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "peer": true + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -25789,6 +28462,17 @@ "find-up": "^4.0.0" } }, + "pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, "please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -25804,11 +28488,43 @@ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true }, + "postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, + "peer": true, + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "peer": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true + "dev": true, + "peer": true }, "pretty-format": { "version": "29.7.0", @@ -25855,27 +28571,6 @@ "sisteransi": "^1.0.5" } }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "peer": true - } - } - }, "proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", @@ -25943,13 +28638,6 @@ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, - "ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true, - "peer": true - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -26388,27 +29076,38 @@ } }, "regexp-tree": { - "version": "0.1.24", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", - "integrity": "sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==", + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true }, "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true + "regjsparser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", + "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } }, "relative-to-absolute-iri": { "version": "1.0.7", @@ -26473,6 +29172,12 @@ "global-dirs": "^0.1.1" } }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "resolve.exports": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", @@ -26503,10 +29208,21 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "peer": true, "requires": { "glob": "^7.1.3" } }, + "rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "peer": true, + "requires": { + "fsevents": "~2.3.2" + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -26516,18 +29232,40 @@ "queue-microtask": "^1.2.2" } }, + "safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, - "safe-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", - "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, "requires": { - "regexp-tree": "~0.1.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" } }, "safe-stable-stringify": { @@ -26566,6 +29304,29 @@ "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", "dev": true }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -26628,6 +29389,13 @@ "object-inspect": "^1.9.0" } }, + "siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "peer": true + }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -26678,6 +29446,13 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "peer": true + }, "source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", @@ -26856,6 +29631,13 @@ } } }, + "stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "peer": true + }, "standard-as-callback": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", @@ -26866,6 +29648,13 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "std-env": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", + "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", + "dev": true, + "peer": true + }, "stream-to-string": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/stream-to-string/-/stream-to-string-1.2.0.tgz", @@ -26912,41 +29701,37 @@ "strip-ansi": "^6.0.1" } }, - "string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", - "side-channel": "^1.0.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "strip-ansi": { @@ -26984,6 +29769,16 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "peer": true, + "requires": { + "acorn": "^8.10.0" + } + }, "superagent": { "version": "8.0.9", "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", @@ -27034,30 +29829,6 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "synckit": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.1.tgz", - "integrity": "sha512-rJEeygO5PNmcZICmrgnbOd2usi5zWE1ESc0Gn5tTmJlongoU8zCTwMFQtar2UgMSiR68vK9afPQ+uVs2lURSIA==", - "dev": true, - "requires": { - "@pkgr/utils": "^2.3.0", - "tslib": "^2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - } - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -27084,7 +29855,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "dev": true, + "peer": true }, "through": { "version": "2.3.8", @@ -27106,15 +29878,26 @@ "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, - "tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "tinybench": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", + "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", "dev": true, - "requires": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } + "peer": true + }, + "tinypool": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "dev": true, + "peer": true + }, + "tinyspy": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", + "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", + "dev": true, + "peer": true }, "tmpl": { "version": "1.0.5", @@ -27167,6 +29950,13 @@ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, + "ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "requires": {} + }, "ts-guards": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/ts-guards/-/ts-guards-0.5.1.tgz", @@ -27217,29 +30007,6 @@ "yn": "3.1.1" } }, - "tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -27265,6 +30032,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "peer": true, "requires": { "prelude-ls": "^1.2.1" } @@ -27290,6 +30058,53 @@ "mime-types": "~2.1.24" } }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -27346,6 +30161,12 @@ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, + "ufo": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", + "integrity": "sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==", + "dev": true + }, "uglify-js": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.0.tgz", @@ -27353,14 +30174,14 @@ "optional": true }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, @@ -27379,6 +30200,15 @@ "@fastify/busboy": "^2.0.0" } }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -27428,12 +30258,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -27466,18 +30290,81 @@ "spdx-expression-parse": "^3.0.0" } }, - "varname": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/varname/-/varname-2.0.2.tgz", - "integrity": "sha1-33lplSuIL20BH4UCnhOyyD5yEVg=", - "dev": true, - "peer": true - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "vite": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", + "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "dev": true, + "peer": true, + "requires": { + "esbuild": "^0.18.10", + "fsevents": "~2.3.2", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + } + }, + "vite-node": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", + "dev": true, + "peer": true, + "requires": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "vitest": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", + "dev": true, + "peer": true, + "requires": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "vite-node": "0.34.6", + "why-is-node-running": "^2.2.2" + }, + "dependencies": { + "local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "peer": true + } + } + }, "vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", @@ -27490,6 +30377,39 @@ "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", "dev": true }, + "vue-eslint-parser": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", + "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "dependencies": { + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -27532,6 +30452,30 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "peer": true, + "requires": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + } + }, "winston": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", @@ -27567,12 +30511,6 @@ "triple-beam": "^1.3.0" } }, - "word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true - }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -27609,6 +30547,12 @@ "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "requires": {} }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -27636,6 +30580,25 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true }, + "yaml-eslint-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz", + "integrity": "sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.0.0", + "lodash": "^4.17.21", + "yaml": "^2.0.0" + }, + "dependencies": { + "yaml": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", + "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "dev": true + } + } + }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/package.json b/package.json index 706bfeb43..7db01831d 100644 --- a/package.json +++ b/package.json @@ -2,13 +2,29 @@ "name": "@solid/community-server", "version": "7.0.1", "description": "Community Solid Server: an open and modular implementation of the Solid specifications", + "license": "MIT", + "homepage": "https://github.com/CommunitySolidServer/CommunitySolidServer#readme", + "repository": "git@github.com:CommunitySolidServer/CommunitySolidServer.git", + "bugs": { + "url": "https://github.com/CommunitySolidServer/CommunitySolidServer/issues" + }, "keywords": [ "solid", "linked-data", "rdf", "ldp" ], - "license": "MIT", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "bin": { + "community-solid-server": "bin/server.js" + }, + "files": [ + "bin", + "config", + "dist", + "templates" + ], "engines": { "node": ">=18.0" }, @@ -23,16 +39,6 @@ "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/dist/": "dist/", "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/templates/config/": "templates/config/" }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "bin": { - "community-solid-server": "bin/server.js" - }, - "repository": "git@github.com:CommunitySolidServer/CommunitySolidServer.git", - "bugs": { - "url": "https://github.com/CommunitySolidServer/CommunitySolidServer/issues" - }, - "homepage": "https://github.com/CommunitySolidServer/CommunitySolidServer#readme", "scripts": { "build": "npm run build:ts && npm run build:components", "build:components": "componentsjs-generator -s src -c dist/components -r css -i .componentsignore", @@ -47,8 +53,8 @@ "docker:stop": "./test/docker/docker-stop.sh", "typedocs": "typedoc --customCss ./documentation/typedoc.css", "jest": "jest --coverageReporters text-summary --", - "lint": "npm run lint:ts && npm run lint:markdown", - "lint:ts": "eslint . --cache --ignore-path .gitignore --max-warnings 0", + "lint": "npm run lint:eslint && npm run lint:markdown", + "lint:eslint": "eslint . --cache --max-warnings 0", "lint:markdown": "markdownlint-cli2", "lint:markdown:fix": "markdownlint-cli2-fix", "prepare": "npm run build", @@ -66,30 +72,6 @@ "validate": "componentsjs-compile-config urn:solid-server:default:Initializer -c config/default.json -f > /dev/null", "watch": "nodemon --watch \"dist/**/*.js\" --exec npm start" }, - "husky": { - "hooks": { - "pre-commit": "npm run build && npm run lint && npm run test:unit && npm run test:integration", - "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" - } - }, - "commit-and-tag-version": { - "scripts": { - "postbump": "ts-node ./scripts/upgradeConfig.ts", - "postchangelog": "ts-node ./scripts/formatChangelog.ts && markdownlint-cli2-fix" - }, - "writerOpts": { - "commitsSort": false - }, - "skip": { - "tag": true - } - }, - "files": [ - "bin", - "dist", - "config", - "templates" - ], "dependencies": { "@comunica/context-entries": "^2.8.2", "@comunica/query-sparql": "^2.9.0", @@ -105,7 +87,7 @@ "@types/fs-extra": "^11.0.2", "@types/lodash.orderby": "^4.6.7", "@types/mime-types": "^2.1.2", - "@types/n3": "^1.16.2", + "@types/n3": "^1.16.3", "@types/node": "^18.18.4", "@types/nodemailer": "^6.4.11", "@types/oidc-provider": "^8.4.0", @@ -161,28 +143,18 @@ "yup": "^1.3.2" }, "devDependencies": { + "@antfu/eslint-config": "^1.0.0-beta.27", "@commitlint/cli": "^17.7.2", "@commitlint/config-conventional": "^17.7.0", "@inrupt/solid-client-authn-core": "^1.17.3", "@inrupt/solid-client-authn-node": "^1.17.3", - "@microsoft/tsdoc-config": "^0.16.2", "@tsconfig/node18": "^18.2.2", "@types/jest": "^29.5.5", "@types/set-cookie-parser": "^2.4.4", "@types/supertest": "^2.0.14", - "@typescript-eslint/eslint-plugin": "^5.3.0", - "@typescript-eslint/parser": "^5.3.0", "commit-and-tag-version": "^11.3.0", "componentsjs-generator": "^3.1.2", - "eslint": "^8.21.0", - "eslint-config-es": "4.1.0", - "eslint-import-resolver-typescript": "^3.2.5", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-tsdoc": "^0.2.14", - "eslint-plugin-unicorn": "^37.0.1", - "eslint-plugin-unused-imports": "^2.0.0", + "eslint-plugin-jest": "^27.4.3", "husky": "^4.3.8", "jest": "^29.7.0", "jest-esm-transformer-2": "^1.0.0", @@ -197,5 +169,23 @@ "ts-node": "^10.9.1", "typedoc": "^0.25.2", "typescript": "^5.0.4" + }, + "husky": { + "hooks": { + "pre-commit": "npm run build && npm run lint && npm run test:unit && npm run test:integration", + "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" + } + }, + "commit-and-tag-version": { + "scripts": { + "postbump": "ts-node ./scripts/upgradeConfig.ts", + "postchangelog": "ts-node ./scripts/formatChangelog.ts && markdownlint-cli2-fix" + }, + "writerOpts": { + "commitsSort": false + }, + "skip": { + "tag": true + } } } diff --git a/scripts/finalizeRelease.ts b/scripts/finalizeRelease.ts index df3b837d2..899232353 100644 --- a/scripts/finalizeRelease.ts +++ b/scripts/finalizeRelease.ts @@ -18,8 +18,10 @@ import { version } from '../package.json'; * and then pushes commit and tag. */ async function commitAndTag(): Promise { + // eslint-disable-next-line ts/naming-convention await simpleGit().commit([], 'CHANGELOG.md', { '--amend': null, '--no-edit': null, '--no-verify': null }); await simpleGit().addAnnotatedTag(`v${version}`, `Release Version ${version}`); + // eslint-disable-next-line ts/naming-convention await simpleGit().push({ '--follow-tags': null }); } diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 181b94fb1..bd5871b01 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -1,9 +1,9 @@ { "extends": "../tsconfig.json", - "include": [ - "." - ], "compilerOptions": { "resolveJsonModule": true - } + }, + "include": [ + "." + ] } diff --git a/scripts/upgradeConfig.ts b/scripts/upgradeConfig.ts index 98622f7dc..6ed86b6f5 100644 --- a/scripts/upgradeConfig.ts +++ b/scripts/upgradeConfig.ts @@ -60,16 +60,16 @@ async function getFilePaths(path: string, regex: RegExp): Promise { * that file are included in the release commit). */ async function upgradeConfig(): Promise { - const pkg = await readPackageJson(); - const major = pkg.version.split('.')[0]; + const pkg = await readPackageJson() as Record; + const major = (pkg.version as string).split('.')[0]; - console.log(`Changing ${pkg['lsd:module']} references to ${major}.0.0\n`); + console.log(`Changing ${pkg['lsd:module'] as string} references to ${major}.0.0\n`); const configs = await getFilePaths('config/', /.+\.json/u); configs.push(...await getFilePaths('test/integration/config/', /.+\.json/u)); configs.push(...await getFilePaths('templates/config/', /.+\.json/u)); - const escapedName = escapeStringRegexp(pkg['lsd:module']); + const escapedName = escapeStringRegexp(pkg['lsd:module'] as string); const regex = new RegExp(`(${escapedName}/)${/\^\d+\.\d+\.\d+/u.source}`, 'gmu'); for (const config of configs) { @@ -77,6 +77,7 @@ async function upgradeConfig(): Promise { } await replaceComponentVersion('package.json', regex, `${major}.0.0`); + // eslint-disable-next-line ts/naming-convention await simpleGit().commit(`chore(release): Update configs to v${major}.0.0`, configs, { '--no-verify': null }); } diff --git a/src/authorization/AcpUtil.ts b/src/authorization/AcpUtil.ts index 7879d0b6a..4313961b7 100644 --- a/src/authorization/AcpUtil.ts +++ b/src/authorization/AcpUtil.ts @@ -1,7 +1,7 @@ import type { IAccessControl, - IAccessControlResource, IAccessControlledResource, + IAccessControlResource, IAccessMode, IMatcher, IPolicy, diff --git a/src/authorization/AllStaticReader.ts b/src/authorization/AllStaticReader.ts index 111ced76b..98fb624ff 100644 --- a/src/authorization/AllStaticReader.ts +++ b/src/authorization/AllStaticReader.ts @@ -1,7 +1,7 @@ import { IdentifierMap } from '../util/map/IdentifierMap'; import type { PermissionReaderInput } from './PermissionReader'; import { PermissionReader } from './PermissionReader'; -import type { PermissionSet, PermissionMap } from './permissions/Permissions'; +import type { PermissionMap, PermissionSet } from './permissions/Permissions'; /** * PermissionReader which sets all permissions to true or false diff --git a/src/authorization/AuthAuxiliaryReader.ts b/src/authorization/AuthAuxiliaryReader.ts index ead074477..0bb611c7b 100644 --- a/src/authorization/AuthAuxiliaryReader.ts +++ b/src/authorization/AuthAuxiliaryReader.ts @@ -8,7 +8,7 @@ import type { PermissionReaderInput } from './PermissionReader'; import { PermissionReader } from './PermissionReader'; import { AclMode } from './permissions/AclPermissionSet'; import type { AclPermissionSet } from './permissions/AclPermissionSet'; -import type { AccessMap, AccessMode, PermissionSet, PermissionMap } from './permissions/Permissions'; +import type { AccessMap, AccessMode, PermissionMap, PermissionSet } from './permissions/Permissions'; /** * Determines the permission for authorization resources (such as ACL or ACR). diff --git a/src/authorization/ParentContainerReader.ts b/src/authorization/ParentContainerReader.ts index 5289a2e2d..7ba0ea596 100644 --- a/src/authorization/ParentContainerReader.ts +++ b/src/authorization/ParentContainerReader.ts @@ -6,7 +6,7 @@ import type { MapEntry } from '../util/map/MapUtil'; import { modify } from '../util/map/MapUtil'; import type { PermissionReaderInput } from './PermissionReader'; import { PermissionReader } from './PermissionReader'; -import type { PermissionMap, PermissionSet, AccessMap } from './permissions/Permissions'; +import type { AccessMap, PermissionMap, PermissionSet } from './permissions/Permissions'; import { AccessMode } from './permissions/Permissions'; /** diff --git a/src/authorization/WebAclReader.ts b/src/authorization/WebAclReader.ts index 11e4dff34..ba5ef1101 100644 --- a/src/authorization/WebAclReader.ts +++ b/src/authorization/WebAclReader.ts @@ -58,7 +58,6 @@ export class WebAclReader extends PermissionReader { /** * Checks if an agent is allowed to execute the requested actions. * Will throw an error if this is not the case. - * @param input - Relevant data needed to check if access can be granted. */ public async handle({ credentials, requestedModes }: PermissionReaderInput): Promise { // Determine the required access modes diff --git a/src/http/UnsecureWebSocketsProtocol.ts b/src/http/UnsecureWebSocketsProtocol.ts index 0de19f3e3..fe45aee88 100644 --- a/src/http/UnsecureWebSocketsProtocol.ts +++ b/src/http/UnsecureWebSocketsProtocol.ts @@ -16,7 +16,7 @@ import type { ResourceIdentifier } from './representation/ResourceIdentifier'; const VERSION = 'solid-0.1'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const WebSocketListenerEmitter = createGenericEventEmitterClass void>>(); /** diff --git a/src/http/input/body/SparqlUpdateBodyParser.ts b/src/http/input/body/SparqlUpdateBodyParser.ts index 83bed8ab4..73c33935b 100644 --- a/src/http/input/body/SparqlUpdateBodyParser.ts +++ b/src/http/input/body/SparqlUpdateBodyParser.ts @@ -9,6 +9,7 @@ import { guardedStreamFrom, readableToString } from '../../../util/StreamUtil'; import type { SparqlUpdatePatch } from '../../representation/SparqlUpdatePatch'; import type { BodyParserArgs } from './BodyParser'; import { BodyParser } from './BodyParser'; + /** * {@link BodyParser} that supports `application/sparql-update` content. * Will convert the incoming update string to algebra in a {@link SparqlUpdatePatch}. diff --git a/src/http/input/metadata/LinkRelParser.ts b/src/http/input/metadata/LinkRelParser.ts index e2fc5a789..549a9957c 100644 --- a/src/http/input/metadata/LinkRelParser.ts +++ b/src/http/input/metadata/LinkRelParser.ts @@ -79,4 +79,3 @@ export class LinkRelObject { } } } - diff --git a/src/http/input/preferences/AcceptPreferenceParser.ts b/src/http/input/preferences/AcceptPreferenceParser.ts index 7b0860f55..7d64a590a 100644 --- a/src/http/input/preferences/AcceptPreferenceParser.ts +++ b/src/http/input/preferences/AcceptPreferenceParser.ts @@ -3,9 +3,9 @@ import type { AcceptHeader } from '../../../util/Header'; import { parseAccept, parseAcceptCharset, + parseAcceptDateTime, parseAcceptEncoding, parseAcceptLanguage, - parseAcceptDateTime, } from '../../../util/HeaderUtil'; import type { RepresentationPreferences } from '../../representation/RepresentationPreferences'; import { PreferenceParser } from './PreferenceParser'; diff --git a/src/http/representation/BasicRepresentation.ts b/src/http/representation/BasicRepresentation.ts index f83f13108..a68145bc9 100644 --- a/src/http/representation/BasicRepresentation.ts +++ b/src/http/representation/BasicRepresentation.ts @@ -5,7 +5,7 @@ import { guardStream } from '../../util/GuardedStream'; import { guardedStreamFrom } from '../../util/StreamUtil'; import type { Representation } from './Representation'; import type { MetadataIdentifier, MetadataRecord } from './RepresentationMetadata'; -import { RepresentationMetadata, isRepresentationMetadata } from './RepresentationMetadata'; +import { isRepresentationMetadata, RepresentationMetadata } from './RepresentationMetadata'; /** * Class with various constructors to facilitate creating a representation. @@ -108,6 +108,8 @@ export class BasicRepresentation implements Representation { metadataRest = undefined; } if (!isRepresentationMetadata(metadata) || typeof metadataRest === 'string') { + // This combination will always match with a valid overload + // eslint-disable-next-line ts/no-unsafe-argument metadata = new RepresentationMetadata(metadata as any, metadataRest as any); } this.metadata = metadata; diff --git a/src/http/representation/RepresentationMetadata.ts b/src/http/representation/RepresentationMetadata.ts index e11e5313f..df4c0baf3 100644 --- a/src/http/representation/RepresentationMetadata.ts +++ b/src/http/representation/RepresentationMetadata.ts @@ -2,8 +2,8 @@ import { DataFactory, Store } from 'n3'; import type { BlankNode, DefaultGraph, Literal, NamedNode, Quad, Term } from 'rdf-js'; import { getLoggerFor } from '../../logging/LogUtil'; import { ContentType, SIMPLE_MEDIA_RANGE } from '../../util/Header'; -import { toNamedTerm, toObjectTerm, isTerm, toLiteral } from '../../util/TermUtil'; -import { CONTENT_TYPE_TERM, CONTENT_LENGTH_TERM, XSD, SOLID_META, RDFS } from '../../util/Vocabularies'; +import { isTerm, toLiteral, toNamedTerm, toObjectTerm } from '../../util/TermUtil'; +import { CONTENT_LENGTH_TERM, CONTENT_TYPE_TERM, RDFS, SOLID_META, XSD } from '../../util/Vocabularies'; import type { ResourceIdentifier } from './ResourceIdentifier'; import { isResourceIdentifier } from './ResourceIdentifier'; @@ -16,7 +16,7 @@ export type MetadataGraph = NamedNode | BlankNode | DefaultGraph | string; * Determines whether the object is a `RepresentationMetadata`. */ export function isRepresentationMetadata(object: any): object is RepresentationMetadata { - return typeof object?.setMetadata === 'function'; + return typeof (object as RepresentationMetadata)?.setMetadata === 'function'; } // Caches named node conversions @@ -283,7 +283,8 @@ export class RepresentationMetadata { ): boolean { // This works with N3.js but at the time of writing the typings have not been updated yet. // If you see this line of code check if the typings are already correct and update this if so. - return (this.store.has as any)(this.id, predicate, object, graph); + // eslint-disable-next-line ts/no-unsafe-call + return (this.store.has as any)(this.id, predicate, object, graph) as boolean; } /** @@ -426,8 +427,8 @@ export class RepresentationMetadata { } /** - * Shorthand for the CONTENT_LENGTH predicate. - */ + * Shorthand for the CONTENT_LENGTH predicate. + */ public get contentLength(): number | undefined { const length = this.get(CONTENT_LENGTH_TERM); return length?.value ? Number(length.value) : undefined; diff --git a/src/http/representation/RepresentationPreferences.ts b/src/http/representation/RepresentationPreferences.ts index 985d5d2ac..c96b9cff7 100644 --- a/src/http/representation/RepresentationPreferences.ts +++ b/src/http/representation/RepresentationPreferences.ts @@ -1,16 +1,16 @@ /** - * Represents preferred values along a single content negotiation dimension. - * - * The number represents how preferred this value is from 0 to 1. - * Follows the quality values rule from RFC 7231: - * "The weight is normalized to a real number in the range 0 through 1, - * where 0.001 is the least preferred and 1 is the most preferred; a - * value of 0 means "not acceptable"." - * - * Because of an open issue in Components.js we cannot use `Record` right now. - * https://github.com/LinkedSoftwareDependencies/Components-Generator.js/issues/103 - */ -// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style + * Represents preferred values along a single content negotiation dimension. + * + * The number represents how preferred this value is from 0 to 1. + * Follows the quality values rule from RFC 7231: + * "The weight is normalized to a real number in the range 0 through 1, + * where 0.001 is the least preferred and 1 is the most preferred; a + * value of 0 means "not acceptable"." + * + * Because of an open issue in Components.js we cannot use `Record` right now. + * https://github.com/LinkedSoftwareDependencies/Components-Generator.js/issues/103 + */ +// eslint-disable-next-line ts/consistent-indexed-object-style export type ValuePreferences = {[key: string ]: number }; /** diff --git a/src/http/representation/ResourceIdentifier.ts b/src/http/representation/ResourceIdentifier.ts index adb11f4b8..e01040916 100644 --- a/src/http/representation/ResourceIdentifier.ts +++ b/src/http/representation/ResourceIdentifier.ts @@ -11,6 +11,6 @@ export interface ResourceIdentifier { /** * Determines whether the object is a {@link ResourceIdentifier}. */ -export function isResourceIdentifier(object: any): object is ResourceIdentifier { - return object && (typeof object.path === 'string'); +export function isResourceIdentifier(object: unknown): object is ResourceIdentifier { + return Boolean(object) && (typeof (object as ResourceIdentifier).path === 'string'); } diff --git a/src/identity/IdentityProviderHttpHandler.ts b/src/identity/IdentityProviderHttpHandler.ts index 4706322ea..b85d1d401 100644 --- a/src/identity/IdentityProviderHttpHandler.ts +++ b/src/identity/IdentityProviderHttpHandler.ts @@ -7,7 +7,7 @@ import { createErrorMessage } from '../util/errors/ErrorUtil'; import { SOLID_HTTP } from '../util/Vocabularies'; import type { ProviderFactory } from './configuration/ProviderFactory'; import type { CookieStore } from './interaction/account/util/CookieStore'; -import type { InteractionHandler, Interaction } from './interaction/InteractionHandler'; +import type { Interaction, InteractionHandler } from './interaction/InteractionHandler'; export interface IdentityProviderHttpHandlerArgs { /** diff --git a/src/identity/IdentityUtil.ts b/src/identity/IdentityUtil.ts index e99eea616..020aea770 100644 --- a/src/identity/IdentityUtil.ts +++ b/src/identity/IdentityUtil.ts @@ -10,11 +10,8 @@ import type { CanBePromise } from '../../templates/types/oidc-provider'; * This can be detected via the env variables: https://jestjs.io/docs/environment-variables. * There have been reports of `JEST_WORKER_ID` being undefined, so to be sure we check both. */ -// eslint-disable-next-line @typescript-eslint/consistent-type-imports export function importOidcProvider(): CanBePromise { - // eslint-disable-next-line no-process-env if (process.env.JEST_WORKER_ID ?? process.env.NODE_ENV === 'test') { - // eslint-disable-next-line no-undef return jest.requireActual('oidc-provider'); } return import('oidc-provider'); diff --git a/src/identity/OidcHttpHandler.ts b/src/identity/OidcHttpHandler.ts index 83bfffdc3..ef3752919 100644 --- a/src/identity/OidcHttpHandler.ts +++ b/src/identity/OidcHttpHandler.ts @@ -28,7 +28,7 @@ export class OidcHttpHandler extends HttpHandler { this.logger.debug(`Sending request to oidc-provider: ${request.url}`); // Even though the typings do not indicate this, this is a Promise that needs to be awaited. // Otherwise, the `BaseHttpServerFactory` will write a 404 before the OIDC library could handle the response. - // eslint-disable-next-line @typescript-eslint/await-thenable + // eslint-disable-next-line ts/await-thenable await provider.callback()(request, response); } } diff --git a/src/identity/configuration/CachedJwkGenerator.ts b/src/identity/configuration/CachedJwkGenerator.ts index d74364188..210a306ad 100644 --- a/src/identity/configuration/CachedJwkGenerator.ts +++ b/src/identity/configuration/CachedJwkGenerator.ts @@ -1,7 +1,7 @@ import { createPublicKey } from 'crypto'; import type { KeyObject } from 'crypto'; import { exportJWK, generateKeyPair, importJWK } from 'jose'; -import type { JWKS, AsymmetricSigningAlgorithm } from '../../../templates/types/oidc-provider'; +import type { AsymmetricSigningAlgorithm, JWKS } from '../../../templates/types/oidc-provider'; import type { KeyValueStorage } from '../../storage/keyvalue/KeyValueStorage'; import type { AlgJwk, JwkGenerator } from './JwkGenerator'; diff --git a/src/identity/configuration/IdentityProviderFactory.ts b/src/identity/configuration/IdentityProviderFactory.ts index 0799af4f9..80e170b44 100644 --- a/src/identity/configuration/IdentityProviderFactory.ts +++ b/src/identity/configuration/IdentityProviderFactory.ts @@ -1,16 +1,14 @@ -/* eslint-disable @typescript-eslint/naming-convention, tsdoc/syntax */ -// import/no-unresolved can't handle jose imports -// tsdoc/syntax can't handle {json} parameter +/* eslint-disable ts/naming-convention */ import { randomBytes } from 'crypto'; import type { Account, Adapter, AsymmetricSigningAlgorithm, Configuration, ErrorOut, + errors, KoaContextWithOIDC, ResourceServer, - UnknownObject, - errors } from '../../../templates/types/oidc-provider'; + UnknownObject } from '../../../templates/types/oidc-provider'; import type Provider from '../../../templates/types/oidc-provider'; import type { ErrorHandler } from '../../http/output/error/ErrorHandler'; import type { ResponseWriter } from '../../http/output/ResponseWriter'; @@ -56,9 +54,9 @@ export interface IdentityProviderFactoryArgs { */ clientCredentialsStore: ClientCredentialsStore; /** - * Storage used to store cookie keys so they can be re-used in case of multithreading. + * Storage used to store cookie keys, so they can be re-used in case of multithreading. */ - storage: KeyValueStorage; + storage: KeyValueStorage; /** * Generates the JWK used for signing and decryption. */ @@ -82,7 +80,7 @@ const COOKIES_KEY = 'cookie-secret'; /** * Creates an OIDC Provider based on the provided configuration and parameters. * The provider will be cached and returned on subsequent calls. - * Cookie and JWT keys will be stored in an internal storage so they can be re-used over multiple threads. + * Cookie and JWT keys will be stored in an internal storage, so they can be re-used over multiple threads. * Necessary claims for Solid OIDC interactions will be added. * Routes will be updated based on the `baseUrl` and `oidcPath`. */ @@ -96,7 +94,7 @@ export class IdentityProviderFactory implements ProviderFactory { private readonly oidcPath: string; private readonly interactionRoute: InteractionRoute; private readonly clientCredentialsStore: ClientCredentialsStore; - private readonly storage: KeyValueStorage; + private readonly storage: KeyValueStorage; private readonly jwkGenerator: JwkGenerator; private readonly showStackTrace: boolean; private readonly errorHandler: ErrorHandler; @@ -156,6 +154,7 @@ export class IdentityProviderFactory implements ProviderFactory { await this.promptFactory.handleSafe(policy); config.interactions!.policy = policy; + // eslint-disable-next-line new-cap const provider = new oidcImport.default(this.baseUrl, config); // Allow provider to interpret reverse proxy headers. @@ -187,12 +186,12 @@ export class IdentityProviderFactory implements ProviderFactory { const accepts = ctx.accepts.bind(ctx); // Using `any` typings to make sure we support all different versions of `ctx.accepts` - ctx.accepts = (...types: any[]): any => { + ctx.accepts = (...types): any => { // Make sure we only override our specific case if (types.length === 2 && types[0] === 'json' && types[1] === 'html') { return 'html'; } - return accepts(...types); + return accepts(...types as string[]); }; return next(); @@ -205,7 +204,7 @@ export class IdentityProviderFactory implements ProviderFactory { */ private async initConfig(key: AlgJwk): Promise { // Create a deep copy - const config: Configuration = JSON.parse(JSON.stringify(this.config)); + const config = JSON.parse(JSON.stringify(this.config)) as Configuration; // Indicates which Adapter should be used for storing oidc data // The adapter function MUST be a named function. @@ -254,10 +253,10 @@ export class IdentityProviderFactory implements ProviderFactory { /** * Checks if the given token is an access token. - * The AccessToken interface is not exported so we have to access it like this. + * The AccessToken interface is not exported, so we have to access it like this. */ private isAccessToken(token: any): token is KoaContextWithOIDC['oidc']['accessToken'] { - return token.kind === 'AccessToken'; + return (token as KoaContextWithOIDC['oidc']['accessToken'])?.kind === 'AccessToken'; } /** diff --git a/src/identity/interaction/LockingInteractionHandler.ts b/src/identity/interaction/LockingInteractionHandler.ts index 9e85010a1..b7c08ee24 100644 --- a/src/identity/interaction/LockingInteractionHandler.ts +++ b/src/identity/interaction/LockingInteractionHandler.ts @@ -36,9 +36,9 @@ export class LockingInteractionHandler extends InteractionHandler { const identifier = { path: this.accountRoute.getPath({ accountId }) }; if (READ_METHODS.has(operation.method)) { - return this.locker.withReadLock(identifier, (): Promise => this.source.handle(input)); + return this.locker.withReadLock(identifier, async(): Promise => this.source.handle(input)); } - return this.locker.withWriteLock(identifier, (): Promise => this.source.handle(input)); + return this.locker.withWriteLock(identifier, async(): Promise => this.source.handle(input)); } } diff --git a/src/identity/interaction/StaticInteractionHandler.ts b/src/identity/interaction/StaticInteractionHandler.ts index 686680bef..6833a2d2f 100644 --- a/src/identity/interaction/StaticInteractionHandler.ts +++ b/src/identity/interaction/StaticInteractionHandler.ts @@ -1,6 +1,4 @@ -/* eslint-disable tsdoc/syntax */ import type { Json, JsonRepresentation } from './InteractionUtil'; -// Tsdoc/syntax cannot handle `@range` import { JsonInteractionHandler } from './JsonInteractionHandler'; /** diff --git a/src/identity/interaction/YupUtil.ts b/src/identity/interaction/YupUtil.ts index bf4059527..58d04f371 100644 --- a/src/identity/interaction/YupUtil.ts +++ b/src/identity/interaction/YupUtil.ts @@ -11,7 +11,7 @@ import Dict = NodeJS.Dict; // which would break the pod creation causing us to have an incomplete pod. export const URL_SCHEMA = string().trim().optional().test({ name: 'url', - message: (value): string => `"${value.value}" is not a valid URL`, + message: (value: { value: string }): string => `"${value.value}" is not a valid URL`, test(value): boolean { if (!value) { return true; @@ -61,6 +61,7 @@ export function parseSchema>(schema: T): Pick>(schema: T, data: unknown, options?: ValidateOptions): Promise { try { + // eslint-disable-next-line ts/no-unsafe-return return await schema.validate(data, options); } catch (error: unknown) { throw new BadRequestHttpError(createErrorMessage(error)); diff --git a/src/identity/interaction/account/util/AccountStore.ts b/src/identity/interaction/account/util/AccountStore.ts index 8c2c0ee33..53f7a6958 100644 --- a/src/identity/interaction/account/util/AccountStore.ts +++ b/src/identity/interaction/account/util/AccountStore.ts @@ -5,7 +5,7 @@ export const ACCOUNT_SETTINGS_REMEMBER_LOGIN = 'rememberLogin'; export type AccountSettings = { [ACCOUNT_SETTINGS_REMEMBER_LOGIN]?: boolean }; -/* eslint-disable @typescript-eslint/method-signature-style */ +/* eslint-disable ts/method-signature-style */ /** * Used to store account data. */ diff --git a/src/identity/interaction/account/util/BaseAccountStore.ts b/src/identity/interaction/account/util/BaseAccountStore.ts index 1ae40b041..f1e8aa0a2 100644 --- a/src/identity/interaction/account/util/BaseAccountStore.ts +++ b/src/identity/interaction/account/util/BaseAccountStore.ts @@ -3,7 +3,7 @@ import { getLoggerFor } from '../../../../logging/LogUtil'; import type { ValueType } from '../../../../storage/keyvalue/IndexedStorage'; import { createErrorMessage } from '../../../../util/errors/ErrorUtil'; import { InternalServerError } from '../../../../util/errors/InternalServerError'; -import type { AccountStore, AccountSettings } from './AccountStore'; +import type { AccountSettings, AccountStore } from './AccountStore'; import { ACCOUNT_SETTINGS_REMEMBER_LOGIN } from './AccountStore'; import type { AccountLoginStorage } from './LoginStorage'; import { ACCOUNT_TYPE } from './LoginStorage'; @@ -24,7 +24,7 @@ export class BaseAccountStore extends Initializer implements AccountStore { public constructor(storage: AccountLoginStorage) { super(); - this.storage = storage; + this.storage = storage as typeof this.storage; } // Initialize the type definitions diff --git a/src/identity/interaction/account/util/BaseLoginAccountStorage.ts b/src/identity/interaction/account/util/BaseLoginAccountStorage.ts index 4ab27fa3e..9426c2c0c 100644 --- a/src/identity/interaction/account/util/BaseLoginAccountStorage.ts +++ b/src/identity/interaction/account/util/BaseLoginAccountStorage.ts @@ -1,9 +1,9 @@ import { getLoggerFor } from '../../../../logging/LogUtil'; import type { CreateTypeObject, - TypeObject, - StringKey, + IndexedQuery, IndexedStorage, - IndexTypeCollection, IndexedQuery, ValueType } from '../../../../storage/keyvalue/IndexedStorage'; + IndexTypeCollection, + StringKey, TypeObject, ValueType } from '../../../../storage/keyvalue/IndexedStorage'; import { BadRequestHttpError } from '../../../../util/errors/BadRequestHttpError'; import { NotFoundHttpError } from '../../../../util/errors/NotFoundHttpError'; import type { LoginStorage } from './LoginStorage'; @@ -145,6 +145,7 @@ export class BaseLoginAccountStorage> implement * it doesn't have a login method when the timer runs out. */ protected createAccountTimeout(id: string): void { + // eslint-disable-next-line ts/no-misused-promises const timer = setTimeout(async(): Promise => { const account = await this.storage.get(ACCOUNT_TYPE, id); if (account && account[LOGIN_COUNT] === 0) { @@ -181,7 +182,7 @@ export class BaseLoginAccountStorage> implement /** * Removes the field that keeps track of the login counts, to hide this from the output. */ - protected cleanOutput | undefined>(value: TVal): TVal { + protected cleanOutput | undefined>(this: void, value: TVal): TVal { if (value) { delete value[LOGIN_COUNT]; } diff --git a/src/identity/interaction/account/util/LoginStorage.ts b/src/identity/interaction/account/util/LoginStorage.ts index e4623c1fe..1d640cb5e 100644 --- a/src/identity/interaction/account/util/LoginStorage.ts +++ b/src/identity/interaction/account/util/LoginStorage.ts @@ -1,6 +1,6 @@ -import type { ValueTypeDescription, - IndexedStorage, - StringKey, IndexTypeCollection } from '../../../../storage/keyvalue/IndexedStorage'; +import type { IndexedStorage, + IndexTypeCollection, + StringKey, ValueTypeDescription } from '../../../../storage/keyvalue/IndexedStorage'; export const ACCOUNT_TYPE = 'account'; diff --git a/src/identity/interaction/client-credentials/ClientCredentialsAdapterFactory.ts b/src/identity/interaction/client-credentials/ClientCredentialsAdapterFactory.ts index d81277030..d29c3e921 100644 --- a/src/identity/interaction/client-credentials/ClientCredentialsAdapterFactory.ts +++ b/src/identity/interaction/client-credentials/ClientCredentialsAdapterFactory.ts @@ -1,7 +1,7 @@ import type { Adapter, AdapterPayload } from '../../../../templates/types/oidc-provider'; import { getLoggerFor } from '../../../logging/LogUtil'; import type { AdapterFactory } from '../../storage/AdapterFactory'; -import { PassthroughAdapterFactory, PassthroughAdapter } from '../../storage/PassthroughAdapterFactory'; +import { PassthroughAdapter, PassthroughAdapterFactory } from '../../storage/PassthroughAdapterFactory'; import type { WebIdStore } from '../webid/util/WebIdStore'; import type { ClientCredentialsStore } from './util/ClientCredentialsStore'; @@ -44,7 +44,7 @@ export class ClientCredentialsAdapter extends PassthroughAdapter { this.logger.debug(`Authenticating as ${credentials.webId} using client credentials`); - /* eslint-disable @typescript-eslint/naming-convention */ + /* eslint-disable ts/naming-convention */ payload = { client_id: label, client_secret: credentials.secret, @@ -52,7 +52,7 @@ export class ClientCredentialsAdapter extends PassthroughAdapter { redirect_uris: [], response_types: [], }; - /* eslint-enable @typescript-eslint/naming-convention */ + /* eslint-enable ts/naming-convention */ } return payload; } diff --git a/src/identity/interaction/client-credentials/util/BaseClientCredentialsStore.ts b/src/identity/interaction/client-credentials/util/BaseClientCredentialsStore.ts index ef02da68f..418c61e30 100644 --- a/src/identity/interaction/client-credentials/util/BaseClientCredentialsStore.ts +++ b/src/identity/interaction/client-credentials/util/BaseClientCredentialsStore.ts @@ -29,7 +29,7 @@ export class BaseClientCredentialsStore extends Initializer implements ClientCre public constructor(storage: AccountLoginStorage) { super(); - this.storage = storage; + this.storage = storage as typeof this.storage; } // Initialize the type definitions diff --git a/src/identity/interaction/login/ResolveLoginHandler.ts b/src/identity/interaction/login/ResolveLoginHandler.ts index 916d3b30c..142376f97 100644 --- a/src/identity/interaction/login/ResolveLoginHandler.ts +++ b/src/identity/interaction/login/ResolveLoginHandler.ts @@ -62,7 +62,7 @@ export abstract class ResolveLoginHandler extends JsonInteractionHandler { // We are not reusing this cookie as it could be associated with a different account. const oldCookie = input.metadata.get(SOLID_HTTP.terms.accountCookie)?.value; if (oldCookie) { - this.logger.debug(`Replacing old cookie ${oldCookie} with ${json.cookie}`); + this.logger.debug(`Replacing old cookie ${oldCookie} with ${json.cookie as string}`); await this.cookieStore.delete(oldCookie); } diff --git a/src/identity/interaction/oidc/CancelOidcHandler.ts b/src/identity/interaction/oidc/CancelOidcHandler.ts index d81c38d0a..53efd9f1f 100644 --- a/src/identity/interaction/oidc/CancelOidcHandler.ts +++ b/src/identity/interaction/oidc/CancelOidcHandler.ts @@ -12,7 +12,7 @@ export class CancelOidcHandler extends JsonInteractionHandler { assertOidcInteraction(oidcInteraction); const error = { error: 'access_denied', - // eslint-disable-next-line @typescript-eslint/naming-convention + // eslint-disable-next-line ts/naming-convention error_description: 'User cancelled the interaction.', }; diff --git a/src/identity/interaction/oidc/ClientInfoHandler.ts b/src/identity/interaction/oidc/ClientInfoHandler.ts index 8be1efc6d..54fd79853 100644 --- a/src/identity/interaction/oidc/ClientInfoHandler.ts +++ b/src/identity/interaction/oidc/ClientInfoHandler.ts @@ -41,6 +41,7 @@ export class ClientInfoHandler extends JsonInteractionHandler { const jsonLd = Object.fromEntries( CLIENT_KEYS.filter((key): boolean => key in metadata) .map((key): [ KeyType, ValType ] => [ key, metadata[key] ]), + // eslint-disable-next-line ts/naming-convention ) as Record & { '@context': 'https://www.w3.org/ns/solid/oidc-context.jsonld' }; jsonLd['@context'] = 'https://www.w3.org/ns/solid/oidc-context.jsonld'; diff --git a/src/identity/interaction/password/util/BasePasswordStore.ts b/src/identity/interaction/password/util/BasePasswordStore.ts index 85b6da90d..4edd8a4d5 100644 --- a/src/identity/interaction/password/util/BasePasswordStore.ts +++ b/src/identity/interaction/password/util/BasePasswordStore.ts @@ -1,4 +1,4 @@ -import { hash, compare } from 'bcryptjs'; +import { compare, hash } from 'bcryptjs'; import { Initializer } from '../../../../init/Initializer'; import { getLoggerFor } from '../../../../logging/LogUtil'; import { BadRequestHttpError } from '../../../../util/errors/BadRequestHttpError'; @@ -31,7 +31,7 @@ export class BasePasswordStore extends Initializer implements PasswordStore { public constructor(storage: AccountLoginStorage, saltRounds = 10) { super(); - this.storage = storage; + this.storage = storage as typeof this.storage; this.saltRounds = saltRounds; } diff --git a/src/identity/interaction/pod/util/BasePodStore.ts b/src/identity/interaction/pod/util/BasePodStore.ts index 6ca6b6f44..15843f2ac 100644 --- a/src/identity/interaction/pod/util/BasePodStore.ts +++ b/src/identity/interaction/pod/util/BasePodStore.ts @@ -45,7 +45,7 @@ export class BasePodStore extends Initializer implements PodStore { public constructor(storage: AccountLoginStorage, manager: PodManager, visible = false) { super(); - this.storage = storage; + this.storage = storage as typeof this.storage; this.visible = visible; this.manager = manager; } diff --git a/src/identity/interaction/webid/util/BaseWebIdStore.ts b/src/identity/interaction/webid/util/BaseWebIdStore.ts index addfc372a..f6c2fe00b 100644 --- a/src/identity/interaction/webid/util/BaseWebIdStore.ts +++ b/src/identity/interaction/webid/util/BaseWebIdStore.ts @@ -25,7 +25,7 @@ export class BaseWebIdStore extends Initializer implements WebIdStore { public constructor(storage: AccountLoginStorage) { super(); - this.storage = storage; + this.storage = storage as typeof this.storage; } // Initialize the type definitions diff --git a/src/identity/ownership/TokenOwnershipValidator.ts b/src/identity/ownership/TokenOwnershipValidator.ts index dd0191869..c0c9c1050 100644 --- a/src/identity/ownership/TokenOwnershipValidator.ts +++ b/src/identity/ownership/TokenOwnershipValidator.ts @@ -8,6 +8,7 @@ import { errorTermsToMetadata } from '../../util/errors/HttpErrorUtil'; import { fetchDataset } from '../../util/FetchUtil'; import { SOLID } from '../../util/Vocabularies'; import { OwnershipValidator } from './OwnershipValidator'; + const { literal, namedNode, quad } = DataFactory; /** diff --git a/src/identity/storage/ClientIdAdapterFactory.ts b/src/identity/storage/ClientIdAdapterFactory.ts index f9eb62905..6ec8654c4 100644 --- a/src/identity/storage/ClientIdAdapterFactory.ts +++ b/src/identity/storage/ClientIdAdapterFactory.ts @@ -46,9 +46,9 @@ export class ClientIdAdapter extends PassthroughAdapter { throw new Error(`Unable to access data at ${id}: ${await response.text()}`); } const data = await response.text(); - let json: any | undefined; + let json: Record | undefined; try { - json = JSON.parse(data); + json = JSON.parse(data) as Record; const contexts = Array.isArray(json['@context']) ? json['@context'] : [ json['@context'] ]; // We can only parse as simple JSON if the @context is correct if (!contexts.includes('https://www.w3.org/ns/solid/oidc-context.jsonld')) { @@ -71,7 +71,7 @@ export class ClientIdAdapter extends PassthroughAdapter { } // `token_endpoint_auth_method: 'none'` prevents oidc-provider from requiring a client_secret - // eslint-disable-next-line @typescript-eslint/naming-convention + // eslint-disable-next-line ts/naming-convention payload = { ...payload, token_endpoint_auth_method: 'none' }; } @@ -97,12 +97,12 @@ export class ClientIdAdapter extends PassthroughAdapter { } } - /* eslint-disable @typescript-eslint/naming-convention */ + /* eslint-disable ts/naming-convention */ return { client_id: id, redirect_uris: redirectUris, }; - /* eslint-enable @typescript-eslint/naming-convention */ + /* eslint-enable ts/naming-convention */ } } diff --git a/src/init/AppRunner.ts b/src/init/AppRunner.ts index b9671844f..64ba754ef 100644 --- a/src/init/AppRunner.ts +++ b/src/init/AppRunner.ts @@ -9,7 +9,7 @@ import { LOG_LEVELS } from '../logging/LogLevel'; import { getLoggerFor } from '../logging/LogUtil'; import { createErrorMessage, isError } from '../util/errors/ErrorUtil'; import { InternalServerError } from '../util/errors/InternalServerError'; -import { resolveModulePath, resolveAssetPath, joinFilePath } from '../util/PathUtil'; +import { joinFilePath, resolveAssetPath, resolveModulePath } from '../util/PathUtil'; import type { App } from './App'; import type { CliExtractor } from './cli/CliExtractor'; import type { CliResolver } from './CliResolver'; @@ -100,10 +100,10 @@ export class AppRunner { try { componentsManager = await this.createComponentsManager(loaderProperties, configs); } catch (error: unknown) { - this.resolveError(`Could not build the config files from ${configs}`, error); + this.resolveError(`Could not build the config files from ${configs.join(',')}`, error); } - const cliResolver = await this.createCliResolver(componentsManager); + const cliResolver = await this.createCliResolver(componentsManager as ComponentsManager); let extracted: Shorthand = {}; if (input.argv) { extracted = await this.extractShorthand(cliResolver.cliExtractor, input.argv); @@ -115,7 +115,8 @@ export class AppRunner { // Create the application using the translated variable values. // `variableBindings` override those resolved from the `shorthand` input. - return this.createApp(componentsManager, { ...parsedVariables, ...input.variableBindings }); + return this.createApp(componentsManager as ComponentsManager, + { ...parsedVariables, ...input.variableBindings }); } /** @@ -126,8 +127,9 @@ export class AppRunner { * This is only relevant when this is used to start as a Node.js application on its own, * if you use this as part of your code you probably want to use the async version. * - * @param argv - Command line arguments. - * @param stderr - Stream that should be used to output errors before the logger is enabled. + * @param argv - Input parameters. + * @param argv.argv - Command line arguments. + * @param argv.stderr - Stream that should be used to output errors before the logger is enabled. */ public runCliSync({ argv, stderr = process.stderr }: { argv?: CliArgv; stderr?: WriteStream }): void { this.runCli(argv).catch((error): never => { @@ -203,20 +205,20 @@ export class AppRunner { // First see if there is a dedicated .json configuration file const cssConfigPath = joinFilePath(process.cwd(), '.community-solid-server.config.json'); if (existsSync(cssConfigPath)) { - return readJSON(cssConfigPath); + return readJSON(cssConfigPath) as Promise>; } // Next see if there is a dedicated .js file const cssConfigPathJs = joinFilePath(process.cwd(), '.community-solid-server.config.js'); if (existsSync(cssConfigPathJs)) { - return import(cssConfigPathJs); + return import(cssConfigPathJs) as Promise>; } // Finally try and read from the config.community-solid-server // field in the root package.json - const pkg = await readJSON(packageJsonPath); + const pkg = await readJSON(packageJsonPath) as { config?: Record }; if (typeof pkg.config?.['community-solid-server'] === 'object') { - return pkg.config['community-solid-server']; + return pkg.config['community-solid-server'] as Record; } } diff --git a/src/init/ModuleVersionVerifier.ts b/src/init/ModuleVersionVerifier.ts index 1f7a9ee24..a8024f11a 100644 --- a/src/init/ModuleVersionVerifier.ts +++ b/src/init/ModuleVersionVerifier.ts @@ -20,6 +20,6 @@ export class ModuleVersionVerifier extends Initializer { public async handle(): Promise { const pkg = await readPackageJson(); - await this.storage.set(this.storageKey, pkg.version); + await this.storage.set(this.storageKey, pkg.version as string); } } diff --git a/src/init/ServerInitializer.ts b/src/init/ServerInitializer.ts index d4d74eabd..ffa92c6df 100644 --- a/src/init/ServerInitializer.ts +++ b/src/init/ServerInitializer.ts @@ -33,7 +33,7 @@ export class ServerInitializer extends Initializer implements Finalizable { this.server = await this.serverFactory.createServer(); if (this.socketPath) { - this.logger.info(`Listening to server at ${this.server.address()}`); + this.logger.info(`Listening to server at ${this.server.address() as string}`); this.server.listen(this.socketPath); } else { const url = new URL(`http${isHttpsServer(this.server) ? 's' : ''}://localhost:${this.port}/`).href; diff --git a/src/init/cli/YargsCliExtractor.ts b/src/init/cli/YargsCliExtractor.ts index 7d9c1922e..7b711f91b 100644 --- a/src/init/cli/YargsCliExtractor.ts +++ b/src/init/cli/YargsCliExtractor.ts @@ -1,4 +1,3 @@ -/* eslint-disable tsdoc/syntax */ import type { Arguments, Argv, Options } from 'yargs'; import yargs from 'yargs'; import { CliExtractor } from './CliExtractor'; @@ -77,6 +76,7 @@ export class YargsCliExtractor extends CliExtractor { yArgv.check((args): boolean => { for (const [ name, options ] of Object.entries(this.yargsArgOptions)) { if (options.type !== 'array' && Array.isArray(args[name])) { + // eslint-disable-next-line ts/restrict-template-expressions throw new Error(`Multiple values for --${name} (-${options.alias}) were provided where only one is allowed`); } } diff --git a/src/init/cluster/ClusterManager.ts b/src/init/cluster/ClusterManager.ts index 72e6988af..9d3c71846 100644 --- a/src/init/cluster/ClusterManager.ts +++ b/src/init/cluster/ClusterManager.ts @@ -13,7 +13,7 @@ enum ClusterMode { /** Single threaded mode, no clustering */ singleThreaded, /** Fixed amount of workers being forked. (limited to core_count) */ - fixed + fixed, } /** diff --git a/src/init/cluster/SingleThreaded.ts b/src/init/cluster/SingleThreaded.ts index 90b5cb9a3..685267c80 100644 --- a/src/init/cluster/SingleThreaded.ts +++ b/src/init/cluster/SingleThreaded.ts @@ -23,7 +23,7 @@ Promise { skipValidation: true, }); // The keys of the package.json `lsd:contexts` array contains all the IRIs of the relevant contexts; - const lsdContexts = Object.keys(pkg['lsd:contexts']); + const lsdContexts = Object.keys(pkg['lsd:contexts'] as Record); // Feed the lsd:context IRIs to the ContextParser const cssContext = await contextParser.parse(lsdContexts); // We can now expand a simple interface name, to its full Components.js type identifier. diff --git a/src/init/migration/SingleContainerJsonStorage.ts b/src/init/migration/SingleContainerJsonStorage.ts index e708af5b6..82018ce20 100644 --- a/src/init/migration/SingleContainerJsonStorage.ts +++ b/src/init/migration/SingleContainerJsonStorage.ts @@ -34,7 +34,7 @@ export class SingleContainerJsonStorage extends JsonResourceStorage { continue; } - const json = JSON.parse(await readableToString(document.data)); + const json = JSON.parse(await readableToString(document.data)) as T; const key = this.identifierToKey(documentId); yield [ key, json ]; } diff --git a/src/init/migration/V6MigrationInitializer.ts b/src/init/migration/V6MigrationInitializer.ts index bf0cd0d80..6e0dd74e3 100644 --- a/src/init/migration/V6MigrationInitializer.ts +++ b/src/init/migration/V6MigrationInitializer.ts @@ -113,7 +113,7 @@ export class V6MigrationInitializer extends Initializer { this.accountStorage = args.accountStorage; this.clientCredentialsStorage = args.clientCredentialsStorage; this.cleanupStorages = args.cleanupStorages; - this.newAccountStorage = args.newAccountStorage; + this.newAccountStorage = args.newAccountStorage as AccountLoginStorage; this.newSetupStorage = args.newSetupStorage; } diff --git a/src/init/variables/extractors/AssetPathExtractor.ts b/src/init/variables/extractors/AssetPathExtractor.ts index d8c3fd861..6fc8f3844 100644 --- a/src/init/variables/extractors/AssetPathExtractor.ts +++ b/src/init/variables/extractors/AssetPathExtractor.ts @@ -21,7 +21,7 @@ export class AssetPathExtractor extends ShorthandExtractor { const path = args[this.key] ?? this.defaultPath; if (path) { if (typeof path !== 'string') { - throw new Error(`Invalid ${this.key} argument`); + throw new TypeError(`Invalid ${this.key} argument`); } return resolveAssetPath(path); diff --git a/src/init/variables/extractors/BaseUrlExtractor.ts b/src/init/variables/extractors/BaseUrlExtractor.ts index 77f108e5e..8e228c14a 100644 --- a/src/init/variables/extractors/BaseUrlExtractor.ts +++ b/src/init/variables/extractors/BaseUrlExtractor.ts @@ -19,7 +19,7 @@ export class BaseUrlExtractor extends ShorthandExtractor { return ensureTrailingSlash(args.baseUrl); } if (typeof args.socket === 'string') { - throw new Error('BaseUrl argument should be provided when using Unix Domain Sockets.'); + throw new TypeError('BaseUrl argument should be provided when using Unix Domain Sockets.'); } const port = (args.port as string) ?? this.defaultPort; const url = new URL('http://localhost/'); diff --git a/src/logging/LazyLoggerFactory.ts b/src/logging/LazyLoggerFactory.ts index dd0b88c8c..7dcfd99a2 100644 --- a/src/logging/LazyLoggerFactory.ts +++ b/src/logging/LazyLoggerFactory.ts @@ -75,7 +75,7 @@ export class LazyLoggerFactory implements LoggerFactory { public get loggerFactory(): LoggerFactory { if (this.factory instanceof TemporaryLoggerFactory) { - throw new Error('Logger factory not yet set.'); + throw new TypeError('Logger factory not yet set.'); } return this.factory; } diff --git a/src/logging/VoidLogger.ts b/src/logging/VoidLogger.ts index ef26fb599..834e09958 100644 --- a/src/logging/VoidLogger.ts +++ b/src/logging/VoidLogger.ts @@ -1,12 +1,10 @@ import { BaseLogger } from './Logger'; -import type { LogLevel } from './LogLevel'; /** * A logger that does nothing on a log message. */ export class VoidLogger extends BaseLogger { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - public log(level: LogLevel, message: string, meta?: any): this { + public log(): this { // Do nothing return this; } diff --git a/src/logging/VoidLoggerFactory.ts b/src/logging/VoidLoggerFactory.ts index 0892f1307..d44ed6923 100644 --- a/src/logging/VoidLoggerFactory.ts +++ b/src/logging/VoidLoggerFactory.ts @@ -7,7 +7,7 @@ import { VoidLogger } from './VoidLogger'; export class VoidLoggerFactory implements LoggerFactory { private readonly logger = new VoidLogger(); - // eslint-disable-next-line @typescript-eslint/no-unused-vars + // eslint-disable-next-line unused-imports/no-unused-vars public createLogger(label: string): VoidLogger { return this.logger; } diff --git a/src/logging/WinstonLoggerFactory.ts b/src/logging/WinstonLoggerFactory.ts index d920d3a38..a5d684d74 100644 --- a/src/logging/WinstonLoggerFactory.ts +++ b/src/logging/WinstonLoggerFactory.ts @@ -34,7 +34,7 @@ export class WinstonLoggerFactory implements LoggerFactory { format.metadata({ fillExcept: [ 'level', 'timestamp', 'label', 'message' ]}), format.printf(({ level: levelInner, message, label: labelInner, timestamp, metadata: meta }: Record): string => - `${timestamp} [${labelInner}] {${this.clusterInfo(meta)}} ${levelInner}: ${message}`), + `${timestamp} [${labelInner}] {${this.clusterInfo(meta as LogMetadata)}} ${levelInner}: ${message}`), ), transports: this.createTransports(), })); diff --git a/src/pods/generate/BaseResourcesGenerator.ts b/src/pods/generate/BaseResourcesGenerator.ts index 72d1fb40c..7213d5df0 100644 --- a/src/pods/generate/BaseResourcesGenerator.ts +++ b/src/pods/generate/BaseResourcesGenerator.ts @@ -16,7 +16,7 @@ import type { ResourceSet } from '../../storage/ResourceSet'; import { INTERNAL_QUADS } from '../../util/ContentTypes'; import { guardStream } from '../../util/GuardedStream'; import type { Guarded } from '../../util/GuardedStream'; -import { joinFilePath, isContainerIdentifier, resolveAssetPath } from '../../util/PathUtil'; +import { isContainerIdentifier, joinFilePath, resolveAssetPath } from '../../util/PathUtil'; import { addResourceMetadata } from '../../util/ResourceUtil'; import { guardedStreamFrom, readableToString } from '../../util/StreamUtil'; import type { TemplateEngine } from '../../util/templates/TemplateEngine'; diff --git a/src/pods/generate/TemplatedPodGenerator.ts b/src/pods/generate/TemplatedPodGenerator.ts index 00f21a0ff..44a3bdfa5 100644 --- a/src/pods/generate/TemplatedPodGenerator.ts +++ b/src/pods/generate/TemplatedPodGenerator.ts @@ -36,6 +36,7 @@ export class TemplatedPodGenerator implements PodGenerator { * @param storeFactory - Factory used for Components.js instantiation. * @param variableHandler - Handler used for setting variable values. * @param configStorage - Where to store the configuration values to instantiate the store for this pod. + * @param baseUrl - Base URL of the server. * @param configTemplatePath - Where to find the configuration templates. */ public constructor(storeFactory: ComponentsJsFactory, variableHandler: VariableHandler, @@ -80,6 +81,7 @@ export class TemplatedPodGenerator implements PodGenerator { await this.storeFactory.generate( variables[TEMPLATE_VARIABLE.templateConfig] as string, TEMPLATE.ResourceStore, + // eslint-disable-next-line ts/naming-convention { ...variables, 'urn:solid-server:default:variable:baseUrl': this.baseUrl }, ); this.logger.debug(`Generating store ${identifier.path} with variables ${JSON.stringify(variables)}`); diff --git a/src/server/AuthorizingHttpHandler.ts b/src/server/AuthorizingHttpHandler.ts index 956e0492e..0820e273a 100644 --- a/src/server/AuthorizingHttpHandler.ts +++ b/src/server/AuthorizingHttpHandler.ts @@ -7,6 +7,7 @@ import type { ModesExtractor } from '../authorization/permissions/ModesExtractor import type { AccessMap } from '../authorization/permissions/Permissions'; import type { ResponseDescription } from '../http/output/response/ResponseDescription'; import { getLoggerFor } from '../logging/LogUtil'; +import { createErrorMessage } from '../util/errors/ErrorUtil'; import { HttpError } from '../util/errors/HttpError'; import { SOLID_META } from '../util/Vocabularies'; import type { OperationHttpHandlerInput } from './OperationHttpHandler'; @@ -71,18 +72,20 @@ export class AuthorizingHttpHandler extends OperationHttpHandler { const requestedModes = await this.modesExtractor.handleSafe(operation); this.logger.verbose(`Retrieved required modes: ${ - [ ...requestedModes.entrySets() ].map(([ id, set ]): string => `{ ${id.path}: ${[ ...set ]} }`) + [ ...requestedModes.entrySets() ] + .map(([ id, set ]): string => `{ ${id.path}: ${[ ...set ].join(',')} }`).join(',') }`); const availablePermissions = await this.permissionReader.handleSafe({ credentials, requestedModes }); this.logger.verbose(`Available permissions are ${ - [ ...availablePermissions.entries() ].map(([ id, map ]): string => `{ ${id.path}: ${JSON.stringify(map)} }`) + [ ...availablePermissions.entries() ] + .map(([ id, map ]): string => `{ ${id.path}: ${JSON.stringify(map)} }`).join(',') }`); try { await this.authorizer.handleSafe({ credentials, requestedModes, availablePermissions }); } catch (error: unknown) { - this.logger.verbose(`Authorization failed: ${(error as any).message}`); + this.logger.verbose(`Authorization failed: ${createErrorMessage(error)}`); if (HttpError.isInstance(error)) { this.addAccessModesToError(error, requestedModes); } diff --git a/src/server/HandlerServerConfigurator.ts b/src/server/HandlerServerConfigurator.ts index 9c9e688f4..f31d4bdf3 100644 --- a/src/server/HandlerServerConfigurator.ts +++ b/src/server/HandlerServerConfigurator.ts @@ -1,4 +1,4 @@ -import type { Server, IncomingMessage, ServerResponse } from 'http'; +import type { IncomingMessage, Server, ServerResponse } from 'http'; import { getLoggerFor } from '../logging/LogUtil'; import { isError } from '../util/errors/ErrorUtil'; import { guardStream } from '../util/GuardedStream'; @@ -30,6 +30,7 @@ export class HandlerServerConfigurator extends ServerConfigurator { public async handle(server: Server): Promise { server.on('request', + // eslint-disable-next-line ts/no-misused-promises async(request: IncomingMessage, response: ServerResponse): Promise => { try { this.logger.info(`Received ${request.method} request for ${request.url}`); @@ -58,6 +59,7 @@ export class HandlerServerConfigurator extends ServerConfigurator { */ private createErrorMessage(error: unknown): string { if (!isError(error)) { + // eslint-disable-next-line ts/restrict-template-expressions return `Unknown error: ${error}.\n`; } if (this.showStackTrace && error.stack) { diff --git a/src/server/HttpRequest.ts b/src/server/HttpRequest.ts index a071f4d46..647e42d6e 100644 --- a/src/server/HttpRequest.ts +++ b/src/server/HttpRequest.ts @@ -9,6 +9,7 @@ export type HttpRequest = Guarded; /** * Checks if the given stream is an HttpRequest. */ -export function isHttpRequest(stream: any): stream is HttpRequest { - return typeof stream.socket === 'object' && typeof stream.url === 'string' && typeof stream.method === 'string'; +export function isHttpRequest(stream: unknown): stream is HttpRequest { + const req = stream as HttpRequest; + return typeof req.socket === 'object' && typeof req.url === 'string' && typeof req.method === 'string'; } diff --git a/src/server/WebSocketServerConfigurator.ts b/src/server/WebSocketServerConfigurator.ts index 5b0a9577a..1b850d4b9 100644 --- a/src/server/WebSocketServerConfigurator.ts +++ b/src/server/WebSocketServerConfigurator.ts @@ -27,6 +27,7 @@ export class WebSocketServerConfigurator extends ServerConfigurator { // Create WebSocket server const webSocketServer = new WebSocketServer({ noServer: true }); server.on('upgrade', (upgradeRequest: IncomingMessage, socket: Socket, head: Buffer): void => { + // eslint-disable-next-line ts/no-misused-promises webSocketServer.handleUpgrade(upgradeRequest, socket, head, async(webSocket: WebSocket): Promise => { try { await this.handler.handleSafe({ upgradeRequest: guardStream(upgradeRequest), webSocket }); diff --git a/src/server/middleware/CorsHandler.ts b/src/server/middleware/CorsHandler.ts index d06116645..4f7dc1890 100644 --- a/src/server/middleware/CorsHandler.ts +++ b/src/server/middleware/CorsHandler.ts @@ -4,7 +4,8 @@ import type { HttpHandlerInput } from '../HttpHandler'; import { HttpHandler } from '../HttpHandler'; const defaultOptions: CorsOptions = { - origin: (origin: any, callback: any): void => callback(null, origin ?? '*'), + origin: (origin: string | undefined, callback: (err: Error | null, origin?: string) => void): void => + callback(null, origin ?? '*'), }; // Components.js does not support the full CorsOptions yet @@ -47,7 +48,7 @@ export class CorsHandler extends HttpHandler { public async handle(input: HttpHandlerInput): Promise { return new Promise((resolve): void => { - this.corsHandler(input.request as any, input.response as any, (): void => resolve()); + this.corsHandler(input.request, input.response, (): void => resolve()); }); } } diff --git a/src/server/middleware/StaticAssetHandler.ts b/src/server/middleware/StaticAssetHandler.ts index 5e56babb5..a34ad71dc 100644 --- a/src/server/middleware/StaticAssetHandler.ts +++ b/src/server/middleware/StaticAssetHandler.ts @@ -6,6 +6,7 @@ import { APPLICATION_OCTET_STREAM } from '../../util/ContentTypes'; import { InternalServerError } from '../../util/errors/InternalServerError'; import { NotFoundHttpError } from '../../util/errors/NotFoundHttpError'; import { NotImplementedHttpError } from '../../util/errors/NotImplementedHttpError'; +import type { SystemError } from '../../util/errors/SystemError'; import { ensureTrailingSlash, joinFilePath, resolveAssetPath, trimLeadingSlashes } from '../../util/PathUtil'; import { pipeSafely } from '../../util/StreamUtil'; import type { HttpHandlerInput } from '../HttpHandler'; @@ -40,7 +41,8 @@ export class StaticAssetHandler extends HttpHandler { * Creates a handler for the provided static resources. * @param assets - A list of {@link StaticAssetEntry}. * @param baseUrl - The base URL of the server. - * @param options - Cache expiration time in seconds. + * @param options - Specific options. + * @param options.expires - Cache expiration time in seconds. */ public constructor(assets: StaticAssetEntry[], baseUrl: string, options: { expires?: number } = {}) { super(); @@ -118,6 +120,7 @@ export class StaticAssetHandler extends HttpHandler { asset.once('readable', (): void => { const contentType = mime.lookup(filePath) || APPLICATION_OCTET_STREAM; response.writeHead(200, { + // eslint-disable-next-line ts/naming-convention 'content-type': contentType, ...this.getCacheHeaders(), }); @@ -135,7 +138,7 @@ export class StaticAssetHandler extends HttpHandler { // Pass the error when something goes wrong asset.once('error', (error): void => { - const { code } = error as any; + const { code } = error as SystemError; // When the file if not found or a folder, signal a 404 if (code === 'ENOENT' || code === 'EISDIR') { this.logger.debug(`Static asset ${filePath} not found`); @@ -153,10 +156,11 @@ export class StaticAssetHandler extends HttpHandler { private getCacheHeaders(): Record { return this.expires <= 0 ? - {} : - { - 'cache-control': `max-age=${this.expires}`, - expires: new Date(Date.now() + (this.expires * 1000)).toUTCString(), - }; + {} : + { + // eslint-disable-next-line ts/naming-convention + 'cache-control': `max-age=${this.expires}`, + expires: new Date(Date.now() + (this.expires * 1000)).toUTCString(), + }; } } diff --git a/src/server/notifications/ActivityEmitter.ts b/src/server/notifications/ActivityEmitter.ts index 1d5f6e314..9afa125bb 100644 --- a/src/server/notifications/ActivityEmitter.ts +++ b/src/server/notifications/ActivityEmitter.ts @@ -18,5 +18,5 @@ export type ActivityEmitter = /** * A class implementation of {@link ActivityEmitter}. */ -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention export const BaseActivityEmitter = createGenericEventEmitterClass(); diff --git a/src/server/notifications/BaseChannelType.ts b/src/server/notifications/BaseChannelType.ts index 2e05a3d14..08e036c08 100644 --- a/src/server/notifications/BaseChannelType.ts +++ b/src/server/notifications/BaseChannelType.ts @@ -54,7 +54,9 @@ const CONTEXT_SHACL = 'https://w3c.github.io/shacl/shacl-jsonld-context/shacl.co * The SHACL shape for the minimum requirements on a notification channel subscription request. */ export const DEFAULT_SUBSCRIPTION_SHACL = { + // eslint-disable-next-line ts/naming-convention '@context': [ CONTEXT_SHACL ], + // eslint-disable-next-line ts/naming-convention '@type': 'sh:NodeShape', // Use the topic predicate to find the focus node targetSubjectsOf: NOTIFY.topic, @@ -109,6 +111,7 @@ export abstract class BaseChannelType implements NotificationChannelType { property: [ ...DEFAULT_SUBSCRIPTION_SHACL.property, // Add type check + // eslint-disable-next-line ts/naming-convention { path: RDF.type, hasValue: { '@id': type.value }}, ...additionalShaclProperties, ], @@ -117,6 +120,7 @@ export abstract class BaseChannelType implements NotificationChannelType { public getDescription(): SubscriptionService { return { + // eslint-disable-next-line ts/naming-convention '@context': [ CONTEXT_NOTIFICATION ], id: this.path, // At the time of writing, there is no base value for URIs in the notification context, @@ -139,7 +143,7 @@ export abstract class BaseChannelType implements NotificationChannelType { * Initiates the channel by first calling {@link validateSubscription} followed by {@link quadsToChannel}. * Subclasses can override either function safely to impact the result of the function. */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars + // eslint-disable-next-line unused-imports/no-unused-vars public async initChannel(data: Store, credentials: Credentials): Promise { const subject = await this.validateSubscription(data); return this.quadsToChannel(data, subject); @@ -255,6 +259,7 @@ export abstract class BaseChannelType implements NotificationChannelType { */ public async toJsonLd(channel: NotificationChannel): Promise> { const result: Record = { + // eslint-disable-next-line ts/naming-convention '@context': [ CONTEXT_NOTIFICATION, ], @@ -282,7 +287,7 @@ export abstract class BaseChannelType implements NotificationChannelType { return new IdentifierSetMultiMap([[{ path: channel.topic }, AccessMode.read ]]); } - // eslint-disable-next-line @typescript-eslint/no-unused-vars + // eslint-disable-next-line unused-imports/no-unused-vars public async completeChannel(channel: NotificationChannel): Promise { // Do nothing } diff --git a/src/server/notifications/Notification.ts b/src/server/notifications/Notification.ts index 019bbe2a9..f468af53c 100644 --- a/src/server/notifications/Notification.ts +++ b/src/server/notifications/Notification.ts @@ -6,6 +6,7 @@ export const CONTEXT_NOTIFICATION = 'https://www.w3.org/ns/solid/notification/v1 * as defined in https://solidproject.org/TR/2022/notifications-protocol-20221231#data-model. */ export interface Notification { + // eslint-disable-next-line ts/naming-convention '@context': [ typeof CONTEXT_ACTIVITYSTREAMS, typeof CONTEXT_NOTIFICATION, diff --git a/src/server/notifications/NotificationChannelType.ts b/src/server/notifications/NotificationChannelType.ts index 642d55dd0..53a92e108 100644 --- a/src/server/notifications/NotificationChannelType.ts +++ b/src/server/notifications/NotificationChannelType.ts @@ -9,6 +9,7 @@ import type { NotificationChannel } from './NotificationChannel'; * https://solidproject.org/TR/2022/notifications-protocol-20221231#subscription-service-data-model */ export interface SubscriptionService { + // eslint-disable-next-line ts/naming-convention '@context': [ typeof CONTEXT_NOTIFICATION ]; id: string; channelType: string; diff --git a/src/server/notifications/NotificationDescriber.ts b/src/server/notifications/NotificationDescriber.ts index 383b94071..ae0e49e46 100644 --- a/src/server/notifications/NotificationDescriber.ts +++ b/src/server/notifications/NotificationDescriber.ts @@ -8,6 +8,7 @@ import { APPLICATION_LD_JSON, INTERNAL_QUADS } from '../../util/ContentTypes'; import { NOTIFY } from '../../util/Vocabularies'; import { StorageDescriber } from '../description/StorageDescriber'; import type { NotificationChannelType } from './NotificationChannelType'; + const { namedNode, quad } = DataFactory; /** diff --git a/src/server/notifications/NotificationSubscriber.ts b/src/server/notifications/NotificationSubscriber.ts index 4cbcbfb5b..ecbd9a764 100644 --- a/src/server/notifications/NotificationSubscriber.ts +++ b/src/server/notifications/NotificationSubscriber.ts @@ -123,7 +123,7 @@ export class NotificationSubscriber extends OperationHttpHandler { // Complete the channel once the response has been sent out endOfStream(response.data) - .then((): Promise => this.channelType.completeChannel(channel)) + .then(async(): Promise => this.channelType.completeChannel(channel)) .catch((error): void => { this.logger.error(`There was an issue completing notification channel ${channel.id}: ${ createErrorMessage(error)}`); @@ -134,10 +134,10 @@ export class NotificationSubscriber extends OperationHttpHandler { private async authorize(credentials: Credentials, channel: NotificationChannel): Promise { const requestedModes = await this.channelType.extractModes(channel); - this.logger.debug(`Retrieved required modes: ${[ ...requestedModes.entrySets() ]}`); + this.logger.debug(`Retrieved required modes: ${[ ...requestedModes.entrySets() ].join(',')}`); const availablePermissions = await this.permissionReader.handleSafe({ credentials, requestedModes }); - this.logger.debug(`Available permissions are ${[ ...availablePermissions.entries() ]}`); + this.logger.debug(`Available permissions are ${[ ...availablePermissions.entries() ].join(',')}`); await this.authorizer.handleSafe({ credentials, requestedModes, availablePermissions }); this.logger.debug(`Authorization succeeded, creating notification channel`); diff --git a/src/server/notifications/WebhookChannel2023/WebhookEmitter.ts b/src/server/notifications/WebhookChannel2023/WebhookEmitter.ts index 170751d78..a924402ce 100644 --- a/src/server/notifications/WebhookChannel2023/WebhookEmitter.ts +++ b/src/server/notifications/WebhookChannel2023/WebhookEmitter.ts @@ -88,6 +88,7 @@ export class WebhookEmitter extends NotificationEmitter { const response = await fetch(webhookChannel.sendTo, { method: 'POST', headers: { + // eslint-disable-next-line ts/naming-convention 'content-type': representation.metadata.contentType!, authorization: `DPoP ${dpopToken}`, dpop: dpopProof, diff --git a/src/server/notifications/generate/ActivityNotificationGenerator.ts b/src/server/notifications/generate/ActivityNotificationGenerator.ts index 5d875944d..e7ebcd9e3 100644 --- a/src/server/notifications/generate/ActivityNotificationGenerator.ts +++ b/src/server/notifications/generate/ActivityNotificationGenerator.ts @@ -33,6 +33,7 @@ export class ActivityNotificationGenerator extends NotificationGenerator { const state = this.eTagHandler.getETag(representation.metadata); return { + // eslint-disable-next-line ts/naming-convention '@context': [ CONTEXT_ACTIVITYSTREAMS, CONTEXT_NOTIFICATION, diff --git a/src/server/notifications/generate/AddRemoveNotificationGenerator.ts b/src/server/notifications/generate/AddRemoveNotificationGenerator.ts index 49a16a5b3..cc8954e8b 100644 --- a/src/server/notifications/generate/AddRemoveNotificationGenerator.ts +++ b/src/server/notifications/generate/AddRemoveNotificationGenerator.ts @@ -43,6 +43,7 @@ export class AddRemoveNotificationGenerator extends NotificationGenerator { } return { + // eslint-disable-next-line ts/naming-convention '@context': [ CONTEXT_ACTIVITYSTREAMS, CONTEXT_NOTIFICATION, diff --git a/src/server/notifications/generate/DeleteNotificationGenerator.ts b/src/server/notifications/generate/DeleteNotificationGenerator.ts index f2e31a809..97ea5d333 100644 --- a/src/server/notifications/generate/DeleteNotificationGenerator.ts +++ b/src/server/notifications/generate/DeleteNotificationGenerator.ts @@ -19,6 +19,7 @@ export class DeleteNotificationGenerator extends NotificationGenerator { public async handle({ topic }: NotificationHandlerInput): Promise { return { + // eslint-disable-next-line ts/naming-convention '@context': [ CONTEXT_ACTIVITYSTREAMS, CONTEXT_NOTIFICATION, diff --git a/src/server/util/BaseRouterHandler.ts b/src/server/util/BaseRouterHandler.ts index 684f45e48..7377707a2 100644 --- a/src/server/util/BaseRouterHandler.ts +++ b/src/server/util/BaseRouterHandler.ts @@ -47,7 +47,7 @@ export abstract class BaseRouterHandler> protected constructor(args: BaseRouterHandlerArgs) { super(); if (typeof args.allowedPathNames !== 'undefined' && typeof args.baseUrl !== 'string') { - throw new Error('A value for allowedPathNames requires baseUrl to be defined.'); + throw new TypeError('A value for allowedPathNames requires baseUrl to be defined.'); } // Trimming trailing slash so regexes can start with `/` this.baseUrlLength = trimTrailingSlashes(args.baseUrl ?? '').length; @@ -70,6 +70,6 @@ export abstract class BaseRouterHandler> } public async handle(input: AsyncHandlerInput): Promise> { - return this.handler.handle(input); + return this.handler.handle(input) as Promise>; } } diff --git a/src/server/util/OperationRouterHandler.ts b/src/server/util/OperationRouterHandler.ts index 890693ede..92cb4b008 100644 --- a/src/server/util/OperationRouterHandler.ts +++ b/src/server/util/OperationRouterHandler.ts @@ -1,4 +1,4 @@ -import type { OperationHttpHandlerInput, OperationHttpHandler } from '../OperationHttpHandler'; +import type { OperationHttpHandler, OperationHttpHandlerInput } from '../OperationHttpHandler'; import type { BaseRouterHandlerArgs } from './BaseRouterHandler'; import { BaseRouterHandler } from './BaseRouterHandler'; diff --git a/src/server/util/RedirectingHttpHandler.ts b/src/server/util/RedirectingHttpHandler.ts index 129084c1a..4b1c4c09e 100644 --- a/src/server/util/RedirectingHttpHandler.ts +++ b/src/server/util/RedirectingHttpHandler.ts @@ -14,6 +14,7 @@ import type { HttpHandlerInput } from '../HttpHandler'; import { HttpHandler } from '../HttpHandler'; import type { HttpRequest } from '../HttpRequest'; +/* eslint-disable ts/naming-convention */ const redirectErrorFactories: Record<301 | 302 | 303 | 307 | 308, (location: string) => RedirectHttpError> = { 301: (location: string): RedirectHttpError => new MovedPermanentlyHttpError(location), 302: (location: string): RedirectHttpError => new FoundHttpError(location), @@ -21,6 +22,7 @@ const redirectErrorFactories: Record<301 | 302 | 303 | 307 | 308, (location: str 307: (location: string): RedirectHttpError => new TemporaryRedirectHttpError(location), 308: (location: string): RedirectHttpError => new PermanentRedirectHttpError(location), }; +/* eslint-enable ts/naming-convention */ /** * Handler that redirects paths matching given patterns @@ -36,6 +38,7 @@ export class RedirectingHttpHandler extends HttpHandler { /** * Creates a handler for the provided redirects. * @param redirects - A mapping between URL patterns. + * @param baseUrl - Base URL of the server. * @param targetExtractor - To extract the target from the request. * @param responseWriter - To write the redirect to the response. * @param statusCode - Desired 30x redirection code (defaults to 308). diff --git a/src/server/util/RouterHandler.ts b/src/server/util/RouterHandler.ts index a7964474e..ab1153223 100644 --- a/src/server/util/RouterHandler.ts +++ b/src/server/util/RouterHandler.ts @@ -1,6 +1,6 @@ import type { TargetExtractor } from '../../http/input/identifier/TargetExtractor'; import { BadRequestHttpError } from '../../util/errors/BadRequestHttpError'; -import type { HttpHandlerInput, HttpHandler } from '../HttpHandler'; +import type { HttpHandler, HttpHandlerInput } from '../HttpHandler'; import { BaseRouterHandler } from './BaseRouterHandler'; import type { BaseRouterHandlerArgs } from './BaseRouterHandler'; diff --git a/src/storage/BaseResourceStore.ts b/src/storage/BaseResourceStore.ts index 533f99258..9a54e9e6a 100644 --- a/src/storage/BaseResourceStore.ts +++ b/src/storage/BaseResourceStore.ts @@ -4,12 +4,12 @@ import type { RepresentationPreferences } from '../http/representation/Represent import type { ResourceIdentifier } from '../http/representation/ResourceIdentifier'; import { NotImplementedHttpError } from '../util/errors/NotImplementedHttpError'; import type { Conditions } from './conditions/Conditions'; -import type { ResourceStore, ChangeMap } from './ResourceStore'; +import type { ChangeMap, ResourceStore } from './ResourceStore'; /** * Base implementation of ResourceStore for implementers of custom stores. */ -/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable unused-imports/no-unused-vars */ export class BaseResourceStore implements ResourceStore { public async hasResource(identifier: ResourceIdentifier): Promise { throw new NotImplementedHttpError(); diff --git a/src/storage/DataAccessorBasedStore.ts b/src/storage/DataAccessorBasedStore.ts index 7aca94c13..efec76cae 100644 --- a/src/storage/DataAccessorBasedStore.ts +++ b/src/storage/DataAccessorBasedStore.ts @@ -1,3 +1,4 @@ +import type { Quad } from '@rdfjs/types'; import arrayifyStream from 'arrayify-stream'; import { DataFactory } from 'n3'; import type { NamedNode, Term } from 'rdf-js'; @@ -25,27 +26,27 @@ import { ensureTrailingSlash, isContainerIdentifier, isContainerPath, - trimTrailingSlashes, toCanonicalUriPath, + trimTrailingSlashes, } from '../util/PathUtil'; import { addResourceMetadata, updateModifiedDate } from '../util/ResourceUtil'; import { - DC, - SOLID_HTTP, - LDP, - POSIX, - PIM, - RDF, - XSD, - SOLID_META, - PREFERRED_PREFIX_TERM, - CONTENT_TYPE_TERM, - SOLID_AS, AS, + CONTENT_TYPE_TERM, + DC, + LDP, + PIM, + POSIX, + PREFERRED_PREFIX_TERM, + RDF, + SOLID_AS, + SOLID_HTTP, + SOLID_META, + XSD, } from '../util/Vocabularies'; import type { DataAccessor } from './accessors/DataAccessor'; import type { Conditions } from './conditions/Conditions'; -import type { ResourceStore, ChangeMap } from './ResourceStore'; +import type { ChangeMap, ResourceStore } from './ResourceStore'; import namedNode = DataFactory.namedNode; /** @@ -427,7 +428,7 @@ export class DataAccessorBasedStore implements ResourceStore { // Transform representation data to quads and add them to the metadata object const metadata = new RepresentationMetadata(subjectIdentifier); - const quads = await arrayifyStream(representation.data); + const quads: Quad[] = await arrayifyStream(representation.data); metadata.addQuads(quads); // Remove the response metadata as this must not be stored diff --git a/src/storage/LockingResourceStore.ts b/src/storage/LockingResourceStore.ts index e7e3e4ebf..4a203eaf7 100644 --- a/src/storage/LockingResourceStore.ts +++ b/src/storage/LockingResourceStore.ts @@ -10,7 +10,7 @@ import type { ExpiringReadWriteLocker } from '../util/locking/ExpiringReadWriteL import { endOfStream } from '../util/StreamUtil'; import type { AtomicResourceStore } from './AtomicResourceStore'; import type { Conditions } from './conditions/Conditions'; -import type { ResourceStore, ChangeMap } from './ResourceStore'; +import type { ChangeMap, ResourceStore } from './ResourceStore'; /** * Store that for every call acquires a lock before executing it on the requested resource, @@ -106,7 +106,7 @@ export class LockingResourceStore implements AtomicResourceStore { // Release the lock when an error occurs or the data finished streaming await this.waitForStreamToEnd(representation.data); - }).catch((error): void => { + }).catch((error: Error): void => { // Destroy the source stream in case the lock times out representation?.data.destroy(error); @@ -133,7 +133,7 @@ export class LockingResourceStore implements AtomicResourceStore { return source.read(size); }, }, - }); + }) as Readable; return new BasicRepresentation(data, representation.metadata, representation.binary); } diff --git a/src/storage/MonitoringStore.ts b/src/storage/MonitoringStore.ts index 577003f1d..ff5101926 100644 --- a/src/storage/MonitoringStore.ts +++ b/src/storage/MonitoringStore.ts @@ -6,7 +6,7 @@ import type { ResourceIdentifier } from '../http/representation/ResourceIdentifi import { BaseActivityEmitter } from '../server/notifications/ActivityEmitter'; import { AS, SOLID_AS } from '../util/Vocabularies'; import type { Conditions } from './conditions/Conditions'; -import type { ResourceStore, ChangeMap } from './ResourceStore'; +import type { ChangeMap, ResourceStore } from './ResourceStore'; // The ActivityStream terms for which we emit an event const knownActivities = [ AS.terms.Add, AS.terms.Create, AS.terms.Delete, AS.terms.Remove, AS.terms.Update ]; diff --git a/src/storage/PassthroughStore.ts b/src/storage/PassthroughStore.ts index 26f16fbdf..fc33fd254 100644 --- a/src/storage/PassthroughStore.ts +++ b/src/storage/PassthroughStore.ts @@ -3,7 +3,7 @@ import type { Representation } from '../http/representation/Representation'; import type { RepresentationPreferences } from '../http/representation/RepresentationPreferences'; import type { ResourceIdentifier } from '../http/representation/ResourceIdentifier'; import type { Conditions } from './conditions/Conditions'; -import type { ResourceStore, ChangeMap } from './ResourceStore'; +import type { ChangeMap, ResourceStore } from './ResourceStore'; /** * Store that calls the corresponding functions of the source Store. diff --git a/src/storage/PatchingStore.ts b/src/storage/PatchingStore.ts index 692547810..dfca2e706 100644 --- a/src/storage/PatchingStore.ts +++ b/src/storage/PatchingStore.ts @@ -4,7 +4,7 @@ import { NotImplementedHttpError } from '../util/errors/NotImplementedHttpError' import type { Conditions } from './conditions/Conditions'; import { PassthroughStore } from './PassthroughStore'; import type { PatchHandler } from './patch/PatchHandler'; -import type { ResourceStore, ChangeMap } from './ResourceStore'; +import type { ChangeMap, ResourceStore } from './ResourceStore'; /** * {@link ResourceStore} using decorator pattern for the `modifyResource` function. diff --git a/src/storage/ReadOnlyStore.ts b/src/storage/ReadOnlyStore.ts index 5490dc31c..99997608b 100644 --- a/src/storage/ReadOnlyStore.ts +++ b/src/storage/ReadOnlyStore.ts @@ -4,12 +4,12 @@ import type { ResourceIdentifier } from '../http/representation/ResourceIdentifi import { ForbiddenHttpError } from '../util/errors/ForbiddenHttpError'; import type { Conditions } from './conditions/Conditions'; import { PassthroughStore } from './PassthroughStore'; -import type { ResourceStore, ChangeMap } from './ResourceStore'; +import type { ChangeMap, ResourceStore } from './ResourceStore'; /** * Store that only allow read operations on the underlying source. */ -/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable unused-imports/no-unused-vars */ export class ReadOnlyStore extends PassthroughStore { public constructor(source: T) { super(source); diff --git a/src/storage/RepresentationConvertingStore.ts b/src/storage/RepresentationConvertingStore.ts index 3f7f1b13f..a28c68980 100644 --- a/src/storage/RepresentationConvertingStore.ts +++ b/src/storage/RepresentationConvertingStore.ts @@ -8,7 +8,7 @@ import type { Conditions } from './conditions/Conditions'; import { PassthroughConverter } from './conversion/PassthroughConverter'; import type { RepresentationConverter } from './conversion/RepresentationConverter'; import { PassthroughStore } from './PassthroughStore'; -import type { ResourceStore, ChangeMap } from './ResourceStore'; +import type { ChangeMap, ResourceStore } from './ResourceStore'; /** * Store that provides (optional) conversion of incoming and outgoing {@link Representation}s. @@ -26,9 +26,9 @@ export class RepresentationConvertingStore); public constructor(replacements: Record>); - public constructor(replacements: Record) { + public constructor(replacements: Record>) { super(); // Store the replacements as value preferences, // completing any transitive chains (A:B, B:C, C:D => A:B,C,D) @@ -44,7 +44,7 @@ export class ContentTypeReplacer extends TypedRepresentationConverter { const supported = Object.keys(this.contentTypeMap) .filter((type): boolean => matchesMediaType(contentType, type)) .map((type): ValuePreferences => this.contentTypeMap[type]); - return Object.assign({} as ValuePreferences, ...supported); + return Object.assign({}, ...supported) as ValuePreferences; } public async canHandle({ representation, preferences }: RepresentationConverterArgs): Promise { @@ -72,7 +72,7 @@ export class ContentTypeReplacer extends TypedRepresentationConverter { const supported = await this.getOutputTypes(contentType); const match = getConversionTarget(supported, preferred); if (!match) { - throw new NotImplementedHttpError(`Cannot convert from ${contentType} to ${Object.keys(preferred)}`); + throw new NotImplementedHttpError(`Cannot convert from ${contentType} to ${Object.keys(preferred).join(',')}`); } return match; } diff --git a/src/storage/conversion/ConversionUtil.ts b/src/storage/conversion/ConversionUtil.ts index b6af8a00a..247e60783 100644 --- a/src/storage/conversion/ConversionUtil.ts +++ b/src/storage/conversion/ConversionUtil.ts @@ -25,7 +25,7 @@ export class ContextDocumentLoader extends FetchDocumentLoader { super(fetch); this.contexts = {}; for (const [ key, path ] of Object.entries(contexts)) { - this.contexts[key] = readJsonSync(resolveAssetPath(path)); + this.contexts[key] = readJsonSync(resolveAssetPath(path)) as IJsonLdContext; } } diff --git a/src/storage/conversion/DynamicJsonToTemplateConverter.ts b/src/storage/conversion/DynamicJsonToTemplateConverter.ts index 8f54c48eb..0ec8a7fe1 100644 --- a/src/storage/conversion/DynamicJsonToTemplateConverter.ts +++ b/src/storage/conversion/DynamicJsonToTemplateConverter.ts @@ -1,4 +1,4 @@ -import type { Term, NamedNode } from 'rdf-js'; +import type { NamedNode, Term } from 'rdf-js'; import { BasicRepresentation } from '../../http/representation/BasicRepresentation'; import type { Representation } from '../../http/representation/Representation'; import { RepresentationMetadata } from '../../http/representation/RepresentationMetadata'; @@ -58,7 +58,7 @@ export class DynamicJsonToTemplateConverter extends RepresentationConverter { return representation; } - const contents = JSON.parse(await readableToString(representation.data)); + const contents = JSON.parse(await readableToString(representation.data)) as NodeJS.Dict; const rendered = await this.templateEngine.handleSafe({ contents, template: { templateFile: typeMap[type] }}); const metadata = new RepresentationMetadata(representation.metadata, { [CONTENT_TYPE]: type }); @@ -106,7 +106,7 @@ export class DynamicJsonToTemplateConverter extends RepresentationConverter { const type = getConversionTarget(typeWeights, typePreferences); if (!type) { throw new NotImplementedHttpError( - `No templates found matching ${Object.keys(typePreferences)}, only ${Object.keys(typeMap)}`, + `No templates found matching ${Object.keys(typePreferences).join(',')}, only ${Object.keys(typeMap).join(',')}`, ); } return type; diff --git a/src/storage/conversion/RdfToQuadConverter.ts b/src/storage/conversion/RdfToQuadConverter.ts index 0de460b85..2df0298e8 100644 --- a/src/storage/conversion/RdfToQuadConverter.ts +++ b/src/storage/conversion/RdfToQuadConverter.ts @@ -38,11 +38,11 @@ export class RdfToQuadConverter extends BaseTypedRepresentationConverter { contentType: representation.metadata.contentType!, baseIRI: identifier.path, [KeysRdfParseJsonLd.documentLoader.name]: this.documentLoader, - } as any) + }) // This works only for those cases where the data stream has been completely read before accessing the metadata. // Eg. the PATCH operation, which is the main case why we store the prefixes in metadata here if there are any. // See also https://github.com/CommunitySolidServer/CommunitySolidServer/issues/126 - .on('prefix', (prefix, iri: NamedNode): void => { + .on('prefix', (prefix: string, iri: NamedNode): void => { newMetadata.addQuad(iri.value, PREFERRED_PREFIX_TERM, prefix, SOLID_META.terms.ResponseMetadata); }); diff --git a/src/storage/keyvalue/ExpiringStorage.ts b/src/storage/keyvalue/ExpiringStorage.ts index ab83d8d42..f6c9e98dc 100644 --- a/src/storage/keyvalue/ExpiringStorage.ts +++ b/src/storage/keyvalue/ExpiringStorage.ts @@ -1,6 +1,6 @@ import type { KeyValueStorage } from './KeyValueStorage'; -/* eslint-disable @typescript-eslint/method-signature-style */ +/* eslint-disable ts/method-signature-style */ /** * A KeyValueStorage in which the values can expire. * Entries with no expiration date never expire. diff --git a/src/storage/keyvalue/IndexedStorage.ts b/src/storage/keyvalue/IndexedStorage.ts index e4edf1062..9ecff8c1a 100644 --- a/src/storage/keyvalue/IndexedStorage.ts +++ b/src/storage/keyvalue/IndexedStorage.ts @@ -81,12 +81,12 @@ type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...0[]]; */ export type IndexedQuery, TType extends keyof T, TDepth extends number = 10> = [TDepth] extends [never] ? never : - {[K in keyof T[TType] | typeof INDEX_ID_KEY]?: - ValueType | - (T[TType][K] extends `${typeof INDEX_ID_KEY}:${infer U}` ? IndexedQuery : never) - }; + {[K in keyof T[TType] | typeof INDEX_ID_KEY]?: + ValueType | + (T[TType][K] extends `${typeof INDEX_ID_KEY}:${infer U}` ? IndexedQuery : never) + }; -/* eslint-disable @typescript-eslint/method-signature-style */ +/* eslint-disable ts/method-signature-style */ /** * A storage solution that allows for more complex queries than a key/value storage * and allows setting indexes on specific keys. diff --git a/src/storage/keyvalue/JsonFileStorage.ts b/src/storage/keyvalue/JsonFileStorage.ts index 885ad8032..063591bd3 100644 --- a/src/storage/keyvalue/JsonFileStorage.ts +++ b/src/storage/keyvalue/JsonFileStorage.ts @@ -1,4 +1,4 @@ -import { writeJson, readJson } from 'fs-extra'; +import { readJson, writeJson } from 'fs-extra'; import type { ResourceIdentifier } from '../../http/representation/ResourceIdentifier'; import { isSystemError } from '../../util/errors/SystemError'; import type { ReadWriteLocker } from '../../util/locking/ReadWriteLocker'; @@ -79,7 +79,7 @@ export class JsonFileStorage implements KeyValueStorage { */ private async getJson(): Promise> { try { - return await readJson(this.filePath, 'utf8'); + return await readJson(this.filePath, 'utf8') as NodeJS.Dict; } catch (error: unknown) { if (isSystemError(error) && error.code === 'ENOENT') { return {}; diff --git a/src/storage/keyvalue/JsonResourceStorage.ts b/src/storage/keyvalue/JsonResourceStorage.ts index 9af1e523f..26e5ce844 100644 --- a/src/storage/keyvalue/JsonResourceStorage.ts +++ b/src/storage/keyvalue/JsonResourceStorage.ts @@ -35,8 +35,9 @@ export class JsonResourceStorage implements KeyValueStorage { public async get(key: string): Promise { try { const identifier = this.keyToIdentifier(key); + // eslint-disable-next-line ts/naming-convention const representation = await this.source.getRepresentation(identifier, { type: { 'application/json': 1 }}); - return JSON.parse(await readableToString(representation.data)); + return JSON.parse(await readableToString(representation.data)) as Promise; } catch (error: unknown) { if (!NotFoundHttpError.isInstance(error)) { throw error; @@ -87,7 +88,7 @@ export class JsonResourceStorage implements KeyValueStorage { yield* this.getResourceEntries({ path }); } } else { - const json = JSON.parse(await readableToString(representation.data)); + const json = JSON.parse(await readableToString(representation.data)) as T; yield [ this.identifierToKey(identifier), json ]; } } @@ -101,6 +102,7 @@ export class JsonResourceStorage implements KeyValueStorage { protected async safelyGetResource(identifier: ResourceIdentifier): Promise { let representation: Representation | undefined; try { + // eslint-disable-next-line ts/naming-convention const preferences = isContainerIdentifier(identifier) ? {} : { type: { 'application/json': 1 }}; representation = await this.source.getRepresentation(identifier, preferences); } catch (error: unknown) { diff --git a/src/storage/keyvalue/WrappedIndexedStorage.ts b/src/storage/keyvalue/WrappedIndexedStorage.ts index e24667a71..8d82a8c1b 100644 --- a/src/storage/keyvalue/WrappedIndexedStorage.ts +++ b/src/storage/keyvalue/WrappedIndexedStorage.ts @@ -4,12 +4,12 @@ import { InternalServerError } from '../../util/errors/InternalServerError'; import { NotFoundHttpError } from '../../util/errors/NotFoundHttpError'; import { NotImplementedHttpError } from '../../util/errors/NotImplementedHttpError'; import { INDEX_ID_KEY } from './IndexedStorage'; -import type { StringKey, - IndexedStorage, - TypeObject, +import type { CreateTypeObject, IndexedQuery, + IndexedStorage, IndexTypeCollection, - CreateTypeObject, ValueType } from './IndexedStorage'; + StringKey, + TypeObject, ValueType } from './IndexedStorage'; import type { KeyValueStorage } from './KeyValueStorage'; /** @@ -377,6 +377,7 @@ export class WrappedIndexedStorage> implements } else { const objs = this.getContainingRecord(root, type, id); if (partial[relation.child.key] && objs[id][relation.child.key] !== partial[relation.child.key]) { + // eslint-disable-next-line ts/restrict-template-expressions this.logger.error(`Trying to modify reference key ${objs[id][relation.child.key]} on "${type}" ${id}`); throw new NotImplementedHttpError('Changing reference keys of existing objects is not supported.'); } @@ -494,7 +495,7 @@ export class WrappedIndexedStorage> implements for (const [ key, value ] of Object.entries(match)) { if (this.indexes[type]?.has(key) && typeof value !== 'undefined') { // We know value is a string (or boolean/number) since we can't have indexes on fields referencing other objects - indexIds.push(this.getIndexKey(type, key, value)); + indexIds.push(this.getIndexKey(type, key, value as string)); } } @@ -521,6 +522,7 @@ export class WrappedIndexedStorage> implements */ protected async solveQuery>(type: TType, query: IndexedQuery, rootIds?: string[]): Promise { + // eslint-disable-next-line ts/restrict-template-expressions this.logger.debug(`Executing "${type}" query ${JSON.stringify(query)}. Already found roots ${rootIds}.`); const indexedRoots = await this.findIndexedRoots(type, query, rootIds); @@ -552,7 +554,7 @@ export class WrappedIndexedStorage> implements objs = roots.flatMap((root): VirtualObject[] => this.getChildObjects(root, pathFromRoot)); } else { const subQuery = (typeof query[relation.child.key] === 'string' ? - { [INDEX_ID_KEY]: query[relation.child.key] } : + { [INDEX_ID_KEY]: query[relation.child.key] } : query[relation.child.key]) as IndexedQuery; // All objects by recursively calling this function on the parent object and extracting all children of this type objs = (await this.solveQuery(relation.parent.type, subQuery, indexedRoots)) @@ -616,8 +618,8 @@ export class WrappedIndexedStorage> implements } await Promise.all([ - ...added.map(({ key, value }): Promise => this.updateKeyIndex(type, key, value, rootId, true)), - ...removed.map(({ key, value }): Promise => this.updateKeyIndex(type, key, value, rootId, false)), + ...added.map(async({ key, value }): Promise => this.updateKeyIndex(type, key, value, rootId, true)), + ...removed.map(async({ key, value }): Promise => this.updateKeyIndex(type, key, value, rootId, false)), ]); } @@ -628,6 +630,7 @@ export class WrappedIndexedStorage> implements Promise { const indexKey = this.getIndexKey(type, key, value); const indexValues = await this.indexStorage.get(indexKey) ?? []; + // eslint-disable-next-line ts/restrict-template-expressions this.logger.debug(`Updating index ${indexKey} by ${add ? 'adding' : 'removing'} ${rootId} from ${indexValues}`); if (add) { diff --git a/src/storage/mapping/BaseFileIdentifierMapper.ts b/src/storage/mapping/BaseFileIdentifierMapper.ts index 921ffb601..c1311d710 100644 --- a/src/storage/mapping/BaseFileIdentifierMapper.ts +++ b/src/storage/mapping/BaseFileIdentifierMapper.ts @@ -158,7 +158,7 @@ export class BaseFileIdentifierMapper implements FileIdentifierMapper { * * @returns The content type of the document. */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars + // eslint-disable-next-line unused-imports/no-unused-vars protected async getContentTypeFromPath(filePath: string): Promise { return APPLICATION_OCTET_STREAM; } diff --git a/src/storage/mapping/ExtensionBasedMapper.ts b/src/storage/mapping/ExtensionBasedMapper.ts index ba59acf82..5d62dfce6 100644 --- a/src/storage/mapping/ExtensionBasedMapper.ts +++ b/src/storage/mapping/ExtensionBasedMapper.ts @@ -3,7 +3,7 @@ import * as mime from 'mime-types'; import type { ResourceIdentifier } from '../../http/representation/ResourceIdentifier'; import { DEFAULT_CUSTOM_TYPES } from '../../util/ContentTypes'; import { NotImplementedHttpError } from '../../util/errors/NotImplementedHttpError'; -import { joinFilePath, getExtension } from '../../util/PathUtil'; +import { getExtension, joinFilePath } from '../../util/PathUtil'; import { BaseFileIdentifierMapper } from './BaseFileIdentifierMapper'; import type { FileIdentifierMapperFactory, ResourceLink } from './FileIdentifierMapper'; diff --git a/src/storage/mapping/SubdomainExtensionBasedMapper.ts b/src/storage/mapping/SubdomainExtensionBasedMapper.ts index 19265f21c..fd4b7d87a 100644 --- a/src/storage/mapping/SubdomainExtensionBasedMapper.ts +++ b/src/storage/mapping/SubdomainExtensionBasedMapper.ts @@ -4,10 +4,10 @@ import { ForbiddenHttpError } from '../../util/errors/ForbiddenHttpError'; import { InternalServerError } from '../../util/errors/InternalServerError'; import { NotFoundHttpError } from '../../util/errors/NotFoundHttpError'; import { + createSubdomainRegexp, decodeUriPathComponents, encodeUriPathComponents, ensureTrailingSlash, - createSubdomainRegexp, extractScheme, trimTrailingSlashes, } from '../../util/PathUtil'; diff --git a/src/storage/patch/PatchHandler.ts b/src/storage/patch/PatchHandler.ts index 0edd8fb39..8493fc467 100644 --- a/src/storage/patch/PatchHandler.ts +++ b/src/storage/patch/PatchHandler.ts @@ -1,7 +1,7 @@ import type { Patch } from '../../http/representation/Patch'; import type { ResourceIdentifier } from '../../http/representation/ResourceIdentifier'; import { AsyncHandler } from '../../util/handlers/AsyncHandler'; -import type { ResourceStore, ChangeMap } from '../ResourceStore'; +import type { ChangeMap, ResourceStore } from '../ResourceStore'; export type PatchHandlerInput = { source: T; diff --git a/src/storage/patch/RepresentationPatchHandler.ts b/src/storage/patch/RepresentationPatchHandler.ts index cf0b3f658..48569129c 100644 --- a/src/storage/patch/RepresentationPatchHandler.ts +++ b/src/storage/patch/RepresentationPatchHandler.ts @@ -31,6 +31,7 @@ export class RepresentationPatchHandler extends PatchHandler { let representation: Representation | undefined; try { // Internal types are converted unless specified otherwise like we do here + // eslint-disable-next-line ts/naming-convention representation = await source.getRepresentation(identifier, { type: { '*/*': 1, [INTERNAL_ALL]: 1 }}); } catch (error: unknown) { // Solid, §5.1: "When a successful PUT or PATCH request creates a resource, diff --git a/src/storage/quota/PodQuotaStrategy.ts b/src/storage/quota/PodQuotaStrategy.ts index 1f3758ee3..df765103d 100644 --- a/src/storage/quota/PodQuotaStrategy.ts +++ b/src/storage/quota/PodQuotaStrategy.ts @@ -2,7 +2,7 @@ import type { RepresentationMetadata } from '../../http/representation/Represent import type { ResourceIdentifier } from '../../http/representation/ResourceIdentifier'; import { NotFoundHttpError } from '../../util/errors/NotFoundHttpError'; import type { IdentifierStrategy } from '../../util/identifiers/IdentifierStrategy'; -import { RDF, PIM } from '../../util/Vocabularies'; +import { PIM, RDF } from '../../util/Vocabularies'; import type { DataAccessor } from '../accessors/DataAccessor'; import type { Size } from '../size-reporter/Size'; import type { SizeReporter } from '../size-reporter/SizeReporter'; @@ -63,4 +63,3 @@ export class PodQuotaStrategy extends QuotaStrategy { return hasPimStorageMetadata ? identifier : this.searchPimStorage(parent); } } - diff --git a/src/storage/quota/QuotaStrategy.ts b/src/storage/quota/QuotaStrategy.ts index 2877cdd24..48c8216ca 100644 --- a/src/storage/quota/QuotaStrategy.ts +++ b/src/storage/quota/QuotaStrategy.ts @@ -1,7 +1,6 @@ // These two eslint lines are needed to store 'this' in a variable so it can be used // in the PassThrough of createQuotaGuard -/* eslint-disable @typescript-eslint/no-this-alias */ -/* eslint-disable consistent-this */ +/* eslint-disable ts/no-this-alias */ import { PassThrough } from 'stream'; import type { RepresentationMetadata } from '../../http/representation/RepresentationMetadata'; import type { ResourceIdentifier } from '../../http/representation/ResourceIdentifier'; diff --git a/src/storage/validators/QuotaValidator.ts b/src/storage/validators/QuotaValidator.ts index f0993a0ed..b1c68db41 100644 --- a/src/storage/validators/QuotaValidator.ts +++ b/src/storage/validators/QuotaValidator.ts @@ -1,4 +1,4 @@ -import { Readable, PassThrough } from 'stream'; +import { PassThrough, Readable } from 'stream'; import { Validator } from '../../http/auxiliary/Validator'; import type { ValidatorInput } from '../../http/auxiliary/Validator'; import type { Representation } from '../../http/representation/Representation'; @@ -47,6 +47,7 @@ export class QuotaValidator extends Validator { // 4. Double check quota is not exceeded after write (concurrent writing possible) const afterWrite = new PassThrough({ + // eslint-disable-next-line ts/no-misused-promises flush: async(done): Promise => { const availableSpace = (await this.strategy.getAvailableSpace(identifier)).amount; done(availableSpace < 0 ? new PayloadHttpError('Quota exceeded after write completed') : undefined); diff --git a/src/util/GuardedStream.ts b/src/util/GuardedStream.ts index 858e3328c..9d5fcd5c3 100644 --- a/src/util/GuardedStream.ts +++ b/src/util/GuardedStream.ts @@ -24,7 +24,7 @@ export type Guarded = T & G * Determines whether the stream is guarded against emitting errors. */ export function isGuarded(stream: T): stream is Guarded { - return typeof (stream as any)[guardedErrors] === 'object'; + return typeof (stream as unknown as Guarded)[guardedErrors] === 'object'; } /** diff --git a/src/util/HeaderUtil.ts b/src/util/HeaderUtil.ts index 3a467b8cc..84a108655 100644 --- a/src/util/HeaderUtil.ts +++ b/src/util/HeaderUtil.ts @@ -10,9 +10,9 @@ import type { AcceptEncoding, AcceptHeader, AcceptLanguage, - LinkEntry, + LinkEntry, LinkEntryParameters, } from './Header'; -import { ContentType, SIMPLE_MEDIA_RANGE, QUOTED_STRING, QVALUE, TOKEN } from './Header'; +import { ContentType, QUOTED_STRING, QVALUE, SIMPLE_MEDIA_RANGE, TOKEN } from './Header'; const logger = getLoggerFor('HeaderUtil'); @@ -132,6 +132,7 @@ export function parseParameters(parameters: string[], replacements: Record((acc, part): Accept[] => { - const partOrUndef = parseAcceptPart(part, replacements, strict); + const partOrUndef = parseAcceptPart(part, replacements, strict); - if (partOrUndef !== undefined) { - acc.push(partOrUndef); - } + if (partOrUndef !== undefined) { + acc.push(partOrUndef); + } - return acc; - }, []) + return acc; + }, []) .sort((left, right): number => right.weight - left.weight); } @@ -381,12 +382,12 @@ export function parseContentType(input: string): ContentType { return parseParameters(params, replacements) .reduce( - (prev, cur): ContentType => { - prev.parameters[cur.name] = cur.value; - return prev; - }, - new ContentType(value), - ); + (prev, cur): ContentType => { + prev.parameters[cur.name] = cur.value; + return prev; + }, + new ContentType(value), + ); } /** @@ -455,7 +456,7 @@ export function parseLinkHeader(link: string | string[] = []): LinkEntry[] { // present but MUST NOT appear more than once in a given link-value; // occurrences after the first MUST be ignored by parsers. // - const params: any = {}; + const params: Record = {}; for (const { name, value } of parseParameters(parameters, replacements)) { if (name === 'rel' && 'rel' in params) { continue; @@ -468,7 +469,7 @@ export function parseLinkHeader(link: string | string[] = []): LinkEntry[] { continue; } - links.push({ target: target.slice(1, -1), parameters: params }); + links.push({ target: target.slice(1, -1), parameters: params as LinkEntryParameters }); } } return links; diff --git a/src/util/IterableUtil.ts b/src/util/IterableUtil.ts index 3190b5171..2eb816672 100644 --- a/src/util/IterableUtil.ts +++ b/src/util/IterableUtil.ts @@ -173,7 +173,7 @@ async function findNextSorted(iterators: AsyncIterator[], results: (T | un export async function* sortedAsyncMerge(iterators: AsyncIterator[], comparator?: (left: T, right: T) => number): AsyncIterable { if (!comparator) { - // eslint-disable-next-line @typescript-eslint/no-extra-parens + // eslint-disable-next-line style/no-extra-parens comparator = (left, right): number => left < right ? -1 : (left > right ? 1 : 0); } diff --git a/src/util/PathUtil.ts b/src/util/PathUtil.ts index 327336a30..af789b884 100644 --- a/src/util/PathUtil.ts +++ b/src/util/PathUtil.ts @@ -156,6 +156,7 @@ export function toCanonicalUriPath(path: string): string { encodeURIComponent(decodeURIComponent(part))); } +/* eslint-disable ts/naming-convention */ // Characters not allowed in a Windows file path const forbiddenSymbols = { '<': '%3C', @@ -167,6 +168,7 @@ const forbiddenSymbols = { // `*` does not get converted by `encodeUriComponent` '*': '%2A', } as const; +/* eslint-enable ts/naming-convention */ const forbiddenRegex = new RegExp(`[${Object.keys(forbiddenSymbols).join('')}]`, 'ug'); /** * This function is used when converting a URI to a file path. Decodes all components of a URI path, @@ -302,7 +304,7 @@ export function resolveAssetPath(path = modulePathPlaceholder): string { * Reads the project package.json and returns it. */ export async function readPackageJson(): Promise> { - return readJson(resolveModulePath('package.json')); + return readJson(resolveModulePath('package.json')) as Promise>; } /** diff --git a/src/util/PromiseUtil.ts b/src/util/PromiseUtil.ts index a8cb1609d..e6713abe3 100644 --- a/src/util/PromiseUtil.ts +++ b/src/util/PromiseUtil.ts @@ -24,7 +24,6 @@ PromiseOrValue { return callback(object); } -// eslint-disable-next-line @typescript-eslint/no-empty-function function noop(): void {} /** @@ -46,7 +45,7 @@ export async function promiseSome(predicates: Promise[]): Promise => predicate.then(resolveIfTrue, noop))) + Promise.all(predicates.map(async(predicate): Promise => predicate.then(resolveIfTrue, noop))) .then((): void => resolve(false), noop); }); } @@ -63,7 +62,7 @@ export async function allFulfilled(promises: Promise [], ignoreErrors = fa if (result.status === 'fulfilled') { values.push(result.value); } else if (!ignoreErrors) { - errors.push(result.reason); + errors.push(result.reason as Error); } } diff --git a/src/util/RecordObject.ts b/src/util/RecordObject.ts index ad8d26872..30994ab91 100644 --- a/src/util/RecordObject.ts +++ b/src/util/RecordObject.ts @@ -2,7 +2,7 @@ * Helper class for instantiating multiple objects with Components.js. * See https://github.com/LinkedSoftwareDependencies/Components.js/issues/26 */ -// eslint-disable-next-line @typescript-eslint/no-extraneous-class +// eslint-disable-next-line ts/no-extraneous-class export class RecordObject implements Record { public constructor(record: Record = {}) { // eslint-disable-next-line no-constructor-return diff --git a/src/util/ResourceUtil.ts b/src/util/ResourceUtil.ts index 2ef9504b9..72d6f09fa 100644 --- a/src/util/ResourceUtil.ts +++ b/src/util/ResourceUtil.ts @@ -15,8 +15,6 @@ import namedNode = DataFactory.namedNode; * Helper function to generate type quads for a Container or Resource. * @param metadata - Metadata to add to. * @param isContainer - If the identifier corresponds to a container. - * - * @returns The generated quads. */ export function addResourceMetadata(metadata: RepresentationMetadata, isContainer: boolean): void { if (isContainer) { diff --git a/src/util/SliceStream.ts b/src/util/SliceStream.ts index 4f1689c10..1d13333cb 100644 --- a/src/util/SliceStream.ts +++ b/src/util/SliceStream.ts @@ -56,15 +56,15 @@ export class SliceStream extends Transform { pipeSafely(source, this); } - // eslint-disable-next-line @typescript-eslint/naming-convention + // eslint-disable-next-line ts/naming-convention public _transform(chunk: any, encoding: BufferEncoding, callback: TransformCallback): void { this.source.pause(); if (this.writableObjectMode) { this.objectSlice(chunk); } else { - this.binarySlice(chunk); + this.binarySlice(chunk as Buffer); } - // eslint-disable-next-line callback-return + callback(); this.source.resume(); } diff --git a/src/util/StreamUtil.ts b/src/util/StreamUtil.ts index 0831e0495..15b92d4dc 100644 --- a/src/util/StreamUtil.ts +++ b/src/util/StreamUtil.ts @@ -1,4 +1,4 @@ -import type { Writable, ReadableOptions, DuplexOptions } from 'stream'; +import type { DuplexOptions, ReadableOptions, Writable } from 'stream'; import { Readable, Transform } from 'stream'; import { promisify } from 'util'; import arrayifyStream from 'arrayify-stream'; @@ -47,7 +47,7 @@ export async function readableToQuads(stream: Readable): Promise { */ export async function readJsonStream(stream: Readable): Promise> { const body = await readableToString(stream); - return JSON.parse(body); + return JSON.parse(body) as NodeJS.Dict; } /** @@ -61,7 +61,7 @@ export async function getSingleItem(stream: Readable): Promise { if (items.length !== 1) { throw new InternalServerError('Expected a stream with a single object.'); } - return items[0]; + return items[0] as unknown; } // These error messages usually indicate expected behaviour so should not give a warning. @@ -130,8 +130,10 @@ export interface AsyncTransformOptions extends DuplexOptions { /** * Transforms a stream, ensuring that all errors are forwarded. - * @param source - The stream to be transformed - * @param options - The transformation options + * @param source - The stream to be transformed. + * @param options - The transformation options. + * @param options.transform - The transform function to use. + * @param options.flush - The flush function to use. * * @returns The transformed stream */ @@ -139,6 +141,7 @@ export function transformSafely( source: NodeJS.ReadableStream, { transform = function(data): void { + // eslint-disable-next-line ts/no-invalid-this this.push(data); }, flush = (): null => null, @@ -148,7 +151,7 @@ export function transformSafely( Guarded { return pipeSafely(source, new Transform({ ...options, - async transform(data, encoding, callback): Promise { + async transform(data: T, encoding, callback): Promise { let error: Error | null = null; try { await transform.call(this, data, encoding); diff --git a/src/util/TermUtil.ts b/src/util/TermUtil.ts index 89dc01736..08418c6a9 100644 --- a/src/util/TermUtil.ts +++ b/src/util/TermUtil.ts @@ -1,13 +1,13 @@ import { DataFactory } from 'n3'; -import type { NamedNode, Literal, Term } from 'rdf-js'; +import type { Literal, NamedNode, Term } from 'rdf-js'; const { namedNode, literal } = DataFactory; /** * @param input - Checks if this is a {@link Term}. */ -export function isTerm(input?: any): input is Term { - return input && typeof input.termType === 'string'; +export function isTerm(input?: unknown): input is Term { + return Boolean(input) && typeof (input as Term).termType === 'string'; } /** @@ -33,7 +33,7 @@ export function toObjectTerm(object: T, preferLiteral?: boolean) export function toObjectTerm(object: T | string, preferLiteral?: boolean): T | NamedNode; export function toObjectTerm(object: Term | string, preferLiteral = false): Term { if (typeof object === 'string') { - return (preferLiteral ? literal(object) : namedNode(object)) as any; + return preferLiteral ? literal(object) : namedNode(object); } return object; } diff --git a/src/util/TimerUtil.ts b/src/util/TimerUtil.ts index 75d25b746..bf7564263 100644 --- a/src/util/TimerUtil.ts +++ b/src/util/TimerUtil.ts @@ -7,17 +7,17 @@ import { createErrorMessage } from './errors/ErrorUtil'; * The logger and message will be used when the callback throws an error. * Supports asynchronous callback functions. */ -export function setSafeInterval(logger: Logger, message: string, callback: (...cbArgs: any[]) => void, ms?: number, - ...args: any[]): NodeJS.Timeout { - async function safeCallback(...cbArgs: any[]): Promise { +export function setSafeInterval(logger: Logger, message: string, + callback: (...cbArgs: TArgs[]) => Promise | void, ms?: number, ...args: TArgs[]): NodeJS.Timeout { + async function safeCallback(...cbArgs: TArgs[]): Promise { try { // We don't know if the callback is async or not so this way we make sure // the full function execution is done in the try block. - // eslint-disable-next-line @typescript-eslint/await-thenable return await callback(...cbArgs); } catch (error: unknown) { logger.error(`Error during interval callback: ${message} - ${createErrorMessage(error)}`); } } + // eslint-disable-next-line ts/no-misused-promises return setInterval(safeCallback, ms, ...args); } diff --git a/src/util/errors/BadRequestHttpError.ts b/src/util/errors/BadRequestHttpError.ts index df277d9de..87c330fe8 100644 --- a/src/util/errors/BadRequestHttpError.ts +++ b/src/util/errors/BadRequestHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(400, 'BadRequestHttpError'); /** diff --git a/src/util/errors/ConflictHttpError.ts b/src/util/errors/ConflictHttpError.ts index e7d18682a..f485bddfe 100644 --- a/src/util/errors/ConflictHttpError.ts +++ b/src/util/errors/ConflictHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(409, 'ConflictHttpError'); /** diff --git a/src/util/errors/ErrorUtil.ts b/src/util/errors/ErrorUtil.ts index 8b44cec7f..a80059c82 100644 --- a/src/util/errors/ErrorUtil.ts +++ b/src/util/errors/ErrorUtil.ts @@ -3,17 +3,18 @@ import { types } from 'util'; /** * Checks if the input is an {@link Error}. */ -export function isError(error: any): error is Error { +export function isError(error: unknown): error is Error { return types.isNativeError(error) || - (error && - typeof error.name === 'string' && - typeof error.message === 'string' && - (typeof error.stack === 'undefined' || typeof error.stack === 'string')); + (Boolean(error) && + typeof (error as Error).name === 'string' && + typeof (error as Error).message === 'string' && + (typeof (error as Error).stack === 'undefined' || typeof (error as Error).stack === 'string')); } /** * Creates a string representing the error message of this object. */ export function createErrorMessage(error: unknown): string { + // eslint-disable-next-line ts/restrict-template-expressions return isError(error) ? error.message : `Unknown error: ${error}`; } diff --git a/src/util/errors/ForbiddenHttpError.ts b/src/util/errors/ForbiddenHttpError.ts index f272b3422..bc1e0d821 100644 --- a/src/util/errors/ForbiddenHttpError.ts +++ b/src/util/errors/ForbiddenHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(403, 'ForbiddenHttpError'); /** diff --git a/src/util/errors/FoundHttpError.ts b/src/util/errors/FoundHttpError.ts index a1693f4c2..4586b5ab1 100644 --- a/src/util/errors/FoundHttpError.ts +++ b/src/util/errors/FoundHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateRedirectHttpErrorClass } from './RedirectHttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateRedirectHttpErrorClass(302, 'FoundHttpError'); /** diff --git a/src/util/errors/HttpError.ts b/src/util/errors/HttpError.ts index b1d642e03..ebb430944 100644 --- a/src/util/errors/HttpError.ts +++ b/src/util/errors/HttpError.ts @@ -45,7 +45,9 @@ export class HttpError extends Error implements HttpE } public static isInstance(error: any): error is HttpError { - return isError(error) && typeof (error as any).statusCode === 'number' && (error as any).metadata; + return isError(error) && + typeof (error as HttpError).statusCode === 'number' && + Boolean((error as HttpError).metadata); } /** diff --git a/src/util/errors/HttpErrorUtil.ts b/src/util/errors/HttpErrorUtil.ts index cf30c0869..215ecc43b 100644 --- a/src/util/errors/HttpErrorUtil.ts +++ b/src/util/errors/HttpErrorUtil.ts @@ -37,9 +37,9 @@ export function extractErrorTerms(metadata: RepresentationMetadata): Dict quad.predicate.value.startsWith(SOLID_ERROR_TERM.namespace)) .reduce>((acc, quad): Dict => { - acc[quad.predicate.value.slice(SOLID_ERROR_TERM.namespace.length)] = quad.object.value; - return acc; - }, {}); + acc[quad.predicate.value.slice(SOLID_ERROR_TERM.namespace.length)] = quad.object.value; + return acc; + }, {}); } /** diff --git a/src/util/errors/InternalServerError.ts b/src/util/errors/InternalServerError.ts index 7ff8a5789..94c70e9f2 100644 --- a/src/util/errors/InternalServerError.ts +++ b/src/util/errors/InternalServerError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(500, 'InternalServerError'); /** diff --git a/src/util/errors/MethodNotAllowedHttpError.ts b/src/util/errors/MethodNotAllowedHttpError.ts index ef8850fd5..65609fbac 100644 --- a/src/util/errors/MethodNotAllowedHttpError.ts +++ b/src/util/errors/MethodNotAllowedHttpError.ts @@ -2,7 +2,7 @@ import { SOLID_ERROR } from '../Vocabularies'; import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(405, 'MethodNotAllowedHttpError'); /** diff --git a/src/util/errors/MovedPermanentlyHttpError.ts b/src/util/errors/MovedPermanentlyHttpError.ts index 6d165aa02..d02af98ef 100644 --- a/src/util/errors/MovedPermanentlyHttpError.ts +++ b/src/util/errors/MovedPermanentlyHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateRedirectHttpErrorClass } from './RedirectHttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateRedirectHttpErrorClass(301, 'MovedPermanentlyHttpError'); /** diff --git a/src/util/errors/NotFoundHttpError.ts b/src/util/errors/NotFoundHttpError.ts index aed53e06f..6010318fe 100644 --- a/src/util/errors/NotFoundHttpError.ts +++ b/src/util/errors/NotFoundHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(404, 'NotFoundHttpError'); /** @@ -12,4 +12,3 @@ export class NotFoundHttpError extends BaseHttpError { super(message, options); } } - diff --git a/src/util/errors/NotImplementedHttpError.ts b/src/util/errors/NotImplementedHttpError.ts index 8404664e3..4297ef9fa 100644 --- a/src/util/errors/NotImplementedHttpError.ts +++ b/src/util/errors/NotImplementedHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(501, 'NotImplementedHttpError'); /** diff --git a/src/util/errors/NotModifiedHttpError.ts b/src/util/errors/NotModifiedHttpError.ts index 04fea5b6b..5c071d553 100644 --- a/src/util/errors/NotModifiedHttpError.ts +++ b/src/util/errors/NotModifiedHttpError.ts @@ -2,7 +2,7 @@ import { HH } from '../Vocabularies'; import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(304, 'NotModifiedHttpError'); /** diff --git a/src/util/errors/OAuthHttpError.ts b/src/util/errors/OAuthHttpError.ts index 715f1af3e..fc55b10a7 100644 --- a/src/util/errors/OAuthHttpError.ts +++ b/src/util/errors/OAuthHttpError.ts @@ -10,7 +10,7 @@ import { HttpError } from './HttpError'; */ export interface OAuthErrorFields { error: string; - // eslint-disable-next-line @typescript-eslint/naming-convention + // eslint-disable-next-line ts/naming-convention error_description?: string | undefined; scope?: string | undefined; state?: string | undefined; diff --git a/src/util/errors/PayloadHttpError.ts b/src/util/errors/PayloadHttpError.ts index bdff7c56d..865f484e6 100644 --- a/src/util/errors/PayloadHttpError.ts +++ b/src/util/errors/PayloadHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(413, 'PayloadHttpError'); /** diff --git a/src/util/errors/PermanentRedirectHttpError.ts b/src/util/errors/PermanentRedirectHttpError.ts index 294a074f0..7b29edb5f 100644 --- a/src/util/errors/PermanentRedirectHttpError.ts +++ b/src/util/errors/PermanentRedirectHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateRedirectHttpErrorClass } from './RedirectHttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateRedirectHttpErrorClass(308, 'PermanentRedirectHttpError'); /** diff --git a/src/util/errors/PreconditionFailedHttpError.ts b/src/util/errors/PreconditionFailedHttpError.ts index d3c57e50f..93e127ac3 100644 --- a/src/util/errors/PreconditionFailedHttpError.ts +++ b/src/util/errors/PreconditionFailedHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(412, 'PreconditionFailedHttpError'); /** diff --git a/src/util/errors/RangeNotSatisfiedHttpError.ts b/src/util/errors/RangeNotSatisfiedHttpError.ts index 9678f7487..0ee723a88 100644 --- a/src/util/errors/RangeNotSatisfiedHttpError.ts +++ b/src/util/errors/RangeNotSatisfiedHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(416, 'RangeNotSatisfiedHttpError'); /** diff --git a/src/util/errors/RedirectHttpError.ts b/src/util/errors/RedirectHttpError.ts index 9c8e364bd..622e12ca0 100644 --- a/src/util/errors/RedirectHttpError.ts +++ b/src/util/errors/RedirectHttpError.ts @@ -17,7 +17,7 @@ export class RedirectHttpError extends HttpError< } public static isInstance(error: any): error is RedirectHttpError { - return HttpError.isInstance(error) && typeof (error as any).location === 'string'; + return HttpError.isInstance(error) && typeof (error as RedirectHttpError).location === 'string'; } } diff --git a/src/util/errors/SeeOtherHttpError.ts b/src/util/errors/SeeOtherHttpError.ts index 54b6c3401..f08d1acf8 100644 --- a/src/util/errors/SeeOtherHttpError.ts +++ b/src/util/errors/SeeOtherHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateRedirectHttpErrorClass } from './RedirectHttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateRedirectHttpErrorClass(303, 'SeeOtherHttpError'); /** diff --git a/src/util/errors/SystemError.ts b/src/util/errors/SystemError.ts index ce92edde1..45604b201 100644 --- a/src/util/errors/SystemError.ts +++ b/src/util/errors/SystemError.ts @@ -41,6 +41,6 @@ export interface SystemError extends Error { syscall: string; } -export function isSystemError(error: any): error is SystemError { - return error.code && error.syscall; +export function isSystemError(error: unknown): error is SystemError { + return Boolean((error as SystemError).code && (error as SystemError).syscall); } diff --git a/src/util/errors/TemporaryRedirectHttpError.ts b/src/util/errors/TemporaryRedirectHttpError.ts index 3cb0b1925..82ba82798 100644 --- a/src/util/errors/TemporaryRedirectHttpError.ts +++ b/src/util/errors/TemporaryRedirectHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateRedirectHttpErrorClass } from './RedirectHttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateRedirectHttpErrorClass(307, 'TemporaryRedirectHttpError'); /** diff --git a/src/util/errors/UnauthorizedHttpError.ts b/src/util/errors/UnauthorizedHttpError.ts index 548c9c9f7..66abd7ee5 100644 --- a/src/util/errors/UnauthorizedHttpError.ts +++ b/src/util/errors/UnauthorizedHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(401, 'UnauthorizedHttpError'); /** diff --git a/src/util/errors/UnprocessableEntityHttpError.ts b/src/util/errors/UnprocessableEntityHttpError.ts index 4a9a45350..63769e950 100644 --- a/src/util/errors/UnprocessableEntityHttpError.ts +++ b/src/util/errors/UnprocessableEntityHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(422, 'UnprocessableEntityHttpError'); /** diff --git a/src/util/errors/UnsupportedMediaTypeHttpError.ts b/src/util/errors/UnsupportedMediaTypeHttpError.ts index e286cd887..91e1e53a2 100644 --- a/src/util/errors/UnsupportedMediaTypeHttpError.ts +++ b/src/util/errors/UnsupportedMediaTypeHttpError.ts @@ -1,7 +1,7 @@ import type { HttpErrorOptions } from './HttpError'; import { generateHttpErrorClass } from './HttpError'; -// eslint-disable-next-line @typescript-eslint/naming-convention +// eslint-disable-next-line ts/naming-convention const BaseHttpError = generateHttpErrorClass(415, 'UnsupportedMediaTypeHttpError'); /** diff --git a/src/util/handlers/AsyncHandler.ts b/src/util/handlers/AsyncHandler.ts index dd5ca8c80..e0edf3a89 100644 --- a/src/util/handlers/AsyncHandler.ts +++ b/src/util/handlers/AsyncHandler.ts @@ -13,7 +13,7 @@ export abstract class AsyncHandler { * * @returns A promise resolving if the input can be handled, rejecting with an Error if not. */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars + // eslint-disable-next-line unused-imports/no-unused-vars public async canHandle(input: TIn): Promise { // Support any input by default } diff --git a/src/util/handlers/CachedHandler.ts b/src/util/handlers/CachedHandler.ts index 2f019dfb1..1b4a59b73 100644 --- a/src/util/handlers/CachedHandler.ts +++ b/src/util/handlers/CachedHandler.ts @@ -70,7 +70,7 @@ export class CachedHandler, TOut = void> extends return [ input ]; } - return this.fields.map((field): object => input[field]) as [object, ...object[]]; + return this.fields.map((field): object => input[field] as object) as [object, ...object[]]; } /** diff --git a/src/util/handlers/HandlerUtil.ts b/src/util/handlers/HandlerUtil.ts index dfc436cf8..de1f6e528 100644 --- a/src/util/handlers/HandlerUtil.ts +++ b/src/util/handlers/HandlerUtil.ts @@ -54,7 +54,7 @@ Promise[]> { } // Generate error in case no matches were found - const errors = results.map((result): Error => (result as PromiseRejectedResult).reason); + const errors = results.map((result): Error => (result as PromiseRejectedResult).reason as Error); throw createAggregateError(errors); } diff --git a/src/util/handlers/ParallelHandler.ts b/src/util/handlers/ParallelHandler.ts index b517257bb..bd2a803b4 100644 --- a/src/util/handlers/ParallelHandler.ts +++ b/src/util/handlers/ParallelHandler.ts @@ -12,10 +12,10 @@ export class ParallelHandler extends AsyncHandler { - await Promise.all(this.handlers.map((handler): Promise => handler.canHandle(input))); + await Promise.all(this.handlers.map(async(handler): Promise => handler.canHandle(input))); } public async handle(input: TIn): Promise { - return Promise.all(this.handlers.map((handler): Promise => handler.handle(input))); + return Promise.all(this.handlers.map(async(handler): Promise => handler.handle(input))); } } diff --git a/src/util/handlers/StaticHandler.ts b/src/util/handlers/StaticHandler.ts index 38f47a610..6c2cd98ab 100644 --- a/src/util/handlers/StaticHandler.ts +++ b/src/util/handlers/StaticHandler.ts @@ -6,7 +6,7 @@ import { AsyncHandler } from './AsyncHandler'; * * The generic type extends `any` due to Components.js requirements. */ -// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint +// eslint-disable-next-line ts/no-unnecessary-type-constraint export class StaticHandler extends AsyncHandler { private readonly value?: T; @@ -16,7 +16,7 @@ export class StaticHandler extends AsyncHandler { } public async handle(): Promise { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + // eslint-disable-next-line ts/no-unnecessary-type-assertion return this.value!; } } diff --git a/src/util/handlers/UnionHandler.ts b/src/util/handlers/UnionHandler.ts index 8ed7c3cbb..239ddd839 100644 --- a/src/util/handlers/UnionHandler.ts +++ b/src/util/handlers/UnionHandler.ts @@ -45,8 +45,9 @@ export abstract class UnionHandler> extends } public async handle(input: AsyncHandlerInput): Promise> { - const handlers = this.requireAll ? this.handlers : await filterHandlers(this.handlers, input); - const results = handlers.map((handler): Promise> => handler.handle(input)); + const handlers = this.requireAll ? this.handlers : (await filterHandlers(this.handlers, input)) as T[]; + const results = handlers.map(async(handler): Promise> => + (handler.handle(input)) as Promise>); return this.combine(await allFulfilled(results, this.ignoreErrors)); } @@ -55,7 +56,7 @@ export abstract class UnionHandler> extends * If not, throw an error based on the errors of the failed handlers. */ protected async allCanHandle(input: AsyncHandlerInput): Promise { - await allFulfilled(this.handlers.map((handler): Promise => handler.canHandle(input))); + await allFulfilled(this.handlers.map(async(handler): Promise => handler.canHandle(input))); } /** diff --git a/src/util/identifiers/SubdomainIdentifierStrategy.ts b/src/util/identifiers/SubdomainIdentifierStrategy.ts index b14c18138..f87f9b95e 100644 --- a/src/util/identifiers/SubdomainIdentifierStrategy.ts +++ b/src/util/identifiers/SubdomainIdentifierStrategy.ts @@ -1,6 +1,6 @@ import type { ResourceIdentifier } from '../../http/representation/ResourceIdentifier'; import { getLoggerFor } from '../../logging/LogUtil'; -import { ensureTrailingSlash, createSubdomainRegexp } from '../PathUtil'; +import { createSubdomainRegexp, ensureTrailingSlash } from '../PathUtil'; import { BaseIdentifierStrategy } from './BaseIdentifierStrategy'; /** diff --git a/src/util/locking/FileSystemResourceLocker.ts b/src/util/locking/FileSystemResourceLocker.ts index 30c475b51..10075254c 100644 --- a/src/util/locking/FileSystemResourceLocker.ts +++ b/src/util/locking/FileSystemResourceLocker.ts @@ -144,12 +144,12 @@ export class FileSystemResourceLocker implements ResourceLocker, Initializable, } /** - * Generate LockOptions or UnlockOptions depending on the type of defauls given. - * A custom lockFilePath mapping strategy will be used. - * @param identifier - ResourceIdentifier to generate (Un)LockOptions for - * @param defaults - The default options. (lockFilePath will get overwritten) - * @returns LockOptions or UnlockOptions - */ + * Generate LockOptions or UnlockOptions depending on the type of defauls given. + * A custom lockFilePath mapping strategy will be used. + * @param identifier - ResourceIdentifier to generate (Un)LockOptions for + * @param defaults - The default options. (lockFilePath will get overwritten) + * @returns LockOptions or UnlockOptions + */ private generateOptions(identifier: ResourceIdentifier, defaults: T): T { const lockfilePath = this.toLockfilePath(identifier); return { @@ -184,7 +184,7 @@ export class FileSystemResourceLocker implements ResourceLocker, Initializable, * Once the locker was finalized, it will log the provided error instead of throwing it * This allows for a clean shutdown procedure. */ - private customOnCompromised(err: any): void { + private customOnCompromised(err: Error): void { if (!this.finalized) { throw err; } diff --git a/src/util/locking/RedisLocker.ts b/src/util/locking/RedisLocker.ts index 977e0bc29..e650e1856 100644 --- a/src/util/locking/RedisLocker.ts +++ b/src/util/locking/RedisLocker.ts @@ -8,7 +8,7 @@ import { retryFunction } from '../LockUtils'; import type { PromiseOrValue } from '../PromiseUtil'; import type { ReadWriteLocker } from './ReadWriteLocker'; import type { ResourceLocker } from './ResourceLocker'; -import type { RedisResourceLock, RedisReadWriteLock, RedisAnswer } from './scripts/RedisLuaScripts'; +import type { RedisAnswer, RedisReadWriteLock, RedisResourceLock } from './scripts/RedisLuaScripts'; import { fromResp2ToBool, REDIS_LUA_SCRIPTS } from './scripts/RedisLuaScripts'; const attemptDefaults: Required = { retryCount: -1, retryDelay: 50, retryJitter: 30 }; diff --git a/src/util/locking/VoidLocker.ts b/src/util/locking/VoidLocker.ts index 2d976737d..ecf2743dd 100644 --- a/src/util/locking/VoidLocker.ts +++ b/src/util/locking/VoidLocker.ts @@ -9,7 +9,6 @@ import type { ExpiringReadWriteLocker } from './ExpiringReadWriteLocker'; * Do not use this locker in combination with storages that doesn't handle concurrent read/writes gracefully */ -// eslint-disable-next-line @typescript-eslint/no-empty-function function noop(): void {} export class VoidLocker implements ExpiringReadWriteLocker { diff --git a/src/util/map/WrappedSetMultiMap.ts b/src/util/map/WrappedSetMultiMap.ts index 7d19687da..7787fa3ae 100644 --- a/src/util/map/WrappedSetMultiMap.ts +++ b/src/util/map/WrappedSetMultiMap.ts @@ -16,8 +16,9 @@ export class WrappedSetMultiMap implements SetMultiMap { * @param mapConstructor - Will be used to instantiate the internal Map. * @param iterable - Entries to add to the map. */ - public constructor(mapConstructor: new() => Map = Map, + public constructor(mapConstructor: new() => Map> = Map, iterable?: Iterable]>) { + // eslint-disable-next-line new-cap this.map = new mapConstructor(); this.count = 0; @@ -42,7 +43,7 @@ export class WrappedSetMultiMap implements SetMultiMap { public set(key: TKey, value: ReadonlySet | TVal): this { const setCount = this.get(key)?.size ?? 0; - const set = value instanceof Set ? new Set(value) : new Set([ value ]); + const set = value instanceof Set ? new Set(value) : new Set([ value as TVal ]); this.count += set.size - setCount; if (set.size > 0) { this.map.set(key, set); @@ -54,7 +55,7 @@ export class WrappedSetMultiMap implements SetMultiMap { } public add(key: TKey, value: TVal | ReadonlySet): this { - const it = value instanceof Set ? value : [ value ]; + const it = value instanceof Set ? value as Set : [ value as TVal ]; let set = this.map.get(key); if (set) { const originalCount = set.size; diff --git a/src/util/templates/StaticTemplateEngine.ts b/src/util/templates/StaticTemplateEngine.ts index 2cb8332c6..9e62de795 100644 --- a/src/util/templates/StaticTemplateEngine.ts +++ b/src/util/templates/StaticTemplateEngine.ts @@ -1,5 +1,5 @@ import type { AsyncHandler } from '../handlers/AsyncHandler'; -import type { TemplateEngineInput, Template } from './TemplateEngine'; +import type { Template, TemplateEngineInput } from './TemplateEngine'; import { TemplateEngine } from './TemplateEngine'; import Dict = NodeJS.Dict; @@ -24,7 +24,7 @@ export class StaticTemplateEngine = Dict> extends Templ public async canHandle({ contents, template }: TemplateEngineInput): Promise { if (typeof template !== 'undefined') { - throw new Error('StaticTemplateEngine does not support template as handle input, ' + + throw new TypeError('StaticTemplateEngine does not support template as handle input, ' + 'provide a template via the constructor instead!'); } return this.templateEngine.canHandle({ contents, template: this.template }); diff --git a/templates/scripts/util.js b/templates/scripts/util.js index 7648bf1c6..756c15461 100644 --- a/templates/scripts/util.js +++ b/templates/scripts/util.js @@ -3,9 +3,9 @@ * * @param ids - IDs of the element (empty to retrieve all elements) */ -function getElements(...ids) { - ids = ids.length ? ids : [...document.querySelectorAll("[id]")].map(e => e.id); - return Object.fromEntries(ids.map(id => [id, document.getElementById(id)])); +export function getElements(...ids) { + ids = ids.length ? ids : [ ...document.querySelectorAll('[id]') ].map(e => e.id); + return Object.fromEntries(ids.map(id => [ id, document.getElementById(id) ])); } /** @@ -17,10 +17,11 @@ function getElements(...ids) { * * @param target - Target URL to POST to. Defaults to the current URL. * @param expectRedirect - If a redirect is expected. Defaults to `false`. - * @param transform - A function that gets as input a JSON representation of the form. The output will be POSTed. Defaults to identity function. + * @param transform - A function that gets as input a JSON representation of the form. The output will be POSTed. + * Defaults to identity function. * @param formId - The ID of the form. Defaults to "mainForm". */ -async function postJsonForm(target = '', expectRedirect = false, transform = (json) => json, formId = 'mainForm') { +export async function postJsonForm(target = '', expectRedirect = false, transform = json => json, formId = 'mainForm') { const form = document.getElementById(formId); const formData = new FormData(form); const json = transform(Object.fromEntries(formData)); @@ -49,7 +50,7 @@ async function postJsonForm(target = '', expectRedirect = false, transform = (js * @param formId - ID of the form. Defaults to "mainForm". * @param errorId - ID of the error block. Defaults to "error". */ -function addPostListener(callback, formId = 'mainForm', errorId = 'error') { +export function addPostListener(callback, formId = 'mainForm', errorId = 'error') { const form = document.getElementById(formId); form.addEventListener('submit', async(event) => { @@ -68,14 +69,15 @@ function addPostListener(callback, formId = 'mainForm', errorId = 'error') { * @param id - ID of the element. * @param visible - If it should be visible. */ -function setVisibility(id, visible) { +export function setVisibility(id, visible) { const element = document.getElementById(id); element.classList[visible ? 'remove' : 'add']('hidden'); // Disable children of hidden elements, // such that the browser does not expect input for them for (const child of getDescendants(element)) { - if ('disabled' in child) + if ('disabled' in child) { child.disabled = !visible; + } } } @@ -83,8 +85,8 @@ function setVisibility(id, visible) { * Obtains all children, grandchildren, etc. of the given element. * @param element - Element to get all descendants from. */ -function getDescendants(element) { - return [...element.querySelectorAll("*")]; +export function getDescendants(element) { + return [ ...element.querySelectorAll('*') ]; } /** @@ -94,11 +96,11 @@ function getDescendants(element) { * @param options - Indicates which fields should be updated. * Keys should be `innerText` and/or `href`, values should be booleans. */ -function updateElement(id, text, options) { +export function updateElement(id, text, options) { const element = document.getElementById(id); setVisibility(id, Boolean(text)); - if (options.innerText) { - element.innerText = text; + if (options.textContent) { + element.textContent = text; } if (options.href) { element.href = text; @@ -110,8 +112,8 @@ function updateElement(id, text, options) { * @param url - URL to fetch JSON from. * @param redirectUrl - URL to redirect to in case the response code is >= 400. No redirect happens if undefined. */ -async function fetchJson(url, redirectUrl) { - const res = await fetch(url, { headers: { accept: 'application/json' } }); +export async function fetchJson(url, redirectUrl) { + const res = await fetch(url, { headers: { accept: 'application/json' }}); if (redirectUrl && res.status >= 400) { location.href = redirectUrl; @@ -124,14 +126,14 @@ async function fetchJson(url, redirectUrl) { /** * Returns the controls object that can be found accessing the given URL. */ -async function fetchControls(url) { +export async function fetchControls(url) { return (await fetchJson(url)).controls; } /** * POSTs JSON to the given URL and returns the response. */ -async function postJson(url, json) { +export async function postJson(url, json) { return fetch(url, { method: 'POST', headers: { accept: 'application/json', 'content-type': 'application/json' }, @@ -143,7 +145,7 @@ async function postJson(url, json) { * Sets the contents of the error block to the given error message. * Default ID of the error block is `error`. */ -function setError(message, errorId = 'error') { +export function setError(message, errorId = 'error') { updateElement(errorId, message, { innerText: true }); } @@ -152,7 +154,7 @@ function setError(message, errorId = 'error') { * @param element - The id of the button. * @param url - The URL to redirect to. */ -function setRedirectClick(element, url) { +export function setRedirectClick(element, url) { document.getElementById(element).addEventListener('click', () => location.href = url); } @@ -163,7 +165,7 @@ function setRedirectClick(element, url) { * @param formId - ID of the form. Defaults to "mainForm". * @param confirmPasswordId - ID of the password confirmation field. Defaults to "confirmPassword". */ -function validatePasswordConfirmation(passwordId, formId = 'mainForm', confirmPasswordId = 'confirmPassword') { +export function validatePasswordConfirmation(passwordId, formId = 'mainForm', confirmPasswordId = 'confirmPassword') { const formData = new FormData(document.getElementById(formId)); if (formData.get(passwordId) !== formData.get(confirmPasswordId)) { throw new Error('Password confirmation does not match the password!'); @@ -181,11 +183,12 @@ function validatePasswordConfirmation(passwordId, formId = 'mainForm', confirmPa * * @returns The HTML object representing the `(delete)` link. */ -function createUrlDeleteElement(parent, url, fetchParams, confirmMsg, finishMsg) { +export function createUrlDeleteElement(parent, url, fetchParams, confirmMsg, finishMsg) { const del = document.createElement('a'); - del.innerText = '(delete)'; + del.textContent = '(delete)'; del.href = '#'; del.addEventListener('click', async() => { + // eslint-disable-next-line no-alert if (!confirm(confirmMsg)) { return; } diff --git a/templates/types/oidc-provider.d.ts b/templates/types/oidc-provider.d.ts index 0a2d24b3b..7d7105198 100644 --- a/templates/types/oidc-provider.d.ts +++ b/templates/types/oidc-provider.d.ts @@ -1,4 +1,4 @@ -/* eslint-disable unicorn/filename-case,eslint-comments/no-unlimited-disable,unicorn/no-abusive-eslint-disable */ +/* eslint-disable unicorn/filename-case */ /* eslint-disable */ // Copy of the type definitions for oidc-provider 8.2 // Workaround for https://github.com/microsoft/TypeScript/issues/49721 diff --git a/test-folder/.internal/test.txt b/test-folder/.internal/test.txt new file mode 100644 index 000000000..08b6f77cb --- /dev/null +++ b/test-folder/.internal/test.txt @@ -0,0 +1 @@ +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/test-folder/test-folder-1/test.txt b/test-folder/test-folder-1/test.txt new file mode 100644 index 000000000..d10f87687 --- /dev/null +++ b/test-folder/test-folder-1/test.txt @@ -0,0 +1 @@ +AAAAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/test-folder/test-folder-2/test.txt b/test-folder/test-folder-2/test.txt new file mode 100644 index 000000000..d10f87687 --- /dev/null +++ b/test-folder/test-folder-2/test.txt @@ -0,0 +1 @@ +AAAAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/test-folder/test.txt b/test-folder/test.txt new file mode 100644 index 000000000..d10f87687 --- /dev/null +++ b/test-folder/test.txt @@ -0,0 +1 @@ +AAAAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/test-folder/test2.txt b/test-folder/test2.txt new file mode 100644 index 000000000..d10f87687 --- /dev/null +++ b/test-folder/test2.txt @@ -0,0 +1 @@ +AAAAAAAAAAAAAAAAAAAA \ No newline at end of file diff --git a/test/.eslintrc.js b/test/.eslintrc.js deleted file mode 100644 index 58ba353d6..000000000 --- a/test/.eslintrc.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = { - plugins: [ - 'jest', - ], - extends: [ - 'plugin:jest/recommended', - 'plugin:jest/style', - ], - rules: { - '@typescript-eslint/no-unsafe-assignment': 'off', - 'unicorn/no-useless-undefined': 'off', - 'no-process-env': 'off', - - // Rule is not smart enough to check called function in the test - 'jest/expect-expect': 'off', - - // We are not using Mocha - 'mocha/no-exports': 'off', - 'mocha/no-nested-tests': 'off', - 'mocha/no-skipped-tests': 'off', - 'mocha/no-synchronous-tests': 'off', - 'mocha/no-top-level-hooks': 'off', - - // Need these 2 to run tests for throwing non-Error objects - '@typescript-eslint/no-throw-literal': 'off', - 'no-throw-literal': 'off', - }, -}; diff --git a/test/integration/Conditions.test.ts b/test/integration/Conditions.test.ts index b2ed92f64..ef4296a1a 100644 --- a/test/integration/Conditions.test.ts +++ b/test/integration/Conditions.test.ts @@ -11,6 +11,7 @@ import { instantiateFromConfig, removeFolder, } from './Config'; + const { namedNode, quad } = DataFactory; const port = getPort('Conditions'); diff --git a/test/integration/GuardedStream.test.ts b/test/integration/GuardedStream.test.ts index 4963da1d5..fd47b545e 100644 --- a/test/integration/GuardedStream.test.ts +++ b/test/integration/GuardedStream.test.ts @@ -1,16 +1,16 @@ import { - RepresentationMetadata, - readableToString, - ChainedConverter, - guardedStreamFrom, - RdfToQuadConverter, BasicRepresentation, + ChainedConverter, getLoggerFor, + guardedStreamFrom, INTERNAL_QUADS, + RdfToQuadConverter, + readableToString, + RepresentationMetadata, } from '../../src'; -import type { Representation, - RepresentationConverterArgs, - Logger } from '../../src'; +import type { Logger, + Representation, + RepresentationConverterArgs } from '../../src'; import { BaseTypedRepresentationConverter } from '../../src/storage/conversion/BaseTypedRepresentationConverter'; jest.mock('../../src/logging/LogUtil', (): any => { diff --git a/test/integration/Identity.test.ts b/test/integration/Identity.test.ts index 3bac27581..b0f25a5f0 100644 --- a/test/integration/Identity.test.ts +++ b/test/integration/Identity.test.ts @@ -237,7 +237,6 @@ describe.each(stores)('A Solid server with IDP using %s', (name, { config, teard describe('authenticating a client with a WebID', (): void => { const clientId = joinUrl(baseUrl, 'client-id'); const badClientId = joinUrl(baseUrl, 'bad-client-id'); - /* eslint-disable @typescript-eslint/naming-convention */ const clientJson = { '@context': 'https://www.w3.org/ns/solid/oidc-context.jsonld', @@ -260,7 +259,7 @@ describe.each(stores)('A Solid server with IDP using %s', (name, { config, teard client_id: badClientId, redirect_uris: [], }; - /* eslint-enable @typescript-eslint/naming-convention */ + let state: IdentityTestState; beforeAll(async(): Promise => { diff --git a/test/integration/IdentityTestState.ts b/test/integration/IdentityTestState.ts index 594baff37..4a3cbfa5d 100644 --- a/test/integration/IdentityTestState.ts +++ b/test/integration/IdentityTestState.ts @@ -53,7 +53,6 @@ export class IdentityTestState { for (const cookie of newCookies) { this.cookies.set(cookie.name, cookie); } - // eslint-disable-next-line unicorn/prefer-spread this.cookie = Array.from(this.cookies, ([ , nom ]): string => `${nom.name}=${nom.value}`).join('; '); } return res; diff --git a/test/integration/LdpHandlerWithAuth.test.ts b/test/integration/LdpHandlerWithAuth.test.ts index 6d95ce600..bfd730e80 100644 --- a/test/integration/LdpHandlerWithAuth.test.ts +++ b/test/integration/LdpHandlerWithAuth.test.ts @@ -1,6 +1,6 @@ import { promises as fsPromises } from 'fs'; import fetch from 'cross-fetch'; -import type { ResourceStore, App } from '../../src/'; +import type { App, ResourceStore } from '../../src/'; import { BasicRepresentation, isSystemError, joinFilePath, joinUrl } from '../../src/'; import { AclHelper } from '../util/AclHelper'; import { deleteResource, getResource, postResource, putResource } from '../util/FetchUtil'; diff --git a/test/integration/LdpHandlerWithoutAuth.test.ts b/test/integration/LdpHandlerWithoutAuth.test.ts index 258d66052..3009ad524 100644 --- a/test/integration/LdpHandlerWithoutAuth.test.ts +++ b/test/integration/LdpHandlerWithoutAuth.test.ts @@ -22,6 +22,7 @@ import { instantiateFromConfig, removeFolder, } from './Config'; + const { literal, namedNode, quad } = DataFactory; const port = getPort('LpdHandlerWithoutAuth'); diff --git a/test/integration/LegacyWebSocketsProtocol.test.ts b/test/integration/LegacyWebSocketsProtocol.test.ts index 737430dfe..5bdeb7622 100644 --- a/test/integration/LegacyWebSocketsProtocol.test.ts +++ b/test/integration/LegacyWebSocketsProtocol.test.ts @@ -51,14 +51,14 @@ describe('A server with the Solid WebSockets API behind a proxy', (): void => { await new Promise((resolve): any => client.on('open', resolve)); }); - afterAll((): void => { - client.close(); - }); - afterEach((): void => { messages.length = 0; }); + afterAll((): void => { + client.close(); + }); + it('sends the protocol version.', (): void => { expect(messages).toEqual([ 'protocol solid-0.1', diff --git a/test/integration/PermissionTable.test.ts b/test/integration/PermissionTable.test.ts index 2d57060f7..c429218e2 100644 --- a/test/integration/PermissionTable.test.ts +++ b/test/integration/PermissionTable.test.ts @@ -44,7 +44,7 @@ const allModes = [ AM.read, AM.append, AM.create, AM.write, AM.delete ]; // Columns: method, target, C/ permissions, C/R permissions, body, content-type, target exists, target does not exist // `undefined` implies C/R inherits the permissions of C/ // For PUT/PATCH/DELETE we return 205 instead of 200/204 -/* eslint-disable no-multi-spaces */ +/* eslint-disable style/no-multi-spaces */ const table: [string, string, AM[], AM[] | undefined, string, string, number, number][] = [ // No authorization headers are sent in an OPTIONS request making it impossible to grant permission. // See https://github.com/CommunitySolidServer/CommunitySolidServer/issues/1246#issuecomment-1087325235 @@ -118,7 +118,7 @@ const table: [string, string, AM[], AM[] | undefined, string, string, number, nu [ 'DELETE', 'C/', [ AM.write ], undefined, '', '', 401, 401 ], [ 'DELETE', 'C/', [ AM.read, AM.write ], undefined, '', '', 205, 404 ], ]; -/* eslint-enable no-multi-spaces */ +/* eslint-enable style/no-multi-spaces */ function toPermission(modes: AM[]): AclPermissionSet { return Object.fromEntries(modes.map((mode): [AM, boolean] => [ mode, true ])); @@ -218,7 +218,7 @@ describe.each(stores)('A request on a server with %s authorization and %s', (aut await app.stop(); }); - describe.each(table)('%s %s with permissions C/: %s and C/R: %s.', (...entry): void => { + describe.each(table)('%s %s with permissions C/: %s and C/R: %s', (...entry): void => { const [ method, target, cPerm, crPermTemp, body, contentType, existsCode, notExistsCode ] = entry; const crPerm = crPermTemp ?? cPerm; const id = v4(); diff --git a/test/integration/RedisLocker.test.ts b/test/integration/RedisLocker.test.ts index 21b8bd2b4..c3067ef80 100644 --- a/test/integration/RedisLocker.test.ts +++ b/test/integration/RedisLocker.test.ts @@ -7,6 +7,8 @@ import type { RedisReadWriteLock, RedisResourceLock } from '../../src/util/locki import { REDIS_LUA_SCRIPTS } from '../../src/util/locking/scripts/RedisLuaScripts'; import { describeIf, getPort } from '../util/Util'; import { getDefaultVariables, getTestConfigPath, instantiateFromConfig } from './Config'; + +/* eslint-disable jest/require-top-level-describe */ /** * Test the general functionality of the server using a RedisLocker with Read-Write strategy. */ @@ -153,13 +155,13 @@ describeIf('docker')('A server with a RedisLocker', (): void => { it('can read a resource.', async(): Promise => { const testFn = jest.fn(); await expect(locker.withReadLock(identifier, (): any => testFn())).resolves.toBeUndefined(); - expect(testFn).toHaveBeenCalled(); + expect(testFn).toHaveBeenCalledWith(); }); it('can write a resource.', async(): Promise => { const testFn = jest.fn(); await expect(locker.withWriteLock(identifier, (): any => testFn())).resolves.toBeUndefined(); - expect(testFn).toHaveBeenCalled(); + expect(testFn).toHaveBeenCalledWith(); }); it('can read a resource twice again after it was unlocked.', async(): Promise => { @@ -199,7 +201,7 @@ describeIf('docker')('A server with a RedisLocker', (): void => { [ 1, 0, 2 ].forEach((num): unknown => releaseSignal.emit(`release${num}`)); } }); - const promises = [ 0, 1, 2 ].map((num): Promise => + const promises = [ 0, 1, 2 ].map(async(num): Promise => locker.withReadLock(identifier, async(): Promise => { res += `l${num}`; await new Promise((resolve): any => { @@ -255,14 +257,14 @@ describeIf('docker')('A server with a RedisLocker', (): void => { await clearRedis(); }); - afterAll(async(): Promise => { - await redis.quit(); - }); - beforeEach(async(): Promise => { await clearRedis(); }); + afterAll(async(): Promise => { + await redis.quit(); + }); + it('#acquireReadLock.', async(): Promise => { const key1 = 'key1'; const writeKey1 = `${key1}.wlock`; diff --git a/test/integration/ResourceLockCleanup.test.ts b/test/integration/ResourceLockCleanup.test.ts index 4a054dd75..8751d86bb 100644 --- a/test/integration/ResourceLockCleanup.test.ts +++ b/test/integration/ResourceLockCleanup.test.ts @@ -1,6 +1,6 @@ import fetch from 'cross-fetch'; import type { App, DataAccessorBasedStore, Initializable, ResourceLocker } from '../../src'; -import { readableToString, BasicRepresentation } from '../../src'; +import { BasicRepresentation, readableToString } from '../../src'; import { describeIf, getPort } from '../util/Util'; import { getDefaultVariables, getTestConfigPath, getTestFolder, instantiateFromConfig, removeFolder } from './Config'; @@ -24,6 +24,7 @@ const configs: [string, any][] = [ }], ]; +/* eslint-disable jest/require-top-level-describe, jest/consistent-test-it */ describeIf('docker').each(configs)('A server using %s locking', (id, { config, init, teardown }): void => { let app: App; diff --git a/test/integration/SparqlStorage.test.ts b/test/integration/SparqlStorage.test.ts index 46d7ed485..92cf9c4c1 100644 --- a/test/integration/SparqlStorage.test.ts +++ b/test/integration/SparqlStorage.test.ts @@ -8,6 +8,7 @@ import { getDefaultVariables, getPresetConfigPath, getTestConfigPath, instantiat const port = getPort('SparqlStorage'); const baseUrl = `http://localhost:${port}/`; +/* eslint-disable jest/require-top-level-describe, jest/consistent-test-it */ describeIf('docker')('A server with a SPARQL endpoint as storage', (): void => { let app: App; diff --git a/test/integration/WebhookChannel2023.test.ts b/test/integration/WebhookChannel2023.test.ts index 8b5f24937..2ed314b49 100644 --- a/test/integration/WebhookChannel2023.test.ts +++ b/test/integration/WebhookChannel2023.test.ts @@ -1,5 +1,5 @@ import { createServer } from 'http'; -import type { Server, IncomingMessage, ServerResponse } from 'http'; +import type { IncomingMessage, Server, ServerResponse } from 'http'; import { fetch } from 'cross-fetch'; import { createRemoteJWKSet, jwtVerify } from 'jose'; import type { NamedNode } from 'n3'; diff --git a/test/unit/authentication/BearerWebIdExtractor.test.ts b/test/unit/authentication/BearerWebIdExtractor.test.ts index 09e6e581b..6c8f5bc3b 100644 --- a/test/unit/authentication/BearerWebIdExtractor.test.ts +++ b/test/unit/authentication/BearerWebIdExtractor.test.ts @@ -7,7 +7,6 @@ import { NotImplementedHttpError } from '../../../src/util/errors/NotImplemented let clientId: string | undefined; const solidTokenVerifier = jest.fn(async(): Promise => - // eslint-disable-next-line @typescript-eslint/naming-convention ({ aud: 'solid', exp: 1234, iat: 1234, iss: 'example.com/idp', webid: 'http://alice.example/card#me', client_id: clientId })); jest.mock('@solid/access-token-verifier', (): any => ({ createSolidTokenVerifier: (): SolidTokenVerifierFunction => solidTokenVerifier })); diff --git a/test/unit/authentication/DPoPWebIdExtractor.test.ts b/test/unit/authentication/DPoPWebIdExtractor.test.ts index 3aae0272e..03568f2c9 100644 --- a/test/unit/authentication/DPoPWebIdExtractor.test.ts +++ b/test/unit/authentication/DPoPWebIdExtractor.test.ts @@ -8,7 +8,6 @@ import { StaticAsyncHandler } from '../../util/StaticAsyncHandler'; let clientId: string | undefined; const solidTokenVerifier = jest.fn(async(): Promise => - // eslint-disable-next-line @typescript-eslint/naming-convention ({ aud: 'solid', exp: 1234, iat: 1234, iss: 'example.com/idp', webid: 'http://alice.example/card#me', client_id: clientId })); jest.mock('@solid/access-token-verifier', (): any => ({ createSolidTokenVerifier: (): SolidTokenVerifierFunction => solidTokenVerifier })); diff --git a/test/unit/authorization/AuxiliaryReader.test.ts b/test/unit/authorization/AuxiliaryReader.test.ts index 43b5c9252..c63737b3f 100644 --- a/test/unit/authorization/AuxiliaryReader.test.ts +++ b/test/unit/authorization/AuxiliaryReader.test.ts @@ -1,5 +1,5 @@ import { AuxiliaryReader } from '../../../src/authorization/AuxiliaryReader'; -import type { PermissionReaderInput, PermissionReader } from '../../../src/authorization/PermissionReader'; +import type { PermissionReader, PermissionReaderInput } from '../../../src/authorization/PermissionReader'; import type { AccessMap, PermissionMap, PermissionSet } from '../../../src/authorization/permissions/Permissions'; import { AccessMode } from '../../../src/authorization/permissions/Permissions'; import type { AuxiliaryStrategy } from '../../../src/http/auxiliary/AuxiliaryStrategy'; diff --git a/test/unit/authorization/OwnerPermissionReader.test.ts b/test/unit/authorization/OwnerPermissionReader.test.ts index 27df302f7..cc8f5ff5b 100644 --- a/test/unit/authorization/OwnerPermissionReader.test.ts +++ b/test/unit/authorization/OwnerPermissionReader.test.ts @@ -2,9 +2,9 @@ import type { Credentials } from '../../../src/authentication/Credentials'; import { OwnerPermissionReader } from '../../../src/authorization/OwnerPermissionReader'; import { AclMode } from '../../../src/authorization/permissions/AclPermissionSet'; import type { AccessMap } from '../../../src/authorization/permissions/Permissions'; -import { AuxiliaryIdentifierStrategy } from '../../../src/http/auxiliary/AuxiliaryIdentifierStrategy'; +import type { AuxiliaryIdentifierStrategy } from '../../../src/http/auxiliary/AuxiliaryIdentifierStrategy'; import type { ResourceIdentifier } from '../../../src/http/representation/ResourceIdentifier'; -import { PodStore } from '../../../src/identity/interaction/pod/util/PodStore'; +import type { PodStore } from '../../../src/identity/interaction/pod/util/PodStore'; import type { StorageLocationStrategy } from '../../../src/server/description/StorageLocationStrategy'; import { IdentifierMap, IdentifierSetMultiMap } from '../../../src/util/map/IdentifierMap'; import { compareMaps } from '../../util/Util'; diff --git a/test/unit/authorization/access/AgentGroupAccessChecker.test.ts b/test/unit/authorization/access/AgentGroupAccessChecker.test.ts index 54567e2c9..3861495c9 100644 --- a/test/unit/authorization/access/AgentGroupAccessChecker.test.ts +++ b/test/unit/authorization/access/AgentGroupAccessChecker.test.ts @@ -6,6 +6,7 @@ import type { Representation } from '../../../../src/http/representation/Represe import { INTERNAL_QUADS } from '../../../../src/util/ContentTypes'; import * as fetchUtil from '../../../../src/util/FetchUtil'; import { ACL, VCARD } from '../../../../src/util/Vocabularies'; + const { namedNode, quad } = DataFactory; describe('An AgentGroupAccessChecker', (): void => { diff --git a/test/unit/http/UnsecureWebSocketsProtocol.test.ts b/test/unit/http/UnsecureWebSocketsProtocol.test.ts index 94c7cf012..1abfd1ed2 100644 --- a/test/unit/http/UnsecureWebSocketsProtocol.test.ts +++ b/test/unit/http/UnsecureWebSocketsProtocol.test.ts @@ -8,7 +8,6 @@ import type { Guarded } from '../../../src/util/GuardedStream'; import { AS } from '../../../src/util/Vocabularies'; jest.mock('ws', (): any => ({ - // eslint-disable-next-line @typescript-eslint/naming-convention WebSocketServer: jest.fn().mockImplementation((): any => ({ handleUpgrade(upgradeRequest: any, socket: any, head: any, callback: any): void { callback(socket, upgradeRequest); diff --git a/test/unit/http/input/body/N3PatchBodyParser.test.ts b/test/unit/http/input/body/N3PatchBodyParser.test.ts index 902baec41..c35c7ec96 100644 --- a/test/unit/http/input/body/N3PatchBodyParser.test.ts +++ b/test/unit/http/input/body/N3PatchBodyParser.test.ts @@ -8,6 +8,7 @@ import type { HttpRequest } from '../../../../../src/server/HttpRequest'; import { BadRequestHttpError } from '../../../../../src/util/errors/BadRequestHttpError'; import { UnsupportedMediaTypeHttpError } from '../../../../../src/util/errors/UnsupportedMediaTypeHttpError'; import { guardedStreamFrom } from '../../../../../src/util/StreamUtil'; + const { defaultGraph, literal, namedNode, quad, variable } = DataFactory; describe('An N3PatchBodyParser', (): void => { diff --git a/test/unit/http/input/body/SparqlUpdateBodyParser.test.ts b/test/unit/http/input/body/SparqlUpdateBodyParser.test.ts index 83d4e723a..4158c5ceb 100644 --- a/test/unit/http/input/body/SparqlUpdateBodyParser.test.ts +++ b/test/unit/http/input/body/SparqlUpdateBodyParser.test.ts @@ -11,6 +11,7 @@ import { BadRequestHttpError } from '../../../../../src/util/errors/BadRequestHt import { UnsupportedMediaTypeHttpError } from '../../../../../src/util/errors/UnsupportedMediaTypeHttpError'; import { ContentType } from '../../../../../src/util/Header'; import { guardedStreamFrom } from '../../../../../src/util/StreamUtil'; + const { namedNode, quad } = DataFactory; describe('A SparqlUpdateBodyParser', (): void => { @@ -39,6 +40,7 @@ describe('A SparqlUpdateBodyParser', (): void => { it('errors when receiving an unexpected error.', async(): Promise => { const mock = jest.spyOn(algebra, 'translate').mockImplementationOnce((): any => { + // eslint-disable-next-line ts/no-throw-literal throw 'apple'; }); input.request = guardedStreamFrom( diff --git a/test/unit/http/input/preferences/AcceptPreferenceParser.test.ts b/test/unit/http/input/preferences/AcceptPreferenceParser.test.ts index b2f40706b..b158fd7c3 100644 --- a/test/unit/http/input/preferences/AcceptPreferenceParser.test.ts +++ b/test/unit/http/input/preferences/AcceptPreferenceParser.test.ts @@ -34,7 +34,6 @@ describe('An AcceptPreferenceParser', (): void => { it('parses accept-datetime headers.', async(): Promise => { request.headers = { 'accept-datetime': 'Tue, 20 Mar 2001 20:35:00 GMT' }; await expect(preferenceParser.handle({ request })) - // eslint-disable-next-line @typescript-eslint/naming-convention .resolves.toEqual({ datetime: { 'Tue, 20 Mar 2001 20:35:00 GMT': 1 }}); }); diff --git a/test/unit/http/input/preferences/UnionPreferenceParser.test.ts b/test/unit/http/input/preferences/UnionPreferenceParser.test.ts index 206f75faa..eafca1c11 100644 --- a/test/unit/http/input/preferences/UnionPreferenceParser.test.ts +++ b/test/unit/http/input/preferences/UnionPreferenceParser.test.ts @@ -1,4 +1,4 @@ -import { PreferenceParser } from '../../../../../src/http/input/preferences/PreferenceParser'; +import type { PreferenceParser } from '../../../../../src/http/input/preferences/PreferenceParser'; import { UnionPreferenceParser } from '../../../../../src/http/input/preferences/UnionPreferenceParser'; import { InternalServerError } from '../../../../../src/util/errors/InternalServerError'; diff --git a/test/unit/http/representation/BasicRepresentation.test.ts b/test/unit/http/representation/BasicRepresentation.test.ts index b2bf51589..03a705b89 100644 --- a/test/unit/http/representation/BasicRepresentation.test.ts +++ b/test/unit/http/representation/BasicRepresentation.test.ts @@ -7,6 +7,7 @@ import { RepresentationMetadata } from '../../../../src/http/representation/Repr import { INTERNAL_QUADS } from '../../../../src/util/ContentTypes'; import { guardedStreamFrom } from '../../../../src/util/StreamUtil'; import { CONTENT_TYPE } from '../../../../src/util/Vocabularies'; + const { namedNode } = DataFactory; describe('BasicRepresentation', (): void => { diff --git a/test/unit/http/representation/RepresentationMetadata.test.ts b/test/unit/http/representation/RepresentationMetadata.test.ts index e106dc9b6..f699e1e22 100644 --- a/test/unit/http/representation/RepresentationMetadata.test.ts +++ b/test/unit/http/representation/RepresentationMetadata.test.ts @@ -4,7 +4,8 @@ import { DataFactory } from 'n3'; import type { NamedNode, Quad } from 'rdf-js'; import { RepresentationMetadata } from '../../../../src/http/representation/RepresentationMetadata'; import { ContentType } from '../../../../src/util/Header'; -import { CONTENT_TYPE_TERM, SOLID_META, RDFS } from '../../../../src/util/Vocabularies'; +import { CONTENT_TYPE_TERM, RDFS, SOLID_META } from '../../../../src/util/Vocabularies'; + const { defaultGraph, literal, namedNode, quad } = DataFactory; // Helper functions to filter quads diff --git a/test/unit/identity/AccountInitializer.test.ts b/test/unit/identity/AccountInitializer.test.ts index 4186172bc..17f0ba94c 100644 --- a/test/unit/identity/AccountInitializer.test.ts +++ b/test/unit/identity/AccountInitializer.test.ts @@ -1,7 +1,7 @@ import { AccountInitializer } from '../../../src/identity/AccountInitializer'; -import { AccountStore } from '../../../src/identity/interaction/account/util/AccountStore'; -import { PasswordStore } from '../../../src/identity/interaction/password/util/PasswordStore'; -import { PodCreator } from '../../../src/identity/interaction/pod/util/PodCreator'; +import type { AccountStore } from '../../../src/identity/interaction/account/util/AccountStore'; +import type { PasswordStore } from '../../../src/identity/interaction/password/util/PasswordStore'; +import type { PodCreator } from '../../../src/identity/interaction/pod/util/PodCreator'; describe('An AccountInitializer', (): void => { const email = 'email@example.com'; diff --git a/test/unit/identity/configuration/AccountPromptFactory.test.ts b/test/unit/identity/configuration/AccountPromptFactory.test.ts index 4388e95a6..69b0a84fe 100644 --- a/test/unit/identity/configuration/AccountPromptFactory.test.ts +++ b/test/unit/identity/configuration/AccountPromptFactory.test.ts @@ -1,8 +1,8 @@ import { interactionPolicy } from 'oidc-provider'; import type { KoaContextWithOIDC } from 'oidc-provider'; import { AccountPromptFactory } from '../../../../src/identity/configuration/AccountPromptFactory'; -import { CookieStore } from '../../../../src/identity/interaction/account/util/CookieStore'; -import { WebIdStore } from '../../../../src/identity/interaction/webid/util/WebIdStore'; +import type { CookieStore } from '../../../../src/identity/interaction/account/util/CookieStore'; +import type { WebIdStore } from '../../../../src/identity/interaction/webid/util/WebIdStore'; import DefaultPolicy = interactionPolicy.DefaultPolicy; import Prompt = interactionPolicy.Prompt; diff --git a/test/unit/identity/configuration/IdentityProviderFactory.test.ts b/test/unit/identity/configuration/IdentityProviderFactory.test.ts index 88a2e2dcf..dc5a172a3 100644 --- a/test/unit/identity/configuration/IdentityProviderFactory.test.ts +++ b/test/unit/identity/configuration/IdentityProviderFactory.test.ts @@ -1,23 +1,22 @@ import { Readable } from 'stream'; import { exportJWK, generateKeyPair } from 'jose'; import type * as Koa from 'koa'; -import { ErrorHandler } from '../../../../src/http/output/error/ErrorHandler'; -import { ResponseWriter } from '../../../../src/http/output/ResponseWriter'; +import type { ErrorHandler } from '../../../../src/http/output/error/ErrorHandler'; +import type { ResponseWriter } from '../../../../src/http/output/ResponseWriter'; import { IdentityProviderFactory } from '../../../../src/identity/configuration/IdentityProviderFactory'; import type { JwkGenerator } from '../../../../src/identity/configuration/JwkGenerator'; -import { PromptFactory } from '../../../../src/identity/configuration/PromptFactory'; -import { +import type { PromptFactory } from '../../../../src/identity/configuration/PromptFactory'; +import type { ClientCredentialsStore, } from '../../../../src/identity/interaction/client-credentials/util/ClientCredentialsStore'; import type { Interaction } from '../../../../src/identity/interaction/InteractionHandler'; import type { InteractionRoute } from '../../../../src/identity/interaction/routing/InteractionRoute'; import type { AdapterFactory } from '../../../../src/identity/storage/AdapterFactory'; -import { KeyValueStorage } from '../../../../src/storage/keyvalue/KeyValueStorage'; +import type { KeyValueStorage } from '../../../../src/storage/keyvalue/KeyValueStorage'; import { extractErrorTerms } from '../../../../src/util/errors/HttpErrorUtil'; import { OAuthHttpError } from '../../../../src/util/errors/OAuthHttpError'; -import type { errors, Configuration, KoaContextWithOIDC } from '../../../../templates/types/oidc-provider'; +import type { Configuration, errors, KoaContextWithOIDC } from '../../../../templates/types/oidc-provider'; -/* eslint-disable @typescript-eslint/naming-convention */ jest.mock('oidc-provider', (): any => { const fn = jest.fn((issuer: string, config: Configuration): any => ({ issuer, config, use: jest.fn() })); // The base export is the Provider class, but we also need some of the deeper exports like interactionPolicy @@ -69,11 +68,6 @@ describe('An IdentityProviderFactory', (): void => { delete process.env.NODE_ENV; }); - afterAll(async(): Promise => { - process.env.JEST_WORKER_ID = jestWorkerId; - process.env.NODE_ENV = nodeEnv; - }); - beforeEach(async(): Promise => { // Disabling devInteractions to prevent warnings when testing the path // where we use the actual library instead of a mock. @@ -145,6 +139,11 @@ describe('An IdentityProviderFactory', (): void => { }); }); + afterAll(async(): Promise => { + process.env.JEST_WORKER_ID = jestWorkerId; + process.env.NODE_ENV = nodeEnv; + }); + it('creates a correct configuration.', async(): Promise => { // This is the output of our mock function const provider = await factory.getProvider() as any; diff --git a/test/unit/identity/interaction/CookieInteractionHandler.test.ts b/test/unit/identity/interaction/CookieInteractionHandler.test.ts index bd55d7f01..2ba4e170d 100644 --- a/test/unit/identity/interaction/CookieInteractionHandler.test.ts +++ b/test/unit/identity/interaction/CookieInteractionHandler.test.ts @@ -1,10 +1,11 @@ import { RepresentationMetadata } from '../../../../src/http/representation/RepresentationMetadata'; import type { ResourceIdentifier } from '../../../../src/http/representation/ResourceIdentifier'; +import type { + AccountStore } from '../../../../src/identity/interaction/account/util/AccountStore'; import { ACCOUNT_SETTINGS_REMEMBER_LOGIN, - AccountStore, } from '../../../../src/identity/interaction/account/util/AccountStore'; -import { CookieStore } from '../../../../src/identity/interaction/account/util/CookieStore'; +import type { CookieStore } from '../../../../src/identity/interaction/account/util/CookieStore'; import { CookieInteractionHandler } from '../../../../src/identity/interaction/CookieInteractionHandler'; import type { JsonRepresentation } from '../../../../src/identity/interaction/InteractionUtil'; import type { diff --git a/test/unit/identity/interaction/InteractionUtil.test.ts b/test/unit/identity/interaction/InteractionUtil.test.ts index 93b9b0baa..19dd6980e 100644 --- a/test/unit/identity/interaction/InteractionUtil.test.ts +++ b/test/unit/identity/interaction/InteractionUtil.test.ts @@ -77,7 +77,6 @@ describe('InteractionUtil', (): void => { beforeEach(async(): Promise => { provider = { - // eslint-disable-next-line @typescript-eslint/naming-convention Session: { find: jest.fn().mockResolvedValue({ accountId: 'accountId', diff --git a/test/unit/identity/interaction/LockingInteractionHandler.test.ts b/test/unit/identity/interaction/LockingInteractionHandler.test.ts index d1c80b178..e78c65623 100644 --- a/test/unit/identity/interaction/LockingInteractionHandler.test.ts +++ b/test/unit/identity/interaction/LockingInteractionHandler.test.ts @@ -1,7 +1,7 @@ import { BasicRepresentation } from '../../../../src/http/representation/BasicRepresentation'; import type { AccountIdRoute } from '../../../../src/identity/interaction/account/AccountIdRoute'; -import type { InteractionHandlerInput, - InteractionHandler } from '../../../../src/identity/interaction/InteractionHandler'; +import type { InteractionHandler, + InteractionHandlerInput } from '../../../../src/identity/interaction/InteractionHandler'; import { LockingInteractionHandler } from '../../../../src/identity/interaction/LockingInteractionHandler'; import type { ReadWriteLocker } from '../../../../src/util/locking/ReadWriteLocker'; diff --git a/test/unit/identity/interaction/ViewInteractionHandler.test.ts b/test/unit/identity/interaction/ViewInteractionHandler.test.ts index 054a029e8..9e9c3f47b 100644 --- a/test/unit/identity/interaction/ViewInteractionHandler.test.ts +++ b/test/unit/identity/interaction/ViewInteractionHandler.test.ts @@ -1,6 +1,6 @@ import { RepresentationMetadata } from '../../../../src/http/representation/RepresentationMetadata'; -import type { JsonInteractionHandlerInput, - JsonInteractionHandler } from '../../../../src/identity/interaction/JsonInteractionHandler'; +import type { JsonInteractionHandler, + JsonInteractionHandlerInput } from '../../../../src/identity/interaction/JsonInteractionHandler'; import type { JsonView } from '../../../../src/identity/interaction/JsonView'; import { ViewInteractionHandler } from '../../../../src/identity/interaction/ViewInteractionHandler'; import { MethodNotAllowedHttpError } from '../../../../src/util/errors/MethodNotAllowedHttpError'; diff --git a/test/unit/identity/interaction/account/CreateAccountHandler.test.ts b/test/unit/identity/interaction/account/CreateAccountHandler.test.ts index 0974cf7d0..37d156222 100644 --- a/test/unit/identity/interaction/account/CreateAccountHandler.test.ts +++ b/test/unit/identity/interaction/account/CreateAccountHandler.test.ts @@ -1,5 +1,5 @@ import { CreateAccountHandler } from '../../../../../src/identity/interaction/account/CreateAccountHandler'; -import { AccountStore } from '../../../../../src/identity/interaction/account/util/AccountStore'; +import type { AccountStore } from '../../../../../src/identity/interaction/account/util/AccountStore'; describe('A CreateAccountHandler', (): void => { const accountId = 'accountId'; diff --git a/test/unit/identity/interaction/account/util/AccountUtil.test.ts b/test/unit/identity/interaction/account/util/AccountUtil.test.ts index f381687a4..d5011e957 100644 --- a/test/unit/identity/interaction/account/util/AccountUtil.test.ts +++ b/test/unit/identity/interaction/account/util/AccountUtil.test.ts @@ -1,8 +1,7 @@ import { assertAccountId, parsePath, verifyAccountId, } from '../../../../../../src/identity/interaction/account/util/AccountUtil'; - -import { InteractionRoute } from '../../../../../../src/identity/interaction/routing/InteractionRoute'; +import type { InteractionRoute } from '../../../../../../src/identity/interaction/routing/InteractionRoute'; import { InternalServerError } from '../../../../../../src/util/errors/InternalServerError'; import { NotFoundHttpError } from '../../../../../../src/util/errors/NotFoundHttpError'; diff --git a/test/unit/identity/interaction/account/util/BaseAccountStore.test.ts b/test/unit/identity/interaction/account/util/BaseAccountStore.test.ts index edfdf82fa..33fedb4fc 100644 --- a/test/unit/identity/interaction/account/util/BaseAccountStore.test.ts +++ b/test/unit/identity/interaction/account/util/BaseAccountStore.test.ts @@ -1,8 +1,9 @@ import { ACCOUNT_SETTINGS_REMEMBER_LOGIN } from '../../../../../../src/identity/interaction/account/util/AccountStore'; import { BaseAccountStore } from '../../../../../../src/identity/interaction/account/util/BaseAccountStore'; +import type { + AccountLoginStorage } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; import { ACCOUNT_TYPE, - AccountLoginStorage, } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; import { InternalServerError } from '../../../../../../src/util/errors/InternalServerError'; diff --git a/test/unit/identity/interaction/client-credentials/ClientCredentialsAdapterFactory.test.ts b/test/unit/identity/interaction/client-credentials/ClientCredentialsAdapterFactory.test.ts index c83986006..1c6ab3da9 100644 --- a/test/unit/identity/interaction/client-credentials/ClientCredentialsAdapterFactory.test.ts +++ b/test/unit/identity/interaction/client-credentials/ClientCredentialsAdapterFactory.test.ts @@ -1,14 +1,12 @@ -import { Adapter } from 'oidc-provider'; +import type { Adapter } from 'oidc-provider'; import { ClientCredentialsAdapter, ClientCredentialsAdapterFactory, } from '../../../../../src/identity/interaction/client-credentials/ClientCredentialsAdapterFactory'; import type { ClientCredentials, -} from '../../../../../src/identity/interaction/client-credentials/util/ClientCredentialsStore'; -import { ClientCredentialsStore, } from '../../../../../src/identity/interaction/client-credentials/util/ClientCredentialsStore'; -import { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; +import type { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; import type { AdapterFactory } from '../../../../../src/identity/storage/AdapterFactory'; describe('A ClientCredentialsAdapterFactory', (): void => { @@ -82,7 +80,6 @@ describe('A ClientCredentialsAdapterFactory', (): void => { }); it('returns valid client_credentials Client metadata if a matching token was found.', async(): Promise => { - /* eslint-disable @typescript-eslint/naming-convention */ await expect(adapter.find(label)).resolves.toEqual({ client_id: label, client_secret: secret, @@ -90,7 +87,7 @@ describe('A ClientCredentialsAdapterFactory', (): void => { redirect_uris: [], response_types: [], }); - /* eslint-enable @typescript-eslint/naming-convention */ + expect(sourceAdapter.find).toHaveBeenCalledTimes(1); expect(sourceAdapter.find).toHaveBeenLastCalledWith(label); expect(credentialsStore.findByLabel).toHaveBeenCalledTimes(1); diff --git a/test/unit/identity/interaction/client-credentials/ClientCredentialsDetailsHandler.test.ts b/test/unit/identity/interaction/client-credentials/ClientCredentialsDetailsHandler.test.ts index 5c2a4f598..50171cd29 100644 --- a/test/unit/identity/interaction/client-credentials/ClientCredentialsDetailsHandler.test.ts +++ b/test/unit/identity/interaction/client-credentials/ClientCredentialsDetailsHandler.test.ts @@ -4,7 +4,7 @@ import { import type { ClientCredentialsIdRoute, } from '../../../../../src/identity/interaction/client-credentials/util/ClientCredentialsIdRoute'; -import { +import type { ClientCredentialsStore, } from '../../../../../src/identity/interaction/client-credentials/util/ClientCredentialsStore'; import { NotFoundHttpError } from '../../../../../src/util/errors/NotFoundHttpError'; diff --git a/test/unit/identity/interaction/client-credentials/CreateClientCredentialsHandler.test.ts b/test/unit/identity/interaction/client-credentials/CreateClientCredentialsHandler.test.ts index 6a9faf88d..09a6ea56b 100644 --- a/test/unit/identity/interaction/client-credentials/CreateClientCredentialsHandler.test.ts +++ b/test/unit/identity/interaction/client-credentials/CreateClientCredentialsHandler.test.ts @@ -6,11 +6,9 @@ import type { } from '../../../../../src/identity/interaction/client-credentials/util/ClientCredentialsIdRoute'; import type { ClientCredentials, -} from '../../../../../src/identity/interaction/client-credentials/util/ClientCredentialsStore'; -import { ClientCredentialsStore, } from '../../../../../src/identity/interaction/client-credentials/util/ClientCredentialsStore'; -import { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; +import type { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; import { BadRequestHttpError } from '../../../../../src/util/errors/BadRequestHttpError'; const uuid = '4c9b88c1-7502-4107-bb79-2a3a590c7aa3'; diff --git a/test/unit/identity/interaction/client-credentials/DeleteClientCredentialsHandler.test.ts b/test/unit/identity/interaction/client-credentials/DeleteClientCredentialsHandler.test.ts index e2cdce88a..3ce498803 100644 --- a/test/unit/identity/interaction/client-credentials/DeleteClientCredentialsHandler.test.ts +++ b/test/unit/identity/interaction/client-credentials/DeleteClientCredentialsHandler.test.ts @@ -4,7 +4,7 @@ import { import type { ClientCredentialsIdRoute, } from '../../../../../src/identity/interaction/client-credentials/util/ClientCredentialsIdRoute'; -import { +import type { ClientCredentialsStore, } from '../../../../../src/identity/interaction/client-credentials/util/ClientCredentialsStore'; import { NotFoundHttpError } from '../../../../../src/util/errors/NotFoundHttpError'; diff --git a/test/unit/identity/interaction/client-credentials/util/BaseClientCredentialsStore.test.ts b/test/unit/identity/interaction/client-credentials/util/BaseClientCredentialsStore.test.ts index c64f8b028..4c68c598c 100644 --- a/test/unit/identity/interaction/client-credentials/util/BaseClientCredentialsStore.test.ts +++ b/test/unit/identity/interaction/client-credentials/util/BaseClientCredentialsStore.test.ts @@ -1,6 +1,7 @@ +import type { + AccountLoginStorage } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; import { ACCOUNT_TYPE, - AccountLoginStorage, } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; import { BaseClientCredentialsStore, diff --git a/test/unit/identity/interaction/login/LogoutHandler.test.ts b/test/unit/identity/interaction/login/LogoutHandler.test.ts index cb56ed053..a0c5027a4 100644 --- a/test/unit/identity/interaction/login/LogoutHandler.test.ts +++ b/test/unit/identity/interaction/login/LogoutHandler.test.ts @@ -27,7 +27,7 @@ describe('A LogoutHandler', (): void => { expect(outputMetadata?.get(SOLID_HTTP.terms.accountCookie)?.value).toBe(cookie); const date = outputMetadata?.get(SOLID_HTTP.terms.accountCookieExpiration); expect(date).toBeDefined(); - expect(new Date(date!.value) < new Date()).toBe(true); + expect(new Date(date!.value).getTime()).toBeLessThan(new Date().getTime()); expect(cookieStore.delete).toHaveBeenCalledTimes(1); expect(cookieStore.delete).toHaveBeenLastCalledWith(cookie); }); diff --git a/test/unit/identity/interaction/login/ResolveLoginHandler.test.ts b/test/unit/identity/interaction/login/ResolveLoginHandler.test.ts index e59bb8700..34ef559d3 100644 --- a/test/unit/identity/interaction/login/ResolveLoginHandler.test.ts +++ b/test/unit/identity/interaction/login/ResolveLoginHandler.test.ts @@ -1,7 +1,8 @@ import { RepresentationMetadata } from '../../../../../src/http/representation/RepresentationMetadata'; -import { ACCOUNT_SETTINGS_REMEMBER_LOGIN, +import type { AccountStore } from '../../../../../src/identity/interaction/account/util/AccountStore'; -import { CookieStore } from '../../../../../src/identity/interaction/account/util/CookieStore'; +import { ACCOUNT_SETTINGS_REMEMBER_LOGIN } from '../../../../../src/identity/interaction/account/util/AccountStore'; +import type { CookieStore } from '../../../../../src/identity/interaction/account/util/CookieStore'; import type { JsonRepresentation } from '../../../../../src/identity/interaction/InteractionUtil'; import type { JsonInteractionHandlerInput } from '../../../../../src/identity/interaction/JsonInteractionHandler'; import type { LoginOutputType } from '../../../../../src/identity/interaction/login/ResolveLoginHandler'; diff --git a/test/unit/identity/interaction/oidc/CancelOidcHandler.test.ts b/test/unit/identity/interaction/oidc/CancelOidcHandler.test.ts index a9dff2f03..4231876ef 100644 --- a/test/unit/identity/interaction/oidc/CancelOidcHandler.test.ts +++ b/test/unit/identity/interaction/oidc/CancelOidcHandler.test.ts @@ -26,7 +26,6 @@ describe('A CancelOidcHandler', (): void => { expect(oidcInteraction.persist).toHaveBeenCalledTimes(1); expect(oidcInteraction.result).toEqual({ error: 'access_denied', - // eslint-disable-next-line @typescript-eslint/naming-convention error_description: 'User cancelled the interaction.', }); }); diff --git a/test/unit/identity/interaction/oidc/ClientInfoHandler.test.ts b/test/unit/identity/interaction/oidc/ClientInfoHandler.test.ts index 646f7fc5a..385792df4 100644 --- a/test/unit/identity/interaction/oidc/ClientInfoHandler.test.ts +++ b/test/unit/identity/interaction/oidc/ClientInfoHandler.test.ts @@ -4,7 +4,6 @@ import { ClientInfoHandler } from '../../../../../src/identity/interaction/oidc/ import { BadRequestHttpError } from '../../../../../src/util/errors/BadRequestHttpError'; import type Provider from '../../../../../templates/types/oidc-provider'; -/* eslint-disable @typescript-eslint/naming-convention */ describe('A ClientInfoHandler', (): void => { let oidcInteraction: Interaction; const clientMetadata = { diff --git a/test/unit/identity/interaction/oidc/ConsentHandler.test.ts b/test/unit/identity/interaction/oidc/ConsentHandler.test.ts index 12ecb1f2d..11285d43a 100644 --- a/test/unit/identity/interaction/oidc/ConsentHandler.test.ts +++ b/test/unit/identity/interaction/oidc/ConsentHandler.test.ts @@ -57,7 +57,7 @@ describe('A ConsentHandler', (): void => { accountId, persist: jest.fn(), }, - // eslint-disable-next-line @typescript-eslint/naming-convention + params: { client_id: clientId }, prompt: { details: {}}, persist: jest.fn(), @@ -68,12 +68,10 @@ describe('A ConsentHandler', (): void => { grantFn = jest.fn((props): DummyGrant => new DummyGrant(props)) as any; grantFn.find = jest.fn((grantId: string): any => grantId ? knownGrant : undefined); provider = { - /* eslint-disable @typescript-eslint/naming-convention */ Grant: grantFn, Session: { find: (): unknown => oidcInteraction.session, }, - /* eslint-enable @typescript-eslint/naming-convention */ } as any; providerFactory = { diff --git a/test/unit/identity/interaction/oidc/ForgetWebIdHandler.test.ts b/test/unit/identity/interaction/oidc/ForgetWebIdHandler.test.ts index 27de27825..dc79d7b48 100644 --- a/test/unit/identity/interaction/oidc/ForgetWebIdHandler.test.ts +++ b/test/unit/identity/interaction/oidc/ForgetWebIdHandler.test.ts @@ -20,11 +20,9 @@ describe('A ForgetWebIdHandler', (): void => { } as any; provider = { - /* eslint-disable @typescript-eslint/naming-convention */ Session: { find: jest.fn().mockResolvedValue({ persist: jest.fn() }), }, - /* eslint-enable @typescript-eslint/naming-convention */ } as any; providerFactory = { diff --git a/test/unit/identity/interaction/oidc/PickWebIdHandler.test.ts b/test/unit/identity/interaction/oidc/PickWebIdHandler.test.ts index e45c63d09..2151e7196 100644 --- a/test/unit/identity/interaction/oidc/PickWebIdHandler.test.ts +++ b/test/unit/identity/interaction/oidc/PickWebIdHandler.test.ts @@ -1,7 +1,7 @@ import type { ProviderFactory } from '../../../../../src/identity/configuration/ProviderFactory'; import type { Interaction } from '../../../../../src/identity/interaction/InteractionHandler'; import { PickWebIdHandler } from '../../../../../src/identity/interaction/oidc/PickWebIdHandler'; -import { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; +import type { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; import { BadRequestHttpError } from '../../../../../src/util/errors/BadRequestHttpError'; import { FoundHttpError } from '../../../../../src/util/errors/FoundHttpError'; import type Provider from '../../../../../templates/types/oidc-provider'; @@ -35,11 +35,9 @@ describe('A PickWebIdHandler', (): void => { } satisfies Partial as any; provider = { - /* eslint-disable @typescript-eslint/naming-convention */ Session: { find: jest.fn().mockResolvedValue({ persist: jest.fn() }), }, - /* eslint-enable @typescript-eslint/naming-convention */ } as any; providerFactory = { diff --git a/test/unit/identity/interaction/password/CreatePasswordHandler.test.ts b/test/unit/identity/interaction/password/CreatePasswordHandler.test.ts index 83d59f8c5..0193be082 100644 --- a/test/unit/identity/interaction/password/CreatePasswordHandler.test.ts +++ b/test/unit/identity/interaction/password/CreatePasswordHandler.test.ts @@ -1,6 +1,6 @@ import { CreatePasswordHandler } from '../../../../../src/identity/interaction/password/CreatePasswordHandler'; import type { PasswordIdRoute } from '../../../../../src/identity/interaction/password/util/PasswordIdRoute'; -import { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; +import type { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; describe('A CreatePasswordHandler', (): void => { const id = 'id'; diff --git a/test/unit/identity/interaction/password/DeletePasswordHandler.test.ts b/test/unit/identity/interaction/password/DeletePasswordHandler.test.ts index 2ceb77862..7c26fb4e6 100644 --- a/test/unit/identity/interaction/password/DeletePasswordHandler.test.ts +++ b/test/unit/identity/interaction/password/DeletePasswordHandler.test.ts @@ -1,6 +1,6 @@ import { DeletePasswordHandler } from '../../../../../src/identity/interaction/password/DeletePasswordHandler'; import type { PasswordIdRoute } from '../../../../../src/identity/interaction/password/util/PasswordIdRoute'; -import { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; +import type { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; import { NotFoundHttpError } from '../../../../../src/util/errors/NotFoundHttpError'; describe('A DeletePasswordHandler', (): void => { diff --git a/test/unit/identity/interaction/password/ForgotPasswordHandler.test.ts b/test/unit/identity/interaction/password/ForgotPasswordHandler.test.ts index dba7a4aa7..97039c963 100644 --- a/test/unit/identity/interaction/password/ForgotPasswordHandler.test.ts +++ b/test/unit/identity/interaction/password/ForgotPasswordHandler.test.ts @@ -1,9 +1,9 @@ import { ForgotPasswordHandler } from '../../../../../src/identity/interaction/password/ForgotPasswordHandler'; -import { EmailSender } from '../../../../../src/identity/interaction/password/util/EmailSender'; -import { ForgotPasswordStore } from '../../../../../src/identity/interaction/password/util/ForgotPasswordStore'; -import { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; +import type { EmailSender } from '../../../../../src/identity/interaction/password/util/EmailSender'; +import type { ForgotPasswordStore } from '../../../../../src/identity/interaction/password/util/ForgotPasswordStore'; +import type { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; import type { InteractionRoute } from '../../../../../src/identity/interaction/routing/InteractionRoute'; -import { TemplateEngine } from '../../../../../src/util/templates/TemplateEngine'; +import type { TemplateEngine } from '../../../../../src/util/templates/TemplateEngine'; describe('A ForgotPasswordHandler', (): void => { const id = 'id'; diff --git a/test/unit/identity/interaction/password/PasswordLoginHandler.test.ts b/test/unit/identity/interaction/password/PasswordLoginHandler.test.ts index aa1f86d5d..6e6b96466 100644 --- a/test/unit/identity/interaction/password/PasswordLoginHandler.test.ts +++ b/test/unit/identity/interaction/password/PasswordLoginHandler.test.ts @@ -1,5 +1,5 @@ import { PasswordLoginHandler } from '../../../../../src/identity/interaction/password/PasswordLoginHandler'; -import { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; +import type { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; describe('A PasswordLoginHandler', (): void => { let json: unknown; diff --git a/test/unit/identity/interaction/password/UpdatePasswordHandler.test.ts b/test/unit/identity/interaction/password/UpdatePasswordHandler.test.ts index 06fd89b80..4026feb0e 100644 --- a/test/unit/identity/interaction/password/UpdatePasswordHandler.test.ts +++ b/test/unit/identity/interaction/password/UpdatePasswordHandler.test.ts @@ -1,6 +1,6 @@ import { UpdatePasswordHandler } from '../../../../../src/identity/interaction/password/UpdatePasswordHandler'; import type { PasswordIdRoute } from '../../../../../src/identity/interaction/password/util/PasswordIdRoute'; -import { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; +import type { PasswordStore } from '../../../../../src/identity/interaction/password/util/PasswordStore'; import { NotFoundHttpError } from '../../../../../src/util/errors/NotFoundHttpError'; describe('An UpdatePasswordHandler', (): void => { diff --git a/test/unit/identity/interaction/password/util/BasePasswordStore.test.ts b/test/unit/identity/interaction/password/util/BasePasswordStore.test.ts index 0a3d24f5c..ee6b6c7bc 100644 --- a/test/unit/identity/interaction/password/util/BasePasswordStore.test.ts +++ b/test/unit/identity/interaction/password/util/BasePasswordStore.test.ts @@ -1,7 +1,8 @@ import { hash } from 'bcryptjs'; +import type { + AccountLoginStorage } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; import { ACCOUNT_TYPE, - AccountLoginStorage, } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; import { BasePasswordStore } from '../../../../../../src/identity/interaction/password/util/BasePasswordStore'; import { InternalServerError } from '../../../../../../src/util/errors/InternalServerError'; diff --git a/test/unit/identity/interaction/pod/CreatePodHandler.test.ts b/test/unit/identity/interaction/pod/CreatePodHandler.test.ts index 495ded622..33c9b08c2 100644 --- a/test/unit/identity/interaction/pod/CreatePodHandler.test.ts +++ b/test/unit/identity/interaction/pod/CreatePodHandler.test.ts @@ -1,7 +1,7 @@ import { CreatePodHandler } from '../../../../../src/identity/interaction/pod/CreatePodHandler'; import type { PodIdRoute } from '../../../../../src/identity/interaction/pod/PodIdRoute'; -import { PodCreator } from '../../../../../src/identity/interaction/pod/util/PodCreator'; -import { PodStore } from '../../../../../src/identity/interaction/pod/util/PodStore'; +import type { PodCreator } from '../../../../../src/identity/interaction/pod/util/PodCreator'; +import type { PodStore } from '../../../../../src/identity/interaction/pod/util/PodStore'; import type { WebIdLinkRoute } from '../../../../../src/identity/interaction/webid/WebIdLinkRoute'; describe('A CreatePodHandler', (): void => { diff --git a/test/unit/identity/interaction/pod/UpdateOwnerHandler.test.ts b/test/unit/identity/interaction/pod/UpdateOwnerHandler.test.ts index 4835a6129..0a3619b15 100644 --- a/test/unit/identity/interaction/pod/UpdateOwnerHandler.test.ts +++ b/test/unit/identity/interaction/pod/UpdateOwnerHandler.test.ts @@ -1,6 +1,6 @@ import type { PodIdRoute } from '../../../../../src/identity/interaction/pod/PodIdRoute'; import { UpdateOwnerHandler } from '../../../../../src/identity/interaction/pod/UpdateOwnerHandler'; -import { PodStore } from '../../../../../src/identity/interaction/pod/util/PodStore'; +import type { PodStore } from '../../../../../src/identity/interaction/pod/util/PodStore'; import { NotFoundHttpError } from '../../../../../src/util/errors/NotFoundHttpError'; describe('An UpdateOwnerHandler', (): void => { diff --git a/test/unit/identity/interaction/pod/util/BasePodCreator.test.ts b/test/unit/identity/interaction/pod/util/BasePodCreator.test.ts index 57a4610d5..0bb1dc0ed 100644 --- a/test/unit/identity/interaction/pod/util/BasePodCreator.test.ts +++ b/test/unit/identity/interaction/pod/util/BasePodCreator.test.ts @@ -1,6 +1,6 @@ import { BasePodCreator } from '../../../../../../src/identity/interaction/pod/util/BasePodCreator'; -import { PodStore } from '../../../../../../src/identity/interaction/pod/util/PodStore'; -import { WebIdStore } from '../../../../../../src/identity/interaction/webid/util/WebIdStore'; +import type { PodStore } from '../../../../../../src/identity/interaction/pod/util/PodStore'; +import type { WebIdStore } from '../../../../../../src/identity/interaction/webid/util/WebIdStore'; import type { IdentifierGenerator } from '../../../../../../src/pods/generate/IdentifierGenerator'; describe('A BasePodCreator', (): void => { diff --git a/test/unit/identity/interaction/pod/util/BasePodStore.test.ts b/test/unit/identity/interaction/pod/util/BasePodStore.test.ts index 5af95d618..9a49a5423 100644 --- a/test/unit/identity/interaction/pod/util/BasePodStore.test.ts +++ b/test/unit/identity/interaction/pod/util/BasePodStore.test.ts @@ -1,6 +1,7 @@ +import type { + AccountLoginStorage } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; import { ACCOUNT_TYPE, - AccountLoginStorage, } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; import { BasePodStore } from '../../../../../../src/identity/interaction/pod/util/BasePodStore'; import type { PodManager } from '../../../../../../src/pods/PodManager'; diff --git a/test/unit/identity/interaction/pod/util/OwnerMetadataWriter.test.ts b/test/unit/identity/interaction/pod/util/OwnerMetadataWriter.test.ts index 465689f62..350912e9c 100644 --- a/test/unit/identity/interaction/pod/util/OwnerMetadataWriter.test.ts +++ b/test/unit/identity/interaction/pod/util/OwnerMetadataWriter.test.ts @@ -2,7 +2,7 @@ import type { ServerResponse } from 'http'; import { createResponse } from 'node-mocks-http'; import { RepresentationMetadata } from '../../../../../../src/http/representation/RepresentationMetadata'; import { OwnerMetadataWriter } from '../../../../../../src/identity/interaction/pod/util/OwnerMetadataWriter'; -import { PodStore } from '../../../../../../src/identity/interaction/pod/util/PodStore'; +import type { PodStore } from '../../../../../../src/identity/interaction/pod/util/PodStore'; import type { StorageLocationStrategy } from '../../../../../../src/server/description/StorageLocationStrategy'; import type { HttpResponse } from '../../../../../../src/server/HttpResponse'; import { joinUrl } from '../../../../../../src/util/PathUtil'; diff --git a/test/unit/identity/interaction/webid/LinkWebIdHandler.test.ts b/test/unit/identity/interaction/webid/LinkWebIdHandler.test.ts index 4e0141f8c..8edad05fa 100644 --- a/test/unit/identity/interaction/webid/LinkWebIdHandler.test.ts +++ b/test/unit/identity/interaction/webid/LinkWebIdHandler.test.ts @@ -1,9 +1,9 @@ -import { PodStore } from '../../../../../src/identity/interaction/pod/util/PodStore'; +import type { PodStore } from '../../../../../src/identity/interaction/pod/util/PodStore'; import { LinkWebIdHandler } from '../../../../../src/identity/interaction/webid/LinkWebIdHandler'; -import { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; +import type { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; import type { WebIdLinkRoute } from '../../../../../src/identity/interaction/webid/WebIdLinkRoute'; -import { OwnershipValidator } from '../../../../../src/identity/ownership/OwnershipValidator'; -import { StorageLocationStrategy } from '../../../../../src/server/description/StorageLocationStrategy'; +import type { OwnershipValidator } from '../../../../../src/identity/ownership/OwnershipValidator'; +import type { StorageLocationStrategy } from '../../../../../src/server/description/StorageLocationStrategy'; import { BadRequestHttpError } from '../../../../../src/util/errors/BadRequestHttpError'; describe('A LinkWebIdHandler', (): void => { diff --git a/test/unit/identity/interaction/webid/UnlinkWebIdHandler.test.ts b/test/unit/identity/interaction/webid/UnlinkWebIdHandler.test.ts index dd4a4bed6..d0c307575 100644 --- a/test/unit/identity/interaction/webid/UnlinkWebIdHandler.test.ts +++ b/test/unit/identity/interaction/webid/UnlinkWebIdHandler.test.ts @@ -1,5 +1,5 @@ import { UnlinkWebIdHandler } from '../../../../../src/identity/interaction/webid/UnlinkWebIdHandler'; -import { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; +import type { WebIdStore } from '../../../../../src/identity/interaction/webid/util/WebIdStore'; import type { WebIdLinkRoute } from '../../../../../src/identity/interaction/webid/WebIdLinkRoute'; import { NotFoundHttpError } from '../../../../../src/util/errors/NotFoundHttpError'; diff --git a/test/unit/identity/interaction/webid/util/BaseWebIdStore.test.ts b/test/unit/identity/interaction/webid/util/BaseWebIdStore.test.ts index b00010d9f..174cd98a8 100644 --- a/test/unit/identity/interaction/webid/util/BaseWebIdStore.test.ts +++ b/test/unit/identity/interaction/webid/util/BaseWebIdStore.test.ts @@ -1,5 +1,6 @@ -import { ACCOUNT_TYPE, +import type { AccountLoginStorage } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; +import { ACCOUNT_TYPE } from '../../../../../../src/identity/interaction/account/util/LoginStorage'; import { BaseWebIdStore } from '../../../../../../src/identity/interaction/webid/util/BaseWebIdStore'; import { BadRequestHttpError } from '../../../../../../src/util/errors/BadRequestHttpError'; import { InternalServerError } from '../../../../../../src/util/errors/InternalServerError'; diff --git a/test/unit/identity/ownership/TokenOwnershipValidator.test.ts b/test/unit/identity/ownership/TokenOwnershipValidator.test.ts index 90b338134..e45efebf8 100644 --- a/test/unit/identity/ownership/TokenOwnershipValidator.test.ts +++ b/test/unit/identity/ownership/TokenOwnershipValidator.test.ts @@ -8,6 +8,7 @@ import type { ExpiringStorage } from '../../../../src/storage/keyvalue/ExpiringS import { BadRequestHttpError } from '../../../../src/util/errors/BadRequestHttpError'; import { extractErrorTerms } from '../../../../src/util/errors/HttpErrorUtil'; import { SOLID } from '../../../../src/util/Vocabularies'; + const { literal, namedNode, quad } = DataFactory; jest.mock('uuid'); diff --git a/test/unit/identity/storage/ClientIdAdapterFactory.test.ts b/test/unit/identity/storage/ClientIdAdapterFactory.test.ts index dedda97d5..56ea09872 100644 --- a/test/unit/identity/storage/ClientIdAdapterFactory.test.ts +++ b/test/unit/identity/storage/ClientIdAdapterFactory.test.ts @@ -6,7 +6,6 @@ import type { Adapter } from '../../../../templates/types/oidc-provider'; jest.mock('cross-fetch'); -/* eslint-disable @typescript-eslint/naming-convention */ describe('A ClientIdAdapterFactory', (): void => { const fetchMock: jest.Mock = fetch as any; const id = 'https://app.example.com/card#me'; diff --git a/test/unit/init/AppRunner.test.ts b/test/unit/init/AppRunner.test.ts index c4850f72e..04039d98f 100644 --- a/test/unit/init/AppRunner.test.ts +++ b/test/unit/init/AppRunner.test.ts @@ -90,7 +90,6 @@ jest.mock('../../../src/init/cluster/SingleThreaded', (): any => ({ })); jest.mock('componentsjs', (): any => ({ - // eslint-disable-next-line @typescript-eslint/naming-convention ComponentsManager: { build: jest.fn(async(): Promise> => manager), }, @@ -439,7 +438,7 @@ describe('AppRunner', (): void => { it('checks for threading issues when starting in multithreaded mode.', async(): Promise => { const createdApp = await new AppRunner().createCli(); expect(createdApp).toBe(app); - expect(listSingleThreadedComponentsMock).toHaveBeenCalled(); + expect(listSingleThreadedComponentsMock).toHaveBeenCalledWith(); }); it('throws an error if there are threading issues detected.', async(): Promise => { diff --git a/test/unit/init/SeededAccountInitializer.test.ts b/test/unit/init/SeededAccountInitializer.test.ts index 3c9f4ec62..3ad9396b0 100644 --- a/test/unit/init/SeededAccountInitializer.test.ts +++ b/test/unit/init/SeededAccountInitializer.test.ts @@ -1,7 +1,7 @@ import { writeJson } from 'fs-extra'; -import { AccountStore } from '../../../src/identity/interaction/account/util/AccountStore'; -import { PasswordStore } from '../../../src/identity/interaction/password/util/PasswordStore'; -import { PodCreator } from '../../../src/identity/interaction/pod/util/PodCreator'; +import type { AccountStore } from '../../../src/identity/interaction/account/util/AccountStore'; +import type { PasswordStore } from '../../../src/identity/interaction/password/util/PasswordStore'; +import type { PodCreator } from '../../../src/identity/interaction/pod/util/PodCreator'; import { SeededAccountInitializer } from '../../../src/init/SeededAccountInitializer'; import { mockFileSystem } from '../../util/Util'; diff --git a/test/unit/init/cli/YargsCliExtractor.test.ts b/test/unit/init/cli/YargsCliExtractor.test.ts index 93a8ef791..45d1ad18f 100644 --- a/test/unit/init/cli/YargsCliExtractor.test.ts +++ b/test/unit/init/cli/YargsCliExtractor.test.ts @@ -1,4 +1,4 @@ -import { YargsParameter, YargsCliExtractor } from '../../../../src/init/cli/YargsCliExtractor'; +import { YargsCliExtractor, YargsParameter } from '../../../../src/init/cli/YargsCliExtractor'; const error = jest.spyOn(console, 'error').mockImplementation(jest.fn()); const log = jest.spyOn(console, 'log').mockImplementation(jest.fn()); @@ -76,7 +76,6 @@ describe('A YargsCliExtractor', (): void => { // This can probably be fixed by changing jest setup to already load the custom env before loading the tests, // but does not seem worth it just for this test. const { env } = process; - // eslint-disable-next-line @typescript-eslint/naming-convention process.env = { ...env, TEST_ENV_PORT: '3333' }; extractor = new YargsCliExtractor(parameters, { loadFromEnv: true, envVarPrefix: 'TEST_ENV' }); const argv = [ 'node', 'script', '-b', 'http://localhost:3333/' ]; diff --git a/test/unit/init/cluster/SingleThreaded.test.ts b/test/unit/init/cluster/SingleThreaded.test.ts index eca189121..fd7a9f4ae 100644 --- a/test/unit/init/cluster/SingleThreaded.test.ts +++ b/test/unit/init/cluster/SingleThreaded.test.ts @@ -22,7 +22,6 @@ function mockComponentsManagerFn(length: number): jest.Mocked ({ - // eslint-disable-next-line @typescript-eslint/naming-convention ContextParser: jest.fn().mockImplementation((): any => ({ parse: jest.fn(async(): Promise => ({ expandTerm: jest.fn((): any => myExpandTerm()), @@ -31,11 +30,9 @@ jest.mock('jsonld-context-parser/lib/ContextParser', (): any => ({ })); jest.mock('componentsjs', (): any => ({ - // eslint-disable-next-line @typescript-eslint/naming-convention ComponentsManager: { build: jest.fn(async(props: any): Promise> => mockComponentsManagerFn(props.length)), }, - // eslint-disable-next-line @typescript-eslint/naming-convention PrefetchedDocumentLoader: jest.fn().mockImplementation((): any => ({ load: jest.fn(), })), diff --git a/test/unit/init/cluster/WorkerManager.test.ts b/test/unit/init/cluster/WorkerManager.test.ts index cc159aea3..07285e223 100644 --- a/test/unit/init/cluster/WorkerManager.test.ts +++ b/test/unit/init/cluster/WorkerManager.test.ts @@ -10,6 +10,6 @@ describe('A WorkerManager', (): void => { const wm = new WorkerManager(cm); Object.assign(cm, { spawnWorkers: jest.fn() }); await wm.handle(); - expect(cm.spawnWorkers).toHaveBeenCalled(); + expect(cm.spawnWorkers).toHaveBeenCalledWith(); }); }); diff --git a/test/unit/init/migration/SingleContainerJsonStorage.test.ts b/test/unit/init/migration/SingleContainerJsonStorage.test.ts index c7d999516..9e9c18ccb 100644 --- a/test/unit/init/migration/SingleContainerJsonStorage.test.ts +++ b/test/unit/init/migration/SingleContainerJsonStorage.test.ts @@ -2,7 +2,7 @@ import { BasicRepresentation } from '../../../../src/http/representation/BasicRe import type { Representation } from '../../../../src/http/representation/Representation'; import { RepresentationMetadata } from '../../../../src/http/representation/RepresentationMetadata'; import { SingleContainerJsonStorage } from '../../../../src/init/migration/SingleContainerJsonStorage'; -import { ResourceStore } from '../../../../src/storage/ResourceStore'; +import type { ResourceStore } from '../../../../src/storage/ResourceStore'; import { NotFoundHttpError } from '../../../../src/util/errors/NotFoundHttpError'; import { isContainerIdentifier } from '../../../../src/util/PathUtil'; import { LDP } from '../../../../src/util/Vocabularies'; diff --git a/test/unit/init/migration/V6MigrationInitializer.test.ts b/test/unit/init/migration/V6MigrationInitializer.test.ts index 3dee5768c..01ef6eb17 100644 --- a/test/unit/init/migration/V6MigrationInitializer.test.ts +++ b/test/unit/init/migration/V6MigrationInitializer.test.ts @@ -1,4 +1,5 @@ -import { ACCOUNT_TYPE, AccountLoginStorage } from '../../../../src/identity/interaction/account/util/LoginStorage'; +import type { AccountLoginStorage } from '../../../../src/identity/interaction/account/util/LoginStorage'; +import { ACCOUNT_TYPE } from '../../../../src/identity/interaction/account/util/LoginStorage'; import { CLIENT_CREDENTIALS_STORAGE_TYPE, } from '../../../../src/identity/interaction/client-credentials/util/BaseClientCredentialsStore'; @@ -6,7 +7,7 @@ import { PASSWORD_STORAGE_TYPE } from '../../../../src/identity/interaction/pass import { OWNER_STORAGE_TYPE, POD_STORAGE_TYPE } from '../../../../src/identity/interaction/pod/util/BasePodStore'; import { WEBID_STORAGE_TYPE } from '../../../../src/identity/interaction/webid/util/BaseWebIdStore'; import { V6MigrationInitializer } from '../../../../src/init/migration/V6MigrationInitializer'; -import { KeyValueStorage } from '../../../../src/storage/keyvalue/KeyValueStorage'; +import type { KeyValueStorage } from '../../../../src/storage/keyvalue/KeyValueStorage'; type Account = { webId: string; diff --git a/test/unit/logging/LogUtil.test.ts b/test/unit/logging/LogUtil.test.ts index a8e960d6e..bb9418bec 100644 --- a/test/unit/logging/LogUtil.test.ts +++ b/test/unit/logging/LogUtil.test.ts @@ -1,4 +1,4 @@ -import { resetInternalLoggerFactory, getLoggerFor, setGlobalLoggerFactory } from '../../../src/logging/LogUtil'; +import { getLoggerFor, resetInternalLoggerFactory, setGlobalLoggerFactory } from '../../../src/logging/LogUtil'; let currentFactory: any; diff --git a/test/unit/logging/Logger.test.ts b/test/unit/logging/Logger.test.ts index 888ad4c38..188c5286e 100644 --- a/test/unit/logging/Logger.test.ts +++ b/test/unit/logging/Logger.test.ts @@ -1,6 +1,6 @@ import process from 'process'; import { BaseLogger, WrappingLogger } from '../../../src/logging/Logger'; -import type { SimpleLogger, LogMetadata } from '../../../src/logging/Logger'; +import type { LogMetadata, SimpleLogger } from '../../../src/logging/Logger'; describe('Logger', (): void => { describe('a BaseLogger', (): void => { diff --git a/test/unit/logging/VoidLogger.test.ts b/test/unit/logging/VoidLogger.test.ts index b1058b5eb..aaf7a1b64 100644 --- a/test/unit/logging/VoidLogger.test.ts +++ b/test/unit/logging/VoidLogger.test.ts @@ -7,6 +7,6 @@ describe('VoidLogger', (): void => { }); it('does nothing when log is invoked.', async(): Promise => { - expect(logger.log('debug', 'my message', { abc: true })).toBe(logger); + expect(logger.log()).toBe(logger); }); }); diff --git a/test/unit/pods/generate/BaseComponentsJsFactory.test.ts b/test/unit/pods/generate/BaseComponentsJsFactory.test.ts index cf48013a9..b5867d70d 100644 --- a/test/unit/pods/generate/BaseComponentsJsFactory.test.ts +++ b/test/unit/pods/generate/BaseComponentsJsFactory.test.ts @@ -9,7 +9,6 @@ const manager: jest.Mocked> = { } as any; jest.mock('componentsjs', (): any => ({ - // eslint-disable-next-line @typescript-eslint/naming-convention ComponentsManager: { build: jest.fn(async(): Promise> => manager), }, diff --git a/test/unit/pods/generate/SubfolderResourcesGenerator.test.ts b/test/unit/pods/generate/SubfolderResourcesGenerator.test.ts index 3513f5a95..bada88655 100644 --- a/test/unit/pods/generate/SubfolderResourcesGenerator.test.ts +++ b/test/unit/pods/generate/SubfolderResourcesGenerator.test.ts @@ -29,7 +29,7 @@ describe('A SubfolderResourcesGenerator', (): void => { extraResources = []; source = { - // eslint-disable-next-line @typescript-eslint/no-unused-vars + // eslint-disable-next-line unused-imports/no-unused-vars generate: jest.fn((folder, loc, opt): AsyncIterable => { if (folder.endsWith('base')) { return yieldResources(baseResources); diff --git a/test/unit/server/HandlerServerConfigurator.test.ts b/test/unit/server/HandlerServerConfigurator.test.ts index 99ce20f2a..8a271f997 100644 --- a/test/unit/server/HandlerServerConfigurator.test.ts +++ b/test/unit/server/HandlerServerConfigurator.test.ts @@ -1,5 +1,5 @@ import { EventEmitter } from 'events'; -import type { ServerResponse, IncomingMessage, Server } from 'http'; +import type { IncomingMessage, Server, ServerResponse } from 'http'; import { Readable } from 'stream'; import type { Logger } from '../../../src/logging/Logger'; import { getLoggerFor } from '../../../src/logging/LogUtil'; diff --git a/test/unit/server/WebSocketServerConfigurator.test.ts b/test/unit/server/WebSocketServerConfigurator.test.ts index 35dd26943..78c5ac608 100644 --- a/test/unit/server/WebSocketServerConfigurator.test.ts +++ b/test/unit/server/WebSocketServerConfigurator.test.ts @@ -9,7 +9,6 @@ import { WebSocketServerConfigurator } from '../../../src/server/WebSocketServer import { flushPromises } from '../../util/Util'; jest.mock('ws', (): any => ({ - // eslint-disable-next-line @typescript-eslint/naming-convention WebSocketServer: jest.fn().mockImplementation((): any => ({ handleUpgrade(upgradeRequest: any, socket: any, head: any, callback: any): void { callback(socket, upgradeRequest); diff --git a/test/unit/server/notifications/KeyValueChannelStorage.test.ts b/test/unit/server/notifications/KeyValueChannelStorage.test.ts index 9e64492a4..61468f7c5 100644 --- a/test/unit/server/notifications/KeyValueChannelStorage.test.ts +++ b/test/unit/server/notifications/KeyValueChannelStorage.test.ts @@ -37,7 +37,7 @@ describe('A KeyValueChannelStorage', (): void => { internalStorage = internalMap as any; locker = { - withWriteLock: jest.fn(async (rid: ResourceIdentifier, whileLocked: () => T | Promise): + withWriteLock: jest.fn(async (rid: ResourceIdentifier, whileLocked: () => T | Promise): Promise => whileLocked()), withReadLock: jest.fn(), }; diff --git a/test/unit/server/notifications/ListeningActivityHandler.test.ts b/test/unit/server/notifications/ListeningActivityHandler.test.ts index e8890e73a..ac55330ef 100644 --- a/test/unit/server/notifications/ListeningActivityHandler.test.ts +++ b/test/unit/server/notifications/ListeningActivityHandler.test.ts @@ -27,7 +27,6 @@ describe('A ListeningActivityHandler', (): void => { let storage: jest.Mocked; let emitter: ActivityEmitter; let notificationHandler: jest.Mocked; - let handler: ListeningActivityHandler; beforeEach(async(): Promise => { jest.clearAllMocks(); @@ -49,8 +48,8 @@ describe('A ListeningActivityHandler', (): void => { handleSafe: jest.fn().mockResolvedValue(undefined), } as any; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - handler = new ListeningActivityHandler(storage, emitter, notificationHandler); + // eslint-disable-next-line no-new + new ListeningActivityHandler(storage, emitter, notificationHandler); }); it('calls the NotificationHandler if there is an event.', async(): Promise => { diff --git a/test/unit/server/notifications/NotificationDescriber.test.ts b/test/unit/server/notifications/NotificationDescriber.test.ts index 441fa3066..526a1f639 100644 --- a/test/unit/server/notifications/NotificationDescriber.test.ts +++ b/test/unit/server/notifications/NotificationDescriber.test.ts @@ -12,6 +12,7 @@ import type { import { INTERNAL_QUADS } from '../../../../src/util/ContentTypes'; import { readableToString } from '../../../../src/util/StreamUtil'; import { NOTIFY } from '../../../../src/util/Vocabularies'; + const { namedNode, quad } = DataFactory; describe('A NotificationDescriber', (): void => { diff --git a/test/unit/server/notifications/WebHookChannel2023/WebhookWebId.test.ts b/test/unit/server/notifications/WebHookChannel2023/WebhookWebId.test.ts index 5ff178a41..13de783fc 100644 --- a/test/unit/server/notifications/WebHookChannel2023/WebhookWebId.test.ts +++ b/test/unit/server/notifications/WebHookChannel2023/WebhookWebId.test.ts @@ -6,6 +6,7 @@ import type { HttpResponse } from '../../../../../src/server/HttpResponse'; import { WebhookWebId } from '../../../../../src/server/notifications/WebhookChannel2023/WebhookWebId'; import { readableToString } from '../../../../../src/util/StreamUtil'; import { SOLID } from '../../../../../src/util/Vocabularies'; + const { namedNode, quad } = DataFactory; describe('A WebhookWebId', (): void => { diff --git a/test/unit/server/notifications/WebSocketChannel2023/WebSocket2023Listener.test.ts b/test/unit/server/notifications/WebSocketChannel2023/WebSocket2023Listener.test.ts index 06a87fc5a..60bee6767 100644 --- a/test/unit/server/notifications/WebSocketChannel2023/WebSocket2023Listener.test.ts +++ b/test/unit/server/notifications/WebSocketChannel2023/WebSocket2023Listener.test.ts @@ -15,7 +15,6 @@ import { import { NotImplementedHttpError } from '../../../../../src/util/errors/NotImplementedHttpError'; jest.mock('ws', (): any => ({ - // eslint-disable-next-line @typescript-eslint/naming-convention WebSocketServer: jest.fn().mockImplementation((): any => ({ handleUpgrade(upgradeRequest: any, socket: any, head: any, callback: any): void { callback(socket, upgradeRequest); diff --git a/test/unit/server/notifications/WebSocketChannel2023/WebSocketChannel2023Type.test.ts b/test/unit/server/notifications/WebSocketChannel2023/WebSocketChannel2023Type.test.ts index 1e75053ef..00ad47ff6 100644 --- a/test/unit/server/notifications/WebSocketChannel2023/WebSocketChannel2023Type.test.ts +++ b/test/unit/server/notifications/WebSocketChannel2023/WebSocketChannel2023Type.test.ts @@ -3,7 +3,6 @@ import { AbsolutePathInteractionRoute, } from '../../../../../src/identity/interaction/routing/AbsolutePathInteractionRoute'; import type { NotificationChannel } from '../../../../../src/server/notifications/NotificationChannel'; - import { generateWebSocketUrl, } from '../../../../../src/server/notifications/WebSocketChannel2023/WebSocket2023Util'; diff --git a/test/unit/server/util/RouterHandler.test.ts b/test/unit/server/util/RouterHandler.test.ts index ed9e6a3fb..63598e6fa 100644 --- a/test/unit/server/util/RouterHandler.test.ts +++ b/test/unit/server/util/RouterHandler.test.ts @@ -1,8 +1,8 @@ -import type { HttpRequest, +import type { HttpHandler, + HttpRequest, HttpResponse, - TargetExtractor, ResourceIdentifier, - HttpHandler } from '../../../../src'; + TargetExtractor } from '../../../../src'; import { joinUrl } from '../../../../src'; import { RouterHandler } from '../../../../src/server/util/RouterHandler'; diff --git a/test/unit/storage/BinarySliceResourceStore.test.ts b/test/unit/storage/BinarySliceResourceStore.test.ts index 9d2315103..ed6d6eed9 100644 --- a/test/unit/storage/BinarySliceResourceStore.test.ts +++ b/test/unit/storage/BinarySliceResourceStore.test.ts @@ -1,7 +1,7 @@ import { BasicRepresentation } from '../../../src/http/representation/BasicRepresentation'; import type { Representation } from '../../../src/http/representation/Representation'; import { BinarySliceResourceStore } from '../../../src/storage/BinarySliceResourceStore'; -import { ResourceStore } from '../../../src/storage/ResourceStore'; +import type { ResourceStore } from '../../../src/storage/ResourceStore'; import { InternalServerError } from '../../../src/util/errors/InternalServerError'; import { RangeNotSatisfiedHttpError } from '../../../src/util/errors/RangeNotSatisfiedHttpError'; import { readableToString } from '../../../src/util/StreamUtil'; diff --git a/test/unit/storage/DataAccessorBasedStore.test.ts b/test/unit/storage/DataAccessorBasedStore.test.ts index c9dbcae4a..a0be4929e 100644 --- a/test/unit/storage/DataAccessorBasedStore.test.ts +++ b/test/unit/storage/DataAccessorBasedStore.test.ts @@ -24,7 +24,7 @@ import { ContentType } from '../../../src/util/Header'; import { SingleRootIdentifierStrategy } from '../../../src/util/identifiers/SingleRootIdentifierStrategy'; import { trimTrailingSlashes } from '../../../src/util/PathUtil'; import { guardedStreamFrom } from '../../../src/util/StreamUtil'; -import { CONTENT_TYPE, SOLID_HTTP, LDP, PIM, RDF, SOLID_META, DC, SOLID_AS, AS } from '../../../src/util/Vocabularies'; +import { AS, CONTENT_TYPE, DC, LDP, PIM, RDF, SOLID_AS, SOLID_HTTP, SOLID_META } from '../../../src/util/Vocabularies'; import { SimpleSuffixStrategy } from '../../util/SimpleSuffixStrategy'; const { namedNode, quad, literal } = DataFactory; @@ -107,7 +107,7 @@ describe('A DataAccessorBasedStore', (): void => { const metadataStrategy = new SimpleSuffixStrategy('.meta'); beforeEach(async(): Promise => { - mockDate = jest.spyOn(global, 'Date').mockReturnValue(now as any); + mockDate = jest.spyOn(globalThis, 'Date').mockReturnValue(now as any); accessor = new SimpleDataAccessor(); @@ -879,4 +879,3 @@ describe('A DataAccessorBasedStore', (): void => { }); }); }); - diff --git a/test/unit/storage/accessors/FileDataAccessor.test.ts b/test/unit/storage/accessors/FileDataAccessor.test.ts index 3efaab91f..452d6e2fd 100644 --- a/test/unit/storage/accessors/FileDataAccessor.test.ts +++ b/test/unit/storage/accessors/FileDataAccessor.test.ts @@ -16,6 +16,7 @@ import { guardedStreamFrom, readableToString } from '../../../../src/util/Stream import { toLiteral } from '../../../../src/util/TermUtil'; import { CONTENT_TYPE, DC, LDP, POSIX, RDF, SOLID_META, XSD } from '../../../../src/util/Vocabularies'; import { mockFileSystem } from '../../../util/Util'; + const { namedNode, quad } = DataFactory; jest.mock('fs'); @@ -221,7 +222,7 @@ describe('A FileDataAccessor', (): void => { } return result; }), - mapUrlToFilePath: jest.fn((...args): Promise => mapper.mapUrlToFilePath(...args)), + mapUrlToFilePath: jest.fn(async(...args): Promise => mapper.mapUrlToFilePath(...args)), }; accessor = new FileDataAccessor(badMapper); diff --git a/test/unit/storage/accessors/InMemoryDataAccessor.test.ts b/test/unit/storage/accessors/InMemoryDataAccessor.test.ts index f9e007850..0eaca9ef7 100644 --- a/test/unit/storage/accessors/InMemoryDataAccessor.test.ts +++ b/test/unit/storage/accessors/InMemoryDataAccessor.test.ts @@ -10,6 +10,7 @@ import type { Guarded } from '../../../../src/util/GuardedStream'; import { BaseIdentifierStrategy } from '../../../../src/util/identifiers/BaseIdentifierStrategy'; import { guardedStreamFrom, readableToString } from '../../../../src/util/StreamUtil'; import { CONTENT_TYPE, LDP, POSIX, RDF } from '../../../../src/util/Vocabularies'; + const { namedNode } = DataFactory; class DummyStrategy extends BaseIdentifierStrategy { diff --git a/test/unit/storage/conversion/ContainerToTemplateConverter.test.ts b/test/unit/storage/conversion/ContainerToTemplateConverter.test.ts index dfc33ddd8..bfc307ed6 100644 --- a/test/unit/storage/conversion/ContainerToTemplateConverter.test.ts +++ b/test/unit/storage/conversion/ContainerToTemplateConverter.test.ts @@ -5,6 +5,7 @@ import { SingleRootIdentifierStrategy } from '../../../../src/util/identifiers/S import { readableToString } from '../../../../src/util/StreamUtil'; import type { TemplateEngine } from '../../../../src/util/templates/TemplateEngine'; import { LDP, RDF } from '../../../../src/util/Vocabularies'; + const { namedNode: nn, quad } = DataFactory; describe('A ContainerToTemplateConverter', (): void => { diff --git a/test/unit/storage/conversion/ErrorToJsonConverter.test.ts b/test/unit/storage/conversion/ErrorToJsonConverter.test.ts index 01223e058..96c529a4e 100644 --- a/test/unit/storage/conversion/ErrorToJsonConverter.test.ts +++ b/test/unit/storage/conversion/ErrorToJsonConverter.test.ts @@ -55,7 +55,6 @@ describe('An ErrorToJsonConverter', (): void => { it('adds OAuth fields if present.', async(): Promise => { const out: OAuthErrorFields = { error: 'error', - // eslint-disable-next-line @typescript-eslint/naming-convention error_description: 'error_description', scope: 'scope', state: 'state', @@ -74,7 +73,6 @@ describe('An ErrorToJsonConverter', (): void => { errorCode: 'H400', stack: error.stack, error: 'error', - // eslint-disable-next-line @typescript-eslint/naming-convention error_description: 'error_description', scope: 'scope', state: 'state', diff --git a/test/unit/storage/conversion/ErrorToQuadConverter.test.ts b/test/unit/storage/conversion/ErrorToQuadConverter.test.ts index 68736d7e8..43bde8f82 100644 --- a/test/unit/storage/conversion/ErrorToQuadConverter.test.ts +++ b/test/unit/storage/conversion/ErrorToQuadConverter.test.ts @@ -5,6 +5,7 @@ import { BasicRepresentation } from '../../../../src/http/representation/BasicRe import { ErrorToQuadConverter } from '../../../../src/storage/conversion/ErrorToQuadConverter'; import { BadRequestHttpError } from '../../../../src/util/errors/BadRequestHttpError'; import { DC, SOLID_ERROR } from '../../../../src/util/Vocabularies'; + const { literal, namedNode, quad } = DataFactory; describe('An ErrorToQuadConverter', (): void => { diff --git a/test/unit/storage/conversion/QuadToRdfConverter.test.ts b/test/unit/storage/conversion/QuadToRdfConverter.test.ts index 44ca8a0b1..43c37c8f1 100644 --- a/test/unit/storage/conversion/QuadToRdfConverter.test.ts +++ b/test/unit/storage/conversion/QuadToRdfConverter.test.ts @@ -9,8 +9,8 @@ import { QuadToRdfConverter } from '../../../../src/storage/conversion/QuadToRdf import { INTERNAL_QUADS } from '../../../../src/util/ContentTypes'; import { readableToString } from '../../../../src/util/StreamUtil'; import { DC, PREFERRED_PREFIX_TERM, SOLID_META } from '../../../../src/util/Vocabularies'; -import quad = DataFactory.quad; -const { namedNode, triple } = DataFactory; + +const { namedNode, triple, quad } = DataFactory; describe('A QuadToRdfConverter', (): void => { const converter = new QuadToRdfConverter(); diff --git a/test/unit/storage/conversion/RdfToQuadConverter.test.ts b/test/unit/storage/conversion/RdfToQuadConverter.test.ts index 0b1878aa1..7d4561a88 100644 --- a/test/unit/storage/conversion/RdfToQuadConverter.test.ts +++ b/test/unit/storage/conversion/RdfToQuadConverter.test.ts @@ -13,6 +13,7 @@ import type { ResourceIdentifier } from '../../../../src/http/representation/Res import { RdfToQuadConverter } from '../../../../src/storage/conversion/RdfToQuadConverter'; import { INTERNAL_QUADS } from '../../../../src/util/ContentTypes'; import { BadRequestHttpError } from '../../../../src/util/errors/BadRequestHttpError'; + const { namedNode, triple, literal, quad } = DataFactory; // All of this is necessary to not break the cross-fetch imports that happen in `rdf-parse` @@ -21,7 +22,6 @@ jest.mock('cross-fetch', (): any => { // Require the original module to not be mocked... const originalFetch = jest.requireActual('cross-fetch'); return { - // eslint-disable-next-line @typescript-eslint/naming-convention __esModule: true, ...originalFetch, fetch: mock, diff --git a/test/unit/storage/keyvalue/WrappedExpiringStorage.test.ts b/test/unit/storage/keyvalue/WrappedExpiringStorage.test.ts index 9cad6b134..a725451a2 100644 --- a/test/unit/storage/keyvalue/WrappedExpiringStorage.test.ts +++ b/test/unit/storage/keyvalue/WrappedExpiringStorage.test.ts @@ -120,7 +120,7 @@ describe('A WrappedExpiringStorage', (): void => { it('removes expired entries after a given time.', async(): Promise => { // Disable interval function and simply check it was called with the correct parameters // Otherwise it gets quite difficult to verify the async interval function gets executed - const mockInterval = jest.spyOn(global, 'setInterval'); + const mockInterval = jest.spyOn(globalThis, 'setInterval'); // We only need to call the timer.unref() once when the object is created const mockTimer = { unref: jest.fn() }; diff --git a/test/unit/storage/patch/ImmutableMetadataPatcher.test.ts b/test/unit/storage/patch/ImmutableMetadataPatcher.test.ts index c870fe71c..2b97d94cc 100644 --- a/test/unit/storage/patch/ImmutableMetadataPatcher.test.ts +++ b/test/unit/storage/patch/ImmutableMetadataPatcher.test.ts @@ -1,3 +1,4 @@ +import 'jest-rdf'; import { DataFactory, Store } from 'n3'; import { BasicRepresentation } from '../../../../src/http/representation/BasicRepresentation'; import type { Patch } from '../../../../src/http/representation/Patch'; @@ -12,7 +13,7 @@ import { NotImplementedHttpError } from '../../../../src/util/errors/NotImplemen import { FilterPattern } from '../../../../src/util/QuadUtil'; import { guardedStreamFrom } from '../../../../src/util/StreamUtil'; import { SimpleSuffixStrategy } from '../../../util/SimpleSuffixStrategy'; -import 'jest-rdf'; + const { namedNode, quad } = DataFactory; function getPatch(): Patch { diff --git a/test/unit/storage/patch/N3Patcher.test.ts b/test/unit/storage/patch/N3Patcher.test.ts index 4b7d5e14b..6471e20fc 100644 --- a/test/unit/storage/patch/N3Patcher.test.ts +++ b/test/unit/storage/patch/N3Patcher.test.ts @@ -9,6 +9,7 @@ import type { RepresentationPatcherInput } from '../../../../src/storage/patch/R import { ConflictHttpError } from '../../../../src/util/errors/ConflictHttpError'; import { InternalServerError } from '../../../../src/util/errors/InternalServerError'; import { NotImplementedHttpError } from '../../../../src/util/errors/NotImplementedHttpError'; + const { namedNode, quad, variable } = DataFactory; describe('An N3Patcher', (): void => { diff --git a/test/unit/storage/patch/RdfPatcher.test.ts b/test/unit/storage/patch/RdfPatcher.test.ts index efec4de08..4e601d3b3 100644 --- a/test/unit/storage/patch/RdfPatcher.test.ts +++ b/test/unit/storage/patch/RdfPatcher.test.ts @@ -1,3 +1,4 @@ +import 'jest-rdf'; import { DataFactory } from 'n3'; import type { Quad } from 'rdf-js'; import { BasicRepresentation } from '../../../../src/http/representation/BasicRepresentation'; @@ -10,8 +11,8 @@ import type { RepresentationPatcher, RepresentationPatcherInput } from '../../../../src/storage/patch/RepresentationPatcher'; import { InternalServerError } from '../../../../src/util/errors/InternalServerError'; import { readableToQuads } from '../../../../src/util/StreamUtil'; + const { quad, namedNode } = DataFactory; -import 'jest-rdf'; describe('An RdfPatcher,', (): void => { let patcher: jest.Mocked>; diff --git a/test/unit/storage/patch/SparqlUpdatePatcher.test.ts b/test/unit/storage/patch/SparqlUpdatePatcher.test.ts index 7f2f0773c..b16c112a7 100644 --- a/test/unit/storage/patch/SparqlUpdatePatcher.test.ts +++ b/test/unit/storage/patch/SparqlUpdatePatcher.test.ts @@ -1,5 +1,5 @@ import 'jest-rdf'; -import { Store, DataFactory } from 'n3'; +import { DataFactory, Store } from 'n3'; import type { Quad } from 'rdf-js'; import type { Algebra } from 'sparqlalgebrajs'; import { translate } from 'sparqlalgebrajs'; diff --git a/test/unit/util/FetchUtil.test.ts b/test/unit/util/FetchUtil.test.ts index cdca4b261..7f1121e93 100644 --- a/test/unit/util/FetchUtil.test.ts +++ b/test/unit/util/FetchUtil.test.ts @@ -6,6 +6,7 @@ import { DataFactory } from 'n3'; import rdfDereferencer from 'rdf-dereference'; import { RdfToQuadConverter } from '../../../src/storage/conversion/RdfToQuadConverter'; import { fetchDataset, responseToDataset } from '../../../src/util/FetchUtil'; + const { namedNode, quad } = DataFactory; jest.mock('rdf-dereference', (): any => ({ diff --git a/test/unit/util/HeaderUtil.test.ts b/test/unit/util/HeaderUtil.test.ts index a51c794a3..66be573b2 100644 --- a/test/unit/util/HeaderUtil.test.ts +++ b/test/unit/util/HeaderUtil.test.ts @@ -95,7 +95,6 @@ describe('HeaderUtil', (): void => { range: 'a/b', weight: 1, parameters: { extension: {}, mediaType: {}}, }]); expect(parseAccept('a/b; q=1 ; a')).toEqual([{ - // eslint-disable-next-line id-length range: 'a/b', weight: 1, parameters: { extension: { a: '' }, mediaType: {}}, }]); }); diff --git a/test/unit/util/LockUtil.test.ts b/test/unit/util/LockUtil.test.ts index 9cfa14638..bd9f2a8c3 100644 --- a/test/unit/util/LockUtil.test.ts +++ b/test/unit/util/LockUtil.test.ts @@ -16,7 +16,7 @@ describe('LockUtil', (): void => { }); it('works with jitter.', async(): Promise => { - jest.spyOn(global.Math, 'random').mockReturnValue(1); + jest.spyOn(globalThis.Math, 'random').mockReturnValue(1); let elapsed = Date.now(); const promise = setJitterTimeout(1000, 100).then((): void => { elapsed = Date.now() - elapsed; @@ -25,7 +25,7 @@ describe('LockUtil', (): void => { await expect(promise).resolves.toBeUndefined(); expect(elapsed).toBe(1100); // Clean up - jest.spyOn(global.Math, 'random').mockRestore(); + jest.spyOn(globalThis.Math, 'random').mockRestore(); }); }); }); diff --git a/test/unit/util/PromiseUtil.test.ts b/test/unit/util/PromiseUtil.test.ts index 7be8d8474..df2a3ce9f 100644 --- a/test/unit/util/PromiseUtil.test.ts +++ b/test/unit/util/PromiseUtil.test.ts @@ -5,7 +5,6 @@ describe('PromiseUtil', (): void => { const resultTrue = Promise.resolve(true); const resultFalse = Promise.resolve(false); const resultError = Promise.reject(new Error('generic error')); - // eslint-disable-next-line @typescript-eslint/no-empty-function const resultInfinite = new Promise((): void => {}); it('returns false if no promise is provided.', async(): Promise => { diff --git a/test/unit/util/QuadUtil.test.ts b/test/unit/util/QuadUtil.test.ts index 11c3413d5..339fe160d 100644 --- a/test/unit/util/QuadUtil.test.ts +++ b/test/unit/util/QuadUtil.test.ts @@ -2,6 +2,7 @@ import 'jest-rdf'; import { DataFactory } from 'n3'; import { parseQuads, serializeQuads, termToInt, uniqueQuads } from '../../../src/util/QuadUtil'; import { guardedStreamFrom, readableToString } from '../../../src/util/StreamUtil'; + const { literal, namedNode, quad } = DataFactory; describe('QuadUtil', (): void => { diff --git a/test/unit/util/ResourceUtil.test.ts b/test/unit/util/ResourceUtil.test.ts index e9c6235dc..b6bc25c12 100644 --- a/test/unit/util/ResourceUtil.test.ts +++ b/test/unit/util/ResourceUtil.test.ts @@ -1,6 +1,6 @@ import 'jest-rdf'; import type { Readable } from 'stream'; -import type { NamedNode, Literal } from 'n3'; +import type { Literal, NamedNode } from 'n3'; import { BasicRepresentation } from '../../../src/http/representation/BasicRepresentation'; import type { Representation } from '../../../src/http/representation/Representation'; import { RepresentationMetadata } from '../../../src/http/representation/RepresentationMetadata'; diff --git a/test/unit/util/StreamUtil.test.ts b/test/unit/util/StreamUtil.test.ts index 2e72743ca..bf961185e 100644 --- a/test/unit/util/StreamUtil.test.ts +++ b/test/unit/util/StreamUtil.test.ts @@ -1,12 +1,12 @@ import { PassThrough, Readable } from 'stream'; import arrayifyStream from 'arrayify-stream'; -import { Quad, NamedNode, Literal, BlankNode, Store } from 'n3'; +import { BlankNode, Literal, NamedNode, Quad, Store } from 'n3'; import type { Logger } from '../../../src/logging/Logger'; import { getLoggerFor } from '../../../src/logging/LogUtil'; import { isHttpRequest } from '../../../src/server/HttpRequest'; import { - guardedStreamFrom, pipeSafely, transformSafely, - readableToString, readableToQuads, readJsonStream, getSingleItem, + getSingleItem, guardedStreamFrom, pipeSafely, + readableToQuads, readableToString, readJsonStream, transformSafely, } from '../../../src/util/StreamUtil'; import { flushPromises } from '../../util/Util'; diff --git a/test/unit/util/StringUtil.test.ts b/test/unit/util/StringUtil.test.ts index f73109448..29ccd74c0 100644 --- a/test/unit/util/StringUtil.test.ts +++ b/test/unit/util/StringUtil.test.ts @@ -1,9 +1,9 @@ import { + isUrl, + isValidFileName, + msToDuration, sanitizeUrlPart, splitCommaSeparated, - isValidFileName, - isUrl, - msToDuration, } from '../../../src/util/StringUtil'; describe('HeaderUtil', (): void => { diff --git a/test/unit/util/TermUtil.test.ts b/test/unit/util/TermUtil.test.ts index 9fc3ccd8c..3d57402b5 100644 --- a/test/unit/util/TermUtil.test.ts +++ b/test/unit/util/TermUtil.test.ts @@ -1,13 +1,14 @@ import 'jest-rdf'; import { DataFactory } from 'n3'; import { - toNamedTerm, - toPredicateTerm, - toObjectTerm, - toLiteral, isTerm, + toLiteral, + toNamedTerm, + toObjectTerm, + toPredicateTerm, } from '../../../src/util/TermUtil'; import { XSD } from '../../../src/util/Vocabularies'; + const { literal, namedNode } = DataFactory; describe('TermUtil', (): void => { diff --git a/test/unit/util/TimerUtil.test.ts b/test/unit/util/TimerUtil.test.ts index 5f6abb94d..014344037 100644 --- a/test/unit/util/TimerUtil.test.ts +++ b/test/unit/util/TimerUtil.test.ts @@ -7,7 +7,7 @@ jest.useFakeTimers(); describe('TimerUtil', (): void => { describe('#setSafeInterval', (): void => { let logger: jest.Mocked; - let callback: jest.Mock<(...cbArgs: any[]) => void>; + let callback: jest.Mock; beforeEach(async(): Promise => { logger = { error: jest.fn() } as any; diff --git a/test/unit/util/handlers/WaterfallHandler.test.ts b/test/unit/util/handlers/WaterfallHandler.test.ts index 1c137e07b..dbde7d497 100644 --- a/test/unit/util/handlers/WaterfallHandler.test.ts +++ b/test/unit/util/handlers/WaterfallHandler.test.ts @@ -47,6 +47,7 @@ describe('A WaterfallHandler', (): void => { it('throws unknown errors if no Error objects are thrown.', async(): Promise => { handlerFalse.canHandle = async(): Promise => { + // eslint-disable-next-line ts/no-throw-literal throw 'apple'; }; const handler = new WaterfallHandler([ handlerFalse, handlerFalse ]); diff --git a/test/unit/util/locking/BaseReadWriteLocker.test.ts b/test/unit/util/locking/BaseReadWriteLocker.test.ts index 4f3b63ac9..7e2235f3e 100644 --- a/test/unit/util/locking/BaseReadWriteLocker.test.ts +++ b/test/unit/util/locking/BaseReadWriteLocker.test.ts @@ -52,6 +52,7 @@ class SimpleReadWriteLocker extends BaseReadWriteLocker { } } +/* eslint-disable ts/no-floating-promises */ describe('A BaseReadWriteLocker', (): void => { let resourceLocker: ResourceLocker; let countLocker: ResourceLocker; @@ -163,7 +164,6 @@ describe('A BaseReadWriteLocker', (): void => { // Otherwise the internal write lock might not be acquired yet const delayedLockWrite = new Promise((resolve): void => { emitter.on('readStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withWriteLock(resourceId, (): any => { order.push('write'); resolve(); @@ -198,7 +198,6 @@ describe('A BaseReadWriteLocker', (): void => { const delayedLockWrite = new Promise((resolve): void => { emitter.on('readStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withWriteLock(resource2Id, (): any => { order.push('write'); resolve(); @@ -233,7 +232,6 @@ describe('A BaseReadWriteLocker', (): void => { const delayedLockWrite = new Promise((resolve): void => { emitter.on('readStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withWriteLock(resourceId, (): any => { order.push('write'); resolve(); @@ -243,7 +241,6 @@ describe('A BaseReadWriteLocker', (): void => { const delayedLockRead2 = new Promise((resolve): void => { emitter.on('readStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withReadLock(resourceId, async(): Promise => { order.push('read 2 start'); await promRead2; @@ -287,7 +284,6 @@ describe('A BaseReadWriteLocker', (): void => { // We want to make sure the read operation only starts while the write operation is busy const delayedLockRead = new Promise((resolve): void => { emitter.on('writeStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withReadLock(resourceId, (): any => { order.push('read'); resolve(); diff --git a/test/unit/util/locking/FileSystemResourceLocker.test.ts b/test/unit/util/locking/FileSystemResourceLocker.test.ts index a6310969c..2be9ea850 100644 --- a/test/unit/util/locking/FileSystemResourceLocker.test.ts +++ b/test/unit/util/locking/FileSystemResourceLocker.test.ts @@ -1,5 +1,5 @@ import { readdir } from 'fs-extra'; -import { InternalServerError, FileSystemResourceLocker, joinFilePath } from '../../../../src'; +import { FileSystemResourceLocker, InternalServerError, joinFilePath } from '../../../../src'; import { getTestFolder, removeFolder } from '../../../integration/Config'; // Due to the nature of using a file locking library, this is a unit test that writes to disk. diff --git a/test/unit/util/locking/RedisLocker.test.ts b/test/unit/util/locking/RedisLocker.test.ts index 57c85019f..68734d70d 100644 --- a/test/unit/util/locking/RedisLocker.test.ts +++ b/test/unit/util/locking/RedisLocker.test.ts @@ -3,7 +3,7 @@ import type { Redis } from 'ioredis'; import type { ReadWriteLocker, ResourceLocker } from '../../../../src'; import { InternalServerError } from '../../../../src'; import { RedisLocker } from '../../../../src/util/locking/RedisLocker'; -import type { RedisResourceLock, RedisReadWriteLock } from '../../../../src/util/locking/scripts/RedisLuaScripts'; +import type { RedisReadWriteLock, RedisResourceLock } from '../../../../src/util/locking/scripts/RedisLuaScripts'; import { flushPromises } from '../../../util/Util'; interface LockState { @@ -99,6 +99,7 @@ const redis: jest.Mocked = { jest.mock('ioredis', (): any => jest.fn().mockImplementation((): Redis => redis)); +/* eslint-disable ts/no-floating-promises */ describe('A RedisLocker', (): void => { it('will generate keys with the given namespacePrefix.', async(): Promise => { const identifier = { path: 'http://test.com/resource' }; @@ -243,7 +244,6 @@ describe('A RedisLocker', (): void => { // Otherwise the internal write lock might not be acquired yet const delayedLockWrite = new Promise((resolve): void => { emitter.on('readStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withWriteLock(resource1, (): any => { order.push('write'); resolve(); @@ -278,7 +278,6 @@ describe('A RedisLocker', (): void => { const delayedLockWrite = new Promise((resolve): void => { emitter.on('readStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withWriteLock(resource2, (): any => { order.push('write'); resolve(); @@ -313,7 +312,6 @@ describe('A RedisLocker', (): void => { const delayedLockWrite = new Promise((resolve): void => { emitter.on('readStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withWriteLock(resource1, (): any => { order.push('write'); resolve(); @@ -323,7 +321,6 @@ describe('A RedisLocker', (): void => { const delayedLockRead2 = new Promise((resolve): void => { emitter.on('readStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withReadLock(resource1, async(): Promise => { order.push('read 2 start'); await promRead2; @@ -367,7 +364,6 @@ describe('A RedisLocker', (): void => { // We want to make sure the read operation only starts while the write operation is busy const delayedLockRead = new Promise((resolve): void => { emitter.on('writeStarted', (): void => { - // eslint-disable-next-line @typescript-eslint/no-floating-promises locker.withReadLock(resource1, (): any => { order.push('read'); resolve(); diff --git a/test/unit/util/templates/StaticTemplateEngine.test.ts b/test/unit/util/templates/StaticTemplateEngine.test.ts index 56d273563..493cbdee3 100644 --- a/test/unit/util/templates/StaticTemplateEngine.test.ts +++ b/test/unit/util/templates/StaticTemplateEngine.test.ts @@ -1,4 +1,4 @@ -import { StaticTemplateEngine, NotFoundHttpError } from '../../../../src'; +import { NotFoundHttpError, StaticTemplateEngine } from '../../../../src'; import type { AsyncHandler, TemplateEngineInput } from '../../../../src'; import Dict = NodeJS.Dict; diff --git a/test/util/AcpHelper.ts b/test/util/AcpHelper.ts index 23689aea4..4752148c1 100644 --- a/test/util/AcpHelper.ts +++ b/test/util/AcpHelper.ts @@ -70,17 +70,17 @@ export class AcpHelper { accessControlResource: { iri: joinUrl(baseUrl, v4()), accessControl: policies ? - [{ - iri: joinUrl(baseUrl, v4()), - policy: [ ...policies ], - }] : - [], + [{ + iri: joinUrl(baseUrl, v4()), + policy: [ ...policies ], + }] : + [], memberAccessControl: memberPolicies ? - [{ - iri: joinUrl(baseUrl, v4()), - policy: [ ...memberPolicies ], - }] : - [], + [{ + iri: joinUrl(baseUrl, v4()), + policy: [ ...memberPolicies ], + }] : + [], }, }; } diff --git a/test/util/SetupTests.ts b/test/util/SetupTests.ts index 3e6b48978..520b3309a 100644 --- a/test/util/SetupTests.ts +++ b/test/util/SetupTests.ts @@ -12,7 +12,7 @@ export default async function(): Promise { // Also set the logger factory of transpiled JS modules // (which are instantiated by Components.js) try { - // eslint-disable-next-line global-require,@typescript-eslint/no-var-requires,@typescript-eslint/no-require-imports + // eslint-disable-next-line ts/no-var-requires,ts/no-require-imports const dist = require('../../dist/logging/LogUtil'); dist.setGlobalLoggerFactory(loggerFactory); } catch { diff --git a/test/util/Util.ts b/test/util/Util.ts index 1417b7063..c1bfafe0a 100644 --- a/test/util/Util.ts +++ b/test/util/Util.ts @@ -38,12 +38,10 @@ const portNames = [ 'BaseServerFactory', ] as const; -/* eslint-disable @typescript-eslint/naming-convention */ // These are ports that are not allowed to change for various reasons const fixedPorts = { V6Migration: 6999, } as const; -/* eslint-enable @typescript-eslint/naming-convention */ const socketNames = [ // Unit diff --git a/tsconfig.json b/tsconfig.json index 10e8d21e6..7545cfcbc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,16 +1,16 @@ { "extends": "@tsconfig/node18/tsconfig.json", "compilerOptions": { - "lib": [ "es2021" ], - "declaration": true, "incremental": true, + "lib": [ "es2021" ], + "moduleResolution": "node16", + "declaration": true, "inlineSources": true, "newLine": "lf", "outDir": "dist", "preserveConstEnums": true, "sourceMap": true, - "stripInternal": true, - "moduleResolution": "node16" + "stripInternal": true }, "include": [ "src" diff --git a/tsdoc.json b/tsdoc.json deleted file mode 100644 index d7ca66faa..000000000 --- a/tsdoc.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", - "tagDefinitions": [ - { - "tagName": "@ignored", - "syntaxKind": "modifier" - } - ] -}