From 2fabb23908a6e41da73fb85b33d850bd6d87ca36 Mon Sep 17 00:00:00 2001 From: Steve 'Cutter' Blades Date: Thu, 28 Mar 2024 09:13:25 -0400 Subject: [PATCH 01/14] ci: Setup base repo infrastructure --- .browserslistrc | 7 + .eslintrc.cjs | 101 + .gitattributes | 2 + .github/FUNDING.yml | 1 + .github/ISSUE_TEMPLATE/bug_report.yml | 71 + .github/ISSUE_TEMPLATE/config.yml | 11 + .github/workflows/ci.yml | 58 + .github/workflows/pr.yml | 47 + .gitignore | 41 + .npmrc | 1 + .nvmrc | 1 + .nx/workflows/dynamic-changesets.yaml | 4 + .prettierignore | 9 + .prettierrc | 5 + CONTRIBUTING.md | 22 + LICENSE | 21 + docs/config.json | 108 + docs/framework/angular/quick-start.md | 73 + .../angular/reference/injectStore.md | 6 + docs/framework/react/quick-start.md | 59 + docs/framework/react/reference/useStore.md | 28 + docs/framework/solid/quick-start.md | 59 + docs/framework/solid/reference/useStore.md | 6 + docs/framework/vue/quick-start.md | 72 + docs/framework/vue/reference/useStore.md | 6 + docs/installation.md | 38 + docs/overview.md | 8 + docs/reference/Time.md | 9 + knip.json | 11 + media/repo-header.png | Bin 0 -> 379293 bytes nx.json | 69 + package.json | 77 + packages/angular-time/.eslintrc.cjs | 6 + packages/angular-time/package.json | 73 + packages/angular-time/src/index.ts | 3 + packages/angular-time/tsconfig.json | 11 + packages/angular-time/tsconfig.legacy.json | 12 + packages/angular-time/vite.config.ts | 24 + packages/react-time/.eslintrc.cjs | 13 + packages/react-time/package.json | 72 + packages/react-time/src/index.ts | 3 + packages/react-time/test-setup.ts | 6 + packages/react-time/tsconfig.json | 17 + packages/react-time/tsconfig.legacy.json | 12 + packages/react-time/vite.config.ts | 25 + packages/solid-time/.eslintrc.cjs | 6 + packages/solid-time/package.json | 70 + packages/solid-time/src/index.ts | 3 + packages/solid-time/test-setup.ts | 6 + packages/solid-time/tsconfig.json | 18 + packages/solid-time/tsconfig.legacy.json | 13 + packages/solid-time/vite.config.ts | 25 + packages/time/.eslintrc.cjs | 6 + packages/time/package.json | 59 + packages/time/src/index.ts | 3 + packages/time/tsconfig.json | 7 + packages/time/tsconfig.legacy.json | 8 + packages/time/vite.config.ts | 22 + packages/vue-time/.eslintrc.cjs | 6 + packages/vue-time/package.json | 79 + packages/vue-time/src/index.ts | 3 + packages/vue-time/test-setup.ts | 6 + packages/vue-time/tsconfig.json | 19 + packages/vue-time/tsconfig.legacy.json | 14 + packages/vue-time/vite.config.ts | 29 + pnpm-lock.yaml | 11797 ++++++++++++++++ pnpm-workspace.yaml | 2 + scripts/config.js | 57 + scripts/publish.js | 15 + scripts/tsconfig.json | 7 + scripts/types.d.ts | 9 + tsconfig.json | 26 + 72 files changed, 13623 insertions(+) create mode 100644 .browserslistrc create mode 100644 .eslintrc.cjs create mode 100644 .gitattributes create mode 100644 .github/FUNDING.yml create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/pr.yml create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .nvmrc create mode 100644 .nx/workflows/dynamic-changesets.yaml create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 docs/config.json create mode 100644 docs/framework/angular/quick-start.md create mode 100644 docs/framework/angular/reference/injectStore.md create mode 100644 docs/framework/react/quick-start.md create mode 100644 docs/framework/react/reference/useStore.md create mode 100644 docs/framework/solid/quick-start.md create mode 100644 docs/framework/solid/reference/useStore.md create mode 100644 docs/framework/vue/quick-start.md create mode 100644 docs/framework/vue/reference/useStore.md create mode 100644 docs/installation.md create mode 100644 docs/overview.md create mode 100644 docs/reference/Time.md create mode 100644 knip.json create mode 100644 media/repo-header.png create mode 100644 nx.json create mode 100644 package.json create mode 100644 packages/angular-time/.eslintrc.cjs create mode 100644 packages/angular-time/package.json create mode 100644 packages/angular-time/src/index.ts create mode 100644 packages/angular-time/tsconfig.json create mode 100644 packages/angular-time/tsconfig.legacy.json create mode 100644 packages/angular-time/vite.config.ts create mode 100644 packages/react-time/.eslintrc.cjs create mode 100644 packages/react-time/package.json create mode 100644 packages/react-time/src/index.ts create mode 100644 packages/react-time/test-setup.ts create mode 100644 packages/react-time/tsconfig.json create mode 100644 packages/react-time/tsconfig.legacy.json create mode 100644 packages/react-time/vite.config.ts create mode 100644 packages/solid-time/.eslintrc.cjs create mode 100644 packages/solid-time/package.json create mode 100644 packages/solid-time/src/index.ts create mode 100644 packages/solid-time/test-setup.ts create mode 100644 packages/solid-time/tsconfig.json create mode 100644 packages/solid-time/tsconfig.legacy.json create mode 100644 packages/solid-time/vite.config.ts create mode 100644 packages/time/.eslintrc.cjs create mode 100644 packages/time/package.json create mode 100644 packages/time/src/index.ts create mode 100644 packages/time/tsconfig.json create mode 100644 packages/time/tsconfig.legacy.json create mode 100644 packages/time/vite.config.ts create mode 100644 packages/vue-time/.eslintrc.cjs create mode 100644 packages/vue-time/package.json create mode 100644 packages/vue-time/src/index.ts create mode 100644 packages/vue-time/test-setup.ts create mode 100644 packages/vue-time/tsconfig.json create mode 100644 packages/vue-time/tsconfig.legacy.json create mode 100644 packages/vue-time/vite.config.ts create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 scripts/config.js create mode 100644 scripts/publish.js create mode 100644 scripts/tsconfig.json create mode 100644 scripts/types.d.ts create mode 100644 tsconfig.json diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 00000000..fb3997cb --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,7 @@ +# Browsers we support +Chrome >= 84 +Firefox >= 90 +Edge >= 84 +Safari >= 15 +iOS >= 15 +opera >= 70 \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 00000000..ce03ce68 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,101 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = { + root: true, + reportUnusedDisableDirectives: true, + ignorePatterns: ['**/build', '**/coverage', '**/dist'], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint', 'import'], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:@typescript-eslint/stylistic', + 'plugin:import/recommended', + 'plugin:import/typescript', + 'prettier', + ], + env: { + browser: true, + es2020: true, + }, + parserOptions: { + tsconfigRootDir: __dirname, + project: true, + sourceType: 'module', + ecmaVersion: 2020, + }, + settings: { + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + 'import/resolver': { + typescript: true, + }, + react: { + version: 'detect', + }, + }, + rules: { + '@typescript-eslint/array-type': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/consistent-type-definitions': 'off', + '@typescript-eslint/consistent-type-imports': [ + 'error', + { prefer: 'type-imports' }, + ], + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/method-signature-style': 'error', + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-unnecessary-condition': 'error', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-inferrable-types': [ + 'error', + { ignoreParameters: true }, + ], + '@typescript-eslint/prefer-for-of': 'off', + 'import/default': 'off', + 'import/export': 'off', + 'import/namespace': 'off', + 'import/newline-after-import': 'error', + 'import/no-cycle': 'error', + 'import/no-duplicates': 'off', + 'import/no-named-as-default-member': 'off', + 'import/no-unresolved': ['error', { ignore: ['^@tanstack/'] }], + 'import/no-unused-modules': ['off', { unusedExports: true }], + 'import/order': [ + 'error', + { + groups: [ + 'builtin', + 'external', + 'internal', + 'parent', + 'sibling', + 'index', + 'object', + 'type', + ], + }, + ], + 'no-async-promise-executor': 'off', + 'no-empty': 'off', + 'no-redeclare': 'off', + 'no-shadow': 'error', + 'no-undef': 'off', + 'sort-imports': ['error', { ignoreDeclarationSort: true }], + }, + overrides: [ + { + files: ['**/*.test.{ts,tsx}'], + rules: { + '@typescript-eslint/no-unnecessary-condition': 'off', + }, + }, + ], +} + +module.exports = config diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..5a0d5e48 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto eol=lf diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..fd99b3b1 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: tannerlinsley diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000..81c65266 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,71 @@ +name: '🐛 Bug report' +description: Create a report to help us improve +body: + - type: markdown + attributes: + value: | + Thank you for reporting an issue :pray:. + + This issue tracker is for reporting bugs found in `time` (https://github.com/tanstack/time). + If you have a question about how to achieve something and are struggling, please post a question + inside of `time` Discussions tab: https://github.com/tanstack/time/discussions + + Before submitting a new bug/issue, please check the links below to see if there is a solution or question posted there already: + - `time` Issues tab: https://github.com/tanstack/time/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc + - `time` closed issues tab: https://github.com/tanstack/time/issues?q=is%3Aissue+sort%3Aupdated-desc+is%3Aclosed + - `time` Discussions tab: https://github.com/tanstack/time/discussions + + The more information you fill in, the better the community can help you. + - type: textarea + id: description + attributes: + label: Describe the bug + description: Provide a clear and concise description of the challenge you are running into. + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to Reproduce the Bug or Issue + description: Describe the steps we have to take to reproduce the behavior. + placeholder: | + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: true + - type: textarea + id: expected + attributes: + label: Expected behavior + description: Provide a clear and concise description of what you expected to happen. + placeholder: | + As a user, I expected ___ behavior but i am seeing ___ + validations: + required: true + - type: textarea + id: screenshots_or_videos + attributes: + label: Screenshots or Videos + description: | + If applicable, add screenshots or a video to help explain your problem. + For more information on the supported file image/file types and the file size limits, please refer + to the following link: https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/attaching-files + placeholder: | + You can drag your video or image files inside of this editor ↓ + - type: textarea + id: platform + attributes: + label: Platform + value: | + - OS: [e.g. macOS, Windows, Linux] + - Browser: [e.g. Chrome, Safari, Firefox] + - Version: [e.g. 91.1] + validations: + required: true + - type: textarea + id: additional + attributes: + label: Additional context + description: Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..a8ad12e9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: 🤔 Feature Requests & Questions + url: https://github.com/tanstack/time/discussions + about: Please ask and answer questions here. + - name: 💬 Community Chat + url: https://discord.gg/mQd7egN + about: A dedicated discord server hosted by Tanner Linsley + - name: 💬 Tanstack Twitter + url: https://twitter.com/tan_stack + about: Stay up to date with new releases of our libraries diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..564de3ce --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,58 @@ +name: ci + +on: + workflow_dispatch: + inputs: + tag: + description: override release tag + required: false + push: + branches: ['main', 'alpha', 'beta'] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true + +env: + NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} + +jobs: + test-and-publish: + name: Test & Publish + if: github.repository == 'TanStack/time' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: pnpm + - name: Start Nx Agents + run: npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml" + - name: Install dependencies + run: pnpm install --frozen-lockfile --prefer-offline + - name: Run Tests + run: pnpm run test:ci --parallel=3 + - name: Stop Nx Agents + if: ${{ always() }} + run: npx nx-cloud stop-all-agents + - name: Publish + run: | + git config --global user.name 'Tanner Linsley' + git config --global user.email 'tannerlinsley@users.noreply.github.com' + npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" + pnpm run cipublish + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + TAG: ${{ inputs.tag }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 00000000..569e24df --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,47 @@ +name: pr + +on: + pull_request: + paths-ignore: + - 'docs/**' + - 'media/**' + - '**/*.md' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true + +env: + NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} + +jobs: + test: + name: Test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: pnpm + - name: Start Nx Agents + run: npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml" + - name: Install dependencies + run: pnpm install --frozen-lockfile --prefer-offline + - name: Get base and head commits for `nx affected` + uses: nrwl/nx-set-shas@v3 + with: + main-branch-name: 'main' + - name: Run Checks + run: pnpm run test:pr --parallel=3 + - name: Stop Nx Agents + if: ${{ always() }} + run: npx nx-cloud stop-all-agents diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..e0ddb63e --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ + +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +node_modules +package-lock.json +yarn.lock + +# builds +build +coverage +dist + +# misc +.DS_Store +.env +.env.local +.env.development.local +.env.test.local +.env.production.local +.next + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.history +size-plugin.json +stats-hydration.json +stats.json +stats.html +.vscode/settings.json + +*.log +.cache +.idea +.nx/cache +.pnpm-store +.tsup + +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..2eb07323 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +prefer-workspace-packages=true diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..eb800ed4 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v18.19.0 diff --git a/.nx/workflows/dynamic-changesets.yaml b/.nx/workflows/dynamic-changesets.yaml new file mode 100644 index 00000000..29c58231 --- /dev/null +++ b/.nx/workflows/dynamic-changesets.yaml @@ -0,0 +1,4 @@ +distribute-on: + small-changeset: 8 linux-medium-js + medium-changeset: 10 linux-medium-js + large-changeset: 12 linux-medium-js diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..6534da93 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,9 @@ +**/.next +**/.nx/cache +**/.svelte-kit +**/build +**/coverage +**/dist +**/docs +**/codemods/**/__testfixtures__ +pnpm-lock.yaml diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..e3b414c7 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "all" +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..3da15eab --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,22 @@ +# Contributing + +- Clone the repo + - `gh repo clone TanStack/time` +- Ensure `node` is installed + - https://nodejs.org/en/ +- Ensure `pnpm` is installed + - https://pnpm.io/installation + - Why? We use `pnpm` to manage workspace dependencies. It's easily the best monorepo/workspace experience available as of when this was written. +- Install dependencies + - `pnpm install` + - This installs dependencies for all of the packages in the monorepo, even examples! + - Dependencies inside of the packages and examples are automatically linked together as local/dynamic dependencies. +- Run the build or dev watcher + - `pnpm build` or + - `pnpm dev` +- Navigate to an example + - `cd examples/react/basic` +- Run the example + - `pnpm dev` +- Make changes to the code + - If you ran `pnpm dev` the dev watcher will automatically rebuild the code that has changed diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..77eca380 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Tanner Linsley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/config.json b/docs/config.json new file mode 100644 index 00000000..0fd1cd0b --- /dev/null +++ b/docs/config.json @@ -0,0 +1,108 @@ +{ + "$schema": "https://raw.githubusercontent.com/TanStack/tanstack.com/main/tanstack-docs-config.schema.json", + "docSearch": { + "appId": "", + "apiKey": "", + "indexName": "tanstack-store" + }, + "sections": [ + { + "label": "Getting Started", + "children": [ + { + "label": "Overview", + "to": "overview" + }, + { + "label": "Installation", + "to": "installation" + } + ], + "frameworks": [ + { + "label": "react", + "children": [ + { + "label": "Quick Start", + "to": "framework/react/quick-start" + } + ] + }, + { + "label": "vue", + "children": [ + { + "label": "Quick Start", + "to": "framework/vue/quick-start" + } + ] + }, + { + "label": "solid", + "children": [ + { + "label": "Quick Start", + "to": "framework/solid/quick-start" + } + ] + }, + { + "label": "angular", + "children": [ + { + "label": "Quick Start", + "to": "framework/angular/quick-start" + } + ] + } + ] + }, + { + "label": "API Reference", + "children": [ + { + "label": "Store", + "to": "reference/Store" + } + ], + "frameworks": [ + { + "label": "react", + "children": [ + { + "label": "useStore", + "to": "framework/react/reference/useStore" + } + ] + }, + { + "label": "vue", + "children": [ + { + "label": "useStore", + "to": "framework/vue/reference/useStore" + } + ] + }, + { + "label": "solid", + "children": [ + { + "label": "useStore", + "to": "framework/solid/reference/useStore" + } + ] + }, + { + "label": "angular", + "children": [ + { + "label": "injectStore", + "to": "framework/angular/reference/injectStore" + } + ] + } + ] + } + ] +} diff --git a/docs/framework/angular/quick-start.md b/docs/framework/angular/quick-start.md new file mode 100644 index 00000000..580c54a0 --- /dev/null +++ b/docs/framework/angular/quick-start.md @@ -0,0 +1,73 @@ +--- +title: Quick Start +id: quick-start +--- + +The basic angular app example to get started with the Tanstack angular-time. + +**app.component.ts** +```html +

How many of your friends like cats or dogs?

+

Press one of the buttons to add a counter of how many of your friends like cats or dogs

+ + + + +``` + +**store.ts** +```js +import { Store } from '@tanstack/store'; + +// You can use @tanstack/store outside of App components too! +export const store = new Store({ + dogs: 0, + cats: 0, +}); + +export function updateState(animal: 'dogs' | 'cats') { + store.setState((state) => { + return { + ...state, + [animal]: state[animal] + 1, + }; + }); +} +``` + +**display.component.ts** +```typescript +import { injectStore } from '@tanstack/angular-store'; +import { store } from './store'; + +@Component({ + selector: 'app-display', + template: ` + +
{{ animal() }}: {{ count() }}
+ `, + standalone: true +}) +export class Display { + animal = input.required(); + count = injectStore(store, (state) => state[this.animal()]); +} +``` + +**increment.component.ts** +```typescript +import { injectStore } from '@tanstack/angular-store'; +import { store, updateState } from './store'; + +@Component({ + selector: 'app-increment', + template: ` + + `, + standalone: true +}) +export class Increment { + animal = input.required(); + updateState = injectStore(store, updateState); +} +``` \ No newline at end of file diff --git a/docs/framework/angular/reference/injectStore.md b/docs/framework/angular/reference/injectStore.md new file mode 100644 index 00000000..c7a54ada --- /dev/null +++ b/docs/framework/angular/reference/injectStore.md @@ -0,0 +1,6 @@ +--- +title: Inject Store +id: injectStore +--- + +Please see [/packages/angular-store/src/index.ts](https://github.com/tanstack/store/tree/main/packages/angular-store/src/index.ts) diff --git a/docs/framework/react/quick-start.md b/docs/framework/react/quick-start.md new file mode 100644 index 00000000..e906f3c6 --- /dev/null +++ b/docs/framework/react/quick-start.md @@ -0,0 +1,59 @@ +--- +title: Quick Start +id: quick-start +--- + +The basic react app example to get started with the Tanstack react-time. + +```tsx +import React from "react"; +import ReactDOM from "react-dom/client"; +import { useStore } from "@tanstack/react-store"; +import { Store } from "@tanstack/store"; + +// You can use @tanstack/store outside of React components too! +export const store = new Store({ + dogs: 0, + cats: 0, +}); + +// This will only re-render when `state[animal]` changes. If an unrelated store property changes, it won't re-render + +const Display = ({ animal }) => { + const count = useStore(store, (state) => state[animal]); + return
{`${animal}: ${count}`}
; +}; + +const updateState = (animal) => { + store.setState((state) => { + return { + ...state, + [animal]: state[animal] + 1, + }; + }); +}; +const Increment = ({ animal }) => ( + +); + +function App() { + return ( +
+

How many of your friends like cats or dogs?

+

+ Press one of the buttons to add a counter of how many of your friends + like cats or dogs +

+ + + + +
+ ); +} + +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render(); + + +``` \ No newline at end of file diff --git a/docs/framework/react/reference/useStore.md b/docs/framework/react/reference/useStore.md new file mode 100644 index 00000000..0a709c58 --- /dev/null +++ b/docs/framework/react/reference/useStore.md @@ -0,0 +1,28 @@ +--- +title: Use Store +id: useStore +--- +### `useStore` + +```tsx +export function useStore< + TState, + TSelected = NoInfer, + TUpdater extends AnyUpdater = AnyUpdater, +>( + store: Store, + selector: (state: NoInfer) => TSelected = (d) => d as any, +) +``` + +useStore is a custom hook that returns the updated store given the intial store and the selector. React can use this to keep your component subscribed to the store and re-render it on changes. + + + +#### Parameters +- `store: Store` + - This parameter represents the external store itself which holds the entire state of your application. It expects an instance of a `@tanstack/store` that manages state and supports updates through a callback. +- `selector: (state: NoInfer) => TSelected = (d) => d as any` + - This parameter is a callback function that takes the state of the store and expects you to return a sub-state of the store. This selected sub-state is subsequently utilized as the state displayed by the useStore hook. It triggers a re-render of the component only when there are changes in this data, ensuring that updates to the displayed state trigger the necessary re-renders + + diff --git a/docs/framework/solid/quick-start.md b/docs/framework/solid/quick-start.md new file mode 100644 index 00000000..4465e859 --- /dev/null +++ b/docs/framework/solid/quick-start.md @@ -0,0 +1,59 @@ +--- +title: Quick Start +id: quick-start +--- + +The basic Solid app example to get started with the Tanstack solid-time. + +```jsx +import { useStore, Store } from '@tanstack/solid-store'; + +export const store = new Store({ +  cats: 0, +  dogs: 0 +}) + +export const Display = (props) => { +  const count = useStore(store, (state) => state[props.animals]); +  return ( +    +      {props.animals}: {count()} +      +    ); +} + +export const Button = (props) => { +  return ( +    +  ) +} + +const App = () => { +  return ( +   
+   

How many of your friends like cats or dogs?

+   

+      Press one of the buttons to add a counter of how many of your friends +      like cats or dogs +     

+     
+  ); +}; + +export default App; +``` diff --git a/docs/framework/solid/reference/useStore.md b/docs/framework/solid/reference/useStore.md new file mode 100644 index 00000000..2811c115 --- /dev/null +++ b/docs/framework/solid/reference/useStore.md @@ -0,0 +1,6 @@ +--- +title: Use Store +id: useStore +--- + +Please see [/packages/solid-store/src/index.ts](https://github.com/tanstack/store/tree/main/packages/solid-store/src/index.ts) diff --git a/docs/framework/vue/quick-start.md b/docs/framework/vue/quick-start.md new file mode 100644 index 00000000..89687b79 --- /dev/null +++ b/docs/framework/vue/quick-start.md @@ -0,0 +1,72 @@ +--- +title: Quick Start +id: quick-start +--- + +The basic vue app example to get started with the Tanstack vue-time. + +**App.vue** +```html + + + +``` + +**store.js** +```js +import { Store } from '@tanstack/store'; + +// You can use @tanstack/store outside of Vue components too! +export const store = new Store({ + dogs: 0, + cats: 0, +}); + +export function updateState(animal) { + store.setState((state) => { + return { + ...state, + [animal]: state[animal] + 1, + }; + }); +} +``` + +**Display.vue** +```html + + + + +``` + +**Increment.vue** +```html + + + +``` diff --git a/docs/framework/vue/reference/useStore.md b/docs/framework/vue/reference/useStore.md new file mode 100644 index 00000000..725ae819 --- /dev/null +++ b/docs/framework/vue/reference/useStore.md @@ -0,0 +1,6 @@ +--- +title: Use Store +id: useStore +--- + +Please see [/packages/vue-store/src/index.ts](https://github.com/tanstack/store/tree/main/packages/vue-store/src/index.ts) diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 00000000..f00e18b1 --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,38 @@ +--- +title: Installation +id: installation +--- + +You can install TanStack Time with any [NPM](https://npmjs.com) package manager. + +## React + +```sh +npm install @tanstack/react-time +``` + +TanStack Time is compatible with React v16.8+ and is currently only compatible with ReactDOM only. If you would like to contribute to the React Native adapter, please reach out to us on [Discord](https://tlinz.com/discord). + +## Vue + +```sh +npm install @tanstack/vue-time +``` + +TanStack Time is compatible with Vue 2 and 3. + +## Angular + +```sh +npm install @tanstack/angular-time +``` + +TanStack Time is compatible with Angular 16+ + +## SolidJS + +```sh +npm install @tanstack/solid-time +``` + +TanStack Time is compatible with Solid and SolidStart. diff --git a/docs/overview.md b/docs/overview.md new file mode 100644 index 00000000..4565b5c0 --- /dev/null +++ b/docs/overview.md @@ -0,0 +1,8 @@ +--- +title: Overview +id: overview +--- + +TanStack Time is a framework agnostic data store that ships with framework specific adapters for major frameworks like React, Solid, Vue, Angular, and Svelte. + +TanStack Store is primarily used for state management internally for most framework agnostic TanStack libraries. It can also be used as a standalone library for any framework or application. \ No newline at end of file diff --git a/docs/reference/Time.md b/docs/reference/Time.md new file mode 100644 index 00000000..b29532ab --- /dev/null +++ b/docs/reference/Time.md @@ -0,0 +1,9 @@ +--- +title: Time +id: time +--- + + +## `Time` + +Stuff will go here. \ No newline at end of file diff --git a/knip.json b/knip.json new file mode 100644 index 00000000..5dc66d8a --- /dev/null +++ b/knip.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/knip@4/schema.json", + "workspaces": { + "packages/angular-store": { + "ignoreDependencies": ["@angular/compiler-cli"] + }, + "packages/vue-store": { + "ignoreDependencies": ["vue2", "vue2.7"] + } + } +} diff --git a/media/repo-header.png b/media/repo-header.png new file mode 100644 index 0000000000000000000000000000000000000000..e86dec452efb3871cd1ce8d3a8d5a7bedf8e6f31 GIT binary patch literal 379293 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 w;5hax(O>+%VFexVhGTG*>>BY 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%0A)Qiyc@nD&fpVu6c3{2sx`v$qh;J90B zqcX#OyD>cQ&CQxWo4-JTqFiY3!0^9+^?iWgG)<~~!(!UaG|ISZvqlu6GWympr*mIs zc3!o)0a+z53J?we`YR6!T4y~CwTgj#g*-wTC*~HJDkZC1H(?vl7g==}HemJ9rO`j9 zwZ!>9PZ7#Gyn9DB{-u%5zY^*A*M|9_cJrsb3+yQGz>tBvH$NWV?)Gu}H);(%llzQV zNgOnOI)7Bl(HaPtQ_yf$kl%SobwrHUUeXi~fikq_I)hx>gq35T^tRF<&v&8lsymc2 z3X?`!5;e4SId!ouu8EnjmBNlWj};pA!Xrv=myyqy;YY}`=Vsh{XOHb;FT{<1P^k)N z%}`6wlhx4b)%A^B+9${`_`y#iAwe9svDx{i!y@>qMXg#Y7%(OC4N5z`9Lj04Ha61| zsf=G(L-&`7{h3rpl(@9Uf%~R@XLeVa5~VmYwLIfmyDV2N!!AVj%X%Fd7On9%*@tOJ z@0Qlt#-dpjb-#PaOVAA#8mO@G?N7@0#e$g?YDG?$E{Ln5%taYS+b_TSicxi^CJ=NRBt2|ai)VSCDCzmb;9{# z-BIsy0reU^N0V>(c#d~~?k}}Ye@Woo^?d>bACW*urQ>8gupR(Ym)167y^BsySY5)z z-%0=G0FdDM_YFbGjJcZt_u^%!xc_<7daClN&>Xibq}MXssBs(h^KJH*HN%{;H73OU z9nc0bR^Bi+yYYM(zPA>Ne!{(K7b#Jt5B8SUBT=D}4H_pWr*s7ug^mB60*z@z6V{*) z-2h>@;|E3twVG&vA&KsMzXC^5%SVtfGR;nVGC68Y@quh}@L(j$Z<(esmPMtM8#)s& z&kSVju2q32=`aTV2;XX9b&U8$k&v2W$IzFXpFd4+Ic(?}%p=XLgr({MyxWjZ=!*S!a;!it z*T@?vZQv=aSeeb*;Ph~b0sP6z(Fr2$;%P$w=NQNA_M+bb)U!>U>o_~ z!NwRpNUuaI#DTm4NPba3)YU)ZG&*x|{CMWyl7W=Ru34)oC?izK<70CNwGKs7t(6Im zt}k%kR9`sXaDeqkFl+~Vi{*Qr1S`)18d0g1Zz+?QTu&4g!H>TOc4vZO6ndW~(5t$% z3;fmv@0M)O1#Pi(54h&Ju~$;JE#z`&u{KoTJjk)8Aryd7j_6}i)Z??d}9VVD>V$;4p2XIJeV2VmDovGl50uagNmjTC- x^w>jGj$ndV8o893ie4LY9Yi|!K)Hkf>2@it`lR9gyr0028Oq{V(UJ4l{}1+6a{vGU literal 0 HcmV?d00001 diff --git a/nx.json b/nx.json new file mode 100644 index 00000000..5f97e116 --- /dev/null +++ b/nx.json @@ -0,0 +1,69 @@ +{ + "$schema": "./node_modules/nx/schemas/nx-schema.json", + "affected": { + "defaultBase": "main" + }, + "defaultBase": "main", + "nxCloudAccessToken": "MDZiNDc1ZWQtODJjMi00MjA3LWJlYzktMWUyNmI1NzQyNmYyfHJlYWQ=", + "parallel": 5, + "namedInputs": { + "sharedGlobals": [ + "{workspaceRoot}/.eslintrc.cjs", + "{workspaceRoot}/.nvmrc", + "{workspaceRoot}/package.json", + "{workspaceRoot}/tsconfig.json" + ], + "default": [ + "sharedGlobals", + "{projectRoot}/**/*", + "!{projectRoot}/**/*.md" + ], + "public": [ + "default", + "{projectRoot}/build", + "{projectRoot}/dist", + "!{projectRoot}/.eslintrc.cjs" + ] + }, + "targetDefaults": { + "test:lib": { + "dependsOn": ["^build"], + "inputs": ["default", "^public"], + "outputs": ["{projectRoot}/coverage"], + "cache": true + }, + "test:eslint": { + "dependsOn": ["^build"], + "inputs": ["default", "^public"], + "cache": true + }, + "test:types": { + "dependsOn": ["^build"], + "inputs": ["default", "^public"], + "cache": true + }, + "build": { + "dependsOn": ["^build"], + "inputs": ["default", "^public"], + "outputs": ["{projectRoot}/build", "{projectRoot}/dist"], + "cache": true + }, + "test:build": { + "dependsOn": ["build"], + "inputs": ["^public"], + "cache": true + }, + "test:knip": { + "cache": true, + "inputs": ["{workspaceRoot}/**/*"] + }, + "test:format": { + "cache": true, + "inputs": ["{workspaceRoot}/**/*"] + }, + "test:sherif": { + "cache": true, + "inputs": ["{workspaceRoot}/**/*"] + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..aa81d1b3 --- /dev/null +++ b/package.json @@ -0,0 +1,77 @@ +{ + "name": "time", + "private": true, + "repository": "https://github.com/tanstack/time.git", + "packageManager": "pnpm@8.12.1", + "type": "module", + "scripts": { + "clean": "pnpm --filter \"./packages/**\" run clean", + "preinstall": "node -e \"if(process.env.CI == 'true') {console.log('Skipping preinstall...'); process.exit(1)}\" || npx -y only-allow pnpm", + "install:csb": "corepack enable && pnpm install --frozen-lockfile", + "test": "pnpm run test:ci", + "test:pr": "nx affected --targets=test:format,test:sherif,test:knip,test:eslint,test:lib,test:types,test:build,build", + "test:ci": "nx run-many --targets=test:format,test:sherif,test:knip,test:eslint,test:lib,test:types,test:build,build", + "test:eslint": "nx affected --target=test:eslint", + "test:format": "pnpm run prettier --check", + "test:sherif": "sherif", + "test:lib": "nx affected --target=test:lib --exclude=examples/**", + "test:lib:dev": "pnpm run test:lib && nx watch --all -- pnpm run test:lib", + "test:build": "nx affected --target=test:build --exclude=examples/**", + "test:types": "nx affected --target=test:types --exclude=examples/**", + "test:knip": "knip", + "build": "nx affected --target=build --exclude=examples/**", + "build:all": "nx run-many --target=build --exclude=examples/**", + "watch": "pnpm run build:all && nx watch --all -- pnpm run build:all", + "dev": "pnpm run watch", + "prettier": "prettier --ignore-unknown .", + "prettier:write": "pnpm run prettier --write", + "cipublish": "node scripts/publish.js", + "cipublishforce": "CI=true pnpm cipublish" + }, + "nx": { + "includedScripts": [ + "test:format", + "test:knip", + "test:sherif" + ] + }, + "namespace": "@tanstack", + "devDependencies": { + "@solidjs/testing-library": "^0.8.6", + "@tanstack/config": "^0.6.0", + "@testing-library/jest-dom": "^6.4.2", + "@testing-library/react": "^14.2.1", + "@testing-library/user-event": "^14.5.2", + "@testing-library/vue": "^8.0.2", + "@types/eslint": "^8.56.2", + "@types/node": "^18.19.3", + "@types/react": "^18.2.45", + "@types/react-dom": "^18.0.5", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "@vitest/coverage-istanbul": "^1.3.1", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "jsdom": "^24.0.0", + "knip": "^4.6.0", + "nx": "^17.2.8", + "prettier": "^4.0.0-alpha.8", + "publint": "^0.2.7", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "rimraf": "^5.0.5", + "sherif": "^0.7.0", + "solid-js": "^1.7.8", + "typescript": "^5.2.2", + "typescript49": "npm:typescript@4.9", + "typescript50": "npm:typescript@5.0", + "typescript51": "npm:typescript@5.1", + "vite": "^5.1.5", + "vitest": "^1.3.1", + "vue": "^3.3.4" + } +} diff --git a/packages/angular-time/.eslintrc.cjs b/packages/angular-time/.eslintrc.cjs new file mode 100644 index 00000000..cca134ce --- /dev/null +++ b/packages/angular-time/.eslintrc.cjs @@ -0,0 +1,6 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = {} + +module.exports = config diff --git a/packages/angular-time/package.json b/packages/angular-time/package.json new file mode 100644 index 00000000..226209a6 --- /dev/null +++ b/packages/angular-time/package.json @@ -0,0 +1,73 @@ +{ + "name": "@tanstack/angular-time", + "author": "Tanner Linsley", + "version": "0.0.1", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/time.git", + "directory": "packages/angular-time" + }, + "homepage": "https://tanstack.com", + "description": "", + "scripts": { + "clean": "rimraf ./dist && rimraf ./coverage", + "test:eslint": "eslint --ext .ts,.tsx ./src", + "test:types": "tsc", + "test:lib": "vitest", + "test:lib:dev": "pnpm run test:lib --watch", + "test:build": "publint --strict", + "build": "vite build" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/" + }, + "keywords": [ + "time", + "typescript", + "angular" + ], + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "files": [ + "dist", + "src" + ], + "dependencies": { + "@tanstack/time": "workspace:*" + }, + "devDependencies": { + "@analogjs/vite-plugin-angular": "^0.2.32", + "@angular/common": "^17.1.2", + "@angular/compiler": "^17.1.2", + "@angular/compiler-cli": "^17.1.2", + "@angular/core": "^17.1.2", + "@angular/platform-browser": "^17.1.2", + "@angular/platform-browser-dynamic": "^17.1.2", + "zone.js": "^0.14.3" + }, + "peerDependencies": { + "@angular/core": ">=16 < 18", + "@angular/common": ">=16 < 18" + } +} diff --git a/packages/angular-time/src/index.ts b/packages/angular-time/src/index.ts new file mode 100644 index 00000000..dabac739 --- /dev/null +++ b/packages/angular-time/src/index.ts @@ -0,0 +1,3 @@ +/** + * TanStack Time + */ \ No newline at end of file diff --git a/packages/angular-time/tsconfig.json b/packages/angular-time/tsconfig.json new file mode 100644 index 00000000..cbd3de94 --- /dev/null +++ b/packages/angular-time/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "experimentalDecorators": true, + "moduleResolution": "Bundler", + "paths": { + "@tanstack/time": ["../time/src"] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "vite.config.ts"] +} diff --git a/packages/angular-time/tsconfig.legacy.json b/packages/angular-time/tsconfig.legacy.json new file mode 100644 index 00000000..c0ace779 --- /dev/null +++ b/packages/angular-time/tsconfig.legacy.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "experimentalDecorators": true, + "moduleResolution": "Node", + "paths": { + "@tanstack/time": ["../time/src"] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx"], + "exclude": ["src/tests/**"] +} diff --git a/packages/angular-time/vite.config.ts b/packages/angular-time/vite.config.ts new file mode 100644 index 00000000..1df7558a --- /dev/null +++ b/packages/angular-time/vite.config.ts @@ -0,0 +1,24 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackBuildConfig } from '@tanstack/config/build' + +const config = defineConfig({ + test: { + name: 'angular-time', + dir: './src', + watch: false, + environment: 'jsdom', + setupFiles: ['src/tests/test-setup.ts'], + coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] }, + typecheck: { enabled: true }, + globals: true, + }, +}) + +export default mergeConfig( + config, + tanstackBuildConfig({ + entry: './src/index.ts', + srcDir: './src', + exclude: ['./src/tests'], + }), +) diff --git a/packages/react-time/.eslintrc.cjs b/packages/react-time/.eslintrc.cjs new file mode 100644 index 00000000..5f504cf4 --- /dev/null +++ b/packages/react-time/.eslintrc.cjs @@ -0,0 +1,13 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = { + extends: ['plugin:react/recommended', 'plugin:react-hooks/recommended'], + rules: { + 'react/jsx-key': ['error', { checkFragmentShorthand: true }], + 'react-hooks/exhaustive-deps': 'error', + 'react/no-children-prop': 'off', + }, +} + +module.exports = config diff --git a/packages/react-time/package.json b/packages/react-time/package.json new file mode 100644 index 00000000..c3f9d136 --- /dev/null +++ b/packages/react-time/package.json @@ -0,0 +1,72 @@ +{ + "name": "@tanstack/react-time", + "author": "Tanner Linsley", + "version": "0.0.1", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/time.git", + "directory": "packages/react-time" + }, + "homepage": "https://tanstack.com/", + "description": "", + "publishConfig": { + "registry": "https://registry.npmjs.org/" + }, + "keywords": [ + "time", + "react", + "typescript" + ], + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "scripts": { + "clean": "rimraf ./dist && rimraf ./coverage", + "test:eslint": "eslint --ext .ts,.tsx ./src", + "test:types:versions49": "node ../../node_modules/typescript49/lib/tsc.js --project tsconfig.legacy.json", + "test:types:versions50": "node ../../node_modules/typescript50/lib/tsc.js", + "test:types:versions51": "node ../../node_modules/typescript51/lib/tsc.js", + "test:types:versions52": "tsc", + "test:types": "pnpm run \"/^test:types:versions.*/\"", + "test:lib": "vitest", + "test:lib:dev": "pnpm run test:lib --watch", + "test:build": "publint --strict", + "build": "vite build" + }, + "files": [ + "dist", + "src" + ], + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "dependencies": { + "@tanstack/time": "workspace:*", + "use-sync-external-store": "^1.2.0" + }, + "devDependencies": { + "@types/use-sync-external-store": "^0.0.3", + "@vitejs/plugin-react": "^4.2.1" + } +} diff --git a/packages/react-time/src/index.ts b/packages/react-time/src/index.ts new file mode 100644 index 00000000..dabac739 --- /dev/null +++ b/packages/react-time/src/index.ts @@ -0,0 +1,3 @@ +/** + * TanStack Time + */ \ No newline at end of file diff --git a/packages/react-time/test-setup.ts b/packages/react-time/test-setup.ts new file mode 100644 index 00000000..33e43106 --- /dev/null +++ b/packages/react-time/test-setup.ts @@ -0,0 +1,6 @@ +import '@testing-library/jest-dom/vitest' +import { cleanup } from '@testing-library/react' +import { afterEach } from 'vitest' + +// https://testing-library.com/docs/react-testing-library/api#cleanup +afterEach(() => cleanup()) diff --git a/packages/react-time/tsconfig.json b/packages/react-time/tsconfig.json new file mode 100644 index 00000000..ef306898 --- /dev/null +++ b/packages/react-time/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "react", + "moduleResolution": "Bundler", + "paths": { + "@tanstack/time": ["../time/src"] + } + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + ".eslintrc.cjs", + "test-setup.ts", + "vite.config.ts" + ] +} diff --git a/packages/react-time/tsconfig.legacy.json b/packages/react-time/tsconfig.legacy.json new file mode 100644 index 00000000..f2f24246 --- /dev/null +++ b/packages/react-time/tsconfig.legacy.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "react", + "moduleResolution": "Node", + "paths": { + "@tanstack/time": ["../time/src"] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx"], + "exclude": ["src/tests/**"] +} diff --git a/packages/react-time/vite.config.ts b/packages/react-time/vite.config.ts new file mode 100644 index 00000000..68b84116 --- /dev/null +++ b/packages/react-time/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackBuildConfig } from '@tanstack/config/build' +import react from '@vitejs/plugin-react' + +const config = defineConfig({ + plugins: [react()], + test: { + name: 'react-time', + dir: './src', + watch: false, + environment: 'jsdom', + setupFiles: ['test-setup.ts'], + coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] }, + typecheck: { enabled: true }, + }, +}) + +export default mergeConfig( + config, + tanstackBuildConfig({ + entry: './src/index.ts', + srcDir: './src', + exclude: ['./src/tests'], + }), +) diff --git a/packages/solid-time/.eslintrc.cjs b/packages/solid-time/.eslintrc.cjs new file mode 100644 index 00000000..cca134ce --- /dev/null +++ b/packages/solid-time/.eslintrc.cjs @@ -0,0 +1,6 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = {} + +module.exports = config diff --git a/packages/solid-time/package.json b/packages/solid-time/package.json new file mode 100644 index 00000000..17adee8a --- /dev/null +++ b/packages/solid-time/package.json @@ -0,0 +1,70 @@ +{ + "name": "@tanstack/solid-time", + "author": "Tanner Linsley", + "version": "0.0.1", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/time.git", + "directory": "packages/solid-time" + }, + "homepage": "https://tanstack.com/", + "description": "", + "publishConfig": { + "registry": "https://registry.npmjs.org/" + }, + "keywords": [ + "time", + "solid", + "typescript" + ], + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "scripts": { + "clean": "rimraf ./dist && rimraf ./coverage", + "test:eslint": "eslint --ext .ts,.tsx ./src", + "test:types:versions49": "node ../../node_modules/typescript49/lib/tsc.js --project tsconfig.legacy.json", + "test:types:versions50": "node ../../node_modules/typescript50/lib/tsc.js", + "test:types:versions51": "node ../../node_modules/typescript51/lib/tsc.js", + "test:types:versions52": "tsc", + "test:types": "pnpm run \"/^test:types:versions.*/\"", + "test:lib": "vitest", + "test:lib:dev": "pnpm run test:lib --watch", + "test:build": "publint --strict", + "build": "vite build" + }, + "files": [ + "dist", + "src" + ], + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "peerDependencies": { + "solid-js": "^1.6.0" + }, + "dependencies": { + "@tanstack/time": "workspace:*" + }, + "devDependencies": { + "solid-js": "^1.7.8", + "vite-plugin-solid": "^2.10.1" + } +} diff --git a/packages/solid-time/src/index.ts b/packages/solid-time/src/index.ts new file mode 100644 index 00000000..dabac739 --- /dev/null +++ b/packages/solid-time/src/index.ts @@ -0,0 +1,3 @@ +/** + * TanStack Time + */ \ No newline at end of file diff --git a/packages/solid-time/test-setup.ts b/packages/solid-time/test-setup.ts new file mode 100644 index 00000000..c3055e4b --- /dev/null +++ b/packages/solid-time/test-setup.ts @@ -0,0 +1,6 @@ +import '@testing-library/jest-dom/vitest' +import { cleanup } from '@solidjs/testing-library' +import { afterEach } from 'vitest' + +// https://github.com/solidjs/solid-testing-library +afterEach(() => cleanup()) diff --git a/packages/solid-time/tsconfig.json b/packages/solid-time/tsconfig.json new file mode 100644 index 00000000..c8fc9dfc --- /dev/null +++ b/packages/solid-time/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "preserve", + "jsxImportSource": "solid-js", + "moduleResolution": "Bundler", + "paths": { + "@tanstack/time": ["../time/src"] + } + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + ".eslintrc.cjs", + "test-setup.ts", + "vite.config.ts" + ] +} diff --git a/packages/solid-time/tsconfig.legacy.json b/packages/solid-time/tsconfig.legacy.json new file mode 100644 index 00000000..ce975a7f --- /dev/null +++ b/packages/solid-time/tsconfig.legacy.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "preserve", + "jsxImportSource": "solid-js", + "moduleResolution": "Node", + "paths": { + "@tanstack/time": ["../time/src"] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx"], + "exclude": ["src/tests/**"] +} diff --git a/packages/solid-time/vite.config.ts b/packages/solid-time/vite.config.ts new file mode 100644 index 00000000..67c596e7 --- /dev/null +++ b/packages/solid-time/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackBuildConfig } from '@tanstack/config/build' +import solid from 'vite-plugin-solid' + +const config = defineConfig({ + plugins: [solid()], + test: { + name: 'solid-time', + dir: './src', + watch: false, + environment: 'jsdom', + setupFiles: ['test-setup.ts'], + coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] }, + typecheck: { enabled: true }, + }, +}) + +export default mergeConfig( + config, + tanstackBuildConfig({ + entry: './src/index.ts', + srcDir: './src', + exclude: ['./src/tests'], + }), +) diff --git a/packages/time/.eslintrc.cjs b/packages/time/.eslintrc.cjs new file mode 100644 index 00000000..cca134ce --- /dev/null +++ b/packages/time/.eslintrc.cjs @@ -0,0 +1,6 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = {} + +module.exports = config diff --git a/packages/time/package.json b/packages/time/package.json new file mode 100644 index 00000000..081903be --- /dev/null +++ b/packages/time/package.json @@ -0,0 +1,59 @@ +{ + "name": "@tanstack/time", + "author": "Tanner Linsley", + "version": "0.0.1", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/time.git", + "directory": "packages/time" + }, + "homepage": "https://tanstack.com", + "description": "", + "scripts": { + "clean": "rimraf ./dist && rimraf ./coverage", + "test:eslint": "eslint --ext .ts,.tsx ./src", + "test:types:versions49": "node ../../node_modules/typescript49/lib/tsc.js --project tsconfig.legacy.json", + "test:types:versions50": "node ../../node_modules/typescript50/lib/tsc.js", + "test:types:versions51": "node ../../node_modules/typescript51/lib/tsc.js", + "test:types:versions52": "tsc", + "test:types": "pnpm run \"/^test:types:versions.*/\"", + "test:lib": "vitest", + "test:lib:dev": "pnpm run test:lib --watch", + "test:build": "publint --strict", + "build": "vite build" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/" + }, + "keywords": [ + "time", + "typescript" + ], + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "files": [ + "dist", + "src" + ] +} diff --git a/packages/time/src/index.ts b/packages/time/src/index.ts new file mode 100644 index 00000000..dabac739 --- /dev/null +++ b/packages/time/src/index.ts @@ -0,0 +1,3 @@ +/** + * TanStack Time + */ \ No newline at end of file diff --git a/packages/time/tsconfig.json b/packages/time/tsconfig.json new file mode 100644 index 00000000..f1368359 --- /dev/null +++ b/packages/time/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "moduleResolution": "Bundler" + }, + "include": ["src/**/*.ts", "src/**/*.tsx", ".eslintrc.cjs", "vite.config.ts"] +} diff --git a/packages/time/tsconfig.legacy.json b/packages/time/tsconfig.legacy.json new file mode 100644 index 00000000..8ba4eb48 --- /dev/null +++ b/packages/time/tsconfig.legacy.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "moduleResolution": "Node" + }, + "include": ["src/**/*.ts", "src/**/*.tsx"], + "exclude": ["src/tests/**"] +} diff --git a/packages/time/vite.config.ts b/packages/time/vite.config.ts new file mode 100644 index 00000000..a80956da --- /dev/null +++ b/packages/time/vite.config.ts @@ -0,0 +1,22 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackBuildConfig } from '@tanstack/config/build' + +const config = defineConfig({ + test: { + name: 'time', + dir: './src', + watch: false, + environment: 'jsdom', + coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] }, + typecheck: { enabled: true }, + }, +}) + +export default mergeConfig( + config, + tanstackBuildConfig({ + entry: './src/index.ts', + srcDir: './src', + exclude: ['./src/tests'], + }), +) diff --git a/packages/vue-time/.eslintrc.cjs b/packages/vue-time/.eslintrc.cjs new file mode 100644 index 00000000..cca134ce --- /dev/null +++ b/packages/vue-time/.eslintrc.cjs @@ -0,0 +1,6 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = {} + +module.exports = config diff --git a/packages/vue-time/package.json b/packages/vue-time/package.json new file mode 100644 index 00000000..78633490 --- /dev/null +++ b/packages/vue-time/package.json @@ -0,0 +1,79 @@ +{ + "name": "@tanstack/vue-time", + "version": "0.0.1", + "author": "Tanner Linsley", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/time.git", + "directory": "packages/vue-time" + }, + "homepage": "https://tanstack.com/", + "description": "", + "publishConfig": { + "registry": "https://registry.npmjs.org/" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "type": "module", + "types": "dist/esm/index.d.ts", + "main": "dist/cjs/index.cjs", + "module": "dist/esm/index.js", + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "test:lib": "pnpm run test:3", + "test:2": "vue-demi-switch 2 vue2 && vitest", + "test:2.7": "vue-demi-switch 2.7 vue2.7 && vitest", + "test:3": "vue-demi-switch 3 && vitest", + "clean": "rimraf ./dist && rimraf ./coverage", + "test:eslint": "eslint --ext .ts,.tsx ./src", + "test:types:versions49": "node ../../node_modules/typescript49/lib/tsc.js --project tsconfig.legacy.json", + "test:types:versions50": "node ../../node_modules/typescript50/lib/tsc.js", + "test:types:versions51": "node ../../node_modules/typescript51/lib/tsc.js", + "test:types:versions52": "tsc", + "test:types": "pnpm run \"/^test:types:versions.*/\"", + "fixme:test:lib": "pnpm run test:2 && pnpm run test:2.7 && pnpm run test:3", + "test:lib:dev": "pnpm run test:lib --watch", + "test:build": "publint --strict", + "build": "vite build" + }, + "files": [ + "dist", + "src" + ], + "dependencies": { + "@tanstack/time": "workspace:*", + "vue-demi": "^0.14.6" + }, + "devDependencies": { + "@vue/composition-api": "^1.7.2", + "vue": "^3.3.4", + "vue2": "npm:vue@2.6", + "vue2.7": "npm:vue@2.7", + "@vitejs/plugin-vue": "^5.0.2" + }, + "peerDependencies": { + "@vue/composition-api": "^1.2.1", + "vue": "^2.5.0 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } +} diff --git a/packages/vue-time/src/index.ts b/packages/vue-time/src/index.ts new file mode 100644 index 00000000..dabac739 --- /dev/null +++ b/packages/vue-time/src/index.ts @@ -0,0 +1,3 @@ +/** + * TanStack Time + */ \ No newline at end of file diff --git a/packages/vue-time/test-setup.ts b/packages/vue-time/test-setup.ts new file mode 100644 index 00000000..640dd831 --- /dev/null +++ b/packages/vue-time/test-setup.ts @@ -0,0 +1,6 @@ +import '@testing-library/jest-dom/vitest' +import { cleanup } from '@testing-library/vue' +import { afterEach } from 'vitest' + +// https://testing-library.com/docs/vue-testing-library/api#cleanup +afterEach(() => cleanup()) diff --git a/packages/vue-time/tsconfig.json b/packages/vue-time/tsconfig.json new file mode 100644 index 00000000..5547bb3b --- /dev/null +++ b/packages/vue-time/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "preserve", + "jsxImportSource": "vue", + "moduleResolution": "Bundler", + "types": ["vue/jsx"], + "paths": { + "@tanstack/time": ["../time/src"] + } + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + ".eslintrc.cjs", + "test-setup.ts", + "vite.config.ts" + ] +} diff --git a/packages/vue-time/tsconfig.legacy.json b/packages/vue-time/tsconfig.legacy.json new file mode 100644 index 00000000..2cdb6e57 --- /dev/null +++ b/packages/vue-time/tsconfig.legacy.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "jsx": "preserve", + "jsxImportSource": "vue", + "moduleResolution": "Node", + "types": ["vue/jsx"], + "paths": { + "@tanstack/time": ["../time/src"] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx"], + "exclude": ["src/tests/**"] +} diff --git a/packages/vue-time/vite.config.ts b/packages/vue-time/vite.config.ts new file mode 100644 index 00000000..35eb453b --- /dev/null +++ b/packages/vue-time/vite.config.ts @@ -0,0 +1,29 @@ +import { defineConfig, mergeConfig } from 'vitest/config' +import { tanstackBuildConfig } from '@tanstack/config/build' +import vue from '@vitejs/plugin-vue' + +const config = defineConfig({ + plugins: [vue()], + test: { + name: 'vue-time', + dir: './src', + watch: false, + environment: 'jsdom', + setupFiles: ['test-setup.ts'], + coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] }, + typecheck: { enabled: true }, + }, + esbuild: { + jsxFactory: 'h', + jsxFragment: 'Fragment', + }, +}) + +export default mergeConfig( + config, + tanstackBuildConfig({ + entry: './src/index.ts', + srcDir: './src', + exclude: ['./src/tests'], + }), +) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..37c8fc72 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,11797 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@solidjs/testing-library': + specifier: ^0.8.6 + version: 0.8.6(@solidjs/router@0.13.1)(solid-js@1.7.8) + '@tanstack/config': + specifier: ^0.6.0 + version: 0.6.0(@types/node@18.19.3)(esbuild@0.20.2)(rollup@4.13.1)(typescript@5.2.2)(vite@5.1.5) + '@testing-library/jest-dom': + specifier: ^6.4.2 + version: 6.4.2(vitest@1.3.1) + '@testing-library/react': + specifier: ^14.2.1 + version: 14.2.1(react-dom@18.2.0)(react@18.2.0) + '@testing-library/user-event': + specifier: ^14.5.2 + version: 14.5.2(@testing-library/dom@9.3.4) + '@testing-library/vue': + specifier: ^8.0.2 + version: 8.0.2(vue@3.3.4) + '@types/eslint': + specifier: ^8.56.2 + version: 8.56.2 + '@types/node': + specifier: ^18.19.3 + version: 18.19.3 + '@types/react': + specifier: ^18.2.45 + version: 18.2.45 + '@types/react-dom': + specifier: ^18.0.5 + version: 18.0.5 + '@typescript-eslint/eslint-plugin': + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.56.0)(typescript@5.2.2) + '@vitest/coverage-istanbul': + specifier: ^1.3.1 + version: 1.3.1(vitest@1.3.1) + eslint: + specifier: ^8.56.0 + version: 8.56.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.56.0) + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-react: + specifier: ^7.33.2 + version: 7.33.2(eslint@8.56.0) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.56.0) + jsdom: + specifier: ^24.0.0 + version: 24.0.0 + knip: + specifier: ^4.6.0 + version: 4.6.0(@types/node@18.19.3)(typescript@5.2.2) + nx: + specifier: ^17.2.8 + version: 17.2.8 + prettier: + specifier: ^4.0.0-alpha.8 + version: 4.0.0-alpha.8 + publint: + specifier: ^0.2.7 + version: 0.2.7 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + rimraf: + specifier: ^5.0.5 + version: 5.0.5 + sherif: + specifier: ^0.7.0 + version: 0.7.0 + solid-js: + specifier: ^1.7.8 + version: 1.7.8 + typescript: + specifier: ^5.2.2 + version: 5.2.2 + typescript49: + specifier: npm:typescript@4.9 + version: /typescript@4.9.3 + typescript50: + specifier: npm:typescript@5.0 + version: /typescript@5.0.2 + typescript51: + specifier: npm:typescript@5.1 + version: /typescript@5.1.3 + vite: + specifier: ^5.1.5 + version: 5.1.5(@types/node@18.19.3)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) + vitest: + specifier: ^1.3.1 + version: 1.3.1(@types/node@18.19.3)(jsdom@24.0.0) + vue: + specifier: ^3.3.4 + version: 3.3.4 + + packages/angular-time: + dependencies: + '@tanstack/time': + specifier: workspace:* + version: link:../time + devDependencies: + '@analogjs/vite-plugin-angular': + specifier: ^0.2.32 + version: 0.2.32(@angular-devkit/build-angular@17.3.2) + '@angular/common': + specifier: ^17.1.2 + version: 17.1.2(@angular/core@17.1.2)(rxjs@7.8.1) + '@angular/compiler': + specifier: ^17.1.2 + version: 17.1.2(@angular/core@17.1.2) + '@angular/compiler-cli': + specifier: ^17.1.2 + version: 17.1.2(@angular/compiler@17.1.2)(typescript@5.3.3) + '@angular/core': + specifier: ^17.1.2 + version: 17.1.2(rxjs@7.8.1)(zone.js@0.14.3) + '@angular/platform-browser': + specifier: ^17.1.2 + version: 17.1.2(@angular/common@17.1.2)(@angular/core@17.1.2) + '@angular/platform-browser-dynamic': + specifier: ^17.1.2 + version: 17.1.2(@angular/common@17.1.2)(@angular/compiler@17.1.2)(@angular/core@17.1.2)(@angular/platform-browser@17.1.2) + zone.js: + specifier: ^0.14.3 + version: 0.14.3 + + packages/react-time: + dependencies: + '@tanstack/time': + specifier: workspace:* + version: link:../time + react: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + use-sync-external-store: + specifier: ^1.2.0 + version: 1.2.0(react@18.2.0) + devDependencies: + '@types/use-sync-external-store': + specifier: ^0.0.3 + version: 0.0.3 + '@vitejs/plugin-react': + specifier: ^4.2.1 + version: 4.2.1(vite@5.2.6) + + packages/solid-time: + dependencies: + '@tanstack/time': + specifier: workspace:* + version: link:../time + devDependencies: + solid-js: + specifier: ^1.7.8 + version: 1.7.8 + vite-plugin-solid: + specifier: ^2.10.1 + version: 2.10.1(@testing-library/jest-dom@6.4.2)(solid-js@1.7.8)(vite@5.2.6) + + packages/time: {} + + packages/vue-time: + dependencies: + '@tanstack/time': + specifier: workspace:* + version: link:../time + vue-demi: + specifier: ^0.14.6 + version: 0.14.6(@vue/composition-api@1.7.2)(vue@3.3.4) + devDependencies: + '@vitejs/plugin-vue': + specifier: ^5.0.2 + version: 5.0.2(vite@5.2.6)(vue@3.3.4) + '@vue/composition-api': + specifier: ^1.7.2 + version: 1.7.2(vue@3.3.4) + vue: + specifier: ^3.3.4 + version: 3.3.4 + vue2: + specifier: npm:vue@2.6 + version: /vue@2.6.0 + vue2.7: + specifier: npm:vue@2.7 + version: /vue@2.7.0 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@adobe/css-tools@4.3.3: + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + dev: true + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@analogjs/vite-plugin-angular@0.2.32(@angular-devkit/build-angular@17.3.2): + resolution: {integrity: sha512-0rmTXR60xrMcLBdeoOx7U7dcywdwlzSysVkFyztW9A3K51C3jUSn39Y3Jd4TMhhG5x+E1Ye/zvRhNgBRxf40cw==} + peerDependencies: + '@angular-devkit/build-angular': ^15.0.0 || >=16.0.0 + dependencies: + '@angular-devkit/build-angular': 17.3.2(@angular/compiler-cli@17.1.2)(@types/node@18.19.3)(typescript@5.3.3) + ts-morph: 21.0.1 + dev: true + + /@angular-devkit/architect@0.1703.2: + resolution: {integrity: sha512-fT5gSzwDHOyGv8zF97t8rjeoYSGSxXjWWstl3rN1nXdO0qgJ5m6Sv0fupON+HltdXDCBLRH+2khNpqx/Fh0Qww==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 17.3.2 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-devkit/build-angular@17.3.2(@angular/compiler-cli@17.1.2)(@types/node@18.19.3)(typescript@5.3.3): + resolution: {integrity: sha512-muPCUyL0uHvRkLH4NLWiccER6P2vCm/Q5DDvqyN4XOzzY3tAHHLrKrpvY87sgd2oNJ6Ci8x7GPNcfzR5KELCnw==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^17.0.0 + '@angular/localize': ^17.0.0 + '@angular/platform-server': ^17.0.0 + '@angular/service-worker': ^17.0.0 + '@web/test-runner': ^0.18.0 + browser-sync: ^3.0.2 + jest: ^29.5.0 + jest-environment-jsdom: ^29.5.0 + karma: ^6.3.0 + ng-packagr: ^17.0.0 + protractor: ^7.0.0 + tailwindcss: ^2.0.0 || ^3.0.0 + typescript: '>=5.2 <5.5' + peerDependenciesMeta: + '@angular/localize': + optional: true + '@angular/platform-server': + optional: true + '@angular/service-worker': + optional: true + '@web/test-runner': + optional: true + browser-sync: + optional: true + jest: + optional: true + jest-environment-jsdom: + optional: true + karma: + optional: true + ng-packagr: + optional: true + protractor: + optional: true + tailwindcss: + optional: true + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.1703.2 + '@angular-devkit/build-webpack': 0.1703.2(webpack-dev-server@4.15.1)(webpack@5.90.3) + '@angular-devkit/core': 17.3.2 + '@angular/compiler-cli': 17.1.2(@angular/compiler@17.1.2)(typescript@5.3.3) + '@babel/core': 7.24.0 + '@babel/generator': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.24.0) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-runtime': 7.24.0(@babel/core@7.24.0) + '@babel/preset-env': 7.24.0(@babel/core@7.24.0) + '@babel/runtime': 7.24.0 + '@discoveryjs/json-ext': 0.5.7 + '@ngtools/webpack': 17.3.2(@angular/compiler-cli@17.1.2)(typescript@5.3.3)(webpack@5.90.3) + '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.1.5) + ansi-colors: 4.1.3 + autoprefixer: 10.4.18(postcss@8.4.35) + babel-loader: 9.1.3(@babel/core@7.24.0)(webpack@5.90.3) + babel-plugin-istanbul: 6.1.1 + browserslist: 4.23.0 + copy-webpack-plugin: 11.0.0(webpack@5.90.3) + critters: 0.0.22 + css-loader: 6.10.0(webpack@5.90.3) + esbuild-wasm: 0.20.1 + fast-glob: 3.3.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + https-proxy-agent: 7.0.4 + inquirer: 9.2.15 + jsonc-parser: 3.2.1 + karma-source-map-support: 1.4.0 + less: 4.2.0 + less-loader: 11.1.0(less@4.2.0)(webpack@5.90.3) + license-webpack-plugin: 4.0.2(webpack@5.90.3) + loader-utils: 3.2.1 + magic-string: 0.30.8 + mini-css-extract-plugin: 2.8.1(webpack@5.90.3) + mrmime: 2.0.0 + open: 8.4.2 + ora: 5.4.1 + parse5-html-rewriting-stream: 7.0.0 + picomatch: 4.0.1 + piscina: 4.4.0 + postcss: 8.4.35 + postcss-loader: 8.1.1(postcss@8.4.35)(typescript@5.3.3)(webpack@5.90.3) + resolve-url-loader: 5.0.0 + rxjs: 7.8.1 + sass: 1.71.1 + sass-loader: 14.1.1(sass@1.71.1)(webpack@5.90.3) + semver: 7.6.0 + source-map-loader: 5.0.0(webpack@5.90.3) + source-map-support: 0.5.21 + terser: 5.29.1 + tree-kill: 1.2.2 + tslib: 2.6.2 + typescript: 5.3.3 + undici: 6.7.1 + vite: 5.1.5(@types/node@18.19.3)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) + watchpack: 2.4.0 + webpack: 5.90.3(esbuild@0.20.2) + webpack-dev-middleware: 6.1.2(webpack@5.90.3) + webpack-dev-server: 4.15.1(webpack@5.90.3) + webpack-merge: 5.10.0 + webpack-subresource-integrity: 5.1.0(webpack@5.90.3) + optionalDependencies: + esbuild: 0.20.1 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - '@types/express' + - '@types/node' + - bufferutil + - chokidar + - debug + - html-webpack-plugin + - lightningcss + - node-sass + - sass-embedded + - stylus + - sugarss + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + + /@angular-devkit/build-webpack@0.1703.2(webpack-dev-server@4.15.1)(webpack@5.90.3): + resolution: {integrity: sha512-w7rVFQcZK4iTCd/MLfQWIkDkwBOfAs++txNQyS9qYID8KvLs1V+oWYd2qDBRelRv1u3YtaCIS1pQx3GFKBC3OA==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + webpack: ^5.30.0 + webpack-dev-server: ^4.0.0 + dependencies: + '@angular-devkit/architect': 0.1703.2 + rxjs: 7.8.1 + webpack: 5.90.3(esbuild@0.20.2) + webpack-dev-server: 4.15.1(webpack@5.90.3) + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-devkit/core@17.3.2: + resolution: {integrity: sha512-1vxKo9+pdSwTOwqPDSYQh84gZYmCJo6OgR5+AZoGLGMZSeqvi9RG5RiUcOMLQYOnuYv0arlhlWxz0ZjyR8ApKw==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + jsonc-parser: 3.2.1 + picomatch: 4.0.1 + rxjs: 7.8.1 + source-map: 0.7.4 + dev: true + + /@angular/common@17.1.2(@angular/core@17.1.2)(rxjs@7.8.1): + resolution: {integrity: sha512-y/wD+zuPaPgK3dB80Q63qBtuu5TuryKuUgjWrOmrguBWV9oiJRhKQrcp1gVw9vVrowmbDBKGtPMS622Q4oxOWQ==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/core': 17.1.2 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/core': 17.1.2(rxjs@7.8.1)(zone.js@0.14.3) + rxjs: 7.8.1 + tslib: 2.6.2 + dev: true + + /@angular/compiler-cli@17.1.2(@angular/compiler@17.1.2)(typescript@5.3.3): + resolution: {integrity: sha512-4P4ttCe4IF9yq7bxCDxbVW7purN7qV0nqofP5Tth1xCsgIJeGmOMMQJN5RJCZNrAPMkvMv39eV878sgcDjbpOA==} + engines: {node: ^18.13.0 || >=20.9.0} + hasBin: true + peerDependencies: + '@angular/compiler': 17.1.2 + typescript: '>=5.2 <5.4' + dependencies: + '@angular/compiler': 17.1.2(@angular/core@17.1.2) + '@babel/core': 7.23.2 + '@jridgewell/sourcemap-codec': 1.4.15 + chokidar: 3.6.0 + convert-source-map: 1.9.0 + reflect-metadata: 0.1.14 + semver: 7.6.0 + tslib: 2.6.2 + typescript: 5.3.3 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@angular/compiler@17.1.2(@angular/core@17.1.2): + resolution: {integrity: sha512-1vJuQRM5V01nC6qsLvBKrHVZXpzbK0YKubwVQUXCSfDNZBcDFak3SQcwU4C2t880rU3ZvFDB1UWfk7CKn5w9Kw==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/core': 17.1.2 + peerDependenciesMeta: + '@angular/core': + optional: true + dependencies: + '@angular/core': 17.1.2(rxjs@7.8.1)(zone.js@0.14.3) + tslib: 2.6.2 + dev: true + + /@angular/core@17.1.2(rxjs@7.8.1)(zone.js@0.14.3): + resolution: {integrity: sha512-0M787BZVgYSVogHCUzo/dFrT56TgfQoEsOQngHMpyERJZv6dycXZlRdHc6TzvHUa+Uu/MNjn/RclBR8063bdWA==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.14.0 + dependencies: + rxjs: 7.8.1 + tslib: 2.6.2 + zone.js: 0.14.3 + dev: true + + /@angular/platform-browser-dynamic@17.1.2(@angular/common@17.1.2)(@angular/compiler@17.1.2)(@angular/core@17.1.2)(@angular/platform-browser@17.1.2): + resolution: {integrity: sha512-xiWVDHbA+owDhKo5SAnzZtawA1ktGthlCl3YTI+vmkJpF6axkYOqR7YL+aEQX/y/5GSK+oR+03SgAnYcpOwKlQ==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/common': 17.1.2 + '@angular/compiler': 17.1.2 + '@angular/core': 17.1.2 + '@angular/platform-browser': 17.1.2 + dependencies: + '@angular/common': 17.1.2(@angular/core@17.1.2)(rxjs@7.8.1) + '@angular/compiler': 17.1.2(@angular/core@17.1.2) + '@angular/core': 17.1.2(rxjs@7.8.1)(zone.js@0.14.3) + '@angular/platform-browser': 17.1.2(@angular/common@17.1.2)(@angular/core@17.1.2) + tslib: 2.6.2 + dev: true + + /@angular/platform-browser@17.1.2(@angular/common@17.1.2)(@angular/core@17.1.2): + resolution: {integrity: sha512-unfpA5OLnqDmDb/oAQR2t2iROpOg02qwZayxyFg4MUZdDdnghPCfX77L2sr6oVVa7OJfKYFlmwmBXX1H3zjcXA==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/animations': 17.1.2 + '@angular/common': 17.1.2 + '@angular/core': 17.1.2 + peerDependenciesMeta: + '@angular/animations': + optional: true + dependencies: + '@angular/common': 17.1.2(@angular/core@17.1.2)(rxjs@7.8.1) + '@angular/core': 17.1.2(rxjs@7.8.1)(zone.js@0.14.3) + tslib: 2.6.2 + dev: true + + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 + dev: true + + /@babel/compat-data@7.24.1: + resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.2) + '@babel/helpers': 7.24.1 + '@babel/parser': 7.24.1 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core@7.24.0: + resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helpers': 7.24.1 + '@babel/parser': 7.24.1 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core@7.24.3: + resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helpers': 7.24.1 + '@babel/parser': 7.24.1 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + + /@babel/generator@7.24.1: + resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.1 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.0): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.24.0): + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.0): + resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-module-imports@7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.0): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + dev: true + + /@babel/helpers@7.24.1: + resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 + dev: true + + /@babel/parser@7.24.1: + resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.0) + dev: true + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.0): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.0): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.0): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.0): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.0): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.24.0): + resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 + dev: true + + /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.0): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) + dev: true + + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-runtime@7.24.0(@babel/core@7.24.0): + resolution: {integrity: sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.0) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.24.0) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.0): + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/preset-env@7.24.0(@babel/core@7.24.0): + resolution: {integrity: sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.24.1 + '@babel/core': 7.24.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.0) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.24.0) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.0) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.0) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.0) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.24.0) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.0) + core-js-compat: 3.36.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.0): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.0 + esutils: 2.0.3 + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime@7.24.0: + resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: true + + /@babel/runtime@7.24.1: + resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: true + + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + dev: true + + /@babel/traverse@7.24.1: + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@commitlint/parse@18.6.1: + resolution: {integrity: sha512-eS/3GREtvVJqGZrwAGRwR9Gdno3YcZ6Xvuaa+vUF8j++wsmxrA2En3n0ccfVO2qVOLJC41ni7jSZhQiJpMPGOQ==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 18.6.1 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + dev: true + + /@commitlint/types@18.6.1: + resolution: {integrity: sha512-gwRLBLra/Dozj2OywopeuHj2ac26gjGkz2cZ+86cTJOdtWfiRRr4+e77ZDAGc6MDWxaWheI+mAV5TLWWRwqrFg==} + engines: {node: '>=v18'} + dependencies: + chalk: 4.1.2 + dev: true + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: true + + /@ericcornelissen/bash-parser@0.5.2: + resolution: {integrity: sha512-4pIMTa1nEFfMXitv7oaNEWOdM+zpOZavesa5GaiWTgda6Zk32CFGxjUp/iIaN0PwgUW1yTq/fztSjbpE8SLGZQ==} + engines: {node: '>=4'} + dependencies: + array-last: 1.3.0 + babylon: 6.18.0 + compose-function: 3.0.3 + deep-freeze: 0.0.1 + filter-iterator: 0.0.1 + filter-obj: 1.1.0 + has-own-property: 0.1.0 + identity-function: 1.0.0 + is-iterable: 1.1.1 + iterable-lookahead: 1.0.0 + lodash.curry: 4.1.1 + magic-string: 0.16.0 + map-obj: 2.0.0 + object-pairs: 0.1.0 + object-values: 1.0.0 + reverse-arguments: 1.0.0 + shell-quote-word: 1.0.1 + to-pascal-case: 1.0.0 + unescape-js: 1.1.4 + dev: true + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/aix-ppc64@0.20.1: + resolution: {integrity: sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.20.1: + resolution: {integrity: sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.20.1: + resolution: {integrity: sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.20.1: + resolution: {integrity: sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.20.1: + resolution: {integrity: sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.20.1: + resolution: {integrity: sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.20.1: + resolution: {integrity: sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.20.1: + resolution: {integrity: sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.20.1: + resolution: {integrity: sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.20.1: + resolution: {integrity: sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.20.1: + resolution: {integrity: sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.20.1: + resolution: {integrity: sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.20.1: + resolution: {integrity: sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.20.1: + resolution: {integrity: sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.20.1: + resolution: {integrity: sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.20.1: + resolution: {integrity: sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.20.1: + resolution: {integrity: sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.20.1: + resolution: {integrity: sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.20.1: + resolution: {integrity: sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.20.1: + resolution: {integrity: sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.20.1: + resolution: {integrity: sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.20.1: + resolution: {integrity: sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.20.1: + resolution: {integrity: sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: true + + /@iarna/toml@2.2.5: + resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@leichtgewicht/ip-codec@2.0.5: + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + dev: true + + /@ljharb/through@2.3.13: + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /@microsoft/api-extractor-model@7.28.13(@types/node@18.19.3): + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@18.19.3) + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor@7.43.0(@types/node@18.19.3): + resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.28.13(@types/node@18.19.3) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@18.19.3) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.10.0(@types/node@18.19.3) + '@rushstack/ts-command-line': 4.19.1(@types/node@18.19.3) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + dev: true + + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + dev: true + + /@ngtools/webpack@17.3.2(@angular/compiler-cli@17.1.2)(typescript@5.3.3)(webpack@5.90.3): + resolution: {integrity: sha512-E8zejFF4aJ8l2XcF+GgnE/1IqsZepnPT1xzulLB4LXtjVuXLFLoF9xkHQwxs7cJWWZsxd/SlNsCIcn/ezrYBcQ==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^17.0.0 + typescript: '>=5.2 <5.5' + webpack: ^5.54.0 + dependencies: + '@angular/compiler-cli': 17.1.2(@angular/compiler@17.1.2)(typescript@5.3.3) + typescript: 5.3.3 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.scandir@3.0.0: + resolution: {integrity: sha512-ktI9+PxfHYtKjF3cLTUAh2N+b8MijCRPNwKJNqTVdL0gB0QxLU2rIRaZ1t71oEa3YBDE6bukH1sR0+CDnpp/Mg==} + engines: {node: '>=16.14.0'} + dependencies: + '@nodelib/fs.stat': 3.0.0 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.stat@3.0.0: + resolution: {integrity: sha512-2tQOI38s19P9i7X/Drt0v8iMA+KMsgdhB/dyPER+e+2Y8L1Z7QvnuRdW/uLuf5YRFUYmnj4bMA6qCuZHFI1GDQ==} + engines: {node: '>=16.14.0'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@nodelib/fs.walk@2.0.0: + resolution: {integrity: sha512-54voNDBobGdMl3BUXSu7UaDh1P85PGHWlJ5e0XhPugo1JulOyCtp2I+5ri4wplGDJ8QGwPEQW7/x3yTLU7yF1A==} + engines: {node: '>=16.14.0'} + dependencies: + '@nodelib/fs.scandir': 3.0.0 + fastq: 1.17.1 + dev: true + + /@npmcli/git@5.0.4: + resolution: {integrity: sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/promise-spawn': 7.0.1 + lru-cache: 10.2.0 + npm-pick-manifest: 9.0.0 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.6.0 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/map-workspaces@3.0.4: + resolution: {integrity: sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/name-from-folder': 2.0.0 + glob: 10.3.10 + minimatch: 9.0.3 + read-package-json-fast: 3.0.2 + dev: true + + /@npmcli/name-from-folder@2.0.0: + resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@npmcli/package-json@5.0.0: + resolution: {integrity: sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/git': 5.0.4 + glob: 10.3.10 + hosted-git-info: 7.0.1 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + proc-log: 3.0.0 + semver: 7.6.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/promise-spawn@7.0.1: + resolution: {integrity: sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + which: 4.0.0 + dev: true + + /@nrwl/tao@17.2.8: + resolution: {integrity: sha512-Qpk5YKeJ+LppPL/wtoDyNGbJs2MsTi6qyX/RdRrEc8lc4bk6Cw3Oul1qTXCI6jT0KzTz+dZtd0zYD/G7okkzvg==} + hasBin: true + dependencies: + nx: 17.2.8 + tslib: 2.6.2 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + dev: true + + /@nx/nx-darwin-arm64@17.2.8: + resolution: {integrity: sha512-dMb0uxug4hM7tusISAU1TfkDK3ixYmzc1zhHSZwpR7yKJIyKLtUpBTbryt8nyso37AS1yH+dmfh2Fj2WxfBHTg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-darwin-x64@17.2.8: + resolution: {integrity: sha512-0cXzp1tGr7/6lJel102QiLA4NkaLCkQJj6VzwbwuvmuCDxPbpmbz7HC1tUteijKBtOcdXit1/MEoEU007To8Bw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-freebsd-x64@17.2.8: + resolution: {integrity: sha512-YFMgx5Qpp2btCgvaniDGdu7Ctj56bfFvbbaHQWmOeBPK1krNDp2mqp8HK6ZKOfEuDJGOYAp7HDtCLvdZKvJxzA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-arm-gnueabihf@17.2.8: + resolution: {integrity: sha512-iN2my6MrhLRkVDtdivQHugK8YmR7URo1wU9UDuHQ55z3tEcny7LV3W9NSsY9UYPK/FrxdDfevj0r2hgSSdhnzA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-arm64-gnu@17.2.8: + resolution: {integrity: sha512-Iy8BjoW6mOKrSMiTGujUcNdv+xSM1DALTH6y3iLvNDkGbjGK1Re6QNnJAzqcXyDpv32Q4Fc57PmuexyysZxIGg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-arm64-musl@17.2.8: + resolution: {integrity: sha512-9wkAxWzknjpzdofL1xjtU6qPFF1PHlvKCZI3hgEYJDo4mQiatGI+7Ttko+lx/ZMP6v4+Umjtgq7+qWrApeKamQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-x64-gnu@17.2.8: + resolution: {integrity: sha512-sjG1bwGsjLxToasZ3lShildFsF0eyeGu+pOQZIp9+gjFbeIkd19cTlCnHrOV9hoF364GuKSXQyUlwtFYFR4VTQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-linux-x64-musl@17.2.8: + resolution: {integrity: sha512-QiakXZ1xBCIptmkGEouLHQbcM4klQkcr+kEaz2PlNwy/sW3gH1b/1c0Ed5J1AN9xgQxWspriAONpScYBRgxdhA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-win32-arm64-msvc@17.2.8: + resolution: {integrity: sha512-XBWUY/F/GU3vKN9CAxeI15gM4kr3GOBqnzFZzoZC4qJt2hKSSUEWsMgeZtsMgeqEClbi4ZyCCkY7YJgU32WUGA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nx/nx-win32-x64-msvc@17.2.8: + resolution: {integrity: sha512-HTqDv+JThlLzbcEm/3f+LbS5/wYQWzb5YDXbP1wi7nlCTihNZOLNqGOkEmwlrR5tAdNHPRpHSmkYg4305W0CtA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@one-ini/wasm@0.1.1: + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pnpm/constants@7.1.1: + resolution: {integrity: sha512-31pZqMtjwV+Vaq7MaPrT1EoDFSYwye3dp6BiHIGRJmVThCQwySRKM7hCvqqI94epNkqFAAYoWrNynWoRYosGdw==} + engines: {node: '>=16.14'} + dev: true + + /@pnpm/core-loggers@9.0.6(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-iK67SGbp+06bA/elpg51wygPFjNA7JKHtKkpLxqXXHw+AjFFBC3f2OznJsCIuDK6HdGi5UhHLYqo5QxJ2gMqJQ==} + engines: {node: '>=16.14'} + peerDependencies: + '@pnpm/logger': ^5.0.0 + dependencies: + '@pnpm/logger': 5.0.0 + '@pnpm/types': 9.4.2 + dev: true + + /@pnpm/error@5.0.3: + resolution: {integrity: sha512-ONJU5cUeoeJSy50qOYsMZQHTA/9QKmGgh1ATfEpCLgtbdwqUiwD9MxHNeXUYYI/pocBCz6r1ZCFqiQvO+8SUKA==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/constants': 7.1.1 + dev: true + + /@pnpm/fetching-types@5.0.0: + resolution: {integrity: sha512-o9gdO1v8Uc5P2fBBuW6GSpfTqIivQmQlqjQJdFiQX0m+tgxlrMRneIg392jZuc6fk7kFqjLheInlslgJfwY+4Q==} + engines: {node: '>=16.14'} + dependencies: + '@zkochan/retry': 0.2.0 + node-fetch: 3.0.0-beta.9 + transitivePeerDependencies: + - domexception + dev: true + + /@pnpm/graceful-fs@3.2.0: + resolution: {integrity: sha512-vRoXJxscDpHak7YE9SqCkzfrayn+Lw+YueOeHIPEqkgokrHeYgYeONoc2kGh0ObHaRtNSsonozVfJ456kxLNvA==} + engines: {node: '>=16.14'} + dependencies: + graceful-fs: 4.2.11 + dev: true + + /@pnpm/logger@5.0.0: + resolution: {integrity: sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw==} + engines: {node: '>=12.17'} + dependencies: + bole: 5.0.11 + ndjson: 2.0.0 + dev: true + + /@pnpm/npm-package-arg@1.0.0: + resolution: {integrity: sha512-oQYP08exi6mOPdAZZWcNIGS+KKPsnNwUBzSuAEGWuCcqwMAt3k/WVCqVIXzBxhO5sP2b43og69VHmPj6IroKqw==} + engines: {node: '>=14.6'} + dependencies: + hosted-git-info: 4.1.0 + semver: 7.6.0 + validate-npm-package-name: 4.0.0 + dev: true + + /@pnpm/npm-resolver@18.1.1(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-NptzncmMD5ZMimbjWkGpMzuBRhlCY+sh7mzypPdBOTNlh5hmEQe/VaRKjNK4V9/b0C/llElkvIePL6acybu86w==} + engines: {node: '>=16.14'} + peerDependencies: + '@pnpm/logger': ^5.0.0 + dependencies: + '@pnpm/core-loggers': 9.0.6(@pnpm/logger@5.0.0) + '@pnpm/error': 5.0.3 + '@pnpm/fetching-types': 5.0.0 + '@pnpm/graceful-fs': 3.2.0 + '@pnpm/logger': 5.0.0 + '@pnpm/resolve-workspace-range': 5.0.1 + '@pnpm/resolver-base': 11.1.0 + '@pnpm/types': 9.4.2 + '@zkochan/retry': 0.2.0 + encode-registry: 3.0.1 + load-json-file: 6.2.0 + lru-cache: 10.2.0 + normalize-path: 3.0.0 + p-limit: 3.1.0 + p-memoize: 4.0.1 + parse-npm-tarball-url: 3.0.0 + path-temp: 2.1.0 + ramda: /@pnpm/ramda@0.28.1 + rename-overwrite: 5.0.0 + semver: 7.6.0 + ssri: 10.0.5 + version-selector-type: 3.0.0 + transitivePeerDependencies: + - domexception + dev: true + + /@pnpm/ramda@0.28.1: + resolution: {integrity: sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==} + dev: true + + /@pnpm/resolve-workspace-range@5.0.1: + resolution: {integrity: sha512-yQ0pMthlw8rTgS/C9hrjne+NEnnSNevCjtdodd7i15I59jMBYciHifZ/vjg0NY+Jl+USTc3dBE+0h/4tdYjMKg==} + engines: {node: '>=16.14'} + dependencies: + semver: 7.6.0 + dev: true + + /@pnpm/resolver-base@11.1.0: + resolution: {integrity: sha512-y2qKaj18pwe1VWc3YXEitdYFo+WqOOt60aqTUuOVkJAirUzz0DzuYh3Ifct4znYWPdgUXHaN5DMphNF5iL85rA==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/types': 9.4.2 + dev: true + + /@pnpm/types@9.4.2: + resolution: {integrity: sha512-g1hcF8Nv4gd76POilz9gD4LITAPXOe5nX4ijgr8ixCbLQZfcpYiMfJ+C1RlMNRUDo8vhlNB4O3bUlxmT6EAQXA==} + engines: {node: '>=16.14'} + dev: true + + /@pnpm/workspace.pkgs-graph@2.0.15(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-Txxd5FzzVfBfGCTngISaxFlJzZhzdS8BUrCEtAWJfZOFbQzpWy27rzkaS7TaWW2dHiFcCVYzPI/2vgxfeRansA==} + engines: {node: '>=16.14'} + dependencies: + '@pnpm/npm-package-arg': 1.0.0 + '@pnpm/npm-resolver': 18.1.1(@pnpm/logger@5.0.0) + '@pnpm/resolve-workspace-range': 5.0.1 + ramda: /@pnpm/ramda@0.28.1 + transitivePeerDependencies: + - '@pnpm/logger' + - domexception + dev: true + + /@prettier/cli@0.3.0(prettier@4.0.0-alpha.8): + resolution: {integrity: sha512-8qq527QT5n8paE9eoHeulmGw7a3MroVk5+8ITf+xoWJn1gcVaZiOP6vb9OlwZv49hhdRZ1WX+0MyisSSXL/4fA==} + hasBin: true + peerDependencies: + prettier: ^3.1.0 || ^4.0.0 + dependencies: + '@iarna/toml': 2.2.5 + atomically: 2.0.2 + fast-ignore: 1.1.1 + find-up-json: 2.0.4 + import-meta-resolve: 4.0.0 + is-binary-path: 2.1.0 + js-yaml: 4.1.0 + json-sorted-stringify: 1.0.0 + json5: 2.2.3 + kasi: 1.1.0 + pioppo: 1.1.0 + prettier: 4.0.0-alpha.8 + specialist: 1.4.0 + tiny-editorconfig: 1.0.0 + tiny-jsonc: 1.0.1 + tiny-readdir-glob: 1.4.0 + tiny-spinner: 2.0.3 + worktank: 2.6.0 + zeptomatch: 1.2.2 + dev: true + + /@rollup/pluginutils@5.1.0(rollup@4.13.1): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 4.13.1 + dev: true + + /@rollup/rollup-android-arm-eabi@4.13.1: + resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.13.1: + resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.13.1: + resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.13.1: + resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.13.1: + resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.13.1: + resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.13.1: + resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.13.1: + resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.13.1: + resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.13.1: + resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.13.1: + resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.13.1: + resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.13.1: + resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.13.1: + resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rushstack/node-core-library@4.0.2(@types/node@18.19.3): + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 18.19.3 + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + z-schema: 5.0.5 + dev: true + + /@rushstack/rig-package@0.5.2: + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} + dependencies: + resolve: 1.22.8 + strip-json-comments: 3.1.1 + dev: true + + /@rushstack/terminal@0.10.0(@types/node@18.19.3): + resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 4.0.2(@types/node@18.19.3) + '@types/node': 18.19.3 + supports-color: 8.1.1 + dev: true + + /@rushstack/ts-command-line@4.19.1(@types/node@18.19.3): + resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} + dependencies: + '@rushstack/terminal': 0.10.0(@types/node@18.19.3) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@snyk/github-codeowners@1.1.0: + resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==} + engines: {node: '>=8.10'} + hasBin: true + dependencies: + commander: 4.1.1 + ignore: 5.3.1 + p-map: 4.0.0 + dev: true + + /@solidjs/router@0.13.1(solid-js@1.7.8): + resolution: {integrity: sha512-Rz5Lf0ssWMuN+Wm2GFO0vwZoO/KSwYFSuCUzWrRAvje5M0ZYZrMk5FZxuzdJT+zg8KuqWJQlRALks5E0r+FjAA==} + peerDependencies: + solid-js: ^1.8.6 + dependencies: + solid-js: 1.7.8 + dev: true + + /@solidjs/testing-library@0.8.6(@solidjs/router@0.13.1)(solid-js@1.7.8): + resolution: {integrity: sha512-MnDGfUw38SjE+lmCDZ44HeZq5WbDU7s/BTa7uvqv55GKatddoWiJmHanUAbuEtmwMdEv+fFQQzftkqrFXEn1BQ==} + engines: {node: '>= 14'} + peerDependencies: + '@solidjs/router': '>=0.9.0' + solid-js: '>=1.0.0' + dependencies: + '@solidjs/router': 0.13.1(solid-js@1.7.8) + '@testing-library/dom': 9.3.4 + solid-js: 1.7.8 + dev: true + + /@tanstack/config@0.6.0(@types/node@18.19.3)(esbuild@0.20.2)(rollup@4.13.1)(typescript@5.2.2)(vite@5.1.5): + resolution: {integrity: sha512-ndVPsyXWZFz3RcpRF7q5L4Ol5zY+m1H2lAiufw+J4BrV09042PETU2OZAREYz88ZcLtu6p+LZAHKltmqrL8gDg==} + engines: {node: '>=18'} + hasBin: true + requiresBuild: true + dependencies: + '@commitlint/parse': 18.6.1 + chalk: 5.3.0 + commander: 12.0.0 + current-git-branch: 1.1.0 + esbuild-register: 3.5.0(esbuild@0.20.2) + git-log-parser: 1.2.0 + interpret: 3.1.1 + jsonfile: 6.1.0 + liftoff: 4.0.0 + luxon: 3.4.4 + minimist: 1.2.8 + rollup-plugin-preserve-directives: 0.4.0(rollup@4.13.1) + semver: 7.6.0 + stream-to-array: 2.3.0 + v8flags: 4.0.1 + vite-plugin-dts: 3.8.1(@types/node@18.19.3)(rollup@4.13.1)(typescript@5.2.2)(vite@5.1.5) + vite-plugin-externalize-deps: 0.8.0(vite@5.1.5) + vite-tsconfig-paths: 4.3.2(typescript@5.2.2)(vite@5.1.5) + transitivePeerDependencies: + - '@types/node' + - esbuild + - rollup + - supports-color + - typescript + - vite + dev: true + + /@testing-library/dom@9.3.4: + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/runtime': 7.24.1 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/jest-dom@6.4.2(vitest@1.3.1): + resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + dependencies: + '@adobe/css-tools': 4.3.3 + '@babel/runtime': 7.24.1 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + vitest: 1.3.1(@types/node@18.19.3)(jsdom@24.0.0) + dev: true + + /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.24.1 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.0.5 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4): + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + dependencies: + '@testing-library/dom': 9.3.4 + dev: true + + /@testing-library/vue@8.0.2(vue@3.3.4): + resolution: {integrity: sha512-A8wWX+qQn0o0izpQWnGCpwQt8wAdpsVP8vPP2h5Q/jcGhZ5yKXz9PPUqhQv+45LTFaWlyRf8bArTVaB/KFFd5A==} + engines: {node: '>=14'} + peerDependencies: + '@vue/compiler-sfc': '>= 3' + vue: '>= 3' + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@babel/runtime': 7.24.1 + '@testing-library/dom': 9.3.4 + '@vue/test-utils': 2.4.5 + vue: 3.3.4 + dev: true + + /@ts-morph/common@0.22.0: + resolution: {integrity: sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==} + dependencies: + fast-glob: 3.3.2 + minimatch: 9.0.3 + mkdirp: 3.0.1 + path-browserify: 1.0.1 + dev: true + + /@types/argparse@1.0.38: + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + dev: true + + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + dev: true + + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + dependencies: + '@types/connect': 3.4.38 + '@types/node': 18.19.26 + dev: true + + /@types/bonjour@3.5.13: + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + dependencies: + '@types/node': 18.19.26 + dev: true + + /@types/connect-history-api-fallback@1.5.4: + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + dependencies: + '@types/express-serve-static-core': 4.17.43 + '@types/node': 18.19.26 + dev: true + + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 18.19.26 + dev: true + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.6 + '@types/estree': 1.0.5 + dev: true + + /@types/eslint@8.56.2: + resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/eslint@8.56.6: + resolution: {integrity: sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/express-serve-static-core@4.17.43: + resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} + dependencies: + '@types/node': 18.19.26 + '@types/qs': 6.9.14 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true + + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.43 + '@types/qs': 6.9.14 + '@types/serve-static': 1.15.5 + dev: true + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/http-proxy@1.17.14: + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + dependencies: + '@types/node': 18.19.26 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + + /@types/mime@3.0.4: + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + dev: true + + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 18.19.26 + dev: true + + /@types/node@18.19.26: + resolution: {integrity: sha512-+wiMJsIwLOYCvUqSdKTrfkS8mpTp+MPINe6+Np4TAGFWWRWiBQ5kSq9nZGCSPkzx9mvT+uEukzpX4MOSCydcvw==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/node@18.19.3: + resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/picomatch@2.3.3: + resolution: {integrity: sha512-Yll76ZHikRFCyz/pffKGjrCwe/le2CDwOP5F210KQo27kpRE46U2rDnzikNlVn6/ezH3Mhn46bJMTfeVTtcYMg==} + dev: true + + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + dev: true + + /@types/qs@6.9.14: + resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==} + dev: true + + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true + + /@types/react-dom@18.0.5: + resolution: {integrity: sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==} + dependencies: + '@types/react': 18.2.45 + dev: true + + /@types/react@18.2.45: + resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} + dependencies: + '@types/prop-types': 15.7.12 + '@types/scheduler': 0.23.0 + csstype: 3.1.3 + dev: true + + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: true + + /@types/scheduler@0.23.0: + resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} + dev: true + + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.19.26 + dev: true + + /@types/serve-index@1.9.4: + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + dependencies: + '@types/express': 4.17.21 + dev: true + + /@types/serve-static@1.15.5: + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 18.19.26 + dev: true + + /@types/sockjs@0.3.36: + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + dependencies: + '@types/node': 18.19.26 + dev: true + + /@types/use-sync-external-store@0.0.3: + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} + dev: true + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 18.19.26 + dev: true + + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.2.2): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.2.2): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + eslint: 8.56.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + dev: true + + /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.2.2): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.56.0 + ts-api-utils: 1.3.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.2.2): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.2.2): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.2.2) + eslint: 8.56.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vitejs/plugin-basic-ssl@1.1.0(vite@5.1.5): + resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==} + engines: {node: '>=14.6.0'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + vite: 5.1.5(@types/node@18.19.3)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) + dev: true + + /@vitejs/plugin-react@4.2.1(vite@5.2.6): + resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + dependencies: + '@babel/core': 7.24.3 + '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.3) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.0 + vite: 5.2.6(@types/node@18.19.3) + transitivePeerDependencies: + - supports-color + dev: true + + /@vitejs/plugin-vue@5.0.2(vite@5.2.6)(vue@3.3.4): + resolution: {integrity: sha512-kEjJHrLb5ePBvjD0SPZwJlw1QTRcjjCA9sB5VyfonoXVBxTS7TMnqL6EkLt1Eu61RDeiuZ/WN9Hf6PxXhPI2uA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + dependencies: + vite: 5.2.6(@types/node@18.19.3) + vue: 3.3.4 + dev: true + + /@vitest/coverage-istanbul@1.3.1(vitest@1.3.1): + resolution: {integrity: sha512-aBVgQ2eY9gzrxBJjGKbWgatTU2w1CacEx0n8OMctPzl9836KqoM5X/WigJpjM7wZEtX2N0ZTE5KDGPmVM+o2Wg==} + peerDependencies: + vitest: 1.3.1 + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + magicast: 0.3.3 + picocolors: 1.0.0 + test-exclude: 6.0.0 + vitest: 1.3.1(@types/node@18.19.3)(jsdom@24.0.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@vitest/expect@1.3.1: + resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} + dependencies: + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 + chai: 4.4.1 + dev: true + + /@vitest/runner@1.3.1: + resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} + dependencies: + '@vitest/utils': 1.3.1 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true + + /@vitest/snapshot@1.3.1: + resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} + dependencies: + magic-string: 0.30.8 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@1.3.1: + resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} + dependencies: + tinyspy: 2.2.1 + dev: true + + /@vitest/utils@1.3.1: + resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + + /@volar/language-core@1.11.1: + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + dependencies: + '@volar/source-map': 1.11.1 + dev: true + + /@volar/source-map@1.11.1: + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + dependencies: + muggle-string: 0.3.1 + dev: true + + /@volar/typescript@1.11.1: + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + dependencies: + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 + dev: true + + /@vue/compiler-core@3.3.4: + resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} + dependencies: + '@babel/parser': 7.24.1 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + /@vue/compiler-core@3.4.21: + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + dependencies: + '@babel/parser': 7.24.1 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + dev: true + + /@vue/compiler-dom@3.3.4: + resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} + dependencies: + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + + /@vue/compiler-dom@3.4.21: + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + dev: true + + /@vue/compiler-sfc@2.7.0: + resolution: {integrity: sha512-hPOI15RsXO1G8aK6FNF93ld9C/D4e/uAJBE59K8NnL8giuKqeVksvamgu4jKhCJ9f9bbUpj5BuSV3sufIx2hmw==} + dependencies: + '@babel/parser': 7.24.1 + postcss: 8.4.38 + source-map: 0.6.1 + dev: true + + /@vue/compiler-sfc@3.3.4: + resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} + dependencies: + '@babel/parser': 7.24.1 + '@vue/compiler-core': 3.3.4 + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-ssr': 3.3.4 + '@vue/reactivity-transform': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.8 + postcss: 8.4.38 + source-map-js: 1.2.0 + + /@vue/compiler-ssr@3.3.4: + resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==} + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/shared': 3.3.4 + + /@vue/composition-api@1.7.2(vue@3.3.4): + resolution: {integrity: sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==} + peerDependencies: + vue: '>= 2.5 < 2.7' + dependencies: + vue: 3.3.4 + + /@vue/language-core@1.8.27(typescript@5.2.2): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + computeds: 0.0.1 + minimatch: 9.0.3 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + typescript: 5.2.2 + vue-template-compiler: 2.7.16 + dev: true + + /@vue/reactivity-transform@3.3.4: + resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} + dependencies: + '@babel/parser': 7.24.1 + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.8 + + /@vue/reactivity@3.3.4: + resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} + dependencies: + '@vue/shared': 3.3.4 + + /@vue/runtime-core@3.3.4: + resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} + dependencies: + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + + /@vue/runtime-dom@3.3.4: + resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} + dependencies: + '@vue/runtime-core': 3.3.4 + '@vue/shared': 3.3.4 + csstype: 3.1.3 + + /@vue/server-renderer@3.3.4(vue@3.3.4): + resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} + peerDependencies: + vue: 3.3.4 + dependencies: + '@vue/compiler-ssr': 3.3.4 + '@vue/shared': 3.3.4 + vue: 3.3.4 + + /@vue/shared@3.3.4: + resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + + /@vue/shared@3.4.21: + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + dev: true + + /@vue/test-utils@2.4.5: + resolution: {integrity: sha512-oo2u7vktOyKUked36R93NB7mg2B+N7Plr8lxp2JBGwr18ch6EggFjixSCdIVVLkT6Qr0z359Xvnafc9dcKyDUg==} + dependencies: + js-beautify: 1.15.1 + vue-component-type-helpers: 2.0.7 + dev: true + + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true + + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + dev: true + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + dev: true + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true + + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + dev: true + + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + dev: true + + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /@yarnpkg/lockfile@1.1.0: + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + dev: true + + /@yarnpkg/parsers@3.0.0-rc.46: + resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} + engines: {node: '>=14.15.0'} + dependencies: + js-yaml: 3.14.1 + tslib: 2.6.2 + dev: true + + /@zkochan/js-yaml@0.0.6: + resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /@zkochan/retry@0.2.0: + resolution: {integrity: sha512-WhB+2B/ZPlW2Xy/kMJBrMbqecWXcbDDgn0K0wKBAgO2OlBTz1iLJrRWduo+DGGn0Akvz1Lu4Xvls7dJojximWw==} + engines: {node: '>=10'} + dev: true + + /@zkochan/rimraf@2.1.3: + resolution: {integrity: sha512-mCfR3gylCzPC+iqdxEA6z5SxJeOgzgbwmyxanKriIne5qZLswDe/M43aD3p5MNzwzXRhbZg/OX+MpES6Zk1a6A==} + engines: {node: '>=12.10'} + dependencies: + rimraf: 3.0.2 + dev: true + + /JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.0 + dev: true + + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.12.0 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv-keywords@5.1.0(ajv@8.12.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.12.0 + fast-deep-equal: 3.1.3 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-purge@1.0.0: + resolution: {integrity: sha512-kbm4dtp1jcI8ZWhttEPzmga9fwbhGMinIDghOcBng5q9dOsnM6PYV3ih+5TO4D7inGXU9zBmVi7x1Z4dluY85Q==} + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /ansi-truncate@1.1.2: + resolution: {integrity: sha512-yhyu5Y/rRWku5GJfCCHHKyJsWahCRuy/ORI8wmClls+bUWMVpcVL6nEqmVnZZ9gaaWq+AWB6FCyarrt0ewVUXQ==} + dependencies: + fast-string-truncated-width: 1.1.0 + dev: true + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /argv-formatter@1.0.0: + resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} + dev: true + + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.3 + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /arity-n@1.0.4: + resolution: {integrity: sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==} + dev: true + + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + + /array-each@1.0.1: + resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} + engines: {node: '>=0.10.0'} + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + dev: true + + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + dev: true + + /array-last@1.3.0: + resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 4.0.0 + dev: true + + /array-slice@1.1.0: + resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} + engines: {node: '>=0.10.0'} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + dev: true + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /atomically@2.0.2: + resolution: {integrity: sha512-Xfmb4q5QV7uqTlVdMSTtO5eF4DCHfNOdaPyKlbFShkzeNP+3lj3yjjcbdjSmEY4+pDBKJ9g26aP+ImTe88UHoQ==} + dependencies: + stubborn-fs: 1.2.5 + when-exit: 2.1.2 + dev: true + + /autoprefixer@10.4.18(postcss@8.4.35): + resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001600 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + + /axios@1.6.8: + resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + + /babel-loader@9.1.3(@babel/core@7.24.0)(webpack@5.90.3): + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + dependencies: + '@babel/core': 7.24.0 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /babel-plugin-add-module-exports@0.2.1: + resolution: {integrity: sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==} + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.24.0 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jsx-dom-expressions@0.37.19(@babel/core@7.24.3): + resolution: {integrity: sha512-nef2eLpWBgFggwrYwN6O3dNKn3RnlX6n4DIamNEAeHwp03kVQUaKUiLaEPnHPJHwxie1KwPelyIY9QikU03vUA==} + peerDependencies: + '@babel/core': ^7.20.12 + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/types': 7.24.0 + html-entities: 2.3.3 + validate-html-nesting: 1.2.2 + dev: true + + /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.0): + resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.24.1 + '@babel/core': 7.24.0 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.24.0): + resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) + core-js-compat: 3.36.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.24.0): + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) + transitivePeerDependencies: + - supports-color + dev: true + + /babel-preset-solid@1.8.16(@babel/core@7.24.3): + resolution: {integrity: sha512-b4HFg/xaKM+H3Tu5iUlZ/43TJOZnhi85xrm3JrXDQ0s4cmtmU37bXXYzb2m55G4QKiFjxLAjvb7sUorPrAMs5w==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.3 + babel-plugin-jsx-dom-expressions: 0.37.19(@babel/core@7.24.3) + dev: true + + /babylon@6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: true + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /bole@5.0.11: + resolution: {integrity: sha512-KB0Ye0iMAW5BnNbnLfMSQcnI186hKUzE2fpkZWqcxsoTR7eqzlTidSOMYPHJOn/yR7VGH7uSZp37qH9q2Et0zQ==} + dependencies: + fast-safe-stringify: 2.1.1 + individual: 3.0.0 + dev: true + + /bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001600 + electron-to-chromium: 1.4.719 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.6.0 + dev: true + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /caniuse-lite@1.0.30001600: + resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} + dev: true + + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + 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.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners@2.6.1: + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} + dev: true + + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: true + + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + requiresBuild: true + dev: true + + /code-block-writer@12.0.0: + resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true + + /commander@12.0.0: + resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} + engines: {node: '>=18'} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + requiresBuild: true + dev: true + optional: true + + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + + /compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /compose-function@3.0.3: + resolution: {integrity: sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==} + dependencies: + arity-n: 1.0.4 + dev: true + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: true + + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: true + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true + + /conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + dev: true + + /copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + + /copy-webpack-plugin@11.0.0(webpack@5.90.3): + resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.1.0 + dependencies: + fast-glob: 3.3.2 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /core-js-compat@3.36.1: + resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} + dependencies: + browserslist: 4.23.0 + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /cosmiconfig@9.0.0(typescript@5.3.3): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + typescript: 5.3.3 + dev: true + + /critters@0.0.22: + resolution: {integrity: sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==} + dependencies: + chalk: 4.1.2 + css-select: 5.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + htmlparser2: 8.0.2 + postcss: 8.4.35 + postcss-media-query-parser: 0.2.3 + dev: true + + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + dev: true + + /css-loader@6.10.0(webpack@5.90.3): + resolution: {integrity: sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.35) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.35) + postcss-modules-scope: 3.1.1(postcss@8.4.35) + postcss-modules-values: 4.0.0(postcss@8.4.35) + postcss-value-parser: 4.2.0 + semver: 7.6.0 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} + dependencies: + rrweb-cssom: 0.6.0 + dev: true + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /current-git-branch@1.1.0: + resolution: {integrity: sha512-n5mwGZllLsFzxDPtTmadqGe4IIBPfqPbiIRX4xgFR9VK/Bx47U+94KiVkxSKAKN6/s43TlkztS2GZpgMKzwQ8A==} + dependencies: + babel-plugin-add-module-exports: 0.2.1 + execa: 0.6.3 + is-git-repository: 1.1.1 + dev: true + + /data-uri-to-buffer@3.0.1: + resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} + engines: {node: '>= 6'} + dev: true + + /data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + dev: true + + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /deep-freeze@0.0.1: + resolution: {integrity: sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + requiresBuild: true + dependencies: + clone: 1.0.4 + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + dev: true + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: true + + /dettle@1.0.1: + resolution: {integrity: sha512-/oD3At60ZfhgzpofJtyClNTrIACyMdRe+ih0YiHzAniN0IZnLdLpEzgR6RtGs3kowxUkTnvV/4t1FBxXMUdusQ==} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true + + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dev: true + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + dev: true + + /dotenv@16.3.2: + resolution: {integrity: sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==} + engines: {node: '>=12'} + dev: true + + /duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + dependencies: + readable-stream: 2.3.8 + dev: true + + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /easy-table@1.2.0: + resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} + dependencies: + ansi-regex: 5.0.1 + optionalDependencies: + wcwidth: 1.0.1 + dev: true + + /editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.6.0 + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium@1.4.719: + resolution: {integrity: sha512-FbWy2Q2YgdFzkFUW/W5jBjE9dj+804+98E4Pup78JBPnbdb3pv6IneY2JCPKdeKLh3AOKHQeYf+KwLr7mxGh6Q==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + + /encode-registry@3.0.1: + resolution: {integrity: sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==} + engines: {node: '>=10'} + dependencies: + mem: 8.1.1 + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + + /errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + dev: true + optional: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract@1.23.2: + resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + dev: true + + /es-iterator-helpers@1.0.18: + resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.2 + dev: true + + /es-module-lexer@1.5.0: + resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} + dev: true + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.2 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild-register@3.5.0(esbuild@0.20.2): + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' + dependencies: + debug: 4.3.4 + esbuild: 0.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /esbuild-wasm@0.20.1: + resolution: {integrity: sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==} + engines: {node: '>=12'} + hasBin: true + dev: true + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + + /esbuild@0.20.1: + resolution: {integrity: sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.1 + '@esbuild/android-arm': 0.20.1 + '@esbuild/android-arm64': 0.20.1 + '@esbuild/android-x64': 0.20.1 + '@esbuild/darwin-arm64': 0.20.1 + '@esbuild/darwin-x64': 0.20.1 + '@esbuild/freebsd-arm64': 0.20.1 + '@esbuild/freebsd-x64': 0.20.1 + '@esbuild/linux-arm': 0.20.1 + '@esbuild/linux-arm64': 0.20.1 + '@esbuild/linux-ia32': 0.20.1 + '@esbuild/linux-loong64': 0.20.1 + '@esbuild/linux-mips64el': 0.20.1 + '@esbuild/linux-ppc64': 0.20.1 + '@esbuild/linux-riscv64': 0.20.1 + '@esbuild/linux-s390x': 0.20.1 + '@esbuild/linux-x64': 0.20.1 + '@esbuild/netbsd-x64': 0.20.1 + '@esbuild/openbsd-x64': 0.20.1 + '@esbuild/sunos-x64': 0.20.1 + '@esbuild/win32-arm64': 0.20.1 + '@esbuild/win32-ia32': 0.20.1 + '@esbuild/win32-x64': 0.20.1 + dev: true + optional: true + + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.56.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.16.0 + eslint: 8.56.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.3 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.2.2) + debug: 3.2.7 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.2.2) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + hasown: 2.0.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.56.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.3 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.18 + eslint: 8.56.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /execa@0.6.3: + resolution: {integrity: sha512-/teX3MDLFBdYUhRk8WCBYboIMUmqeizu0m9Z3YF3JWrbEh/SlZg00vLJSaAGWw3wrZ9tE0buNw79eaAPYhUuvg==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + dependencies: + homedir-polyfill: 1.0.3 + dev: true + + /express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-ignore@1.1.1: + resolution: {integrity: sha512-Gnvido88waUVtlDv/6VBeXv0TAlQK5lheknMwzHx9948B7uOFjyyLXsYBXixDScEXJB5fMjy4G1OOTH59VKvUA==} + dependencies: + grammex: 3.1.3 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true + + /fast-string-truncated-width@1.1.0: + resolution: {integrity: sha512-FfsFREOllHpnSl6cxpLi6wvqd9UebrZPxWlOJCCcWoOJzy02xyjPbafF9tyg2Usnf3GLmRr5Q6s7n+GO+6VB5A==} + dev: true + + /fast-string-width@1.0.5: + resolution: {integrity: sha512-rO3M39p2w0AaF81drD42Q+v77cyhUKWixavoTAsORzYtjMIHhZ33KgdsjEaxMBwI0zI0zLUNBL0CYqVMipXp4g==} + dependencies: + fast-string-truncated-width: 1.1.0 + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: true + + /fetch-blob@2.1.2: + resolution: {integrity: sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==} + engines: {node: ^10.17.0 || >=12.3.0} + peerDependencies: + domexception: '*' + peerDependenciesMeta: + domexception: + optional: true + dev: true + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /filter-iterator@0.0.1: + resolution: {integrity: sha512-v4lhL7Qa8XpbW3LN46CEnmhGk3eHZwxfNl5at20aEkreesht4YKb/Ba3BUIbnPhAC/r3dmu7ABaGk6MAvh2alA==} + dev: true + + /filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: true + + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + dev: true + + /find-up-json@2.0.4: + resolution: {integrity: sha512-ABaCm3V1H5UYRHtClHvFFyxPIAC/bxd43tKwmcSco8/EuM5O7zDL2R7ORaA+rEltwgxoNOIK8LQFwQUfA/2GIw==} + dependencies: + find-up-path: 1.0.0 + dev: true + + /find-up-path@1.0.0: + resolution: {integrity: sha512-cjXDXnYfEezIqqbzctBNNqUax/rRCyNo/VTCFId3Hp9FyVL4uk0PvWrs7Xibtl2E4P5HnWnlxxJsbHqK6DsDPw==} + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + + /findup-sync@5.0.0: + resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} + engines: {node: '>= 10.13.0'} + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.5 + resolve-dir: 1.0.1 + dev: true + + /fined@2.0.0: + resolution: {integrity: sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==} + engines: {node: '>= 10.13.0'} + dependencies: + expand-tilde: 2.0.2 + is-plain-object: 5.0.0 + object.defaults: 1.1.0 + object.pick: 1.3.0 + parse-filepath: 1.0.2 + dev: true + + /flagged-respawn@2.0.0: + resolution: {integrity: sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==} + engines: {node: '>= 10.13.0'} + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true + + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true + + /for-own@1.0.0: + resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-monkey@1.0.5: + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-current-package@1.0.0: + resolution: {integrity: sha512-mEZ43mmPMdRz+7vouBd/fhnEMRF0omBzcwwwf2GmbWSeZJGdWHRp9RGLZxW7ZnnZ14jPc3GreHh0s/7u7PZJpQ==} + dependencies: + find-up-json: 2.0.4 + dev: true + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /git-log-parser@1.2.0: + resolution: {integrity: sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==} + dependencies: + argv-formatter: 1.0.0 + spawn-error-forwarder: 1.0.0 + split2: 1.0.0 + stream-combiner2: 1.1.1 + through2: 2.0.5 + traverse: 0.6.8 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.2 + dev: true + + /glob@7.1.4: + resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + dev: true + + /global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /grammex@3.1.3: + resolution: {integrity: sha512-rUZoJJQguOCaAMTuoyxs40OxqSLgVhzCCwDn1mbp2vETWutv/TmgAz7KxMR8Tz4z4cty/zIh88HrOWKqWgeGjg==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-own-property@0.1.0: + resolution: {integrity: sha512-14qdBKoonU99XDhWcFKZTShK+QV47qU97u8zzoVo9cL5TZ3BmBHXogItSt9qJjR0KUMFRhcCW8uGIGl8nkl7Aw==} + dev: true + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + dependencies: + parse-passwd: 1.0.0 + dev: true + + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.2.0 + dev: true + + /hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + dev: true + + /html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + dependencies: + whatwg-encoding: 3.1.1 + dev: true + + /html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + dev: true + + /html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: true + + /http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: true + + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: true + + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-middleware@2.0.6(@types/express@4.17.21): + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.21 + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: true + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.6 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /icss-utils@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.35 + dev: true + + /identity-function@1.0.0: + resolution: {integrity: sha512-kNrgUK0qI+9qLTBidsH85HjDLpZfrrS0ElquKKe/fJFdB3D7VeKdXXEvOPDUHSHOzdZKCAAaQIWWyp0l2yq6pw==} + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore-walk@5.0.1: + resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minimatch: 5.1.6 + dev: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /individual@3.0.0: + resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini-simple-parser@1.0.0: + resolution: {integrity: sha512-cZUGzkBd1W8FoIbFNMbscMvIGwp+riO/4PaPAy2owQp0sja+ni6Yty11GBNnxaI1ePkSVXzPb8iMOOYuYw/MOQ==} + dev: true + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /inquirer@9.2.15: + resolution: {integrity: sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==} + engines: {node: '>=18'} + dependencies: + '@ljharb/through': 2.3.13 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + dev: true + + /interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + dev: true + + /ionstore@1.0.0: + resolution: {integrity: sha512-ikEvmeZFh9u5SkjKbFqJlmmhaQTulB3P7QoSoZ/xL8EDP5uj5QWbPeKcQ8ZJtszBLHRRnhIJJE8P1dhFx/oCMw==} + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} + dev: true + + /is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + dev: true + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 + dev: true + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-git-repository@1.1.1: + resolution: {integrity: sha512-hxLpJytJnIZ5Og5QsxSkzmb8Qx8rGau9bio1JN/QtXcGEFuSsQYau0IiqlsCwftsfVYjF1mOq6uLdmwNSspgpA==} + dependencies: + execa: 0.6.3 + path-is-absolute: 1.0.1 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-iterable@1.1.1: + resolution: {integrity: sha512-EdOZCr0NsGE00Pot+x1ZFx9MJK3C6wy91geZpXwvwexDLJvA4nzYyZf7r+EIwSeVsOLDdBz7ATg9NqKTzuNYuQ==} + engines: {node: '>= 4'} + dev: true + + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true + + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-number@4.0.0: + resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: true + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + dependencies: + is-unc-path: 1.0.0 + dev: true + + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + dependencies: + text-extensions: 2.4.0 + dev: true + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.15 + dev: true + + /is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + dependencies: + unc-path-regex: 0.1.2 + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + dev: true + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.24.0 + '@babel/parser': 7.24.1 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.2: + resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.24.3 + '@babel/parser': 7.24.1 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /iterable-lookahead@1.0.0: + resolution: {integrity: sha512-hJnEP2Xk4+44DDwJqUQGdXal5VbyeWLaPyDl2AQc242Zr7iqz4DgpQOrEzglWVMGHMDCkguLHEKxd1+rOsmgSQ==} + engines: {node: '>=4'} + dev: true + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.19.26 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: true + + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: true + + /js-beautify@1.15.1: + resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 10.3.10 + js-cookie: 3.0.5 + nopt: 7.2.0 + dev: true + + /js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsdom@24.0.0: + resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + cssstyle: 4.0.1 + data-urls: 5.0.0 + decimal.js: 10.4.3 + form-data: 4.0.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + ws: 8.16.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-sorted-stringify@1.0.0: + resolution: {integrity: sha512-r27DgPdI80AXd6Hm0zJ7nPCYTBFUersR7sn7xcYyafvcgYOvwmCXB+DKWazAe0YaCNHbxH5Qzt7AIhUzPD1ETg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + dev: true + + /karma-source-map-support@1.4.0: + resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} + dependencies: + source-map-support: 0.5.21 + dev: true + + /kasi@1.1.0: + resolution: {integrity: sha512-SvmC8+vhkDariSTz2182qyQ+mhwZ4W8TWaIHJcz358bYBeccQ8WBYj7uTtzHoCmpPHaoCm3PaOhzRg7Z8F4Lww==} + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + dev: true + + /knip@4.6.0(@types/node@18.19.3)(typescript@5.2.2): + resolution: {integrity: sha512-6slzggzmyAuvtr97nH56ob1RNlkrG2dGF7yn8PJ/LIF8bPsoM93TRNLWTbmuOg4/E1CImilSX4qy9fok0AKJyA==} + engines: {node: '>=18.6.0'} + hasBin: true + peerDependencies: + '@types/node': '>=18' + typescript: '>=5.0.4' + dependencies: + '@ericcornelissen/bash-parser': 0.5.2 + '@nodelib/fs.walk': 2.0.0 + '@npmcli/map-workspaces': 3.0.4 + '@npmcli/package-json': 5.0.0 + '@pnpm/logger': 5.0.0 + '@pnpm/workspace.pkgs-graph': 2.0.15(@pnpm/logger@5.0.0) + '@snyk/github-codeowners': 1.1.0 + '@types/node': 18.19.3 + '@types/picomatch': 2.3.3 + easy-table: 1.2.0 + fast-glob: 3.3.2 + jiti: 1.21.0 + js-yaml: 4.1.0 + micromatch: 4.0.5 + minimist: 1.2.8 + picocolors: 1.0.0 + picomatch: 4.0.1 + pretty-ms: 9.0.0 + semver: 7.6.0 + smol-toml: 1.1.4 + strip-json-comments: 5.0.1 + summary: 2.1.0 + typescript: 5.2.2 + zod: 3.22.4 + zod-validation-error: 3.0.0(zod@3.22.4) + transitivePeerDependencies: + - bluebird + - domexception + dev: true + + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + + /launch-editor@2.6.1: + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.1 + dev: true + + /less-loader@11.1.0(less@4.2.0)(webpack@5.90.3): + resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} + engines: {node: '>= 14.15.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + dependencies: + klona: 2.0.6 + less: 4.2.0 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.6.2 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /license-webpack-plugin@4.0.2(webpack@5.90.3): + resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} + peerDependencies: + webpack: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-sources: + optional: true + dependencies: + webpack: 5.90.3(esbuild@0.20.2) + webpack-sources: 3.2.3 + dev: true + + /liftoff@4.0.0: + resolution: {integrity: sha512-rMGwYF8q7g2XhG2ulBmmJgWv25qBsqRbDn5gH0+wnuyeFt7QBJlHJmtg5qEdn4pN6WVAUMgXnIxytMFRX9c1aA==} + engines: {node: '>=10.13.0'} + dependencies: + extend: 3.0.2 + findup-sync: 5.0.0 + fined: 2.0.0 + flagged-respawn: 2.0.0 + is-plain-object: 5.0.0 + object.map: 1.0.1 + rechoir: 0.8.0 + resolve: 1.22.8 + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /load-json-file@6.2.0: + resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 5.2.0 + strip-bom: 4.0.0 + type-fest: 0.6.0 + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: true + + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: true + + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.6.1 + pkg-types: 1.0.3 + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lodash.curry@4.1.1: + resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} + dev: true + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /luxon@3.4.4: + resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} + engines: {node: '>=12'} + dev: true + + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + + /magic-string@0.16.0: + resolution: {integrity: sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==} + dependencies: + vlq: 0.2.3 + dev: true + + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + /magicast@0.3.3: + resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + dependencies: + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 + source-map-js: 1.2.0 + dev: true + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: 4.0.1 + semver: 5.7.2 + dev: true + optional: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 + dev: true + + /make-iterator@1.0.1: + resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /map-age-cleaner@0.1.3: + resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} + engines: {node: '>=6'} + dependencies: + p-defer: 1.0.0 + dev: true + + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj@2.0.0: + resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} + engines: {node: '>=4'} + dev: true + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /mem@6.1.1: + resolution: {integrity: sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==} + engines: {node: '>=8'} + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 3.1.0 + dev: true + + /mem@8.1.1: + resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} + engines: {node: '>=10'} + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 3.1.0 + dev: true + + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.5 + dev: true + + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + dev: true + + /merge-anything@5.1.7: + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} + engines: {node: '>=12.13'} + dependencies: + is-what: 4.1.16 + dev: true + + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@3.1.0: + resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} + engines: {node: '>=8'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /mini-css-extract-plugin@2.8.1(webpack@5.90.3): + resolution: {integrity: sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.2.0 + tapable: 2.2.1 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimatch@3.0.5: + resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.5.3 + dev: true + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + dev: true + + /multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + dev: true + + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /ndjson@2.0.0: + resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + json-stringify-safe: 5.0.1 + minimist: 1.2.8 + readable-stream: 3.6.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + sax: 1.3.0 + dev: true + optional: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /nice-napi@1.0.2: + resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==} + os: ['!win32'] + requiresBuild: true + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.8.0 + dev: true + optional: true + + /node-addon-api@3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + requiresBuild: true + dev: true + optional: true + + /node-fetch@3.0.0-beta.9: + resolution: {integrity: sha512-RdbZCEynH2tH46+tj0ua9caUHVWrd/RHnRfvly2EVdqGmI3ndS1Vn/xjm5KuGejDt2RNDQsVRLPNd2QPwcewVg==} + engines: {node: ^10.17 || >=12.3} + dependencies: + data-uri-to-buffer: 3.0.1 + fetch-blob: 2.1.2 + transitivePeerDependencies: + - domexception + dev: true + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: true + + /node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: true + + /normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.1 + semver: 7.6.0 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-bundled@2.0.1: + resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + npm-normalize-package-bin: 2.0.0 + dev: true + + /npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.6.0 + dev: true + + /npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dev: true + + /npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /npm-package-arg@11.0.1: + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + proc-log: 3.0.0 + semver: 7.6.0 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-packlist@5.1.3: + resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + glob: 8.1.0 + ignore-walk: 5.0.1 + npm-bundled: 2.0.1 + npm-normalize-package-bin: 2.0.0 + dev: true + + /npm-pick-manifest@9.0.0: + resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.1 + semver: 7.6.0 + dev: true + + /npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + dependencies: + path-key: 2.0.1 + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true + + /nx@17.2.8: + resolution: {integrity: sha512-rM5zXbuXLEuqQqcjVjClyvHwRJwt+NVImR2A6KFNG40Z60HP6X12wAxxeLHF5kXXTDRU0PFhf/yACibrpbPrAw==} + hasBin: true + requiresBuild: true + peerDependencies: + '@swc-node/register': ^1.6.7 + '@swc/core': ^1.3.85 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true + dependencies: + '@nrwl/tao': 17.2.8 + '@yarnpkg/lockfile': 1.1.0 + '@yarnpkg/parsers': 3.0.0-rc.46 + '@zkochan/js-yaml': 0.0.6 + axios: 1.6.8 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: 8.0.1 + dotenv: 16.3.2 + dotenv-expand: 10.0.0 + enquirer: 2.3.6 + figures: 3.2.0 + flat: 5.0.2 + fs-extra: 11.2.0 + glob: 7.1.4 + ignore: 5.3.1 + jest-diff: 29.7.0 + js-yaml: 4.1.0 + jsonc-parser: 3.2.0 + lines-and-columns: 2.0.4 + minimatch: 3.0.5 + node-machine-id: 1.1.12 + npm-run-path: 4.0.1 + open: 8.4.2 + semver: 7.5.3 + string-width: 4.2.3 + strong-log-transformer: 2.1.0 + tar-stream: 2.2.0 + tmp: 0.2.3 + tsconfig-paths: 4.2.0 + tslib: 2.6.2 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 17.2.8 + '@nx/nx-darwin-x64': 17.2.8 + '@nx/nx-freebsd-x64': 17.2.8 + '@nx/nx-linux-arm-gnueabihf': 17.2.8 + '@nx/nx-linux-arm64-gnu': 17.2.8 + '@nx/nx-linux-arm64-musl': 17.2.8 + '@nx/nx-linux-x64-gnu': 17.2.8 + '@nx/nx-linux-x64-musl': 17.2.8 + '@nx/nx-win32-arm64-msvc': 17.2.8 + '@nx/nx-win32-x64-msvc': 17.2.8 + transitivePeerDependencies: + - debug + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object-pairs@0.1.0: + resolution: {integrity: sha512-3ECr6K831I4xX/Mduxr9UC+HPOz/d6WKKYj9p4cmC8Lg8p7g8gitzsxNX5IWlSIgFWN/a4JgrJaoAMKn20oKwA==} + dev: true + + /object-values@1.0.0: + resolution: {integrity: sha512-+8hwcz/JnQ9EpLIXzN0Rs7DLsBpJNT/xYehtB/jU93tHYr5BFEO8E+JGQNOSqE7opVzz5cGksKFHt7uUJVLSjQ==} + engines: {node: '>=0.10.0'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.defaults@1.1.0: + resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + engines: {node: '>=0.10.0'} + dependencies: + array-each: 1.0.1 + array-slice: 1.1.0 + for-own: 1.0.0 + isobject: 3.0.1 + dev: true + + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 + dev: true + + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + dev: true + + /object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 + dev: true + + /object.map@1.0.1: + resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} + engines: {node: '>=0.10.0'} + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + dev: true + + /object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-defer@1.0.0: + resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} + engines: {node: '>=4'} + dev: true + + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-memoize@4.0.1: + resolution: {integrity: sha512-km0sP12uE0dOZ5qP+s7kGVf07QngxyG0gS8sYFvFWhqlgzOsSy+m71aUejf/0akxj5W7gE//2G74qTv6b4iMog==} + engines: {node: '>=10'} + dependencies: + mem: 6.1.1 + mimic-fn: 3.1.0 + dev: true + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.24.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + dev: true + + /parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + + /parse-npm-tarball-url@3.0.0: + resolution: {integrity: sha512-InpdgIdNe5xWMEUcrVQUniQKwnggBtJ7+SCwh7zQAZwbbIYZV9XdgJyhtmDSSvykFyQXoe4BINnzKTfCwWLs5g==} + engines: {node: '>=8.15'} + dependencies: + semver: 6.3.1 + dev: true + + /parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: true + + /parse5-html-rewriting-stream@7.0.0: + resolution: {integrity: sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==} + dependencies: + entities: 4.5.0 + parse5: 7.1.2 + parse5-sax-parser: 7.0.0 + dev: true + + /parse5-sax-parser@7.0.0: + resolution: {integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==} + dependencies: + parse5: 7.1.2 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + dev: true + + /path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + dependencies: + path-root-regex: 0.1.2 + dev: true + + /path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + dev: true + + /path-temp@2.1.0: + resolution: {integrity: sha512-cMMJTAZlion/RWRRC48UbrDymEIt+/YSD/l8NqjneyDw2rDOBQcP5yRkMB4CYGn47KMhZvbblBP7Z79OsMw72w==} + engines: {node: '>=8.15'} + dependencies: + unique-string: 2.0.0 + dev: true + + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /picomatch@4.0.1: + resolution: {integrity: sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==} + engines: {node: '>=12'} + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + requiresBuild: true + dev: true + optional: true + + /pioppo@1.1.0: + resolution: {integrity: sha512-8gZ58S4GBMkCGAEwBi98YgNFfXwcNql2sCXstolxnGUrsBnHA/BrKjsN4EbfCsKjQ4uERrEDfeh444ymGwNMdA==} + dependencies: + dettle: 1.0.1 + when-exit: 2.1.2 + dev: true + + /piscina@4.4.0: + resolution: {integrity: sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==} + optionalDependencies: + nice-napi: 1.0.2 + dev: true + + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + dependencies: + find-up: 6.3.0 + dev: true + + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.1 + mlly: 1.6.1 + pathe: 1.1.2 + dev: true + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + + /postcss-loader@8.1.1(postcss@8.4.35)(typescript@5.3.3)(webpack@5.90.3): + resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + cosmiconfig: 9.0.0(typescript@5.3.3) + jiti: 1.21.0 + postcss: 8.4.35 + semver: 7.6.0 + webpack: 5.90.3(esbuild@0.20.2) + transitivePeerDependencies: + - typescript + dev: true + + /postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + dev: true + + /postcss-modules-extract-imports@3.0.0(postcss@8.4.35): + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.35 + dev: true + + /postcss-modules-local-by-default@4.0.4(postcss@8.4.35): + resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-selector-parser: 6.0.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope@3.1.1(postcss@8.4.35): + resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.16 + dev: true + + /postcss-modules-values@4.0.0(postcss@8.4.35): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + dev: true + + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + dev: true + + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier@4.0.0-alpha.8: + resolution: {integrity: sha512-7FFBkQb0Eg0wJRYzA7ucc31nqTjWgoSpmS0ey9OATHU6WiV0z53Uzo5hA3tZs/pbhhIG7YvOIBNmkRQ7Dr/k5A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@prettier/cli': 0.3.0(prettier@4.0.0-alpha.8) + dev: true + + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /pretty-ms@9.0.0: + resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} + engines: {node: '>=18'} + dependencies: + parse-ms: 4.0.0 + dev: true + + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /promise-make-naked@2.1.1: + resolution: {integrity: sha512-BLvgZSNRkQNM5RGL4Cz8wK76WSb+t3VeMJL+/kxRBHI5+nliqZezranGGtiu/ePeFo5+CaLRvvGMzXrBuu2tAA==} + dev: true + + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: true + + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + + /prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + requiresBuild: true + dev: true + optional: true + + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /publint@0.2.7: + resolution: {integrity: sha512-tLU4ee3110BxWfAmCZggJmCUnYWgPTr0QLnx08sqpLYa8JHRiOudd+CgzdpfU5x5eOaW2WMkpmOrFshRFYK7Mw==} + engines: {node: '>=16'} + hasBin: true + dependencies: + npm-packlist: 5.1.3 + picocolors: 1.0.0 + sade: 1.8.1 + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 + dev: true + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: true + + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: true + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + json-parse-even-better-errors: 3.0.1 + npm-normalize-package-bin: 3.0.1 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + dependencies: + resolve: 1.22.8 + dev: true + + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} + dev: true + + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: true + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.24.0 + dev: true + + /regex-parser@2.3.0: + resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} + dev: true + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /rename-overwrite@5.0.0: + resolution: {integrity: sha512-vSxE5Ww7Jnyotvaxi3Dj0vOMoojH8KMkBfs9xYeW/qNfJiLTcC1fmwTjrbGUq3mQSOCxkG0DbdcvwTUrpvBN4w==} + engines: {node: '>=12.10'} + dependencies: + '@zkochan/rimraf': 2.1.3 + fs-extra: 10.1.0 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 8.4.35 + source-map: 0.6.1 + dev: true + + /resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /reverse-arguments@1.0.0: + resolution: {integrity: sha512-/x8uIPdTafBqakK0TmPNJzgkLP+3H+yxpUJhCQHsLBg1rYEVNR2D8BRYNWQhVBjyOd7oo1dZRVzIkwMY2oqfYQ==} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.10 + dev: true + + /rollup-plugin-preserve-directives@0.4.0(rollup@4.13.1): + resolution: {integrity: sha512-gx4nBxYm5BysmEQS+e2tAMrtFxrGvk+Pe5ppafRibQi0zlW7VYAbEGk6IKDw9sJGPdFWgVTE0o4BU4cdG0Fylg==} + peerDependencies: + rollup: 2.x || 3.x || 4.x + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.13.1) + magic-string: 0.30.8 + rollup: 4.13.1 + dev: true + + /rollup@4.13.1: + resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.13.1 + '@rollup/rollup-android-arm64': 4.13.1 + '@rollup/rollup-darwin-arm64': 4.13.1 + '@rollup/rollup-darwin-x64': 4.13.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.1 + '@rollup/rollup-linux-arm64-gnu': 4.13.1 + '@rollup/rollup-linux-arm64-musl': 4.13.1 + '@rollup/rollup-linux-riscv64-gnu': 4.13.1 + '@rollup/rollup-linux-s390x-gnu': 4.13.1 + '@rollup/rollup-linux-x64-gnu': 4.13.1 + '@rollup/rollup-linux-x64-musl': 4.13.1 + '@rollup/rollup-win32-arm64-msvc': 4.13.1 + '@rollup/rollup-win32-ia32-msvc': 4.13.1 + '@rollup/rollup-win32-x64-msvc': 4.13.1 + fsevents: 2.3.3 + dev: true + + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true + + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: true + + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sass-loader@14.1.1(sass@1.71.1)(webpack@5.90.3): + resolution: {integrity: sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + dependencies: + neo-async: 2.6.2 + sass: 1.71.1 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /sass@1.71.1: + resolution: {integrity: sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.6.0 + immutable: 4.3.5 + source-map-js: 1.2.0 + dev: true + + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + requiresBuild: true + dev: true + optional: true + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) + dev: true + + /select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: true + + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: true + + /seroval@0.5.1: + resolution: {integrity: sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g==} + engines: {node: '>=10'} + dev: true + + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: true + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true + + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote-word@1.0.1: + resolution: {integrity: sha512-lT297f1WLAdq0A4O+AknIFRP6kkiI3s8C913eJ0XqBxJbZPGWUNkRQk2u8zk4bEAjUJ5i+fSLwB6z1HzeT+DEg==} + dev: true + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true + + /sherif-darwin-arm64@0.7.0: + resolution: {integrity: sha512-rzWV13FwPA3h7UcO2B1o3s5lBhB4h7p1wXPB7Z0NMR/xweiTpT+hn3kls3YLdAeIL460Gc46ieJCnPFkI/rC0A==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /sherif-darwin-x64@0.7.0: + resolution: {integrity: sha512-6y3cp/ZdhrbHS9e1J70POZyPJdJ1eDYc43Xck9FcRL7GTsH5JbinIqyihdNVu1ctG7ewMA2Ii1nzuQe/rt9Gig==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /sherif-linux-arm64@0.7.0: + resolution: {integrity: sha512-DRfXTJuQ3CkF41+vDtCsptKjcvZg+PM9C+btJbZnAhbLSP8kSDWNmOIyH5/LQOBpntbEe6obqPFsBTjpkATkQw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sherif-linux-x64@0.7.0: + resolution: {integrity: sha512-4KM7P/V1jy8WKuGax8hOaRNWLTkwY10+MzVeof4UbTfcZxKibAHpSKtNmmzYFHKlFxOLXRGqDgXYmj5iuXB4bQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sherif-windows-arm64@0.7.0: + resolution: {integrity: sha512-WZ62t+YQ39XO6TuMTSWZJwiJTtKaoverhAk0F1MwlCkTZu2xZvlMMWKIN9wtMJvvrNYqTsjrv2xEH1EQNUDfhg==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /sherif-windows-x64@0.7.0: + resolution: {integrity: sha512-x5464tDL2VhuLgddbVL33ekMYoTxTDkIsI018o0VaD2V675Bw6RiFrmpzd/HqjXdVRCOh0LCBfH43G3C0NN0Uw==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /sherif@0.7.0: + resolution: {integrity: sha512-2ofYRtx6L4O1EFzUIxD4aSs4tqbE6/oes5/UTjjADHhLIBoq0SbxstPbpxLfz18EKdSDCDr5ZBQBinfm8k8bSQ==} + hasBin: true + optionalDependencies: + sherif-darwin-arm64: 0.7.0 + sherif-darwin-x64: 0.7.0 + sherif-linux-arm64: 0.7.0 + sherif-linux-x64: 0.7.0 + sherif-windows-arm64: 0.7.0 + sherif-windows-x64: 0.7.0 + dev: true + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + dev: true + + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /smol-toml@1.1.4: + resolution: {integrity: sha512-Y0OT8HezWsTNeEOSVxDnKOW/AyNXHQ4BwJNbAXlLTF5wWsBvrcHhIkE5Rf8kQMLmgf7nDX3PVOlgC6/Aiggu3Q==} + engines: {node: '>= 18', pnpm: '>= 8'} + dev: true + + /sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: true + + /solid-js@1.7.8: + resolution: {integrity: sha512-XHBWk1FvFd0JMKljko7FfhefJMTSgYEuVKcQ2a8hzRXfiuSJAGsrPPafqEo+f6l+e8Oe3cROSpIL6kbzjC1fjQ==} + dependencies: + csstype: 3.1.3 + seroval: 0.5.1 + dev: true + + /solid-refresh@0.6.3(solid-js@1.7.8): + resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} + peerDependencies: + solid-js: ^1.3 + dependencies: + '@babel/generator': 7.24.1 + '@babel/helper-module-imports': 7.24.3 + '@babel/types': 7.24.0 + solid-js: 1.7.8 + dev: true + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + /source-map-loader@5.0.0(webpack@5.90.3): + resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.72.1 + dependencies: + iconv-lite: 0.6.3 + source-map-js: 1.2.0 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /spawn-error-forwarder@1.0.0: + resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.17 + dev: true + + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 + dev: true + + /spdx-license-ids@3.0.17: + resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + dev: true + + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /specialist@1.4.0: + resolution: {integrity: sha512-RO76zlzjdw4acNYH2oiDqmSc3jQTymiJapNI6w47XB1iOKOaWIYA+eZ07b8pCPCsHZPwNdxHTJihS0LHFelFOA==} + dependencies: + tiny-bin: 1.7.1 + tiny-colors: 2.1.2 + tiny-parse-argv: 2.4.0 + tiny-updater: 3.5.1 + dev: true + + /split2@1.0.0: + resolution: {integrity: sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==} + dependencies: + through2: 2.0.5 + dev: true + + /split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + dependencies: + readable-stream: 3.6.2 + dev: true + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: true + + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true + + /stdin-blocker@2.0.0: + resolution: {integrity: sha512-fZ3txWyDSxOll6+ajX9akA5YzchyoEpVNsH8eWNY/ZnzlRoM0eW/zF8bm852KVpYutjNFQFvEF/RdZtlqxIZkQ==} + dev: true + + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.7 + dev: true + + /stream-combiner2@1.1.1: + resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} + dependencies: + duplexer2: 0.1.4 + readable-stream: 2.3.8 + dev: true + + /stream-to-array@2.3.0: + resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} + dependencies: + any-promise: 1.3.0 + dev: true + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string.fromcodepoint@0.2.1: + resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} + dev: true + + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + dev: true + + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-json-comments@5.0.1: + resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} + engines: {node: '>=14.16'} + dev: true + + /strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + dependencies: + js-tokens: 8.0.3 + dev: true + + /strong-log-transformer@2.1.0: + resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} + engines: {node: '>=4'} + hasBin: true + dependencies: + duplexer: 0.1.2 + minimist: 1.2.8 + through: 2.3.8 + dev: true + + /stubborn-fs@1.2.5: + resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} + dev: true + + /summary@2.1.0: + resolution: {integrity: sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /terser-webpack-plugin@5.3.10(esbuild@0.20.2)(webpack@5.90.3): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + esbuild: 0.20.2 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.29.1 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /terser@5.29.1: + resolution: {integrity: sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: true + + /through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + dependencies: + readable-stream: 3.6.2 + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: true + + /tiny-bin@1.7.1: + resolution: {integrity: sha512-MMztSKvXbVH0YQm54eDg9o3bt1TtM1xOZMnCfvG8fv1sQvDXxEeqiiv/DlQV8d2OiDOT+m01aXPfijeAPXF60g==} + dependencies: + ansi-purge: 1.0.0 + fast-string-width: 1.0.5 + get-current-package: 1.0.0 + tiny-colors: 2.1.2 + tiny-levenshtein: 1.0.0 + tiny-parse-argv: 2.4.0 + tiny-updater: 3.5.1 + dev: true + + /tiny-colors@2.1.2: + resolution: {integrity: sha512-6peGRBtkYBJpVrQUWOPKrC0ECo6WotUlXxirVTKvihjdgxQETpKtLdCKIb68IHjJYH1AOE7GM7RnxFvkGHsqOg==} + dev: true + + /tiny-cursor@2.0.0: + resolution: {integrity: sha512-6RKgFWBt6I1oYpaNZJvvp5x/jvzYDp+rjAVDam+7cmE0mrtlu8Lmpv81hQuvFuPa8Fuc/sd2shRWbdWTZqSNLg==} + dependencies: + when-exit: 2.1.2 + dev: true + + /tiny-editorconfig@1.0.0: + resolution: {integrity: sha512-rxpWaSurnvPUkL2/qydRH10llK7MD1XfE38zoWTsp/ZWWYnnwPBzGUePBOcXFaNA3cJQm8ItqrofGeRJ6AVaew==} + dependencies: + ini-simple-parser: 1.0.0 + zeptomatch: 1.2.2 + dev: true + + /tiny-jsonc@1.0.1: + resolution: {integrity: sha512-ik6BCxzva9DoiEfDX/li0L2cWKPPENYvixUprFdl3YPi4bZZUhDnNI9YUkacrv+uIG90dnxR5mNqaoD6UhD6Bw==} + dev: true + + /tiny-levenshtein@1.0.0: + resolution: {integrity: sha512-27KxXZhuXCP+xol3k4jMWms8+B6H2qEUlBMTmB5YT3uvFXFNft4Hw/MqurrHkDdC01nx1HIADcE1wR40byJf4Q==} + dev: true + + /tiny-parse-argv@2.4.0: + resolution: {integrity: sha512-WTEsnmeHNr99hLQIDA+gnsS+fDsCDITlqgI+zEhx9M6ErPt0heoNZ1PGvql6wcf95sIx40J0MLYXaPveGwtpoA==} + dev: true + + /tiny-readdir-glob@1.4.0: + resolution: {integrity: sha512-DoByQM1c/DiwdfYAeXsFkTbOOm+Sqr9XbgHf2855ioLgjD89vcymbk2I5CA1zGf9ZsYCzA6UtKmtZr+IEAYAHA==} + dependencies: + tiny-readdir: 2.7.0 + zeptomatch: 1.2.2 + dev: true + + /tiny-readdir@2.7.0: + resolution: {integrity: sha512-xPeRQEgt+gHp3rLqunojyx0qrJ4XzCScfNiWiYKJWM8w4ehfOfqDyKuDvsJkFaPFg9y3uKVEVRZPGoavl9ypjw==} + dependencies: + promise-make-naked: 2.1.1 + dev: true + + /tiny-spinner@2.0.3: + resolution: {integrity: sha512-zuhtClm08obM7aCzgRAbAmOpYm0ekAh/OTLZEJ/8SuVD+cxUdlqGGN5PRnc2Ate8xmbG3+ldPBnlwmHgJrftpg==} + dependencies: + stdin-blocker: 2.0.0 + tiny-colors: 2.1.2 + tiny-cursor: 2.0.0 + tiny-truncate: 1.0.2 + dev: true + + /tiny-truncate@1.0.2: + resolution: {integrity: sha512-XR2fjChcOjuz8Eu56zGwacYTKUHlhuzQ3VpD79yUwvWlLY3gCWorzRfBNXkmbwFjxzfmYZrC00cA4s/ET6mogw==} + dependencies: + ansi-truncate: 1.1.2 + dev: true + + /tiny-updater@3.5.1: + resolution: {integrity: sha512-kh1922FSNPTmrdr353x+xJRTrrVFl9zq/Q1Vz47YNWhTO0jn3ZyZd6Cahe8qW5MLXg+gia+0G7b6HIgW7pbBMg==} + dependencies: + ionstore: 1.0.0 + tiny-colors: 2.1.2 + when-exit: 2.1.2 + dev: true + + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true + + /tinypool@0.8.3: + resolution: {integrity: sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-no-case@1.0.2: + resolution: {integrity: sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg==} + dev: true + + /to-pascal-case@1.0.0: + resolution: {integrity: sha512-QGMWHqM6xPrcQW57S23c5/3BbYb0Tbe9p+ur98ckRnGDwD4wbbtDiYI38CfmMKNB5Iv0REjs5SNDntTwvDxzZA==} + dependencies: + to-space-case: 1.0.0 + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /to-space-case@1.0.0: + resolution: {integrity: sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==} + dependencies: + to-no-case: 1.0.2 + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + dependencies: + punycode: 2.3.1 + dev: true + + /traverse@0.6.8: + resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} + engines: {node: '>= 0.4'} + dev: true + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /ts-api-utils@1.3.0(typescript@5.2.2): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + + /ts-morph@21.0.1: + resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==} + dependencies: + '@ts-morph/common': 0.22.0 + code-block-writer: 12.0.0 + dev: true + + /tsconfck@3.0.3(typescript@5.2.2): + resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.2.2 + dev: true + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: true + + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: true + + /typed-assert@1.0.9: + resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + dev: true + + /typescript@4.9.3: + resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /typescript@5.0.2: + resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + + /typescript@5.1.3: + resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + dev: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /undici@6.7.1: + resolution: {integrity: sha512-+Wtb9bAQw6HYWzCnxrPTMVEV3Q1QjYanI0E4q02ehReMuquQdLTEFEYbfs7hcImVYKcQkWSwT6buEmSVIiDDtQ==} + engines: {node: '>=18.0'} + dev: true + + /unescape-js@1.1.4: + resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==} + dependencies: + string.fromcodepoint: 0.2.1 + dev: true + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + dependencies: + crypto-random-string: 2.0.0 + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /v8flags@4.0.1: + resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==} + engines: {node: '>= 10.13.0'} + dev: true + + /validate-html-nesting@1.2.2: + resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /validate-npm-package-name@4.0.0: + resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + builtins: 5.0.1 + dev: true + + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: true + + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /version-selector-type@3.0.0: + resolution: {integrity: sha512-PSvMIZS7C1MuVNBXl/CDG2pZq8EXy/NW2dHIdm3bVP5N0PC8utDK8ttXLXj44Gn3J0lQE3U7Mpm1estAOd+eiA==} + engines: {node: '>=10.13'} + dependencies: + semver: 7.6.0 + dev: true + + /vite-node@1.3.1(@types/node@18.19.3): + resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.5(@types/node@18.19.3)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-plugin-dts@3.8.1(@types/node@18.19.3)(rollup@4.13.1)(typescript@5.2.2)(vite@5.1.5): + resolution: {integrity: sha512-zEYyQxH7lKto1VTKZHF3ZZeOPkkJgnMrePY4VxDHfDSvDjmYMMfWjZxYmNwW8QxbaItWJQhhXY+geAbyNphI7g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@microsoft/api-extractor': 7.43.0(@types/node@18.19.3) + '@rollup/pluginutils': 5.1.0(rollup@4.13.1) + '@vue/language-core': 1.8.27(typescript@5.2.2) + debug: 4.3.4 + kolorist: 1.8.0 + magic-string: 0.30.8 + typescript: 5.2.2 + vite: 5.1.5(@types/node@18.19.3)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) + vue-tsc: 1.8.27(typescript@5.2.2) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + dev: true + + /vite-plugin-externalize-deps@0.8.0(vite@5.1.5): + resolution: {integrity: sha512-MdC8kRNQ1ZjhUicU2HcqGVhL0UUFqv83Zp1JZdHjE82PoPR8wsSWZ3axpot7B6img3sW6g8shYJikE0CKA0chA==} + peerDependencies: + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + vite: 5.1.5(@types/node@18.19.3)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) + dev: true + + /vite-plugin-solid@2.10.1(@testing-library/jest-dom@6.4.2)(solid-js@1.7.8)(vite@5.2.6): + resolution: {integrity: sha512-kfVdNLWaJqaJVL52U6iCCKNW/nXE7bS1VVGOWPGllOkJfcNILymVSY0LCBLSnyy0iYnRtrXpiHm14rMuzeC7CA==} + peerDependencies: + '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* + solid-js: ^1.7.2 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + '@testing-library/jest-dom': + optional: true + dependencies: + '@babel/core': 7.24.3 + '@testing-library/jest-dom': 6.4.2(vitest@1.3.1) + '@types/babel__core': 7.20.5 + babel-preset-solid: 1.8.16(@babel/core@7.24.3) + merge-anything: 5.1.7 + solid-js: 1.7.8 + solid-refresh: 0.6.3(solid-js@1.7.8) + vite: 5.2.6(@types/node@18.19.3) + vitefu: 0.2.5(vite@5.2.6) + transitivePeerDependencies: + - supports-color + dev: true + + /vite-tsconfig-paths@4.3.2(typescript@5.2.2)(vite@5.1.5): + resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + debug: 4.3.4 + globrex: 0.1.2 + tsconfck: 3.0.3(typescript@5.2.2) + vite: 5.1.5(@types/node@18.19.3)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /vite@5.1.5(@types/node@18.19.3)(less@4.2.0)(sass@1.71.1)(terser@5.29.1): + resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.19.3 + esbuild: 0.19.12 + less: 4.2.0 + postcss: 8.4.38 + rollup: 4.13.1 + sass: 1.71.1 + terser: 5.29.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vite@5.2.6(@types/node@18.19.3): + resolution: {integrity: sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.19.3 + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.13.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitefu@0.2.5(vite@5.2.6): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 5.2.6(@types/node@18.19.3) + dev: true + + /vitest@1.3.1(@types/node@18.19.3)(jsdom@24.0.0): + resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.3.1 + '@vitest/ui': 1.3.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/node': 18.19.3 + '@vitest/expect': 1.3.1 + '@vitest/runner': 1.3.1 + '@vitest/snapshot': 1.3.1 + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + jsdom: 24.0.0 + local-pkg: 0.5.0 + magic-string: 0.30.8 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.3 + vite: 5.1.5(@types/node@18.19.3)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) + vite-node: 1.3.1(@types/node@18.19.3) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vlq@0.2.3: + resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} + dev: true + + /vue-component-type-helpers@2.0.7: + resolution: {integrity: sha512-7e12Evdll7JcTIocojgnCgwocX4WzIYStGClBQ+QuWPinZo/vQolv2EMq4a3lg16TKfwWafLimG77bxb56UauA==} + dev: true + + /vue-demi@0.14.6(@vue/composition-api@1.7.2)(vue@3.3.4): + resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + '@vue/composition-api': 1.7.2(vue@3.3.4) + vue: 3.3.4 + dev: false + + /vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc@1.8.27(typescript@5.2.2): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.2.2) + semver: 7.6.0 + typescript: 5.2.2 + dev: true + + /vue@2.6.0: + resolution: {integrity: sha512-QSKHpmV17wqDmS5jVCc8X9LyTcCCQP4M1RTRpLBO+hRveePduJaGz1FGjVpRVcE6cKYbhsooz6RW7GWLGNjKGg==} + deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details. + dev: true + + /vue@2.7.0: + resolution: {integrity: sha512-su25f1hocH+QNkVEqk+Oj7B+mkDIWU70l0YY7nYSJFEs3Z64njXxo65RUXnWH46ooEhKmEWyLdW6HcYn8coNrg==} + deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details. + dependencies: + '@vue/compiler-sfc': 2.7.0 + csstype: 3.1.3 + dev: true + + /vue@3.3.4: + resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-sfc': 3.3.4 + '@vue/runtime-dom': 3.3.4 + '@vue/server-renderer': 3.3.4(vue@3.3.4) + '@vue/shared': 3.3.4 + + /w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + dependencies: + xml-name-validator: 5.0.0 + dev: true + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true + + /wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /webpack-dev-middleware@5.3.4(webpack@5.90.3): + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /webpack-dev-middleware@6.1.2(webpack@5.90.3): + resolution: {integrity: sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /webpack-dev-server@4.15.1(webpack@5.90.3): + resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.5 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.19.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + ipaddr.js: 2.1.0 + launch-editor: 2.6.1 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.90.3(esbuild@0.20.2) + webpack-dev-middleware: 5.3.4(webpack@5.90.3) + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-subresource-integrity@5.1.0(webpack@5.90.3): + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} + peerDependencies: + html-webpack-plugin: '>= 5.0.0-beta.1 < 6' + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + dependencies: + typed-assert: 1.0.9 + webpack: 5.90.3(esbuild@0.20.2) + dev: true + + /webpack@5.90.3(esbuild@0.20.2): + resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.16.0 + es-module-lexer: 1.5.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.90.3) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: true + + /webworker-shim@1.1.0: + resolution: {integrity: sha512-LhPJDED3cM0+K9w4JjIio+RYPqvr712b3lyM+JjMR/rSD9elrSYHrrwE9qu3inPSSf60xqePgFgEwuAg17AuhA==} + dev: true + + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + dev: true + + /whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + dev: true + + /when-exit@2.1.2: + resolution: {integrity: sha512-u9J+toaf3CCxCAzM/484qNAxQE75rFdVgiFEEV8Xps2gzYhf0tx73s1WXDQhkwV17E3MxRMz40m7Ekd2/121Lg==} + dev: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: true + + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: true + + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + dev: true + + /worktank@2.6.0: + resolution: {integrity: sha512-bHqVyWbviQlUV7+wbd1yoZhjPXXk7ENVCNrlBARfVAg69AfOtnEMLc0hWo9ihaqmlO8WggdYGy/K+avWFSgBBQ==} + dependencies: + promise-make-naked: 2.1.1 + webworker-shim: 1.1.0 + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.11.0 + optionalDependencies: + commander: 9.5.0 + dev: true + + /zeptomatch@1.2.2: + resolution: {integrity: sha512-0ETdzEO0hdYmT8aXHHf5aMjpX+FHFE61sG4qKFAoJD2Umt3TWdCmH7ADxn2oUiWTlqBGC+SGr8sYMfr+37J8pQ==} + dependencies: + grammex: 3.1.3 + dev: true + + /zod-validation-error@3.0.0(zod@3.22.4): + resolution: {integrity: sha512-x+agsJJG9rvC7axF0xqTEdZhJkLHyIZkdOAWDJSmwGPzxNHMHwtU6w2yDOAAP6yuSfTAUhAMJRBfhVGY64ySEQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.18.0 + dependencies: + zod: 3.22.4 + dev: true + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: true + + /zone.js@0.14.3: + resolution: {integrity: sha512-jYoNqF046Q+JfcZSItRSt+oXFcpXL88yq7XAZjb/NKTS7w2hHpKjRJ3VlFD1k75wMaRRXNUt5vrZVlygiMyHbA==} + dependencies: + tslib: 2.6.2 + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..600b4bb4 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/**' diff --git a/scripts/config.js b/scripts/config.js new file mode 100644 index 00000000..fcc2f6d4 --- /dev/null +++ b/scripts/config.js @@ -0,0 +1,57 @@ +// @ts-check + +import { resolve } from 'node:path' +import { fileURLToPath } from 'node:url' + +/** + * List your npm packages here. The first package will be used as the versioner. + * @type {import('./types').Package[]} + */ +export const packages = [ + { + name: '@tanstack/time', + packageDir: 'packages/time', + }, + { + name: '@tanstack/react-time', + packageDir: 'packages/react-time', + }, + { + name: '@tanstack/vue-time', + packageDir: 'packages/vue-time', + }, + { + name: '@tanstack/solid-time', + packageDir: 'packages/solid-time', + }, + { + name: '@tanstack/angular-time', + packageDir: 'packages/angular-time', + }, + // { + // name: '@tanstack/svelte-time', + // packageDir: 'packages/svelte-time', + // }, +] + +/** + * Contains config for publishable branches. + * @type {Record} + */ +export const branchConfigs = { + main: { + prerelease: false, + }, + next: { + prerelease: true, + }, + beta: { + prerelease: true, + }, + alpha: { + prerelease: true, + }, +} + +const __dirname = fileURLToPath(new URL('.', import.meta.url)) +export const rootDir = resolve(__dirname, '..') diff --git a/scripts/publish.js b/scripts/publish.js new file mode 100644 index 00000000..ba818b50 --- /dev/null +++ b/scripts/publish.js @@ -0,0 +1,15 @@ +// @ts-check + +import { publish } from '@tanstack/config/publish' +import { branchConfigs, packages, rootDir } from './config.js' + +await publish({ + branchConfigs, + packages, + rootDir, + branch: process.env.BRANCH, + tag: process.env.TAG, + ghToken: process.env.GH_TOKEN, +}) + +process.exit(0) diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 00000000..8ddb5469 --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "moduleResolution": "Bundler" + }, + "include": ["**/*"] +} diff --git a/scripts/types.d.ts b/scripts/types.d.ts new file mode 100644 index 00000000..ac48f9b8 --- /dev/null +++ b/scripts/types.d.ts @@ -0,0 +1,9 @@ +export type Package = { + name: string + packageDir: string +} + +export type BranchConfig = { + prerelease: boolean + previousVersion?: boolean +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..b0fb4a3b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "allowJs": true, + "allowSyntheticDefaultImports": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "checkJs": true, + "declaration": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "module": "ES2022", + "noEmit": true, + "noImplicitReturns": true, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2020" + }, + "include": [".eslintrc.cjs", "prettier.config.js"] +} From 9b986799d08ead8b3274067cbcbb390dd514e20e Mon Sep 17 00:00:00 2001 From: Steve 'Cutter' Blades Date: Thu, 28 Mar 2024 11:48:13 -0400 Subject: [PATCH 02/14] feat(parse): Build initial parser --- packages/time/src/index.ts | 3 +- packages/time/src/tests/parse.test.ts | 132 ++++++++++++++++++++++ packages/time/src/utils/parse.ts | 143 ++++++++++++++++++++++++ packages/time/src/utils/parsingDates.md | 82 ++++++++++++++ scripts/config.js | 10 +- 5 files changed, 364 insertions(+), 6 deletions(-) create mode 100644 packages/time/src/tests/parse.test.ts create mode 100644 packages/time/src/utils/parse.ts create mode 100644 packages/time/src/utils/parsingDates.md diff --git a/packages/time/src/index.ts b/packages/time/src/index.ts index dabac739..12981a25 100644 --- a/packages/time/src/index.ts +++ b/packages/time/src/index.ts @@ -1,3 +1,4 @@ /** * TanStack Time - */ \ No newline at end of file + */ +export * from './utils/parse'; \ No newline at end of file diff --git a/packages/time/src/tests/parse.test.ts b/packages/time/src/tests/parse.test.ts new file mode 100644 index 00000000..4ee05229 --- /dev/null +++ b/packages/time/src/tests/parse.test.ts @@ -0,0 +1,132 @@ +import {describe, expect, test} from 'vitest'; +import {parse} from '../utils/parse'; + +const dateTimeFormat = new Intl.DateTimeFormat('en-US', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + timeZoneName: 'short', + timeZone: 'America/New_York' +}); + +const timeOnlyFormat = new Intl.DateTimeFormat('en-US', { + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + //timeZoneName: 'short', + timeZone: 'America/New_York' +}); + +describe('parse', () => { + test('should parse a valid year only date string', () => { + const date = parse('2021'); + expect(dateTimeFormat.format(date)).toBe('01/01/2021, 12:00:00 AM EST'); + }); + + test('should parse a valid year and month only date string', () => { + const date = parse('2021-03'); + expect(dateTimeFormat.format(date)).toBe('03/01/2021, 12:00:00 AM EST'); + }); + + test('should parse a valid year, month and day only date string', () => { + const date = parse('2021-03-12'); + expect(dateTimeFormat.format(date)).toBe('03/12/2021, 12:00:00 AM EST'); + }); + + test('should cast date only string to UTC', () => { + const date = parse('2021-03-12TZ'); + expect(dateTimeFormat.format(date)).toBe('03/11/2021, 07:00:00 PM EST'); + }); + + test('should cast date only string to offset', () => { + const date = parse('2021-03-12T-07:00'); + expect(dateTimeFormat.format(date)).toBe('03/12/2021, 02:00:00 AM EST'); + }); + + test('should parse a valid year, month, day and hour only date/time string with separator', () => { + const date = parse('2021-03-12T14'); + expect(dateTimeFormat.format(date)).toBe('03/12/2021, 02:00:00 PM EST'); + }); + + test('should parse a valid year, month, day and hour only date/time string without separator', () => { + const date = parse('2021-03-12 16'); + expect(dateTimeFormat.format(date)).toBe('03/12/2021, 04:00:00 PM EST'); + }); + + test('should parse a valid year, month, day, hour and minute only date/time string', () => { + const date = parse('2021-03-12T14:42'); + expect(dateTimeFormat.format(date)).toBe('03/12/2021, 02:42:00 PM EST'); + }); + + test('should parse a valid year, month, day, hour, minute and seconds only date/time string', () => { + const date = parse('2021-03-12T14:42:12'); + expect(dateTimeFormat.format(date)).toBe('03/12/2021, 02:42:12 PM EST'); + }); + + test('should parse a valid UTC date/time string', () => { + const date = parse('2021-03-12T14:42:12Z'); + expect(dateTimeFormat.format(date)).toBe('03/12/2021, 09:42:12 AM EST'); + }); + + test('should parse a valid UTC date/time string with lower case separator and zulu', () => { + const date = parse('2021-03-12t14:42:12z'); + expect(dateTimeFormat.format(date)).toBe('03/12/2021, 09:42:12 AM EST'); + }); + + test('should parse a valid date/time string with offset', () => { + const date = parse('2021-03-12T14:42:12+09:00'); + expect(dateTimeFormat.format(date)).toBe('03/12/2021, 12:42:12 AM EST'); + }); + + test('should parse a valid epoch date/time', () => { + const date = parse(1711639239717); + expect(dateTimeFormat.format(date)).toBe('03/28/2024, 11:20:39 AM EDT'); + }); + + test('should parse a valid hour and minute time string', () => { + const date = parse('14:00'); + expect(timeOnlyFormat.format(date)).toBe('02:00:00 PM'); + }); + + test('should parse a valid hour, minute and second time string', () => { + const date = parse('14:14:34'); + expect(timeOnlyFormat.format(date)).toBe('02:14:34 PM'); + }); + + test('should parse a valid hour, minute and second time string with meridiem', () => { + const date = parse('08:14:34 PM'); + expect(timeOnlyFormat.format(date)).toBe('08:14:34 PM'); + }); + + test('should throw an error for an invalid date string', () => { + expect(() => parse('2021-15-37')).toThrowError('"2021-15-37" is an invalid RFC339 Internet Date Time string'); + }); + + test('should throw an error for an invalid time string', () => { + expect(() => parse('27:62')).toThrowError('"27:62" is an invalid RFC339 Internet Date Time string'); + }); + + test('should throw an error for an invalid time string', () => { + expect(() => parse('14:12 PM')).toThrowError('"14:12 PM" is an invalid time string'); + }); + + test('should throw an error for an invalid epoch', () => { + expect(() => parse(9274309587123413)).toThrowError('"9274309587123412" is an invalid epoch date value'); + }); + + /* test('should parse a valid time string', () => { + const date = parse('00:00:00.000Z'); + expect(dateTimeFormat.format(date)).toBe('12/31/2020, 7:00:00 PM EST'); + }); + + test('should throw an error for an invalid date string', () => { + expect(() => parse('2021-01-01T00:00:00.000')).toThrowError('"2021-01-01T00:00:00.000" is an invalid RFC339 Internet Date Time string'); + }); + + test('should throw an error for an invalid time string', () => { + expect(() => parse('00:00:00.000')).toThrowError('"00:00:00.000" is an invalid time string'); + }); */ +}); \ No newline at end of file diff --git a/packages/time/src/utils/parse.ts b/packages/time/src/utils/parse.ts new file mode 100644 index 00000000..265021c7 --- /dev/null +++ b/packages/time/src/utils/parse.ts @@ -0,0 +1,143 @@ + +/** + * rfc3339DateTimeOptionalTimeRegex + * Regular expression to match RFC3339 date/time strings with all optional parts + */ +const rfc3339DateTimeOptionalTimeRegex = + /^(?(?\d{4})(?:-(?0[1-9]|1[0-2])(?:-(?0[1-9]|[12][0-9]|3[01]))))(?:(?:T| )(?(?[01][0-9]|2[0-3])(?::(?[0-5][0-9])(?::(?[0-5][0-9])(?:\.(?\d+))?)?)?)?(?Z|[+-](?:2[0-3]|[01][0-9]:[0-5][0-9]))?)?$/i; + +/** + * timeOnlyRegex + * Regular expression to match time-only strings + */ +const timeOnlyRegex = + /^((?(?:2[0-3]|[0-1][0-9]))(?::(?[0-5][0-9])(?::(?[0-5][0-9])(?:\.(?\d+))?)?)?)(?:\s(?(?:AM|PM)))?$/i; + +/** + * dateOnlyRegex + * Regular expression to match date-only strings + */ +const dateOnlyRegex = + /^(?\d{4})(-(?0[1-9]|1[0-2]))?(-(?0[1-9]|[12][0-9]|3[01]))?(?T| )?(?Z|[+-](?:2[0-3]|[01][0-9]:[0-5][0-9]))?$/i; + +/** + * isValidEpoch + * Verifies if a numeric value is a valid epoch date + * @param {number} value + * @returns boolean + */ +function isValidEpoch(value: number): boolean { + return value >= -8.64e12 && value <= +8.64e12; +} + +/** + * parseEpochDateTime + * Parses a numeric value as a date/time epoch + * @param {number} value + * @returns Date + */ +function parseEpochDateTime(value: number): Date { + // if it's a floating point number, assume it's a unix timestamp + const toParse = Number.isInteger(value) ? value : value * 1000; + // but verify + if (isValidEpoch(toParse)) { + return new Date(toParse); + } + throw new Error(`"${value}" is an invalid epoch date value`); +} + +/** + * parseDateTimeString + * Parses a string as a date/time string + * @param {string} value + * @returns Date + */ +function parseDateTimeString(value: string): Date { + const match = + rfc3339DateTimeOptionalTimeRegex.exec(value) ?? dateOnlyRegex.exec(value); + //console.log("match", match); + if (match?.groups) { + const { + year, + month = "01", + day = "01", + hour = "00", + minute = "00", + second = "00", + millisecond = "000", + timezone = "", + } = match.groups; + return new Date( + `${year}-${month}-${day}T${hour}:${minute}:${second}.${millisecond}${timezone}`, + ); + } + throw new Error(`"${value}" is an invalid RFC339 Internet Date Time string`); +} + +/** + * parseTimeOnlyString + * Parses a string as a time-only string + * @param {string} value + * @returns Date + */ +function parseTimeOnlyString(value: string): Date { + const match = timeOnlyRegex.exec(value); + if (match?.groups) { + const now = new Date(); + const { + hour = "00", + minute = "00", + second = "00", + millisecond = "000", + meridiem, + } = match.groups; + // convert 12 hour time to 24 + let trueHour = Number(hour); + if (meridiem) { + if (trueHour > 12) { + throw new Error(`"${value}" is an invalid time string`); + } + if (meridiem.toLowerCase() === "pm" && trueHour < 12) { + trueHour += 12; + } + } + now.setHours( + trueHour, + Number(minute), + Number(second), + Number(millisecond), + ); + return now; + } + throw new Error(`"${value}" is an invalid time string`); +} + +/** + * parseDateOrTimeString + * Parses a string as a date/time or time string + * @param {string} value + * @returns Date + */ +function parseDateOrTimeString(value: string): Date { + const match = timeOnlyRegex.exec(value); + if (match) { + return parseTimeOnlyString(value); + } + return parseDateTimeString(value); +} + +/** + * parse + * Parses a string, number or Date object as a Date + * @param {string | number | Date} value + * @returns Date | undefined + */ +export function parse(value: string | number | Date): Date | undefined { + if (!value) return undefined; + if (typeof value === 'string') { + return parseDateOrTimeString(value); + } else if (typeof value === 'number') { + return parseEpochDateTime(value); + } + return value; +} \ No newline at end of file diff --git a/packages/time/src/utils/parsingDates.md b/packages/time/src/utils/parsingDates.md new file mode 100644 index 00000000..feb574c6 --- /dev/null +++ b/packages/time/src/utils/parsingDates.md @@ -0,0 +1,82 @@ +# Parsing Dates + +TanStack Time will include a basic parser for parsing dates and times. It will natively parse dates in the following formats: + +- RFC3339 Internet Date/Time Format +- Unix Timestamp (Epoch Time) +- Existing Date object +- a "plain time" string + +If taking an existing Date object, it will just copy it to a new object, as Date objects are mutable. + +A Unix Timestamp (known as an Epoch) is the number of seconds that have elapsed since 00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970, not counting leap seconds. It is used widely in computer systems and is the standard way to represent a date and time in many programming languages. A Unix Timestamp already represents a specific point in time, so it is easily used to create a new Date object. + +Parsing a date from a string is a bit more complex. The RFC3339 Internet Date/Time Format is a profile of the ISO 8601 standard for date and time formats. It is the most accurate way to represent a date and time, and it is the format that TanStack Time will use to parse dates from strings. It is also the format that TanStack Time will use to represent dates as strings. + +## Date/Time Parts + +The RFC3339 standard allows for the following date/time parts: + +> [4 digit year[-2 digit month[-2 digit day]]][separator (t|" ")][2 digit hour[:2 digit minute[:2 digit second[.3 digit millisecond]]]][timezone/offset(Z|[(+|-)2 digit hour[:2 digit minute]])] + +In accordance with the standard, if 'T' is used as a separator it may be in upper or lower case. If 'Z' is used as a timezone/offset, it may be in upper or lower case. The 'Z' timezone/offset is often referred to as 'Zulu' time, and represents UTC. + +## Deviating From the RFC3339 Standard, and Why + +For developers utilizing a fully qualified RFC3339 Internet Date/Time Format string, including timezone or offset, the parser will parse the string according to standard. However there are some caveats to the standard that the parser should correct. + +There are irregularities in the way a date instance is created from an RFC3339 string, compared to what most developers believe the string to represent. For example, look at the following example: + +```javascript +const formatter = new Intl.DateTimeFormat('en-US', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + fractionalSecondDigits: 3, + timeZoneName: 'short', +}); +const dateString = '2024-12-14'; +const date = new Date(dateString); +// a browser in the Eastern Time Zone will return: +// Fri Dec 13 2024 19:00:00 GMT-0500 (Eastern Standard Time) +formatter.format(date); +// "12/13/2024, 7:00:00 PM EST" +const dateString2 = '2024-12-14T00:00:00'; +const date2 = new Date(dateString2); +// a browser in the Eastern Time Zone will return: +// Sat Dec 14 2024 00:00:00 GMT-0500 (Eastern Standard Time) +formatter.format(date2); +// "12/14/2024, 12:00:00 AM EST" +``` + +The valid RFC3339 string of `2024-12-14` is meant to represent "December 14, 2024", however according to the standard all parts are relative to UTC date/time, and later interpreted to the browser local timezone. A developer would consider this to be the beginning of the day, for the timezone of the user, since no time or timezone/offset is specified. However, the Date object will interpret this as "December 13, 2024" at 7:00 PM, for a browser in the Eastern Time Zone. This is because the Date object will interpret the string as a UTC date, and then convert it to the local time zone. This is a major area of confusion for developers, and not the behavior that a developer would expect, and the behavior that the parser should correct. + +A parser should parse an RFC3339 string according to what date parts have been supplied. A valid RFC3339 string considers all date parts to be optional (aside from year), and the parser should interpret the string as such. If a date part is not supplied, the parser should assume the beginning for that part. If a time part is not supplied, the parser should assume the beginning of the day. If a timezone/offset part is not supplied, the parser should assume the local time zone. This is the behavior that the parser will implement. + +There are some caveats: + +- If a day is supplied, month and year are required. +- If a month is supplied, year is required. +- If a time is supplied, a full date (day, month and year) is required. +- If milliseconds are supplied, seconds, minutes and hours are required. +- If seconds are supplied, minutes and hours are required. +- If minutes are supplied, hours are required. + +The RFC3339 standard does not allow for the inclusion of timezone/offset without a time part. However, the parser will allow for that, and assume the beginning of the day, and the given time zone. In this scenario, the timezone/offset must be preceded by the date/time separator. + +## Dealing With Only "Time" + +The Date object does not have facility for "only a time", without a date. However, the parser will allow for a "plain time" string in the format `HH:MM:SS.SSS` (hours, minutes, seconds, milliseconds). The parser will create a Date with the current 'date' of the browser, and the given time. The timezone/offset will always be assumed to be the local time zone. + +This allows for using the Intl.DateTimeFormat to format the time, and the parser to parse the time, without having to worry about the date. + +This also allows for the internal creation of Temporal.PlainTime objects, which will be used in the future for time only manipulation. + +## Parser output + +The parser is used internal to TanStack Time, to interpret the given input for future manipulation and output. While the parser will be publicly available from the API, it is not intended to be used as a general purpose date parser. The public API is available for the creation of other parsers. It is intended to be used to parse dates in the formats that TanStack Time will use to manipulate dates and times. + +All other public API methods will typically return RFC3339 strings representing a date/time instance (UTC), or formatted representations of the date/time instance, according to the formatter configuration. diff --git a/scripts/config.js b/scripts/config.js index fcc2f6d4..5702b803 100644 --- a/scripts/config.js +++ b/scripts/config.js @@ -12,7 +12,7 @@ export const packages = [ name: '@tanstack/time', packageDir: 'packages/time', }, - { + /* { name: '@tanstack/react-time', packageDir: 'packages/react-time', }, @@ -28,10 +28,10 @@ export const packages = [ name: '@tanstack/angular-time', packageDir: 'packages/angular-time', }, - // { - // name: '@tanstack/svelte-time', - // packageDir: 'packages/svelte-time', - // }, + { + name: '@tanstack/svelte-time', + packageDir: 'packages/svelte-time', + }, */ ] /** From a657003e67f898c1d817e0247799c4998be5a8f9 Mon Sep 17 00:00:00 2001 From: Steve 'Cutter' Blades Date: Thu, 28 Mar 2024 11:49:29 -0400 Subject: [PATCH 03/14] docs: Updates to parsing docs --- packages/time/src/utils/parsingDates.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/time/src/utils/parsingDates.md b/packages/time/src/utils/parsingDates.md index feb574c6..1df78b4d 100644 --- a/packages/time/src/utils/parsingDates.md +++ b/packages/time/src/utils/parsingDates.md @@ -17,7 +17,7 @@ Parsing a date from a string is a bit more complex. The RFC3339 Internet Date/Ti The RFC3339 standard allows for the following date/time parts: -> [4 digit year[-2 digit month[-2 digit day]]][separator (t|" ")][2 digit hour[:2 digit minute[:2 digit second[.3 digit millisecond]]]][timezone/offset(Z|[(+|-)2 digit hour[:2 digit minute]])] +> [4 digit year[-2 digit month[-2 digit day]]][separator (t|t|" ")][2 digit hour[:2 digit minute[:2 digit second[.3 digit millisecond]]]][timezone/offset(z|Z|[(+|-)2 digit hour[:2 digit minute]])] In accordance with the standard, if 'T' is used as a separator it may be in upper or lower case. If 'Z' is used as a timezone/offset, it may be in upper or lower case. The 'Z' timezone/offset is often referred to as 'Zulu' time, and represents UTC. @@ -37,18 +37,18 @@ const formatter = new Intl.DateTimeFormat('en-US', { second: '2-digit', fractionalSecondDigits: 3, timeZoneName: 'short', -}); -const dateString = '2024-12-14'; -const date = new Date(dateString); +}) +const dateString = '2024-12-14' +const date = new Date(dateString) // a browser in the Eastern Time Zone will return: // Fri Dec 13 2024 19:00:00 GMT-0500 (Eastern Standard Time) -formatter.format(date); +formatter.format(date) // "12/13/2024, 7:00:00 PM EST" -const dateString2 = '2024-12-14T00:00:00'; -const date2 = new Date(dateString2); +const dateString2 = '2024-12-14T00:00:00' +const date2 = new Date(dateString2) // a browser in the Eastern Time Zone will return: // Sat Dec 14 2024 00:00:00 GMT-0500 (Eastern Standard Time) -formatter.format(date2); +formatter.format(date2) // "12/14/2024, 12:00:00 AM EST" ``` From 5d859c37c4cc8b27fffe176047a7068c6b6fd9ad Mon Sep 17 00:00:00 2001 From: Steve 'Cutter' Blades Date: Thu, 28 Mar 2024 15:53:49 -0400 Subject: [PATCH 04/14] chore: Add more utility functions --- .../src/tests/buildFinalFormatter.test.ts | 41 ++++++++++++++++ packages/time/src/tests/dateDefaults.test.ts | 26 ++++++++++ packages/time/src/tests/isValidDate.test.ts | 16 +++++++ packages/time/src/tests/validateDate.test.ts | 13 +++++ .../time/src/utils/buildFinalFormatter.ts | 31 ++++++++++++ packages/time/src/utils/dateDefaults.ts | 47 +++++++++++++++++++ packages/time/src/utils/isValidDate.ts | 12 +++++ packages/time/src/utils/validateDate.ts | 23 +++++++++ 8 files changed, 209 insertions(+) create mode 100644 packages/time/src/tests/buildFinalFormatter.test.ts create mode 100644 packages/time/src/tests/dateDefaults.test.ts create mode 100644 packages/time/src/tests/isValidDate.test.ts create mode 100644 packages/time/src/tests/validateDate.test.ts create mode 100644 packages/time/src/utils/buildFinalFormatter.ts create mode 100644 packages/time/src/utils/dateDefaults.ts create mode 100644 packages/time/src/utils/isValidDate.ts create mode 100644 packages/time/src/utils/validateDate.ts diff --git a/packages/time/src/tests/buildFinalFormatter.test.ts b/packages/time/src/tests/buildFinalFormatter.test.ts new file mode 100644 index 00000000..892fc20f --- /dev/null +++ b/packages/time/src/tests/buildFinalFormatter.test.ts @@ -0,0 +1,41 @@ +import {describe, expect, test} from 'vitest'; +import {buildFinalFormatter} from '../utils/buildFinalFormatter'; + +const dateTimeFormat = new Intl.DateTimeFormat('en-US', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + timeZoneName: 'short', + timeZone: 'America/New_York' +}); + +const timeOnlyFormat = new Intl.DateTimeFormat('en-US', { + hour: '2-digit', + minute: '2-digit', + //second: '2-digit', + //timeZoneName: 'short', + timeZone: 'America/New_York' +}); + +describe('buildFinalFormatter', () => { + test('should return a function', () => { + const formatter = buildFinalFormatter({formatter: dateTimeFormat, formatterName: 'dateTimeFormat'}); + expect(typeof formatter).toBe('function'); + }); + + const format = buildFinalFormatter({formatter: dateTimeFormat, formatterName: 'dateTimeFormat'}); + + test('should format a date string', () => { + expect(format('2021-03-12T14:42')).toBe('03/12/2021, 02:42:00 PM EST'); + }); + + const timeFormat = buildFinalFormatter({formatter: timeOnlyFormat, formatterName: 'timeOnlyFormat', forRange: true}); + + test('should format a time string range', () => { + // output does not show 2-digit hour in range due to a bug in Intl.DateTimeFormat.formatRange + expect(timeFormat('2021-03-12T14:42', '2021-03-12T15:42')).toBe('2:42 – 3:42 PM'); + }); +}); \ No newline at end of file diff --git a/packages/time/src/tests/dateDefaults.test.ts b/packages/time/src/tests/dateDefaults.test.ts new file mode 100644 index 00000000..210001a1 --- /dev/null +++ b/packages/time/src/tests/dateDefaults.test.ts @@ -0,0 +1,26 @@ +import {describe, expect, test} from 'vitest'; +import { getDateDefaults, getDefaultCalendar, getDefaultLocale, getDefaultTimeZone } from '../utils/dateDefaults'; + +const { + calendar: defaultCalendar, + locale: defaultLocale, + timeZone: defaultTimeZone +} = new Intl.DateTimeFormat().resolvedOptions(); + +describe('dateDefaults', () => { + test('should return the default calendar', () => { + expect(getDefaultCalendar()).toBe(defaultCalendar); + }); + + test('should return the default locale', () => { + expect(getDefaultLocale()).toBe(defaultLocale); + }); + + test('should return the default time zone', () => { + expect(getDefaultTimeZone()).toBe(defaultTimeZone); + }); + + test('should return the default date defaults', () => { + expect(getDateDefaults()).toEqual({calendar: defaultCalendar, locale: defaultLocale, timeZone: defaultTimeZone}); + }); +}); \ No newline at end of file diff --git a/packages/time/src/tests/isValidDate.test.ts b/packages/time/src/tests/isValidDate.test.ts new file mode 100644 index 00000000..57a35567 --- /dev/null +++ b/packages/time/src/tests/isValidDate.test.ts @@ -0,0 +1,16 @@ +import {describe, expect, test} from 'vitest'; +import {isValidDate} from '../utils/isValidDate'; + +describe('isValidDate', () => { + test('should return true for a valid date', () => { + expect(isValidDate(new Date())).toBe(true); + }); + + test('should return false for an invalid date', () => { + expect(isValidDate(new Date("invalid"))).toBe(false); + }); + + test("should return false for null", () => { + expect(isValidDate(null)).toBe(false); + }); +}); \ No newline at end of file diff --git a/packages/time/src/tests/validateDate.test.ts b/packages/time/src/tests/validateDate.test.ts new file mode 100644 index 00000000..6f4b8a77 --- /dev/null +++ b/packages/time/src/tests/validateDate.test.ts @@ -0,0 +1,13 @@ +import {describe, expect, test} from 'vitest'; +import {validateDate} from '../utils/validateDate'; + +describe('validateDate', () => { + test('should return a valid date', () => { + const date = new Date(); + expect(validateDate({date}).toString()).toBe(date.toString()); + }); + + test('should throw an error for an invalid date', () => { + expect(() => validateDate({date: new Date("45-92-12")})).toThrowError('Invalid Date: "Invalid Date"'); + }); +}); \ No newline at end of file diff --git a/packages/time/src/utils/buildFinalFormatter.ts b/packages/time/src/utils/buildFinalFormatter.ts new file mode 100644 index 00000000..5c038048 --- /dev/null +++ b/packages/time/src/utils/buildFinalFormatter.ts @@ -0,0 +1,31 @@ +import { validateDate } from "./validateDate"; +import {parse as parser} from './parse'; + +export interface BuildFinalFormatterOptions { + formatter: Intl.DateTimeFormat; + formatterName: string; + parse?: (value: string | number | Date) => Date | undefined; + forRange?: boolean; +} + +/** + * buildFinalFormatter - takes an Intl.DateTimeFormat object and returns a + * basic format function. When calling the format function, it will validate + * the given input date(s) and return the formatted date string. + */ +export function buildFinalFormatter({ + formatter, + formatterName, + parse = parser, + forRange = false +}: BuildFinalFormatterOptions): (date: string | number | Date, date2?: string | number | Date) => string { + return (date: string | number | Date, date2?: string | number | Date): string => { + if (!date) return ''; + const trueDate = validateDate({date, parse, errorMessage: `[${formatterName}] date "${date}" is Invalid.`}); + if (!forRange || !date2) { + return formatter.format(trueDate); + } + const endDate = validateDate({date: date2, parse, errorMessage: `[${formatterName}] second date "${date2}" is Invalid.`}); + return formatter.formatRange(trueDate, endDate); + } +} diff --git a/packages/time/src/utils/dateDefaults.ts b/packages/time/src/utils/dateDefaults.ts new file mode 100644 index 00000000..0dd3f983 --- /dev/null +++ b/packages/time/src/utils/dateDefaults.ts @@ -0,0 +1,47 @@ +export interface IDateDefaults { + calendar: string; + locale: string; + timeZone: string; +} + +const { + calendar: defaultCalendar, + locale: defaultLocale, + timeZone: defaultTimeZone +} = new Intl.DateTimeFormat().resolvedOptions(); + +/** + * getDateDefaults + * @returns IDateDefaults + */ +export function getDateDefaults(): IDateDefaults { + return { + calendar: defaultCalendar, + locale: defaultLocale, + timeZone: defaultTimeZone, + }; +} + +/** + * getDefaultCalendar + * @returns string - default calendar + */ +export function getDefaultCalendar(): string { + return defaultCalendar; +} + +/** + * getDefaultLocale + * @returns string - default locale + */ +export function getDefaultLocale(): string { + return defaultLocale; +} + +/** + * getDefaultTimeZone + * @returns string - default time zone + */ +export function getDefaultTimeZone(): string { + return defaultTimeZone; +} \ No newline at end of file diff --git a/packages/time/src/utils/isValidDate.ts b/packages/time/src/utils/isValidDate.ts new file mode 100644 index 00000000..987df31a --- /dev/null +++ b/packages/time/src/utils/isValidDate.ts @@ -0,0 +1,12 @@ +/** + * isValidDate + * Verifies if a date is a JS Date object and is valid + * @param date Date + * @returns boolean + */ +export function isValidDate(date: any): boolean { + if (Object.prototype.toString.call(date) !== '[object Date]') { + return false; + } + return date.getTime() === date.getTime(); +} \ No newline at end of file diff --git a/packages/time/src/utils/validateDate.ts b/packages/time/src/utils/validateDate.ts new file mode 100644 index 00000000..9416553d --- /dev/null +++ b/packages/time/src/utils/validateDate.ts @@ -0,0 +1,23 @@ +import { isValidDate } from "./isValidDate"; +import {parse as parser} from './parse'; + +export interface ValidateDateOptions { + date: string | number | Date; + parse?: (value: string | number | Date) => Date | undefined; + errorMessage?: string; +} + +/** + * validateDate + * Verifies if a date is, or can be, a valid JS Date object + * @param {string | number | Date} date - a value that can be converted to a Date object + * @param {string} errorMessage - error message to throw if date is invalid + * @returns Date + */ +export function validateDate({date, parse = parser, errorMessage = `Invalid Date: "${date}"`}: ValidateDateOptions): Date { + const d = parse(date); + if (!isValidDate(d)) { + throw new Error(`${errorMessage}: "${date}"`); + } + return d as Date; +} \ No newline at end of file From a2851573c66a48666ceed40b40da01ba0bac9a69 Mon Sep 17 00:00:00 2001 From: Steve 'Cutter' Blades Date: Wed, 8 May 2024 10:04:21 -0400 Subject: [PATCH 05/14] feat: Basic formatter functions --- .../time/src/formatter/buildDateFormatter.ts | 16 ++++++ .../src/formatter/buildDateTimeFormatter.ts | 16 ++++++ .../time/src/formatter/buildTimeFormatter.ts | 16 ++++++ .../src/formatter/extractLocaleOptions.ts | 9 ++++ packages/time/src/formatter/shared.ts | 51 +++++++++++++++++++ 5 files changed, 108 insertions(+) create mode 100644 packages/time/src/formatter/buildDateFormatter.ts create mode 100644 packages/time/src/formatter/buildDateTimeFormatter.ts create mode 100644 packages/time/src/formatter/buildTimeFormatter.ts create mode 100644 packages/time/src/formatter/extractLocaleOptions.ts create mode 100644 packages/time/src/formatter/shared.ts diff --git a/packages/time/src/formatter/buildDateFormatter.ts b/packages/time/src/formatter/buildDateFormatter.ts new file mode 100644 index 00000000..571fc53f --- /dev/null +++ b/packages/time/src/formatter/buildDateFormatter.ts @@ -0,0 +1,16 @@ +import { extractLocaleOptions } from "./extractLocaleOptions"; +import type { IDateFormatterBuildParams } from "./shared"; + +export function buildDateFormatter({ + locale, + options +}: IDateFormatterBuildParams): Intl.DateTimeFormat { + const opts = (typeof options === 'string') ? { dateStyle: options } : options ?? {}; + const {formatOptions = {}, ...localeOptions} = extractLocaleOptions(opts); + const { dateStyle, ...rest } = formatOptions; + const newOptions = { + ...localeOptions, + ...(dateStyle ? { dateStyle } : rest), + }; + return new Intl.DateTimeFormat(locale, newOptions); +} \ No newline at end of file diff --git a/packages/time/src/formatter/buildDateTimeFormatter.ts b/packages/time/src/formatter/buildDateTimeFormatter.ts new file mode 100644 index 00000000..9eff21f9 --- /dev/null +++ b/packages/time/src/formatter/buildDateTimeFormatter.ts @@ -0,0 +1,16 @@ +import { extractLocaleOptions } from "./extractLocaleOptions"; +import type { IDateTimeFormatterBuildParams } from "./shared"; + +export function buildTimeFormatter({ + locale, + options +}: IDateTimeFormatterBuildParams): Intl.DateTimeFormat { + const opts = (typeof options === 'string') ? { dateStyle: options, timeStyle: options } : options ?? {}; + const {formatOptions = {}, ...localeOptions} = extractLocaleOptions(opts); + const { dateStyle, timeStyle, ...rest } = formatOptions; + const newOptions = { + ...localeOptions, + ...(dateStyle && timeStyle ? { dateStyle, timeStyle } : rest), + }; + return new Intl.DateTimeFormat(locale, newOptions); +} \ No newline at end of file diff --git a/packages/time/src/formatter/buildTimeFormatter.ts b/packages/time/src/formatter/buildTimeFormatter.ts new file mode 100644 index 00000000..282f7360 --- /dev/null +++ b/packages/time/src/formatter/buildTimeFormatter.ts @@ -0,0 +1,16 @@ +import { extractLocaleOptions } from "./extractLocaleOptions"; +import type { ITimeFormatterBuildParams } from "./shared"; + +export function buildTimeFormatter({ + locale, + options +}: ITimeFormatterBuildParams): Intl.DateTimeFormat { + const opts = (typeof options === 'string') ? { dateStyle: options } : options ?? {}; + const {formatOptions = {}, ...localeOptions} = extractLocaleOptions(opts); + const { timeStyle, ...rest } = formatOptions; + const newOptions = { + ...localeOptions, + ...(timeStyle ? { timeStyle } : rest), + }; + return new Intl.DateTimeFormat(locale, newOptions); +} \ No newline at end of file diff --git a/packages/time/src/formatter/extractLocaleOptions.ts b/packages/time/src/formatter/extractLocaleOptions.ts new file mode 100644 index 00000000..58a5a716 --- /dev/null +++ b/packages/time/src/formatter/extractLocaleOptions.ts @@ -0,0 +1,9 @@ +import type { IDateFormatterOptions, IDateTimeFormatterOptions, ITimeFormatterOptions } from "./shared"; + +export function extractLocaleOptions({ + localeMatcher, calendar, numberingSystem, hour12, hourCycle, timeZone, ...formatOptions +}: IDateFormatterOptions | IDateTimeFormatterOptions | ITimeFormatterOptions) { + return { + localeMatcher, calendar, numberingSystem, hour12, hourCycle, timeZone, formatOptions + }; +} \ No newline at end of file diff --git a/packages/time/src/formatter/shared.ts b/packages/time/src/formatter/shared.ts new file mode 100644 index 00000000..af409b95 --- /dev/null +++ b/packages/time/src/formatter/shared.ts @@ -0,0 +1,51 @@ +export interface ILocaleFormatterOptions { + localeMatcher?: 'lookup' | 'best fit'; + calendar?: string; + numberingSystem?: string; + hour12?: boolean; + hourCycle?: 'h11' | 'h12' | 'h23' | 'h24'; + timeZone?: string; +} + +type FormatStyle = 'full' | 'long' | 'medium' | 'short'; + +export interface IDateFormatterOptions extends ILocaleFormatterOptions { + formatMatcher?: 'basic' | 'best fit'; + weekday?: 'narrow' | 'short' | 'long'; + era?: 'narrow' | 'short' | 'long'; + year?: '2-digit' | 'numeric'; + month?: '2-digit' | 'numeric' | 'narrow' | 'short' | 'long'; + day?: '2-digit' | 'numeric'; + // style shortcuts + dateStyle?: FormatStyle; +} + +export interface ITimeFormatterOptions extends ILocaleFormatterOptions { + formatMatcher?: 'basic' | 'best fit'; + dayPeriod?: 'narrow' | 'short' | 'long'; + hour?: '2-digit' | 'numeric'; + minute?: '2-digit' | 'numeric'; + second?: '2-digit' | 'numeric'; + fractionalSecondDigits?: 1 | 2 | 3; + timeZoneName?: 'short' | 'long' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric'; + // style shortcuts + timeStyle?: FormatStyle; +} + +export interface IDateTimeFormatterOptions extends IDateFormatterOptions, ITimeFormatterOptions { +} + +export interface IDateFormatterBuildParams { + locale?: string | Intl.Locale | Array; + options?: FormatStyle | IDateFormatterOptions; +} + +export interface ITimeFormatterBuildParams { + locale?: string | Intl.Locale | Array; + options?: FormatStyle | ITimeFormatterOptions; +} + +export interface IDateTimeFormatterBuildParams { + locale?: string | Intl.Locale | Array; + options?: FormatStyle | IDateTimeFormatterOptions; +} \ No newline at end of file From 5e520ec857016db6096e7ff46c49deb1d703fcd7 Mon Sep 17 00:00:00 2001 From: Steve 'Cutter' Blades Date: Wed, 8 May 2024 11:22:30 -0400 Subject: [PATCH 06/14] docs: Add JSDocs function explainers --- .../time/src/formatter/buildDateFormatter.ts | 49 +++++++++++- .../src/formatter/buildDateTimeFormatter.ts | 56 +++++++++++++- .../time/src/formatter/buildTimeFormatter.ts | 48 +++++++++++- .../src/formatter/extractLocaleOptions.ts | 74 ++++++++++++++++++- 4 files changed, 221 insertions(+), 6 deletions(-) diff --git a/packages/time/src/formatter/buildDateFormatter.ts b/packages/time/src/formatter/buildDateFormatter.ts index 571fc53f..680fba25 100644 --- a/packages/time/src/formatter/buildDateFormatter.ts +++ b/packages/time/src/formatter/buildDateFormatter.ts @@ -1,10 +1,55 @@ +import { getDefaultLocale } from "../utils/dateDefaults"; import { extractLocaleOptions } from "./extractLocaleOptions"; import type { IDateFormatterBuildParams } from "./shared"; +/** + * @typedef {Object} IDateFormatterOptions + * @property {string} [localeMatcher] + * @property {string} [calendar] + * @property {string} [numberingSystem] + * @property {boolean} [hour12] + * @property {string} [hourCycle] + * @property {string} [timeZone] + * @property {string} [formatMatcher] + * @property {string} [weekday] + * @property {string} [era] + * @property {string} [year] + * @property {string} [month] + * @property {string} [day] + * @property {string} [dateStyle] + * + * @typedef {string | Intl.Locale | string[] | Intl.Locale[]} Locale + * + * @typedef {Object} IDateFormatterBuildParams + * @property {Locale} [locale] + * @property {string | IDateFormatterOptions} [options] + */ + +/** + * Function: buildDateFormatter + * This function is used to build a date only formatter, using the Intl.DateTimeFormat constructor. + * The 'locale' named parameter can be a string, an Intl.Locale object, or an array of strings + * or Intl.Locale objects. This is defaulted to the user's browser locale. + * + * The 'options' named parameter can be a string or an object. + * + * If 'options' is a string, it will be used as the 'dateStyle' option. + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#datestyle as reference. + * + * If 'options' is an object, it will use the Intl.DateTimeFormat 'options'. + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options as reference. + * + * You use the 'options' object for finer level of control over the date formatting. + * When using UTC date strings, it is suggested that you use the 'options' object + * to set the 'timeZone' when building the formatter. The 'timeZone' is defaulted + * to the user's browser timezone. + * @param {IDateFormatterBuildParams} [param0] + * @returns Intl.DateTimeFormat + */ export function buildDateFormatter({ - locale, + locale = getDefaultLocale(), options -}: IDateFormatterBuildParams): Intl.DateTimeFormat { +}: IDateFormatterBuildParams = {}): Intl.DateTimeFormat { const opts = (typeof options === 'string') ? { dateStyle: options } : options ?? {}; const {formatOptions = {}, ...localeOptions} = extractLocaleOptions(opts); const { dateStyle, ...rest } = formatOptions; diff --git a/packages/time/src/formatter/buildDateTimeFormatter.ts b/packages/time/src/formatter/buildDateTimeFormatter.ts index 9eff21f9..bc02c82e 100644 --- a/packages/time/src/formatter/buildDateTimeFormatter.ts +++ b/packages/time/src/formatter/buildDateTimeFormatter.ts @@ -1,8 +1,60 @@ +import { getDefaultLocale } from "../utils/dateDefaults"; import { extractLocaleOptions } from "./extractLocaleOptions"; import type { IDateTimeFormatterBuildParams } from "./shared"; -export function buildTimeFormatter({ - locale, +/** + * @typedef {Object} IDateTimeFormatterOptions + * @property {string} [localeMatcher] + * @property {string} [calendar] + * @property {string} [numberingSystem] + * @property {boolean} [hour12] + * @property {string} [hourCycle] + * @property {string} [timeZone] + * @property {string} [formatMatcher] + * @property {string} [weekday] + * @property {string} [era] + * @property {string} [year] + * @property {string} [month] + * @property {string} [day] + * @property {string} [dateStyle] + * @property {string} [dayPeriod] + * @property {string} [hour] + * @property {string} [minute] + * @property {string} [second] + * @property {number} [fractionalSecondDigits] + * @property {string} [timeZoneName] + * @property {string} [timeStyle] + * + * @typedef {string | Intl.Locale | string[] | Intl.Locale[]} Locale + * + * @typedef {Object} IDateTimeFormatterOptions + * @property {Locale} [locale] + * @property {string | IDateFormatterOptions} [options] + */ + +/** + * Function: buildDateTimeFormatter + * This function is used to build a date and time formatter, using the Intl.DateTimeFormat constructor. + * The 'locale' named parameter can be a string, an Intl.Locale object, or an array of strings + * or Intl.Locale objects. This is defaulted to the user's browser locale. + * + * The 'options' named parameter can be a string or an object. + * + * If 'options' is a string, it will be used as the 'dateStyle' and 'timeStyle' options. + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#datestyle and https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#timestyle as reference. + * + * If 'options' is an object, it will use the Intl.DateTimeFormat 'options'. + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options as reference. + * + * You use the 'options' object for finer level of control over the time formatting. + * When using UTC date strings, it is suggested that you use the 'options' object + * to set the 'timeZone' when building the formatter. The 'timeZone' is defaulted + * to the user's browser timezone. + * @param {IDateFormatterBuildParams} [param0] + * @returns Intl.DateTimeFormat + */ +export function buildDateTimeFormatter({ + locale = getDefaultLocale(), options }: IDateTimeFormatterBuildParams): Intl.DateTimeFormat { const opts = (typeof options === 'string') ? { dateStyle: options, timeStyle: options } : options ?? {}; diff --git a/packages/time/src/formatter/buildTimeFormatter.ts b/packages/time/src/formatter/buildTimeFormatter.ts index 282f7360..9ddee8d5 100644 --- a/packages/time/src/formatter/buildTimeFormatter.ts +++ b/packages/time/src/formatter/buildTimeFormatter.ts @@ -1,8 +1,54 @@ +import { getDefaultLocale } from "../utils/dateDefaults"; import { extractLocaleOptions } from "./extractLocaleOptions"; import type { ITimeFormatterBuildParams } from "./shared"; +/** + * @typedef {Object} ITimeFormatterOptions + * @property {string} [localeMatcher] + * @property {string} [calendar] + * @property {string} [numberingSystem] + * @property {boolean} [hour12] + * @property {string} [hourCycle] + * @property {string} [timeZone] + * @property {string} [formatMatcher] + * @property {string} [dayPeriod] + * @property {string} [hour] + * @property {string} [minute] + * @property {string} [second] + * @property {number} [fractionalSecondDigits] + * @property {string} [timeZoneName] + * @property {string} [timeStyle] + * + * @typedef {string | Intl.Locale | string[] | Intl.Locale[]} Locale + * + * @typedef {Object} ITimeFormatterBuildParams + * @property {Locale} [locale] + * @property {string | IDateFormatterOptions} [options] + */ + +/** + * Function: buildTimeFormatter + * This function is used to build a time only formatter, using the Intl.DateTimeFormat constructor. + * The 'locale' named parameter can be a string, an Intl.Locale object, or an array of strings + * or Intl.Locale objects. This is defaulted to the user's browser locale. + * + * The 'options' named parameter can be a string or an object. + * + * If 'options' is a string, it will be used as the 'timeStyle' option. + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#timestyle as reference. + * + * If 'options' is an object, it will use the Intl.DateTimeFormat 'options'. + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options as reference. + * + * You use the 'options' object for finer level of control over the time formatting. + * When using UTC date strings, it is suggested that you use the 'options' object + * to set the 'timeZone' when building the formatter. The 'timeZone' is defaulted + * to the user's browser timezone. + * @param {IDateFormatterBuildParams} [param0] + * @returns Intl.DateTimeFormat + */ export function buildTimeFormatter({ - locale, + locale = getDefaultLocale(), options }: ITimeFormatterBuildParams): Intl.DateTimeFormat { const opts = (typeof options === 'string') ? { dateStyle: options } : options ?? {}; diff --git a/packages/time/src/formatter/extractLocaleOptions.ts b/packages/time/src/formatter/extractLocaleOptions.ts index 58a5a716..c7fed83a 100644 --- a/packages/time/src/formatter/extractLocaleOptions.ts +++ b/packages/time/src/formatter/extractLocaleOptions.ts @@ -1,7 +1,79 @@ +import { getDefaultCalendar, getDefaultTimeZone } from "../utils/dateDefaults"; import type { IDateFormatterOptions, IDateTimeFormatterOptions, ITimeFormatterOptions } from "./shared"; +/** + * @typedef {Object} IDateFormatterOptions + * @property {string} [localeMatcher] + * @property {string} [calendar] + * @property {string} [numberingSystem] + * @property {boolean} [hour12] + * @property {string} [hourCycle] + * @property {string} [timeZone] + * @property {string} [formatMatcher] + * @property {string} [weekday] + * @property {string} [era] + * @property {string} [year] + * @property {string} [month] + * @property {string} [day] + * @property {string} [dateStyle] + * + * @typedef {Object} ITimeFormatterOptions + * @property {string} [localeMatcher] + * @property {string} [calendar] + * @property {string} [numberingSystem] + * @property {boolean} [hour12] + * @property {string} [hourCycle] + * @property {string} [timeZone] + * @property {string} [formatMatcher] + * @property {string} [dayPeriod] + * @property {string} [hour] + * @property {string} [minute] + * @property {string} [second] + * @property {number} [fractionalSecondDigits] + * @property {string} [timeZoneName] + * @property {string} [timeStyle] + * + * @typedef {Object} IDateTimeFormatterOptions + * @property {string} [localeMatcher] + * @property {string} [calendar] + * @property {string} [numberingSystem] + * @property {boolean} [hour12] + * @property {string} [hourCycle] + * @property {string} [timeZone] + * @property {string} [formatMatcher] + * @property {string} [weekday] + * @property {string} [era] + * @property {string} [year] + * @property {string} [month] + * @property {string} [day] + * @property {string} [dateStyle] + * @property {string} [dayPeriod] + * @property {string} [hour] + * @property {string} [minute] + * @property {string} [second] + * @property {number} [fractionalSecondDigits] + * @property {string} [timeZoneName] + * @property {string} [timeStyle] + */ + + /** + * Function: extractLocaleOptions + * This function is used to extract the locale options from the 'options' parameter of the various + * formatter 'build' functions. + * + * If 'calender' or 'timeZone' are not provided, the default values provided by the + * Intl.DateTimeFormat().resolvedOptions() are used. + * @param {IDateFormatterOptions | IDateTimeFormatterOptions | ITimeFormatterOptions} param0 + * @returns + */ export function extractLocaleOptions({ - localeMatcher, calendar, numberingSystem, hour12, hourCycle, timeZone, ...formatOptions + localeMatcher, + calendar = getDefaultCalendar(), + numberingSystem, + hour12, + hourCycle, + timeZone = getDefaultTimeZone(), + ...formatOptions }: IDateFormatterOptions | IDateTimeFormatterOptions | ITimeFormatterOptions) { return { localeMatcher, calendar, numberingSystem, hour12, hourCycle, timeZone, formatOptions From 169e06d83cef5116f0e39c74d2c497f04ba6278d Mon Sep 17 00:00:00 2001 From: Bart Krakowski Date: Wed, 29 May 2024 16:55:35 +0200 Subject: [PATCH 07/14] refactor: update isValidDate return type for improved type safety --- packages/time/src/tests/isValidDate.test.ts | 38 +++++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/packages/time/src/tests/isValidDate.test.ts b/packages/time/src/tests/isValidDate.test.ts index 57a35567..188c31cb 100644 --- a/packages/time/src/tests/isValidDate.test.ts +++ b/packages/time/src/tests/isValidDate.test.ts @@ -1,16 +1,32 @@ -import {describe, expect, test} from 'vitest'; -import {isValidDate} from '../utils/isValidDate'; +import { describe, expect, test } from 'vitest' +import { isValidDate } from '../utils/isValidDate' describe('isValidDate', () => { test('should return true for a valid date', () => { - expect(isValidDate(new Date())).toBe(true); - }); + const date = new Date(); + expect(isValidDate(date)).toBe(true) + }) - test('should return false for an invalid date', () => { - expect(isValidDate(new Date("invalid"))).toBe(false); - }); + test.each([ + '2021-10-10', + new Date('invalid'), + {}, + undefined, + null, + NaN, + 0, + ])('should return false for invalid date %p', (date) => { + expect(isValidDate(date)).toBe(false) + }) - test("should return false for null", () => { - expect(isValidDate(null)).toBe(false); - }); -}); \ No newline at end of file + test('should assert type guards correctly', () => { + const notADate = 'not a date'; + if (isValidDate(notADate)) { + expect(notADate).toBeInstanceOf(Date) + notADate.getDate() + } else { + // @ts-expect-error + notADate.getTime() + } + }) +}) From 75cb7b331a5c2ee41263f45509378197e9645b60 Mon Sep 17 00:00:00 2001 From: Bart Krakowski Date: Wed, 29 May 2024 16:55:47 +0200 Subject: [PATCH 08/14] refactor: update isValidDate return type for improved type safety --- packages/time/src/utils/isValidDate.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/time/src/utils/isValidDate.ts b/packages/time/src/utils/isValidDate.ts index 987df31a..c0d15991 100644 --- a/packages/time/src/utils/isValidDate.ts +++ b/packages/time/src/utils/isValidDate.ts @@ -4,9 +4,6 @@ * @param date Date * @returns boolean */ -export function isValidDate(date: any): boolean { - if (Object.prototype.toString.call(date) !== '[object Date]') { - return false; - } - return date.getTime() === date.getTime(); -} \ No newline at end of file +export function isValidDate(date: unknown): date is Date { + return date instanceof Date && !isNaN(date.getTime()); +} From 5dca8d5e763a5e7cb2879ae836fec9cd16070a89 Mon Sep 17 00:00:00 2001 From: Bart Krakowski Date: Thu, 30 May 2024 17:52:05 +0200 Subject: [PATCH 09/14] refactor: update isValidDate return type for improved type safety --- packages/time/src/tests/isValidDate.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/time/src/tests/isValidDate.test.ts b/packages/time/src/tests/isValidDate.test.ts index 188c31cb..4d019705 100644 --- a/packages/time/src/tests/isValidDate.test.ts +++ b/packages/time/src/tests/isValidDate.test.ts @@ -25,8 +25,10 @@ describe('isValidDate', () => { expect(notADate).toBeInstanceOf(Date) notADate.getDate() } else { - // @ts-expect-error - notADate.getTime() + expect(() => { + // @ts-expect-error + notADate.getTime() + }).toThrowError() } }) }) From 8c4a89269d7b975729b0685a0d8a200b212947fa Mon Sep 17 00:00:00 2001 From: Bart Krakowski Date: Thu, 30 May 2024 19:44:41 +0200 Subject: [PATCH 10/14] refactor: types for utils --- .../time/src/formatter/buildDateFormatter.ts | 6 +++--- .../src/formatter/buildDateTimeFormatter.ts | 4 ++-- .../time/src/formatter/buildTimeFormatter.ts | 4 ++-- .../src/formatter/extractLocaleOptions.ts | 6 +++--- packages/time/src/formatter/shared.ts | 21 +++++++++---------- 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/packages/time/src/formatter/buildDateFormatter.ts b/packages/time/src/formatter/buildDateFormatter.ts index 680fba25..fa0bd6a0 100644 --- a/packages/time/src/formatter/buildDateFormatter.ts +++ b/packages/time/src/formatter/buildDateFormatter.ts @@ -1,6 +1,6 @@ import { getDefaultLocale } from "../utils/dateDefaults"; import { extractLocaleOptions } from "./extractLocaleOptions"; -import type { IDateFormatterBuildParams } from "./shared"; +import type { DateFormatterBuildParams } from "./shared"; /** * @typedef {Object} IDateFormatterOptions @@ -43,13 +43,13 @@ import type { IDateFormatterBuildParams } from "./shared"; * When using UTC date strings, it is suggested that you use the 'options' object * to set the 'timeZone' when building the formatter. The 'timeZone' is defaulted * to the user's browser timezone. - * @param {IDateFormatterBuildParams} [param0] + * @param {DateFormatterBuildParams} [param0] * @returns Intl.DateTimeFormat */ export function buildDateFormatter({ locale = getDefaultLocale(), options -}: IDateFormatterBuildParams = {}): Intl.DateTimeFormat { +}: DateFormatterBuildParams = {}): Intl.DateTimeFormat { const opts = (typeof options === 'string') ? { dateStyle: options } : options ?? {}; const {formatOptions = {}, ...localeOptions} = extractLocaleOptions(opts); const { dateStyle, ...rest } = formatOptions; diff --git a/packages/time/src/formatter/buildDateTimeFormatter.ts b/packages/time/src/formatter/buildDateTimeFormatter.ts index bc02c82e..73e6c06f 100644 --- a/packages/time/src/formatter/buildDateTimeFormatter.ts +++ b/packages/time/src/formatter/buildDateTimeFormatter.ts @@ -1,6 +1,6 @@ import { getDefaultLocale } from "../utils/dateDefaults"; import { extractLocaleOptions } from "./extractLocaleOptions"; -import type { IDateTimeFormatterBuildParams } from "./shared"; +import type { DateTimeFormatterBuildParams } from "./shared"; /** * @typedef {Object} IDateTimeFormatterOptions @@ -56,7 +56,7 @@ import type { IDateTimeFormatterBuildParams } from "./shared"; export function buildDateTimeFormatter({ locale = getDefaultLocale(), options -}: IDateTimeFormatterBuildParams): Intl.DateTimeFormat { +}: DateTimeFormatterBuildParams): Intl.DateTimeFormat { const opts = (typeof options === 'string') ? { dateStyle: options, timeStyle: options } : options ?? {}; const {formatOptions = {}, ...localeOptions} = extractLocaleOptions(opts); const { dateStyle, timeStyle, ...rest } = formatOptions; diff --git a/packages/time/src/formatter/buildTimeFormatter.ts b/packages/time/src/formatter/buildTimeFormatter.ts index 9ddee8d5..b0235bcc 100644 --- a/packages/time/src/formatter/buildTimeFormatter.ts +++ b/packages/time/src/formatter/buildTimeFormatter.ts @@ -1,6 +1,6 @@ import { getDefaultLocale } from "../utils/dateDefaults"; import { extractLocaleOptions } from "./extractLocaleOptions"; -import type { ITimeFormatterBuildParams } from "./shared"; +import type { TimeFormatterBuildParams } from "./shared"; /** * @typedef {Object} ITimeFormatterOptions @@ -50,7 +50,7 @@ import type { ITimeFormatterBuildParams } from "./shared"; export function buildTimeFormatter({ locale = getDefaultLocale(), options -}: ITimeFormatterBuildParams): Intl.DateTimeFormat { +}: TimeFormatterBuildParams): Intl.DateTimeFormat { const opts = (typeof options === 'string') ? { dateStyle: options } : options ?? {}; const {formatOptions = {}, ...localeOptions} = extractLocaleOptions(opts); const { timeStyle, ...rest } = formatOptions; diff --git a/packages/time/src/formatter/extractLocaleOptions.ts b/packages/time/src/formatter/extractLocaleOptions.ts index c7fed83a..843c3012 100644 --- a/packages/time/src/formatter/extractLocaleOptions.ts +++ b/packages/time/src/formatter/extractLocaleOptions.ts @@ -1,5 +1,5 @@ import { getDefaultCalendar, getDefaultTimeZone } from "../utils/dateDefaults"; -import type { IDateFormatterOptions, IDateTimeFormatterOptions, ITimeFormatterOptions } from "./shared"; +import type { DateFormatterOptions, DateTimeFormatterOptions, TimeFormatterOptions } from "./shared"; /** * @typedef {Object} IDateFormatterOptions @@ -63,7 +63,7 @@ import type { IDateFormatterOptions, IDateTimeFormatterOptions, ITimeFormatterOp * * If 'calender' or 'timeZone' are not provided, the default values provided by the * Intl.DateTimeFormat().resolvedOptions() are used. - * @param {IDateFormatterOptions | IDateTimeFormatterOptions | ITimeFormatterOptions} param0 + * @param {DateFormatterOptions | DateTimeFormatterOptions | TimeFormatterOptions} param0 * @returns */ export function extractLocaleOptions({ @@ -74,7 +74,7 @@ export function extractLocaleOptions({ hourCycle, timeZone = getDefaultTimeZone(), ...formatOptions -}: IDateFormatterOptions | IDateTimeFormatterOptions | ITimeFormatterOptions) { +}: DateFormatterOptions | DateTimeFormatterOptions | TimeFormatterOptions) { return { localeMatcher, calendar, numberingSystem, hour12, hourCycle, timeZone, formatOptions }; diff --git a/packages/time/src/formatter/shared.ts b/packages/time/src/formatter/shared.ts index af409b95..1bd4503f 100644 --- a/packages/time/src/formatter/shared.ts +++ b/packages/time/src/formatter/shared.ts @@ -1,4 +1,4 @@ -export interface ILocaleFormatterOptions { +export interface LocaleFormatterOptions { localeMatcher?: 'lookup' | 'best fit'; calendar?: string; numberingSystem?: string; @@ -9,7 +9,7 @@ export interface ILocaleFormatterOptions { type FormatStyle = 'full' | 'long' | 'medium' | 'short'; -export interface IDateFormatterOptions extends ILocaleFormatterOptions { +export interface DateFormatterOptions extends LocaleFormatterOptions { formatMatcher?: 'basic' | 'best fit'; weekday?: 'narrow' | 'short' | 'long'; era?: 'narrow' | 'short' | 'long'; @@ -20,7 +20,7 @@ export interface IDateFormatterOptions extends ILocaleFormatterOptions { dateStyle?: FormatStyle; } -export interface ITimeFormatterOptions extends ILocaleFormatterOptions { +export interface TimeFormatterOptions extends LocaleFormatterOptions { formatMatcher?: 'basic' | 'best fit'; dayPeriod?: 'narrow' | 'short' | 'long'; hour?: '2-digit' | 'numeric'; @@ -32,20 +32,19 @@ export interface ITimeFormatterOptions extends ILocaleFormatterOptions { timeStyle?: FormatStyle; } -export interface IDateTimeFormatterOptions extends IDateFormatterOptions, ITimeFormatterOptions { -} +export type DateTimeFormatterOptions = DateFormatterOptions & TimeFormatterOptions -export interface IDateFormatterBuildParams { +export interface DateFormatterBuildParams { locale?: string | Intl.Locale | Array; - options?: FormatStyle | IDateFormatterOptions; + options?: FormatStyle | DateFormatterOptions; } -export interface ITimeFormatterBuildParams { +export interface TimeFormatterBuildParams { locale?: string | Intl.Locale | Array; - options?: FormatStyle | ITimeFormatterOptions; + options?: FormatStyle | TimeFormatterOptions; } -export interface IDateTimeFormatterBuildParams { +export interface DateTimeFormatterBuildParams { locale?: string | Intl.Locale | Array; - options?: FormatStyle | IDateTimeFormatterOptions; + options?: FormatStyle | DateTimeFormatterOptions; } \ No newline at end of file From 3b2015d11ea11a339a0439916dc271883c095190 Mon Sep 17 00:00:00 2001 From: Bart Krakowski Date: Thu, 30 May 2024 19:55:34 +0200 Subject: [PATCH 11/14] refactor: types for utils --- .../time/src/formatter/buildDateFormatter.ts | 6 +-- .../src/formatter/buildDateTimeFormatter.ts | 6 +-- .../time/src/formatter/buildTimeFormatter.ts | 11 ++-- .../src/formatter/extractLocaleOptions.ts | 53 +++++++++++-------- packages/time/src/formatter/shared.ts | 6 ++- 5 files changed, 49 insertions(+), 33 deletions(-) diff --git a/packages/time/src/formatter/buildDateFormatter.ts b/packages/time/src/formatter/buildDateFormatter.ts index fa0bd6a0..b552078b 100644 --- a/packages/time/src/formatter/buildDateFormatter.ts +++ b/packages/time/src/formatter/buildDateFormatter.ts @@ -3,7 +3,7 @@ import { extractLocaleOptions } from "./extractLocaleOptions"; import type { DateFormatterBuildParams } from "./shared"; /** - * @typedef {Object} IDateFormatterOptions + * @typedef {Object} DateFormatterOptions * @property {string} [localeMatcher] * @property {string} [calendar] * @property {string} [numberingSystem] @@ -20,9 +20,9 @@ import type { DateFormatterBuildParams } from "./shared"; * * @typedef {string | Intl.Locale | string[] | Intl.Locale[]} Locale * - * @typedef {Object} IDateFormatterBuildParams + * @typedef {Object} DateFormatterBuildParams * @property {Locale} [locale] - * @property {string | IDateFormatterOptions} [options] + * @property {string | DateFormatterOptions} [options] */ /** diff --git a/packages/time/src/formatter/buildDateTimeFormatter.ts b/packages/time/src/formatter/buildDateTimeFormatter.ts index 73e6c06f..b96c6252 100644 --- a/packages/time/src/formatter/buildDateTimeFormatter.ts +++ b/packages/time/src/formatter/buildDateTimeFormatter.ts @@ -3,7 +3,7 @@ import { extractLocaleOptions } from "./extractLocaleOptions"; import type { DateTimeFormatterBuildParams } from "./shared"; /** - * @typedef {Object} IDateTimeFormatterOptions + * @typedef {Object} DateTimeFormatterOptions * @property {string} [localeMatcher] * @property {string} [calendar] * @property {string} [numberingSystem] @@ -27,9 +27,9 @@ import type { DateTimeFormatterBuildParams } from "./shared"; * * @typedef {string | Intl.Locale | string[] | Intl.Locale[]} Locale * - * @typedef {Object} IDateTimeFormatterOptions + * @typedef {Object} DateTimeFormatterOptions * @property {Locale} [locale] - * @property {string | IDateFormatterOptions} [options] + * @property {string | DateFormatterOptions} [options] */ /** diff --git a/packages/time/src/formatter/buildTimeFormatter.ts b/packages/time/src/formatter/buildTimeFormatter.ts index b0235bcc..3ea3a4c3 100644 --- a/packages/time/src/formatter/buildTimeFormatter.ts +++ b/packages/time/src/formatter/buildTimeFormatter.ts @@ -3,7 +3,7 @@ import { extractLocaleOptions } from "./extractLocaleOptions"; import type { TimeFormatterBuildParams } from "./shared"; /** - * @typedef {Object} ITimeFormatterOptions + * @typedef {Object} TimeFormatterOptions * @property {string} [localeMatcher] * @property {string} [calendar] * @property {string} [numberingSystem] @@ -21,9 +21,9 @@ import type { TimeFormatterBuildParams } from "./shared"; * * @typedef {string | Intl.Locale | string[] | Intl.Locale[]} Locale * - * @typedef {Object} ITimeFormatterBuildParams + * @typedef {Object} TimeFormatterBuildParams * @property {Locale} [locale] - * @property {string | IDateFormatterOptions} [options] + * @property {string | DateFormatterOptions} [options] */ /** @@ -44,7 +44,7 @@ import type { TimeFormatterBuildParams } from "./shared"; * When using UTC date strings, it is suggested that you use the 'options' object * to set the 'timeZone' when building the formatter. The 'timeZone' is defaulted * to the user's browser timezone. - * @param {IDateFormatterBuildParams} [param0] + * @param {DateFormatterBuildParams} [param0] * @returns Intl.DateTimeFormat */ export function buildTimeFormatter({ @@ -59,4 +59,5 @@ export function buildTimeFormatter({ ...(timeStyle ? { timeStyle } : rest), }; return new Intl.DateTimeFormat(locale, newOptions); -} \ No newline at end of file +} + diff --git a/packages/time/src/formatter/extractLocaleOptions.ts b/packages/time/src/formatter/extractLocaleOptions.ts index 843c3012..be50e999 100644 --- a/packages/time/src/formatter/extractLocaleOptions.ts +++ b/packages/time/src/formatter/extractLocaleOptions.ts @@ -1,8 +1,13 @@ -import { getDefaultCalendar, getDefaultTimeZone } from "../utils/dateDefaults"; -import type { DateFormatterOptions, DateTimeFormatterOptions, TimeFormatterOptions } from "./shared"; +import { getDefaultCalendar, getDefaultTimeZone } from '../utils/dateDefaults' +import type { + DateFormatterOptions, + DateTimeFormatterOptions, + StrictUnion, + TimeFormatterOptions, +} from './shared' /** - * @typedef {Object} IDateFormatterOptions + * @typedef {Object} DateFormatterOptions * @property {string} [localeMatcher] * @property {string} [calendar] * @property {string} [numberingSystem] @@ -16,8 +21,8 @@ import type { DateFormatterOptions, DateTimeFormatterOptions, TimeFormatterOptio * @property {string} [month] * @property {string} [day] * @property {string} [dateStyle] - * - * @typedef {Object} ITimeFormatterOptions + * + * @typedef {Object} TimeFormatterOptions * @property {string} [localeMatcher] * @property {string} [calendar] * @property {string} [numberingSystem] @@ -32,8 +37,8 @@ import type { DateFormatterOptions, DateTimeFormatterOptions, TimeFormatterOptio * @property {number} [fractionalSecondDigits] * @property {string} [timeZoneName] * @property {string} [timeStyle] - * - * @typedef {Object} IDateTimeFormatterOptions + * + * @typedef {Object} DateTimeFormatterOptions * @property {string} [localeMatcher] * @property {string} [calendar] * @property {string} [numberingSystem] @@ -56,26 +61,32 @@ import type { DateFormatterOptions, DateTimeFormatterOptions, TimeFormatterOptio * @property {string} [timeStyle] */ - /** +/** * Function: extractLocaleOptions * This function is used to extract the locale options from the 'options' parameter of the various * formatter 'build' functions. - * + * * If 'calender' or 'timeZone' are not provided, the default values provided by the * Intl.DateTimeFormat().resolvedOptions() are used. - * @param {DateFormatterOptions | DateTimeFormatterOptions | TimeFormatterOptions} param0 - * @returns + * @param {DateFormatterOptions | DateTimeFormatterOptions | TimeFormatterOptions} param0 + * @returns */ export function extractLocaleOptions({ - localeMatcher, - calendar = getDefaultCalendar(), - numberingSystem, - hour12, - hourCycle, - timeZone = getDefaultTimeZone(), + localeMatcher, + calendar = getDefaultCalendar(), + numberingSystem, + hour12, + hourCycle, + timeZone = getDefaultTimeZone(), ...formatOptions -}: DateFormatterOptions | DateTimeFormatterOptions | TimeFormatterOptions) { +}: StrictUnion) { return { - localeMatcher, calendar, numberingSystem, hour12, hourCycle, timeZone, formatOptions - }; -} \ No newline at end of file + localeMatcher, + calendar, + numberingSystem, + hour12, + hourCycle, + timeZone, + formatOptions, + } +} diff --git a/packages/time/src/formatter/shared.ts b/packages/time/src/formatter/shared.ts index 1bd4503f..5d45411c 100644 --- a/packages/time/src/formatter/shared.ts +++ b/packages/time/src/formatter/shared.ts @@ -47,4 +47,8 @@ export interface TimeFormatterBuildParams { export interface DateTimeFormatterBuildParams { locale?: string | Intl.Locale | Array; options?: FormatStyle | DateTimeFormatterOptions; -} \ No newline at end of file +} + +export type UnionKeys = T extends T ? keyof T : never; +export type StrictUnionHelper = T extends any ? T & Partial, keyof T>, never>> : never; +export type StrictUnion = StrictUnionHelper \ No newline at end of file From 389009155cc8c546d2efd2205976f722b4842324 Mon Sep 17 00:00:00 2001 From: Bart Krakowski Date: Thu, 30 May 2024 20:06:53 +0200 Subject: [PATCH 12/14] refactor: types for utils --- packages/time/src/utils/validateDate.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/time/src/utils/validateDate.ts b/packages/time/src/utils/validateDate.ts index 9416553d..eb7556f9 100644 --- a/packages/time/src/utils/validateDate.ts +++ b/packages/time/src/utils/validateDate.ts @@ -19,5 +19,5 @@ export function validateDate({date, parse = parser, errorMessage = `Invalid Date if (!isValidDate(d)) { throw new Error(`${errorMessage}: "${date}"`); } - return d as Date; + return d; } \ No newline at end of file From 97c4f3fe258f2119597d27e58d251c8b0a00953e Mon Sep 17 00:00:00 2001 From: Bart Krakowski Date: Mon, 3 Jun 2024 16:57:33 +0200 Subject: [PATCH 13/14] refactor: update formatter build params to improve type safety --- packages/time/src/formatter/shared.ts | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/time/src/formatter/shared.ts b/packages/time/src/formatter/shared.ts index 5d45411c..1458b41c 100644 --- a/packages/time/src/formatter/shared.ts +++ b/packages/time/src/formatter/shared.ts @@ -34,20 +34,14 @@ export interface TimeFormatterOptions extends LocaleFormatterOptions { export type DateTimeFormatterOptions = DateFormatterOptions & TimeFormatterOptions -export interface DateFormatterBuildParams { - locale?: string | Intl.Locale | Array; - options?: FormatStyle | DateFormatterOptions; +interface FormatterBuildParams { + locale?: string | Intl.Locale | Array; + options?: FormatStyle | TOptions; } -export interface TimeFormatterBuildParams { - locale?: string | Intl.Locale | Array; - options?: FormatStyle | TimeFormatterOptions; -} - -export interface DateTimeFormatterBuildParams { - locale?: string | Intl.Locale | Array; - options?: FormatStyle | DateTimeFormatterOptions; -} +export type DateFormatterBuildParams = FormatterBuildParams; +export type TimeFormatterBuildParams = FormatterBuildParams; +export type DateTimeFormatterBuildParams = FormatterBuildParams; export type UnionKeys = T extends T ? keyof T : never; export type StrictUnionHelper = T extends any ? T & Partial, keyof T>, never>> : never; From 3a21d0c917c02ad1162df8f9eb6e7e5f21e1d16d Mon Sep 17 00:00:00 2001 From: Bart Krakowski Date: Mon, 3 Jun 2024 16:59:47 +0200 Subject: [PATCH 14/14] refactor: update formatter build params to improve type safety --- packages/time/src/formatter/shared.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/time/src/formatter/shared.ts b/packages/time/src/formatter/shared.ts index 1458b41c..8bbe07e7 100644 --- a/packages/time/src/formatter/shared.ts +++ b/packages/time/src/formatter/shared.ts @@ -34,7 +34,7 @@ export interface TimeFormatterOptions extends LocaleFormatterOptions { export type DateTimeFormatterOptions = DateFormatterOptions & TimeFormatterOptions -interface FormatterBuildParams { +interface FormatterBuildParams { locale?: string | Intl.Locale | Array; options?: FormatStyle | TOptions; }