The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .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 | <!-- markdownlint-disable no-inline-html -->
  2 | 
  3 | # node-xlsx
  4 | 
  5 | <p align="center">
  6 |   <a href="https://www.npmjs.com/package/node-xlsx">
  7 |     <img src="https://img.shields.io/npm/v/node-xlsx.svg?style=for-the-badge" alt="npm version" />
  8 |   </a>
  9 |   <a href="https://www.npmjs.com/package/node-xlsx">
 10 |     <img src="https://img.shields.io/npm/dt/node-xlsx.svg?style=for-the-badge" alt="npm total downloads" />
 11 |   </a>
 12 |   <a href="https://www.npmjs.com/package/node-xlsx">
 13 |     <img src="https://img.shields.io/npm/dm/node-xlsx.svg?style=for-the-badge" alt="npm monthly downloads" />
 14 |   </a>
 15 |   <a href="https://www.npmjs.com/package/node-xlsx">
 16 |     <img src="https://img.shields.io/npm/l/node-xlsx.svg?style=for-the-badge" alt="npm license" />
 17 |   </a>
 18 |   <a href="https://github.com/mgcrea/node-xlsx/actions/workflows/main.yml">
 19 |     <img src="https://img.shields.io/github/actions/workflow/status/mgcrea/node-xlsx/main.yml?style=for-the-badge&branch=master" alt="build status" />
 20 |   </a>
 21 | </p>
 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 <olivier@mg-crea.com>",
 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<Buffer> => {
 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 = <T = any[]>(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<T>(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<T = unknown> = {
 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<WorkBook>((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<string, WorkSheet> = {};
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 | 


--------------------------------------------------------------------------------