├── .eslintrc
├── .github
├── lock.yml
├── stale.yml
└── workflows
│ └── main.yml
├── .gitignore
├── .npmignore
├── .prettierrc
├── .release-it.json
├── LICENSE.md
├── README.md
├── package.json
├── pnpm-lock.yaml
├── src
├── bin
│ └── cli.ts
├── config.ts
├── helpers.ts
├── index.ts
└── workbook.ts
├── test
├── fixtures
│ ├── dateField.json
│ ├── dateField.xlsx
│ ├── sheetOptions.json
│ ├── sheetOptions.xlsx
│ ├── test.json
│ ├── test.xlsx
│ ├── withEmptyColumns.json
│ └── withEmptyColumns.xlsx
├── setup.ts
├── specs
│ ├── build.spec.ts
│ ├── import.spec.ts
│ └── parse.spec.ts
└── utils
│ ├── debug.ts
│ └── index.ts
├── tsconfig.json
└── vitest.config.ts
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "extends": ["@mgcrea/node"]
4 | }
5 |
--------------------------------------------------------------------------------
/.github/lock.yml:
--------------------------------------------------------------------------------
1 | # Configuration for Lock Threads - https://github.com/dessant/lock-threads
2 |
3 | # Number of days of inactivity before a closed issue or pull request is locked
4 | daysUntilLock: 90
5 |
6 | # Skip issues and pull requests created before a given timestamp. Timestamp must
7 | # follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable
8 | skipCreatedBefore: false
9 |
10 | # Issues and pull requests with these labels will be ignored. Set to `[]` to disable
11 | exemptLabels: []
12 |
13 | # Label to add before locking, such as `outdated`. Set to `false` to disable
14 | lockLabel: 'outdated'
15 |
16 | # Comment to post before locking. Set to `false` to disable
17 | lockComment: >
18 | This thread has been automatically locked since there has not been
19 | any recent activity after it was closed. Please open a new issue for
20 | related bugs.
21 |
22 | # Assign `resolved` as the reason for locking. Set to `false` to disable
23 | setLockReason: true
24 |
25 | # Limit to only `issues` or `pulls`
26 | only: issues
27 |
28 | # Optionally, specify configuration settings just for `issues` or `pulls`
29 | # issues:
30 | # exemptLabels:
31 | # - help-wanted
32 | # lockLabel: outdated
33 |
34 | # pulls:
35 | # daysUntilLock: 30
36 |
37 | # Repository to extend settings from
38 | # _extends: repo
39 |
40 |
--------------------------------------------------------------------------------
/.github/stale.yml:
--------------------------------------------------------------------------------
1 | # Number of days of inactivity before an issue becomes stale
2 | daysUntilStale: 60
3 | # Number of days of inactivity before a stale issue is closed
4 | daysUntilClose: 7
5 | # Issues with these labels will never be considered stale
6 | exemptLabels:
7 | - pinned
8 | - security
9 | # Label to use when marking an issue as stale
10 | staleLabel: stale
11 | # Comment to post when marking an issue as stale. Set to `false` to disable
12 | markComment: >
13 | This issue has been automatically marked as stale because it has not had
14 | recent activity. It will be closed if no further activity occurs. Thank you
15 | for your contributions.
16 | # Comment to post when closing a stale issue. Set to `false` to disable
17 | closeComment: false
18 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: main
2 |
3 | on:
4 | push:
5 | branches: [master]
6 | pull_request:
7 | branches: [master]
8 | workflow_dispatch:
9 |
10 | jobs:
11 | test:
12 | runs-on: ubuntu-latest
13 | strategy:
14 | matrix:
15 | node: ["lts/-2", "lts/-1", "lts/*"]
16 | name: Test on node@v${{ matrix.node }}
17 | steps:
18 | - name: Checkout 🛎️
19 | uses: actions/checkout@v4
20 | - name: Setup pnpm 🔧
21 | uses: pnpm/action-setup@v3
22 | with:
23 | version: 8
24 | - name: Setup node 🔧
25 | uses: actions/setup-node@v4
26 | with:
27 | node-version: ${{ matrix.node }}
28 | check-latest: true
29 | cache: "pnpm"
30 | - name: Install 🪄
31 | run: pnpm install --frozen-lockfile
32 | - name: Lint 🔍
33 | run: pnpm run lint
34 | - name: Prettier 🔍
35 | run: pnpm run prettycheck
36 | - name: TypeScript 🔍
37 | run: pnpm run typecheck
38 | - name: Vitest 🔍
39 | run: pnpm run spec
40 | build:
41 | runs-on: ubuntu-latest
42 | strategy:
43 | matrix:
44 | node: ["lts/-2", "lts/-1", "lts/*"]
45 | name: Build on node@v${{ matrix.node }}
46 | steps:
47 | - name: Checkout 🛎️
48 | uses: actions/checkout@v4
49 | - name: Setup pnpm 🔧
50 | uses: pnpm/action-setup@v3
51 | with:
52 | version: 8
53 | - name: Setup node 🔧
54 | uses: actions/setup-node@v4
55 | with:
56 | node-version: ${{ matrix.node }}
57 | check-latest: true
58 | cache: "pnpm"
59 | - name: Install 🪄
60 | run: pnpm install --frozen-lockfile
61 | - name: Build 💎
62 | run: pnpm run build
63 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .idea/
3 | dist/
4 | node_modules/
5 | .vscode/
6 | *.tsbuildinfo
7 | ~$*
8 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | *
2 | .*
3 | !package.json
4 | !LICENSE*
5 | !README*
6 | !CHANGELOG*
7 | !lib/**/*.js
8 | !lib/**/*.js.map
9 | !lib/**/*.d.ts
10 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 110,
3 | "plugins": ["prettier-plugin-organize-imports"]
4 | }
5 |
--------------------------------------------------------------------------------
/.release-it.json:
--------------------------------------------------------------------------------
1 | {
2 | "git": {
3 | "commitMessage": "chore(release): cut the v${version} release"
4 | },
5 | "github": {
6 | "release": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012-2021 Olivier Louvignes
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
4 | License. You may obtain a copy of the License at
5 |
6 | http://www.apache.org/licenses/LICENSE-2.0
7 |
8 | Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
9 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10 | language governing permissions and limitations under the License.
11 |
12 | Except where noted, this license applies to any and all software programs and associated documentation files created by
13 | the Original Author and distributed with the Software:
14 |
15 | Inspired by SheetJS gist examples, Copyright (c) SheetJS.
16 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # node-xlsx
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | ## Features
24 |
25 | Straightforward excel file parser and builder.
26 |
27 | - Relies on [SheetJS xlsx](https://github.com/SheetJS/sheetjs) module to parse/build excel sheets.
28 | - Built with [TypeScript](https://www.typescriptlang.org/) for static type checking with exported types along the
29 | library.
30 |
31 | ## Install
32 |
33 | ```bash
34 | npm install node-xlsx --save
35 | # or
36 | pnpm add node-xlsx
37 | ```
38 |
39 | ## Quickstart
40 |
41 | ### Parse an xlsx file
42 |
43 | ```js
44 | import xlsx from 'node-xlsx';
45 | // Or var xlsx = require('node-xlsx').default;
46 |
47 | // Parse a buffer
48 | const workSheetsFromBuffer = xlsx.parse(fs.readFileSync(`${__dirname}/myFile.xlsx`));
49 | // Parse a file
50 | const workSheetsFromFile = xlsx.parse(`${__dirname}/myFile.xlsx`);
51 | ```
52 |
53 | ### Build an xlsx file
54 |
55 | ```js
56 | import xlsx from 'node-xlsx';
57 | // Or var xlsx = require('node-xlsx').default;
58 |
59 | const data = [
60 | [1, 2, 3],
61 | [true, false, null, 'sheetjs'],
62 | ['foo', 'bar', new Date('2014-02-19T14:30Z'), '0.3'],
63 | ['baz', null, 'qux'],
64 | ];
65 | var buffer = xlsx.build([{name: 'mySheetName', data: data}]); // Returns a buffer
66 | ```
67 |
68 | ### Custom column width
69 |
70 | ```js
71 | import xlsx from 'node-xlsx';
72 | // Or var xlsx = require('node-xlsx').default;
73 |
74 | const data = [
75 | [1, 2, 3],
76 | [true, false, null, 'sheetjs'],
77 | ['foo', 'bar', new Date('2014-02-19T14:30Z'), '0.3'],
78 | ['baz', null, 'qux'],
79 | ];
80 | const sheetOptions = {'!cols': [{wch: 6}, {wch: 7}, {wch: 10}, {wch: 20}]};
81 |
82 | var buffer = xlsx.build([{name: 'mySheetName', data: data}], {sheetOptions}); // Returns a buffer
83 | ```
84 |
85 | ### Spanning multiple rows `A1:A4` in every sheets
86 |
87 | ```js
88 | import xlsx from 'node-xlsx';
89 | // Or var xlsx = require('node-xlsx').default;
90 |
91 | const data = [
92 | [1, 2, 3],
93 | [true, false, null, 'sheetjs'],
94 | ['foo', 'bar', new Date('2014-02-19T14:30Z'), '0.3'],
95 | ['baz', null, 'qux'],
96 | ];
97 | const range = {s: {c: 0, r: 0}, e: {c: 0, r: 3}}; // A1:A4
98 | const sheetOptions = {'!merges': [range]};
99 |
100 | var buffer = xlsx.build([{name: 'mySheetName', data: data}], {sheetOptions}); // Returns a buffer
101 | ```
102 |
103 | ### Spanning multiple rows `A1:A4` in second sheet
104 |
105 | ```js
106 | import xlsx from 'node-xlsx';
107 | // Or var xlsx = require('node-xlsx').default;
108 |
109 | const dataSheet1 = [
110 | [1, 2, 3],
111 | [true, false, null, 'sheetjs'],
112 | ['foo', 'bar', new Date('2014-02-19T14:30Z'), '0.3'],
113 | ['baz', null, 'qux'],
114 | ];
115 | const dataSheet2 = [
116 | [4, 5, 6],
117 | [7, 8, 9, 10],
118 | [11, 12, 13, 14],
119 | ['baz', null, 'qux'],
120 | ];
121 | const range = {s: {c: 0, r: 0}, e: {c: 0, r: 3}}; // A1:A4
122 | const sheetOptions = {'!merges': [range]};
123 |
124 | var buffer = xlsx.build([
125 | {name: 'myFirstSheet', data: dataSheet1},
126 | {name: 'mySecondSheet', data: dataSheet2, options: sheetOptions},
127 | ]); // Returns a buffer
128 | ```
129 |
130 | _Beware that if you try to merge several times the same cell, your xlsx file will be seen as corrupted._
131 |
132 | - Using Primitive Object Notation Data values can also be specified in a non-abstracted representation.
133 |
134 | Examples:
135 |
136 | ```js
137 | const rowAverage = [[{t: 'n', z: 10, f: '=AVERAGE(2:2)'}], [1, 2, 3]];
138 | var buffer = xlsx.build([{name: 'Average Formula', data: rowAverage}]);
139 | ```
140 |
141 | Refer to [xlsx](https://sheetjs.gitbooks.io) documentation for valid structure and values:
142 |
143 | - [cell object]: (https://sheetjs.gitbooks.io/docs/#cell-object)
144 | - [data types]: (https://sheetjs.gitbooks.io/docs/#data-types)
145 | - [Format](https://sheetjs.gitbooks.io/docs/#number-formats)
146 |
147 | ### Troubleshooting
148 |
149 | This library requires at least node.js v10. For legacy versions, you can use this workaround before using the lib.
150 |
151 | ```sh
152 | npm i --save object-assign
153 | ```
154 |
155 | ```js
156 | Object.prototype.assign = require('object-assign');
157 | ```
158 |
159 | ### Contributing
160 |
161 | Please submit all pull requests the against master branch. If your unit test contains javascript patches or features,
162 | you should include relevant unit tests. Thanks!
163 |
164 | ### Available scripts
165 |
166 | | **Script** | **Description** |
167 | | ------------- | ------------------------------ |
168 | | start | Alias of test:watch |
169 | | test | Run mocha unit tests |
170 | | test:watch | Run and watch mocha unit tests |
171 | | lint | Run eslint static tests |
172 | | compile | Compile the library |
173 | | compile:watch | Compile and watch the library |
174 |
175 | ## Authors
176 |
177 | **Olivier Louvignes**
178 |
179 | - http://olouv.com
180 | - http://github.com/mgcrea
181 |
182 | ## Copyright and license
183 |
184 | [Apache License 2.0](https://spdx.org/licenses/Apache-2.0.html)
185 |
186 | ```
187 | Copyright (C) 2012-2014 Olivier Louvignes
188 |
189 | Licensed under the Apache License, Version 2.0 (the "License");
190 | you may not use this file except in compliance with the License.
191 | You may obtain a copy of the License at
192 |
193 | http://www.apache.org/licenses/LICENSE-2.0
194 |
195 | Unless required by applicable law or agreed to in writing, software
196 | distributed under the License is distributed on an "AS IS" BASIS,
197 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
198 | See the License for the specific language governing permissions and
199 | limitations under the License.
200 |
201 | Except where noted, this license applies to any and all software programs and associated documentation files created by the Original Author and distributed with the Software:
202 |
203 | Inspired by SheetJS gist examples, Copyright (c) SheetJS.
204 | ```
205 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "node-xlsx",
3 | "author": "Olivier Louvignes ",
4 | "version": "0.24.0",
5 | "description": "NodeJS Excel files parser & builder",
6 | "type": "module",
7 | "main": "./dist/index.cjs",
8 | "exports": {
9 | ".": {
10 | "require": "./dist/index.cjs",
11 | "import": "./dist/index.js",
12 | "types": "./dist/index.d.ts"
13 | }
14 | },
15 | "bin": {
16 | "node-xlsx": "./dist/bin/cli.js"
17 | },
18 | "files": [
19 | "dist"
20 | ],
21 | "scripts": {
22 | "start": "npm run spec -- --watch",
23 | "build": "tsup --entry src/index.ts --format cjs,esm --sourcemap --dts --clean --entry src/bin/cli.ts",
24 | "lint": "eslint src/ test/",
25 | "prettycheck": "prettier --check src/ test/",
26 | "prettify": "prettier --write src/ test/",
27 | "typecheck": "tsc --noEmit",
28 | "spec": "DEBUG=node-xlsx* vitest --run",
29 | "watch": "DEBUG=node-xlsx* vitest --watch",
30 | "test": "npm run lint && npm run prettycheck && npm run typecheck && npm run spec",
31 | "prepublishOnly": "npm run build"
32 | },
33 | "repository": "github:mgcrea/node-xlsx",
34 | "license": "Apache-2.0",
35 | "dependencies": {
36 | "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"
37 | },
38 | "devDependencies": {
39 | "@mgcrea/eslint-config-node": "^0.10.0",
40 | "@tsconfig/node-lts": "^20.1.1",
41 | "@types/node": "^20.12.7",
42 | "eslint": "^8.57.0",
43 | "prettier": "^3.2.5",
44 | "prettier-plugin-organize-imports": "^3.2.4",
45 | "tsup": "^8.0.2",
46 | "typescript": "^5.4.5",
47 | "vite-tsconfig-paths": "^4.3.2",
48 | "vitest": "^1.5.0"
49 | },
50 | "engines": {
51 | "node": ">=10.0.0"
52 | },
53 | "keywords": [
54 | "excel",
55 | "parser",
56 | "builder",
57 | "xlsx",
58 | "xls"
59 | ]
60 | }
61 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | xlsx:
9 | specifier: https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz
10 | version: '@cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz'
11 |
12 | devDependencies:
13 | '@mgcrea/eslint-config-node':
14 | specifier: ^0.10.0
15 | version: 0.10.1(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.5)(vitest@1.5.0)
16 | '@tsconfig/node-lts':
17 | specifier: ^20.1.1
18 | version: 20.1.3
19 | '@types/node':
20 | specifier: ^20.12.7
21 | version: 20.12.7
22 | eslint:
23 | specifier: ^8.57.0
24 | version: 8.57.0
25 | prettier:
26 | specifier: ^3.2.5
27 | version: 3.2.5
28 | prettier-plugin-organize-imports:
29 | specifier: ^3.2.4
30 | version: 3.2.4(prettier@3.2.5)(typescript@5.4.5)
31 | tsup:
32 | specifier: ^8.0.2
33 | version: 8.0.2(typescript@5.4.5)
34 | typescript:
35 | specifier: ^5.4.5
36 | version: 5.4.5
37 | vite-tsconfig-paths:
38 | specifier: ^4.3.2
39 | version: 4.3.2(typescript@5.4.5)
40 | vitest:
41 | specifier: ^1.5.0
42 | version: 1.5.0(@types/node@20.12.7)
43 |
44 | packages:
45 |
46 | /@aashutoshrathi/word-wrap@1.2.6:
47 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
48 | engines: {node: '>=0.10.0'}
49 | dev: true
50 |
51 | /@esbuild/aix-ppc64@0.19.12:
52 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
53 | engines: {node: '>=12'}
54 | cpu: [ppc64]
55 | os: [aix]
56 | requiresBuild: true
57 | dev: true
58 | optional: true
59 |
60 | /@esbuild/aix-ppc64@0.20.2:
61 | resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
62 | engines: {node: '>=12'}
63 | cpu: [ppc64]
64 | os: [aix]
65 | requiresBuild: true
66 | dev: true
67 | optional: true
68 |
69 | /@esbuild/android-arm64@0.19.12:
70 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
71 | engines: {node: '>=12'}
72 | cpu: [arm64]
73 | os: [android]
74 | requiresBuild: true
75 | dev: true
76 | optional: true
77 |
78 | /@esbuild/android-arm64@0.20.2:
79 | resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
80 | engines: {node: '>=12'}
81 | cpu: [arm64]
82 | os: [android]
83 | requiresBuild: true
84 | dev: true
85 | optional: true
86 |
87 | /@esbuild/android-arm@0.19.12:
88 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
89 | engines: {node: '>=12'}
90 | cpu: [arm]
91 | os: [android]
92 | requiresBuild: true
93 | dev: true
94 | optional: true
95 |
96 | /@esbuild/android-arm@0.20.2:
97 | resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
98 | engines: {node: '>=12'}
99 | cpu: [arm]
100 | os: [android]
101 | requiresBuild: true
102 | dev: true
103 | optional: true
104 |
105 | /@esbuild/android-x64@0.19.12:
106 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
107 | engines: {node: '>=12'}
108 | cpu: [x64]
109 | os: [android]
110 | requiresBuild: true
111 | dev: true
112 | optional: true
113 |
114 | /@esbuild/android-x64@0.20.2:
115 | resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
116 | engines: {node: '>=12'}
117 | cpu: [x64]
118 | os: [android]
119 | requiresBuild: true
120 | dev: true
121 | optional: true
122 |
123 | /@esbuild/darwin-arm64@0.19.12:
124 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
125 | engines: {node: '>=12'}
126 | cpu: [arm64]
127 | os: [darwin]
128 | requiresBuild: true
129 | dev: true
130 | optional: true
131 |
132 | /@esbuild/darwin-arm64@0.20.2:
133 | resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
134 | engines: {node: '>=12'}
135 | cpu: [arm64]
136 | os: [darwin]
137 | requiresBuild: true
138 | dev: true
139 | optional: true
140 |
141 | /@esbuild/darwin-x64@0.19.12:
142 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
143 | engines: {node: '>=12'}
144 | cpu: [x64]
145 | os: [darwin]
146 | requiresBuild: true
147 | dev: true
148 | optional: true
149 |
150 | /@esbuild/darwin-x64@0.20.2:
151 | resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
152 | engines: {node: '>=12'}
153 | cpu: [x64]
154 | os: [darwin]
155 | requiresBuild: true
156 | dev: true
157 | optional: true
158 |
159 | /@esbuild/freebsd-arm64@0.19.12:
160 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
161 | engines: {node: '>=12'}
162 | cpu: [arm64]
163 | os: [freebsd]
164 | requiresBuild: true
165 | dev: true
166 | optional: true
167 |
168 | /@esbuild/freebsd-arm64@0.20.2:
169 | resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
170 | engines: {node: '>=12'}
171 | cpu: [arm64]
172 | os: [freebsd]
173 | requiresBuild: true
174 | dev: true
175 | optional: true
176 |
177 | /@esbuild/freebsd-x64@0.19.12:
178 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
179 | engines: {node: '>=12'}
180 | cpu: [x64]
181 | os: [freebsd]
182 | requiresBuild: true
183 | dev: true
184 | optional: true
185 |
186 | /@esbuild/freebsd-x64@0.20.2:
187 | resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
188 | engines: {node: '>=12'}
189 | cpu: [x64]
190 | os: [freebsd]
191 | requiresBuild: true
192 | dev: true
193 | optional: true
194 |
195 | /@esbuild/linux-arm64@0.19.12:
196 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
197 | engines: {node: '>=12'}
198 | cpu: [arm64]
199 | os: [linux]
200 | requiresBuild: true
201 | dev: true
202 | optional: true
203 |
204 | /@esbuild/linux-arm64@0.20.2:
205 | resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
206 | engines: {node: '>=12'}
207 | cpu: [arm64]
208 | os: [linux]
209 | requiresBuild: true
210 | dev: true
211 | optional: true
212 |
213 | /@esbuild/linux-arm@0.19.12:
214 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
215 | engines: {node: '>=12'}
216 | cpu: [arm]
217 | os: [linux]
218 | requiresBuild: true
219 | dev: true
220 | optional: true
221 |
222 | /@esbuild/linux-arm@0.20.2:
223 | resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
224 | engines: {node: '>=12'}
225 | cpu: [arm]
226 | os: [linux]
227 | requiresBuild: true
228 | dev: true
229 | optional: true
230 |
231 | /@esbuild/linux-ia32@0.19.12:
232 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
233 | engines: {node: '>=12'}
234 | cpu: [ia32]
235 | os: [linux]
236 | requiresBuild: true
237 | dev: true
238 | optional: true
239 |
240 | /@esbuild/linux-ia32@0.20.2:
241 | resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
242 | engines: {node: '>=12'}
243 | cpu: [ia32]
244 | os: [linux]
245 | requiresBuild: true
246 | dev: true
247 | optional: true
248 |
249 | /@esbuild/linux-loong64@0.19.12:
250 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
251 | engines: {node: '>=12'}
252 | cpu: [loong64]
253 | os: [linux]
254 | requiresBuild: true
255 | dev: true
256 | optional: true
257 |
258 | /@esbuild/linux-loong64@0.20.2:
259 | resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
260 | engines: {node: '>=12'}
261 | cpu: [loong64]
262 | os: [linux]
263 | requiresBuild: true
264 | dev: true
265 | optional: true
266 |
267 | /@esbuild/linux-mips64el@0.19.12:
268 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
269 | engines: {node: '>=12'}
270 | cpu: [mips64el]
271 | os: [linux]
272 | requiresBuild: true
273 | dev: true
274 | optional: true
275 |
276 | /@esbuild/linux-mips64el@0.20.2:
277 | resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
278 | engines: {node: '>=12'}
279 | cpu: [mips64el]
280 | os: [linux]
281 | requiresBuild: true
282 | dev: true
283 | optional: true
284 |
285 | /@esbuild/linux-ppc64@0.19.12:
286 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
287 | engines: {node: '>=12'}
288 | cpu: [ppc64]
289 | os: [linux]
290 | requiresBuild: true
291 | dev: true
292 | optional: true
293 |
294 | /@esbuild/linux-ppc64@0.20.2:
295 | resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
296 | engines: {node: '>=12'}
297 | cpu: [ppc64]
298 | os: [linux]
299 | requiresBuild: true
300 | dev: true
301 | optional: true
302 |
303 | /@esbuild/linux-riscv64@0.19.12:
304 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
305 | engines: {node: '>=12'}
306 | cpu: [riscv64]
307 | os: [linux]
308 | requiresBuild: true
309 | dev: true
310 | optional: true
311 |
312 | /@esbuild/linux-riscv64@0.20.2:
313 | resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
314 | engines: {node: '>=12'}
315 | cpu: [riscv64]
316 | os: [linux]
317 | requiresBuild: true
318 | dev: true
319 | optional: true
320 |
321 | /@esbuild/linux-s390x@0.19.12:
322 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
323 | engines: {node: '>=12'}
324 | cpu: [s390x]
325 | os: [linux]
326 | requiresBuild: true
327 | dev: true
328 | optional: true
329 |
330 | /@esbuild/linux-s390x@0.20.2:
331 | resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
332 | engines: {node: '>=12'}
333 | cpu: [s390x]
334 | os: [linux]
335 | requiresBuild: true
336 | dev: true
337 | optional: true
338 |
339 | /@esbuild/linux-x64@0.19.12:
340 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
341 | engines: {node: '>=12'}
342 | cpu: [x64]
343 | os: [linux]
344 | requiresBuild: true
345 | dev: true
346 | optional: true
347 |
348 | /@esbuild/linux-x64@0.20.2:
349 | resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
350 | engines: {node: '>=12'}
351 | cpu: [x64]
352 | os: [linux]
353 | requiresBuild: true
354 | dev: true
355 | optional: true
356 |
357 | /@esbuild/netbsd-x64@0.19.12:
358 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
359 | engines: {node: '>=12'}
360 | cpu: [x64]
361 | os: [netbsd]
362 | requiresBuild: true
363 | dev: true
364 | optional: true
365 |
366 | /@esbuild/netbsd-x64@0.20.2:
367 | resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
368 | engines: {node: '>=12'}
369 | cpu: [x64]
370 | os: [netbsd]
371 | requiresBuild: true
372 | dev: true
373 | optional: true
374 |
375 | /@esbuild/openbsd-x64@0.19.12:
376 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
377 | engines: {node: '>=12'}
378 | cpu: [x64]
379 | os: [openbsd]
380 | requiresBuild: true
381 | dev: true
382 | optional: true
383 |
384 | /@esbuild/openbsd-x64@0.20.2:
385 | resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
386 | engines: {node: '>=12'}
387 | cpu: [x64]
388 | os: [openbsd]
389 | requiresBuild: true
390 | dev: true
391 | optional: true
392 |
393 | /@esbuild/sunos-x64@0.19.12:
394 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
395 | engines: {node: '>=12'}
396 | cpu: [x64]
397 | os: [sunos]
398 | requiresBuild: true
399 | dev: true
400 | optional: true
401 |
402 | /@esbuild/sunos-x64@0.20.2:
403 | resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
404 | engines: {node: '>=12'}
405 | cpu: [x64]
406 | os: [sunos]
407 | requiresBuild: true
408 | dev: true
409 | optional: true
410 |
411 | /@esbuild/win32-arm64@0.19.12:
412 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
413 | engines: {node: '>=12'}
414 | cpu: [arm64]
415 | os: [win32]
416 | requiresBuild: true
417 | dev: true
418 | optional: true
419 |
420 | /@esbuild/win32-arm64@0.20.2:
421 | resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
422 | engines: {node: '>=12'}
423 | cpu: [arm64]
424 | os: [win32]
425 | requiresBuild: true
426 | dev: true
427 | optional: true
428 |
429 | /@esbuild/win32-ia32@0.19.12:
430 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
431 | engines: {node: '>=12'}
432 | cpu: [ia32]
433 | os: [win32]
434 | requiresBuild: true
435 | dev: true
436 | optional: true
437 |
438 | /@esbuild/win32-ia32@0.20.2:
439 | resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
440 | engines: {node: '>=12'}
441 | cpu: [ia32]
442 | os: [win32]
443 | requiresBuild: true
444 | dev: true
445 | optional: true
446 |
447 | /@esbuild/win32-x64@0.19.12:
448 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
449 | engines: {node: '>=12'}
450 | cpu: [x64]
451 | os: [win32]
452 | requiresBuild: true
453 | dev: true
454 | optional: true
455 |
456 | /@esbuild/win32-x64@0.20.2:
457 | resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
458 | engines: {node: '>=12'}
459 | cpu: [x64]
460 | os: [win32]
461 | requiresBuild: true
462 | dev: true
463 | optional: true
464 |
465 | /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0):
466 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
467 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
468 | peerDependencies:
469 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
470 | dependencies:
471 | eslint: 8.57.0
472 | eslint-visitor-keys: 3.4.3
473 | dev: true
474 |
475 | /@eslint-community/regexpp@4.10.0:
476 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
477 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
478 | dev: true
479 |
480 | /@eslint/eslintrc@2.1.4:
481 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
482 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
483 | dependencies:
484 | ajv: 6.12.6
485 | debug: 4.3.4
486 | espree: 9.6.1
487 | globals: 13.20.0
488 | ignore: 5.2.4
489 | import-fresh: 3.3.0
490 | js-yaml: 4.1.0
491 | minimatch: 3.1.2
492 | strip-json-comments: 3.1.1
493 | transitivePeerDependencies:
494 | - supports-color
495 | dev: true
496 |
497 | /@eslint/js@8.57.0:
498 | resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
499 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
500 | dev: true
501 |
502 | /@humanwhocodes/config-array@0.11.14:
503 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
504 | engines: {node: '>=10.10.0'}
505 | dependencies:
506 | '@humanwhocodes/object-schema': 2.0.3
507 | debug: 4.3.4
508 | minimatch: 3.1.2
509 | transitivePeerDependencies:
510 | - supports-color
511 | dev: true
512 |
513 | /@humanwhocodes/module-importer@1.0.1:
514 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
515 | engines: {node: '>=12.22'}
516 | dev: true
517 |
518 | /@humanwhocodes/object-schema@2.0.3:
519 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
520 | dev: true
521 |
522 | /@isaacs/cliui@8.0.2:
523 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
524 | engines: {node: '>=12'}
525 | dependencies:
526 | string-width: 5.1.2
527 | string-width-cjs: /string-width@4.2.3
528 | strip-ansi: 7.0.1
529 | strip-ansi-cjs: /strip-ansi@6.0.1
530 | wrap-ansi: 8.1.0
531 | wrap-ansi-cjs: /wrap-ansi@7.0.0
532 | dev: true
533 |
534 | /@jest/schemas@29.6.3:
535 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
536 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
537 | dependencies:
538 | '@sinclair/typebox': 0.27.8
539 | dev: true
540 |
541 | /@jridgewell/gen-mapping@0.3.5:
542 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
543 | engines: {node: '>=6.0.0'}
544 | dependencies:
545 | '@jridgewell/set-array': 1.2.1
546 | '@jridgewell/sourcemap-codec': 1.4.15
547 | '@jridgewell/trace-mapping': 0.3.25
548 | dev: true
549 |
550 | /@jridgewell/resolve-uri@3.1.1:
551 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
552 | engines: {node: '>=6.0.0'}
553 | dev: true
554 |
555 | /@jridgewell/set-array@1.2.1:
556 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
557 | engines: {node: '>=6.0.0'}
558 | dev: true
559 |
560 | /@jridgewell/sourcemap-codec@1.4.15:
561 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
562 | dev: true
563 |
564 | /@jridgewell/trace-mapping@0.3.25:
565 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
566 | dependencies:
567 | '@jridgewell/resolve-uri': 3.1.1
568 | '@jridgewell/sourcemap-codec': 1.4.15
569 | dev: true
570 |
571 | /@mgcrea/eslint-config-node@0.10.1(eslint@8.57.0)(prettier@3.2.5)(typescript@5.4.5)(vitest@1.5.0):
572 | resolution: {integrity: sha512-P+axbHlF5GYXb7wJkuCpKT6/ZOihxGSXFzhzqjZAeU16Z2ArT4xxVdOw9LEb6qafBWcN+GNYoU3mVmIJ9LEJSA==}
573 | dependencies:
574 | '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5)
575 | '@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
576 | eslint-config-prettier: 9.1.0(eslint@8.57.0)
577 | eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5)
578 | eslint-plugin-testing-library: 6.2.1(eslint@8.57.0)(typescript@5.4.5)
579 | eslint-plugin-vitest: 0.4.1(@typescript-eslint/eslint-plugin@7.6.0)(eslint@8.57.0)(typescript@5.4.5)(vitest@1.5.0)
580 | transitivePeerDependencies:
581 | - '@types/eslint'
582 | - eslint
583 | - prettier
584 | - supports-color
585 | - typescript
586 | - vitest
587 | dev: true
588 |
589 | /@nodelib/fs.scandir@2.1.5:
590 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
591 | engines: {node: '>= 8'}
592 | dependencies:
593 | '@nodelib/fs.stat': 2.0.5
594 | run-parallel: 1.2.0
595 | dev: true
596 |
597 | /@nodelib/fs.stat@2.0.5:
598 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
599 | engines: {node: '>= 8'}
600 | dev: true
601 |
602 | /@nodelib/fs.walk@1.2.8:
603 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
604 | engines: {node: '>= 8'}
605 | dependencies:
606 | '@nodelib/fs.scandir': 2.1.5
607 | fastq: 1.15.0
608 | dev: true
609 |
610 | /@pkgjs/parseargs@0.11.0:
611 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
612 | engines: {node: '>=14'}
613 | requiresBuild: true
614 | dev: true
615 | optional: true
616 |
617 | /@pkgr/core@0.1.1:
618 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
619 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
620 | dev: true
621 |
622 | /@rollup/rollup-android-arm-eabi@4.14.3:
623 | resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==}
624 | cpu: [arm]
625 | os: [android]
626 | requiresBuild: true
627 | dev: true
628 | optional: true
629 |
630 | /@rollup/rollup-android-arm64@4.14.3:
631 | resolution: {integrity: sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==}
632 | cpu: [arm64]
633 | os: [android]
634 | requiresBuild: true
635 | dev: true
636 | optional: true
637 |
638 | /@rollup/rollup-darwin-arm64@4.14.3:
639 | resolution: {integrity: sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==}
640 | cpu: [arm64]
641 | os: [darwin]
642 | requiresBuild: true
643 | dev: true
644 | optional: true
645 |
646 | /@rollup/rollup-darwin-x64@4.14.3:
647 | resolution: {integrity: sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==}
648 | cpu: [x64]
649 | os: [darwin]
650 | requiresBuild: true
651 | dev: true
652 | optional: true
653 |
654 | /@rollup/rollup-linux-arm-gnueabihf@4.14.3:
655 | resolution: {integrity: sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==}
656 | cpu: [arm]
657 | os: [linux]
658 | requiresBuild: true
659 | dev: true
660 | optional: true
661 |
662 | /@rollup/rollup-linux-arm-musleabihf@4.14.3:
663 | resolution: {integrity: sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==}
664 | cpu: [arm]
665 | os: [linux]
666 | requiresBuild: true
667 | dev: true
668 | optional: true
669 |
670 | /@rollup/rollup-linux-arm64-gnu@4.14.3:
671 | resolution: {integrity: sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==}
672 | cpu: [arm64]
673 | os: [linux]
674 | requiresBuild: true
675 | dev: true
676 | optional: true
677 |
678 | /@rollup/rollup-linux-arm64-musl@4.14.3:
679 | resolution: {integrity: sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==}
680 | cpu: [arm64]
681 | os: [linux]
682 | requiresBuild: true
683 | dev: true
684 | optional: true
685 |
686 | /@rollup/rollup-linux-powerpc64le-gnu@4.14.3:
687 | resolution: {integrity: sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==}
688 | cpu: [ppc64]
689 | os: [linux]
690 | requiresBuild: true
691 | dev: true
692 | optional: true
693 |
694 | /@rollup/rollup-linux-riscv64-gnu@4.14.3:
695 | resolution: {integrity: sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==}
696 | cpu: [riscv64]
697 | os: [linux]
698 | requiresBuild: true
699 | dev: true
700 | optional: true
701 |
702 | /@rollup/rollup-linux-s390x-gnu@4.14.3:
703 | resolution: {integrity: sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==}
704 | cpu: [s390x]
705 | os: [linux]
706 | requiresBuild: true
707 | dev: true
708 | optional: true
709 |
710 | /@rollup/rollup-linux-x64-gnu@4.14.3:
711 | resolution: {integrity: sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==}
712 | cpu: [x64]
713 | os: [linux]
714 | requiresBuild: true
715 | dev: true
716 | optional: true
717 |
718 | /@rollup/rollup-linux-x64-musl@4.14.3:
719 | resolution: {integrity: sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==}
720 | cpu: [x64]
721 | os: [linux]
722 | requiresBuild: true
723 | dev: true
724 | optional: true
725 |
726 | /@rollup/rollup-win32-arm64-msvc@4.14.3:
727 | resolution: {integrity: sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==}
728 | cpu: [arm64]
729 | os: [win32]
730 | requiresBuild: true
731 | dev: true
732 | optional: true
733 |
734 | /@rollup/rollup-win32-ia32-msvc@4.14.3:
735 | resolution: {integrity: sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==}
736 | cpu: [ia32]
737 | os: [win32]
738 | requiresBuild: true
739 | dev: true
740 | optional: true
741 |
742 | /@rollup/rollup-win32-x64-msvc@4.14.3:
743 | resolution: {integrity: sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==}
744 | cpu: [x64]
745 | os: [win32]
746 | requiresBuild: true
747 | dev: true
748 | optional: true
749 |
750 | /@sinclair/typebox@0.27.8:
751 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
752 | dev: true
753 |
754 | /@tsconfig/node-lts@20.1.3:
755 | resolution: {integrity: sha512-m3b7EP2U+h5tNSpaBMfcTuHmHn04wrgRPQQrfKt75YIPq6kPs2153/KfPHdqkEWGx5pEBvS6rnvToT+yTtC1iw==}
756 | dev: true
757 |
758 | /@types/estree@1.0.5:
759 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
760 | dev: true
761 |
762 | /@types/json-schema@7.0.15:
763 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
764 | dev: true
765 |
766 | /@types/node@20.12.7:
767 | resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==}
768 | dependencies:
769 | undici-types: 5.26.5
770 | dev: true
771 |
772 | /@types/semver@7.5.8:
773 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
774 | dev: true
775 |
776 | /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5):
777 | resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==}
778 | engines: {node: ^18.18.0 || >=20.0.0}
779 | peerDependencies:
780 | '@typescript-eslint/parser': ^7.0.0
781 | eslint: ^8.56.0
782 | typescript: '*'
783 | peerDependenciesMeta:
784 | typescript:
785 | optional: true
786 | dependencies:
787 | '@eslint-community/regexpp': 4.10.0
788 | '@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
789 | '@typescript-eslint/scope-manager': 7.6.0
790 | '@typescript-eslint/type-utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
791 | '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
792 | '@typescript-eslint/visitor-keys': 7.6.0
793 | debug: 4.3.4
794 | eslint: 8.57.0
795 | graphemer: 1.4.0
796 | ignore: 5.3.1
797 | natural-compare: 1.4.0
798 | semver: 7.6.0
799 | ts-api-utils: 1.3.0(typescript@5.4.5)
800 | typescript: 5.4.5
801 | transitivePeerDependencies:
802 | - supports-color
803 | dev: true
804 |
805 | /@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5):
806 | resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==}
807 | engines: {node: ^18.18.0 || >=20.0.0}
808 | peerDependencies:
809 | eslint: ^8.56.0
810 | typescript: '*'
811 | peerDependenciesMeta:
812 | typescript:
813 | optional: true
814 | dependencies:
815 | '@typescript-eslint/scope-manager': 7.6.0
816 | '@typescript-eslint/types': 7.6.0
817 | '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5)
818 | '@typescript-eslint/visitor-keys': 7.6.0
819 | debug: 4.3.4
820 | eslint: 8.57.0
821 | typescript: 5.4.5
822 | transitivePeerDependencies:
823 | - supports-color
824 | dev: true
825 |
826 | /@typescript-eslint/scope-manager@5.62.0:
827 | resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
828 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
829 | dependencies:
830 | '@typescript-eslint/types': 5.62.0
831 | '@typescript-eslint/visitor-keys': 5.62.0
832 | dev: true
833 |
834 | /@typescript-eslint/scope-manager@7.6.0:
835 | resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==}
836 | engines: {node: ^18.18.0 || >=20.0.0}
837 | dependencies:
838 | '@typescript-eslint/types': 7.6.0
839 | '@typescript-eslint/visitor-keys': 7.6.0
840 | dev: true
841 |
842 | /@typescript-eslint/type-utils@7.6.0(eslint@8.57.0)(typescript@5.4.5):
843 | resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==}
844 | engines: {node: ^18.18.0 || >=20.0.0}
845 | peerDependencies:
846 | eslint: ^8.56.0
847 | typescript: '*'
848 | peerDependenciesMeta:
849 | typescript:
850 | optional: true
851 | dependencies:
852 | '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5)
853 | '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
854 | debug: 4.3.4
855 | eslint: 8.57.0
856 | ts-api-utils: 1.3.0(typescript@5.4.5)
857 | typescript: 5.4.5
858 | transitivePeerDependencies:
859 | - supports-color
860 | dev: true
861 |
862 | /@typescript-eslint/types@5.62.0:
863 | resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
864 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
865 | dev: true
866 |
867 | /@typescript-eslint/types@7.6.0:
868 | resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==}
869 | engines: {node: ^18.18.0 || >=20.0.0}
870 | dev: true
871 |
872 | /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5):
873 | resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
874 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
875 | peerDependencies:
876 | typescript: '*'
877 | peerDependenciesMeta:
878 | typescript:
879 | optional: true
880 | dependencies:
881 | '@typescript-eslint/types': 5.62.0
882 | '@typescript-eslint/visitor-keys': 5.62.0
883 | debug: 4.3.4
884 | globby: 11.1.0
885 | is-glob: 4.0.3
886 | semver: 7.6.0
887 | tsutils: 3.21.0(typescript@5.4.5)
888 | typescript: 5.4.5
889 | transitivePeerDependencies:
890 | - supports-color
891 | dev: true
892 |
893 | /@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.5):
894 | resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==}
895 | engines: {node: ^18.18.0 || >=20.0.0}
896 | peerDependencies:
897 | typescript: '*'
898 | peerDependenciesMeta:
899 | typescript:
900 | optional: true
901 | dependencies:
902 | '@typescript-eslint/types': 7.6.0
903 | '@typescript-eslint/visitor-keys': 7.6.0
904 | debug: 4.3.4
905 | globby: 11.1.0
906 | is-glob: 4.0.3
907 | minimatch: 9.0.4
908 | semver: 7.6.0
909 | ts-api-utils: 1.3.0(typescript@5.4.5)
910 | typescript: 5.4.5
911 | transitivePeerDependencies:
912 | - supports-color
913 | dev: true
914 |
915 | /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5):
916 | resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
917 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
918 | peerDependencies:
919 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
920 | dependencies:
921 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
922 | '@types/json-schema': 7.0.15
923 | '@types/semver': 7.5.8
924 | '@typescript-eslint/scope-manager': 5.62.0
925 | '@typescript-eslint/types': 5.62.0
926 | '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5)
927 | eslint: 8.57.0
928 | eslint-scope: 5.1.1
929 | semver: 7.6.0
930 | transitivePeerDependencies:
931 | - supports-color
932 | - typescript
933 | dev: true
934 |
935 | /@typescript-eslint/utils@7.6.0(eslint@8.57.0)(typescript@5.4.5):
936 | resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==}
937 | engines: {node: ^18.18.0 || >=20.0.0}
938 | peerDependencies:
939 | eslint: ^8.56.0
940 | dependencies:
941 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
942 | '@types/json-schema': 7.0.15
943 | '@types/semver': 7.5.8
944 | '@typescript-eslint/scope-manager': 7.6.0
945 | '@typescript-eslint/types': 7.6.0
946 | '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5)
947 | eslint: 8.57.0
948 | semver: 7.6.0
949 | transitivePeerDependencies:
950 | - supports-color
951 | - typescript
952 | dev: true
953 |
954 | /@typescript-eslint/visitor-keys@5.62.0:
955 | resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
956 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
957 | dependencies:
958 | '@typescript-eslint/types': 5.62.0
959 | eslint-visitor-keys: 3.4.3
960 | dev: true
961 |
962 | /@typescript-eslint/visitor-keys@7.6.0:
963 | resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==}
964 | engines: {node: ^18.18.0 || >=20.0.0}
965 | dependencies:
966 | '@typescript-eslint/types': 7.6.0
967 | eslint-visitor-keys: 3.4.3
968 | dev: true
969 |
970 | /@ungap/structured-clone@1.2.0:
971 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
972 | dev: true
973 |
974 | /@vitest/expect@1.5.0:
975 | resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==}
976 | dependencies:
977 | '@vitest/spy': 1.5.0
978 | '@vitest/utils': 1.5.0
979 | chai: 4.4.1
980 | dev: true
981 |
982 | /@vitest/runner@1.5.0:
983 | resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==}
984 | dependencies:
985 | '@vitest/utils': 1.5.0
986 | p-limit: 5.0.0
987 | pathe: 1.1.2
988 | dev: true
989 |
990 | /@vitest/snapshot@1.5.0:
991 | resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==}
992 | dependencies:
993 | magic-string: 0.30.9
994 | pathe: 1.1.2
995 | pretty-format: 29.7.0
996 | dev: true
997 |
998 | /@vitest/spy@1.5.0:
999 | resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==}
1000 | dependencies:
1001 | tinyspy: 2.2.1
1002 | dev: true
1003 |
1004 | /@vitest/utils@1.5.0:
1005 | resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==}
1006 | dependencies:
1007 | diff-sequences: 29.6.3
1008 | estree-walker: 3.0.3
1009 | loupe: 2.3.7
1010 | pretty-format: 29.7.0
1011 | dev: true
1012 |
1013 | /acorn-jsx@5.3.2(acorn@8.11.3):
1014 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
1015 | peerDependencies:
1016 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
1017 | dependencies:
1018 | acorn: 8.11.3
1019 | dev: true
1020 |
1021 | /acorn-walk@8.3.2:
1022 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
1023 | engines: {node: '>=0.4.0'}
1024 | dev: true
1025 |
1026 | /acorn@8.11.3:
1027 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
1028 | engines: {node: '>=0.4.0'}
1029 | hasBin: true
1030 | dev: true
1031 |
1032 | /ajv@6.12.6:
1033 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
1034 | dependencies:
1035 | fast-deep-equal: 3.1.3
1036 | fast-json-stable-stringify: 2.1.0
1037 | json-schema-traverse: 0.4.1
1038 | uri-js: 4.4.1
1039 | dev: true
1040 |
1041 | /ansi-regex@5.0.1:
1042 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
1043 | engines: {node: '>=8'}
1044 | dev: true
1045 |
1046 | /ansi-regex@6.0.1:
1047 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
1048 | engines: {node: '>=12'}
1049 | dev: true
1050 |
1051 | /ansi-styles@4.3.0:
1052 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
1053 | engines: {node: '>=8'}
1054 | dependencies:
1055 | color-convert: 2.0.1
1056 | dev: true
1057 |
1058 | /ansi-styles@5.2.0:
1059 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
1060 | engines: {node: '>=10'}
1061 | dev: true
1062 |
1063 | /ansi-styles@6.2.1:
1064 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
1065 | engines: {node: '>=12'}
1066 | dev: true
1067 |
1068 | /any-promise@1.3.0:
1069 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
1070 | dev: true
1071 |
1072 | /anymatch@3.1.3:
1073 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
1074 | engines: {node: '>= 8'}
1075 | dependencies:
1076 | normalize-path: 3.0.0
1077 | picomatch: 2.3.1
1078 | dev: true
1079 |
1080 | /argparse@2.0.1:
1081 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
1082 | dev: true
1083 |
1084 | /array-union@2.1.0:
1085 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
1086 | engines: {node: '>=8'}
1087 | dev: true
1088 |
1089 | /assertion-error@1.1.0:
1090 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
1091 | dev: true
1092 |
1093 | /balanced-match@1.0.2:
1094 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
1095 | dev: true
1096 |
1097 | /binary-extensions@2.3.0:
1098 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
1099 | engines: {node: '>=8'}
1100 | dev: true
1101 |
1102 | /brace-expansion@1.1.11:
1103 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
1104 | dependencies:
1105 | balanced-match: 1.0.2
1106 | concat-map: 0.0.1
1107 | dev: true
1108 |
1109 | /brace-expansion@2.0.1:
1110 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
1111 | dependencies:
1112 | balanced-match: 1.0.2
1113 | dev: true
1114 |
1115 | /braces@3.0.2:
1116 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
1117 | engines: {node: '>=8'}
1118 | dependencies:
1119 | fill-range: 7.0.1
1120 | dev: true
1121 |
1122 | /bundle-require@4.0.2(esbuild@0.19.12):
1123 | resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==}
1124 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1125 | peerDependencies:
1126 | esbuild: '>=0.17'
1127 | dependencies:
1128 | esbuild: 0.19.12
1129 | load-tsconfig: 0.2.5
1130 | dev: true
1131 |
1132 | /cac@6.7.14:
1133 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
1134 | engines: {node: '>=8'}
1135 | dev: true
1136 |
1137 | /callsites@3.1.0:
1138 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
1139 | engines: {node: '>=6'}
1140 | dev: true
1141 |
1142 | /chai@4.4.1:
1143 | resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==}
1144 | engines: {node: '>=4'}
1145 | dependencies:
1146 | assertion-error: 1.1.0
1147 | check-error: 1.0.3
1148 | deep-eql: 4.1.3
1149 | get-func-name: 2.0.2
1150 | loupe: 2.3.7
1151 | pathval: 1.1.1
1152 | type-detect: 4.0.8
1153 | dev: true
1154 |
1155 | /chalk@4.1.2:
1156 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
1157 | engines: {node: '>=10'}
1158 | dependencies:
1159 | ansi-styles: 4.3.0
1160 | supports-color: 7.2.0
1161 | dev: true
1162 |
1163 | /check-error@1.0.3:
1164 | resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
1165 | dependencies:
1166 | get-func-name: 2.0.2
1167 | dev: true
1168 |
1169 | /chokidar@3.6.0:
1170 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
1171 | engines: {node: '>= 8.10.0'}
1172 | dependencies:
1173 | anymatch: 3.1.3
1174 | braces: 3.0.2
1175 | glob-parent: 5.1.2
1176 | is-binary-path: 2.1.0
1177 | is-glob: 4.0.3
1178 | normalize-path: 3.0.0
1179 | readdirp: 3.6.0
1180 | optionalDependencies:
1181 | fsevents: 2.3.3
1182 | dev: true
1183 |
1184 | /color-convert@2.0.1:
1185 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
1186 | engines: {node: '>=7.0.0'}
1187 | dependencies:
1188 | color-name: 1.1.4
1189 | dev: true
1190 |
1191 | /color-name@1.1.4:
1192 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1193 | dev: true
1194 |
1195 | /commander@4.1.1:
1196 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
1197 | engines: {node: '>= 6'}
1198 | dev: true
1199 |
1200 | /concat-map@0.0.1:
1201 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
1202 | dev: true
1203 |
1204 | /cross-spawn@7.0.3:
1205 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
1206 | engines: {node: '>= 8'}
1207 | dependencies:
1208 | path-key: 3.1.1
1209 | shebang-command: 2.0.0
1210 | which: 2.0.2
1211 | dev: true
1212 |
1213 | /debug@4.3.4:
1214 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1215 | engines: {node: '>=6.0'}
1216 | peerDependencies:
1217 | supports-color: '*'
1218 | peerDependenciesMeta:
1219 | supports-color:
1220 | optional: true
1221 | dependencies:
1222 | ms: 2.1.2
1223 | dev: true
1224 |
1225 | /deep-eql@4.1.3:
1226 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
1227 | engines: {node: '>=6'}
1228 | dependencies:
1229 | type-detect: 4.0.8
1230 | dev: true
1231 |
1232 | /deep-is@0.1.4:
1233 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
1234 | dev: true
1235 |
1236 | /diff-sequences@29.6.3:
1237 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
1238 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1239 | dev: true
1240 |
1241 | /dir-glob@3.0.1:
1242 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
1243 | engines: {node: '>=8'}
1244 | dependencies:
1245 | path-type: 4.0.0
1246 | dev: true
1247 |
1248 | /doctrine@3.0.0:
1249 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
1250 | engines: {node: '>=6.0.0'}
1251 | dependencies:
1252 | esutils: 2.0.3
1253 | dev: true
1254 |
1255 | /eastasianwidth@0.2.0:
1256 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
1257 | dev: true
1258 |
1259 | /emoji-regex@8.0.0:
1260 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1261 | dev: true
1262 |
1263 | /emoji-regex@9.2.2:
1264 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
1265 | dev: true
1266 |
1267 | /esbuild@0.19.12:
1268 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
1269 | engines: {node: '>=12'}
1270 | hasBin: true
1271 | requiresBuild: true
1272 | optionalDependencies:
1273 | '@esbuild/aix-ppc64': 0.19.12
1274 | '@esbuild/android-arm': 0.19.12
1275 | '@esbuild/android-arm64': 0.19.12
1276 | '@esbuild/android-x64': 0.19.12
1277 | '@esbuild/darwin-arm64': 0.19.12
1278 | '@esbuild/darwin-x64': 0.19.12
1279 | '@esbuild/freebsd-arm64': 0.19.12
1280 | '@esbuild/freebsd-x64': 0.19.12
1281 | '@esbuild/linux-arm': 0.19.12
1282 | '@esbuild/linux-arm64': 0.19.12
1283 | '@esbuild/linux-ia32': 0.19.12
1284 | '@esbuild/linux-loong64': 0.19.12
1285 | '@esbuild/linux-mips64el': 0.19.12
1286 | '@esbuild/linux-ppc64': 0.19.12
1287 | '@esbuild/linux-riscv64': 0.19.12
1288 | '@esbuild/linux-s390x': 0.19.12
1289 | '@esbuild/linux-x64': 0.19.12
1290 | '@esbuild/netbsd-x64': 0.19.12
1291 | '@esbuild/openbsd-x64': 0.19.12
1292 | '@esbuild/sunos-x64': 0.19.12
1293 | '@esbuild/win32-arm64': 0.19.12
1294 | '@esbuild/win32-ia32': 0.19.12
1295 | '@esbuild/win32-x64': 0.19.12
1296 | dev: true
1297 |
1298 | /esbuild@0.20.2:
1299 | resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
1300 | engines: {node: '>=12'}
1301 | hasBin: true
1302 | requiresBuild: true
1303 | optionalDependencies:
1304 | '@esbuild/aix-ppc64': 0.20.2
1305 | '@esbuild/android-arm': 0.20.2
1306 | '@esbuild/android-arm64': 0.20.2
1307 | '@esbuild/android-x64': 0.20.2
1308 | '@esbuild/darwin-arm64': 0.20.2
1309 | '@esbuild/darwin-x64': 0.20.2
1310 | '@esbuild/freebsd-arm64': 0.20.2
1311 | '@esbuild/freebsd-x64': 0.20.2
1312 | '@esbuild/linux-arm': 0.20.2
1313 | '@esbuild/linux-arm64': 0.20.2
1314 | '@esbuild/linux-ia32': 0.20.2
1315 | '@esbuild/linux-loong64': 0.20.2
1316 | '@esbuild/linux-mips64el': 0.20.2
1317 | '@esbuild/linux-ppc64': 0.20.2
1318 | '@esbuild/linux-riscv64': 0.20.2
1319 | '@esbuild/linux-s390x': 0.20.2
1320 | '@esbuild/linux-x64': 0.20.2
1321 | '@esbuild/netbsd-x64': 0.20.2
1322 | '@esbuild/openbsd-x64': 0.20.2
1323 | '@esbuild/sunos-x64': 0.20.2
1324 | '@esbuild/win32-arm64': 0.20.2
1325 | '@esbuild/win32-ia32': 0.20.2
1326 | '@esbuild/win32-x64': 0.20.2
1327 | dev: true
1328 |
1329 | /escape-string-regexp@4.0.0:
1330 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1331 | engines: {node: '>=10'}
1332 | dev: true
1333 |
1334 | /eslint-config-prettier@9.1.0(eslint@8.57.0):
1335 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
1336 | hasBin: true
1337 | peerDependencies:
1338 | eslint: '>=7.0.0'
1339 | dependencies:
1340 | eslint: 8.57.0
1341 | dev: true
1342 |
1343 | /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5):
1344 | resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==}
1345 | engines: {node: ^14.18.0 || >=16.0.0}
1346 | peerDependencies:
1347 | '@types/eslint': '>=8.0.0'
1348 | eslint: '>=8.0.0'
1349 | eslint-config-prettier: '*'
1350 | prettier: '>=3.0.0'
1351 | peerDependenciesMeta:
1352 | '@types/eslint':
1353 | optional: true
1354 | eslint-config-prettier:
1355 | optional: true
1356 | dependencies:
1357 | eslint: 8.57.0
1358 | eslint-config-prettier: 9.1.0(eslint@8.57.0)
1359 | prettier: 3.2.5
1360 | prettier-linter-helpers: 1.0.0
1361 | synckit: 0.8.8
1362 | dev: true
1363 |
1364 | /eslint-plugin-testing-library@6.2.1(eslint@8.57.0)(typescript@5.4.5):
1365 | resolution: {integrity: sha512-CP2YV/AxtgyrXgizM4648UkuVrFGDcCA8uDmrLytGqtsa7wgC6MTuIQqEAT1Qm4/zCxnC8xRtiGgfEwEt6hmdw==}
1366 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
1367 | peerDependencies:
1368 | eslint: ^7.5.0 || ^8.0.0
1369 | dependencies:
1370 | '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5)
1371 | eslint: 8.57.0
1372 | transitivePeerDependencies:
1373 | - supports-color
1374 | - typescript
1375 | dev: true
1376 |
1377 | /eslint-plugin-vitest@0.4.1(@typescript-eslint/eslint-plugin@7.6.0)(eslint@8.57.0)(typescript@5.4.5)(vitest@1.5.0):
1378 | resolution: {integrity: sha512-+PnZ2u/BS+f5FiuHXz4zKsHPcMKHie+K+1Uvu/x91ovkCMEOJqEI8E9Tw1Wzx2QRz4MHOBHYf1ypO8N1K0aNAA==}
1379 | engines: {node: ^18.0.0 || >= 20.0.0}
1380 | peerDependencies:
1381 | '@typescript-eslint/eslint-plugin': '*'
1382 | eslint: '>=8.0.0'
1383 | vitest: '*'
1384 | peerDependenciesMeta:
1385 | '@typescript-eslint/eslint-plugin':
1386 | optional: true
1387 | vitest:
1388 | optional: true
1389 | dependencies:
1390 | '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5)
1391 | '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
1392 | eslint: 8.57.0
1393 | vitest: 1.5.0(@types/node@20.12.7)
1394 | transitivePeerDependencies:
1395 | - supports-color
1396 | - typescript
1397 | dev: true
1398 |
1399 | /eslint-scope@5.1.1:
1400 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
1401 | engines: {node: '>=8.0.0'}
1402 | dependencies:
1403 | esrecurse: 4.3.0
1404 | estraverse: 4.3.0
1405 | dev: true
1406 |
1407 | /eslint-scope@7.2.2:
1408 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1409 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1410 | dependencies:
1411 | esrecurse: 4.3.0
1412 | estraverse: 5.3.0
1413 | dev: true
1414 |
1415 | /eslint-visitor-keys@3.4.3:
1416 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
1417 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1418 | dev: true
1419 |
1420 | /eslint@8.57.0:
1421 | resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
1422 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1423 | hasBin: true
1424 | dependencies:
1425 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
1426 | '@eslint-community/regexpp': 4.10.0
1427 | '@eslint/eslintrc': 2.1.4
1428 | '@eslint/js': 8.57.0
1429 | '@humanwhocodes/config-array': 0.11.14
1430 | '@humanwhocodes/module-importer': 1.0.1
1431 | '@nodelib/fs.walk': 1.2.8
1432 | '@ungap/structured-clone': 1.2.0
1433 | ajv: 6.12.6
1434 | chalk: 4.1.2
1435 | cross-spawn: 7.0.3
1436 | debug: 4.3.4
1437 | doctrine: 3.0.0
1438 | escape-string-regexp: 4.0.0
1439 | eslint-scope: 7.2.2
1440 | eslint-visitor-keys: 3.4.3
1441 | espree: 9.6.1
1442 | esquery: 1.5.0
1443 | esutils: 2.0.3
1444 | fast-deep-equal: 3.1.3
1445 | file-entry-cache: 6.0.1
1446 | find-up: 5.0.0
1447 | glob-parent: 6.0.2
1448 | globals: 13.20.0
1449 | graphemer: 1.4.0
1450 | ignore: 5.2.4
1451 | imurmurhash: 0.1.4
1452 | is-glob: 4.0.3
1453 | is-path-inside: 3.0.3
1454 | js-yaml: 4.1.0
1455 | json-stable-stringify-without-jsonify: 1.0.1
1456 | levn: 0.4.1
1457 | lodash.merge: 4.6.2
1458 | minimatch: 3.1.2
1459 | natural-compare: 1.4.0
1460 | optionator: 0.9.3
1461 | strip-ansi: 6.0.1
1462 | text-table: 0.2.0
1463 | transitivePeerDependencies:
1464 | - supports-color
1465 | dev: true
1466 |
1467 | /espree@9.6.1:
1468 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1469 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1470 | dependencies:
1471 | acorn: 8.11.3
1472 | acorn-jsx: 5.3.2(acorn@8.11.3)
1473 | eslint-visitor-keys: 3.4.3
1474 | dev: true
1475 |
1476 | /esquery@1.5.0:
1477 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1478 | engines: {node: '>=0.10'}
1479 | dependencies:
1480 | estraverse: 5.3.0
1481 | dev: true
1482 |
1483 | /esrecurse@4.3.0:
1484 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1485 | engines: {node: '>=4.0'}
1486 | dependencies:
1487 | estraverse: 5.3.0
1488 | dev: true
1489 |
1490 | /estraverse@4.3.0:
1491 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
1492 | engines: {node: '>=4.0'}
1493 | dev: true
1494 |
1495 | /estraverse@5.3.0:
1496 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1497 | engines: {node: '>=4.0'}
1498 | dev: true
1499 |
1500 | /estree-walker@3.0.3:
1501 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
1502 | dependencies:
1503 | '@types/estree': 1.0.5
1504 | dev: true
1505 |
1506 | /esutils@2.0.3:
1507 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1508 | engines: {node: '>=0.10.0'}
1509 | dev: true
1510 |
1511 | /execa@5.1.1:
1512 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
1513 | engines: {node: '>=10'}
1514 | dependencies:
1515 | cross-spawn: 7.0.3
1516 | get-stream: 6.0.1
1517 | human-signals: 2.1.0
1518 | is-stream: 2.0.1
1519 | merge-stream: 2.0.0
1520 | npm-run-path: 4.0.1
1521 | onetime: 5.1.2
1522 | signal-exit: 3.0.7
1523 | strip-final-newline: 2.0.0
1524 | dev: true
1525 |
1526 | /execa@8.0.1:
1527 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
1528 | engines: {node: '>=16.17'}
1529 | dependencies:
1530 | cross-spawn: 7.0.3
1531 | get-stream: 8.0.1
1532 | human-signals: 5.0.0
1533 | is-stream: 3.0.0
1534 | merge-stream: 2.0.0
1535 | npm-run-path: 5.3.0
1536 | onetime: 6.0.0
1537 | signal-exit: 4.1.0
1538 | strip-final-newline: 3.0.0
1539 | dev: true
1540 |
1541 | /fast-deep-equal@3.1.3:
1542 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1543 | dev: true
1544 |
1545 | /fast-diff@1.3.0:
1546 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
1547 | dev: true
1548 |
1549 | /fast-glob@3.2.12:
1550 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
1551 | engines: {node: '>=8.6.0'}
1552 | dependencies:
1553 | '@nodelib/fs.stat': 2.0.5
1554 | '@nodelib/fs.walk': 1.2.8
1555 | glob-parent: 5.1.2
1556 | merge2: 1.4.1
1557 | micromatch: 4.0.5
1558 | dev: true
1559 |
1560 | /fast-json-stable-stringify@2.1.0:
1561 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1562 | dev: true
1563 |
1564 | /fast-levenshtein@2.0.6:
1565 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1566 | dev: true
1567 |
1568 | /fastq@1.15.0:
1569 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1570 | dependencies:
1571 | reusify: 1.0.4
1572 | dev: true
1573 |
1574 | /file-entry-cache@6.0.1:
1575 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1576 | engines: {node: ^10.12.0 || >=12.0.0}
1577 | dependencies:
1578 | flat-cache: 3.0.4
1579 | dev: true
1580 |
1581 | /fill-range@7.0.1:
1582 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1583 | engines: {node: '>=8'}
1584 | dependencies:
1585 | to-regex-range: 5.0.1
1586 | dev: true
1587 |
1588 | /find-up@5.0.0:
1589 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1590 | engines: {node: '>=10'}
1591 | dependencies:
1592 | locate-path: 6.0.0
1593 | path-exists: 4.0.0
1594 | dev: true
1595 |
1596 | /flat-cache@3.0.4:
1597 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
1598 | engines: {node: ^10.12.0 || >=12.0.0}
1599 | dependencies:
1600 | flatted: 3.2.7
1601 | rimraf: 3.0.2
1602 | dev: true
1603 |
1604 | /flatted@3.2.7:
1605 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
1606 | dev: true
1607 |
1608 | /foreground-child@3.1.1:
1609 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
1610 | engines: {node: '>=14'}
1611 | dependencies:
1612 | cross-spawn: 7.0.3
1613 | signal-exit: 4.0.2
1614 | dev: true
1615 |
1616 | /fs.realpath@1.0.0:
1617 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1618 | dev: true
1619 |
1620 | /fsevents@2.3.3:
1621 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1622 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1623 | os: [darwin]
1624 | requiresBuild: true
1625 | dev: true
1626 | optional: true
1627 |
1628 | /get-func-name@2.0.2:
1629 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
1630 | dev: true
1631 |
1632 | /get-stream@6.0.1:
1633 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
1634 | engines: {node: '>=10'}
1635 | dev: true
1636 |
1637 | /get-stream@8.0.1:
1638 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
1639 | engines: {node: '>=16'}
1640 | dev: true
1641 |
1642 | /glob-parent@5.1.2:
1643 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1644 | engines: {node: '>= 6'}
1645 | dependencies:
1646 | is-glob: 4.0.3
1647 | dev: true
1648 |
1649 | /glob-parent@6.0.2:
1650 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1651 | engines: {node: '>=10.13.0'}
1652 | dependencies:
1653 | is-glob: 4.0.3
1654 | dev: true
1655 |
1656 | /glob@10.3.12:
1657 | resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==}
1658 | engines: {node: '>=16 || 14 >=14.17'}
1659 | hasBin: true
1660 | dependencies:
1661 | foreground-child: 3.1.1
1662 | jackspeak: 2.3.6
1663 | minimatch: 9.0.1
1664 | minipass: 7.0.4
1665 | path-scurry: 1.10.2
1666 | dev: true
1667 |
1668 | /glob@7.2.3:
1669 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1670 | dependencies:
1671 | fs.realpath: 1.0.0
1672 | inflight: 1.0.6
1673 | inherits: 2.0.4
1674 | minimatch: 3.1.2
1675 | once: 1.4.0
1676 | path-is-absolute: 1.0.1
1677 | dev: true
1678 |
1679 | /globals@13.20.0:
1680 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
1681 | engines: {node: '>=8'}
1682 | dependencies:
1683 | type-fest: 0.20.2
1684 | dev: true
1685 |
1686 | /globby@11.1.0:
1687 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1688 | engines: {node: '>=10'}
1689 | dependencies:
1690 | array-union: 2.1.0
1691 | dir-glob: 3.0.1
1692 | fast-glob: 3.2.12
1693 | ignore: 5.2.4
1694 | merge2: 1.4.1
1695 | slash: 3.0.0
1696 | dev: true
1697 |
1698 | /globrex@0.1.2:
1699 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
1700 | dev: true
1701 |
1702 | /graphemer@1.4.0:
1703 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1704 | dev: true
1705 |
1706 | /has-flag@4.0.0:
1707 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1708 | engines: {node: '>=8'}
1709 | dev: true
1710 |
1711 | /human-signals@2.1.0:
1712 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
1713 | engines: {node: '>=10.17.0'}
1714 | dev: true
1715 |
1716 | /human-signals@5.0.0:
1717 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
1718 | engines: {node: '>=16.17.0'}
1719 | dev: true
1720 |
1721 | /ignore@5.2.4:
1722 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
1723 | engines: {node: '>= 4'}
1724 | dev: true
1725 |
1726 | /ignore@5.3.1:
1727 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
1728 | engines: {node: '>= 4'}
1729 | dev: true
1730 |
1731 | /import-fresh@3.3.0:
1732 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1733 | engines: {node: '>=6'}
1734 | dependencies:
1735 | parent-module: 1.0.1
1736 | resolve-from: 4.0.0
1737 | dev: true
1738 |
1739 | /imurmurhash@0.1.4:
1740 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1741 | engines: {node: '>=0.8.19'}
1742 | dev: true
1743 |
1744 | /inflight@1.0.6:
1745 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1746 | dependencies:
1747 | once: 1.4.0
1748 | wrappy: 1.0.2
1749 | dev: true
1750 |
1751 | /inherits@2.0.4:
1752 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1753 | dev: true
1754 |
1755 | /is-binary-path@2.1.0:
1756 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1757 | engines: {node: '>=8'}
1758 | dependencies:
1759 | binary-extensions: 2.3.0
1760 | dev: true
1761 |
1762 | /is-extglob@2.1.1:
1763 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1764 | engines: {node: '>=0.10.0'}
1765 | dev: true
1766 |
1767 | /is-fullwidth-code-point@3.0.0:
1768 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1769 | engines: {node: '>=8'}
1770 | dev: true
1771 |
1772 | /is-glob@4.0.3:
1773 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1774 | engines: {node: '>=0.10.0'}
1775 | dependencies:
1776 | is-extglob: 2.1.1
1777 | dev: true
1778 |
1779 | /is-number@7.0.0:
1780 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1781 | engines: {node: '>=0.12.0'}
1782 | dev: true
1783 |
1784 | /is-path-inside@3.0.3:
1785 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1786 | engines: {node: '>=8'}
1787 | dev: true
1788 |
1789 | /is-stream@2.0.1:
1790 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1791 | engines: {node: '>=8'}
1792 | dev: true
1793 |
1794 | /is-stream@3.0.0:
1795 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1796 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1797 | dev: true
1798 |
1799 | /isexe@2.0.0:
1800 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1801 | dev: true
1802 |
1803 | /jackspeak@2.3.6:
1804 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
1805 | engines: {node: '>=14'}
1806 | dependencies:
1807 | '@isaacs/cliui': 8.0.2
1808 | optionalDependencies:
1809 | '@pkgjs/parseargs': 0.11.0
1810 | dev: true
1811 |
1812 | /joycon@3.1.1:
1813 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
1814 | engines: {node: '>=10'}
1815 | dev: true
1816 |
1817 | /js-tokens@9.0.0:
1818 | resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==}
1819 | dev: true
1820 |
1821 | /js-yaml@4.1.0:
1822 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1823 | hasBin: true
1824 | dependencies:
1825 | argparse: 2.0.1
1826 | dev: true
1827 |
1828 | /json-schema-traverse@0.4.1:
1829 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1830 | dev: true
1831 |
1832 | /json-stable-stringify-without-jsonify@1.0.1:
1833 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1834 | dev: true
1835 |
1836 | /jsonc-parser@3.2.1:
1837 | resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==}
1838 | dev: true
1839 |
1840 | /levn@0.4.1:
1841 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1842 | engines: {node: '>= 0.8.0'}
1843 | dependencies:
1844 | prelude-ls: 1.2.1
1845 | type-check: 0.4.0
1846 | dev: true
1847 |
1848 | /lilconfig@3.1.1:
1849 | resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==}
1850 | engines: {node: '>=14'}
1851 | dev: true
1852 |
1853 | /lines-and-columns@1.2.4:
1854 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1855 | dev: true
1856 |
1857 | /load-tsconfig@0.2.5:
1858 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
1859 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1860 | dev: true
1861 |
1862 | /local-pkg@0.5.0:
1863 | resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
1864 | engines: {node: '>=14'}
1865 | dependencies:
1866 | mlly: 1.6.1
1867 | pkg-types: 1.0.3
1868 | dev: true
1869 |
1870 | /locate-path@6.0.0:
1871 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1872 | engines: {node: '>=10'}
1873 | dependencies:
1874 | p-locate: 5.0.0
1875 | dev: true
1876 |
1877 | /lodash.merge@4.6.2:
1878 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1879 | dev: true
1880 |
1881 | /lodash.sortby@4.7.0:
1882 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
1883 | dev: true
1884 |
1885 | /loupe@2.3.7:
1886 | resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
1887 | dependencies:
1888 | get-func-name: 2.0.2
1889 | dev: true
1890 |
1891 | /lru-cache@10.2.0:
1892 | resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
1893 | engines: {node: 14 || >=16.14}
1894 | dev: true
1895 |
1896 | /lru-cache@6.0.0:
1897 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1898 | engines: {node: '>=10'}
1899 | dependencies:
1900 | yallist: 4.0.0
1901 | dev: true
1902 |
1903 | /magic-string@0.30.9:
1904 | resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==}
1905 | engines: {node: '>=12'}
1906 | dependencies:
1907 | '@jridgewell/sourcemap-codec': 1.4.15
1908 | dev: true
1909 |
1910 | /merge-stream@2.0.0:
1911 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1912 | dev: true
1913 |
1914 | /merge2@1.4.1:
1915 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1916 | engines: {node: '>= 8'}
1917 | dev: true
1918 |
1919 | /micromatch@4.0.5:
1920 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1921 | engines: {node: '>=8.6'}
1922 | dependencies:
1923 | braces: 3.0.2
1924 | picomatch: 2.3.1
1925 | dev: true
1926 |
1927 | /mimic-fn@2.1.0:
1928 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1929 | engines: {node: '>=6'}
1930 | dev: true
1931 |
1932 | /mimic-fn@4.0.0:
1933 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1934 | engines: {node: '>=12'}
1935 | dev: true
1936 |
1937 | /minimatch@3.1.2:
1938 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1939 | dependencies:
1940 | brace-expansion: 1.1.11
1941 | dev: true
1942 |
1943 | /minimatch@9.0.1:
1944 | resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
1945 | engines: {node: '>=16 || 14 >=14.17'}
1946 | dependencies:
1947 | brace-expansion: 2.0.1
1948 | dev: true
1949 |
1950 | /minimatch@9.0.4:
1951 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
1952 | engines: {node: '>=16 || 14 >=14.17'}
1953 | dependencies:
1954 | brace-expansion: 2.0.1
1955 | dev: true
1956 |
1957 | /minipass@7.0.4:
1958 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
1959 | engines: {node: '>=16 || 14 >=14.17'}
1960 | dev: true
1961 |
1962 | /mlly@1.6.1:
1963 | resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==}
1964 | dependencies:
1965 | acorn: 8.11.3
1966 | pathe: 1.1.2
1967 | pkg-types: 1.0.3
1968 | ufo: 1.5.3
1969 | dev: true
1970 |
1971 | /ms@2.1.2:
1972 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1973 | dev: true
1974 |
1975 | /mz@2.7.0:
1976 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1977 | dependencies:
1978 | any-promise: 1.3.0
1979 | object-assign: 4.1.1
1980 | thenify-all: 1.6.0
1981 | dev: true
1982 |
1983 | /nanoid@3.3.7:
1984 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1985 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1986 | hasBin: true
1987 | dev: true
1988 |
1989 | /natural-compare@1.4.0:
1990 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1991 | dev: true
1992 |
1993 | /normalize-path@3.0.0:
1994 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1995 | engines: {node: '>=0.10.0'}
1996 | dev: true
1997 |
1998 | /npm-run-path@4.0.1:
1999 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
2000 | engines: {node: '>=8'}
2001 | dependencies:
2002 | path-key: 3.1.1
2003 | dev: true
2004 |
2005 | /npm-run-path@5.3.0:
2006 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
2007 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2008 | dependencies:
2009 | path-key: 4.0.0
2010 | dev: true
2011 |
2012 | /object-assign@4.1.1:
2013 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
2014 | engines: {node: '>=0.10.0'}
2015 | dev: true
2016 |
2017 | /once@1.4.0:
2018 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2019 | dependencies:
2020 | wrappy: 1.0.2
2021 | dev: true
2022 |
2023 | /onetime@5.1.2:
2024 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
2025 | engines: {node: '>=6'}
2026 | dependencies:
2027 | mimic-fn: 2.1.0
2028 | dev: true
2029 |
2030 | /onetime@6.0.0:
2031 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
2032 | engines: {node: '>=12'}
2033 | dependencies:
2034 | mimic-fn: 4.0.0
2035 | dev: true
2036 |
2037 | /optionator@0.9.3:
2038 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
2039 | engines: {node: '>= 0.8.0'}
2040 | dependencies:
2041 | '@aashutoshrathi/word-wrap': 1.2.6
2042 | deep-is: 0.1.4
2043 | fast-levenshtein: 2.0.6
2044 | levn: 0.4.1
2045 | prelude-ls: 1.2.1
2046 | type-check: 0.4.0
2047 | dev: true
2048 |
2049 | /p-limit@3.1.0:
2050 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
2051 | engines: {node: '>=10'}
2052 | dependencies:
2053 | yocto-queue: 0.1.0
2054 | dev: true
2055 |
2056 | /p-limit@5.0.0:
2057 | resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
2058 | engines: {node: '>=18'}
2059 | dependencies:
2060 | yocto-queue: 1.0.0
2061 | dev: true
2062 |
2063 | /p-locate@5.0.0:
2064 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
2065 | engines: {node: '>=10'}
2066 | dependencies:
2067 | p-limit: 3.1.0
2068 | dev: true
2069 |
2070 | /parent-module@1.0.1:
2071 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
2072 | engines: {node: '>=6'}
2073 | dependencies:
2074 | callsites: 3.1.0
2075 | dev: true
2076 |
2077 | /path-exists@4.0.0:
2078 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
2079 | engines: {node: '>=8'}
2080 | dev: true
2081 |
2082 | /path-is-absolute@1.0.1:
2083 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2084 | engines: {node: '>=0.10.0'}
2085 | dev: true
2086 |
2087 | /path-key@3.1.1:
2088 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2089 | engines: {node: '>=8'}
2090 | dev: true
2091 |
2092 | /path-key@4.0.0:
2093 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
2094 | engines: {node: '>=12'}
2095 | dev: true
2096 |
2097 | /path-scurry@1.10.2:
2098 | resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==}
2099 | engines: {node: '>=16 || 14 >=14.17'}
2100 | dependencies:
2101 | lru-cache: 10.2.0
2102 | minipass: 7.0.4
2103 | dev: true
2104 |
2105 | /path-type@4.0.0:
2106 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
2107 | engines: {node: '>=8'}
2108 | dev: true
2109 |
2110 | /pathe@1.1.2:
2111 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
2112 | dev: true
2113 |
2114 | /pathval@1.1.1:
2115 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
2116 | dev: true
2117 |
2118 | /picocolors@1.0.0:
2119 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2120 | dev: true
2121 |
2122 | /picomatch@2.3.1:
2123 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2124 | engines: {node: '>=8.6'}
2125 | dev: true
2126 |
2127 | /pirates@4.0.5:
2128 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
2129 | engines: {node: '>= 6'}
2130 | dev: true
2131 |
2132 | /pkg-types@1.0.3:
2133 | resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
2134 | dependencies:
2135 | jsonc-parser: 3.2.1
2136 | mlly: 1.6.1
2137 | pathe: 1.1.2
2138 | dev: true
2139 |
2140 | /postcss-load-config@4.0.2:
2141 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
2142 | engines: {node: '>= 14'}
2143 | peerDependencies:
2144 | postcss: '>=8.0.9'
2145 | ts-node: '>=9.0.0'
2146 | peerDependenciesMeta:
2147 | postcss:
2148 | optional: true
2149 | ts-node:
2150 | optional: true
2151 | dependencies:
2152 | lilconfig: 3.1.1
2153 | yaml: 2.4.1
2154 | dev: true
2155 |
2156 | /postcss@8.4.38:
2157 | resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
2158 | engines: {node: ^10 || ^12 || >=14}
2159 | dependencies:
2160 | nanoid: 3.3.7
2161 | picocolors: 1.0.0
2162 | source-map-js: 1.2.0
2163 | dev: true
2164 |
2165 | /prelude-ls@1.2.1:
2166 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
2167 | engines: {node: '>= 0.8.0'}
2168 | dev: true
2169 |
2170 | /prettier-linter-helpers@1.0.0:
2171 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
2172 | engines: {node: '>=6.0.0'}
2173 | dependencies:
2174 | fast-diff: 1.3.0
2175 | dev: true
2176 |
2177 | /prettier-plugin-organize-imports@3.2.4(prettier@3.2.5)(typescript@5.4.5):
2178 | resolution: {integrity: sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==}
2179 | peerDependencies:
2180 | '@volar/vue-language-plugin-pug': ^1.0.4
2181 | '@volar/vue-typescript': ^1.0.4
2182 | prettier: '>=2.0'
2183 | typescript: '>=2.9'
2184 | peerDependenciesMeta:
2185 | '@volar/vue-language-plugin-pug':
2186 | optional: true
2187 | '@volar/vue-typescript':
2188 | optional: true
2189 | dependencies:
2190 | prettier: 3.2.5
2191 | typescript: 5.4.5
2192 | dev: true
2193 |
2194 | /prettier@3.2.5:
2195 | resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
2196 | engines: {node: '>=14'}
2197 | hasBin: true
2198 | dev: true
2199 |
2200 | /pretty-format@29.7.0:
2201 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
2202 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2203 | dependencies:
2204 | '@jest/schemas': 29.6.3
2205 | ansi-styles: 5.2.0
2206 | react-is: 18.2.0
2207 | dev: true
2208 |
2209 | /punycode@2.3.0:
2210 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
2211 | engines: {node: '>=6'}
2212 | dev: true
2213 |
2214 | /queue-microtask@1.2.3:
2215 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2216 | dev: true
2217 |
2218 | /react-is@18.2.0:
2219 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
2220 | dev: true
2221 |
2222 | /readdirp@3.6.0:
2223 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2224 | engines: {node: '>=8.10.0'}
2225 | dependencies:
2226 | picomatch: 2.3.1
2227 | dev: true
2228 |
2229 | /resolve-from@4.0.0:
2230 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2231 | engines: {node: '>=4'}
2232 | dev: true
2233 |
2234 | /resolve-from@5.0.0:
2235 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
2236 | engines: {node: '>=8'}
2237 | dev: true
2238 |
2239 | /reusify@1.0.4:
2240 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2241 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2242 | dev: true
2243 |
2244 | /rimraf@3.0.2:
2245 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2246 | hasBin: true
2247 | dependencies:
2248 | glob: 7.2.3
2249 | dev: true
2250 |
2251 | /rollup@4.14.3:
2252 | resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==}
2253 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
2254 | hasBin: true
2255 | dependencies:
2256 | '@types/estree': 1.0.5
2257 | optionalDependencies:
2258 | '@rollup/rollup-android-arm-eabi': 4.14.3
2259 | '@rollup/rollup-android-arm64': 4.14.3
2260 | '@rollup/rollup-darwin-arm64': 4.14.3
2261 | '@rollup/rollup-darwin-x64': 4.14.3
2262 | '@rollup/rollup-linux-arm-gnueabihf': 4.14.3
2263 | '@rollup/rollup-linux-arm-musleabihf': 4.14.3
2264 | '@rollup/rollup-linux-arm64-gnu': 4.14.3
2265 | '@rollup/rollup-linux-arm64-musl': 4.14.3
2266 | '@rollup/rollup-linux-powerpc64le-gnu': 4.14.3
2267 | '@rollup/rollup-linux-riscv64-gnu': 4.14.3
2268 | '@rollup/rollup-linux-s390x-gnu': 4.14.3
2269 | '@rollup/rollup-linux-x64-gnu': 4.14.3
2270 | '@rollup/rollup-linux-x64-musl': 4.14.3
2271 | '@rollup/rollup-win32-arm64-msvc': 4.14.3
2272 | '@rollup/rollup-win32-ia32-msvc': 4.14.3
2273 | '@rollup/rollup-win32-x64-msvc': 4.14.3
2274 | fsevents: 2.3.3
2275 | dev: true
2276 |
2277 | /run-parallel@1.2.0:
2278 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2279 | dependencies:
2280 | queue-microtask: 1.2.3
2281 | dev: true
2282 |
2283 | /semver@7.6.0:
2284 | resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
2285 | engines: {node: '>=10'}
2286 | hasBin: true
2287 | dependencies:
2288 | lru-cache: 6.0.0
2289 | dev: true
2290 |
2291 | /shebang-command@2.0.0:
2292 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2293 | engines: {node: '>=8'}
2294 | dependencies:
2295 | shebang-regex: 3.0.0
2296 | dev: true
2297 |
2298 | /shebang-regex@3.0.0:
2299 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2300 | engines: {node: '>=8'}
2301 | dev: true
2302 |
2303 | /siginfo@2.0.0:
2304 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
2305 | dev: true
2306 |
2307 | /signal-exit@3.0.7:
2308 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2309 | dev: true
2310 |
2311 | /signal-exit@4.0.2:
2312 | resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==}
2313 | engines: {node: '>=14'}
2314 | dev: true
2315 |
2316 | /signal-exit@4.1.0:
2317 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
2318 | engines: {node: '>=14'}
2319 | dev: true
2320 |
2321 | /slash@3.0.0:
2322 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2323 | engines: {node: '>=8'}
2324 | dev: true
2325 |
2326 | /source-map-js@1.2.0:
2327 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
2328 | engines: {node: '>=0.10.0'}
2329 | dev: true
2330 |
2331 | /source-map@0.8.0-beta.0:
2332 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
2333 | engines: {node: '>= 8'}
2334 | dependencies:
2335 | whatwg-url: 7.1.0
2336 | dev: true
2337 |
2338 | /stackback@0.0.2:
2339 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
2340 | dev: true
2341 |
2342 | /std-env@3.7.0:
2343 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
2344 | dev: true
2345 |
2346 | /string-width@4.2.3:
2347 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
2348 | engines: {node: '>=8'}
2349 | dependencies:
2350 | emoji-regex: 8.0.0
2351 | is-fullwidth-code-point: 3.0.0
2352 | strip-ansi: 6.0.1
2353 | dev: true
2354 |
2355 | /string-width@5.1.2:
2356 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
2357 | engines: {node: '>=12'}
2358 | dependencies:
2359 | eastasianwidth: 0.2.0
2360 | emoji-regex: 9.2.2
2361 | strip-ansi: 7.0.1
2362 | dev: true
2363 |
2364 | /strip-ansi@6.0.1:
2365 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2366 | engines: {node: '>=8'}
2367 | dependencies:
2368 | ansi-regex: 5.0.1
2369 | dev: true
2370 |
2371 | /strip-ansi@7.0.1:
2372 | resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==}
2373 | engines: {node: '>=12'}
2374 | dependencies:
2375 | ansi-regex: 6.0.1
2376 | dev: true
2377 |
2378 | /strip-final-newline@2.0.0:
2379 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
2380 | engines: {node: '>=6'}
2381 | dev: true
2382 |
2383 | /strip-final-newline@3.0.0:
2384 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
2385 | engines: {node: '>=12'}
2386 | dev: true
2387 |
2388 | /strip-json-comments@3.1.1:
2389 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2390 | engines: {node: '>=8'}
2391 | dev: true
2392 |
2393 | /strip-literal@2.1.0:
2394 | resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==}
2395 | dependencies:
2396 | js-tokens: 9.0.0
2397 | dev: true
2398 |
2399 | /sucrase@3.35.0:
2400 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
2401 | engines: {node: '>=16 || 14 >=14.17'}
2402 | hasBin: true
2403 | dependencies:
2404 | '@jridgewell/gen-mapping': 0.3.5
2405 | commander: 4.1.1
2406 | glob: 10.3.12
2407 | lines-and-columns: 1.2.4
2408 | mz: 2.7.0
2409 | pirates: 4.0.5
2410 | ts-interface-checker: 0.1.13
2411 | dev: true
2412 |
2413 | /supports-color@7.2.0:
2414 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2415 | engines: {node: '>=8'}
2416 | dependencies:
2417 | has-flag: 4.0.0
2418 | dev: true
2419 |
2420 | /synckit@0.8.8:
2421 | resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==}
2422 | engines: {node: ^14.18.0 || >=16.0.0}
2423 | dependencies:
2424 | '@pkgr/core': 0.1.1
2425 | tslib: 2.6.2
2426 | dev: true
2427 |
2428 | /text-table@0.2.0:
2429 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2430 | dev: true
2431 |
2432 | /thenify-all@1.6.0:
2433 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
2434 | engines: {node: '>=0.8'}
2435 | dependencies:
2436 | thenify: 3.3.1
2437 | dev: true
2438 |
2439 | /thenify@3.3.1:
2440 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
2441 | dependencies:
2442 | any-promise: 1.3.0
2443 | dev: true
2444 |
2445 | /tinybench@2.7.0:
2446 | resolution: {integrity: sha512-Qgayeb106x2o4hNzNjsZEfFziw8IbKqtbXBjVh7VIZfBxfD5M4gWtpyx5+YTae2gJ6Y6Dz/KLepiv16RFeQWNA==}
2447 | dev: true
2448 |
2449 | /tinypool@0.8.4:
2450 | resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==}
2451 | engines: {node: '>=14.0.0'}
2452 | dev: true
2453 |
2454 | /tinyspy@2.2.1:
2455 | resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
2456 | engines: {node: '>=14.0.0'}
2457 | dev: true
2458 |
2459 | /to-regex-range@5.0.1:
2460 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2461 | engines: {node: '>=8.0'}
2462 | dependencies:
2463 | is-number: 7.0.0
2464 | dev: true
2465 |
2466 | /tr46@1.0.1:
2467 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
2468 | dependencies:
2469 | punycode: 2.3.0
2470 | dev: true
2471 |
2472 | /tree-kill@1.2.2:
2473 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
2474 | hasBin: true
2475 | dev: true
2476 |
2477 | /ts-api-utils@1.3.0(typescript@5.4.5):
2478 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
2479 | engines: {node: '>=16'}
2480 | peerDependencies:
2481 | typescript: '>=4.2.0'
2482 | dependencies:
2483 | typescript: 5.4.5
2484 | dev: true
2485 |
2486 | /ts-interface-checker@0.1.13:
2487 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
2488 | dev: true
2489 |
2490 | /tsconfck@3.0.3(typescript@5.4.5):
2491 | resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==}
2492 | engines: {node: ^18 || >=20}
2493 | hasBin: true
2494 | peerDependencies:
2495 | typescript: ^5.0.0
2496 | peerDependenciesMeta:
2497 | typescript:
2498 | optional: true
2499 | dependencies:
2500 | typescript: 5.4.5
2501 | dev: true
2502 |
2503 | /tslib@1.14.1:
2504 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
2505 | dev: true
2506 |
2507 | /tslib@2.6.2:
2508 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
2509 | dev: true
2510 |
2511 | /tsup@8.0.2(typescript@5.4.5):
2512 | resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==}
2513 | engines: {node: '>=18'}
2514 | hasBin: true
2515 | peerDependencies:
2516 | '@microsoft/api-extractor': ^7.36.0
2517 | '@swc/core': ^1
2518 | postcss: ^8.4.12
2519 | typescript: '>=4.5.0'
2520 | peerDependenciesMeta:
2521 | '@microsoft/api-extractor':
2522 | optional: true
2523 | '@swc/core':
2524 | optional: true
2525 | postcss:
2526 | optional: true
2527 | typescript:
2528 | optional: true
2529 | dependencies:
2530 | bundle-require: 4.0.2(esbuild@0.19.12)
2531 | cac: 6.7.14
2532 | chokidar: 3.6.0
2533 | debug: 4.3.4
2534 | esbuild: 0.19.12
2535 | execa: 5.1.1
2536 | globby: 11.1.0
2537 | joycon: 3.1.1
2538 | postcss-load-config: 4.0.2
2539 | resolve-from: 5.0.0
2540 | rollup: 4.14.3
2541 | source-map: 0.8.0-beta.0
2542 | sucrase: 3.35.0
2543 | tree-kill: 1.2.2
2544 | typescript: 5.4.5
2545 | transitivePeerDependencies:
2546 | - supports-color
2547 | - ts-node
2548 | dev: true
2549 |
2550 | /tsutils@3.21.0(typescript@5.4.5):
2551 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
2552 | engines: {node: '>= 6'}
2553 | peerDependencies:
2554 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
2555 | dependencies:
2556 | tslib: 1.14.1
2557 | typescript: 5.4.5
2558 | dev: true
2559 |
2560 | /type-check@0.4.0:
2561 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2562 | engines: {node: '>= 0.8.0'}
2563 | dependencies:
2564 | prelude-ls: 1.2.1
2565 | dev: true
2566 |
2567 | /type-detect@4.0.8:
2568 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
2569 | engines: {node: '>=4'}
2570 | dev: true
2571 |
2572 | /type-fest@0.20.2:
2573 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2574 | engines: {node: '>=10'}
2575 | dev: true
2576 |
2577 | /typescript@5.4.5:
2578 | resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
2579 | engines: {node: '>=14.17'}
2580 | hasBin: true
2581 | dev: true
2582 |
2583 | /ufo@1.5.3:
2584 | resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==}
2585 | dev: true
2586 |
2587 | /undici-types@5.26.5:
2588 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
2589 | dev: true
2590 |
2591 | /uri-js@4.4.1:
2592 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2593 | dependencies:
2594 | punycode: 2.3.0
2595 | dev: true
2596 |
2597 | /vite-node@1.5.0(@types/node@20.12.7):
2598 | resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==}
2599 | engines: {node: ^18.0.0 || >=20.0.0}
2600 | hasBin: true
2601 | dependencies:
2602 | cac: 6.7.14
2603 | debug: 4.3.4
2604 | pathe: 1.1.2
2605 | picocolors: 1.0.0
2606 | vite: 5.2.8(@types/node@20.12.7)
2607 | transitivePeerDependencies:
2608 | - '@types/node'
2609 | - less
2610 | - lightningcss
2611 | - sass
2612 | - stylus
2613 | - sugarss
2614 | - supports-color
2615 | - terser
2616 | dev: true
2617 |
2618 | /vite-tsconfig-paths@4.3.2(typescript@5.4.5):
2619 | resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==}
2620 | peerDependencies:
2621 | vite: '*'
2622 | peerDependenciesMeta:
2623 | vite:
2624 | optional: true
2625 | dependencies:
2626 | debug: 4.3.4
2627 | globrex: 0.1.2
2628 | tsconfck: 3.0.3(typescript@5.4.5)
2629 | transitivePeerDependencies:
2630 | - supports-color
2631 | - typescript
2632 | dev: true
2633 |
2634 | /vite@5.2.8(@types/node@20.12.7):
2635 | resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==}
2636 | engines: {node: ^18.0.0 || >=20.0.0}
2637 | hasBin: true
2638 | peerDependencies:
2639 | '@types/node': ^18.0.0 || >=20.0.0
2640 | less: '*'
2641 | lightningcss: ^1.21.0
2642 | sass: '*'
2643 | stylus: '*'
2644 | sugarss: '*'
2645 | terser: ^5.4.0
2646 | peerDependenciesMeta:
2647 | '@types/node':
2648 | optional: true
2649 | less:
2650 | optional: true
2651 | lightningcss:
2652 | optional: true
2653 | sass:
2654 | optional: true
2655 | stylus:
2656 | optional: true
2657 | sugarss:
2658 | optional: true
2659 | terser:
2660 | optional: true
2661 | dependencies:
2662 | '@types/node': 20.12.7
2663 | esbuild: 0.20.2
2664 | postcss: 8.4.38
2665 | rollup: 4.14.3
2666 | optionalDependencies:
2667 | fsevents: 2.3.3
2668 | dev: true
2669 |
2670 | /vitest@1.5.0(@types/node@20.12.7):
2671 | resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==}
2672 | engines: {node: ^18.0.0 || >=20.0.0}
2673 | hasBin: true
2674 | peerDependencies:
2675 | '@edge-runtime/vm': '*'
2676 | '@types/node': ^18.0.0 || >=20.0.0
2677 | '@vitest/browser': 1.5.0
2678 | '@vitest/ui': 1.5.0
2679 | happy-dom: '*'
2680 | jsdom: '*'
2681 | peerDependenciesMeta:
2682 | '@edge-runtime/vm':
2683 | optional: true
2684 | '@types/node':
2685 | optional: true
2686 | '@vitest/browser':
2687 | optional: true
2688 | '@vitest/ui':
2689 | optional: true
2690 | happy-dom:
2691 | optional: true
2692 | jsdom:
2693 | optional: true
2694 | dependencies:
2695 | '@types/node': 20.12.7
2696 | '@vitest/expect': 1.5.0
2697 | '@vitest/runner': 1.5.0
2698 | '@vitest/snapshot': 1.5.0
2699 | '@vitest/spy': 1.5.0
2700 | '@vitest/utils': 1.5.0
2701 | acorn-walk: 8.3.2
2702 | chai: 4.4.1
2703 | debug: 4.3.4
2704 | execa: 8.0.1
2705 | local-pkg: 0.5.0
2706 | magic-string: 0.30.9
2707 | pathe: 1.1.2
2708 | picocolors: 1.0.0
2709 | std-env: 3.7.0
2710 | strip-literal: 2.1.0
2711 | tinybench: 2.7.0
2712 | tinypool: 0.8.4
2713 | vite: 5.2.8(@types/node@20.12.7)
2714 | vite-node: 1.5.0(@types/node@20.12.7)
2715 | why-is-node-running: 2.2.2
2716 | transitivePeerDependencies:
2717 | - less
2718 | - lightningcss
2719 | - sass
2720 | - stylus
2721 | - sugarss
2722 | - supports-color
2723 | - terser
2724 | dev: true
2725 |
2726 | /webidl-conversions@4.0.2:
2727 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
2728 | dev: true
2729 |
2730 | /whatwg-url@7.1.0:
2731 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
2732 | dependencies:
2733 | lodash.sortby: 4.7.0
2734 | tr46: 1.0.1
2735 | webidl-conversions: 4.0.2
2736 | dev: true
2737 |
2738 | /which@2.0.2:
2739 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2740 | engines: {node: '>= 8'}
2741 | hasBin: true
2742 | dependencies:
2743 | isexe: 2.0.0
2744 | dev: true
2745 |
2746 | /why-is-node-running@2.2.2:
2747 | resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==}
2748 | engines: {node: '>=8'}
2749 | hasBin: true
2750 | dependencies:
2751 | siginfo: 2.0.0
2752 | stackback: 0.0.2
2753 | dev: true
2754 |
2755 | /wrap-ansi@7.0.0:
2756 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2757 | engines: {node: '>=10'}
2758 | dependencies:
2759 | ansi-styles: 4.3.0
2760 | string-width: 4.2.3
2761 | strip-ansi: 6.0.1
2762 | dev: true
2763 |
2764 | /wrap-ansi@8.1.0:
2765 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
2766 | engines: {node: '>=12'}
2767 | dependencies:
2768 | ansi-styles: 6.2.1
2769 | string-width: 5.1.2
2770 | strip-ansi: 7.0.1
2771 | dev: true
2772 |
2773 | /wrappy@1.0.2:
2774 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2775 | dev: true
2776 |
2777 | /yallist@4.0.0:
2778 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2779 | dev: true
2780 |
2781 | /yaml@2.4.1:
2782 | resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==}
2783 | engines: {node: '>= 14'}
2784 | hasBin: true
2785 | dev: true
2786 |
2787 | /yocto-queue@0.1.0:
2788 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2789 | engines: {node: '>=10'}
2790 | dev: true
2791 |
2792 | /yocto-queue@1.0.0:
2793 | resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
2794 | engines: {node: '>=12.20'}
2795 | dev: true
2796 |
2797 | '@cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz':
2798 | resolution: {tarball: https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz}
2799 | name: xlsx
2800 | version: 0.20.2
2801 | engines: {node: '>=0.8'}
2802 | hasBin: true
2803 | dev: false
2804 |
--------------------------------------------------------------------------------
/src/bin/cli.ts:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env node
2 | import { writeFile } from "node:fs/promises";
3 | import { build } from "src/index";
4 |
5 | const [action = "build", ...args] = process.argv.slice(2);
6 |
7 | const readStdin = async (bufferSize?: number): Promise => {
8 | return new Promise((resolve) => {
9 | const buffers: Buffer[] = [];
10 | process.stdin.on("readable", () => {
11 | const read = process.stdin.read();
12 | if (read) {
13 | buffers.push(read);
14 | }
15 | });
16 | process.stdin.on("end", () => {
17 | resolve(Buffer.concat(buffers, bufferSize));
18 | });
19 | });
20 | };
21 |
22 | const main = async () => {
23 | switch (action) {
24 | case "build": {
25 | const stdin = JSON.parse((await readStdin()).toString("utf8"));
26 | const result = build(stdin);
27 | await writeFile(args[0] || `${process.cwd()}/out.xlsx`, result);
28 | break;
29 | }
30 | default:
31 | console.log("Sorry, that is not something I know how to do.");
32 | }
33 | process.exit(0);
34 | };
35 |
36 | main();
37 |
--------------------------------------------------------------------------------
/src/config.ts:
--------------------------------------------------------------------------------
1 | import * as fs from "fs";
2 | import { set_fs } from "xlsx";
3 |
4 | set_fs(fs);
5 |
--------------------------------------------------------------------------------
/src/helpers.ts:
--------------------------------------------------------------------------------
1 | export const isString = (maybeString: unknown): maybeString is string => typeof maybeString === "string";
2 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import {
2 | AOA2SheetOpts,
3 | AutoFilterInfo,
4 | ColInfo,
5 | ParsingOptions,
6 | ProtectInfo,
7 | Range,
8 | read,
9 | readFile,
10 | RowInfo,
11 | Sheet2JSONOpts,
12 | utils,
13 | write,
14 | WritingOptions,
15 | } from "xlsx";
16 | import "./config";
17 | import { isString } from "./helpers";
18 | import { WorkBook } from "./workbook";
19 |
20 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
21 | export const parse = (mixed: unknown, options: Sheet2JSONOpts & ParsingOptions = {}) => {
22 | const { dateNF, header = 1, range, blankrows, defval, raw = true, rawNumbers, ...otherOptions } = options;
23 | const workBook = isString(mixed)
24 | ? readFile(mixed, { dateNF, raw, ...otherOptions })
25 | : read(mixed, { dateNF, raw, ...otherOptions });
26 | return Object.keys(workBook.Sheets).map((name) => {
27 | const sheet = workBook.Sheets[name]!;
28 | return {
29 | name,
30 | data: utils.sheet_to_json(sheet, {
31 | dateNF,
32 | header,
33 | range: typeof range === "function" ? range(sheet) : range,
34 | blankrows,
35 | defval,
36 | raw,
37 | rawNumbers,
38 | }),
39 | };
40 | });
41 | };
42 |
43 | export const parseMetadata = (mixed: unknown, options: ParsingOptions = {}) => {
44 | const workBook = isString(mixed) ? readFile(mixed, options) : read(mixed, options);
45 | return Object.keys(workBook.Sheets).map((name) => {
46 | const sheet = workBook.Sheets[name]!;
47 | return { name, data: sheet["!ref"] ? utils.decode_range(sheet["!ref"]) : null };
48 | });
49 | };
50 |
51 | export type WorkSheetOptions = {
52 | /** Column Info */
53 | "!cols"?: ColInfo[];
54 |
55 | /** Row Info */
56 | "!rows"?: RowInfo[];
57 |
58 | /** Merge Ranges */
59 | "!merges"?: Range[];
60 |
61 | /** Worksheet Protection info */
62 | "!protect"?: ProtectInfo;
63 |
64 | /** AutoFilter info */
65 | "!autofilter"?: AutoFilterInfo;
66 | };
67 |
68 | export type WorkSheet = {
69 | name: string;
70 | data: T[][];
71 | options: WorkSheetOptions;
72 | };
73 |
74 | export type BuildOptions = WorkSheetOptions & {
75 | parseOptions?: AOA2SheetOpts;
76 | writeOptions?: WritingOptions;
77 | sheetOptions?: WorkSheetOptions;
78 | };
79 |
80 | export const build = (
81 | worksheets: WorkSheet[],
82 | { parseOptions = {}, writeOptions = {}, sheetOptions = {}, ...otherOptions }: BuildOptions = {},
83 | ): Buffer => {
84 | const { bookType = "xlsx", bookSST = false, type = "buffer", ...otherWriteOptions } = writeOptions;
85 | const legacyOptions = Object.keys(otherOptions).filter((key) => {
86 | if (["!cols", "!rows", "!merges", "!protect", "!autofilter"].includes(key)) {
87 | console.debug(`Deprecated options['${key}'], please use options.sheetOptions['${key}'] instead.`);
88 | return true;
89 | }
90 | console.debug(`Unknown options['${key}'], please use options.parseOptions / options.writeOptions`);
91 | return false;
92 | });
93 | const workBook = worksheets.reduce((soFar, { name, data, options = {} }, index) => {
94 | const sheetName = name || `Sheet_${index}`;
95 | const sheetData = utils.aoa_to_sheet(data, parseOptions);
96 | soFar.SheetNames.push(sheetName);
97 | soFar.Sheets[sheetName] = sheetData;
98 | Object.assign(soFar.Sheets[sheetName]!, legacyOptions, sheetOptions, options);
99 | return soFar;
100 | }, new WorkBook());
101 | return write(workBook, { bookType, bookSST, type, ...otherWriteOptions });
102 | };
103 |
104 | export default { parse, parseMetadata, build };
105 |
--------------------------------------------------------------------------------
/src/workbook.ts:
--------------------------------------------------------------------------------
1 | import type { WorkSheet, WorkBook as XLSXWorkBook } from "xlsx";
2 |
3 | export class WorkBook implements XLSXWorkBook {
4 | Sheets: Record = {};
5 | SheetNames: string[] = [];
6 | }
7 |
--------------------------------------------------------------------------------
/test/fixtures/dateField.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "Sheet1",
4 | "data": [
5 | ["Serial 1", "Serial 2", "Serial 3", "UPC", "PO#", "Date Received"],
6 | ["SPKA19BD170C53", "SPKA19BD170420", "SPKA19BD1707F3", "861453000227", "10012", "5/25/17"],
7 | ["SPKA19BD16007A", "SPKA19BD170927", "SPKA19BD1702B9", "861453000227", "10012", "5/25/17"]
8 | ]
9 | }
10 | ]
11 |
--------------------------------------------------------------------------------
/test/fixtures/dateField.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mgcrea/node-xlsx/89d8faec210ee9fcb302da9fc64f3c29b0e57cb2/test/fixtures/dateField.xlsx
--------------------------------------------------------------------------------
/test/fixtures/sheetOptions.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "myFirstSheet",
4 | "data": [
5 | [1, 2, 3],
6 | [true, false, null, "sheetjs"],
7 | ["foo", "bar", 41689.604166666664, "0.3"],
8 | ["baz", null, "qux"]
9 | ]
10 | },
11 | {
12 | "name": "mySecondSheet",
13 | "data": [
14 | [4, 5, 6],
15 | [7, 8, 9, 10],
16 | [11, 12, 13, 14],
17 | ["baz", null, "qux"]
18 | ],
19 | "options": {
20 | "!merges": [{ "s": { "c": 0, "r": 0 }, "e": { "c": 0, "r": 3 } }]
21 | }
22 | }
23 | ]
24 |
--------------------------------------------------------------------------------
/test/fixtures/sheetOptions.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mgcrea/node-xlsx/89d8faec210ee9fcb302da9fc64f3c29b0e57cb2/test/fixtures/sheetOptions.xlsx
--------------------------------------------------------------------------------
/test/fixtures/test.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "mySheetName",
4 | "data": [
5 | [1, 2, 3],
6 | [true, false, null, "sheetjs"],
7 | ["foo", "bar", 41689.604166666664, "0.3"],
8 | ["baz", null, "qux"]
9 | ]
10 | }
11 | ]
12 |
--------------------------------------------------------------------------------
/test/fixtures/test.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mgcrea/node-xlsx/89d8faec210ee9fcb302da9fc64f3c29b0e57cb2/test/fixtures/test.xlsx
--------------------------------------------------------------------------------
/test/fixtures/withEmptyColumns.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "with empty columns",
4 | "data": [
5 | [null, null, "c2", "d2", "e2"],
6 | [null, null, "c3", "d2", "e3"]
7 | ]
8 | }
9 | ]
10 |
--------------------------------------------------------------------------------
/test/fixtures/withEmptyColumns.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mgcrea/node-xlsx/89d8faec210ee9fcb302da9fc64f3c29b0e57cb2/test/fixtures/withEmptyColumns.xlsx
--------------------------------------------------------------------------------
/test/setup.ts:
--------------------------------------------------------------------------------
1 | import "./utils/debug";
2 |
--------------------------------------------------------------------------------
/test/specs/build.spec.ts:
--------------------------------------------------------------------------------
1 | import { describe, expect, it } from "vitest";
2 | import { build as buildXSLX } from "../../src";
3 | import { readBufferFixture, readFixture } from "../utils";
4 |
5 | describe("node-xlsx builder", () => {
6 | it("should throw if no input is given", () => {
7 | // @ts-expect-error jest
8 | expect(() => buildXSLX()).toThrow();
9 | });
10 | it("should properly build an XLSX from", () => {
11 | const expected = readBufferFixture(`test.xlsx`);
12 | const worksheets = JSON.parse(readFixture(`test.json`));
13 | const result = buildXSLX(worksheets);
14 | expect(result instanceof Buffer).toBeTruthy();
15 | // Only check the four first bytes
16 | expect(result.subarray(0, 4)).toEqual(expected.subarray(0, 4));
17 | });
18 | it("should handle !merges sheetOption", () => {
19 | const expected = readBufferFixture(`sheetOptions.xlsx`);
20 | const worksheets = JSON.parse(readFixture(`sheetOptions.json`));
21 | const result = buildXSLX(worksheets);
22 | expect(result instanceof Buffer).toBeTruthy();
23 | // Only check the four first bytes
24 | expect(result.subarray(0, 4)).toEqual(expected.subarray(0, 4));
25 | });
26 | it("should handle global sheet options", () => {
27 | const worksheets = JSON.parse(readFixture(`test.json`));
28 | const result = buildXSLX(worksheets, {
29 | sheetOptions: {
30 | "!merges": [{ s: { c: 0, r: 0 }, e: { c: 0, r: 3 } }],
31 | },
32 | });
33 | expect(result instanceof Buffer).toBeTruthy();
34 | });
35 | it("should handle global legacy options", () => {
36 | const worksheets = JSON.parse(readFixture(`test.json`));
37 | const result = buildXSLX(worksheets, {
38 | "!merges": [{ s: { c: 0, r: 0 }, e: { c: 0, r: 3 } }],
39 | });
40 | expect(result instanceof Buffer).toBeTruthy();
41 | });
42 | });
43 |
--------------------------------------------------------------------------------
/test/specs/import.spec.ts:
--------------------------------------------------------------------------------
1 | import { describe, expect, it } from "vitest";
2 | import XSLX from "../../src";
3 |
4 | describe("node-xlsx import", () => {
5 | it("should get current object", () => {
6 | expect(typeof XSLX).toBe("object");
7 | });
8 | it("should has current keys", () => {
9 | expect(Object.keys(XSLX)).toEqual(["parse", "parseMetadata", "build"]);
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/test/specs/parse.spec.ts:
--------------------------------------------------------------------------------
1 | import { describe, expect, it } from "vitest";
2 | import xlsx from "xlsx";
3 | import { parse as parseXSLX } from "../../src";
4 | import { readBufferFixture, readFixture } from "../utils";
5 |
6 | describe("node-xlsx parser", () => {
7 | it("should throw if no input is given", () => {
8 | // @ts-expect-error jest
9 | expect(() => parseXSLX()).toThrow();
10 | });
11 | it("should properly parse an XLSX buffer", () => {
12 | const expected = JSON.parse(readFixture(`test.json`));
13 | const buffer = readBufferFixture(`test.xlsx`);
14 | const result = JSON.parse(JSON.stringify(parseXSLX(buffer)));
15 | expect(result).toEqual(expected);
16 | });
17 | it("should properly parse an XLSX file", () => {
18 | const expected = JSON.parse(readFixture(`test.json`));
19 | const file = `test/fixtures/test.xlsx`;
20 | const result = JSON.parse(JSON.stringify(parseXSLX(file)));
21 | expect(result).toEqual(expected);
22 | });
23 | it("should properly parse an XLSX file with date field", () => {
24 | const expected = JSON.parse(readFixture(`dateField.json`));
25 | const file = `test/fixtures/dateField.xlsx`;
26 | const result = JSON.parse(JSON.stringify(parseXSLX(file, { raw: false })));
27 | expect(result).toEqual(expected);
28 | });
29 | it("should properly parse an XLSX with a range option as a function", () => {
30 | const expected = JSON.parse(readFixture("withEmptyColumns.json"));
31 | const file = "test/fixtures/withEmptyColumns.xlsx";
32 | const result = JSON.parse(
33 | JSON.stringify(
34 | parseXSLX(file, {
35 | raw: true,
36 | header: 1,
37 | range: function keepEmptyColumns(sheet: xlsx.WorkSheet) {
38 | if (sheet["!ref"]) {
39 | const { s, e } = xlsx.utils.decode_range(sheet["!ref"]);
40 | // starts at column #1
41 | s.c = 0;
42 | return xlsx.utils.encode_range(s, e);
43 | }
44 | return sheet["!ref"];
45 | },
46 | }),
47 | ),
48 | );
49 | expect(result).toEqual(expected);
50 | });
51 | });
52 |
--------------------------------------------------------------------------------
/test/utils/debug.ts:
--------------------------------------------------------------------------------
1 | import { formatWithOptions } from "node:util";
2 |
3 | declare global {
4 | // eslint-disable-next-line no-var
5 | var d: (...args: unknown[]) => void;
6 | }
7 |
8 | export const d = (...args: unknown[]) =>
9 | console.log(`🔴 ${formatWithOptions({ depth: 10, colors: true }, args.length === 1 ? args[0] : args)}`);
10 |
11 | globalThis.d = d;
12 |
--------------------------------------------------------------------------------
/test/utils/index.ts:
--------------------------------------------------------------------------------
1 | import { readFileSync } from "fs";
2 |
3 | export const readBufferFixture = (name: string) => readFileSync(`${__dirname}/../fixtures/${name}`);
4 | export const readFixture = (name: string) => readBufferFixture(name).toString("utf8");
5 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["@tsconfig/node-lts/tsconfig.json"],
3 | "compilerOptions": {
4 | "module": "ESNext",
5 | "moduleResolution": "Bundler",
6 | "baseUrl": ".",
7 | "paths": {
8 | "src/*": ["./src/*"],
9 | "test/*": ["./test/*"]
10 | }
11 | },
12 | "include": ["src", "test"]
13 | }
14 |
--------------------------------------------------------------------------------
/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import tsconfigPaths from "vite-tsconfig-paths";
2 | import { defineConfig } from "vitest/config";
3 |
4 | export default defineConfig({
5 | plugins: [tsconfigPaths()],
6 | test: {
7 | setupFiles: ["test/setup.ts"],
8 | },
9 | });
10 |
--------------------------------------------------------------------------------