├── .editorconfig
├── .eslintrc.cjs
├── .github
├── CODEOWNERS
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug-report.md
│ └── feature-request.md
├── dependabot.yml
└── workflows
│ ├── ci.yml
│ └── publish.yml
├── .gitignore
├── .npmrc
├── .prettierignore
├── .prettierrc.cjs
├── .vscode
└── settings.json
├── CHANGELOG.md
├── LICENSE
├── README.md
├── package.json
├── pnpm-lock.yaml
├── src
└── index.ts
├── tests
├── index.test.ts
├── plugin.test.ts
├── ssg-mode.test.ts
├── vue-helper.ts
└── vue-use.test.ts
├── tsconfig.json
├── tsup.config.ts
└── vitest.config.ts
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.md]
12 | max_line_length = off
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | // @ts-check
2 | const { defineConfig } = require('eslint-define-config');
3 | const { readGitignoreFiles } = require('eslint-gitignore');
4 |
5 | module.exports = defineConfig({
6 | ignorePatterns: [
7 | ...readGitignoreFiles(),
8 | '.eslintrc.cjs', // Skip self linting
9 | ],
10 | root: true,
11 | env: {
12 | es6: true,
13 | node: true,
14 | },
15 | reportUnusedDisableDirectives: true,
16 | extends: [
17 | 'eslint:recommended',
18 | 'plugin:@typescript-eslint/recommended',
19 | 'plugin:@typescript-eslint/recommended-requiring-type-checking',
20 | 'plugin:jsdoc/recommended',
21 | 'plugin:prettier/recommended',
22 | ],
23 | parser: '@typescript-eslint/parser',
24 | parserOptions: {
25 | project: ['./tsconfig.json'],
26 | sourceType: 'module',
27 | warnOnUnsupportedTypeScriptVersion: false,
28 | },
29 | plugins: ['@typescript-eslint', 'prettier', 'jsdoc', 'spellcheck'],
30 | rules: {
31 | curly: ['error'],
32 | 'linebreak-style': ['error', 'unix'],
33 | 'no-case-declarations': 'warn',
34 | 'no-restricted-globals': [
35 | 'error',
36 | {
37 | name: '__dirname',
38 | message: "Use `fileURLToPath(new URL('.', import.meta.url))` instead.",
39 | },
40 | ],
41 | quotes: ['error', 'single', { avoidEscape: true }],
42 | semi: ['error', 'always'],
43 |
44 | '@typescript-eslint/array-type': [
45 | 'warn',
46 | { default: 'array-simple', readonly: 'generic' },
47 | ],
48 | '@typescript-eslint/ban-ts-comment': [
49 | 'error',
50 | { 'ts-expect-error': 'allow-with-description' },
51 | ],
52 | '@typescript-eslint/ban-types': 'warn',
53 | '@typescript-eslint/consistent-type-imports': 'error',
54 | '@typescript-eslint/explicit-function-return-type': [
55 | 'error',
56 | { allowExpressions: true },
57 | ],
58 | '@typescript-eslint/explicit-member-accessibility': 'error',
59 | '@typescript-eslint/indent': [
60 | 'error',
61 | 2,
62 | {
63 | SwitchCase: 1,
64 | ignoredNodes: ['MemberExpression', 'TSTypeParameterInstantiation'],
65 | },
66 | ],
67 | '@typescript-eslint/lines-between-class-members': [
68 | 'warn',
69 | 'always',
70 | { exceptAfterSingleLine: true },
71 | ],
72 | '@typescript-eslint/member-ordering': 'warn',
73 | '@typescript-eslint/no-explicit-any': 'off',
74 | '@typescript-eslint/no-inferrable-types': 'off',
75 | '@typescript-eslint/no-parameter-properties': 'off',
76 | '@typescript-eslint/no-unsafe-argument': 'off',
77 | '@typescript-eslint/no-unsafe-assignment': 'off',
78 | '@typescript-eslint/no-unsafe-call': 'off',
79 | '@typescript-eslint/no-unused-vars': 'off',
80 | '@typescript-eslint/prefer-nullish-coalescing': 'warn',
81 | '@typescript-eslint/prefer-optional-chain': 'warn',
82 | '@typescript-eslint/prefer-readonly': 'warn',
83 | '@typescript-eslint/prefer-reduce-type-parameter': 'warn',
84 | '@typescript-eslint/require-await': 'warn',
85 | '@typescript-eslint/restrict-template-expressions': 'off',
86 | '@typescript-eslint/typedef': [
87 | 'warn',
88 | { memberVariableDeclaration: true, variableDeclaration: true },
89 | ],
90 |
91 | 'jsdoc/match-description': [
92 | 'warn',
93 | {
94 | mainDescription:
95 | '/^[A-Z`].+?(\\.|:)(\\n\\n.*((\\n{1,2}- .+)|(_.+_)|`.+`|\\n\\n---))?\\s?$/us',
96 | matchDescription: '^[A-Z`].+(\\.|`.+`)$',
97 | contexts: ['any'],
98 | tags: {
99 | param: true,
100 | returns: true,
101 | },
102 | },
103 | ],
104 | 'jsdoc/no-types': 'error',
105 | 'jsdoc/require-jsdoc': [
106 | 'warn',
107 | {
108 | contexts: [
109 | 'ClassDeclaration',
110 | "ClassProperty:not([accessibility='private'])",
111 | 'ExportNamedDeclaration:has(VariableDeclaration)',
112 | 'FunctionExpression',
113 | "MethodDefinition:not([accessibility='private']) > FunctionExpression",
114 | 'TSEnumDeclaration',
115 | 'TSInterfaceDeclaration',
116 | 'TSMethodSignature',
117 | // 'TSPropertySignature',
118 | 'TSTypeAliasDeclaration',
119 | ],
120 | },
121 | ],
122 | 'jsdoc/require-param-type': 'off',
123 | 'jsdoc/require-returns-type': 'off',
124 | 'jsdoc/tag-lines': 'off',
125 |
126 | 'spellcheck/spell-checker': [
127 | 'warn',
128 | {
129 | minLength: 4,
130 | skipWords: [
131 | 'cancelled',
132 | 'globals',
133 | 'googletagmanager',
134 | 'inheritdoc',
135 | 'jsdoc',
136 | 'jsdom',
137 | 'minify',
138 | 'noninteraction',
139 | 'nullish',
140 | 'overridable',
141 | 'readonly',
142 | 'rollup',
143 | 'vite',
144 | 'vitest',
145 | 'vue',
146 | ],
147 | },
148 | ],
149 | },
150 | settings: {
151 | jsdoc: {
152 | mode: 'typescript',
153 | },
154 | },
155 | overrides: [
156 | {
157 | files: ['tests/*'],
158 | rules: {
159 | '@typescript-eslint/unbound-method': 'off',
160 | 'jsdoc/check-tag-names': 'off',
161 | 'jsdoc/require-jsdoc': 'off',
162 | },
163 | },
164 | ],
165 | });
166 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # Owner
2 | * @Shinigami92
3 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [Shinigami92]
2 | custom: ['https://www.paypal.com/donate?hosted_button_id=L7GY729FBKTZY']
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug Report
3 | about: Create a report to help us improve
4 | title: "Bug: "
5 | labels: ""
6 | assignees: ""
7 | ---
8 |
9 | ## Info
10 |
11 | | Tool | Version |
12 | | ------ | ------------- |
13 | | Plugin | v3.x.x |
14 | | Vue | v3.x.x |
15 | | Node | vx.x.x |
16 | | OS | win,linux,mac |
17 |
18 | ## Input
19 |
20 | ```js
21 |
22 | ```
23 |
24 | ## Output or Error
25 |
26 | ```bash
27 |
28 | ```
29 |
30 | ## Expected Output
31 |
32 | ```bash
33 |
34 | ```
35 |
36 | ## Additional Context
37 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature Request
3 | about: Suggest an idea for this project
4 | title: ""
5 | labels: ""
6 | assignees: ""
7 | ---
8 |
9 | ## Request / Idea
10 |
11 | ...
12 |
13 | ## Additional Context
14 |
15 | ...
16 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # Docs: https://docs.github.com/en/code-security/supply-chain-security/configuration-options-for-dependency-updates
2 | version: 2
3 | updates:
4 | - package-ecosystem: 'npm'
5 | directory: '/'
6 | schedule:
7 | interval: 'weekly'
8 | day: 'friday'
9 | labels:
10 | - 'dependencies'
11 | reviewers:
12 | - 'Shinigami92'
13 | versioning-strategy: increase
14 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | pull_request:
8 |
9 | jobs:
10 | build:
11 | runs-on: ${{ matrix.os }}
12 | strategy:
13 | matrix:
14 | os: [ubuntu-latest, macos-latest, windows-latest]
15 | node_version: [22]
16 | fail-fast: false
17 |
18 | name: 'Build&Test: node-${{ matrix.node_version }}, ${{ matrix.os }}'
19 | steps:
20 | - name: Checkout
21 | uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
22 |
23 | - name: Install pnpm
24 | uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v3.0.0
25 |
26 | - name: Set node version to ${{ matrix.node_version }}
27 | uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
28 | with:
29 | node-version: ${{ matrix.node_version }}
30 | cache: 'pnpm'
31 |
32 | - name: Versions
33 | run: |
34 | echo "pnpm: $(pnpm --version)"
35 | echo "npm : $(npm --version)"
36 | echo "node: $(node --version)"
37 | echo "process.versions:"
38 | node -p process.versions
39 |
40 | - name: Install dependencies
41 | run: pnpm install --frozen-lockfile
42 |
43 | - name: Build
44 | run: pnpm run build
45 |
46 | - name: Check scripts
47 | run: pnpm run ts-check
48 |
49 | - name: Test
50 | run: pnpm run test
51 |
52 | lint:
53 | runs-on: ubuntu-latest
54 | name: 'Lint: node-22, ubuntu-latest'
55 | steps:
56 | - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
57 |
58 | - name: Install pnpm
59 | uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v3.0.0
60 |
61 | - name: Set node version to 22
62 | uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
63 | with:
64 | node-version: 22
65 | cache: 'pnpm'
66 |
67 | - name: Prepare
68 | run: |
69 | pnpm install --frozen-lockfile
70 | pnpm run build
71 |
72 | - name: Lint
73 | run: pnpm run lint
74 |
75 | - name: Check formatting
76 | run: pnpm prettier --check .
77 |
--------------------------------------------------------------------------------
/.github/workflows/publish.yml:
--------------------------------------------------------------------------------
1 | name: Publish
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | jobs:
7 | release:
8 | if: github.ref == 'refs/heads/main'
9 | runs-on: ubuntu-latest
10 | name: Release
11 | steps:
12 | - name: Checkout
13 | uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
14 |
15 | - name: Install pnpm
16 | uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v3.0.0
17 |
18 | - name: Set node version to 22
19 | uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
20 | with:
21 | node-version: 22
22 | cache: 'pnpm'
23 |
24 | - name: Prepare
25 | run: pnpm install --frozen-lockfile
26 |
27 | - name: Set publishing config
28 | run: pnpm config set '//registry.npmjs.org/:_authToken' "${NODE_AUTH_TOKEN}"
29 | env:
30 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
31 |
32 | - name: Publish
33 | run: |
34 | PACKAGE_DIST_TAG=$(node -e "console.log(/^\d+\.\d+\.\d+(\-(\w+)\.\d+)$/.exec(require('./package.json').version)?.[2] || 'latest')")
35 | pnpm publish --access public --tag $PACKAGE_DIST_TAG
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | junit.xml
21 |
22 | # nyc test coverage
23 | .nyc_output
24 |
25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
26 | .grunt
27 |
28 | # Bower dependency directory (https://bower.io/)
29 | bower_components
30 |
31 | # node-waf configuration
32 | .lock-wscript
33 |
34 | # Compiled binary addons (https://nodejs.org/api/addons.html)
35 | build/Release
36 |
37 | # Dependency directories
38 | node_modules/
39 | jspm_packages/
40 | .pnpm-store/
41 |
42 | # TypeScript v1 declaration files
43 | typings/
44 |
45 | # Optional npm cache directory
46 | .npm
47 |
48 | # Optional eslint cache
49 | .eslintcache
50 |
51 | # Optional REPL history
52 | .node_repl_history
53 |
54 | # Output of 'npm pack'
55 | *.tgz
56 |
57 | # Yarn Integrity file
58 | .yarn-integrity
59 |
60 | # dotenv environment variables file
61 | .env
62 |
63 | # next.js build output
64 | .next
65 |
66 | # build
67 | dist
68 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | package-manager-strict=false
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | .github/ISSUE_TEMPLATE/
2 | .yarn/
3 | .pnpm-store/
4 | .pnp.cjs
5 | pnpm-lock.yaml
6 | coverage/
7 | dist/
8 | lib/
9 |
--------------------------------------------------------------------------------
/.prettierrc.cjs:
--------------------------------------------------------------------------------
1 | // @ts-check
2 |
3 | /**
4 | * @type {import('prettier').Options}
5 | */
6 | module.exports = {
7 | plugins: ['prettier-plugin-organize-imports'],
8 | singleQuote: true,
9 | trailingComma: 'all',
10 | overrides: [
11 | {
12 | files: '*.json5',
13 | options: {
14 | parser: 'json5',
15 | quoteProps: 'preserve',
16 | singleQuote: false,
17 | trailingComma: 'none',
18 | },
19 | },
20 | ],
21 | };
22 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "cSpell.words": [
3 | "googletagmanager",
4 | "inheritdoc",
5 | "kumar",
6 | "linebreak",
7 | "manish",
8 | "noninteraction",
9 | "npm's",
10 | "overridable",
11 | "pararms",
12 | "parens",
13 | "readonly",
14 | "shinigami",
15 | "vitest",
16 | "vuejs"
17 | ],
18 | "eslint.validate": ["javascript", "typescript"],
19 | "files.associations": {
20 | "*.json5": "jsonc"
21 | },
22 | "typescript.tsdk": "node_modules/typescript/lib"
23 | }
24 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Next
2 |
3 | [diff](https://github.com/gtm-support/vue-gtm/compare/3.1.0...main)
4 |
5 | # 3.1.0
6 |
7 | [diff](https://github.com/gtm-support/vue-gtm/compare/3.0.1...3.1.0)
8 |
9 | - Fix type augmentation for `vue`
10 | - Update `peerDependencies`
11 |
12 | # 3.0.1
13 |
14 | [diff](https://github.com/gtm-support/vue-gtm/compare/3.0.0...3.0.1)
15 |
16 | - Fix missing `types` exposing
17 |
18 | # 3.0.0
19 |
20 | [diff](https://github.com/gtm-support/vue-gtm/compare/2.2.0...3.0.0)
21 |
22 | - Drop cjs support
23 | - Return gtmPlugin from app context ([#409])
24 |
25 | [#409]: https://github.com/gtm-support/vue-gtm/pull/409
26 |
27 | # 2.2.0
28 |
29 | [diff](https://github.com/gtm-support/vue-gtm/compare/2.1.0...2.2.0)
30 |
31 | - Upgrade `core` to [2.1.0](https://github.com/gtm-support/core/releases/tag/2.1.0)
32 |
33 | # 2.1.0
34 |
35 | [diff](https://github.com/gtm-support/vue-gtm/compare/2.0.0...2.1.0)
36 |
37 | - Fix peer dependency ranges ([#351])
38 | - Internal changes of the bundling process
39 |
40 | [#351]: https://github.com/gtm-support/vue-gtm/issues/351
41 |
42 | # 2.0.0
43 |
44 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.6.0...2.0.0)
45 |
46 | ## BREAKING CHANGE
47 |
48 | - Minimum required Vue version is now `^3.2.0`
49 | - Minimum required Vue Router version is now `^4.1.0`
50 | - Minimum required EcmaScript is now `ES2018`
51 |
52 | ## Features
53 |
54 | - Now serving ESM and CJS
55 | - Handle `vue-router` failure checks manually ([#273])
56 | - Set `lib` from `ES2020` to `ES2018`
57 |
58 | [#273]: https://github.com/gtm-support/vue-gtm/pull/273
59 |
60 | # 1.6.0
61 |
62 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.5.0...1.6.0)
63 |
64 | - Upgrade `core` to [1.4.0](https://github.com/gtm-support/core/releases/tag/1.4.0)
65 | - Use `^`-semver modifier for `@gtm-support/core`
66 |
67 | # 1.5.0
68 |
69 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.4.0...1.5.0)
70 |
71 | - Upgrade `core` to [1.3.0](https://github.com/gtm-support/core/releases/tag/1.3.0)
72 |
73 | # 1.4.0
74 |
75 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.3.0...1.4.0)
76 |
77 | - Upgrade `core` to [1.2.0](https://github.com/gtm-support/core/releases/tag/1.2.0)
78 |
79 | # 1.3.0
80 |
81 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.2.3...1.3.0)
82 |
83 | - New option `vueRouterAdditionalEventData` ([#110])
84 |
85 | [#110]: https://github.com/gtm-support/vue-gtm/issues/110
86 |
87 | # 1.2.3
88 |
89 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.2.2...1.2.3)
90 |
91 | - Detect if running in browser context ([#97])
92 |
93 | [#97]: https://github.com/gtm-support/vue-gtm/pull/97
94 |
95 | # 1.2.2
96 |
97 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.2.1...1.2.2)
98 |
99 | - Make `vue-router` optional, for real this time...
100 |
101 | # 1.2.1
102 |
103 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.2.0...1.2.1)
104 |
105 | - Fix optional `vue-router` peer dependency
106 |
107 | # 1.2.0
108 |
109 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.1.0...1.2.0)
110 |
111 | - Upgrade `core` to [1.1.0](https://github.com/gtm-support/core/releases/tag/1.1.0)
112 |
113 | # 1.1.0
114 |
115 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.0.0...1.1.0)
116 |
117 | - Ability to ignore views by callback ([#37])
118 |
119 | ## BREAKING CHANGE
120 |
121 | - Ignore views is not case insensitive anymore
122 |
123 | [#37]: https://github.com/gtm-support/vue-gtm/pull/37
124 |
125 | # 1.0.0
126 |
127 | [diff](https://github.com/gtm-support/vue-gtm/compare/940a45a90d4cb44a045923910e7439d0202372ca...1.0.0)
128 |
129 | - Initial release
130 |
131 | # 1.0.0-alpha.3
132 |
133 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.0.0-alpha.2...1.0.0-alpha.3)
134 |
135 | - Update to [@gtm-support/core v1.0.0-alpha.3](https://github.com/gtm-support/core/releases/tag/1.0.0-alpha.3)
136 |
137 | # 1.0.0-alpha.2
138 |
139 | [diff](https://github.com/gtm-support/vue-gtm/compare/1.0.0-alpha.1...1.0.0-alpha.2)
140 |
141 | - Use [@gtm-support/core](https://github.com/gtm-support/core) natively
142 |
143 | ## BREAKING CHANGE
144 |
145 | The `id` parameter is now part of the options, therefor if you used the constructor you need to move the first argument into the second `option` argument.
146 | Also some names changed here and there.
147 |
148 | # 1.0.0-alpha.1
149 |
150 | [diff](https://github.com/gtm-support/vue-gtm/compare/940a45a90d4cb44a045923910e7439d0202372ca...1.0.0-alpha.1)
151 |
152 | - Compatibility release for `vue-gtm` `3.5.0`
153 | - [Previous Changelog](https://github.com/mib200/vue-gtm/blob/master/CHANGELOG.md)
154 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020-2024 Christopher Quadflieg
4 | Copyright (c) 2017-2020 Manish Kumar (Apache 2.0)
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
Vue Google Tag Manager
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Simple implementation of Google Tag Manager in Vue.js
13 |
14 | ---
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | This plugin will help you in your common GTM tasks.
35 |
36 | **Note: If you are looking to track all Vuex mutations, you can use [Vuex GTM plugin](https://gist.github.com/matt-e-king/ebdb39088c50b96bbbbe77c5bc8abb2b)**
37 |
38 | # Requirements
39 |
40 | - **Vue.** >= 3.0.0
41 | - **Google Tag Manager account.** To send data to
42 |
43 | **Optional dependencies**
44 |
45 | - **Vue Router** >= 4.x - In order to use auto-tracking of screens
46 |
47 | # Configuration
48 |
49 | `npm install @gtm-support/vue-gtm`
50 |
51 | Here is an example configuration:
52 |
53 | ```js
54 | import { createApp } from 'vue';
55 | import { createGtm } from '@gtm-support/vue-gtm';
56 | import router from './router';
57 |
58 | const app = createApp(App);
59 |
60 | app.use(router);
61 |
62 | app.use(
63 | createGtm({
64 | id: 'GTM-xxxxxx', // Your GTM single container ID, array of container ids ['GTM-xxxxxx', 'GTM-yyyyyy'] or array of objects [{id: 'GTM-xxxxxx', queryParams: { gtm_auth: 'abc123', gtm_preview: 'env-4', gtm_cookies_win: 'x'}}, {id: 'GTM-yyyyyy', queryParams: {gtm_auth: 'abc234', gtm_preview: 'env-5', gtm_cookies_win: 'x'}}], // Your GTM single container ID or array of container ids ['GTM-xxxxxx', 'GTM-yyyyyy']
65 | queryParams: {
66 | // Add URL query string when loading gtm.js with GTM ID (required when using custom environments)
67 | gtm_auth: 'AB7cDEf3GHIjkl-MnOP8qr',
68 | gtm_preview: 'env-4',
69 | gtm_cookies_win: 'x',
70 | },
71 | source: 'https://customurl.com/gtm.js', // Add your own serverside GTM script
72 | defer: false, // Script can be set to `defer` to speed up page load at the cost of less accurate results (in case visitor leaves before script is loaded, which is unlikely but possible). Defaults to false, so the script is loaded `async` by default
73 | compatibility: false, // Will add `async` and `defer` to the script tag to not block requests for old browsers that do not support `async`
74 | nonce: '2726c7f26c', // Will add `nonce` to the script tag
75 | enabled: true, // defaults to true. Plugin can be disabled by setting this to false for Ex: enabled: !!GDPR_Cookie (optional)
76 | debug: true, // Whether or not display console logs debugs (optional)
77 | loadScript: true, // Whether or not to load the GTM Script (Helpful if you are including GTM manually, but need the dataLayer functionality in your components) (optional)
78 | vueRouter: router, // Pass the router instance to automatically sync with router (optional)
79 | ignoredViews: ['homepage'], // Don't trigger events for specified router names (optional)
80 | trackOnNextTick: false, // Whether or not call trackView in Vue.nextTick
81 | }),
82 | );
83 | ```
84 |
85 | This injects the tag manager script in the page, except when `enabled` is set to `false`.
86 | In that case it will be injected when calling `this.$gtm.enable(true)` for the first time.
87 |
88 | Remember to enable the History Change Trigger for router changes to be sent through GTM.
89 |
90 | # Documentation
91 |
92 | Once the configuration is completed, you can access vue gtm instance in your components like that:
93 |
94 | ```js
95 | export default {
96 | name: 'MyComponent',
97 | data() {
98 | return {
99 | someData: false,
100 | };
101 | },
102 | methods: {
103 | onClick() {
104 | this.$gtm.trackEvent({
105 | event: null, // Event type [default = 'interaction'] (Optional)
106 | category: 'Calculator',
107 | action: 'click',
108 | label: 'Home page SIP calculator',
109 | value: 5000,
110 | noninteraction: false, // Optional
111 | });
112 | },
113 | },
114 | mounted() {
115 | this.$gtm.trackView('MyScreenName', 'currentPath');
116 | },
117 | };
118 | ```
119 |
120 | The passed variables are mapped with GTM data layer as follows
121 |
122 | ```js
123 | dataLayer.push({
124 | event: event || 'interaction',
125 | target: category,
126 | action: action,
127 | 'target-properties': label,
128 | value: value,
129 | 'interaction-type': noninteraction,
130 | ...rest,
131 | });
132 | ```
133 |
134 | You can also access the instance anywhere whenever you imported `Vue` by using `Vue.gtm`. It is especially useful when you are in a store module or somewhere else than a component's scope.
135 |
136 | It's also possible to send completely custom data to GTM with just pushing something manually to `dataLayer`:
137 |
138 | ```js
139 | if (this.$gtm.enabled()) {
140 | window.dataLayer?.push({
141 | event: 'myEvent',
142 | // further parameters
143 | });
144 | }
145 | ```
146 |
147 | ## Sync gtm with your router
148 |
149 | Thanks to vue-router guards, you can automatically dispatch new screen views on router change!
150 | To use this feature, you just need to inject the router instance on plugin initialization.
151 |
152 | This feature will generate the view name according to a priority rule:
153 |
154 | - If you defined a meta field for your route named `gtm` this will take the value of this field for the view name.
155 | - Otherwise, if the plugin don't have a value for the `meta.gtm` it will fallback to the internal route name.
156 |
157 | Most of the time the second case is enough, but sometimes you want to have more control on what is sent, this is where the first rule shine.
158 |
159 | Example:
160 |
161 | ```js
162 | const myRoute = {
163 | path: 'myRoute',
164 | name: 'MyRouteName',
165 | component: SomeComponent,
166 | meta: { gtm: 'MyCustomValue' },
167 | };
168 | ```
169 |
170 | > This will use `MyCustomValue` as the view name.
171 |
172 | ### Passing custom properties with page view events
173 |
174 | If your GTM setup expects custom data to be sent as part of your page views, you can add desired properties to your route definitions via the `meta.gtmAdditionalEventData` property.
175 |
176 | Example:
177 |
178 | ```js
179 | const myRoute = {
180 | path: 'myRoute',
181 | name: 'myRouteName',
182 | component: SomeComponent,
183 | meta: { gtmAdditionalEventData: { routeCategory: 'INFO' } },
184 | };
185 | ```
186 |
187 | > This sends the property `routeCategory` with the value 'INFO' as part of your page view event for that route.
188 |
189 | Note that the properties `event`, `content-name` and `content-view-name` are always overridden.
190 |
191 | ### Passing dynamic properties with page view events
192 |
193 | If you need to pass dynamic properties as part of your page views, you can set a callback that derives the custom data after navigation.
194 |
195 | Example:
196 |
197 | ```js
198 | createGtm({
199 | // ...other options
200 | vueRouter: router,
201 | vueRouterAdditionalEventData: () => ({
202 | someComputedProperty: computeProperty(),
203 | }),
204 | });
205 | ```
206 |
207 | > This computes and sends the property `someComputedProperty` as part of your page view event after every navigation.
208 |
209 | Note that a property with the same name on route level will override this.
210 |
211 | ## Using with composition API
212 |
213 | In order to use this plugin with composition API (inside your `setup` method), you can just call the custom composable `useGtm`.
214 |
215 | Example:
216 |
217 | ```vue
218 |
219 |
220 |
221 |
222 |
248 | ```
249 |
250 | ## Methods
251 |
252 | ### Enable plugin
253 |
254 | Check if plugin is enabled
255 |
256 | ```js
257 | this.$gtm.enabled();
258 | ```
259 |
260 | Enable plugin
261 |
262 | ```js
263 | this.$gtm.enable(true);
264 | ```
265 |
266 | Disable plugin
267 |
268 | ```js
269 | this.$gtm.enable(false);
270 | ```
271 |
272 | ### Debug plugin
273 |
274 | Check if plugin is in debug mode
275 |
276 | ```js
277 | this.$gtm.debugEnabled();
278 | ```
279 |
280 | Enable debug mode
281 |
282 | ```js
283 | this.$gtm.debug(true);
284 | ```
285 |
286 | Disable debug mode
287 |
288 | ```js
289 | this.$gtm.debug(false);
290 | ```
291 |
292 | ## Credits
293 |
294 | - [mib200 vue-gtm](https://github.com/mib200/vue-gtm)
295 | - [ScreamZ vue-analytics](https://github.com/ScreamZ/vue-analytics)
296 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@gtm-support/vue-gtm",
3 | "version": "3.1.0",
4 | "description": "Simple implementation of Google Tag Manager for Vue",
5 | "scripts": {
6 | "clean": "rimraf coverage .eslintcache dist pnpm-lock.yaml node_modules",
7 | "build:clean": "rimraf dist",
8 | "build:code": "tsup-node",
9 | "build": "run-s build:clean build:code",
10 | "format": "prettier --cache --write .",
11 | "lint": "eslint --cache --cache-strategy content --report-unused-disable-directives .",
12 | "ts-check": "tsc",
13 | "test": "vitest",
14 | "prepublishOnly": "pnpm run clean && pnpm install && pnpm run build",
15 | "preflight": "pnpm install && run-s format lint build test ts-check"
16 | },
17 | "type": "module",
18 | "files": [
19 | "dist"
20 | ],
21 | "module": "dist/index.js",
22 | "types": "dist/index.d.ts",
23 | "exports": {
24 | ".": "./dist/index.js",
25 | "./package.json": "./package.json"
26 | },
27 | "author": {
28 | "name": "Christopher Quadflieg",
29 | "email": "chrissi92@hotmail.de",
30 | "url": "https://github.com/Shinigami92"
31 | },
32 | "contributors": [
33 | {
34 | "name": "Manish Kumar",
35 | "url": "https://github.com/mib200"
36 | }
37 | ],
38 | "license": "MIT",
39 | "homepage": "https://github.com/gtm-support/vue-gtm",
40 | "repository": {
41 | "type": "git",
42 | "url": "https://github.com/gtm-support/vue-gtm.git"
43 | },
44 | "bugs": {
45 | "url": "https://github.com/gtm-support/vue-gtm/issues"
46 | },
47 | "keywords": [
48 | "analytics",
49 | "universal analytics",
50 | "google analytics",
51 | "google tag manager",
52 | "vue analytics",
53 | "vue tag manager",
54 | "vue google tag manager",
55 | "vue js google tag manager",
56 | "vuejs google tag manager",
57 | "vue js analytics",
58 | "vue gtm",
59 | "vuejs gtm",
60 | "vue js gtm",
61 | "vuejs",
62 | "tracking",
63 | "vue",
64 | "google"
65 | ],
66 | "dependencies": {
67 | "@gtm-support/core": "^3.0.1"
68 | },
69 | "devDependencies": {
70 | "@types/node": "~22.3.0",
71 | "@typescript-eslint/eslint-plugin": "~7.18.0",
72 | "@typescript-eslint/parser": "~7.18.0",
73 | "eslint": "~8.57.0",
74 | "eslint-config-prettier": "~9.1.0",
75 | "eslint-define-config": "~2.1.0",
76 | "eslint-gitignore": "~0.1.0",
77 | "eslint-plugin-jsdoc": "~50.2.1",
78 | "eslint-plugin-prettier": "~5.2.1",
79 | "eslint-plugin-spellcheck": "~0.0.20",
80 | "jsdom": "~24.1.1",
81 | "npm-run-all2": "~6.2.2",
82 | "prettier": "3.3.3",
83 | "prettier-plugin-organize-imports": "~4.0.0",
84 | "rimraf": "~6.0.1",
85 | "tsup": "~8.2.4",
86 | "typescript": "~5.5.4",
87 | "vitest": "~2.0.5",
88 | "vue": "^3.4.37",
89 | "vue-router": "^4.4.3"
90 | },
91 | "peerDependencies": {
92 | "vue": ">= 3.2.26 < 4.0.0"
93 | },
94 | "peerDependenciesMeta": {
95 | "vue-router": {
96 | "optional": true
97 | }
98 | },
99 | "optionalDependencies": {
100 | "vue-router": ">= 4.4.1 < 5.0.0"
101 | },
102 | "packageManager": "pnpm@9.7.0"
103 | }
104 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@gtm-support/core':
12 | specifier: ^3.0.1
13 | version: 3.0.1
14 | optionalDependencies:
15 | vue-router:
16 | specifier: '>= 4.4.1 < 5.0.0'
17 | version: 4.4.3(vue@3.4.37(typescript@5.5.4))
18 | devDependencies:
19 | '@types/node':
20 | specifier: ~22.3.0
21 | version: 22.3.0
22 | '@typescript-eslint/eslint-plugin':
23 | specifier: ~7.18.0
24 | version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)
25 | '@typescript-eslint/parser':
26 | specifier: ~7.18.0
27 | version: 7.18.0(eslint@8.57.0)(typescript@5.5.4)
28 | eslint:
29 | specifier: ~8.57.0
30 | version: 8.57.0
31 | eslint-config-prettier:
32 | specifier: ~9.1.0
33 | version: 9.1.0(eslint@8.57.0)
34 | eslint-define-config:
35 | specifier: ~2.1.0
36 | version: 2.1.0
37 | eslint-gitignore:
38 | specifier: ~0.1.0
39 | version: 0.1.0(eslint@8.57.0)
40 | eslint-plugin-jsdoc:
41 | specifier: ~50.2.1
42 | version: 50.2.1(eslint@8.57.0)
43 | eslint-plugin-prettier:
44 | specifier: ~5.2.1
45 | version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3)
46 | eslint-plugin-spellcheck:
47 | specifier: ~0.0.20
48 | version: 0.0.20(eslint@8.57.0)
49 | jsdom:
50 | specifier: ~24.1.1
51 | version: 24.1.1
52 | npm-run-all2:
53 | specifier: ~6.2.2
54 | version: 6.2.2
55 | prettier:
56 | specifier: 3.3.3
57 | version: 3.3.3
58 | prettier-plugin-organize-imports:
59 | specifier: ~4.0.0
60 | version: 4.0.0(prettier@3.3.3)(typescript@5.5.4)
61 | rimraf:
62 | specifier: ~6.0.1
63 | version: 6.0.1
64 | tsup:
65 | specifier: ~8.2.4
66 | version: 8.2.4(postcss@8.4.41)(typescript@5.5.4)
67 | typescript:
68 | specifier: ~5.5.4
69 | version: 5.5.4
70 | vitest:
71 | specifier: ~2.0.5
72 | version: 2.0.5(@types/node@22.3.0)(jsdom@24.1.1)
73 | vue:
74 | specifier: ^3.4.37
75 | version: 3.4.37(typescript@5.5.4)
76 |
77 | packages:
78 |
79 | '@ampproject/remapping@2.3.0':
80 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
81 | engines: {node: '>=6.0.0'}
82 |
83 | '@babel/helper-string-parser@7.24.8':
84 | resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
85 | engines: {node: '>=6.9.0'}
86 |
87 | '@babel/helper-validator-identifier@7.24.7':
88 | resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
89 | engines: {node: '>=6.9.0'}
90 |
91 | '@babel/parser@7.25.3':
92 | resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==}
93 | engines: {node: '>=6.0.0'}
94 | hasBin: true
95 |
96 | '@babel/types@7.25.2':
97 | resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==}
98 | engines: {node: '>=6.9.0'}
99 |
100 | '@es-joy/jsdoccomment@0.48.0':
101 | resolution: {integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==}
102 | engines: {node: '>=16'}
103 |
104 | '@esbuild/aix-ppc64@0.21.5':
105 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
106 | engines: {node: '>=12'}
107 | cpu: [ppc64]
108 | os: [aix]
109 |
110 | '@esbuild/aix-ppc64@0.23.0':
111 | resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==}
112 | engines: {node: '>=18'}
113 | cpu: [ppc64]
114 | os: [aix]
115 |
116 | '@esbuild/android-arm64@0.21.5':
117 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
118 | engines: {node: '>=12'}
119 | cpu: [arm64]
120 | os: [android]
121 |
122 | '@esbuild/android-arm64@0.23.0':
123 | resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==}
124 | engines: {node: '>=18'}
125 | cpu: [arm64]
126 | os: [android]
127 |
128 | '@esbuild/android-arm@0.21.5':
129 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
130 | engines: {node: '>=12'}
131 | cpu: [arm]
132 | os: [android]
133 |
134 | '@esbuild/android-arm@0.23.0':
135 | resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==}
136 | engines: {node: '>=18'}
137 | cpu: [arm]
138 | os: [android]
139 |
140 | '@esbuild/android-x64@0.21.5':
141 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
142 | engines: {node: '>=12'}
143 | cpu: [x64]
144 | os: [android]
145 |
146 | '@esbuild/android-x64@0.23.0':
147 | resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==}
148 | engines: {node: '>=18'}
149 | cpu: [x64]
150 | os: [android]
151 |
152 | '@esbuild/darwin-arm64@0.21.5':
153 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
154 | engines: {node: '>=12'}
155 | cpu: [arm64]
156 | os: [darwin]
157 |
158 | '@esbuild/darwin-arm64@0.23.0':
159 | resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==}
160 | engines: {node: '>=18'}
161 | cpu: [arm64]
162 | os: [darwin]
163 |
164 | '@esbuild/darwin-x64@0.21.5':
165 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
166 | engines: {node: '>=12'}
167 | cpu: [x64]
168 | os: [darwin]
169 |
170 | '@esbuild/darwin-x64@0.23.0':
171 | resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==}
172 | engines: {node: '>=18'}
173 | cpu: [x64]
174 | os: [darwin]
175 |
176 | '@esbuild/freebsd-arm64@0.21.5':
177 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
178 | engines: {node: '>=12'}
179 | cpu: [arm64]
180 | os: [freebsd]
181 |
182 | '@esbuild/freebsd-arm64@0.23.0':
183 | resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==}
184 | engines: {node: '>=18'}
185 | cpu: [arm64]
186 | os: [freebsd]
187 |
188 | '@esbuild/freebsd-x64@0.21.5':
189 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
190 | engines: {node: '>=12'}
191 | cpu: [x64]
192 | os: [freebsd]
193 |
194 | '@esbuild/freebsd-x64@0.23.0':
195 | resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==}
196 | engines: {node: '>=18'}
197 | cpu: [x64]
198 | os: [freebsd]
199 |
200 | '@esbuild/linux-arm64@0.21.5':
201 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
202 | engines: {node: '>=12'}
203 | cpu: [arm64]
204 | os: [linux]
205 |
206 | '@esbuild/linux-arm64@0.23.0':
207 | resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==}
208 | engines: {node: '>=18'}
209 | cpu: [arm64]
210 | os: [linux]
211 |
212 | '@esbuild/linux-arm@0.21.5':
213 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
214 | engines: {node: '>=12'}
215 | cpu: [arm]
216 | os: [linux]
217 |
218 | '@esbuild/linux-arm@0.23.0':
219 | resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==}
220 | engines: {node: '>=18'}
221 | cpu: [arm]
222 | os: [linux]
223 |
224 | '@esbuild/linux-ia32@0.21.5':
225 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
226 | engines: {node: '>=12'}
227 | cpu: [ia32]
228 | os: [linux]
229 |
230 | '@esbuild/linux-ia32@0.23.0':
231 | resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==}
232 | engines: {node: '>=18'}
233 | cpu: [ia32]
234 | os: [linux]
235 |
236 | '@esbuild/linux-loong64@0.21.5':
237 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
238 | engines: {node: '>=12'}
239 | cpu: [loong64]
240 | os: [linux]
241 |
242 | '@esbuild/linux-loong64@0.23.0':
243 | resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==}
244 | engines: {node: '>=18'}
245 | cpu: [loong64]
246 | os: [linux]
247 |
248 | '@esbuild/linux-mips64el@0.21.5':
249 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
250 | engines: {node: '>=12'}
251 | cpu: [mips64el]
252 | os: [linux]
253 |
254 | '@esbuild/linux-mips64el@0.23.0':
255 | resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==}
256 | engines: {node: '>=18'}
257 | cpu: [mips64el]
258 | os: [linux]
259 |
260 | '@esbuild/linux-ppc64@0.21.5':
261 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
262 | engines: {node: '>=12'}
263 | cpu: [ppc64]
264 | os: [linux]
265 |
266 | '@esbuild/linux-ppc64@0.23.0':
267 | resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==}
268 | engines: {node: '>=18'}
269 | cpu: [ppc64]
270 | os: [linux]
271 |
272 | '@esbuild/linux-riscv64@0.21.5':
273 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
274 | engines: {node: '>=12'}
275 | cpu: [riscv64]
276 | os: [linux]
277 |
278 | '@esbuild/linux-riscv64@0.23.0':
279 | resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==}
280 | engines: {node: '>=18'}
281 | cpu: [riscv64]
282 | os: [linux]
283 |
284 | '@esbuild/linux-s390x@0.21.5':
285 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
286 | engines: {node: '>=12'}
287 | cpu: [s390x]
288 | os: [linux]
289 |
290 | '@esbuild/linux-s390x@0.23.0':
291 | resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==}
292 | engines: {node: '>=18'}
293 | cpu: [s390x]
294 | os: [linux]
295 |
296 | '@esbuild/linux-x64@0.21.5':
297 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
298 | engines: {node: '>=12'}
299 | cpu: [x64]
300 | os: [linux]
301 |
302 | '@esbuild/linux-x64@0.23.0':
303 | resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==}
304 | engines: {node: '>=18'}
305 | cpu: [x64]
306 | os: [linux]
307 |
308 | '@esbuild/netbsd-x64@0.21.5':
309 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
310 | engines: {node: '>=12'}
311 | cpu: [x64]
312 | os: [netbsd]
313 |
314 | '@esbuild/netbsd-x64@0.23.0':
315 | resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==}
316 | engines: {node: '>=18'}
317 | cpu: [x64]
318 | os: [netbsd]
319 |
320 | '@esbuild/openbsd-arm64@0.23.0':
321 | resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==}
322 | engines: {node: '>=18'}
323 | cpu: [arm64]
324 | os: [openbsd]
325 |
326 | '@esbuild/openbsd-x64@0.21.5':
327 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
328 | engines: {node: '>=12'}
329 | cpu: [x64]
330 | os: [openbsd]
331 |
332 | '@esbuild/openbsd-x64@0.23.0':
333 | resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==}
334 | engines: {node: '>=18'}
335 | cpu: [x64]
336 | os: [openbsd]
337 |
338 | '@esbuild/sunos-x64@0.21.5':
339 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
340 | engines: {node: '>=12'}
341 | cpu: [x64]
342 | os: [sunos]
343 |
344 | '@esbuild/sunos-x64@0.23.0':
345 | resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==}
346 | engines: {node: '>=18'}
347 | cpu: [x64]
348 | os: [sunos]
349 |
350 | '@esbuild/win32-arm64@0.21.5':
351 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
352 | engines: {node: '>=12'}
353 | cpu: [arm64]
354 | os: [win32]
355 |
356 | '@esbuild/win32-arm64@0.23.0':
357 | resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==}
358 | engines: {node: '>=18'}
359 | cpu: [arm64]
360 | os: [win32]
361 |
362 | '@esbuild/win32-ia32@0.21.5':
363 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
364 | engines: {node: '>=12'}
365 | cpu: [ia32]
366 | os: [win32]
367 |
368 | '@esbuild/win32-ia32@0.23.0':
369 | resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==}
370 | engines: {node: '>=18'}
371 | cpu: [ia32]
372 | os: [win32]
373 |
374 | '@esbuild/win32-x64@0.21.5':
375 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
376 | engines: {node: '>=12'}
377 | cpu: [x64]
378 | os: [win32]
379 |
380 | '@esbuild/win32-x64@0.23.0':
381 | resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==}
382 | engines: {node: '>=18'}
383 | cpu: [x64]
384 | os: [win32]
385 |
386 | '@eslint-community/eslint-utils@4.4.0':
387 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
388 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
389 | peerDependencies:
390 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
391 |
392 | '@eslint-community/regexpp@4.11.0':
393 | resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
394 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
395 |
396 | '@eslint/eslintrc@2.1.4':
397 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
398 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
399 |
400 | '@eslint/js@8.57.0':
401 | resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
402 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
403 |
404 | '@gtm-support/core@3.0.1':
405 | resolution: {integrity: sha512-SctcoqvvAbGAgZzOb7DZ4wjbZF3ZS7Las3qIEByv6g7mzPf4E9LpRXcQzjmywYLcUx2jys7PWJAa3s5slvj/0w==}
406 |
407 | '@humanwhocodes/config-array@0.11.14':
408 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
409 | engines: {node: '>=10.10.0'}
410 | deprecated: Use @eslint/config-array instead
411 |
412 | '@humanwhocodes/module-importer@1.0.1':
413 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
414 | engines: {node: '>=12.22'}
415 |
416 | '@humanwhocodes/object-schema@2.0.3':
417 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
418 | deprecated: Use @eslint/object-schema instead
419 |
420 | '@isaacs/cliui@8.0.2':
421 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
422 | engines: {node: '>=12'}
423 |
424 | '@jridgewell/gen-mapping@0.3.5':
425 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
426 | engines: {node: '>=6.0.0'}
427 |
428 | '@jridgewell/resolve-uri@3.1.2':
429 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
430 | engines: {node: '>=6.0.0'}
431 |
432 | '@jridgewell/set-array@1.2.1':
433 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
434 | engines: {node: '>=6.0.0'}
435 |
436 | '@jridgewell/sourcemap-codec@1.5.0':
437 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
438 |
439 | '@jridgewell/trace-mapping@0.3.25':
440 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
441 |
442 | '@nodelib/fs.scandir@2.1.5':
443 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
444 | engines: {node: '>= 8'}
445 |
446 | '@nodelib/fs.stat@2.0.5':
447 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
448 | engines: {node: '>= 8'}
449 |
450 | '@nodelib/fs.walk@1.2.8':
451 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
452 | engines: {node: '>= 8'}
453 |
454 | '@pkgjs/parseargs@0.11.0':
455 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
456 | engines: {node: '>=14'}
457 |
458 | '@pkgr/core@0.1.1':
459 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
460 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
461 |
462 | '@rollup/rollup-android-arm-eabi@4.20.0':
463 | resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==}
464 | cpu: [arm]
465 | os: [android]
466 |
467 | '@rollup/rollup-android-arm64@4.20.0':
468 | resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==}
469 | cpu: [arm64]
470 | os: [android]
471 |
472 | '@rollup/rollup-darwin-arm64@4.20.0':
473 | resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==}
474 | cpu: [arm64]
475 | os: [darwin]
476 |
477 | '@rollup/rollup-darwin-x64@4.20.0':
478 | resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==}
479 | cpu: [x64]
480 | os: [darwin]
481 |
482 | '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
483 | resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==}
484 | cpu: [arm]
485 | os: [linux]
486 |
487 | '@rollup/rollup-linux-arm-musleabihf@4.20.0':
488 | resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==}
489 | cpu: [arm]
490 | os: [linux]
491 |
492 | '@rollup/rollup-linux-arm64-gnu@4.20.0':
493 | resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==}
494 | cpu: [arm64]
495 | os: [linux]
496 |
497 | '@rollup/rollup-linux-arm64-musl@4.20.0':
498 | resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==}
499 | cpu: [arm64]
500 | os: [linux]
501 |
502 | '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
503 | resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==}
504 | cpu: [ppc64]
505 | os: [linux]
506 |
507 | '@rollup/rollup-linux-riscv64-gnu@4.20.0':
508 | resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==}
509 | cpu: [riscv64]
510 | os: [linux]
511 |
512 | '@rollup/rollup-linux-s390x-gnu@4.20.0':
513 | resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==}
514 | cpu: [s390x]
515 | os: [linux]
516 |
517 | '@rollup/rollup-linux-x64-gnu@4.20.0':
518 | resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==}
519 | cpu: [x64]
520 | os: [linux]
521 |
522 | '@rollup/rollup-linux-x64-musl@4.20.0':
523 | resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==}
524 | cpu: [x64]
525 | os: [linux]
526 |
527 | '@rollup/rollup-win32-arm64-msvc@4.20.0':
528 | resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==}
529 | cpu: [arm64]
530 | os: [win32]
531 |
532 | '@rollup/rollup-win32-ia32-msvc@4.20.0':
533 | resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==}
534 | cpu: [ia32]
535 | os: [win32]
536 |
537 | '@rollup/rollup-win32-x64-msvc@4.20.0':
538 | resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==}
539 | cpu: [x64]
540 | os: [win32]
541 |
542 | '@types/estree@1.0.5':
543 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
544 |
545 | '@types/node@22.3.0':
546 | resolution: {integrity: sha512-nrWpWVaDZuaVc5X84xJ0vNrLvomM205oQyLsRt7OHNZbSHslcWsvgFR7O7hire2ZonjLrWBbedmotmIlJDVd6g==}
547 |
548 | '@typescript-eslint/eslint-plugin@7.18.0':
549 | resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==}
550 | engines: {node: ^18.18.0 || >=20.0.0}
551 | peerDependencies:
552 | '@typescript-eslint/parser': ^7.0.0
553 | eslint: ^8.56.0
554 | typescript: '*'
555 | peerDependenciesMeta:
556 | typescript:
557 | optional: true
558 |
559 | '@typescript-eslint/parser@7.18.0':
560 | resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==}
561 | engines: {node: ^18.18.0 || >=20.0.0}
562 | peerDependencies:
563 | eslint: ^8.56.0
564 | typescript: '*'
565 | peerDependenciesMeta:
566 | typescript:
567 | optional: true
568 |
569 | '@typescript-eslint/scope-manager@7.18.0':
570 | resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==}
571 | engines: {node: ^18.18.0 || >=20.0.0}
572 |
573 | '@typescript-eslint/type-utils@7.18.0':
574 | resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==}
575 | engines: {node: ^18.18.0 || >=20.0.0}
576 | peerDependencies:
577 | eslint: ^8.56.0
578 | typescript: '*'
579 | peerDependenciesMeta:
580 | typescript:
581 | optional: true
582 |
583 | '@typescript-eslint/types@7.18.0':
584 | resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==}
585 | engines: {node: ^18.18.0 || >=20.0.0}
586 |
587 | '@typescript-eslint/typescript-estree@7.18.0':
588 | resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==}
589 | engines: {node: ^18.18.0 || >=20.0.0}
590 | peerDependencies:
591 | typescript: '*'
592 | peerDependenciesMeta:
593 | typescript:
594 | optional: true
595 |
596 | '@typescript-eslint/utils@7.18.0':
597 | resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==}
598 | engines: {node: ^18.18.0 || >=20.0.0}
599 | peerDependencies:
600 | eslint: ^8.56.0
601 |
602 | '@typescript-eslint/visitor-keys@7.18.0':
603 | resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==}
604 | engines: {node: ^18.18.0 || >=20.0.0}
605 |
606 | '@ungap/structured-clone@1.2.0':
607 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
608 |
609 | '@vitest/expect@2.0.5':
610 | resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==}
611 |
612 | '@vitest/pretty-format@2.0.5':
613 | resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==}
614 |
615 | '@vitest/runner@2.0.5':
616 | resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==}
617 |
618 | '@vitest/snapshot@2.0.5':
619 | resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==}
620 |
621 | '@vitest/spy@2.0.5':
622 | resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==}
623 |
624 | '@vitest/utils@2.0.5':
625 | resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==}
626 |
627 | '@vue/compiler-core@3.4.37':
628 | resolution: {integrity: sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==}
629 |
630 | '@vue/compiler-dom@3.4.37':
631 | resolution: {integrity: sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==}
632 |
633 | '@vue/compiler-sfc@3.4.37':
634 | resolution: {integrity: sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==}
635 |
636 | '@vue/compiler-ssr@3.4.37':
637 | resolution: {integrity: sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==}
638 |
639 | '@vue/devtools-api@6.6.3':
640 | resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==}
641 |
642 | '@vue/reactivity@3.4.37':
643 | resolution: {integrity: sha512-UmdKXGx0BZ5kkxPqQr3PK3tElz6adTey4307NzZ3whZu19i5VavYal7u2FfOmAzlcDVgE8+X0HZ2LxLb/jgbYw==}
644 |
645 | '@vue/runtime-core@3.4.37':
646 | resolution: {integrity: sha512-MNjrVoLV/sirHZoD7QAilU1Ifs7m/KJv4/84QVbE6nyAZGQNVOa1HGxaOzp9YqCG+GpLt1hNDC4RbH+KtanV7w==}
647 |
648 | '@vue/runtime-dom@3.4.37':
649 | resolution: {integrity: sha512-Mg2EwgGZqtwKrqdL/FKMF2NEaOHuH+Ks9TQn3DHKyX//hQTYOun+7Tqp1eo0P4Ds+SjltZshOSRq6VsU0baaNg==}
650 |
651 | '@vue/server-renderer@3.4.37':
652 | resolution: {integrity: sha512-jZ5FAHDR2KBq2FsRUJW6GKDOAG9lUTX8aBEGq4Vf6B/35I9fPce66BornuwmqmKgfiSlecwuOb6oeoamYMohkg==}
653 | peerDependencies:
654 | vue: 3.4.37
655 |
656 | '@vue/shared@3.4.37':
657 | resolution: {integrity: sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==}
658 |
659 | acorn-jsx@5.3.2:
660 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
661 | peerDependencies:
662 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
663 |
664 | acorn@8.12.1:
665 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
666 | engines: {node: '>=0.4.0'}
667 | hasBin: true
668 |
669 | agent-base@7.1.1:
670 | resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
671 | engines: {node: '>= 14'}
672 |
673 | ajv@6.12.6:
674 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
675 |
676 | ansi-regex@5.0.1:
677 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
678 | engines: {node: '>=8'}
679 |
680 | ansi-regex@6.0.1:
681 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
682 | engines: {node: '>=12'}
683 |
684 | ansi-styles@4.3.0:
685 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
686 | engines: {node: '>=8'}
687 |
688 | ansi-styles@6.2.1:
689 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
690 | engines: {node: '>=12'}
691 |
692 | any-promise@1.3.0:
693 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
694 |
695 | anymatch@3.1.3:
696 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
697 | engines: {node: '>= 8'}
698 |
699 | are-docs-informative@0.0.2:
700 | resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==}
701 | engines: {node: '>=14'}
702 |
703 | argparse@2.0.1:
704 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
705 |
706 | array-buffer-byte-length@1.0.1:
707 | resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
708 | engines: {node: '>= 0.4'}
709 |
710 | array-union@2.1.0:
711 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
712 | engines: {node: '>=8'}
713 |
714 | array.prototype.flatmap@1.3.2:
715 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
716 | engines: {node: '>= 0.4'}
717 |
718 | arraybuffer.prototype.slice@1.0.3:
719 | resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
720 | engines: {node: '>= 0.4'}
721 |
722 | assertion-error@2.0.1:
723 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
724 | engines: {node: '>=12'}
725 |
726 | asynckit@0.4.0:
727 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
728 |
729 | available-typed-arrays@1.0.7:
730 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
731 | engines: {node: '>= 0.4'}
732 |
733 | balanced-match@1.0.2:
734 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
735 |
736 | binary-extensions@2.3.0:
737 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
738 | engines: {node: '>=8'}
739 |
740 | brace-expansion@1.1.11:
741 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
742 |
743 | brace-expansion@2.0.1:
744 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
745 |
746 | braces@3.0.3:
747 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
748 | engines: {node: '>=8'}
749 |
750 | bundle-require@5.0.0:
751 | resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==}
752 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
753 | peerDependencies:
754 | esbuild: '>=0.18'
755 |
756 | cac@6.7.14:
757 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
758 | engines: {node: '>=8'}
759 |
760 | call-bind@1.0.7:
761 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
762 | engines: {node: '>= 0.4'}
763 |
764 | callsites@3.1.0:
765 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
766 | engines: {node: '>=6'}
767 |
768 | chai@5.1.1:
769 | resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==}
770 | engines: {node: '>=12'}
771 |
772 | chalk@4.1.2:
773 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
774 | engines: {node: '>=10'}
775 |
776 | check-error@2.1.1:
777 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
778 | engines: {node: '>= 16'}
779 |
780 | chokidar@3.6.0:
781 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
782 | engines: {node: '>= 8.10.0'}
783 |
784 | color-convert@2.0.1:
785 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
786 | engines: {node: '>=7.0.0'}
787 |
788 | color-name@1.1.4:
789 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
790 |
791 | combined-stream@1.0.8:
792 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
793 | engines: {node: '>= 0.8'}
794 |
795 | commander@4.1.1:
796 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
797 | engines: {node: '>= 6'}
798 |
799 | comment-parser@1.4.1:
800 | resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==}
801 | engines: {node: '>= 12.0.0'}
802 |
803 | concat-map@0.0.1:
804 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
805 |
806 | consola@3.2.3:
807 | resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
808 | engines: {node: ^14.18.0 || >=16.10.0}
809 |
810 | cross-spawn@7.0.3:
811 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
812 | engines: {node: '>= 8'}
813 |
814 | cssstyle@4.0.1:
815 | resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==}
816 | engines: {node: '>=18'}
817 |
818 | csstype@3.1.3:
819 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
820 |
821 | data-urls@5.0.0:
822 | resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
823 | engines: {node: '>=18'}
824 |
825 | data-view-buffer@1.0.1:
826 | resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
827 | engines: {node: '>= 0.4'}
828 |
829 | data-view-byte-length@1.0.1:
830 | resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
831 | engines: {node: '>= 0.4'}
832 |
833 | data-view-byte-offset@1.0.0:
834 | resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
835 | engines: {node: '>= 0.4'}
836 |
837 | debug@4.3.6:
838 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
839 | engines: {node: '>=6.0'}
840 | peerDependencies:
841 | supports-color: '*'
842 | peerDependenciesMeta:
843 | supports-color:
844 | optional: true
845 |
846 | decimal.js@10.4.3:
847 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
848 |
849 | deep-eql@5.0.2:
850 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
851 | engines: {node: '>=6'}
852 |
853 | deep-is@0.1.4:
854 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
855 |
856 | define-data-property@1.1.4:
857 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
858 | engines: {node: '>= 0.4'}
859 |
860 | define-properties@1.2.1:
861 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
862 | engines: {node: '>= 0.4'}
863 |
864 | delayed-stream@1.0.0:
865 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
866 | engines: {node: '>=0.4.0'}
867 |
868 | dir-glob@3.0.1:
869 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
870 | engines: {node: '>=8'}
871 |
872 | doctrine@3.0.0:
873 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
874 | engines: {node: '>=6.0.0'}
875 |
876 | eastasianwidth@0.2.0:
877 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
878 |
879 | emoji-regex@8.0.0:
880 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
881 |
882 | emoji-regex@9.2.2:
883 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
884 |
885 | entities@4.5.0:
886 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
887 | engines: {node: '>=0.12'}
888 |
889 | entities@5.0.0:
890 | resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==}
891 | engines: {node: '>=0.12'}
892 |
893 | es-abstract@1.23.3:
894 | resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
895 | engines: {node: '>= 0.4'}
896 |
897 | es-define-property@1.0.0:
898 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
899 | engines: {node: '>= 0.4'}
900 |
901 | es-errors@1.3.0:
902 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
903 | engines: {node: '>= 0.4'}
904 |
905 | es-module-lexer@1.5.4:
906 | resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
907 |
908 | es-object-atoms@1.0.0:
909 | resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
910 | engines: {node: '>= 0.4'}
911 |
912 | es-set-tostringtag@2.0.3:
913 | resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
914 | engines: {node: '>= 0.4'}
915 |
916 | es-shim-unscopables@1.0.2:
917 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
918 |
919 | es-to-primitive@1.2.1:
920 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
921 | engines: {node: '>= 0.4'}
922 |
923 | esbuild@0.21.5:
924 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
925 | engines: {node: '>=12'}
926 | hasBin: true
927 |
928 | esbuild@0.23.0:
929 | resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==}
930 | engines: {node: '>=18'}
931 | hasBin: true
932 |
933 | escape-string-regexp@4.0.0:
934 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
935 | engines: {node: '>=10'}
936 |
937 | eslint-config-prettier@9.1.0:
938 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
939 | hasBin: true
940 | peerDependencies:
941 | eslint: '>=7.0.0'
942 |
943 | eslint-define-config@2.1.0:
944 | resolution: {integrity: sha512-QUp6pM9pjKEVannNAbSJNeRuYwW3LshejfyBBpjeMGaJjaDUpVps4C6KVR8R7dWZnD3i0synmrE36znjTkJvdQ==}
945 | engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'}
946 |
947 | eslint-gitignore@0.1.0:
948 | resolution: {integrity: sha512-VFvY5Wyjuz5xXDC/NeONHzsh4YQNok2Gzg4SftAAuhkbrdHv5CChjfiFyLKhRlgOdCJr5kBquaLXHtuDBTW2/Q==}
949 | engines: {node: ^10.12.0 || >=12.0.0}
950 | peerDependencies:
951 | eslint: '>=6.7.0'
952 |
953 | eslint-plugin-jsdoc@50.2.1:
954 | resolution: {integrity: sha512-KbGhcct6JxzM0x1gjqH1hf4vvc+YNMag5JXyMuPFIPP9THWctRg3UgBUjNcI6a6Rw+1GdKeJ3vTmSICLVF0mtw==}
955 | engines: {node: '>=18'}
956 | peerDependencies:
957 | eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
958 |
959 | eslint-plugin-prettier@5.2.1:
960 | resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==}
961 | engines: {node: ^14.18.0 || >=16.0.0}
962 | peerDependencies:
963 | '@types/eslint': '>=8.0.0'
964 | eslint: '>=8.0.0'
965 | eslint-config-prettier: '*'
966 | prettier: '>=3.0.0'
967 | peerDependenciesMeta:
968 | '@types/eslint':
969 | optional: true
970 | eslint-config-prettier:
971 | optional: true
972 |
973 | eslint-plugin-spellcheck@0.0.20:
974 | resolution: {integrity: sha512-GJa6vgzWAYqe0elKADAsiBRrhvqBnKyt7tpFSqlCZJsK2W9+K80oMyHhKolA7vJ13H5RCGs5/KCN+mKUyKoAiA==}
975 | peerDependencies:
976 | eslint: '>=0.8.0'
977 |
978 | eslint-scope@7.2.2:
979 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
980 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
981 |
982 | eslint-visitor-keys@3.4.3:
983 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
984 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
985 |
986 | eslint-visitor-keys@4.0.0:
987 | resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
988 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
989 |
990 | eslint@8.57.0:
991 | resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
992 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
993 | hasBin: true
994 |
995 | espree@10.1.0:
996 | resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==}
997 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
998 |
999 | espree@9.6.1:
1000 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1001 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1002 |
1003 | esquery@1.6.0:
1004 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
1005 | engines: {node: '>=0.10'}
1006 |
1007 | esrecurse@4.3.0:
1008 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1009 | engines: {node: '>=4.0'}
1010 |
1011 | estraverse@5.3.0:
1012 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1013 | engines: {node: '>=4.0'}
1014 |
1015 | estree-walker@2.0.2:
1016 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1017 |
1018 | estree-walker@3.0.3:
1019 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
1020 |
1021 | esutils@2.0.3:
1022 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1023 | engines: {node: '>=0.10.0'}
1024 |
1025 | execa@5.1.1:
1026 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
1027 | engines: {node: '>=10'}
1028 |
1029 | execa@8.0.1:
1030 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
1031 | engines: {node: '>=16.17'}
1032 |
1033 | fast-deep-equal@3.1.3:
1034 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1035 |
1036 | fast-diff@1.3.0:
1037 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
1038 |
1039 | fast-glob@3.3.2:
1040 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
1041 | engines: {node: '>=8.6.0'}
1042 |
1043 | fast-json-stable-stringify@2.1.0:
1044 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1045 |
1046 | fast-levenshtein@2.0.6:
1047 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1048 |
1049 | fastq@1.17.1:
1050 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
1051 |
1052 | file-entry-cache@6.0.1:
1053 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1054 | engines: {node: ^10.12.0 || >=12.0.0}
1055 |
1056 | fill-range@7.1.1:
1057 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
1058 | engines: {node: '>=8'}
1059 |
1060 | find-up@5.0.0:
1061 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1062 | engines: {node: '>=10'}
1063 |
1064 | flat-cache@3.2.0:
1065 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
1066 | engines: {node: ^10.12.0 || >=12.0.0}
1067 |
1068 | flatted@3.3.1:
1069 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
1070 |
1071 | for-each@0.3.3:
1072 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
1073 |
1074 | foreground-child@3.3.0:
1075 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
1076 | engines: {node: '>=14'}
1077 |
1078 | form-data@4.0.0:
1079 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
1080 | engines: {node: '>= 6'}
1081 |
1082 | fs.realpath@1.0.0:
1083 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1084 |
1085 | fsevents@2.3.3:
1086 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1087 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1088 | os: [darwin]
1089 |
1090 | function-bind@1.1.2:
1091 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
1092 |
1093 | function.prototype.name@1.1.6:
1094 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
1095 | engines: {node: '>= 0.4'}
1096 |
1097 | functions-have-names@1.2.3:
1098 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
1099 |
1100 | get-func-name@2.0.2:
1101 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
1102 |
1103 | get-intrinsic@1.2.4:
1104 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
1105 | engines: {node: '>= 0.4'}
1106 |
1107 | get-stream@6.0.1:
1108 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
1109 | engines: {node: '>=10'}
1110 |
1111 | get-stream@8.0.1:
1112 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
1113 | engines: {node: '>=16'}
1114 |
1115 | get-symbol-description@1.0.2:
1116 | resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
1117 | engines: {node: '>= 0.4'}
1118 |
1119 | glob-parent@5.1.2:
1120 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1121 | engines: {node: '>= 6'}
1122 |
1123 | glob-parent@6.0.2:
1124 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1125 | engines: {node: '>=10.13.0'}
1126 |
1127 | glob@10.4.5:
1128 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
1129 | hasBin: true
1130 |
1131 | glob@11.0.0:
1132 | resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==}
1133 | engines: {node: 20 || >=22}
1134 | hasBin: true
1135 |
1136 | glob@7.2.3:
1137 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1138 | deprecated: Glob versions prior to v9 are no longer supported
1139 |
1140 | globals@13.24.0:
1141 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
1142 | engines: {node: '>=8'}
1143 |
1144 | globalthis@1.0.4:
1145 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
1146 | engines: {node: '>= 0.4'}
1147 |
1148 | globby@11.1.0:
1149 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1150 | engines: {node: '>=10'}
1151 |
1152 | gopd@1.0.1:
1153 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
1154 |
1155 | graphemer@1.4.0:
1156 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1157 |
1158 | has-bigints@1.0.2:
1159 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
1160 |
1161 | has-flag@4.0.0:
1162 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1163 | engines: {node: '>=8'}
1164 |
1165 | has-property-descriptors@1.0.2:
1166 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
1167 |
1168 | has-proto@1.0.3:
1169 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
1170 | engines: {node: '>= 0.4'}
1171 |
1172 | has-symbols@1.0.3:
1173 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1174 | engines: {node: '>= 0.4'}
1175 |
1176 | has-tostringtag@1.0.2:
1177 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
1178 | engines: {node: '>= 0.4'}
1179 |
1180 | hasown@2.0.2:
1181 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
1182 | engines: {node: '>= 0.4'}
1183 |
1184 | html-encoding-sniffer@4.0.0:
1185 | resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
1186 | engines: {node: '>=18'}
1187 |
1188 | http-proxy-agent@7.0.2:
1189 | resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
1190 | engines: {node: '>= 14'}
1191 |
1192 | https-proxy-agent@7.0.5:
1193 | resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
1194 | engines: {node: '>= 14'}
1195 |
1196 | human-signals@2.1.0:
1197 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
1198 | engines: {node: '>=10.17.0'}
1199 |
1200 | human-signals@5.0.0:
1201 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
1202 | engines: {node: '>=16.17.0'}
1203 |
1204 | hunspell-spellchecker@1.0.2:
1205 | resolution: {integrity: sha512-4DwmFAvlz+ChsqLDsZT2cwBsYNXh+oWboemxXtafwKIyItq52xfR4e4kr017sLAoPaSYVofSOvPUfmOAhXyYvw==}
1206 | hasBin: true
1207 |
1208 | iconv-lite@0.6.3:
1209 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
1210 | engines: {node: '>=0.10.0'}
1211 |
1212 | ignore@5.3.2:
1213 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
1214 | engines: {node: '>= 4'}
1215 |
1216 | import-fresh@3.3.0:
1217 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1218 | engines: {node: '>=6'}
1219 |
1220 | imurmurhash@0.1.4:
1221 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1222 | engines: {node: '>=0.8.19'}
1223 |
1224 | inflight@1.0.6:
1225 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1226 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
1227 |
1228 | inherits@2.0.4:
1229 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1230 |
1231 | internal-slot@1.0.7:
1232 | resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
1233 | engines: {node: '>= 0.4'}
1234 |
1235 | is-array-buffer@3.0.4:
1236 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
1237 | engines: {node: '>= 0.4'}
1238 |
1239 | is-bigint@1.0.4:
1240 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
1241 |
1242 | is-binary-path@2.1.0:
1243 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1244 | engines: {node: '>=8'}
1245 |
1246 | is-boolean-object@1.1.2:
1247 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
1248 | engines: {node: '>= 0.4'}
1249 |
1250 | is-callable@1.2.7:
1251 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1252 | engines: {node: '>= 0.4'}
1253 |
1254 | is-data-view@1.0.1:
1255 | resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
1256 | engines: {node: '>= 0.4'}
1257 |
1258 | is-date-object@1.0.5:
1259 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
1260 | engines: {node: '>= 0.4'}
1261 |
1262 | is-extglob@2.1.1:
1263 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1264 | engines: {node: '>=0.10.0'}
1265 |
1266 | is-fullwidth-code-point@3.0.0:
1267 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1268 | engines: {node: '>=8'}
1269 |
1270 | is-glob@4.0.3:
1271 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1272 | engines: {node: '>=0.10.0'}
1273 |
1274 | is-negative-zero@2.0.3:
1275 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
1276 | engines: {node: '>= 0.4'}
1277 |
1278 | is-number-object@1.0.7:
1279 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1280 | engines: {node: '>= 0.4'}
1281 |
1282 | is-number@7.0.0:
1283 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1284 | engines: {node: '>=0.12.0'}
1285 |
1286 | is-path-inside@3.0.3:
1287 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1288 | engines: {node: '>=8'}
1289 |
1290 | is-potential-custom-element-name@1.0.1:
1291 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
1292 |
1293 | is-regex@1.1.4:
1294 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1295 | engines: {node: '>= 0.4'}
1296 |
1297 | is-shared-array-buffer@1.0.3:
1298 | resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
1299 | engines: {node: '>= 0.4'}
1300 |
1301 | is-stream@2.0.1:
1302 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1303 | engines: {node: '>=8'}
1304 |
1305 | is-stream@3.0.0:
1306 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1307 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1308 |
1309 | is-string@1.0.7:
1310 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1311 | engines: {node: '>= 0.4'}
1312 |
1313 | is-symbol@1.0.4:
1314 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1315 | engines: {node: '>= 0.4'}
1316 |
1317 | is-typed-array@1.1.13:
1318 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
1319 | engines: {node: '>= 0.4'}
1320 |
1321 | is-weakref@1.0.2:
1322 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1323 |
1324 | isarray@2.0.5:
1325 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1326 |
1327 | isexe@2.0.0:
1328 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1329 |
1330 | jackspeak@3.4.3:
1331 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
1332 |
1333 | jackspeak@4.0.1:
1334 | resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==}
1335 | engines: {node: 20 || >=22}
1336 |
1337 | joycon@3.1.1:
1338 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
1339 | engines: {node: '>=10'}
1340 |
1341 | js-yaml@4.1.0:
1342 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1343 | hasBin: true
1344 |
1345 | jsdoc-type-pratt-parser@4.1.0:
1346 | resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==}
1347 | engines: {node: '>=12.0.0'}
1348 |
1349 | jsdom@24.1.1:
1350 | resolution: {integrity: sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==}
1351 | engines: {node: '>=18'}
1352 | peerDependencies:
1353 | canvas: ^2.11.2
1354 | peerDependenciesMeta:
1355 | canvas:
1356 | optional: true
1357 |
1358 | json-buffer@3.0.1:
1359 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1360 |
1361 | json-parse-even-better-errors@3.0.2:
1362 | resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==}
1363 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
1364 |
1365 | json-schema-traverse@0.4.1:
1366 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1367 |
1368 | json-stable-stringify-without-jsonify@1.0.1:
1369 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1370 |
1371 | keyv@4.5.4:
1372 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1373 |
1374 | levn@0.4.1:
1375 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1376 | engines: {node: '>= 0.8.0'}
1377 |
1378 | lilconfig@3.1.2:
1379 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
1380 | engines: {node: '>=14'}
1381 |
1382 | lines-and-columns@1.2.4:
1383 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1384 |
1385 | load-tsconfig@0.2.5:
1386 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
1387 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1388 |
1389 | locate-path@6.0.0:
1390 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1391 | engines: {node: '>=10'}
1392 |
1393 | lodash.merge@4.6.2:
1394 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1395 |
1396 | lodash.sortby@4.7.0:
1397 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
1398 |
1399 | lodash@4.17.21:
1400 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1401 |
1402 | loupe@3.1.1:
1403 | resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==}
1404 |
1405 | lru-cache@10.4.3:
1406 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
1407 |
1408 | lru-cache@11.0.0:
1409 | resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==}
1410 | engines: {node: 20 || >=22}
1411 |
1412 | magic-string@0.30.11:
1413 | resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
1414 |
1415 | memorystream@0.3.1:
1416 | resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
1417 | engines: {node: '>= 0.10.0'}
1418 |
1419 | merge-stream@2.0.0:
1420 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1421 |
1422 | merge2@1.4.1:
1423 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1424 | engines: {node: '>= 8'}
1425 |
1426 | micromatch@4.0.7:
1427 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
1428 | engines: {node: '>=8.6'}
1429 |
1430 | mime-db@1.52.0:
1431 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1432 | engines: {node: '>= 0.6'}
1433 |
1434 | mime-types@2.1.35:
1435 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1436 | engines: {node: '>= 0.6'}
1437 |
1438 | mimic-fn@2.1.0:
1439 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1440 | engines: {node: '>=6'}
1441 |
1442 | mimic-fn@4.0.0:
1443 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1444 | engines: {node: '>=12'}
1445 |
1446 | minimatch@10.0.1:
1447 | resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
1448 | engines: {node: 20 || >=22}
1449 |
1450 | minimatch@3.1.2:
1451 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1452 |
1453 | minimatch@9.0.5:
1454 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
1455 | engines: {node: '>=16 || 14 >=14.17'}
1456 |
1457 | minipass@7.1.2:
1458 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
1459 | engines: {node: '>=16 || 14 >=14.17'}
1460 |
1461 | ms@2.1.2:
1462 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1463 |
1464 | mz@2.7.0:
1465 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1466 |
1467 | nanoid@3.3.7:
1468 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1469 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1470 | hasBin: true
1471 |
1472 | natural-compare@1.4.0:
1473 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1474 |
1475 | normalize-path@3.0.0:
1476 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1477 | engines: {node: '>=0.10.0'}
1478 |
1479 | npm-normalize-package-bin@3.0.1:
1480 | resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==}
1481 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
1482 |
1483 | npm-run-all2@6.2.2:
1484 | resolution: {integrity: sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==}
1485 | engines: {node: ^14.18.0 || ^16.13.0 || >=18.0.0, npm: '>= 8'}
1486 | hasBin: true
1487 |
1488 | npm-run-path@4.0.1:
1489 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
1490 | engines: {node: '>=8'}
1491 |
1492 | npm-run-path@5.3.0:
1493 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
1494 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1495 |
1496 | nwsapi@2.2.12:
1497 | resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==}
1498 |
1499 | object-assign@4.1.1:
1500 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1501 | engines: {node: '>=0.10.0'}
1502 |
1503 | object-inspect@1.13.2:
1504 | resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
1505 | engines: {node: '>= 0.4'}
1506 |
1507 | object-keys@1.1.1:
1508 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1509 | engines: {node: '>= 0.4'}
1510 |
1511 | object.assign@4.1.5:
1512 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
1513 | engines: {node: '>= 0.4'}
1514 |
1515 | once@1.4.0:
1516 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1517 |
1518 | onetime@5.1.2:
1519 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1520 | engines: {node: '>=6'}
1521 |
1522 | onetime@6.0.0:
1523 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
1524 | engines: {node: '>=12'}
1525 |
1526 | optionator@0.9.4:
1527 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1528 | engines: {node: '>= 0.8.0'}
1529 |
1530 | p-limit@3.1.0:
1531 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1532 | engines: {node: '>=10'}
1533 |
1534 | p-locate@5.0.0:
1535 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1536 | engines: {node: '>=10'}
1537 |
1538 | package-json-from-dist@1.0.0:
1539 | resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
1540 |
1541 | parent-module@1.0.1:
1542 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1543 | engines: {node: '>=6'}
1544 |
1545 | parse-imports@2.1.1:
1546 | resolution: {integrity: sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA==}
1547 | engines: {node: '>= 18'}
1548 |
1549 | parse5@7.1.2:
1550 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
1551 |
1552 | path-exists@4.0.0:
1553 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1554 | engines: {node: '>=8'}
1555 |
1556 | path-is-absolute@1.0.1:
1557 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1558 | engines: {node: '>=0.10.0'}
1559 |
1560 | path-key@3.1.1:
1561 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1562 | engines: {node: '>=8'}
1563 |
1564 | path-key@4.0.0:
1565 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
1566 | engines: {node: '>=12'}
1567 |
1568 | path-scurry@1.11.1:
1569 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
1570 | engines: {node: '>=16 || 14 >=14.18'}
1571 |
1572 | path-scurry@2.0.0:
1573 | resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
1574 | engines: {node: 20 || >=22}
1575 |
1576 | path-type@4.0.0:
1577 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1578 | engines: {node: '>=8'}
1579 |
1580 | pathe@1.1.2:
1581 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
1582 |
1583 | pathval@2.0.0:
1584 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
1585 | engines: {node: '>= 14.16'}
1586 |
1587 | picocolors@1.0.1:
1588 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
1589 |
1590 | picomatch@2.3.1:
1591 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1592 | engines: {node: '>=8.6'}
1593 |
1594 | pidtree@0.6.0:
1595 | resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
1596 | engines: {node: '>=0.10'}
1597 | hasBin: true
1598 |
1599 | pirates@4.0.6:
1600 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1601 | engines: {node: '>= 6'}
1602 |
1603 | possible-typed-array-names@1.0.0:
1604 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
1605 | engines: {node: '>= 0.4'}
1606 |
1607 | postcss-load-config@6.0.1:
1608 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
1609 | engines: {node: '>= 18'}
1610 | peerDependencies:
1611 | jiti: '>=1.21.0'
1612 | postcss: '>=8.0.9'
1613 | tsx: ^4.8.1
1614 | yaml: ^2.4.2
1615 | peerDependenciesMeta:
1616 | jiti:
1617 | optional: true
1618 | postcss:
1619 | optional: true
1620 | tsx:
1621 | optional: true
1622 | yaml:
1623 | optional: true
1624 |
1625 | postcss@8.4.41:
1626 | resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==}
1627 | engines: {node: ^10 || ^12 || >=14}
1628 |
1629 | prelude-ls@1.2.1:
1630 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1631 | engines: {node: '>= 0.8.0'}
1632 |
1633 | prettier-linter-helpers@1.0.0:
1634 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
1635 | engines: {node: '>=6.0.0'}
1636 |
1637 | prettier-plugin-organize-imports@4.0.0:
1638 | resolution: {integrity: sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==}
1639 | peerDependencies:
1640 | '@vue/language-plugin-pug': ^2.0.24
1641 | prettier: '>=2.0'
1642 | typescript: '>=2.9'
1643 | vue-tsc: ^2.0.24
1644 | peerDependenciesMeta:
1645 | '@vue/language-plugin-pug':
1646 | optional: true
1647 | vue-tsc:
1648 | optional: true
1649 |
1650 | prettier@3.3.3:
1651 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
1652 | engines: {node: '>=14'}
1653 | hasBin: true
1654 |
1655 | psl@1.9.0:
1656 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
1657 |
1658 | punycode@2.3.1:
1659 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1660 | engines: {node: '>=6'}
1661 |
1662 | querystringify@2.2.0:
1663 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
1664 |
1665 | queue-microtask@1.2.3:
1666 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1667 |
1668 | read-package-json-fast@3.0.2:
1669 | resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==}
1670 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
1671 |
1672 | readdirp@3.6.0:
1673 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1674 | engines: {node: '>=8.10.0'}
1675 |
1676 | regexp.prototype.flags@1.5.2:
1677 | resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
1678 | engines: {node: '>= 0.4'}
1679 |
1680 | requires-port@1.0.0:
1681 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
1682 |
1683 | resolve-from@4.0.0:
1684 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1685 | engines: {node: '>=4'}
1686 |
1687 | resolve-from@5.0.0:
1688 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1689 | engines: {node: '>=8'}
1690 |
1691 | reusify@1.0.4:
1692 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1693 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1694 |
1695 | rimraf@3.0.2:
1696 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1697 | deprecated: Rimraf versions prior to v4 are no longer supported
1698 | hasBin: true
1699 |
1700 | rimraf@6.0.1:
1701 | resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==}
1702 | engines: {node: 20 || >=22}
1703 | hasBin: true
1704 |
1705 | rollup@4.20.0:
1706 | resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==}
1707 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1708 | hasBin: true
1709 |
1710 | rrweb-cssom@0.6.0:
1711 | resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
1712 |
1713 | rrweb-cssom@0.7.1:
1714 | resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==}
1715 |
1716 | run-parallel@1.2.0:
1717 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1718 |
1719 | safe-array-concat@1.1.2:
1720 | resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
1721 | engines: {node: '>=0.4'}
1722 |
1723 | safe-regex-test@1.0.3:
1724 | resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
1725 | engines: {node: '>= 0.4'}
1726 |
1727 | safer-buffer@2.1.2:
1728 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
1729 |
1730 | saxes@6.0.0:
1731 | resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
1732 | engines: {node: '>=v12.22.7'}
1733 |
1734 | semver@7.6.3:
1735 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
1736 | engines: {node: '>=10'}
1737 | hasBin: true
1738 |
1739 | set-function-length@1.2.2:
1740 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
1741 | engines: {node: '>= 0.4'}
1742 |
1743 | set-function-name@2.0.2:
1744 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
1745 | engines: {node: '>= 0.4'}
1746 |
1747 | shebang-command@2.0.0:
1748 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1749 | engines: {node: '>=8'}
1750 |
1751 | shebang-regex@3.0.0:
1752 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1753 | engines: {node: '>=8'}
1754 |
1755 | shell-quote@1.8.1:
1756 | resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
1757 |
1758 | side-channel@1.0.6:
1759 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
1760 | engines: {node: '>= 0.4'}
1761 |
1762 | siginfo@2.0.0:
1763 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
1764 |
1765 | signal-exit@3.0.7:
1766 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
1767 |
1768 | signal-exit@4.1.0:
1769 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1770 | engines: {node: '>=14'}
1771 |
1772 | slash@3.0.0:
1773 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1774 | engines: {node: '>=8'}
1775 |
1776 | slashes@3.0.12:
1777 | resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==}
1778 |
1779 | source-map-js@1.2.0:
1780 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
1781 | engines: {node: '>=0.10.0'}
1782 |
1783 | source-map@0.8.0-beta.0:
1784 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
1785 | engines: {node: '>= 8'}
1786 |
1787 | spdx-exceptions@2.5.0:
1788 | resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
1789 |
1790 | spdx-expression-parse@4.0.0:
1791 | resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==}
1792 |
1793 | spdx-license-ids@3.0.18:
1794 | resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==}
1795 |
1796 | stackback@0.0.2:
1797 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
1798 |
1799 | std-env@3.7.0:
1800 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
1801 |
1802 | string-width@4.2.3:
1803 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1804 | engines: {node: '>=8'}
1805 |
1806 | string-width@5.1.2:
1807 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1808 | engines: {node: '>=12'}
1809 |
1810 | string.prototype.trim@1.2.9:
1811 | resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
1812 | engines: {node: '>= 0.4'}
1813 |
1814 | string.prototype.trimend@1.0.8:
1815 | resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
1816 |
1817 | string.prototype.trimstart@1.0.8:
1818 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
1819 | engines: {node: '>= 0.4'}
1820 |
1821 | strip-ansi@6.0.1:
1822 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1823 | engines: {node: '>=8'}
1824 |
1825 | strip-ansi@7.1.0:
1826 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1827 | engines: {node: '>=12'}
1828 |
1829 | strip-final-newline@2.0.0:
1830 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
1831 | engines: {node: '>=6'}
1832 |
1833 | strip-final-newline@3.0.0:
1834 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
1835 | engines: {node: '>=12'}
1836 |
1837 | strip-json-comments@3.1.1:
1838 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1839 | engines: {node: '>=8'}
1840 |
1841 | sucrase@3.35.0:
1842 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
1843 | engines: {node: '>=16 || 14 >=14.17'}
1844 | hasBin: true
1845 |
1846 | supports-color@7.2.0:
1847 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1848 | engines: {node: '>=8'}
1849 |
1850 | symbol-tree@3.2.4:
1851 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
1852 |
1853 | synckit@0.9.1:
1854 | resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==}
1855 | engines: {node: ^14.18.0 || >=16.0.0}
1856 |
1857 | text-table@0.2.0:
1858 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
1859 |
1860 | thenify-all@1.6.0:
1861 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1862 | engines: {node: '>=0.8'}
1863 |
1864 | thenify@3.3.1:
1865 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1866 |
1867 | tinybench@2.9.0:
1868 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
1869 |
1870 | tinypool@1.0.0:
1871 | resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==}
1872 | engines: {node: ^18.0.0 || >=20.0.0}
1873 |
1874 | tinyrainbow@1.2.0:
1875 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
1876 | engines: {node: '>=14.0.0'}
1877 |
1878 | tinyspy@3.0.0:
1879 | resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==}
1880 | engines: {node: '>=14.0.0'}
1881 |
1882 | to-fast-properties@2.0.0:
1883 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1884 | engines: {node: '>=4'}
1885 |
1886 | to-regex-range@5.0.1:
1887 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1888 | engines: {node: '>=8.0'}
1889 |
1890 | tough-cookie@4.1.4:
1891 | resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
1892 | engines: {node: '>=6'}
1893 |
1894 | tr46@1.0.1:
1895 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
1896 |
1897 | tr46@5.0.0:
1898 | resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
1899 | engines: {node: '>=18'}
1900 |
1901 | tree-kill@1.2.2:
1902 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
1903 | hasBin: true
1904 |
1905 | ts-api-utils@1.3.0:
1906 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
1907 | engines: {node: '>=16'}
1908 | peerDependencies:
1909 | typescript: '>=4.2.0'
1910 |
1911 | ts-interface-checker@0.1.13:
1912 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1913 |
1914 | tslib@2.6.3:
1915 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
1916 |
1917 | tsup@8.2.4:
1918 | resolution: {integrity: sha512-akpCPePnBnC/CXgRrcy72ZSntgIEUa1jN0oJbbvpALWKNOz1B7aM+UVDWGRGIO/T/PZugAESWDJUAb5FD48o8Q==}
1919 | engines: {node: '>=18'}
1920 | hasBin: true
1921 | peerDependencies:
1922 | '@microsoft/api-extractor': ^7.36.0
1923 | '@swc/core': ^1
1924 | postcss: ^8.4.12
1925 | typescript: '>=4.5.0'
1926 | peerDependenciesMeta:
1927 | '@microsoft/api-extractor':
1928 | optional: true
1929 | '@swc/core':
1930 | optional: true
1931 | postcss:
1932 | optional: true
1933 | typescript:
1934 | optional: true
1935 |
1936 | type-check@0.4.0:
1937 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1938 | engines: {node: '>= 0.8.0'}
1939 |
1940 | type-fest@0.20.2:
1941 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
1942 | engines: {node: '>=10'}
1943 |
1944 | typed-array-buffer@1.0.2:
1945 | resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
1946 | engines: {node: '>= 0.4'}
1947 |
1948 | typed-array-byte-length@1.0.1:
1949 | resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
1950 | engines: {node: '>= 0.4'}
1951 |
1952 | typed-array-byte-offset@1.0.2:
1953 | resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
1954 | engines: {node: '>= 0.4'}
1955 |
1956 | typed-array-length@1.0.6:
1957 | resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
1958 | engines: {node: '>= 0.4'}
1959 |
1960 | typescript@5.5.4:
1961 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
1962 | engines: {node: '>=14.17'}
1963 | hasBin: true
1964 |
1965 | unbox-primitive@1.0.2:
1966 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
1967 |
1968 | undici-types@6.18.2:
1969 | resolution: {integrity: sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ==}
1970 |
1971 | universalify@0.2.0:
1972 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
1973 | engines: {node: '>= 4.0.0'}
1974 |
1975 | uri-js@4.4.1:
1976 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1977 |
1978 | url-parse@1.5.10:
1979 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
1980 |
1981 | vite-node@2.0.5:
1982 | resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==}
1983 | engines: {node: ^18.0.0 || >=20.0.0}
1984 | hasBin: true
1985 |
1986 | vite@5.4.0:
1987 | resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==}
1988 | engines: {node: ^18.0.0 || >=20.0.0}
1989 | hasBin: true
1990 | peerDependencies:
1991 | '@types/node': ^18.0.0 || >=20.0.0
1992 | less: '*'
1993 | lightningcss: ^1.21.0
1994 | sass: '*'
1995 | sass-embedded: '*'
1996 | stylus: '*'
1997 | sugarss: '*'
1998 | terser: ^5.4.0
1999 | peerDependenciesMeta:
2000 | '@types/node':
2001 | optional: true
2002 | less:
2003 | optional: true
2004 | lightningcss:
2005 | optional: true
2006 | sass:
2007 | optional: true
2008 | sass-embedded:
2009 | optional: true
2010 | stylus:
2011 | optional: true
2012 | sugarss:
2013 | optional: true
2014 | terser:
2015 | optional: true
2016 |
2017 | vitest@2.0.5:
2018 | resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==}
2019 | engines: {node: ^18.0.0 || >=20.0.0}
2020 | hasBin: true
2021 | peerDependencies:
2022 | '@edge-runtime/vm': '*'
2023 | '@types/node': ^18.0.0 || >=20.0.0
2024 | '@vitest/browser': 2.0.5
2025 | '@vitest/ui': 2.0.5
2026 | happy-dom: '*'
2027 | jsdom: '*'
2028 | peerDependenciesMeta:
2029 | '@edge-runtime/vm':
2030 | optional: true
2031 | '@types/node':
2032 | optional: true
2033 | '@vitest/browser':
2034 | optional: true
2035 | '@vitest/ui':
2036 | optional: true
2037 | happy-dom:
2038 | optional: true
2039 | jsdom:
2040 | optional: true
2041 |
2042 | vue-router@4.4.3:
2043 | resolution: {integrity: sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A==}
2044 | peerDependencies:
2045 | vue: ^3.2.0
2046 |
2047 | vue@3.4.37:
2048 | resolution: {integrity: sha512-3vXvNfkKTBsSJ7JP+LyR7GBuwQuckbWvuwAid3xbqK9ppsKt/DUvfqgZ48fgOLEfpy1IacL5f8QhUVl77RaI7A==}
2049 | peerDependencies:
2050 | typescript: '*'
2051 | peerDependenciesMeta:
2052 | typescript:
2053 | optional: true
2054 |
2055 | w3c-xmlserializer@5.0.0:
2056 | resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
2057 | engines: {node: '>=18'}
2058 |
2059 | webidl-conversions@4.0.2:
2060 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
2061 |
2062 | webidl-conversions@7.0.0:
2063 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
2064 | engines: {node: '>=12'}
2065 |
2066 | whatwg-encoding@3.1.1:
2067 | resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
2068 | engines: {node: '>=18'}
2069 |
2070 | whatwg-mimetype@4.0.0:
2071 | resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
2072 | engines: {node: '>=18'}
2073 |
2074 | whatwg-url@14.0.0:
2075 | resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==}
2076 | engines: {node: '>=18'}
2077 |
2078 | whatwg-url@7.1.0:
2079 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
2080 |
2081 | which-boxed-primitive@1.0.2:
2082 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
2083 |
2084 | which-typed-array@1.1.15:
2085 | resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
2086 | engines: {node: '>= 0.4'}
2087 |
2088 | which@2.0.2:
2089 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2090 | engines: {node: '>= 8'}
2091 | hasBin: true
2092 |
2093 | why-is-node-running@2.3.0:
2094 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
2095 | engines: {node: '>=8'}
2096 | hasBin: true
2097 |
2098 | word-wrap@1.2.5:
2099 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
2100 | engines: {node: '>=0.10.0'}
2101 |
2102 | wrap-ansi@7.0.0:
2103 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2104 | engines: {node: '>=10'}
2105 |
2106 | wrap-ansi@8.1.0:
2107 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
2108 | engines: {node: '>=12'}
2109 |
2110 | wrappy@1.0.2:
2111 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2112 |
2113 | ws@8.18.0:
2114 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
2115 | engines: {node: '>=10.0.0'}
2116 | peerDependencies:
2117 | bufferutil: ^4.0.1
2118 | utf-8-validate: '>=5.0.2'
2119 | peerDependenciesMeta:
2120 | bufferutil:
2121 | optional: true
2122 | utf-8-validate:
2123 | optional: true
2124 |
2125 | xml-name-validator@5.0.0:
2126 | resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
2127 | engines: {node: '>=18'}
2128 |
2129 | xmlchars@2.2.0:
2130 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
2131 |
2132 | yocto-queue@0.1.0:
2133 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2134 | engines: {node: '>=10'}
2135 |
2136 | snapshots:
2137 |
2138 | '@ampproject/remapping@2.3.0':
2139 | dependencies:
2140 | '@jridgewell/gen-mapping': 0.3.5
2141 | '@jridgewell/trace-mapping': 0.3.25
2142 |
2143 | '@babel/helper-string-parser@7.24.8': {}
2144 |
2145 | '@babel/helper-validator-identifier@7.24.7': {}
2146 |
2147 | '@babel/parser@7.25.3':
2148 | dependencies:
2149 | '@babel/types': 7.25.2
2150 |
2151 | '@babel/types@7.25.2':
2152 | dependencies:
2153 | '@babel/helper-string-parser': 7.24.8
2154 | '@babel/helper-validator-identifier': 7.24.7
2155 | to-fast-properties: 2.0.0
2156 |
2157 | '@es-joy/jsdoccomment@0.48.0':
2158 | dependencies:
2159 | comment-parser: 1.4.1
2160 | esquery: 1.6.0
2161 | jsdoc-type-pratt-parser: 4.1.0
2162 |
2163 | '@esbuild/aix-ppc64@0.21.5':
2164 | optional: true
2165 |
2166 | '@esbuild/aix-ppc64@0.23.0':
2167 | optional: true
2168 |
2169 | '@esbuild/android-arm64@0.21.5':
2170 | optional: true
2171 |
2172 | '@esbuild/android-arm64@0.23.0':
2173 | optional: true
2174 |
2175 | '@esbuild/android-arm@0.21.5':
2176 | optional: true
2177 |
2178 | '@esbuild/android-arm@0.23.0':
2179 | optional: true
2180 |
2181 | '@esbuild/android-x64@0.21.5':
2182 | optional: true
2183 |
2184 | '@esbuild/android-x64@0.23.0':
2185 | optional: true
2186 |
2187 | '@esbuild/darwin-arm64@0.21.5':
2188 | optional: true
2189 |
2190 | '@esbuild/darwin-arm64@0.23.0':
2191 | optional: true
2192 |
2193 | '@esbuild/darwin-x64@0.21.5':
2194 | optional: true
2195 |
2196 | '@esbuild/darwin-x64@0.23.0':
2197 | optional: true
2198 |
2199 | '@esbuild/freebsd-arm64@0.21.5':
2200 | optional: true
2201 |
2202 | '@esbuild/freebsd-arm64@0.23.0':
2203 | optional: true
2204 |
2205 | '@esbuild/freebsd-x64@0.21.5':
2206 | optional: true
2207 |
2208 | '@esbuild/freebsd-x64@0.23.0':
2209 | optional: true
2210 |
2211 | '@esbuild/linux-arm64@0.21.5':
2212 | optional: true
2213 |
2214 | '@esbuild/linux-arm64@0.23.0':
2215 | optional: true
2216 |
2217 | '@esbuild/linux-arm@0.21.5':
2218 | optional: true
2219 |
2220 | '@esbuild/linux-arm@0.23.0':
2221 | optional: true
2222 |
2223 | '@esbuild/linux-ia32@0.21.5':
2224 | optional: true
2225 |
2226 | '@esbuild/linux-ia32@0.23.0':
2227 | optional: true
2228 |
2229 | '@esbuild/linux-loong64@0.21.5':
2230 | optional: true
2231 |
2232 | '@esbuild/linux-loong64@0.23.0':
2233 | optional: true
2234 |
2235 | '@esbuild/linux-mips64el@0.21.5':
2236 | optional: true
2237 |
2238 | '@esbuild/linux-mips64el@0.23.0':
2239 | optional: true
2240 |
2241 | '@esbuild/linux-ppc64@0.21.5':
2242 | optional: true
2243 |
2244 | '@esbuild/linux-ppc64@0.23.0':
2245 | optional: true
2246 |
2247 | '@esbuild/linux-riscv64@0.21.5':
2248 | optional: true
2249 |
2250 | '@esbuild/linux-riscv64@0.23.0':
2251 | optional: true
2252 |
2253 | '@esbuild/linux-s390x@0.21.5':
2254 | optional: true
2255 |
2256 | '@esbuild/linux-s390x@0.23.0':
2257 | optional: true
2258 |
2259 | '@esbuild/linux-x64@0.21.5':
2260 | optional: true
2261 |
2262 | '@esbuild/linux-x64@0.23.0':
2263 | optional: true
2264 |
2265 | '@esbuild/netbsd-x64@0.21.5':
2266 | optional: true
2267 |
2268 | '@esbuild/netbsd-x64@0.23.0':
2269 | optional: true
2270 |
2271 | '@esbuild/openbsd-arm64@0.23.0':
2272 | optional: true
2273 |
2274 | '@esbuild/openbsd-x64@0.21.5':
2275 | optional: true
2276 |
2277 | '@esbuild/openbsd-x64@0.23.0':
2278 | optional: true
2279 |
2280 | '@esbuild/sunos-x64@0.21.5':
2281 | optional: true
2282 |
2283 | '@esbuild/sunos-x64@0.23.0':
2284 | optional: true
2285 |
2286 | '@esbuild/win32-arm64@0.21.5':
2287 | optional: true
2288 |
2289 | '@esbuild/win32-arm64@0.23.0':
2290 | optional: true
2291 |
2292 | '@esbuild/win32-ia32@0.21.5':
2293 | optional: true
2294 |
2295 | '@esbuild/win32-ia32@0.23.0':
2296 | optional: true
2297 |
2298 | '@esbuild/win32-x64@0.21.5':
2299 | optional: true
2300 |
2301 | '@esbuild/win32-x64@0.23.0':
2302 | optional: true
2303 |
2304 | '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
2305 | dependencies:
2306 | eslint: 8.57.0
2307 | eslint-visitor-keys: 3.4.3
2308 |
2309 | '@eslint-community/regexpp@4.11.0': {}
2310 |
2311 | '@eslint/eslintrc@2.1.4':
2312 | dependencies:
2313 | ajv: 6.12.6
2314 | debug: 4.3.6
2315 | espree: 9.6.1
2316 | globals: 13.24.0
2317 | ignore: 5.3.2
2318 | import-fresh: 3.3.0
2319 | js-yaml: 4.1.0
2320 | minimatch: 3.1.2
2321 | strip-json-comments: 3.1.1
2322 | transitivePeerDependencies:
2323 | - supports-color
2324 |
2325 | '@eslint/js@8.57.0': {}
2326 |
2327 | '@gtm-support/core@3.0.1': {}
2328 |
2329 | '@humanwhocodes/config-array@0.11.14':
2330 | dependencies:
2331 | '@humanwhocodes/object-schema': 2.0.3
2332 | debug: 4.3.6
2333 | minimatch: 3.1.2
2334 | transitivePeerDependencies:
2335 | - supports-color
2336 |
2337 | '@humanwhocodes/module-importer@1.0.1': {}
2338 |
2339 | '@humanwhocodes/object-schema@2.0.3': {}
2340 |
2341 | '@isaacs/cliui@8.0.2':
2342 | dependencies:
2343 | string-width: 5.1.2
2344 | string-width-cjs: string-width@4.2.3
2345 | strip-ansi: 7.1.0
2346 | strip-ansi-cjs: strip-ansi@6.0.1
2347 | wrap-ansi: 8.1.0
2348 | wrap-ansi-cjs: wrap-ansi@7.0.0
2349 |
2350 | '@jridgewell/gen-mapping@0.3.5':
2351 | dependencies:
2352 | '@jridgewell/set-array': 1.2.1
2353 | '@jridgewell/sourcemap-codec': 1.5.0
2354 | '@jridgewell/trace-mapping': 0.3.25
2355 |
2356 | '@jridgewell/resolve-uri@3.1.2': {}
2357 |
2358 | '@jridgewell/set-array@1.2.1': {}
2359 |
2360 | '@jridgewell/sourcemap-codec@1.5.0': {}
2361 |
2362 | '@jridgewell/trace-mapping@0.3.25':
2363 | dependencies:
2364 | '@jridgewell/resolve-uri': 3.1.2
2365 | '@jridgewell/sourcemap-codec': 1.5.0
2366 |
2367 | '@nodelib/fs.scandir@2.1.5':
2368 | dependencies:
2369 | '@nodelib/fs.stat': 2.0.5
2370 | run-parallel: 1.2.0
2371 |
2372 | '@nodelib/fs.stat@2.0.5': {}
2373 |
2374 | '@nodelib/fs.walk@1.2.8':
2375 | dependencies:
2376 | '@nodelib/fs.scandir': 2.1.5
2377 | fastq: 1.17.1
2378 |
2379 | '@pkgjs/parseargs@0.11.0':
2380 | optional: true
2381 |
2382 | '@pkgr/core@0.1.1': {}
2383 |
2384 | '@rollup/rollup-android-arm-eabi@4.20.0':
2385 | optional: true
2386 |
2387 | '@rollup/rollup-android-arm64@4.20.0':
2388 | optional: true
2389 |
2390 | '@rollup/rollup-darwin-arm64@4.20.0':
2391 | optional: true
2392 |
2393 | '@rollup/rollup-darwin-x64@4.20.0':
2394 | optional: true
2395 |
2396 | '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
2397 | optional: true
2398 |
2399 | '@rollup/rollup-linux-arm-musleabihf@4.20.0':
2400 | optional: true
2401 |
2402 | '@rollup/rollup-linux-arm64-gnu@4.20.0':
2403 | optional: true
2404 |
2405 | '@rollup/rollup-linux-arm64-musl@4.20.0':
2406 | optional: true
2407 |
2408 | '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
2409 | optional: true
2410 |
2411 | '@rollup/rollup-linux-riscv64-gnu@4.20.0':
2412 | optional: true
2413 |
2414 | '@rollup/rollup-linux-s390x-gnu@4.20.0':
2415 | optional: true
2416 |
2417 | '@rollup/rollup-linux-x64-gnu@4.20.0':
2418 | optional: true
2419 |
2420 | '@rollup/rollup-linux-x64-musl@4.20.0':
2421 | optional: true
2422 |
2423 | '@rollup/rollup-win32-arm64-msvc@4.20.0':
2424 | optional: true
2425 |
2426 | '@rollup/rollup-win32-ia32-msvc@4.20.0':
2427 | optional: true
2428 |
2429 | '@rollup/rollup-win32-x64-msvc@4.20.0':
2430 | optional: true
2431 |
2432 | '@types/estree@1.0.5': {}
2433 |
2434 | '@types/node@22.3.0':
2435 | dependencies:
2436 | undici-types: 6.18.2
2437 |
2438 | '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)':
2439 | dependencies:
2440 | '@eslint-community/regexpp': 4.11.0
2441 | '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
2442 | '@typescript-eslint/scope-manager': 7.18.0
2443 | '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
2444 | '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
2445 | '@typescript-eslint/visitor-keys': 7.18.0
2446 | eslint: 8.57.0
2447 | graphemer: 1.4.0
2448 | ignore: 5.3.2
2449 | natural-compare: 1.4.0
2450 | ts-api-utils: 1.3.0(typescript@5.5.4)
2451 | optionalDependencies:
2452 | typescript: 5.5.4
2453 | transitivePeerDependencies:
2454 | - supports-color
2455 |
2456 | '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)':
2457 | dependencies:
2458 | '@typescript-eslint/scope-manager': 7.18.0
2459 | '@typescript-eslint/types': 7.18.0
2460 | '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
2461 | '@typescript-eslint/visitor-keys': 7.18.0
2462 | debug: 4.3.6
2463 | eslint: 8.57.0
2464 | optionalDependencies:
2465 | typescript: 5.5.4
2466 | transitivePeerDependencies:
2467 | - supports-color
2468 |
2469 | '@typescript-eslint/scope-manager@7.18.0':
2470 | dependencies:
2471 | '@typescript-eslint/types': 7.18.0
2472 | '@typescript-eslint/visitor-keys': 7.18.0
2473 |
2474 | '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)':
2475 | dependencies:
2476 | '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
2477 | '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4)
2478 | debug: 4.3.6
2479 | eslint: 8.57.0
2480 | ts-api-utils: 1.3.0(typescript@5.5.4)
2481 | optionalDependencies:
2482 | typescript: 5.5.4
2483 | transitivePeerDependencies:
2484 | - supports-color
2485 |
2486 | '@typescript-eslint/types@7.18.0': {}
2487 |
2488 | '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)':
2489 | dependencies:
2490 | '@typescript-eslint/types': 7.18.0
2491 | '@typescript-eslint/visitor-keys': 7.18.0
2492 | debug: 4.3.6
2493 | globby: 11.1.0
2494 | is-glob: 4.0.3
2495 | minimatch: 9.0.5
2496 | semver: 7.6.3
2497 | ts-api-utils: 1.3.0(typescript@5.5.4)
2498 | optionalDependencies:
2499 | typescript: 5.5.4
2500 | transitivePeerDependencies:
2501 | - supports-color
2502 |
2503 | '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)':
2504 | dependencies:
2505 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
2506 | '@typescript-eslint/scope-manager': 7.18.0
2507 | '@typescript-eslint/types': 7.18.0
2508 | '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4)
2509 | eslint: 8.57.0
2510 | transitivePeerDependencies:
2511 | - supports-color
2512 | - typescript
2513 |
2514 | '@typescript-eslint/visitor-keys@7.18.0':
2515 | dependencies:
2516 | '@typescript-eslint/types': 7.18.0
2517 | eslint-visitor-keys: 3.4.3
2518 |
2519 | '@ungap/structured-clone@1.2.0': {}
2520 |
2521 | '@vitest/expect@2.0.5':
2522 | dependencies:
2523 | '@vitest/spy': 2.0.5
2524 | '@vitest/utils': 2.0.5
2525 | chai: 5.1.1
2526 | tinyrainbow: 1.2.0
2527 |
2528 | '@vitest/pretty-format@2.0.5':
2529 | dependencies:
2530 | tinyrainbow: 1.2.0
2531 |
2532 | '@vitest/runner@2.0.5':
2533 | dependencies:
2534 | '@vitest/utils': 2.0.5
2535 | pathe: 1.1.2
2536 |
2537 | '@vitest/snapshot@2.0.5':
2538 | dependencies:
2539 | '@vitest/pretty-format': 2.0.5
2540 | magic-string: 0.30.11
2541 | pathe: 1.1.2
2542 |
2543 | '@vitest/spy@2.0.5':
2544 | dependencies:
2545 | tinyspy: 3.0.0
2546 |
2547 | '@vitest/utils@2.0.5':
2548 | dependencies:
2549 | '@vitest/pretty-format': 2.0.5
2550 | estree-walker: 3.0.3
2551 | loupe: 3.1.1
2552 | tinyrainbow: 1.2.0
2553 |
2554 | '@vue/compiler-core@3.4.37':
2555 | dependencies:
2556 | '@babel/parser': 7.25.3
2557 | '@vue/shared': 3.4.37
2558 | entities: 5.0.0
2559 | estree-walker: 2.0.2
2560 | source-map-js: 1.2.0
2561 |
2562 | '@vue/compiler-dom@3.4.37':
2563 | dependencies:
2564 | '@vue/compiler-core': 3.4.37
2565 | '@vue/shared': 3.4.37
2566 |
2567 | '@vue/compiler-sfc@3.4.37':
2568 | dependencies:
2569 | '@babel/parser': 7.25.3
2570 | '@vue/compiler-core': 3.4.37
2571 | '@vue/compiler-dom': 3.4.37
2572 | '@vue/compiler-ssr': 3.4.37
2573 | '@vue/shared': 3.4.37
2574 | estree-walker: 2.0.2
2575 | magic-string: 0.30.11
2576 | postcss: 8.4.41
2577 | source-map-js: 1.2.0
2578 |
2579 | '@vue/compiler-ssr@3.4.37':
2580 | dependencies:
2581 | '@vue/compiler-dom': 3.4.37
2582 | '@vue/shared': 3.4.37
2583 |
2584 | '@vue/devtools-api@6.6.3':
2585 | optional: true
2586 |
2587 | '@vue/reactivity@3.4.37':
2588 | dependencies:
2589 | '@vue/shared': 3.4.37
2590 |
2591 | '@vue/runtime-core@3.4.37':
2592 | dependencies:
2593 | '@vue/reactivity': 3.4.37
2594 | '@vue/shared': 3.4.37
2595 |
2596 | '@vue/runtime-dom@3.4.37':
2597 | dependencies:
2598 | '@vue/reactivity': 3.4.37
2599 | '@vue/runtime-core': 3.4.37
2600 | '@vue/shared': 3.4.37
2601 | csstype: 3.1.3
2602 |
2603 | '@vue/server-renderer@3.4.37(vue@3.4.37(typescript@5.5.4))':
2604 | dependencies:
2605 | '@vue/compiler-ssr': 3.4.37
2606 | '@vue/shared': 3.4.37
2607 | vue: 3.4.37(typescript@5.5.4)
2608 |
2609 | '@vue/shared@3.4.37': {}
2610 |
2611 | acorn-jsx@5.3.2(acorn@8.12.1):
2612 | dependencies:
2613 | acorn: 8.12.1
2614 |
2615 | acorn@8.12.1: {}
2616 |
2617 | agent-base@7.1.1:
2618 | dependencies:
2619 | debug: 4.3.6
2620 | transitivePeerDependencies:
2621 | - supports-color
2622 |
2623 | ajv@6.12.6:
2624 | dependencies:
2625 | fast-deep-equal: 3.1.3
2626 | fast-json-stable-stringify: 2.1.0
2627 | json-schema-traverse: 0.4.1
2628 | uri-js: 4.4.1
2629 |
2630 | ansi-regex@5.0.1: {}
2631 |
2632 | ansi-regex@6.0.1: {}
2633 |
2634 | ansi-styles@4.3.0:
2635 | dependencies:
2636 | color-convert: 2.0.1
2637 |
2638 | ansi-styles@6.2.1: {}
2639 |
2640 | any-promise@1.3.0: {}
2641 |
2642 | anymatch@3.1.3:
2643 | dependencies:
2644 | normalize-path: 3.0.0
2645 | picomatch: 2.3.1
2646 |
2647 | are-docs-informative@0.0.2: {}
2648 |
2649 | argparse@2.0.1: {}
2650 |
2651 | array-buffer-byte-length@1.0.1:
2652 | dependencies:
2653 | call-bind: 1.0.7
2654 | is-array-buffer: 3.0.4
2655 |
2656 | array-union@2.1.0: {}
2657 |
2658 | array.prototype.flatmap@1.3.2:
2659 | dependencies:
2660 | call-bind: 1.0.7
2661 | define-properties: 1.2.1
2662 | es-abstract: 1.23.3
2663 | es-shim-unscopables: 1.0.2
2664 |
2665 | arraybuffer.prototype.slice@1.0.3:
2666 | dependencies:
2667 | array-buffer-byte-length: 1.0.1
2668 | call-bind: 1.0.7
2669 | define-properties: 1.2.1
2670 | es-abstract: 1.23.3
2671 | es-errors: 1.3.0
2672 | get-intrinsic: 1.2.4
2673 | is-array-buffer: 3.0.4
2674 | is-shared-array-buffer: 1.0.3
2675 |
2676 | assertion-error@2.0.1: {}
2677 |
2678 | asynckit@0.4.0: {}
2679 |
2680 | available-typed-arrays@1.0.7:
2681 | dependencies:
2682 | possible-typed-array-names: 1.0.0
2683 |
2684 | balanced-match@1.0.2: {}
2685 |
2686 | binary-extensions@2.3.0: {}
2687 |
2688 | brace-expansion@1.1.11:
2689 | dependencies:
2690 | balanced-match: 1.0.2
2691 | concat-map: 0.0.1
2692 |
2693 | brace-expansion@2.0.1:
2694 | dependencies:
2695 | balanced-match: 1.0.2
2696 |
2697 | braces@3.0.3:
2698 | dependencies:
2699 | fill-range: 7.1.1
2700 |
2701 | bundle-require@5.0.0(esbuild@0.23.0):
2702 | dependencies:
2703 | esbuild: 0.23.0
2704 | load-tsconfig: 0.2.5
2705 |
2706 | cac@6.7.14: {}
2707 |
2708 | call-bind@1.0.7:
2709 | dependencies:
2710 | es-define-property: 1.0.0
2711 | es-errors: 1.3.0
2712 | function-bind: 1.1.2
2713 | get-intrinsic: 1.2.4
2714 | set-function-length: 1.2.2
2715 |
2716 | callsites@3.1.0: {}
2717 |
2718 | chai@5.1.1:
2719 | dependencies:
2720 | assertion-error: 2.0.1
2721 | check-error: 2.1.1
2722 | deep-eql: 5.0.2
2723 | loupe: 3.1.1
2724 | pathval: 2.0.0
2725 |
2726 | chalk@4.1.2:
2727 | dependencies:
2728 | ansi-styles: 4.3.0
2729 | supports-color: 7.2.0
2730 |
2731 | check-error@2.1.1: {}
2732 |
2733 | chokidar@3.6.0:
2734 | dependencies:
2735 | anymatch: 3.1.3
2736 | braces: 3.0.3
2737 | glob-parent: 5.1.2
2738 | is-binary-path: 2.1.0
2739 | is-glob: 4.0.3
2740 | normalize-path: 3.0.0
2741 | readdirp: 3.6.0
2742 | optionalDependencies:
2743 | fsevents: 2.3.3
2744 |
2745 | color-convert@2.0.1:
2746 | dependencies:
2747 | color-name: 1.1.4
2748 |
2749 | color-name@1.1.4: {}
2750 |
2751 | combined-stream@1.0.8:
2752 | dependencies:
2753 | delayed-stream: 1.0.0
2754 |
2755 | commander@4.1.1: {}
2756 |
2757 | comment-parser@1.4.1: {}
2758 |
2759 | concat-map@0.0.1: {}
2760 |
2761 | consola@3.2.3: {}
2762 |
2763 | cross-spawn@7.0.3:
2764 | dependencies:
2765 | path-key: 3.1.1
2766 | shebang-command: 2.0.0
2767 | which: 2.0.2
2768 |
2769 | cssstyle@4.0.1:
2770 | dependencies:
2771 | rrweb-cssom: 0.6.0
2772 |
2773 | csstype@3.1.3: {}
2774 |
2775 | data-urls@5.0.0:
2776 | dependencies:
2777 | whatwg-mimetype: 4.0.0
2778 | whatwg-url: 14.0.0
2779 |
2780 | data-view-buffer@1.0.1:
2781 | dependencies:
2782 | call-bind: 1.0.7
2783 | es-errors: 1.3.0
2784 | is-data-view: 1.0.1
2785 |
2786 | data-view-byte-length@1.0.1:
2787 | dependencies:
2788 | call-bind: 1.0.7
2789 | es-errors: 1.3.0
2790 | is-data-view: 1.0.1
2791 |
2792 | data-view-byte-offset@1.0.0:
2793 | dependencies:
2794 | call-bind: 1.0.7
2795 | es-errors: 1.3.0
2796 | is-data-view: 1.0.1
2797 |
2798 | debug@4.3.6:
2799 | dependencies:
2800 | ms: 2.1.2
2801 |
2802 | decimal.js@10.4.3: {}
2803 |
2804 | deep-eql@5.0.2: {}
2805 |
2806 | deep-is@0.1.4: {}
2807 |
2808 | define-data-property@1.1.4:
2809 | dependencies:
2810 | es-define-property: 1.0.0
2811 | es-errors: 1.3.0
2812 | gopd: 1.0.1
2813 |
2814 | define-properties@1.2.1:
2815 | dependencies:
2816 | define-data-property: 1.1.4
2817 | has-property-descriptors: 1.0.2
2818 | object-keys: 1.1.1
2819 |
2820 | delayed-stream@1.0.0: {}
2821 |
2822 | dir-glob@3.0.1:
2823 | dependencies:
2824 | path-type: 4.0.0
2825 |
2826 | doctrine@3.0.0:
2827 | dependencies:
2828 | esutils: 2.0.3
2829 |
2830 | eastasianwidth@0.2.0: {}
2831 |
2832 | emoji-regex@8.0.0: {}
2833 |
2834 | emoji-regex@9.2.2: {}
2835 |
2836 | entities@4.5.0: {}
2837 |
2838 | entities@5.0.0: {}
2839 |
2840 | es-abstract@1.23.3:
2841 | dependencies:
2842 | array-buffer-byte-length: 1.0.1
2843 | arraybuffer.prototype.slice: 1.0.3
2844 | available-typed-arrays: 1.0.7
2845 | call-bind: 1.0.7
2846 | data-view-buffer: 1.0.1
2847 | data-view-byte-length: 1.0.1
2848 | data-view-byte-offset: 1.0.0
2849 | es-define-property: 1.0.0
2850 | es-errors: 1.3.0
2851 | es-object-atoms: 1.0.0
2852 | es-set-tostringtag: 2.0.3
2853 | es-to-primitive: 1.2.1
2854 | function.prototype.name: 1.1.6
2855 | get-intrinsic: 1.2.4
2856 | get-symbol-description: 1.0.2
2857 | globalthis: 1.0.4
2858 | gopd: 1.0.1
2859 | has-property-descriptors: 1.0.2
2860 | has-proto: 1.0.3
2861 | has-symbols: 1.0.3
2862 | hasown: 2.0.2
2863 | internal-slot: 1.0.7
2864 | is-array-buffer: 3.0.4
2865 | is-callable: 1.2.7
2866 | is-data-view: 1.0.1
2867 | is-negative-zero: 2.0.3
2868 | is-regex: 1.1.4
2869 | is-shared-array-buffer: 1.0.3
2870 | is-string: 1.0.7
2871 | is-typed-array: 1.1.13
2872 | is-weakref: 1.0.2
2873 | object-inspect: 1.13.2
2874 | object-keys: 1.1.1
2875 | object.assign: 4.1.5
2876 | regexp.prototype.flags: 1.5.2
2877 | safe-array-concat: 1.1.2
2878 | safe-regex-test: 1.0.3
2879 | string.prototype.trim: 1.2.9
2880 | string.prototype.trimend: 1.0.8
2881 | string.prototype.trimstart: 1.0.8
2882 | typed-array-buffer: 1.0.2
2883 | typed-array-byte-length: 1.0.1
2884 | typed-array-byte-offset: 1.0.2
2885 | typed-array-length: 1.0.6
2886 | unbox-primitive: 1.0.2
2887 | which-typed-array: 1.1.15
2888 |
2889 | es-define-property@1.0.0:
2890 | dependencies:
2891 | get-intrinsic: 1.2.4
2892 |
2893 | es-errors@1.3.0: {}
2894 |
2895 | es-module-lexer@1.5.4: {}
2896 |
2897 | es-object-atoms@1.0.0:
2898 | dependencies:
2899 | es-errors: 1.3.0
2900 |
2901 | es-set-tostringtag@2.0.3:
2902 | dependencies:
2903 | get-intrinsic: 1.2.4
2904 | has-tostringtag: 1.0.2
2905 | hasown: 2.0.2
2906 |
2907 | es-shim-unscopables@1.0.2:
2908 | dependencies:
2909 | hasown: 2.0.2
2910 |
2911 | es-to-primitive@1.2.1:
2912 | dependencies:
2913 | is-callable: 1.2.7
2914 | is-date-object: 1.0.5
2915 | is-symbol: 1.0.4
2916 |
2917 | esbuild@0.21.5:
2918 | optionalDependencies:
2919 | '@esbuild/aix-ppc64': 0.21.5
2920 | '@esbuild/android-arm': 0.21.5
2921 | '@esbuild/android-arm64': 0.21.5
2922 | '@esbuild/android-x64': 0.21.5
2923 | '@esbuild/darwin-arm64': 0.21.5
2924 | '@esbuild/darwin-x64': 0.21.5
2925 | '@esbuild/freebsd-arm64': 0.21.5
2926 | '@esbuild/freebsd-x64': 0.21.5
2927 | '@esbuild/linux-arm': 0.21.5
2928 | '@esbuild/linux-arm64': 0.21.5
2929 | '@esbuild/linux-ia32': 0.21.5
2930 | '@esbuild/linux-loong64': 0.21.5
2931 | '@esbuild/linux-mips64el': 0.21.5
2932 | '@esbuild/linux-ppc64': 0.21.5
2933 | '@esbuild/linux-riscv64': 0.21.5
2934 | '@esbuild/linux-s390x': 0.21.5
2935 | '@esbuild/linux-x64': 0.21.5
2936 | '@esbuild/netbsd-x64': 0.21.5
2937 | '@esbuild/openbsd-x64': 0.21.5
2938 | '@esbuild/sunos-x64': 0.21.5
2939 | '@esbuild/win32-arm64': 0.21.5
2940 | '@esbuild/win32-ia32': 0.21.5
2941 | '@esbuild/win32-x64': 0.21.5
2942 |
2943 | esbuild@0.23.0:
2944 | optionalDependencies:
2945 | '@esbuild/aix-ppc64': 0.23.0
2946 | '@esbuild/android-arm': 0.23.0
2947 | '@esbuild/android-arm64': 0.23.0
2948 | '@esbuild/android-x64': 0.23.0
2949 | '@esbuild/darwin-arm64': 0.23.0
2950 | '@esbuild/darwin-x64': 0.23.0
2951 | '@esbuild/freebsd-arm64': 0.23.0
2952 | '@esbuild/freebsd-x64': 0.23.0
2953 | '@esbuild/linux-arm': 0.23.0
2954 | '@esbuild/linux-arm64': 0.23.0
2955 | '@esbuild/linux-ia32': 0.23.0
2956 | '@esbuild/linux-loong64': 0.23.0
2957 | '@esbuild/linux-mips64el': 0.23.0
2958 | '@esbuild/linux-ppc64': 0.23.0
2959 | '@esbuild/linux-riscv64': 0.23.0
2960 | '@esbuild/linux-s390x': 0.23.0
2961 | '@esbuild/linux-x64': 0.23.0
2962 | '@esbuild/netbsd-x64': 0.23.0
2963 | '@esbuild/openbsd-arm64': 0.23.0
2964 | '@esbuild/openbsd-x64': 0.23.0
2965 | '@esbuild/sunos-x64': 0.23.0
2966 | '@esbuild/win32-arm64': 0.23.0
2967 | '@esbuild/win32-ia32': 0.23.0
2968 | '@esbuild/win32-x64': 0.23.0
2969 |
2970 | escape-string-regexp@4.0.0: {}
2971 |
2972 | eslint-config-prettier@9.1.0(eslint@8.57.0):
2973 | dependencies:
2974 | eslint: 8.57.0
2975 |
2976 | eslint-define-config@2.1.0: {}
2977 |
2978 | eslint-gitignore@0.1.0(eslint@8.57.0):
2979 | dependencies:
2980 | array.prototype.flatmap: 1.3.2
2981 | debug: 4.3.6
2982 | eslint: 8.57.0
2983 | fast-glob: 3.3.2
2984 | transitivePeerDependencies:
2985 | - supports-color
2986 |
2987 | eslint-plugin-jsdoc@50.2.1(eslint@8.57.0):
2988 | dependencies:
2989 | '@es-joy/jsdoccomment': 0.48.0
2990 | are-docs-informative: 0.0.2
2991 | comment-parser: 1.4.1
2992 | debug: 4.3.6
2993 | escape-string-regexp: 4.0.0
2994 | eslint: 8.57.0
2995 | espree: 10.1.0
2996 | esquery: 1.6.0
2997 | parse-imports: 2.1.1
2998 | semver: 7.6.3
2999 | spdx-expression-parse: 4.0.0
3000 | synckit: 0.9.1
3001 | transitivePeerDependencies:
3002 | - supports-color
3003 |
3004 | eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3):
3005 | dependencies:
3006 | eslint: 8.57.0
3007 | prettier: 3.3.3
3008 | prettier-linter-helpers: 1.0.0
3009 | synckit: 0.9.1
3010 | optionalDependencies:
3011 | eslint-config-prettier: 9.1.0(eslint@8.57.0)
3012 |
3013 | eslint-plugin-spellcheck@0.0.20(eslint@8.57.0):
3014 | dependencies:
3015 | eslint: 8.57.0
3016 | globals: 13.24.0
3017 | hunspell-spellchecker: 1.0.2
3018 | lodash: 4.17.21
3019 |
3020 | eslint-scope@7.2.2:
3021 | dependencies:
3022 | esrecurse: 4.3.0
3023 | estraverse: 5.3.0
3024 |
3025 | eslint-visitor-keys@3.4.3: {}
3026 |
3027 | eslint-visitor-keys@4.0.0: {}
3028 |
3029 | eslint@8.57.0:
3030 | dependencies:
3031 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
3032 | '@eslint-community/regexpp': 4.11.0
3033 | '@eslint/eslintrc': 2.1.4
3034 | '@eslint/js': 8.57.0
3035 | '@humanwhocodes/config-array': 0.11.14
3036 | '@humanwhocodes/module-importer': 1.0.1
3037 | '@nodelib/fs.walk': 1.2.8
3038 | '@ungap/structured-clone': 1.2.0
3039 | ajv: 6.12.6
3040 | chalk: 4.1.2
3041 | cross-spawn: 7.0.3
3042 | debug: 4.3.6
3043 | doctrine: 3.0.0
3044 | escape-string-regexp: 4.0.0
3045 | eslint-scope: 7.2.2
3046 | eslint-visitor-keys: 3.4.3
3047 | espree: 9.6.1
3048 | esquery: 1.6.0
3049 | esutils: 2.0.3
3050 | fast-deep-equal: 3.1.3
3051 | file-entry-cache: 6.0.1
3052 | find-up: 5.0.0
3053 | glob-parent: 6.0.2
3054 | globals: 13.24.0
3055 | graphemer: 1.4.0
3056 | ignore: 5.3.2
3057 | imurmurhash: 0.1.4
3058 | is-glob: 4.0.3
3059 | is-path-inside: 3.0.3
3060 | js-yaml: 4.1.0
3061 | json-stable-stringify-without-jsonify: 1.0.1
3062 | levn: 0.4.1
3063 | lodash.merge: 4.6.2
3064 | minimatch: 3.1.2
3065 | natural-compare: 1.4.0
3066 | optionator: 0.9.4
3067 | strip-ansi: 6.0.1
3068 | text-table: 0.2.0
3069 | transitivePeerDependencies:
3070 | - supports-color
3071 |
3072 | espree@10.1.0:
3073 | dependencies:
3074 | acorn: 8.12.1
3075 | acorn-jsx: 5.3.2(acorn@8.12.1)
3076 | eslint-visitor-keys: 4.0.0
3077 |
3078 | espree@9.6.1:
3079 | dependencies:
3080 | acorn: 8.12.1
3081 | acorn-jsx: 5.3.2(acorn@8.12.1)
3082 | eslint-visitor-keys: 3.4.3
3083 |
3084 | esquery@1.6.0:
3085 | dependencies:
3086 | estraverse: 5.3.0
3087 |
3088 | esrecurse@4.3.0:
3089 | dependencies:
3090 | estraverse: 5.3.0
3091 |
3092 | estraverse@5.3.0: {}
3093 |
3094 | estree-walker@2.0.2: {}
3095 |
3096 | estree-walker@3.0.3:
3097 | dependencies:
3098 | '@types/estree': 1.0.5
3099 |
3100 | esutils@2.0.3: {}
3101 |
3102 | execa@5.1.1:
3103 | dependencies:
3104 | cross-spawn: 7.0.3
3105 | get-stream: 6.0.1
3106 | human-signals: 2.1.0
3107 | is-stream: 2.0.1
3108 | merge-stream: 2.0.0
3109 | npm-run-path: 4.0.1
3110 | onetime: 5.1.2
3111 | signal-exit: 3.0.7
3112 | strip-final-newline: 2.0.0
3113 |
3114 | execa@8.0.1:
3115 | dependencies:
3116 | cross-spawn: 7.0.3
3117 | get-stream: 8.0.1
3118 | human-signals: 5.0.0
3119 | is-stream: 3.0.0
3120 | merge-stream: 2.0.0
3121 | npm-run-path: 5.3.0
3122 | onetime: 6.0.0
3123 | signal-exit: 4.1.0
3124 | strip-final-newline: 3.0.0
3125 |
3126 | fast-deep-equal@3.1.3: {}
3127 |
3128 | fast-diff@1.3.0: {}
3129 |
3130 | fast-glob@3.3.2:
3131 | dependencies:
3132 | '@nodelib/fs.stat': 2.0.5
3133 | '@nodelib/fs.walk': 1.2.8
3134 | glob-parent: 5.1.2
3135 | merge2: 1.4.1
3136 | micromatch: 4.0.7
3137 |
3138 | fast-json-stable-stringify@2.1.0: {}
3139 |
3140 | fast-levenshtein@2.0.6: {}
3141 |
3142 | fastq@1.17.1:
3143 | dependencies:
3144 | reusify: 1.0.4
3145 |
3146 | file-entry-cache@6.0.1:
3147 | dependencies:
3148 | flat-cache: 3.2.0
3149 |
3150 | fill-range@7.1.1:
3151 | dependencies:
3152 | to-regex-range: 5.0.1
3153 |
3154 | find-up@5.0.0:
3155 | dependencies:
3156 | locate-path: 6.0.0
3157 | path-exists: 4.0.0
3158 |
3159 | flat-cache@3.2.0:
3160 | dependencies:
3161 | flatted: 3.3.1
3162 | keyv: 4.5.4
3163 | rimraf: 3.0.2
3164 |
3165 | flatted@3.3.1: {}
3166 |
3167 | for-each@0.3.3:
3168 | dependencies:
3169 | is-callable: 1.2.7
3170 |
3171 | foreground-child@3.3.0:
3172 | dependencies:
3173 | cross-spawn: 7.0.3
3174 | signal-exit: 4.1.0
3175 |
3176 | form-data@4.0.0:
3177 | dependencies:
3178 | asynckit: 0.4.0
3179 | combined-stream: 1.0.8
3180 | mime-types: 2.1.35
3181 |
3182 | fs.realpath@1.0.0: {}
3183 |
3184 | fsevents@2.3.3:
3185 | optional: true
3186 |
3187 | function-bind@1.1.2: {}
3188 |
3189 | function.prototype.name@1.1.6:
3190 | dependencies:
3191 | call-bind: 1.0.7
3192 | define-properties: 1.2.1
3193 | es-abstract: 1.23.3
3194 | functions-have-names: 1.2.3
3195 |
3196 | functions-have-names@1.2.3: {}
3197 |
3198 | get-func-name@2.0.2: {}
3199 |
3200 | get-intrinsic@1.2.4:
3201 | dependencies:
3202 | es-errors: 1.3.0
3203 | function-bind: 1.1.2
3204 | has-proto: 1.0.3
3205 | has-symbols: 1.0.3
3206 | hasown: 2.0.2
3207 |
3208 | get-stream@6.0.1: {}
3209 |
3210 | get-stream@8.0.1: {}
3211 |
3212 | get-symbol-description@1.0.2:
3213 | dependencies:
3214 | call-bind: 1.0.7
3215 | es-errors: 1.3.0
3216 | get-intrinsic: 1.2.4
3217 |
3218 | glob-parent@5.1.2:
3219 | dependencies:
3220 | is-glob: 4.0.3
3221 |
3222 | glob-parent@6.0.2:
3223 | dependencies:
3224 | is-glob: 4.0.3
3225 |
3226 | glob@10.4.5:
3227 | dependencies:
3228 | foreground-child: 3.3.0
3229 | jackspeak: 3.4.3
3230 | minimatch: 9.0.5
3231 | minipass: 7.1.2
3232 | package-json-from-dist: 1.0.0
3233 | path-scurry: 1.11.1
3234 |
3235 | glob@11.0.0:
3236 | dependencies:
3237 | foreground-child: 3.3.0
3238 | jackspeak: 4.0.1
3239 | minimatch: 10.0.1
3240 | minipass: 7.1.2
3241 | package-json-from-dist: 1.0.0
3242 | path-scurry: 2.0.0
3243 |
3244 | glob@7.2.3:
3245 | dependencies:
3246 | fs.realpath: 1.0.0
3247 | inflight: 1.0.6
3248 | inherits: 2.0.4
3249 | minimatch: 3.1.2
3250 | once: 1.4.0
3251 | path-is-absolute: 1.0.1
3252 |
3253 | globals@13.24.0:
3254 | dependencies:
3255 | type-fest: 0.20.2
3256 |
3257 | globalthis@1.0.4:
3258 | dependencies:
3259 | define-properties: 1.2.1
3260 | gopd: 1.0.1
3261 |
3262 | globby@11.1.0:
3263 | dependencies:
3264 | array-union: 2.1.0
3265 | dir-glob: 3.0.1
3266 | fast-glob: 3.3.2
3267 | ignore: 5.3.2
3268 | merge2: 1.4.1
3269 | slash: 3.0.0
3270 |
3271 | gopd@1.0.1:
3272 | dependencies:
3273 | get-intrinsic: 1.2.4
3274 |
3275 | graphemer@1.4.0: {}
3276 |
3277 | has-bigints@1.0.2: {}
3278 |
3279 | has-flag@4.0.0: {}
3280 |
3281 | has-property-descriptors@1.0.2:
3282 | dependencies:
3283 | es-define-property: 1.0.0
3284 |
3285 | has-proto@1.0.3: {}
3286 |
3287 | has-symbols@1.0.3: {}
3288 |
3289 | has-tostringtag@1.0.2:
3290 | dependencies:
3291 | has-symbols: 1.0.3
3292 |
3293 | hasown@2.0.2:
3294 | dependencies:
3295 | function-bind: 1.1.2
3296 |
3297 | html-encoding-sniffer@4.0.0:
3298 | dependencies:
3299 | whatwg-encoding: 3.1.1
3300 |
3301 | http-proxy-agent@7.0.2:
3302 | dependencies:
3303 | agent-base: 7.1.1
3304 | debug: 4.3.6
3305 | transitivePeerDependencies:
3306 | - supports-color
3307 |
3308 | https-proxy-agent@7.0.5:
3309 | dependencies:
3310 | agent-base: 7.1.1
3311 | debug: 4.3.6
3312 | transitivePeerDependencies:
3313 | - supports-color
3314 |
3315 | human-signals@2.1.0: {}
3316 |
3317 | human-signals@5.0.0: {}
3318 |
3319 | hunspell-spellchecker@1.0.2: {}
3320 |
3321 | iconv-lite@0.6.3:
3322 | dependencies:
3323 | safer-buffer: 2.1.2
3324 |
3325 | ignore@5.3.2: {}
3326 |
3327 | import-fresh@3.3.0:
3328 | dependencies:
3329 | parent-module: 1.0.1
3330 | resolve-from: 4.0.0
3331 |
3332 | imurmurhash@0.1.4: {}
3333 |
3334 | inflight@1.0.6:
3335 | dependencies:
3336 | once: 1.4.0
3337 | wrappy: 1.0.2
3338 |
3339 | inherits@2.0.4: {}
3340 |
3341 | internal-slot@1.0.7:
3342 | dependencies:
3343 | es-errors: 1.3.0
3344 | hasown: 2.0.2
3345 | side-channel: 1.0.6
3346 |
3347 | is-array-buffer@3.0.4:
3348 | dependencies:
3349 | call-bind: 1.0.7
3350 | get-intrinsic: 1.2.4
3351 |
3352 | is-bigint@1.0.4:
3353 | dependencies:
3354 | has-bigints: 1.0.2
3355 |
3356 | is-binary-path@2.1.0:
3357 | dependencies:
3358 | binary-extensions: 2.3.0
3359 |
3360 | is-boolean-object@1.1.2:
3361 | dependencies:
3362 | call-bind: 1.0.7
3363 | has-tostringtag: 1.0.2
3364 |
3365 | is-callable@1.2.7: {}
3366 |
3367 | is-data-view@1.0.1:
3368 | dependencies:
3369 | is-typed-array: 1.1.13
3370 |
3371 | is-date-object@1.0.5:
3372 | dependencies:
3373 | has-tostringtag: 1.0.2
3374 |
3375 | is-extglob@2.1.1: {}
3376 |
3377 | is-fullwidth-code-point@3.0.0: {}
3378 |
3379 | is-glob@4.0.3:
3380 | dependencies:
3381 | is-extglob: 2.1.1
3382 |
3383 | is-negative-zero@2.0.3: {}
3384 |
3385 | is-number-object@1.0.7:
3386 | dependencies:
3387 | has-tostringtag: 1.0.2
3388 |
3389 | is-number@7.0.0: {}
3390 |
3391 | is-path-inside@3.0.3: {}
3392 |
3393 | is-potential-custom-element-name@1.0.1: {}
3394 |
3395 | is-regex@1.1.4:
3396 | dependencies:
3397 | call-bind: 1.0.7
3398 | has-tostringtag: 1.0.2
3399 |
3400 | is-shared-array-buffer@1.0.3:
3401 | dependencies:
3402 | call-bind: 1.0.7
3403 |
3404 | is-stream@2.0.1: {}
3405 |
3406 | is-stream@3.0.0: {}
3407 |
3408 | is-string@1.0.7:
3409 | dependencies:
3410 | has-tostringtag: 1.0.2
3411 |
3412 | is-symbol@1.0.4:
3413 | dependencies:
3414 | has-symbols: 1.0.3
3415 |
3416 | is-typed-array@1.1.13:
3417 | dependencies:
3418 | which-typed-array: 1.1.15
3419 |
3420 | is-weakref@1.0.2:
3421 | dependencies:
3422 | call-bind: 1.0.7
3423 |
3424 | isarray@2.0.5: {}
3425 |
3426 | isexe@2.0.0: {}
3427 |
3428 | jackspeak@3.4.3:
3429 | dependencies:
3430 | '@isaacs/cliui': 8.0.2
3431 | optionalDependencies:
3432 | '@pkgjs/parseargs': 0.11.0
3433 |
3434 | jackspeak@4.0.1:
3435 | dependencies:
3436 | '@isaacs/cliui': 8.0.2
3437 | optionalDependencies:
3438 | '@pkgjs/parseargs': 0.11.0
3439 |
3440 | joycon@3.1.1: {}
3441 |
3442 | js-yaml@4.1.0:
3443 | dependencies:
3444 | argparse: 2.0.1
3445 |
3446 | jsdoc-type-pratt-parser@4.1.0: {}
3447 |
3448 | jsdom@24.1.1:
3449 | dependencies:
3450 | cssstyle: 4.0.1
3451 | data-urls: 5.0.0
3452 | decimal.js: 10.4.3
3453 | form-data: 4.0.0
3454 | html-encoding-sniffer: 4.0.0
3455 | http-proxy-agent: 7.0.2
3456 | https-proxy-agent: 7.0.5
3457 | is-potential-custom-element-name: 1.0.1
3458 | nwsapi: 2.2.12
3459 | parse5: 7.1.2
3460 | rrweb-cssom: 0.7.1
3461 | saxes: 6.0.0
3462 | symbol-tree: 3.2.4
3463 | tough-cookie: 4.1.4
3464 | w3c-xmlserializer: 5.0.0
3465 | webidl-conversions: 7.0.0
3466 | whatwg-encoding: 3.1.1
3467 | whatwg-mimetype: 4.0.0
3468 | whatwg-url: 14.0.0
3469 | ws: 8.18.0
3470 | xml-name-validator: 5.0.0
3471 | transitivePeerDependencies:
3472 | - bufferutil
3473 | - supports-color
3474 | - utf-8-validate
3475 |
3476 | json-buffer@3.0.1: {}
3477 |
3478 | json-parse-even-better-errors@3.0.2: {}
3479 |
3480 | json-schema-traverse@0.4.1: {}
3481 |
3482 | json-stable-stringify-without-jsonify@1.0.1: {}
3483 |
3484 | keyv@4.5.4:
3485 | dependencies:
3486 | json-buffer: 3.0.1
3487 |
3488 | levn@0.4.1:
3489 | dependencies:
3490 | prelude-ls: 1.2.1
3491 | type-check: 0.4.0
3492 |
3493 | lilconfig@3.1.2: {}
3494 |
3495 | lines-and-columns@1.2.4: {}
3496 |
3497 | load-tsconfig@0.2.5: {}
3498 |
3499 | locate-path@6.0.0:
3500 | dependencies:
3501 | p-locate: 5.0.0
3502 |
3503 | lodash.merge@4.6.2: {}
3504 |
3505 | lodash.sortby@4.7.0: {}
3506 |
3507 | lodash@4.17.21: {}
3508 |
3509 | loupe@3.1.1:
3510 | dependencies:
3511 | get-func-name: 2.0.2
3512 |
3513 | lru-cache@10.4.3: {}
3514 |
3515 | lru-cache@11.0.0: {}
3516 |
3517 | magic-string@0.30.11:
3518 | dependencies:
3519 | '@jridgewell/sourcemap-codec': 1.5.0
3520 |
3521 | memorystream@0.3.1: {}
3522 |
3523 | merge-stream@2.0.0: {}
3524 |
3525 | merge2@1.4.1: {}
3526 |
3527 | micromatch@4.0.7:
3528 | dependencies:
3529 | braces: 3.0.3
3530 | picomatch: 2.3.1
3531 |
3532 | mime-db@1.52.0: {}
3533 |
3534 | mime-types@2.1.35:
3535 | dependencies:
3536 | mime-db: 1.52.0
3537 |
3538 | mimic-fn@2.1.0: {}
3539 |
3540 | mimic-fn@4.0.0: {}
3541 |
3542 | minimatch@10.0.1:
3543 | dependencies:
3544 | brace-expansion: 2.0.1
3545 |
3546 | minimatch@3.1.2:
3547 | dependencies:
3548 | brace-expansion: 1.1.11
3549 |
3550 | minimatch@9.0.5:
3551 | dependencies:
3552 | brace-expansion: 2.0.1
3553 |
3554 | minipass@7.1.2: {}
3555 |
3556 | ms@2.1.2: {}
3557 |
3558 | mz@2.7.0:
3559 | dependencies:
3560 | any-promise: 1.3.0
3561 | object-assign: 4.1.1
3562 | thenify-all: 1.6.0
3563 |
3564 | nanoid@3.3.7: {}
3565 |
3566 | natural-compare@1.4.0: {}
3567 |
3568 | normalize-path@3.0.0: {}
3569 |
3570 | npm-normalize-package-bin@3.0.1: {}
3571 |
3572 | npm-run-all2@6.2.2:
3573 | dependencies:
3574 | ansi-styles: 6.2.1
3575 | cross-spawn: 7.0.3
3576 | memorystream: 0.3.1
3577 | minimatch: 9.0.5
3578 | pidtree: 0.6.0
3579 | read-package-json-fast: 3.0.2
3580 | shell-quote: 1.8.1
3581 |
3582 | npm-run-path@4.0.1:
3583 | dependencies:
3584 | path-key: 3.1.1
3585 |
3586 | npm-run-path@5.3.0:
3587 | dependencies:
3588 | path-key: 4.0.0
3589 |
3590 | nwsapi@2.2.12: {}
3591 |
3592 | object-assign@4.1.1: {}
3593 |
3594 | object-inspect@1.13.2: {}
3595 |
3596 | object-keys@1.1.1: {}
3597 |
3598 | object.assign@4.1.5:
3599 | dependencies:
3600 | call-bind: 1.0.7
3601 | define-properties: 1.2.1
3602 | has-symbols: 1.0.3
3603 | object-keys: 1.1.1
3604 |
3605 | once@1.4.0:
3606 | dependencies:
3607 | wrappy: 1.0.2
3608 |
3609 | onetime@5.1.2:
3610 | dependencies:
3611 | mimic-fn: 2.1.0
3612 |
3613 | onetime@6.0.0:
3614 | dependencies:
3615 | mimic-fn: 4.0.0
3616 |
3617 | optionator@0.9.4:
3618 | dependencies:
3619 | deep-is: 0.1.4
3620 | fast-levenshtein: 2.0.6
3621 | levn: 0.4.1
3622 | prelude-ls: 1.2.1
3623 | type-check: 0.4.0
3624 | word-wrap: 1.2.5
3625 |
3626 | p-limit@3.1.0:
3627 | dependencies:
3628 | yocto-queue: 0.1.0
3629 |
3630 | p-locate@5.0.0:
3631 | dependencies:
3632 | p-limit: 3.1.0
3633 |
3634 | package-json-from-dist@1.0.0: {}
3635 |
3636 | parent-module@1.0.1:
3637 | dependencies:
3638 | callsites: 3.1.0
3639 |
3640 | parse-imports@2.1.1:
3641 | dependencies:
3642 | es-module-lexer: 1.5.4
3643 | slashes: 3.0.12
3644 |
3645 | parse5@7.1.2:
3646 | dependencies:
3647 | entities: 4.5.0
3648 |
3649 | path-exists@4.0.0: {}
3650 |
3651 | path-is-absolute@1.0.1: {}
3652 |
3653 | path-key@3.1.1: {}
3654 |
3655 | path-key@4.0.0: {}
3656 |
3657 | path-scurry@1.11.1:
3658 | dependencies:
3659 | lru-cache: 10.4.3
3660 | minipass: 7.1.2
3661 |
3662 | path-scurry@2.0.0:
3663 | dependencies:
3664 | lru-cache: 11.0.0
3665 | minipass: 7.1.2
3666 |
3667 | path-type@4.0.0: {}
3668 |
3669 | pathe@1.1.2: {}
3670 |
3671 | pathval@2.0.0: {}
3672 |
3673 | picocolors@1.0.1: {}
3674 |
3675 | picomatch@2.3.1: {}
3676 |
3677 | pidtree@0.6.0: {}
3678 |
3679 | pirates@4.0.6: {}
3680 |
3681 | possible-typed-array-names@1.0.0: {}
3682 |
3683 | postcss-load-config@6.0.1(postcss@8.4.41):
3684 | dependencies:
3685 | lilconfig: 3.1.2
3686 | optionalDependencies:
3687 | postcss: 8.4.41
3688 |
3689 | postcss@8.4.41:
3690 | dependencies:
3691 | nanoid: 3.3.7
3692 | picocolors: 1.0.1
3693 | source-map-js: 1.2.0
3694 |
3695 | prelude-ls@1.2.1: {}
3696 |
3697 | prettier-linter-helpers@1.0.0:
3698 | dependencies:
3699 | fast-diff: 1.3.0
3700 |
3701 | prettier-plugin-organize-imports@4.0.0(prettier@3.3.3)(typescript@5.5.4):
3702 | dependencies:
3703 | prettier: 3.3.3
3704 | typescript: 5.5.4
3705 |
3706 | prettier@3.3.3: {}
3707 |
3708 | psl@1.9.0: {}
3709 |
3710 | punycode@2.3.1: {}
3711 |
3712 | querystringify@2.2.0: {}
3713 |
3714 | queue-microtask@1.2.3: {}
3715 |
3716 | read-package-json-fast@3.0.2:
3717 | dependencies:
3718 | json-parse-even-better-errors: 3.0.2
3719 | npm-normalize-package-bin: 3.0.1
3720 |
3721 | readdirp@3.6.0:
3722 | dependencies:
3723 | picomatch: 2.3.1
3724 |
3725 | regexp.prototype.flags@1.5.2:
3726 | dependencies:
3727 | call-bind: 1.0.7
3728 | define-properties: 1.2.1
3729 | es-errors: 1.3.0
3730 | set-function-name: 2.0.2
3731 |
3732 | requires-port@1.0.0: {}
3733 |
3734 | resolve-from@4.0.0: {}
3735 |
3736 | resolve-from@5.0.0: {}
3737 |
3738 | reusify@1.0.4: {}
3739 |
3740 | rimraf@3.0.2:
3741 | dependencies:
3742 | glob: 7.2.3
3743 |
3744 | rimraf@6.0.1:
3745 | dependencies:
3746 | glob: 11.0.0
3747 | package-json-from-dist: 1.0.0
3748 |
3749 | rollup@4.20.0:
3750 | dependencies:
3751 | '@types/estree': 1.0.5
3752 | optionalDependencies:
3753 | '@rollup/rollup-android-arm-eabi': 4.20.0
3754 | '@rollup/rollup-android-arm64': 4.20.0
3755 | '@rollup/rollup-darwin-arm64': 4.20.0
3756 | '@rollup/rollup-darwin-x64': 4.20.0
3757 | '@rollup/rollup-linux-arm-gnueabihf': 4.20.0
3758 | '@rollup/rollup-linux-arm-musleabihf': 4.20.0
3759 | '@rollup/rollup-linux-arm64-gnu': 4.20.0
3760 | '@rollup/rollup-linux-arm64-musl': 4.20.0
3761 | '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0
3762 | '@rollup/rollup-linux-riscv64-gnu': 4.20.0
3763 | '@rollup/rollup-linux-s390x-gnu': 4.20.0
3764 | '@rollup/rollup-linux-x64-gnu': 4.20.0
3765 | '@rollup/rollup-linux-x64-musl': 4.20.0
3766 | '@rollup/rollup-win32-arm64-msvc': 4.20.0
3767 | '@rollup/rollup-win32-ia32-msvc': 4.20.0
3768 | '@rollup/rollup-win32-x64-msvc': 4.20.0
3769 | fsevents: 2.3.3
3770 |
3771 | rrweb-cssom@0.6.0: {}
3772 |
3773 | rrweb-cssom@0.7.1: {}
3774 |
3775 | run-parallel@1.2.0:
3776 | dependencies:
3777 | queue-microtask: 1.2.3
3778 |
3779 | safe-array-concat@1.1.2:
3780 | dependencies:
3781 | call-bind: 1.0.7
3782 | get-intrinsic: 1.2.4
3783 | has-symbols: 1.0.3
3784 | isarray: 2.0.5
3785 |
3786 | safe-regex-test@1.0.3:
3787 | dependencies:
3788 | call-bind: 1.0.7
3789 | es-errors: 1.3.0
3790 | is-regex: 1.1.4
3791 |
3792 | safer-buffer@2.1.2: {}
3793 |
3794 | saxes@6.0.0:
3795 | dependencies:
3796 | xmlchars: 2.2.0
3797 |
3798 | semver@7.6.3: {}
3799 |
3800 | set-function-length@1.2.2:
3801 | dependencies:
3802 | define-data-property: 1.1.4
3803 | es-errors: 1.3.0
3804 | function-bind: 1.1.2
3805 | get-intrinsic: 1.2.4
3806 | gopd: 1.0.1
3807 | has-property-descriptors: 1.0.2
3808 |
3809 | set-function-name@2.0.2:
3810 | dependencies:
3811 | define-data-property: 1.1.4
3812 | es-errors: 1.3.0
3813 | functions-have-names: 1.2.3
3814 | has-property-descriptors: 1.0.2
3815 |
3816 | shebang-command@2.0.0:
3817 | dependencies:
3818 | shebang-regex: 3.0.0
3819 |
3820 | shebang-regex@3.0.0: {}
3821 |
3822 | shell-quote@1.8.1: {}
3823 |
3824 | side-channel@1.0.6:
3825 | dependencies:
3826 | call-bind: 1.0.7
3827 | es-errors: 1.3.0
3828 | get-intrinsic: 1.2.4
3829 | object-inspect: 1.13.2
3830 |
3831 | siginfo@2.0.0: {}
3832 |
3833 | signal-exit@3.0.7: {}
3834 |
3835 | signal-exit@4.1.0: {}
3836 |
3837 | slash@3.0.0: {}
3838 |
3839 | slashes@3.0.12: {}
3840 |
3841 | source-map-js@1.2.0: {}
3842 |
3843 | source-map@0.8.0-beta.0:
3844 | dependencies:
3845 | whatwg-url: 7.1.0
3846 |
3847 | spdx-exceptions@2.5.0: {}
3848 |
3849 | spdx-expression-parse@4.0.0:
3850 | dependencies:
3851 | spdx-exceptions: 2.5.0
3852 | spdx-license-ids: 3.0.18
3853 |
3854 | spdx-license-ids@3.0.18: {}
3855 |
3856 | stackback@0.0.2: {}
3857 |
3858 | std-env@3.7.0: {}
3859 |
3860 | string-width@4.2.3:
3861 | dependencies:
3862 | emoji-regex: 8.0.0
3863 | is-fullwidth-code-point: 3.0.0
3864 | strip-ansi: 6.0.1
3865 |
3866 | string-width@5.1.2:
3867 | dependencies:
3868 | eastasianwidth: 0.2.0
3869 | emoji-regex: 9.2.2
3870 | strip-ansi: 7.1.0
3871 |
3872 | string.prototype.trim@1.2.9:
3873 | dependencies:
3874 | call-bind: 1.0.7
3875 | define-properties: 1.2.1
3876 | es-abstract: 1.23.3
3877 | es-object-atoms: 1.0.0
3878 |
3879 | string.prototype.trimend@1.0.8:
3880 | dependencies:
3881 | call-bind: 1.0.7
3882 | define-properties: 1.2.1
3883 | es-object-atoms: 1.0.0
3884 |
3885 | string.prototype.trimstart@1.0.8:
3886 | dependencies:
3887 | call-bind: 1.0.7
3888 | define-properties: 1.2.1
3889 | es-object-atoms: 1.0.0
3890 |
3891 | strip-ansi@6.0.1:
3892 | dependencies:
3893 | ansi-regex: 5.0.1
3894 |
3895 | strip-ansi@7.1.0:
3896 | dependencies:
3897 | ansi-regex: 6.0.1
3898 |
3899 | strip-final-newline@2.0.0: {}
3900 |
3901 | strip-final-newline@3.0.0: {}
3902 |
3903 | strip-json-comments@3.1.1: {}
3904 |
3905 | sucrase@3.35.0:
3906 | dependencies:
3907 | '@jridgewell/gen-mapping': 0.3.5
3908 | commander: 4.1.1
3909 | glob: 10.4.5
3910 | lines-and-columns: 1.2.4
3911 | mz: 2.7.0
3912 | pirates: 4.0.6
3913 | ts-interface-checker: 0.1.13
3914 |
3915 | supports-color@7.2.0:
3916 | dependencies:
3917 | has-flag: 4.0.0
3918 |
3919 | symbol-tree@3.2.4: {}
3920 |
3921 | synckit@0.9.1:
3922 | dependencies:
3923 | '@pkgr/core': 0.1.1
3924 | tslib: 2.6.3
3925 |
3926 | text-table@0.2.0: {}
3927 |
3928 | thenify-all@1.6.0:
3929 | dependencies:
3930 | thenify: 3.3.1
3931 |
3932 | thenify@3.3.1:
3933 | dependencies:
3934 | any-promise: 1.3.0
3935 |
3936 | tinybench@2.9.0: {}
3937 |
3938 | tinypool@1.0.0: {}
3939 |
3940 | tinyrainbow@1.2.0: {}
3941 |
3942 | tinyspy@3.0.0: {}
3943 |
3944 | to-fast-properties@2.0.0: {}
3945 |
3946 | to-regex-range@5.0.1:
3947 | dependencies:
3948 | is-number: 7.0.0
3949 |
3950 | tough-cookie@4.1.4:
3951 | dependencies:
3952 | psl: 1.9.0
3953 | punycode: 2.3.1
3954 | universalify: 0.2.0
3955 | url-parse: 1.5.10
3956 |
3957 | tr46@1.0.1:
3958 | dependencies:
3959 | punycode: 2.3.1
3960 |
3961 | tr46@5.0.0:
3962 | dependencies:
3963 | punycode: 2.3.1
3964 |
3965 | tree-kill@1.2.2: {}
3966 |
3967 | ts-api-utils@1.3.0(typescript@5.5.4):
3968 | dependencies:
3969 | typescript: 5.5.4
3970 |
3971 | ts-interface-checker@0.1.13: {}
3972 |
3973 | tslib@2.6.3: {}
3974 |
3975 | tsup@8.2.4(postcss@8.4.41)(typescript@5.5.4):
3976 | dependencies:
3977 | bundle-require: 5.0.0(esbuild@0.23.0)
3978 | cac: 6.7.14
3979 | chokidar: 3.6.0
3980 | consola: 3.2.3
3981 | debug: 4.3.6
3982 | esbuild: 0.23.0
3983 | execa: 5.1.1
3984 | globby: 11.1.0
3985 | joycon: 3.1.1
3986 | picocolors: 1.0.1
3987 | postcss-load-config: 6.0.1(postcss@8.4.41)
3988 | resolve-from: 5.0.0
3989 | rollup: 4.20.0
3990 | source-map: 0.8.0-beta.0
3991 | sucrase: 3.35.0
3992 | tree-kill: 1.2.2
3993 | optionalDependencies:
3994 | postcss: 8.4.41
3995 | typescript: 5.5.4
3996 | transitivePeerDependencies:
3997 | - jiti
3998 | - supports-color
3999 | - tsx
4000 | - yaml
4001 |
4002 | type-check@0.4.0:
4003 | dependencies:
4004 | prelude-ls: 1.2.1
4005 |
4006 | type-fest@0.20.2: {}
4007 |
4008 | typed-array-buffer@1.0.2:
4009 | dependencies:
4010 | call-bind: 1.0.7
4011 | es-errors: 1.3.0
4012 | is-typed-array: 1.1.13
4013 |
4014 | typed-array-byte-length@1.0.1:
4015 | dependencies:
4016 | call-bind: 1.0.7
4017 | for-each: 0.3.3
4018 | gopd: 1.0.1
4019 | has-proto: 1.0.3
4020 | is-typed-array: 1.1.13
4021 |
4022 | typed-array-byte-offset@1.0.2:
4023 | dependencies:
4024 | available-typed-arrays: 1.0.7
4025 | call-bind: 1.0.7
4026 | for-each: 0.3.3
4027 | gopd: 1.0.1
4028 | has-proto: 1.0.3
4029 | is-typed-array: 1.1.13
4030 |
4031 | typed-array-length@1.0.6:
4032 | dependencies:
4033 | call-bind: 1.0.7
4034 | for-each: 0.3.3
4035 | gopd: 1.0.1
4036 | has-proto: 1.0.3
4037 | is-typed-array: 1.1.13
4038 | possible-typed-array-names: 1.0.0
4039 |
4040 | typescript@5.5.4: {}
4041 |
4042 | unbox-primitive@1.0.2:
4043 | dependencies:
4044 | call-bind: 1.0.7
4045 | has-bigints: 1.0.2
4046 | has-symbols: 1.0.3
4047 | which-boxed-primitive: 1.0.2
4048 |
4049 | undici-types@6.18.2: {}
4050 |
4051 | universalify@0.2.0: {}
4052 |
4053 | uri-js@4.4.1:
4054 | dependencies:
4055 | punycode: 2.3.1
4056 |
4057 | url-parse@1.5.10:
4058 | dependencies:
4059 | querystringify: 2.2.0
4060 | requires-port: 1.0.0
4061 |
4062 | vite-node@2.0.5(@types/node@22.3.0):
4063 | dependencies:
4064 | cac: 6.7.14
4065 | debug: 4.3.6
4066 | pathe: 1.1.2
4067 | tinyrainbow: 1.2.0
4068 | vite: 5.4.0(@types/node@22.3.0)
4069 | transitivePeerDependencies:
4070 | - '@types/node'
4071 | - less
4072 | - lightningcss
4073 | - sass
4074 | - sass-embedded
4075 | - stylus
4076 | - sugarss
4077 | - supports-color
4078 | - terser
4079 |
4080 | vite@5.4.0(@types/node@22.3.0):
4081 | dependencies:
4082 | esbuild: 0.21.5
4083 | postcss: 8.4.41
4084 | rollup: 4.20.0
4085 | optionalDependencies:
4086 | '@types/node': 22.3.0
4087 | fsevents: 2.3.3
4088 |
4089 | vitest@2.0.5(@types/node@22.3.0)(jsdom@24.1.1):
4090 | dependencies:
4091 | '@ampproject/remapping': 2.3.0
4092 | '@vitest/expect': 2.0.5
4093 | '@vitest/pretty-format': 2.0.5
4094 | '@vitest/runner': 2.0.5
4095 | '@vitest/snapshot': 2.0.5
4096 | '@vitest/spy': 2.0.5
4097 | '@vitest/utils': 2.0.5
4098 | chai: 5.1.1
4099 | debug: 4.3.6
4100 | execa: 8.0.1
4101 | magic-string: 0.30.11
4102 | pathe: 1.1.2
4103 | std-env: 3.7.0
4104 | tinybench: 2.9.0
4105 | tinypool: 1.0.0
4106 | tinyrainbow: 1.2.0
4107 | vite: 5.4.0(@types/node@22.3.0)
4108 | vite-node: 2.0.5(@types/node@22.3.0)
4109 | why-is-node-running: 2.3.0
4110 | optionalDependencies:
4111 | '@types/node': 22.3.0
4112 | jsdom: 24.1.1
4113 | transitivePeerDependencies:
4114 | - less
4115 | - lightningcss
4116 | - sass
4117 | - sass-embedded
4118 | - stylus
4119 | - sugarss
4120 | - supports-color
4121 | - terser
4122 |
4123 | vue-router@4.4.3(vue@3.4.37(typescript@5.5.4)):
4124 | dependencies:
4125 | '@vue/devtools-api': 6.6.3
4126 | vue: 3.4.37(typescript@5.5.4)
4127 | optional: true
4128 |
4129 | vue@3.4.37(typescript@5.5.4):
4130 | dependencies:
4131 | '@vue/compiler-dom': 3.4.37
4132 | '@vue/compiler-sfc': 3.4.37
4133 | '@vue/runtime-dom': 3.4.37
4134 | '@vue/server-renderer': 3.4.37(vue@3.4.37(typescript@5.5.4))
4135 | '@vue/shared': 3.4.37
4136 | optionalDependencies:
4137 | typescript: 5.5.4
4138 |
4139 | w3c-xmlserializer@5.0.0:
4140 | dependencies:
4141 | xml-name-validator: 5.0.0
4142 |
4143 | webidl-conversions@4.0.2: {}
4144 |
4145 | webidl-conversions@7.0.0: {}
4146 |
4147 | whatwg-encoding@3.1.1:
4148 | dependencies:
4149 | iconv-lite: 0.6.3
4150 |
4151 | whatwg-mimetype@4.0.0: {}
4152 |
4153 | whatwg-url@14.0.0:
4154 | dependencies:
4155 | tr46: 5.0.0
4156 | webidl-conversions: 7.0.0
4157 |
4158 | whatwg-url@7.1.0:
4159 | dependencies:
4160 | lodash.sortby: 4.7.0
4161 | tr46: 1.0.1
4162 | webidl-conversions: 4.0.2
4163 |
4164 | which-boxed-primitive@1.0.2:
4165 | dependencies:
4166 | is-bigint: 1.0.4
4167 | is-boolean-object: 1.1.2
4168 | is-number-object: 1.0.7
4169 | is-string: 1.0.7
4170 | is-symbol: 1.0.4
4171 |
4172 | which-typed-array@1.1.15:
4173 | dependencies:
4174 | available-typed-arrays: 1.0.7
4175 | call-bind: 1.0.7
4176 | for-each: 0.3.3
4177 | gopd: 1.0.1
4178 | has-tostringtag: 1.0.2
4179 |
4180 | which@2.0.2:
4181 | dependencies:
4182 | isexe: 2.0.0
4183 |
4184 | why-is-node-running@2.3.0:
4185 | dependencies:
4186 | siginfo: 2.0.0
4187 | stackback: 0.0.2
4188 |
4189 | word-wrap@1.2.5: {}
4190 |
4191 | wrap-ansi@7.0.0:
4192 | dependencies:
4193 | ansi-styles: 4.3.0
4194 | string-width: 4.2.3
4195 | strip-ansi: 6.0.1
4196 |
4197 | wrap-ansi@8.1.0:
4198 | dependencies:
4199 | ansi-styles: 6.2.1
4200 | string-width: 5.1.2
4201 | strip-ansi: 7.1.0
4202 |
4203 | wrappy@1.0.2: {}
4204 |
4205 | ws@8.18.0: {}
4206 |
4207 | xml-name-validator@5.0.0: {}
4208 |
4209 | xmlchars@2.2.0: {}
4210 |
4211 | yocto-queue@0.1.0: {}
4212 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import type {
2 | GtmIdContainer,
3 | GtmQueryParams,
4 | GtmSupportOptions,
5 | LoadScriptOptions,
6 | } from '@gtm-support/core';
7 | import { GtmSupport as GtmPlugin, loadScript } from '@gtm-support/core';
8 | import type { App, Plugin } from 'vue';
9 | import { getCurrentInstance, nextTick } from 'vue';
10 | import type {
11 | ErrorTypes,
12 | NavigationFailure,
13 | RouteLocationNormalized,
14 | Router,
15 | } from 'vue-router';
16 |
17 | // eslint-disable-next-line jsdoc/require-jsdoc
18 | type IgnoredViews =
19 | | string[]
20 | | ((to: RouteLocationNormalized, from: RouteLocationNormalized) => boolean);
21 |
22 | /**
23 | * Options passed to the plugin.
24 | */
25 | export interface VueGtmUseOptions extends GtmSupportOptions {
26 | /**
27 | * Pass the router instance to automatically sync with router.
28 | */
29 | vueRouter?: Router;
30 | /**
31 | * Derive additional event data after navigation.
32 | */
33 | vueRouterAdditionalEventData?: (
34 | to: RouteLocationNormalized,
35 | from: RouteLocationNormalized,
36 | ) => Record | Promise>;
37 | /**
38 | * Don't trigger events for specified router names.
39 | */
40 | ignoredViews?: IgnoredViews;
41 | /**
42 | * Whether or not call `trackView` in `Vue.nextTick`.
43 | */
44 | trackOnNextTick?: boolean;
45 | }
46 |
47 | let gtmPlugin: GtmPlugin | undefined;
48 |
49 | /**
50 | * Installation procedure.
51 | *
52 | * @param app The Vue app instance.
53 | * @param options Configuration options.
54 | */
55 | function install(app: App, options: VueGtmUseOptions = { id: '' }): void {
56 | // Apply default configuration
57 | options = { trackOnNextTick: false, ...options };
58 |
59 | // Add to vue prototype and also from globals
60 | gtmPlugin = new GtmPlugin(options);
61 | app.config.globalProperties.$gtm = gtmPlugin;
62 |
63 | // Check if plugin is running in a real browser or e.g. in SSG mode
64 | if (gtmPlugin.isInBrowserContext()) {
65 | // Handle vue-router if defined
66 | if (options.vueRouter) {
67 | initVueRouterGuard(
68 | app,
69 | options.vueRouter,
70 | options.ignoredViews,
71 | options.trackOnNextTick,
72 | options.vueRouterAdditionalEventData,
73 | );
74 | }
75 |
76 | // Load GTM script when enabled
77 | if (gtmPlugin.options.enabled && gtmPlugin.options.loadScript) {
78 | if (Array.isArray(options.id)) {
79 | options.id.forEach((id: string | GtmIdContainer) => {
80 | if (typeof id === 'string') {
81 | loadScript(id, options as LoadScriptOptions);
82 | } else {
83 | const newConf: VueGtmUseOptions = {
84 | ...options,
85 | };
86 |
87 | if (id.queryParams != null) {
88 | newConf.queryParams = {
89 | ...newConf.queryParams,
90 | ...id.queryParams,
91 | } as GtmQueryParams;
92 | }
93 |
94 | loadScript(id.id, newConf as LoadScriptOptions);
95 | }
96 | });
97 | } else {
98 | loadScript(options.id, options as LoadScriptOptions);
99 | }
100 | }
101 | }
102 |
103 | app.provide('gtm', options);
104 | }
105 |
106 | // eslint-disable-next-line jsdoc/require-jsdoc
107 | type NavigationFailureType =
108 | | ErrorTypes.NAVIGATION_ABORTED
109 | | ErrorTypes.NAVIGATION_CANCELLED
110 | | ErrorTypes.NAVIGATION_DUPLICATED;
111 |
112 | /**
113 | * Initialize the router guard.
114 | *
115 | * @param app The Vue app instance.
116 | * @param vueRouter The Vue router instance to attach the guard.
117 | * @param ignoredViews An array of route name that will be ignored.
118 | * @param trackOnNextTick Whether or not to call `trackView` in `Vue.nextTick`.
119 | * @param deriveAdditionalEventData Callback to derive additional event data.
120 | */
121 | function initVueRouterGuard(
122 | app: App,
123 | vueRouter: Exclude,
124 | ignoredViews: VueGtmUseOptions['ignoredViews'] = [],
125 | trackOnNextTick: VueGtmUseOptions['trackOnNextTick'],
126 | deriveAdditionalEventData: VueGtmUseOptions['vueRouterAdditionalEventData'] = () => ({}),
127 | ): void {
128 | // eslint-disable-next-line jsdoc/require-jsdoc
129 | function isNavigationFailure(
130 | failure: void | NavigationFailure | undefined,
131 | navigationFailureType: NavigationFailureType,
132 | ): boolean {
133 | if (!(failure instanceof Error)) {
134 | return false;
135 | }
136 | return !!(failure.type & navigationFailureType);
137 | }
138 |
139 | vueRouter.afterEach(async (to, from, failure) => {
140 | // Ignore some routes
141 | if (
142 | typeof to.name !== 'string' ||
143 | (Array.isArray(ignoredViews) && ignoredViews.includes(to.name)) ||
144 | (typeof ignoredViews === 'function' && ignoredViews(to, from))
145 | ) {
146 | return;
147 | }
148 |
149 | // Dispatch vue event using meta gtm value if defined otherwise fallback to route name
150 | const name: string =
151 | to.meta && typeof to.meta.gtm === 'string' && !!to.meta.gtm
152 | ? to.meta.gtm
153 | : to.name;
154 |
155 | if (isNavigationFailure(failure, 4 /* NAVIGATION_ABORTED */)) {
156 | if (gtmPlugin?.debugEnabled()) {
157 | console.log(
158 | `[VueGtm]: '${name}' not tracked due to navigation aborted`,
159 | );
160 | }
161 | } else if (isNavigationFailure(failure, 8 /* NAVIGATION_CANCELLED */)) {
162 | if (gtmPlugin?.debugEnabled()) {
163 | console.log(
164 | `[VueGtm]: '${name}' not tracked due to navigation cancelled`,
165 | );
166 | }
167 | }
168 |
169 | const additionalEventData: Record = {
170 | ...(await deriveAdditionalEventData(to, from)),
171 | ...(to.meta?.gtmAdditionalEventData as Record),
172 | };
173 | const baseUrl: string = vueRouter.options?.history?.base ?? '';
174 | let fullUrl: string = baseUrl;
175 | if (!fullUrl.endsWith('/')) {
176 | fullUrl += '/';
177 | }
178 | fullUrl += to.fullPath.startsWith('/')
179 | ? to.fullPath.substring(1)
180 | : to.fullPath;
181 |
182 | if (trackOnNextTick) {
183 | void nextTick(() => {
184 | gtmPlugin?.trackView(name, fullUrl, additionalEventData);
185 | });
186 | } else {
187 | gtmPlugin?.trackView(name, fullUrl, additionalEventData);
188 | }
189 | });
190 | }
191 |
192 | /**
193 | * Create the Vue GTM instance.
194 | *
195 | * @param options Options.
196 | * @returns The Vue GTM plugin instance.
197 | */
198 | export function createGtm(options: VueGtmUseOptions): VueGtmPlugin {
199 | return { install: (app: App) => install(app, options) };
200 | }
201 |
202 | declare module 'vue' {
203 | // eslint-disable-next-line jsdoc/require-jsdoc
204 | export interface ComponentCustomProperties {
205 | /**
206 | * The Vue GTM Plugin instance.
207 | */
208 | $gtm: GtmPlugin;
209 | }
210 | }
211 |
212 | /**
213 | * Vue GTM Plugin.
214 | */
215 | export type VueGtmPlugin = Plugin;
216 |
217 | const _default: VueGtmPlugin = { install };
218 |
219 | export {
220 | assertIsGtmId,
221 | GtmSupport,
222 | hasScript,
223 | loadScript,
224 | } from '@gtm-support/core';
225 | export type {
226 | DataLayerObject,
227 | GtmIdContainer,
228 | GtmQueryParams,
229 | GtmSupportOptions,
230 | LoadScriptOptions,
231 | TrackEventOptions,
232 | } from '@gtm-support/core';
233 | export { GtmPlugin };
234 | export default _default;
235 |
236 | /**
237 | * Returns GTM plugin instance to be used via Composition API inside setup method.
238 | *
239 | * @returns The Vue GTM instance if the it was installed, otherwise `undefined`.
240 | */
241 | export function useGtm(): GtmPlugin | undefined {
242 | return (
243 | getCurrentInstance()?.appContext?.app?.config?.globalProperties?.$gtm ??
244 | gtmPlugin
245 | );
246 | }
247 |
--------------------------------------------------------------------------------
/tests/index.test.ts:
--------------------------------------------------------------------------------
1 | import { afterEach, describe, expect, test } from 'vitest';
2 | import type { App } from 'vue';
3 | import VueGtm, { createGtm, useGtm } from '../src/index';
4 | import {
5 | appendAppDivToBody,
6 | createAppWithComponent,
7 | resetDataLayer,
8 | resetHtml,
9 | } from './vue-helper';
10 |
11 | describe('Default', () => {
12 | afterEach(() => {
13 | resetHtml();
14 | resetDataLayer();
15 | });
16 |
17 | test('should expose Vue plugin', () => {
18 | expect(VueGtm).toBeDefined();
19 | expect(VueGtm.install).toBeDefined();
20 | expect(VueGtm.install).toBeInstanceOf(Function);
21 | });
22 |
23 | test('should throw Error if GTM-ID is invalid', () => {
24 | const validGtmId: string = 'GTM-X';
25 | const invalidGtmIds: string[] = ['GTM-x', 'a', 'gtm-a', 'Error: ', 'Error'];
26 | const fakeVueInstance: App = null as unknown as App;
27 | for (const invalidGtmId of invalidGtmIds) {
28 | const suggestion: string = String(invalidGtmId)
29 | .toUpperCase()
30 | .replace(/.*-|[^0-9A-Z]/g, '');
31 |
32 | const expectedErrorMessage: string = `'${invalidGtmId}' is not a valid GTM-ID (/^(GTM|G)-[0-9A-Z]+$/). Did you mean 'GTM-${suggestion}' or 'G-${suggestion}'?`;
33 |
34 | expect(() => {
35 | VueGtm.install?.(fakeVueInstance, { id: invalidGtmId });
36 | }).toThrowError(new Error(expectedErrorMessage));
37 | expect(() => {
38 | VueGtm.install?.(fakeVueInstance, { id: [invalidGtmId] });
39 | }).toThrowError(new Error(expectedErrorMessage));
40 | expect(() => {
41 | VueGtm.install?.(fakeVueInstance, { id: [validGtmId, invalidGtmId] });
42 | }).toThrowError(new Error(expectedErrorMessage));
43 | expect(() => {
44 | VueGtm.install?.(fakeVueInstance, { id: [{ id: invalidGtmId }] });
45 | }).toThrowError(new Error(expectedErrorMessage));
46 | expect(() => {
47 | VueGtm.install?.(fakeVueInstance, {
48 | id: [{ id: validGtmId }, { id: invalidGtmId }],
49 | });
50 | }).toThrowError(new Error(expectedErrorMessage));
51 | }
52 | });
53 |
54 | test('should expose useGtm function', () => {
55 | expect(useGtm).toBeInstanceOf(Function);
56 |
57 | // If the plugin was not used, it returns undefined
58 | expect(useGtm()).toBeUndefined();
59 |
60 | appendAppDivToBody();
61 | const { app } = createAppWithComponent();
62 | app.use(createGtm({ id: 'GTM-DEMO' })).mount('#app');
63 |
64 | expect(useGtm()).toBeDefined();
65 | expect(useGtm()).toStrictEqual(app.config.globalProperties.$gtm);
66 | });
67 | });
68 |
--------------------------------------------------------------------------------
/tests/plugin.test.ts:
--------------------------------------------------------------------------------
1 | import { describe, expect, test } from 'vitest';
2 | import { GtmPlugin as VueGtmPlugin } from '../src/index';
3 |
4 | describe('Plugin', () => {
5 | test('should apply default options', () => {
6 | const instance: VueGtmPlugin = new VueGtmPlugin({ id: 'GTM-DEMO' });
7 | expect(instance.options).toEqual({
8 | compatibility: false,
9 | dataLayerName: 'dataLayer',
10 | debug: false,
11 | defer: false,
12 | enabled: true,
13 | loadScript: true,
14 | });
15 | });
16 |
17 | test('should apply id when passed as string', () => {
18 | const instance: VueGtmPlugin = new VueGtmPlugin({ id: 'GTM-DEMO' });
19 | expect(instance.id).toEqual('GTM-DEMO');
20 | });
21 |
22 | test('should apply id when passed as array', () => {
23 | const instance: VueGtmPlugin = new VueGtmPlugin({
24 | id: ['GTM-DEMO1', 'GTM-DEMO2'],
25 | });
26 | expect(instance.id).toEqual(['GTM-DEMO1', 'GTM-DEMO2']);
27 | });
28 |
29 | test('should apply id when passed as container array', () => {
30 | const instance: VueGtmPlugin = new VueGtmPlugin({
31 | id: [{ id: 'GTM-DEMO1' }, { id: 'GTM-DEMO2' }],
32 | });
33 | expect(instance.id).toEqual([{ id: 'GTM-DEMO1' }, { id: 'GTM-DEMO2' }]);
34 | });
35 |
36 | test("should have `isInBrowserContext` defined and it's overridable", () => {
37 | const instance: VueGtmPlugin = new VueGtmPlugin({ id: 'GTM-DEMO' });
38 | expect(instance.isInBrowserContext).toBeDefined();
39 | expect(instance.isInBrowserContext).toBeInstanceOf(Function);
40 | expect(instance.isInBrowserContext()).toBeTruthy();
41 |
42 | instance.isInBrowserContext = () => false;
43 | expect(instance.isInBrowserContext()).toBeFalsy();
44 | });
45 | });
46 |
--------------------------------------------------------------------------------
/tests/ssg-mode.test.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @vitest-environment node
3 | */
4 |
5 | import { describe, expect, test } from 'vitest';
6 | import { createGtm, useGtm } from '../src/index';
7 | import { createAppWithComponent } from './vue-helper';
8 |
9 | describe('SSG Mode', () => {
10 | test('should expose useGtm function but not trigger loadScript() due to Node env', () => {
11 | const { app } = createAppWithComponent();
12 | app.use(createGtm({ id: 'GTM-DEMO' }));
13 |
14 | expect(useGtm()).toBeDefined();
15 | expect(useGtm()).toStrictEqual(app.config.globalProperties.$gtm);
16 | });
17 | });
18 |
--------------------------------------------------------------------------------
/tests/vue-helper.ts:
--------------------------------------------------------------------------------
1 | import type { App } from 'vue';
2 | import { createApp, defineComponent } from 'vue';
3 | import type { RouteRecordRaw, Router } from 'vue-router';
4 | import { createMemoryHistory, createRouter } from 'vue-router';
5 |
6 | export function appendAppDivToBody(): void {
7 | const appDiv: HTMLDivElement = document.createElement('div');
8 | appDiv.id = 'app';
9 | document.body.appendChild(appDiv);
10 | }
11 |
12 | // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
13 | export function createAppWithComponent() {
14 | // eslint-disable-next-line @typescript-eslint/typedef
15 | const appComponent = defineComponent({
16 | name: 'App',
17 | render() {
18 | return null;
19 | },
20 | });
21 | const app: App = createApp(appComponent);
22 | return { app, component: appComponent };
23 | }
24 |
25 | // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
26 | export function createAppWithRouter(routes: RouteRecordRaw[]) {
27 | const router: Router = createRouter({
28 | history: createMemoryHistory(),
29 | routes,
30 | });
31 | // eslint-disable-next-line @typescript-eslint/typedef
32 | const appComponent = defineComponent({
33 | name: 'App',
34 | render() {
35 | return null;
36 | },
37 | });
38 | const app: App = createApp(appComponent);
39 | app.use(router);
40 | return { app, router };
41 | }
42 |
43 | export function resetHtml(): void {
44 | const html: HTMLHtmlElement = document.getElementsByTagName(
45 | 'html',
46 | )[0] as HTMLHtmlElement;
47 | html.innerHTML = '';
48 | }
49 |
50 | export function resetDataLayer(): void {
51 | delete window['dataLayer'];
52 | }
53 |
--------------------------------------------------------------------------------
/tests/vue-use.test.ts:
--------------------------------------------------------------------------------
1 | import { afterEach, describe, expect, test } from 'vitest';
2 | import type { DataLayerObject, GtmPlugin as VueGtmPlugin } from '../src/index';
3 | import { createGtm } from '../src/index';
4 | import {
5 | appendAppDivToBody,
6 | createAppWithComponent,
7 | createAppWithRouter,
8 | resetDataLayer,
9 | resetHtml,
10 | } from './vue-helper';
11 |
12 | describe('Vue.use', () => {
13 | afterEach(() => {
14 | resetHtml();
15 | resetDataLayer();
16 | });
17 |
18 | test('should append google tag manager script to DOM', () => {
19 | appendAppDivToBody();
20 | const { app } = createAppWithComponent();
21 |
22 | expect(window['dataLayer']).toBeUndefined();
23 | expect(document.scripts.length).toBe(0);
24 |
25 | app.use(createGtm({ id: 'GTM-DEMO' })).mount('#app');
26 |
27 | expect(window['dataLayer']).toBeDefined();
28 | expect(document.scripts.length).toBe(1);
29 | expect(document.scripts.item(0)).toBeDefined();
30 | expect(document.scripts.item(0)?.src).toBe(
31 | 'https://www.googletagmanager.com/gtm.js?id=GTM-DEMO',
32 | );
33 | });
34 |
35 | test('should append multiple google tag manager scripts to DOM', () => {
36 | appendAppDivToBody();
37 | const { app } = createAppWithComponent();
38 |
39 | expect(window['dataLayer']).toBeUndefined();
40 | expect(document.scripts.length).toBe(0);
41 |
42 | app
43 | .use(
44 | createGtm({
45 | id: [
46 | {
47 | id: 'GTM-DEMO',
48 | queryParams: {
49 | gtm_auth: 'abc123',
50 | gtm_preview: 'env-1',
51 | gtm_cookies_win: 'x',
52 | },
53 | },
54 | {
55 | id: 'GTM-DEMO2',
56 | queryParams: {
57 | gtm_auth: 'abc234',
58 | gtm_preview: 'env-2',
59 | gtm_cookies_win: 'x',
60 | },
61 | },
62 | ],
63 | }),
64 | )
65 | .mount('#app');
66 |
67 | expect(window['dataLayer']).toBeDefined();
68 | expect(document.scripts.length).toBe(2);
69 | expect(document.scripts.item(0)).toBeDefined();
70 | expect(document.scripts.item(0)?.src).toBe(
71 | 'https://www.googletagmanager.com/gtm.js?id=GTM-DEMO>m_auth=abc123>m_preview=env-1>m_cookies_win=x',
72 | );
73 | expect(document.scripts.item(1)?.src).toBe(
74 | 'https://www.googletagmanager.com/gtm.js?id=GTM-DEMO2>m_auth=abc234>m_preview=env-2>m_cookies_win=x',
75 | );
76 | });
77 |
78 | test('should not append google tag manager script to DOM if disabled', () => {
79 | appendAppDivToBody();
80 | const { app } = createAppWithComponent();
81 |
82 | expect(window['dataLayer']).toBeUndefined();
83 | expect(document.scripts.length).toBe(0);
84 |
85 | app.use(createGtm({ id: 'GTM-DEMO', enabled: false })).mount('#app');
86 |
87 | expect(window['dataLayer']).toBeUndefined();
88 | expect(document.scripts.length).toBe(0);
89 | });
90 |
91 | test('should append google tag manager script to DOM after lazy enable', () => {
92 | appendAppDivToBody();
93 | const { app } = createAppWithComponent();
94 |
95 | expect(window['dataLayer']).toBeUndefined();
96 | expect(document.scripts.length).toBe(0);
97 |
98 | app.use(createGtm({ id: 'GTM-DEMO', enabled: false })).mount('#app');
99 |
100 | const gtmPlugin: VueGtmPlugin = app.config.globalProperties.$gtm;
101 | expect(gtmPlugin).toBeDefined();
102 |
103 | gtmPlugin.enable(true);
104 |
105 | expect(window['dataLayer']).toBeDefined();
106 | expect(document.scripts.length).toBe(1);
107 | expect(document.scripts.item(0)).toBeDefined();
108 | expect(document.scripts.item(0)?.src).toBe(
109 | 'https://www.googletagmanager.com/gtm.js?id=GTM-DEMO&l=dataLayer',
110 | );
111 | });
112 |
113 | describe('Check src.nonce', () => {
114 | afterEach(() => {
115 | resetHtml();
116 | });
117 |
118 | test('should not set src.nonce by default', () => {
119 | appendAppDivToBody();
120 | const { app } = createAppWithComponent();
121 |
122 | app.use(createGtm({ id: 'GTM-DEMO' })).mount('#app');
123 |
124 | expect(document.scripts.length).toBe(1);
125 | expect(document.scripts.item(0)).toBeDefined();
126 | expect(document.scripts.item(0)?.nonce).toBe('');
127 | });
128 |
129 | test('should set src.nonce if configured', () => {
130 | appendAppDivToBody();
131 | const { app } = createAppWithComponent();
132 |
133 | const nonce: string = '2726c7f26c';
134 |
135 | app.use(createGtm({ id: 'GTM-DEMO', nonce })).mount('#app');
136 |
137 | expect(document.scripts.length).toBe(1);
138 | expect(document.scripts.item(0)).toBeDefined();
139 | expect(document.scripts.item(0)?.nonce).toBe(nonce);
140 | });
141 |
142 | test('should set src.nonce to empty', () => {
143 | appendAppDivToBody();
144 | const { app } = createAppWithComponent();
145 |
146 | app.use(createGtm({ id: 'GTM-DEMO', nonce: '' })).mount('#app');
147 |
148 | expect(document.scripts.length).toBe(1);
149 | expect(document.scripts.item(0)).toBeDefined();
150 | expect(document.scripts.item(0)?.nonce).toBe('');
151 | });
152 | });
153 |
154 | test('should expose enable and enabled function', () => {
155 | appendAppDivToBody();
156 | const { app } = createAppWithComponent();
157 | app.use(createGtm({ id: 'GTM-DEMO', enabled: false })).mount('#app');
158 |
159 | const gtmPlugin: VueGtmPlugin = app.config.globalProperties.$gtm;
160 |
161 | expect(gtmPlugin.enable).toBeInstanceOf(Function);
162 | expect(gtmPlugin.enabled).toBeInstanceOf(Function);
163 |
164 | expect(gtmPlugin.enabled()).toBeFalsy();
165 |
166 | gtmPlugin.enable(true);
167 | expect(gtmPlugin.enabled()).toBeTruthy();
168 |
169 | gtmPlugin.enable(false);
170 | expect(gtmPlugin.enabled()).toBeFalsy();
171 |
172 | gtmPlugin.enable(true);
173 | expect(gtmPlugin.enabled()).toBeTruthy();
174 | });
175 |
176 | test('should expose debug functions', () => {
177 | appendAppDivToBody();
178 | const { app } = createAppWithComponent();
179 | app.use(createGtm({ id: 'GTM-DEMO' })).mount('#app');
180 |
181 | const gtmPlugin: VueGtmPlugin = app.config.globalProperties.$gtm;
182 |
183 | expect(gtmPlugin.debug).toBeInstanceOf(Function);
184 | expect(gtmPlugin.debugEnabled).toBeInstanceOf(Function);
185 |
186 | expect(gtmPlugin.debugEnabled()).toBeFalsy();
187 |
188 | gtmPlugin.debug(true);
189 | expect(gtmPlugin.debugEnabled()).toBeTruthy();
190 |
191 | gtmPlugin.debug(false);
192 | expect(gtmPlugin.debugEnabled()).toBeFalsy();
193 | });
194 |
195 | test('should expose dataLayer function', () => {
196 | appendAppDivToBody();
197 | const { app } = createAppWithComponent();
198 | app.use(createGtm({ id: 'GTM-DEMO' })).mount('#app');
199 |
200 | const gtmPlugin: VueGtmPlugin = app.config.globalProperties.$gtm;
201 |
202 | expect(gtmPlugin.dataLayer).toBeInstanceOf(Function);
203 | expect(gtmPlugin.dataLayer()).toEqual(window['dataLayer']);
204 |
205 | gtmPlugin.enable(false);
206 | expect(gtmPlugin.dataLayer()).toBeFalsy();
207 |
208 | gtmPlugin.enable(true);
209 | expect(gtmPlugin.dataLayer()).toEqual(window['dataLayer']);
210 | });
211 |
212 | test('should allow dataLayer to be called with no event, without Typescript error', () => {
213 | appendAppDivToBody();
214 | const { app } = createAppWithComponent();
215 | app.use(createGtm({ id: 'GTM-DEMO' })).mount('#app');
216 |
217 | const gtmPlugin: VueGtmPlugin = app.config.globalProperties.$gtm;
218 |
219 | const dataLayer: DataLayerObject[] | false = gtmPlugin.dataLayer();
220 | if (dataLayer) {
221 | dataLayer.push({ 'user-id': 'user-123' });
222 | }
223 |
224 | expect(window['dataLayer']).toEqual(
225 | expect.arrayContaining([
226 | expect.objectContaining({
227 | 'user-id': 'user-123',
228 | }),
229 | ]),
230 | );
231 | });
232 |
233 | test('should expose trackView function', () => {
234 | appendAppDivToBody();
235 | const { app } = createAppWithComponent();
236 | app.use(createGtm({ id: 'GTM-DEMO' })).mount('#app');
237 |
238 | const gtmPlugin: VueGtmPlugin = app.config.globalProperties.$gtm;
239 |
240 | expect(gtmPlugin.trackView).toBeInstanceOf(Function);
241 |
242 | gtmPlugin.trackView('ScreenName', 'Path');
243 |
244 | expect(window['dataLayer']).toEqual(
245 | expect.arrayContaining([
246 | expect.objectContaining({
247 | event: 'gtm.js',
248 | 'gtm.start': expect.any(Number),
249 | }),
250 | expect.objectContaining({
251 | 'content-name': 'Path',
252 | 'content-view-name': 'ScreenName',
253 | event: 'content-view',
254 | }),
255 | ]),
256 | );
257 | });
258 |
259 | test('should expose trackEvent function', () => {
260 | appendAppDivToBody();
261 | const { app } = createAppWithComponent();
262 | app.use(createGtm({ id: 'GTM-DEMO' })).mount('#app');
263 |
264 | const gtmPlugin: VueGtmPlugin = app.config.globalProperties.$gtm;
265 |
266 | expect(gtmPlugin.trackEvent).toBeInstanceOf(Function);
267 |
268 | gtmPlugin.trackEvent();
269 |
270 | expect(window['dataLayer']).toEqual(
271 | expect.arrayContaining([
272 | expect.objectContaining({
273 | event: 'gtm.js',
274 | 'gtm.start': expect.any(Number),
275 | }),
276 | expect.objectContaining({
277 | action: null,
278 | event: 'interaction',
279 | 'interaction-type': false,
280 | target: null,
281 | 'target-properties': null,
282 | value: null,
283 | }),
284 | ]),
285 | );
286 | });
287 |
288 | describe('router', () => {
289 | test('should add additional event after navigation', async () => {
290 | appendAppDivToBody();
291 | const { app, router } = createAppWithRouter([
292 | {
293 | name: 'Home',
294 | path: '/',
295 | component: {
296 | template: 'Home
',
297 | },
298 | meta: {
299 | gtmAdditionalEventData: {
300 | someProperty: 'home-value',
301 | },
302 | },
303 | },
304 | {
305 | name: 'About',
306 | path: '/about',
307 | component: {
308 | template: 'About
',
309 | },
310 | meta: {
311 | gtmAdditionalEventData: {
312 | someProperty: 'about-value',
313 | },
314 | },
315 | },
316 | ]);
317 | app
318 | .use(
319 | createGtm({
320 | id: 'GTM-DEMO',
321 | vueRouter: router,
322 | }),
323 | )
324 | .mount('#app');
325 | await router.push('/about');
326 | expect(window['dataLayer']).toEqual(
327 | expect.arrayContaining([
328 | expect.objectContaining({
329 | event: 'gtm.js',
330 | 'gtm.start': expect.any(Number),
331 | }),
332 | expect.objectContaining({
333 | 'content-name': '/',
334 | 'content-view-name': 'Home',
335 | event: 'content-view',
336 | someProperty: 'home-value',
337 | }),
338 | expect.objectContaining({
339 | 'content-name': '/about',
340 | 'content-view-name': 'About',
341 | event: 'content-view',
342 | someProperty: 'about-value',
343 | }),
344 | ]),
345 | );
346 | });
347 |
348 | test('should derive additional event data after navigation', async () => {
349 | appendAppDivToBody();
350 | const { app, router } = createAppWithRouter([
351 | {
352 | name: 'Home',
353 | path: '/',
354 | component: {
355 | template: 'Home
',
356 | },
357 | },
358 | {
359 | name: 'About',
360 | path: '/about',
361 | component: {
362 | template: 'About
',
363 | },
364 | },
365 | ]);
366 | app
367 | .use(
368 | createGtm({
369 | id: 'GTM-DEMO',
370 | vueRouter: router,
371 | vueRouterAdditionalEventData: () => ({
372 | someProperty: 'some-value',
373 | }),
374 | }),
375 | )
376 | .mount('#app');
377 | await router.push('/about');
378 | expect(window['dataLayer']).toEqual(
379 | expect.arrayContaining([
380 | expect.objectContaining({
381 | event: 'gtm.js',
382 | 'gtm.start': expect.any(Number),
383 | }),
384 | expect.objectContaining({
385 | 'content-name': '/',
386 | 'content-view-name': 'Home',
387 | event: 'content-view',
388 | someProperty: 'some-value',
389 | }),
390 | expect.objectContaining({
391 | 'content-name': '/about',
392 | 'content-view-name': 'About',
393 | event: 'content-view',
394 | someProperty: 'some-value',
395 | }),
396 | ]),
397 | );
398 | });
399 |
400 | test('should asynchronously derive additional event data after navigation', async () => {
401 | appendAppDivToBody();
402 | const { app, router } = createAppWithRouter([
403 | {
404 | name: 'Home',
405 | path: '/',
406 | component: {
407 | template: 'Home
',
408 | },
409 | },
410 | {
411 | name: 'About',
412 | path: '/about',
413 | component: {
414 | template: 'About
',
415 | },
416 | },
417 | ]);
418 | app
419 | .use(
420 | createGtm({
421 | id: 'GTM-DEMO',
422 | vueRouter: router,
423 | vueRouterAdditionalEventData: () =>
424 | Promise.resolve({
425 | someProperty: 'some-async-value',
426 | }),
427 | }),
428 | )
429 | .mount('#app');
430 | await router.push('/about');
431 | // flush pending promises
432 | await new Promise((resolve) => setTimeout(resolve, 0));
433 | expect(window['dataLayer']).toEqual(
434 | expect.arrayContaining([
435 | expect.objectContaining({
436 | event: 'gtm.js',
437 | 'gtm.start': expect.any(Number),
438 | }),
439 | expect.objectContaining({
440 | 'content-name': '/',
441 | 'content-view-name': 'Home',
442 | event: 'content-view',
443 | someProperty: 'some-async-value',
444 | }),
445 | expect.objectContaining({
446 | 'content-name': '/about',
447 | 'content-view-name': 'About',
448 | event: 'content-view',
449 | someProperty: 'some-async-value',
450 | }),
451 | ]),
452 | );
453 | });
454 |
455 | test('should override derived additional event data with route level event data', async () => {
456 | appendAppDivToBody();
457 | const { app, router } = createAppWithRouter([
458 | {
459 | name: 'Home',
460 | path: '/',
461 | component: {
462 | template: 'Home
',
463 | },
464 | meta: {
465 | gtmAdditionalEventData: {
466 | someProperty: 'home-value',
467 | },
468 | },
469 | },
470 | {
471 | name: 'About',
472 | path: '/about',
473 | component: {
474 | template: 'About
',
475 | },
476 | meta: {
477 | gtmAdditionalEventData: {
478 | someProperty: 'about-value',
479 | },
480 | },
481 | },
482 | ]);
483 | app
484 | .use(
485 | createGtm({
486 | id: 'GTM-DEMO',
487 | vueRouter: router,
488 | vueRouterAdditionalEventData: () => ({
489 | someProperty: 'some-value',
490 | }),
491 | }),
492 | )
493 | .mount('#app');
494 | await router.push('/about');
495 | expect(window['dataLayer']).toEqual(
496 | expect.arrayContaining([
497 | expect.objectContaining({
498 | event: 'gtm.js',
499 | 'gtm.start': expect.any(Number),
500 | }),
501 | expect.objectContaining({
502 | 'content-name': '/',
503 | 'content-view-name': 'Home',
504 | event: 'content-view',
505 | someProperty: 'home-value',
506 | }),
507 | expect.objectContaining({
508 | 'content-name': '/about',
509 | 'content-view-name': 'About',
510 | event: 'content-view',
511 | someProperty: 'about-value',
512 | }),
513 | ]),
514 | );
515 | });
516 | });
517 | });
518 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2022",
4 | "module": "ESNext",
5 | "moduleResolution": "Node",
6 | "strict": true,
7 | "noEmit": true,
8 | "esModuleInterop": true,
9 | "declaration": true,
10 | "stripInternal": true,
11 | "noImplicitOverride": true,
12 | "noUncheckedIndexedAccess": true,
13 | "removeComments": true,
14 | "rootDir": ".",
15 | "baseUrl": "./",
16 | "skipLibCheck": true
17 | },
18 | "exclude": ["node_modules", "dist"]
19 | }
20 |
--------------------------------------------------------------------------------
/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'tsup';
2 |
3 | export default defineConfig({
4 | entry: ['src/index.ts'],
5 | outDir: 'dist',
6 | clean: true,
7 | target: ['es2022', 'node20'],
8 | minify: true,
9 | sourcemap: true,
10 | format: 'esm',
11 | dts: true,
12 | });
13 |
--------------------------------------------------------------------------------
/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitest/config';
2 |
3 | export default defineConfig({
4 | test: {
5 | environment: 'jsdom',
6 | },
7 | });
8 |
--------------------------------------------------------------------------------