├── .editorconfig
├── .github
├── FUNDING.yml
└── workflows
│ └── main.yml
├── .gitignore
├── LICENSE
├── eslint.config.mjs
├── jest.config.js
├── package.json
├── readme.md
├── src
└── truncate.ts
├── test
├── demo.ts
└── truncate.spec.ts
├── tsconfig.json
├── vite.config.ts
└── yarn.lock
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.{md,markdown}]
12 | trim_trailing_whitespace = false
13 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 |
4 | ko_fi: esaiya
5 | github: oe
6 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: CI
4 |
5 | # Controls when the action will run. Triggers the workflow on push or pull request
6 | # events but only for the main branch
7 | on:
8 | push:
9 | branches:
10 | - main
11 | - feat/*
12 | pull_request:
13 | branches: [ main ]
14 |
15 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
16 | jobs:
17 | # This workflow contains a single job called "build"
18 | build:
19 | # The type of runner that the job will run on
20 | runs-on: ubuntu-latest
21 |
22 | # Steps represent a sequence of tasks that will be executed as part of the job
23 | steps:
24 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
25 | - uses: actions/checkout@v2
26 | - name: Use Node.js
27 | uses: actions/setup-node@v1
28 | with:
29 | node-version: '18.x'
30 |
31 | - name: install deps
32 | run: yarn
33 |
34 | - name: build lib
35 | run: yarn test && yarn build
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | config.codekit
2 | validate.js
3 | test.coffee
4 | lib/test.js
5 | lib/truncate-old.coffee
6 | node_modules
7 | coverage
8 | npm-debug.log
9 | .idea
10 | .vscode
11 | .rpt2_cache
12 | .parcel-cache
13 | dist
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Saiya
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import eslint from '@eslint/js';
2 | import tseslint from 'typescript-eslint';
3 |
4 | export default tseslint.config(
5 | eslint.configs.recommended,
6 | ...tseslint.configs.strict,
7 | ...tseslint.configs.stylistic,
8 | );
9 |
--------------------------------------------------------------------------------
/jest.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('ts-jest').JestConfigWithTsJest} */
2 | module.exports = {
3 | preset: 'ts-jest',
4 | testEnvironment: 'node',
5 | collectCoverage: true,
6 | };
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "truncate-html",
3 | "version": "1.2.1",
4 | "description": "Truncate HTML and Keep Tags",
5 | "main": "dist/truncate.cjs.js",
6 | "module": "dist/truncate.es.js",
7 | "types": "dist/truncate.d.ts",
8 | "files": [
9 | "dist"
10 | ],
11 | "scripts": {
12 | "dev": "tsx ./test/demo.ts",
13 | "build": "vite build",
14 | "prepublish": "yarn test && yarn build",
15 | "test": "vitest --coverage",
16 | "test:server": "vitest --watch",
17 | "lint": "eslint src"
18 | },
19 | "dependencies": {
20 | "cheerio": "1.0.0-rc.12"
21 | },
22 | "devDependencies": {
23 | "@eslint/js": "^9.12.0",
24 | "@types/eslint__js": "^8.42.3",
25 | "@vitest/coverage-v8": "2.1.2",
26 | "eslint": "^9.12.0",
27 | "tsx": "^4.19.1",
28 | "typescript": "^5.6.3",
29 | "typescript-eslint": "^8.8.1",
30 | "vite": "^5.4.8",
31 | "vite-plugin-dts": "^4.2.4",
32 | "vitest": "^2.1.2"
33 | },
34 | "repository": {
35 | "type": "git",
36 | "url": "git+https://oe@github.com/oe/truncate-html.git"
37 | },
38 | "keywords": [
39 | "truncate html",
40 | "html",
41 | "truncate"
42 | ],
43 | "author": {
44 | "name": "Saiya",
45 | "url": "https://github.com/oe"
46 | },
47 | "contributors": [
48 | {
49 | "name": "Caleb Eno",
50 | "url": "https://github.com/calebeno"
51 | },
52 | {
53 | "name": "Aaditya Thakkar",
54 | "url": "https://github.com/aaditya-thakkar"
55 | }
56 | ],
57 | "license": "MIT",
58 | "bugs": {
59 | "url": "https://github.com/oe/truncate-html/issues"
60 | },
61 | "homepage": "https://github.com/oe/truncate-html#readme"
62 | }
63 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 |
truncate-html
2 |
3 | Truncate html string(even contains emoji chars) and keep tags in safe. You can custom ellipsis sign, ignore unwanted elements and truncate html by words.
4 |
18 |
19 |
20 |
21 | **Notice** This is a node module depends on [cheerio](https://github.com/cheeriojs/cheerio) _can only run on nodejs_. If you need a browser version, you may consider [truncate](https://github.com/pathable/truncate) or [nodejs-html-truncate](https://github.com/huang47/nodejs-html-truncate).
22 |
23 | ```javascript
24 | const truncate = require('truncate-html')
25 | truncate('
Hello from earth!
', 2, { byWords: true })
26 | // =>
Hello from ...
27 | ```
28 |
29 | ## Installation
30 |
31 | `npm install truncate-html`
32 | or
33 | `yarn add truncate-html`
34 |
35 | ## Try it online
36 |
37 | Click **** to try.
38 |
39 | ## API
40 |
41 | ```ts
42 | /**
43 | * custom node strategy, default to Cheerio
44 | * * 'remove' to remove the node
45 | * * 'keep' to keep the node(and anything inside it) anyway, and won't be counted as there is no text content in it
46 | * * Cheerio truncate the returned node
47 | * * undefined or any falsy value to truncate original node
48 | */
49 | type ICustomNodeStrategy = (node: Cheerio) => 'remove' | 'keep' | Cheerio | undefined
50 |
51 | /**
52 | * truncate-html full options object
53 | */
54 | interface IFullOptions {
55 | /**
56 | * remove all tags, default false
57 | */
58 | stripTags: boolean
59 | /**
60 | * ellipsis sign, default '...'
61 | */
62 | ellipsis: string
63 | /**
64 | * decode html entities(e.g. convert `&` to `&`) before counting length, default false
65 | */
66 | decodeEntities: boolean
67 | /**
68 | * elements' selector you want ignore
69 | */
70 | excludes: string | string[]
71 | /**
72 | * custom node strategy, default to Cheerio
73 | * * 'remove' to remove the node
74 | * * 'keep' to keep the node(and anything inside it) anyway, and won't be counted as there is no text content in it
75 | * * Cheerio truncate the returned node
76 | * * undefined or any falsy value to truncate original node
77 | */
78 | customNodeStrategy: ICustomNodeStrategy
79 | /**
80 | * how many letters(words if `byWords` is true) you want reserve
81 | */
82 | length: number
83 | /**
84 | * if true, length means how many words to reserve
85 | */
86 | byWords: boolean
87 | /**
88 | * how to deal with when truncate in the middle of a word
89 | * 1. by default, just cut at that position.
90 | * 2. set it to true, with max exceed 10 letters can exceed to reserver the last word
91 | * 3. set it to a positive number decide how many letters can exceed to reserve the last word
92 | * 4. set it to negative number to remove the last word if cut in the middle.
93 | */
94 | reserveLastWord: boolean | number
95 | /**
96 | * if reserveLastWord set to negative number, and there is only one word in the html string, when trimTheOnlyWord set to true, the extra letters will be sliced if word's length longer than `length`.
97 | * see issue #23 for more details
98 | */
99 | trimTheOnlyWord: boolean
100 | /**
101 | * keep whitespaces, by default continuous paces will
102 | * be replaced with one space, set it true to keep them
103 | */
104 | keepWhitespaces: boolean
105 | }
106 |
107 | /**
108 | * options interface for function
109 | */
110 | type IOptions = Partial
111 |
112 | function truncate(html: string | CheerioAPI, length?: number | IOptions, truncateOptions?: IOptions): string
113 | // and truncate.setup to change default options
114 | truncate.setup(options: IOptions): void
115 | ```
116 |
117 | ### Default options
118 |
119 | ```js
120 | {
121 | stripTags: false,
122 | ellipsis: '...',
123 | decodeEntities: false,
124 | excludes: '',
125 | byWords: false,
126 | reserveLastWord: false,
127 | trimTheOnlyWord: false,
128 | keepWhitespaces: false
129 | }
130 | ```
131 |
132 | You can change default options by using `truncate.setup`
133 |
134 | e.g.
135 |
136 | ```ts
137 | truncate.setup({ stripTags: true, length: 10 })
138 | truncate('
Hello from earth!
')
139 | // => Hello from
140 | ```
141 |
142 | or use existing [cheerio instance](https://github.com/cheeriojs/cheerio#loading)
143 |
144 | ```ts
145 | import * as cheerio from 'cheerio'
146 | truncate.setup({ stripTags: true, length: 10 })
147 | // truncate option `decodeEntities` will not work
148 | // you should config it in cheerio options by yourself
149 | const $ = cheerio.load('
Hello from earth!
', {
150 | /** set decodeEntities if you need it */
151 | decodeEntities: true
152 | /* any cheerio instance options*/
153 | }, false) // third parameter is for `isDocument` option, set to false to get rid of extra wrappers, see cheerio's doc for details
154 | truncate($)
155 | // => Hello from
156 | ```
157 |
158 |
159 | ## Notice
160 |
161 | ### Typescript support
162 |
163 | This lib is written with typescript and has a type definition file along with it. ~~You may need to update your `tsconfig.json` by adding `"esModuleInterop": true` to the `compilerOptions` if you encounter some typing errors, see [#19](https://github.com/oe/truncate-html/issues/19).~~
164 |
165 | ```ts
166 | import truncate, { type IOptions } from 'truncate-html'
167 |
168 |
169 | const html = '
italicboldThis is a string
for test.'
170 |
171 | const options: IOptions = {
172 | length: 10,
173 | byWords: true
174 | }
175 |
176 | truncate(html, options)
177 | // =>
italicbold...
178 | ```
179 |
180 | ### custom node truncate strategy
181 | In complex html string, you may want to keep some special elements and truncate the others. You can use `customNodeStrategy` to achieve this:
182 | * return `'remove'` to remove the node
183 | * `keep` to keep the node(and anything inside it) anyway, and won't be counted as there is no text content in it
184 | * `Cheerio` to truncate the returned node, or any falsy value to truncate the original node.
185 |
186 | ```ts
187 | import truncate, { type IOptions, type ICustomNodeStrategy } from 'truncate-html'
188 |
189 | // argument node is a cheerio instance
190 | const customNodeStrategy: ICustomNodeStrategy = node => {
191 | // remove img tag
192 | if (node.is('img')) {
193 | return 'remove'
194 | }
195 | // keep italic tag and its children
196 | if (node.is('i')) {
197 | return 'keep'
198 | }
199 | // truncate summary tag that inside details tag instead of details tag
200 | if (node.is('details')) {
201 | return node.find('summary')
202 | }
203 | }
204 |
205 | const html = '
italicboldClick me
Some details
This is a string
for test.'
206 |
207 | const options: IOptions = {
208 | length: 10,
209 | customNodeStrategy
210 | }
211 |
212 | truncate(html, options)
213 | // => italicboldClick me
Some details
Th...
214 |
215 |
216 | ```
217 |
218 | ### About final string length
219 |
220 | If the html string content's length is shorter than `options.length`, then no ellipsis will be appended to the final html string. If longer, then the final string length will be `options.length` + `options.ellipsis`. And if you set `reserveLastWord` to true or none zero number or using `customNodeStrategy`, the final string will be various.
221 |
222 | ### About html comments
223 |
224 | All html comments `` will be removed
225 |
226 | ### About dealing with none alphabetic languages
227 |
228 | When dealing with none alphabetic languages, such as Chinese/Japanese/Korean, they don't separate words with whitespaces, so options `byWords` and `reserveLastWord` should only works well with alphabetic languages.
229 |
230 | And the only dependency of this project `cheerio` has an issue when dealing with none alphabetic languages, see [Known Issues](#known-issues) for details.
231 |
232 | ### Using existing cheerio instance
233 |
234 | If you want to use existing cheerio instance, truncate option `decodeEntities` will not work, you should set it in your own cheerio instance:
235 |
236 | ```js
237 | var html = '
This is a string
for test.'
238 | const $ = cheerio.load(`${html}`, {
239 | decodeEntities: true
240 | /** other cheerio options */
241 | }, false) // third parameter is for `isDocument` option, set to false to get rid of extra wrappers, see cheerio's doc for details
242 | truncate($, 10)
243 |
244 | ```
245 |
246 | ## Examples
247 |
248 | ```javascript
249 | var truncate = require('truncate-html')
250 |
251 | // truncate html
252 | var html = '
This is a string
for test.'
253 | truncate(html, 10)
254 | // returns:
This is a ...
255 |
256 | // truncate string with emojis
257 | var string = 'poo 💩💩💩💩💩
'
258 | truncate(string, 6)
259 | // returns:
poo 💩💩...
260 |
261 | // with options, remove all tags
262 | var html = '
This is a string
for test.'
263 | truncate(html, 10, { stripTags: true })
264 | // returns: This is a ...
265 |
266 | // with options, truncate by words.
267 | // if you try to truncate none alphabet language(like CJK)
268 | // it will not act as you wish
269 | var html = '
This is a string
for test.'
270 | truncate(html, 3, { byWords: true })
271 | // returns:
This is a ...
272 |
273 | // with options, keep whitespaces
274 | var html = '
This is a string
for test.'
275 | truncate(html, 10, { keepWhitespaces: true })
276 | // returns:
This is a ...
277 |
278 | // combine length and options
279 | var html = '
This is a string
for test.'
280 | truncate(html, {
281 | length: 10,
282 | stripTags: true
283 | })
284 | // returns: This is a ...
285 |
286 | // custom ellipsis sign
287 | var html = '
This is a string
for test.'
288 | truncate(html, {
289 | length: 10,
290 | ellipsis: '~'
291 | })
292 | // returns:
This is a ~
293 |
294 | // exclude some special elements(by selector), they will be removed before counting content's length
295 | var html = '
This is a string
for test.'
296 | truncate(html, {
297 | length: 10,
298 | ellipsis: '~',
299 | excludes: 'img'
300 | })
301 | // returns: This is a ~
302 |
303 | // exclude more than one category elements
304 | var html =
305 | '
This is a string
unwanted string inserted ( ´•̥̥̥ω•̥̥̥` )
for test.'
306 | truncate(html, {
307 | length: 20,
308 | stripTags: true,
309 | ellipsis: '~',
310 | excludes: ['img', '.something-unwanted']
311 | })
312 | // returns: This is a string for~
313 |
314 | // handing encoded characters
315 | var html = ' test for <p> encoded string
'
316 | truncate(html, {
317 | length: 20,
318 | decodeEntities: true
319 | })
320 | // returns: test for <p> encode...
321 |
322 | // when set decodeEntities false
323 | var html = ' test for <p> encoded string
'
324 | truncate(html, {
325 | length: 20,
326 | decodeEntities: false // this is the default value
327 | })
328 | // returns: test for <p...
329 |
330 | // and there may be a surprise by setting `decodeEntities` to true when handing CJK characters
331 | var html = ' test for <p> 中文 string
'
332 | truncate(html, {
333 | length: 20,
334 | decodeEntities: true
335 | })
336 | // returns: test for <p> 中文 str...
337 | // to fix this, see below for instructions
338 |
339 |
340 | // custom node strategy to keep some special elements
341 | var html = '
italicboldThis is a string
for test.'
342 | truncate(html, {
343 | length: 10,
344 | customNodeStrategy: node => {
345 | if (node.is('img')) {
346 | return 'remove'
347 | }
348 | if (node.is('i')) {
349 | return 'keep'
350 | }
351 | }
352 | })
353 | // returns: italicboldThis is a ...
354 |
355 | // custom node strategy to truncate summary instead of original node
356 | var html = 'Click me
Some details
other things
'
357 | truncate(html, {
358 | length: 10,
359 | customNodeStrategy: node => {
360 | if (node.is('details')) {
361 | return node.find('summary')
362 | }
363 | }
364 | })
365 | // returns: Click me
Some details
ot...
366 | ```
367 |
368 | for More usages, check [truncate.spec.ts](./test/truncate.spec.ts)
369 |
370 | ## Credits
371 |
372 | Thanks to:
373 |
374 | - [@calebeno](https://github.com/calebeno) es6 support and unit tests
375 | - [@aaditya-thakkar](https://github.com/aaditya-thakkar) emoji truncating support
376 |
--------------------------------------------------------------------------------
/src/truncate.ts:
--------------------------------------------------------------------------------
1 | import cheerio, { CheerioAPI, Cheerio, AnyNode } from 'cheerio'
2 |
3 | /**
4 | * custom node strategy, default to Cheerio
5 | * * 'remove' to remove the node
6 | * * 'keep' to keep the node(and anything inside it) anyway, and won't be counted as there is no text content in it
7 | * * Cheerio truncate the returned node
8 | * * undefined or any falsy value to truncate original node
9 | */
10 | export type ICustomNodeStrategy = (node: Cheerio) => 'remove' | 'keep' | Cheerio | undefined
11 |
12 | /**
13 | * truncate-html full options object
14 | */
15 | export interface IFullOptions {
16 | /**
17 | * remove all tags, default false
18 | */
19 | stripTags: boolean
20 | /**
21 | * ellipsis sign, default '...'
22 | */
23 | ellipsis: string
24 | /**
25 | * decode html entities(e.g. convert `&` to `&`) before counting length, default false
26 | */
27 | decodeEntities: boolean
28 | /**
29 | * elements' selector you want ignore
30 | */
31 | excludes: string | string[]
32 | /**
33 | * custom node strategy, default to Cheerio
34 | * * 'remove' to remove the node
35 | * * 'keep' to keep the node(and anything inside it) anyway, and won't be counted as there is no text content in it
36 | * * Cheerio truncate the returned node
37 | * * undefined or any falsy value to truncate original node
38 | */
39 | customNodeStrategy: ICustomNodeStrategy
40 | /**
41 | * how many letters(words if `byWords` is true) you want reserve
42 | */
43 | length: number
44 | /**
45 | * if true, length means how many words to reserve
46 | */
47 | byWords: boolean
48 | /**
49 | * how to deal with when truncate in the middle of a word
50 | * 1. by default, just cut at that position.
51 | * 2. set it to true, with max exceed 10 letters can exceed to reserver the last word
52 | * 3. set it to a positive number decide how many letters can exceed to reserve the last word
53 | * 4. set it to negative number to remove the last word if cut in the middle.
54 | */
55 | reserveLastWord: boolean | number
56 | /**
57 | * if reserveLastWord set to negative number, and there is only one word in the html string, when trimTheOnlyWord set to true, the extra letters will be sliced if word's length longer than `length`.
58 | * see issue #23 for more details
59 | */
60 | trimTheOnlyWord: boolean
61 | /**
62 | * keep whitespaces, by default continuous paces will
63 | * be replaced with one space, set it true to keep them
64 | */
65 | keepWhitespaces: boolean
66 | }
67 |
68 | type ITruncateOptions = IFullOptions & { limit: number }
69 |
70 | /**
71 | * options interface for function
72 | */
73 | export type IOptions = Partial
74 |
75 | const astralRange = /\ud83c[\udffb-\udfff](?=\ud83c[\udffb-\udfff])|(?:[^\ud800-\udfff][\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]?|[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/g
76 |
77 | const defaultOptions: IOptions = {
78 | // remove all tags
79 | stripTags: false,
80 | // postfix of the string
81 | ellipsis: '...',
82 | // decode html entities
83 | decodeEntities: false,
84 | // whether truncate by words
85 | byWords: false,
86 | // // truncate by words, set to true keep words
87 | // // set to number then truncate by word count
88 | // length: 0
89 | excludes: '', // remove tags
90 | customNodeStrategy: (n: Cheerio) => n,
91 | reserveLastWord: false, // keep word completed if truncate at the middle of the word, works no matter byWords is true/false
92 | trimTheOnlyWord: false,
93 | keepWhitespaces: false // even if set true, continuous whitespace will count as one
94 | }
95 |
96 | // an special object to store user's default options, keep the defaultOptions clean
97 | let userDefaults: IOptions = defaultOptions
98 |
99 | export default function truncate(html: string | CheerioAPI, length?: number | IOptions, truncateOptions?: IOptions): string {
100 | const options = sanitizeOptions(length, truncateOptions)
101 |
102 | if (!html ||
103 | isNaN(options.length) ||
104 | options.length < 1 ||
105 | options.length === Infinity) {
106 | return isCheerioInstance(html) ? (html.html() || '') : html
107 | }
108 |
109 | let $: CheerioAPI
110 |
111 | if (isCheerioInstance(html)) {
112 | $ = html
113 | } else {
114 | // Add a wrapper for text node without tag like:
115 | // Lorem ipsum
dolor sit =>
116 | // the third parameter is false to prevent wrap html in html/body tags
117 | $ = cheerio.load(`${html}`, {
118 | decodeEntities: options.decodeEntities
119 | }, false)
120 | }
121 |
122 | const $html = $.root()
123 | // remove excludes elements
124 | if (options.excludes) $html.find(options.excludes as string).remove()
125 |
126 | if (options.stripTags) {
127 | return truncateText($html.text(), options)
128 | }
129 |
130 | const travelChildren = function ($ele: Cheerio, isParentLastNode = true) {
131 | const contents = $ele.contents()
132 | const lastIdx = contents.length - 1
133 | return contents.each(function (this: AnyNode, idx) {
134 | const nodeType = this.type
135 | const node = $(this)
136 | if (nodeType === 'text') {
137 | if (!options.limit) {
138 | node.remove()
139 | return
140 | }
141 | this.data = truncateText(
142 | node.text(),
143 | options,
144 | isParentLastNode && idx === lastIdx
145 | )
146 | return
147 | }
148 | if (nodeType === 'tag') {
149 | if (!options.limit) {
150 | node.remove()
151 | return
152 | }
153 | const strategy = options.customNodeStrategy(node)
154 | if(strategy === 'remove') {
155 | node.remove()
156 | return
157 | }
158 | if (strategy === 'keep') {
159 | return
160 | }
161 | travelChildren(strategy || node, isParentLastNode && idx === lastIdx)
162 | return
163 | }
164 | // for comments and other node types
165 | node.remove()
166 | return
167 | })
168 | }
169 |
170 | travelChildren($html)
171 | return $html.html() || ''
172 | }
173 |
174 | truncate.setup = function (options: IOptions) {
175 | userDefaults = extendOptions(options, defaultOptions)
176 | }
177 |
178 |
179 | function truncateText(text: string, options: ITruncateOptions, isLastNode?: boolean): string {
180 | if (!options.keepWhitespaces) {
181 | text = text.replace(/\s+/g, ' ')
182 | }
183 | const byWords = options.byWords
184 | const match = text.match(astralRange)
185 | const astralSafeCharacterArray = match === null ? [] : match
186 | const strLen = match === null ? 0 : astralSafeCharacterArray.length
187 | let idx = 0
188 | let count = 0
189 | let prevIsBlank = byWords
190 | let curIsBlank = false
191 | while (idx < strLen) {
192 | curIsBlank = isBlank(astralSafeCharacterArray[idx++])
193 | // keep same then continue
194 | if (byWords && prevIsBlank === curIsBlank) continue
195 | if (count === options.limit) {
196 | // reserve trailing whitespace, only when prev is blank too
197 | if (prevIsBlank && curIsBlank) {
198 | prevIsBlank = curIsBlank
199 | continue
200 | }
201 | // fix idx because current char belong to next words which exceed the limit
202 | --idx
203 | break
204 | }
205 |
206 | if (byWords) {
207 | if (!curIsBlank) ++count
208 | } else {
209 | if (!(curIsBlank && prevIsBlank)) ++count
210 | }
211 | prevIsBlank = curIsBlank
212 | }
213 | options.limit -= count
214 | if (options.limit) {
215 | return text
216 | }
217 | let str: string
218 | if (byWords) {
219 | str = text.substring(0, idx)
220 | } else {
221 | // @ts-expect-error fix ts error caused by regex
222 | str = astralSafeCharacterArray.length ? substr(astralSafeCharacterArray, idx, options) : ''
223 | }
224 | if (str === text) {
225 | // if is lat node, no need of ellipsis, or add it
226 | return isLastNode ? text : text + options.ellipsis
227 | } else {
228 | return str + options.ellipsis
229 | }
230 | }
231 |
232 | function substr (astralSafeCharacterArray: RegExpMatchArray, len: number, options: IFullOptions) {
233 | const sliced = astralSafeCharacterArray.slice(0, len).join('')
234 | if (!options.reserveLastWord || astralSafeCharacterArray.length === len) {
235 | return sliced
236 | }
237 | const boundary = astralSafeCharacterArray.slice(len - 1, len + 1).join('')
238 | // if truncate at word boundary, just return
239 | if (/\W/.test(boundary)) {
240 | return sliced
241 | }
242 | if (typeof options.reserveLastWord === 'number' && options.reserveLastWord < 0) {
243 | const result = sliced.replace(/\w+$/, '')
244 | // if the sliced is not the first and the only word
245 | // then return result, or return the whole word
246 | if (!(result.length === 0 && sliced.length === options.length)) {
247 | return result
248 | }
249 | if (options.trimTheOnlyWord) return sliced
250 | }
251 |
252 | // set max exceeded to 10 if this.reserveLastWord is true or < 0
253 | const maxExceeded =
254 | options.reserveLastWord !== true && options.reserveLastWord > 0
255 | ? options.reserveLastWord
256 | : 10
257 | const mtc = astralSafeCharacterArray.slice(len).join('').match(/(\w+)/)
258 | const exceeded = mtc ? mtc[1] : ''
259 | return sliced + exceeded.substring(0, maxExceeded)
260 | }
261 |
262 | function sanitizeOptions(length?: number | IOptions, truncateOptions?: IOptions) {
263 | switch (typeof length) {
264 | case 'object':
265 | truncateOptions = length
266 | break
267 | case 'number':
268 | if (typeof truncateOptions === 'object') {
269 | truncateOptions.length = length
270 | } else {
271 | truncateOptions = {
272 | length: length
273 | }
274 | }
275 | }
276 | if (truncateOptions && truncateOptions.excludes) {
277 | if (!Array.isArray(truncateOptions.excludes)) {
278 | truncateOptions.excludes = [truncateOptions.excludes]
279 | }
280 | truncateOptions.excludes = truncateOptions.excludes.join(',')
281 | }
282 | const options = extendOptions(Object.assign({}, userDefaults, truncateOptions), defaultOptions)
283 | options.limit = options.length
284 | return options as unknown as ITruncateOptions
285 | }
286 |
287 | // test a char whether a whitespace char
288 | function isBlank (char) {
289 | return (
290 | char === ' ' ||
291 | char === '\f' ||
292 | char === '\n' ||
293 | char === '\r' ||
294 | char === '\t' ||
295 | char === '\v' ||
296 | char === '\u00A0' ||
297 | char === '\u2028' ||
298 | char === '\u2029'
299 | )
300 | }
301 |
302 | function extendOptions(options: Record, defaultOptions: Record){
303 | if (options == null) {
304 | options = {}
305 | }
306 | for (const k in defaultOptions) {
307 | const v = defaultOptions[k]
308 | if (options[k] != null) {
309 | continue
310 | }
311 | options[k] = v
312 | }
313 | return options
314 | }
315 |
316 | /** return true if elem is CheerioStatic */
317 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
318 | function isCheerioInstance (elem: any): elem is CheerioAPI {
319 | return elem &&
320 | elem.contains &&
321 | elem.html &&
322 | elem.parseHTML && true
323 | }
324 |
--------------------------------------------------------------------------------
/test/demo.ts:
--------------------------------------------------------------------------------
1 | import truncate, { type ICustomNodeStrategy, type IOptions } from '../src/truncate'
2 | import * as cheerio from 'cheerio'
3 | // truncate.setup({ length: 5 })
4 | // const html = 'string'
5 | // const expected = '12345...'
6 |
7 | // const str = 'string'
8 | // const html = cheerio.load(str)
9 |
10 | // expect(truncate(html)).toBe(str)
11 | // expect(truncate(test, 7, {
12 | // reserveLastWord: -1 // exceed 10 letters
13 | // })).toBe(expected)
14 | // @ts-ignore
15 | // console.log(truncate(html))
16 | // console.log('expected', html)
17 |
18 | // const test = '123456789'
19 | // const expected = '12345...'
20 | // const $ = cheerio.load(test)
21 | // console.log(truncate($, 5))
22 | // console.log(expected)
23 |
24 | // const str = 'poo 💩💩💩💩💩
'
25 | // console.log(truncate(str, 6))
26 |
27 | let str = 'demo'
28 | str = '
a b c d ef
'
29 | // console.log(truncate(str, { length: 10, reserveLastWord: -1, ellipsis: '..' }))
30 |
31 | str = '1234567890
'
32 | console.log(truncate(str, { length: 5, reserveLastWord: -1, trimTheOnlyWord: true, ellipsis: '...' }))
33 |
34 | let html = '
italicboldThis is a string
for test.'
35 | console.log(truncate(html, {
36 | length: 10,
37 | customNodeStrategy: node => {
38 | if (node.is('img')) {
39 | return 'remove'
40 | }
41 | if (node.is('i')) {
42 | return 'keep'
43 | }
44 | }
45 | }))
46 | // const testString = '1234567
89
12'
47 |
48 | html = '
italicboldThis is a string
for test.'
49 |
50 | console.log(truncate(html, {
51 | length: 2,
52 | byWords: true
53 | }))
54 |
55 | html = 'Click me
Some details
other things
'
56 | console.log(truncate(html, {
57 | length: 10,
58 | customNodeStrategy: node => {
59 | if (node.is('details')) {
60 | return node.find('summary')
61 | }
62 | }
63 | }))
64 |
65 | const customNodeStrategy: ICustomNodeStrategy = node => {
66 | // remove img tag
67 | if (node.is('img')) {
68 | return 'remove'
69 | }
70 | // keep italic tag and its children
71 | if (node.is('i')) {
72 | return 'keep'
73 | }
74 | // truncate summary tag that inside details tag instead of details tag
75 | if (node.is('details')) {
76 | return node.find('summary')
77 | }
78 | }
79 |
80 | html = '
italicboldClick me
Some details
This is a string
for test.'
81 |
82 | const options: IOptions = {
83 | length: 10,
84 | customNodeStrategy
85 | }
86 |
87 | console.log(truncate(html, options))
88 |
89 | // const expected = '123456...'
90 | // console.log(truncate(testString, 6))
91 |
92 | // argument node is a cheerio instance
93 | const customNodeStrategy2: ICustomNodeStrategy = node => {
94 | // truncate summary tag that inside details tag instead of details tag
95 | if (node.is('details')) {
96 | return 'keep'
97 | }
98 | }
99 |
100 | html = 'Click me
Some details
other things
'
101 |
102 | console.log(truncate(html, {
103 | length: 3,
104 | customNodeStrategy: customNodeStrategy2
105 | }))
106 |
--------------------------------------------------------------------------------
/test/truncate.spec.ts:
--------------------------------------------------------------------------------
1 | import { describe, it, expect, afterEach } from 'vitest'
2 | import truncate from '../src/truncate'
3 | import cheerio, { AnyNode, Cheerio } from 'cheerio'
4 |
5 | describe('Truncate html', () => {
6 | describe('should works well when false params are given', () => {
7 | it('should NOT truncate a string if no string provided', () => {
8 | // @ts-expect-error test for null
9 | expect(truncate(null)).toBe(null)
10 | })
11 |
12 | it('should NOT truncate a string if NO length provided', () => {
13 | const html = 'string'
14 |
15 | expect(truncate(html)).toBe(html)
16 | })
17 |
18 | it("should NOT truncate a empty string", () => {
19 | const html = "";
20 | expect(truncate(html, 10)).toBe(html);
21 | });
22 | it("should NOT truncate a empty string instance", () => {
23 | const html = "";
24 | // third parameter for removing the document wrapper
25 | const $ = cheerio.load(html, {}, false);
26 | expect(truncate($)).toBe('');
27 | });
28 |
29 | it("should NOT truncate a comment string", () => {
30 | const html = "";
31 |
32 | expect(truncate(html, 2)).toBe('');
33 | });
34 |
35 | it('should NOT truncate a string if NO length provided $', () => {
36 | const html = 'string'
37 | const $ = cheerio.load(html)
38 |
39 | expect(truncate($)).toBe('string')
40 | })
41 |
42 | it('should NOT truncate a string if length is less than or equal to zero', () => {
43 | const html = 'string'
44 |
45 | expect(truncate(html, 0)).toBe(html)
46 | })
47 |
48 | it('should NOT truncate a string if length is less than or equal to zero $', () => {
49 | const html = 'string'
50 | const $ = cheerio.load(html)
51 |
52 | expect(truncate($, 0)).toBe('string')
53 | })
54 | })
55 |
56 | describe('truncate with options.length', () => {
57 | it('should truncate a string', () => {
58 | const test = '123456789'
59 | const expected = '12345...'
60 |
61 | expect(truncate(test, 5)).toBe(expected)
62 | })
63 | it('should truncate a string $', () => {
64 | const test = '123456789'
65 | const expected = '12345...'
66 | const $ = cheerio.load(test, null, false)
67 | expect(truncate($, 5)).toBe(expected)
68 | })
69 |
70 | it('should truncate a string with tags', () => {
71 | const test = '123456789
'
72 | const expected = '123456...
'
73 |
74 | expect(truncate(test, { length: 6 })).toBe(expected)
75 | })
76 | it('should kepp all the string if length logger than the origin string', () => {
77 | const test = '123456789
'
78 | const expected = '123456789
'
79 |
80 | expect(truncate(test, { length: 100 })).toBe(expected)
81 | })
82 |
83 | it('should truncate a string with characters outside of tags', () => {
84 | const test = '12345
6789'
85 | const expected = '12345
678...'
86 |
87 | expect(truncate(test, 8)).toBe(expected)
88 | })
89 |
90 | it('should works well when truncate at tag boundary', () => {
91 | const test = 'Hello world'
92 | const expected = 'Hello ...'
93 |
94 | expect(truncate(test, 6)).toBe(expected)
95 | })
96 |
97 | it('should works well when truncate at tag boundary-2', () => {
98 | const test = 'Hello world'
99 | const expected = 'Hello world'
100 |
101 | expect(truncate(test, 11)).toBe(expected)
102 | })
103 |
104 | it('should truncate a string two sets of tags', () => {
105 | const test = '12345
6789
'
106 | const expected = '12345
67...
'
107 |
108 | expect(truncate(test, 7)).toBe(expected)
109 | })
110 |
111 | it('should truncate a string two sets of tags $', () => {
112 | const test = cheerio.load('12345
6789
', null, false)
113 | const expected = '12345
67...
'
114 |
115 | expect(truncate(test, 7)).toBe(expected)
116 | })
117 |
118 | it('should keep empty tag', () => {
119 | const test =
120 | '12345
6789
reset text '
121 | const expected = '12345
67...
'
122 |
123 | expect(truncate(test, 7)).toBe(expected)
124 | })
125 |
126 | it('should keep empty tag $', () => {
127 | const test =
128 | cheerio.load('12345
6789
reset text ', null, false)
129 | const expected = '12345
67...
'
130 |
131 | expect(truncate(test, 7)).toBe(expected)
132 | })
133 |
134 | it('should remove comment', () => {
135 | const test = '12345
6789
'
136 | const expected = '12345
67...
'
137 |
138 | expect(truncate(test, 7)).toBe(expected)
139 | })
140 |
141 | it('should remove comment in tag', () => {
142 | const test = '12345
6789
'
143 | const expected = '12345
67...
'
144 |
145 | expect(truncate(test, 7)).toBe(expected)
146 | })
147 |
148 | describe('works with options.reserveLastWord', () => {
149 | it('should reserve the last word', () => {
150 | const test = '12345
6789
'
151 | const expected = '12345
6789
'
152 |
153 | expect(
154 | truncate(test, 7, {
155 | reserveLastWord: true
156 | })
157 | ).toBe(expected)
158 | })
159 |
160 | it('should reserve the last word(i18n)', () => {
161 | const test = 'internationalization
'
162 | const expected = 'internationalization
'
163 |
164 | expect(
165 | truncate(test, 7, {
166 | reserveLastWord: 20 // exceed 20 letters
167 | })
168 | ).toBe(expected)
169 | })
170 |
171 | it('should cut at the last word(i18n)', () => {
172 | const test = 'internationalization
'
173 | const expected = 'internationalizat...
'
174 |
175 | expect(
176 | truncate(test, 7, {
177 | reserveLastWord: true // exceed 10 letters
178 | })
179 | ).toBe(expected)
180 | })
181 |
182 | it('should reserve the last word if only one word', () => {
183 | const test = 'internationalization
'
184 | const expected = 'internationalizat...
'
185 |
186 | expect(
187 | truncate(test, 7, {
188 | reserveLastWord: -1 // exceed 10 letters
189 | })
190 | ).toBe(expected)
191 | })
192 |
193 | it('should remove the last word if the edge if not the only one word', () => {
194 | const test = 'abc internationalization
'
195 | const expected = 'abc ...
'
196 |
197 | expect(
198 | truncate(test, 7, {
199 | reserveLastWord: -1 // exceed 10 letters
200 | })
201 | ).toBe(expected)
202 | })
203 |
204 | it('should cut the only word if trimTheOnlyWord true', () => {
205 | const test = 'internationalization
'
206 | const expected = 'interna...
'
207 |
208 | expect(
209 | truncate(test, 7, {
210 | reserveLastWord: -1, // exceed 10 letters
211 | trimTheOnlyWord: true
212 | })
213 | ).toBe(expected)
214 | })
215 |
216 | it('should reserve the last word if only one word $', () => {
217 | const test = cheerio.load('internationalization
', null, false)
218 | const expected = 'internationalizat...
'
219 |
220 | expect(
221 | truncate(test, 7, {
222 | reserveLastWord: true // exceed 10 letters
223 | })
224 | ).toBe(expected)
225 | })
226 |
227 | it('should reserve the last word if at the boundary', () => {
228 | const test = 'Hello world from earth
'
229 | const expected = 'Hello world...
'
230 |
231 | expect(
232 | truncate(test, 11, {
233 | reserveLastWord: -1 // exceed 10 letters
234 | })
235 | ).toBe(expected)
236 | })
237 |
238 | it('should reserve the last word if at the boundary even trimTheOnlyWord is true ', () => {
239 | const test = 'Hello world from earth
'
240 | const expected = 'Hello world...
'
241 |
242 | expect(
243 | truncate(test, 11, {
244 | reserveLastWord: -1, // exceed 10 letters
245 | trimTheOnlyWord: true
246 | })
247 | ).toBe(expected)
248 | })
249 |
250 | // from issue #24
251 | it('should cut correctly if string\'s length is equal to the truncation length', () => {
252 | const test = 'a b c d ef
'
253 | const expected = 'a b c d ef
'
254 | expect(
255 | truncate(test, 10, {
256 | reserveLastWord: -1 // exceed 10 letters
257 | })
258 | ).toBe(expected)
259 | })
260 |
261 | it('should remove the last word if more than one(i18n, reserveLastWord negative)', () => {
262 | const test = 'hello internationalization
'
263 | const expected = 'hello ...
'
264 |
265 | expect(
266 | truncate(test, 7, {
267 | reserveLastWord: -1 // exceed 10 letters
268 | })
269 | ).toBe(expected)
270 | })
271 | })
272 | })
273 |
274 | describe('with self-close tags', () => {
275 | it('should truncate a string with an image tag', () => {
276 | const html = '
This is a string
for test.'
277 | const expected = '
This is a ...
'
278 |
279 | expect(truncate(html, 10)).toBe(expected)
280 | })
281 |
282 | it('should truncate a string with an image and br tags', () => {
283 | const html = '
This
is a string
for test.'
284 | const expected = '
This
is a ...
'
285 |
286 | expect(truncate(html, 10)).toBe(expected)
287 | })
288 | })
289 |
290 | describe('with options.stripTags', () => {
291 | it('should works well with plain text', () => {
292 | const html = 'This is a string for test.'
293 | const expected = 'This is a ...'
294 | const options = {
295 | stripTags: true
296 | }
297 |
298 | expect(truncate(html, 10, options)).toBe(expected)
299 | })
300 |
301 | it('should remove all tags', () => {
302 | const html =
303 | '
This
is a string
for test.'
304 | const expected = 'This is a ...'
305 | const options = {
306 | stripTags: true
307 | }
308 | expect(truncate(html, 10, options)).toBe(expected)
309 | })
310 | })
311 |
312 | describe('with options.byWords', () => {
313 | it('should truncate by words', () => {
314 | const html = '
This is a string do
for test.'
315 | const expected = '
This is a string...
'
316 | const options = {
317 | byWords: true
318 | }
319 | expect(truncate(html, 4, options)).toBe(expected)
320 | })
321 |
322 | it('should reverse the whole string when if length is bigger', () => {
323 | const html = '
This is a string do
for test.'
324 | const expected = '
This is a string do
for test.'
325 | const options = {
326 | byWords: true
327 | }
328 | expect(truncate(html, 10, options)).toBe(expected)
329 | })
330 |
331 | it('should works well when truncate at tag boundary', () => {
332 | const test = 'Hello world'
333 | const expected = 'Hello...'
334 | const options = {
335 | byWords: true
336 | }
337 | expect(truncate(test, 1, options)).toBe(expected)
338 | })
339 |
340 | it('should works well when truncate at tag boundary', () => {
341 | const test = 'Hello world'
342 | const expected = 'Hello world'
343 | const options = {
344 | byWords: true
345 | }
346 | expect(truncate(test, 2, options)).toBe(expected)
347 | })
348 |
349 | describe('works with options.reserveLastWord', () => {
350 | it('should ignore reserveLastWord when byWords is on(length bigger)', () => {
351 | const html = '
This is a string do
for test.'
352 | const expected =
353 | '
This is a string do
for test.'
354 | const options = {
355 | byWords: true,
356 | reserveLastWord: true
357 | }
358 | expect(truncate(html, 10, options)).toBe(expected)
359 | })
360 |
361 | it('should ignore reserveLastWord when byWords is on(length smaller)', () => {
362 | const html = '
This is a string do
for test.'
363 | const expected = '
This is a...
'
364 | const options = {
365 | byWords: true,
366 | reserveLastWord: true
367 | }
368 | expect(truncate(html, 3, options)).toBe(expected)
369 | })
370 | })
371 | })
372 |
373 | describe('with options.whitespaces', () => {
374 | it('should trim whitespaces', () => {
375 | const html =
376 | '
This is a string
for test.'
377 | const expected = '
This is a...
'
378 | const options = {
379 | keepWhitespaces: false
380 | }
381 |
382 | expect(truncate(html, 10, options)).toBe(expected)
383 | })
384 |
385 | it('should preserve whitespaces', () => {
386 | const html =
387 | '
This is a string
for test.'
388 | const expected = '
This is a...
'
389 | const options = {
390 | keepWhitespaces: true
391 | }
392 |
393 | expect(truncate(html, 10, options)).toBe(expected)
394 | })
395 |
396 | it('should preserve last whitespace at boundary', () => {
397 | const html =
398 | 'Hello image.
This is a string
for test.'
399 | const expected = 'Hello image.
This is ...
'
400 | const options = {
401 | keepWhitespaces: true
402 | }
403 |
404 | expect(truncate(html, 21, options)).toBe(expected)
405 | })
406 |
407 | it('should count continuous whitespaces as one', () => {
408 | const html =
409 | 'Hello image.
This is a string
for test.'
410 | const expected = 'Hello image.
This is...
'
411 | const options = {
412 | keepWhitespaces: true
413 | }
414 |
415 | expect(truncate(html, 20, options)).toBe(expected)
416 | })
417 | })
418 |
419 | describe('combine length and options', () => {
420 | it('should works with length and options separate', () => {
421 | const html = '
This is a string
for test.'
422 | const expected = 'This is a ...'
423 | const options = {
424 | stripTags: true
425 | }
426 | expect(truncate(html, 10, options)).toBe(expected)
427 | })
428 |
429 | it('should allow length argument to be combined into the options object', () => {
430 | const html = '
This is a string
for test.'
431 | const expected = 'This is a ...'
432 | const options = {
433 | length: 10,
434 | stripTags: true
435 | }
436 | expect(truncate(html, options)).toBe(expected)
437 | })
438 | })
439 |
440 | describe('with options.ellipsis', () => {
441 | it('should insert a custom ellipsis sign', () => {
442 | const html = '
This is a string
for test.'
443 | const expected = '
This is a ~
'
444 | const options = {
445 | length: 10,
446 | ellipsis: '~'
447 | }
448 |
449 | expect(truncate(html, options)).toBe(expected)
450 | })
451 |
452 | it('should not insert a custom ellipsis sign', () => {
453 | const html = '
This is a string
for test.'
454 | const expected = '
This is a string
for test.'
455 | const options = {
456 | length: 50,
457 | ellipsis: '~'
458 | }
459 | expect(truncate(html, options)).toBe(expected)
460 | })
461 |
462 | describe('last character in html tag', () => {
463 | const testString = '1234567
89
12'
464 |
465 | it('should add ellipsis before a tag', () => {
466 | const expected = '123456...'
467 | expect(truncate(testString, 6)).toBe(expected)
468 | })
469 |
470 | it('should add ellipsis in a tag with one character', () => {
471 | const expected = '1234567...
'
472 | expect(truncate(testString, 7)).toBe(expected)
473 | })
474 |
475 | it('should add ellipsis within tag', () => {
476 | const expected = '1234567
8...
'
477 | expect(truncate(testString, 8)).toBe(expected)
478 | })
479 |
480 | it('should add ellipsis in a tag with multiple characters', () => {
481 | const expected = '1234567
89...
'
482 | expect(truncate(testString, 9)).toBe(expected)
483 | })
484 |
485 | it('should add ellipsis after a character after closing tag', () => {
486 | const expected = '1234567
89
1...'
487 | expect(truncate(testString, 10)).toBe(expected)
488 | })
489 |
490 | it('should add ellipsis in a nested tag ', () => {
491 | const test = '1234567
89
12'
492 | const expected = '1234567
89...
'
493 | expect(truncate(test, 9)).toBe(expected)
494 | })
495 | })
496 | })
497 |
498 | describe('with options.excludes', () => {
499 | it('should exclude elements by selector', () => {
500 | const html = '
This is a string
for test.'
501 | const expected = 'This is a ...
'
502 | const options = {
503 | length: 10,
504 | excludes: 'img'
505 | }
506 |
507 | expect(truncate(html, options)).toBe(expected)
508 | })
509 |
510 | it('should exclude multiple elements by selector', () => {
511 | const html =
512 | '
This is a string
unwanted string inserted ( ´•̥̥̥ω•̥̥̥` )
for test.'
513 | const expected = 'This is a string
for...'
514 | const options = {
515 | length: 20,
516 | excludes: ['img', '.something-unwanted']
517 | }
518 |
519 | expect(truncate(html, options)).toBe(expected)
520 | })
521 | })
522 |
523 | describe('with options.decodeEntities', () => {
524 | it('should handle encoded characters', () => {
525 | const html = ' test for <p> encoded string
'
526 | const expected = ' test for <p> encode...
'
527 | const options = {
528 | length: 20,
529 | decodeEntities: true
530 | }
531 |
532 | expect(truncate(html, options)).toBe(expected)
533 | })
534 |
535 | // it('should leave encoded characters as is', () => {
536 | // const html = ' test for <p> encoded string
'
537 | // const expected = ' test for <p...
'
538 | // const options = {
539 | // length: 20,
540 | // decodeEntities: false // this is the default value
541 | // }
542 |
543 | // expect(truncate(html, options)).toBe(expected)
544 | // })
545 |
546 | it('should leave encoded characters as is', () => {
547 | const html = ' test for <p> encoded string
'
548 | const expected = ' test for <p> encode...
'
549 | const options = {
550 | length: 20,
551 | decodeEntities: false // this is the default value
552 | }
553 |
554 | expect(truncate(html, options)).toBe(expected)
555 | })
556 |
557 |
558 |
559 | it('should works with CJK when decodeEntities is true', () => {
560 | const html = ' test for <p>@ 中文 string
'
561 | const expected = ' test for <p>@ 中文 st...
'
562 | const options = {
563 | length: 20,
564 | decodeEntities: true
565 | }
566 | expect(truncate(html, options)).toBe(expected)
567 | })
568 |
569 | it('should convert CJK from encoded with decodeEntities to false', () => {
570 | const html = ' test for <p> 中文 string
'
571 | const expected = ' test for <p> 中文 str...
'
572 | const options = {
573 | length: 20,
574 | decodeEntities: true
575 | }
576 |
577 | expect(truncate(html, options)).toBe(expected)
578 | })
579 |
580 | it('should convert CJK from encoded with decodeEntities to false', () => {
581 | const html = ' test for <p>@ 中文 string
'
582 | const expected = ' test for <p>@ 中文 st...
'
583 | const options = {
584 | length: 20,
585 | decodeEntities: false
586 | }
587 | expect(truncate(html, options)).toBe(expected)
588 | })
589 | })
590 |
591 | describe('with truncate.setup', () => {
592 | afterEach(function () {
593 | truncate.setup({
594 | byWords: false,
595 | stripTags: false,
596 | ellipsis: "...",
597 | // @ts-expect-error only for test
598 | length: null,
599 | decodeEntities: false,
600 | keepWhitespaces: false,
601 | excludes: "",
602 | reserveLastWord: false,
603 | });
604 | })
605 | it('should works well if setup with empty', () => {
606 | // @ts-expect-error only for test
607 | truncate.setup()
608 | const test = 'hello from earth'
609 | const expected = 'hello from e...'
610 |
611 | expect(truncate(test, 12)).toBe(expected)
612 | })
613 |
614 | it('should use default length', () => {
615 | truncate.setup({ length: 5 })
616 | const test = '123456789'
617 | const expected = '12345...'
618 |
619 | expect(truncate(test)).toBe(expected)
620 | })
621 |
622 | it('should use default byWords settings', () => {
623 | truncate.setup({ byWords: true })
624 | const test = 'hello from earth'
625 | const expected = 'hello from...'
626 |
627 | expect(truncate(test, 2)).toBe(expected)
628 | })
629 |
630 | it('should use default reserveLastWord settings', () => {
631 | truncate.setup({ reserveLastWord: true })
632 | const test = 'hello from earth'
633 | const expected = 'hello from earth'
634 |
635 | expect(truncate(test, 12)).toBe(expected)
636 | })
637 | })
638 |
639 | describe('should correcty handle text with emoji characters', () => {
640 | it('emojis with character length more than 1', () => {
641 | const test = '💩💩💩💩💩'
642 | const expected = '💩💩💩...'
643 |
644 | expect(truncate(test, 3)).toEqual(expected)
645 | })
646 |
647 | it('emojis with text', () => {
648 | const test = 'Hello there, how are you?? 👍👍👍'
649 | const expected = 'Hello there, how are you?? 👍👍...'
650 |
651 | expect(truncate(test, 29)).toEqual(expected)
652 | })
653 |
654 | it('emojis with reservedLastWord setting', () => {
655 | truncate.setup({ reserveLastWord: true })
656 | const test = 'Hello there 😎😎😎'
657 | const expected = 'Hello there 😎...'
658 |
659 | expect(truncate(test, 13)).toEqual(expected)
660 | })
661 |
662 | it('emojis with byWords setting, with keepWhitespaces false', () => {
663 | truncate.setup({ byWords: true, keepWhitespaces: false })
664 | const test = 'Hello there, how are you?? 😎😎😎'
665 | const expected = 'Hello there, how are you?? 😎😎😎'
666 |
667 | expect(truncate(test, 20)).toEqual(expected)
668 | })
669 |
670 | it('emojis with keepWhitespaces setting', () => {
671 | truncate.setup({ keepWhitespaces: true })
672 | const test = 'Hello there 💩 💩 💩'
673 | const expected = 'Hello there 💩 💩 💩'
674 |
675 | expect(truncate(test, 20)).toEqual(expected)
676 | })
677 | })
678 |
679 | describe('customNodeStrategy', () => {
680 |
681 | it('should works with customNodeStrategy is Keep', () => {
682 | const test = '123456789abcefghijk
'
683 | const expected = '123456789abcefg...
'
684 | const customNodeStrategy = (node: Cheerio) => {
685 | if (node.prop('tagName') === 'I') return 'keep'
686 | return
687 | }
688 | expect(truncate(test, 12, { customNodeStrategy } )).toEqual(expected)
689 | })
690 |
691 | it('should works with customNodeStrategy is remove', () => {
692 | const test = "123456789abcefghijk
";
693 | const expected = "123456789efg...
";
694 | const customNodeStrategy = (node: Cheerio) => {
695 | if (node.prop("tagName") === "I") return "remove";
696 | return;
697 | };
698 | expect(truncate(test, 12, { customNodeStrategy })).toEqual(expected);
699 | })
700 |
701 | it('should works with customNodeStrategy is custom node', () => {
702 | const test = '123456789abc
hello cccc
'
703 | const expected = '123456789abc
hello cccc
'
704 | const customNodeStrategy = (node: Cheerio) => {
705 | if (node.prop('tagName') === 'DETAILS') {
706 | return node.find('summary')
707 | }
708 | return
709 | }
710 | expect(truncate(test, 12, { customNodeStrategy } )).toEqual(expected)
711 | })
712 |
713 | it('should works with customNodeStrategy is custom node', () => {
714 | const test = '123456789abc
hello cccc
'
715 | const expected = '123456789abc
hello cccc
'
716 | const customNodeStrategy = (node: Cheerio) => {
717 | if (node.prop('tagName') === 'DETAILS') {
718 | return node.find('summary')
719 | }
720 | return
721 | }
722 | expect(truncate(test, 12, { customNodeStrategy } )).toEqual(expected)
723 | })
724 |
725 | it('should works with customNodeStrategy is custom node 2', () => {
726 | const test = '123456789abc
hello cccc word
'
727 | const expected = '123456789abc...
hello cccc
'
728 | const customNodeStrategy = (node: Cheerio) => {
729 | if (node.prop('tagName') === 'DETAILS') {
730 | return node.find('summary')
731 | }
732 | return
733 | }
734 | expect(truncate(test, 12, { customNodeStrategy } )).toEqual(expected)
735 | })
736 |
737 | it('should works with customNodeStrategy is custom node 3', () => {
738 | const test = '123456789abc
hello cccc word
'
739 | const expected = '123456789abc
hello cccc w...
'
740 | const customNodeStrategy = (node: Cheerio) => {
741 | if (node.prop('tagName') === 'DETAILS') {
742 | return node.find('summary')
743 | }
744 | return
745 | }
746 | expect(truncate(test, 13, { customNodeStrategy } )).toEqual(expected)
747 | })
748 | })
749 | })
750 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "outDir": "./built/",
4 | "sourceMap": true,
5 | "declaration": true,
6 | "strict": true,
7 | "noImplicitReturns": true,
8 | "noImplicitAny": false,
9 | "emitDecoratorMetadata": true,
10 | "experimentalDecorators": true,
11 | "allowSyntheticDefaultImports": true,
12 | "module": "commonjs",
13 | "moduleResolution": "node",
14 | "esModuleInterop": true,
15 | "target": "es6",
16 | "allowJs": false,
17 | "baseUrl": "./",
18 | "lib": ["dom", "es7"]
19 | },
20 | "include": ["./src/**/*.ts"]
21 | }
22 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import { defineConfig } from 'vite'
3 | import dts from 'vite-plugin-dts'
4 |
5 | export default defineConfig({
6 | root: './',
7 | test: {
8 | watch: false,
9 | environment: 'node',
10 | include: ['test/**/*.spec.ts'],
11 | exclude: ['node_modules', 'scripts', 'dist'],
12 | },
13 | build: {
14 | minify: false,
15 | outDir: 'dist',
16 | lib: {
17 | // Could also be a dictionary or array of multiple entry points
18 | entry: 'src/truncate.ts',
19 | name: 'truncate',
20 | // the proper extensions will be added
21 | formats: ['es', 'cjs'],
22 | fileName: (format) => `truncate.${format}.js`,
23 | },
24 | rollupOptions: {
25 | // make sure to externalize deps that shouldn't be bundled
26 | // into your library
27 | external: ['cheerio'],
28 | },
29 | },
30 | plugins: [dts()],
31 | })
32 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@ampproject/remapping@^2.3.0":
6 | version "2.3.0"
7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
8 | integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
9 | dependencies:
10 | "@jridgewell/gen-mapping" "^0.3.5"
11 | "@jridgewell/trace-mapping" "^0.3.24"
12 |
13 | "@babel/helper-string-parser@^7.25.7":
14 | version "7.25.7"
15 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54"
16 | integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==
17 |
18 | "@babel/helper-validator-identifier@^7.25.7":
19 | version "7.25.7"
20 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5"
21 | integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==
22 |
23 | "@babel/parser@^7.25.3", "@babel/parser@^7.25.4":
24 | version "7.25.8"
25 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2"
26 | integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==
27 | dependencies:
28 | "@babel/types" "^7.25.8"
29 |
30 | "@babel/types@^7.25.4", "@babel/types@^7.25.8":
31 | version "7.25.8"
32 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1"
33 | integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==
34 | dependencies:
35 | "@babel/helper-string-parser" "^7.25.7"
36 | "@babel/helper-validator-identifier" "^7.25.7"
37 | to-fast-properties "^2.0.0"
38 |
39 | "@bcoe/v8-coverage@^0.2.3":
40 | version "0.2.3"
41 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
42 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
43 |
44 | "@esbuild/aix-ppc64@0.21.5":
45 | version "0.21.5"
46 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
47 | integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
48 |
49 | "@esbuild/aix-ppc64@0.23.1":
50 | version "0.23.1"
51 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353"
52 | integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==
53 |
54 | "@esbuild/android-arm64@0.21.5":
55 | version "0.21.5"
56 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
57 | integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
58 |
59 | "@esbuild/android-arm64@0.23.1":
60 | version "0.23.1"
61 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018"
62 | integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==
63 |
64 | "@esbuild/android-arm@0.21.5":
65 | version "0.21.5"
66 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
67 | integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
68 |
69 | "@esbuild/android-arm@0.23.1":
70 | version "0.23.1"
71 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee"
72 | integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==
73 |
74 | "@esbuild/android-x64@0.21.5":
75 | version "0.21.5"
76 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
77 | integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
78 |
79 | "@esbuild/android-x64@0.23.1":
80 | version "0.23.1"
81 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517"
82 | integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==
83 |
84 | "@esbuild/darwin-arm64@0.21.5":
85 | version "0.21.5"
86 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
87 | integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
88 |
89 | "@esbuild/darwin-arm64@0.23.1":
90 | version "0.23.1"
91 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16"
92 | integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==
93 |
94 | "@esbuild/darwin-x64@0.21.5":
95 | version "0.21.5"
96 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
97 | integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
98 |
99 | "@esbuild/darwin-x64@0.23.1":
100 | version "0.23.1"
101 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931"
102 | integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==
103 |
104 | "@esbuild/freebsd-arm64@0.21.5":
105 | version "0.21.5"
106 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
107 | integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
108 |
109 | "@esbuild/freebsd-arm64@0.23.1":
110 | version "0.23.1"
111 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc"
112 | integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==
113 |
114 | "@esbuild/freebsd-x64@0.21.5":
115 | version "0.21.5"
116 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
117 | integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
118 |
119 | "@esbuild/freebsd-x64@0.23.1":
120 | version "0.23.1"
121 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730"
122 | integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==
123 |
124 | "@esbuild/linux-arm64@0.21.5":
125 | version "0.21.5"
126 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
127 | integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
128 |
129 | "@esbuild/linux-arm64@0.23.1":
130 | version "0.23.1"
131 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383"
132 | integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==
133 |
134 | "@esbuild/linux-arm@0.21.5":
135 | version "0.21.5"
136 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
137 | integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
138 |
139 | "@esbuild/linux-arm@0.23.1":
140 | version "0.23.1"
141 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771"
142 | integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==
143 |
144 | "@esbuild/linux-ia32@0.21.5":
145 | version "0.21.5"
146 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
147 | integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
148 |
149 | "@esbuild/linux-ia32@0.23.1":
150 | version "0.23.1"
151 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333"
152 | integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==
153 |
154 | "@esbuild/linux-loong64@0.21.5":
155 | version "0.21.5"
156 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
157 | integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
158 |
159 | "@esbuild/linux-loong64@0.23.1":
160 | version "0.23.1"
161 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac"
162 | integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==
163 |
164 | "@esbuild/linux-mips64el@0.21.5":
165 | version "0.21.5"
166 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
167 | integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
168 |
169 | "@esbuild/linux-mips64el@0.23.1":
170 | version "0.23.1"
171 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6"
172 | integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==
173 |
174 | "@esbuild/linux-ppc64@0.21.5":
175 | version "0.21.5"
176 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
177 | integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
178 |
179 | "@esbuild/linux-ppc64@0.23.1":
180 | version "0.23.1"
181 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96"
182 | integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==
183 |
184 | "@esbuild/linux-riscv64@0.21.5":
185 | version "0.21.5"
186 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
187 | integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
188 |
189 | "@esbuild/linux-riscv64@0.23.1":
190 | version "0.23.1"
191 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7"
192 | integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==
193 |
194 | "@esbuild/linux-s390x@0.21.5":
195 | version "0.21.5"
196 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
197 | integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
198 |
199 | "@esbuild/linux-s390x@0.23.1":
200 | version "0.23.1"
201 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f"
202 | integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==
203 |
204 | "@esbuild/linux-x64@0.21.5":
205 | version "0.21.5"
206 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
207 | integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
208 |
209 | "@esbuild/linux-x64@0.23.1":
210 | version "0.23.1"
211 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24"
212 | integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==
213 |
214 | "@esbuild/netbsd-x64@0.21.5":
215 | version "0.21.5"
216 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
217 | integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
218 |
219 | "@esbuild/netbsd-x64@0.23.1":
220 | version "0.23.1"
221 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653"
222 | integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==
223 |
224 | "@esbuild/openbsd-arm64@0.23.1":
225 | version "0.23.1"
226 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7"
227 | integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==
228 |
229 | "@esbuild/openbsd-x64@0.21.5":
230 | version "0.21.5"
231 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
232 | integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
233 |
234 | "@esbuild/openbsd-x64@0.23.1":
235 | version "0.23.1"
236 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273"
237 | integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==
238 |
239 | "@esbuild/sunos-x64@0.21.5":
240 | version "0.21.5"
241 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
242 | integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
243 |
244 | "@esbuild/sunos-x64@0.23.1":
245 | version "0.23.1"
246 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403"
247 | integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==
248 |
249 | "@esbuild/win32-arm64@0.21.5":
250 | version "0.21.5"
251 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
252 | integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
253 |
254 | "@esbuild/win32-arm64@0.23.1":
255 | version "0.23.1"
256 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2"
257 | integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==
258 |
259 | "@esbuild/win32-ia32@0.21.5":
260 | version "0.21.5"
261 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
262 | integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
263 |
264 | "@esbuild/win32-ia32@0.23.1":
265 | version "0.23.1"
266 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac"
267 | integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==
268 |
269 | "@esbuild/win32-x64@0.21.5":
270 | version "0.21.5"
271 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
272 | integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
273 |
274 | "@esbuild/win32-x64@0.23.1":
275 | version "0.23.1"
276 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699"
277 | integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==
278 |
279 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
280 | version "4.4.0"
281 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
282 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
283 | dependencies:
284 | eslint-visitor-keys "^3.3.0"
285 |
286 | "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0":
287 | version "4.11.1"
288 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f"
289 | integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
290 |
291 | "@eslint/config-array@^0.18.0":
292 | version "0.18.0"
293 | resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d"
294 | integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==
295 | dependencies:
296 | "@eslint/object-schema" "^2.1.4"
297 | debug "^4.3.1"
298 | minimatch "^3.1.2"
299 |
300 | "@eslint/core@^0.6.0":
301 | version "0.6.0"
302 | resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.6.0.tgz#9930b5ba24c406d67a1760e94cdbac616a6eb674"
303 | integrity sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==
304 |
305 | "@eslint/eslintrc@^3.1.0":
306 | version "3.1.0"
307 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
308 | integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
309 | dependencies:
310 | ajv "^6.12.4"
311 | debug "^4.3.2"
312 | espree "^10.0.1"
313 | globals "^14.0.0"
314 | ignore "^5.2.0"
315 | import-fresh "^3.2.1"
316 | js-yaml "^4.1.0"
317 | minimatch "^3.1.2"
318 | strip-json-comments "^3.1.1"
319 |
320 | "@eslint/js@9.12.0", "@eslint/js@^9.12.0":
321 | version "9.12.0"
322 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.12.0.tgz#69ca3ca9fab9a808ec6d67b8f6edb156cbac91e1"
323 | integrity sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==
324 |
325 | "@eslint/object-schema@^2.1.4":
326 | version "2.1.4"
327 | resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
328 | integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
329 |
330 | "@eslint/plugin-kit@^0.2.0":
331 | version "0.2.0"
332 | resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz#8712dccae365d24e9eeecb7b346f85e750ba343d"
333 | integrity sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==
334 | dependencies:
335 | levn "^0.4.1"
336 |
337 | "@humanfs/core@^0.19.0":
338 | version "0.19.0"
339 | resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.0.tgz#08db7a8c73bb07673d9ebd925f2dad746411fcec"
340 | integrity sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==
341 |
342 | "@humanfs/node@^0.16.5":
343 | version "0.16.5"
344 | resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.5.tgz#a9febb7e7ad2aff65890fdc630938f8d20aa84ba"
345 | integrity sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==
346 | dependencies:
347 | "@humanfs/core" "^0.19.0"
348 | "@humanwhocodes/retry" "^0.3.0"
349 |
350 | "@humanwhocodes/module-importer@^1.0.1":
351 | version "1.0.1"
352 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
353 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
354 |
355 | "@humanwhocodes/retry@^0.3.0", "@humanwhocodes/retry@^0.3.1":
356 | version "0.3.1"
357 | resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a"
358 | integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
359 |
360 | "@isaacs/cliui@^8.0.2":
361 | version "8.0.2"
362 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
363 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
364 | dependencies:
365 | string-width "^5.1.2"
366 | string-width-cjs "npm:string-width@^4.2.0"
367 | strip-ansi "^7.0.1"
368 | strip-ansi-cjs "npm:strip-ansi@^6.0.1"
369 | wrap-ansi "^8.1.0"
370 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
371 |
372 | "@istanbuljs/schema@^0.1.2":
373 | version "0.1.3"
374 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
375 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
376 |
377 | "@jridgewell/gen-mapping@^0.3.5":
378 | version "0.3.5"
379 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
380 | integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
381 | dependencies:
382 | "@jridgewell/set-array" "^1.2.1"
383 | "@jridgewell/sourcemap-codec" "^1.4.10"
384 | "@jridgewell/trace-mapping" "^0.3.24"
385 |
386 | "@jridgewell/resolve-uri@^3.1.0":
387 | version "3.1.2"
388 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
389 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
390 |
391 | "@jridgewell/set-array@^1.2.1":
392 | version "1.2.1"
393 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
394 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
395 |
396 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
397 | version "1.5.0"
398 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
399 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
400 |
401 | "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24":
402 | version "0.3.25"
403 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
404 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
405 | dependencies:
406 | "@jridgewell/resolve-uri" "^3.1.0"
407 | "@jridgewell/sourcemap-codec" "^1.4.14"
408 |
409 | "@microsoft/api-extractor-model@7.29.6":
410 | version "7.29.6"
411 | resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.29.6.tgz#e5941514502049b06ca9af21e2096f8f1ad5a01b"
412 | integrity sha512-gC0KGtrZvxzf/Rt9oMYD2dHvtN/1KPEYsrQPyMKhLHnlVuO/f4AFN3E4toqZzD2pt4LhkKoYmL2H9tX3yCOyRw==
413 | dependencies:
414 | "@microsoft/tsdoc" "~0.15.0"
415 | "@microsoft/tsdoc-config" "~0.17.0"
416 | "@rushstack/node-core-library" "5.7.0"
417 |
418 | "@microsoft/api-extractor@7.47.7":
419 | version "7.47.7"
420 | resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.47.7.tgz#3bc4450fe46c265bef857ab938aa15b9fc7a85de"
421 | integrity sha512-fNiD3G55ZJGhPOBPMKD/enozj8yxJSYyVJWxRWdcUtw842rvthDHJgUWq9gXQTensFlMHv2wGuCjjivPv53j0A==
422 | dependencies:
423 | "@microsoft/api-extractor-model" "7.29.6"
424 | "@microsoft/tsdoc" "~0.15.0"
425 | "@microsoft/tsdoc-config" "~0.17.0"
426 | "@rushstack/node-core-library" "5.7.0"
427 | "@rushstack/rig-package" "0.5.3"
428 | "@rushstack/terminal" "0.14.0"
429 | "@rushstack/ts-command-line" "4.22.6"
430 | lodash "~4.17.15"
431 | minimatch "~3.0.3"
432 | resolve "~1.22.1"
433 | semver "~7.5.4"
434 | source-map "~0.6.1"
435 | typescript "5.4.2"
436 |
437 | "@microsoft/tsdoc-config@~0.17.0":
438 | version "0.17.0"
439 | resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.17.0.tgz#82605152b3c1d3f5cd4a11697bc298437484d55d"
440 | integrity sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==
441 | dependencies:
442 | "@microsoft/tsdoc" "0.15.0"
443 | ajv "~8.12.0"
444 | jju "~1.4.0"
445 | resolve "~1.22.2"
446 |
447 | "@microsoft/tsdoc@0.15.0", "@microsoft/tsdoc@~0.15.0":
448 | version "0.15.0"
449 | resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz#f29a55df17cb6e87cfbabce33ff6a14a9f85076d"
450 | integrity sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==
451 |
452 | "@nodelib/fs.scandir@2.1.5":
453 | version "2.1.5"
454 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
455 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
456 | dependencies:
457 | "@nodelib/fs.stat" "2.0.5"
458 | run-parallel "^1.1.9"
459 |
460 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
461 | version "2.0.5"
462 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
463 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
464 |
465 | "@nodelib/fs.walk@^1.2.3":
466 | version "1.2.8"
467 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
468 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
469 | dependencies:
470 | "@nodelib/fs.scandir" "2.1.5"
471 | fastq "^1.6.0"
472 |
473 | "@pkgjs/parseargs@^0.11.0":
474 | version "0.11.0"
475 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
476 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
477 |
478 | "@rollup/pluginutils@^5.1.0":
479 | version "5.1.2"
480 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.2.tgz#d3bc9f0fea4fd4086aaac6aa102f3fa587ce8bd9"
481 | integrity sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==
482 | dependencies:
483 | "@types/estree" "^1.0.0"
484 | estree-walker "^2.0.2"
485 | picomatch "^2.3.1"
486 |
487 | "@rollup/rollup-android-arm-eabi@4.24.0":
488 | version "4.24.0"
489 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz#1661ff5ea9beb362795304cb916049aba7ac9c54"
490 | integrity sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==
491 |
492 | "@rollup/rollup-android-arm64@4.24.0":
493 | version "4.24.0"
494 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz#2ffaa91f1b55a0082b8a722525741aadcbd3971e"
495 | integrity sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==
496 |
497 | "@rollup/rollup-darwin-arm64@4.24.0":
498 | version "4.24.0"
499 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz#627007221b24b8cc3063703eee0b9177edf49c1f"
500 | integrity sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==
501 |
502 | "@rollup/rollup-darwin-x64@4.24.0":
503 | version "4.24.0"
504 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz#0605506142b9e796c370d59c5984ae95b9758724"
505 | integrity sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==
506 |
507 | "@rollup/rollup-linux-arm-gnueabihf@4.24.0":
508 | version "4.24.0"
509 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz#62dfd196d4b10c0c2db833897164d2d319ee0cbb"
510 | integrity sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==
511 |
512 | "@rollup/rollup-linux-arm-musleabihf@4.24.0":
513 | version "4.24.0"
514 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz#53ce72aeb982f1f34b58b380baafaf6a240fddb3"
515 | integrity sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==
516 |
517 | "@rollup/rollup-linux-arm64-gnu@4.24.0":
518 | version "4.24.0"
519 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz#1632990f62a75c74f43e4b14ab3597d7ed416496"
520 | integrity sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==
521 |
522 | "@rollup/rollup-linux-arm64-musl@4.24.0":
523 | version "4.24.0"
524 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz#8c03a996efb41e257b414b2e0560b7a21f2d9065"
525 | integrity sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==
526 |
527 | "@rollup/rollup-linux-powerpc64le-gnu@4.24.0":
528 | version "4.24.0"
529 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz#5b98729628d5bcc8f7f37b58b04d6845f85c7b5d"
530 | integrity sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==
531 |
532 | "@rollup/rollup-linux-riscv64-gnu@4.24.0":
533 | version "4.24.0"
534 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz#48e42e41f4cabf3573cfefcb448599c512e22983"
535 | integrity sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==
536 |
537 | "@rollup/rollup-linux-s390x-gnu@4.24.0":
538 | version "4.24.0"
539 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz#e0b4f9a966872cb7d3e21b9e412a4b7efd7f0b58"
540 | integrity sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==
541 |
542 | "@rollup/rollup-linux-x64-gnu@4.24.0":
543 | version "4.24.0"
544 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz#78144741993100f47bd3da72fce215e077ae036b"
545 | integrity sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==
546 |
547 | "@rollup/rollup-linux-x64-musl@4.24.0":
548 | version "4.24.0"
549 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz#d9fe32971883cd1bd858336bd33a1c3ca6146127"
550 | integrity sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==
551 |
552 | "@rollup/rollup-win32-arm64-msvc@4.24.0":
553 | version "4.24.0"
554 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz#71fa3ea369316db703a909c790743972e98afae5"
555 | integrity sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==
556 |
557 | "@rollup/rollup-win32-ia32-msvc@4.24.0":
558 | version "4.24.0"
559 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz#653f5989a60658e17d7576a3996deb3902e342e2"
560 | integrity sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==
561 |
562 | "@rollup/rollup-win32-x64-msvc@4.24.0":
563 | version "4.24.0"
564 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz#0574d7e87b44ee8511d08cc7f914bcb802b70818"
565 | integrity sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==
566 |
567 | "@rushstack/node-core-library@5.7.0":
568 | version "5.7.0"
569 | resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-5.7.0.tgz#f28699c7d0b3de0120a207f8b9d5bd7c69806e18"
570 | integrity sha512-Ff9Cz/YlWu9ce4dmqNBZpA45AEya04XaBFIjV7xTVeEf+y/kTjEasmozqFELXlNG4ROdevss75JrrZ5WgufDkQ==
571 | dependencies:
572 | ajv "~8.13.0"
573 | ajv-draft-04 "~1.0.0"
574 | ajv-formats "~3.0.1"
575 | fs-extra "~7.0.1"
576 | import-lazy "~4.0.0"
577 | jju "~1.4.0"
578 | resolve "~1.22.1"
579 | semver "~7.5.4"
580 |
581 | "@rushstack/rig-package@0.5.3":
582 | version "0.5.3"
583 | resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.5.3.tgz#ea4d8a3458540b1295500149c04e645f23134e5d"
584 | integrity sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==
585 | dependencies:
586 | resolve "~1.22.1"
587 | strip-json-comments "~3.1.1"
588 |
589 | "@rushstack/terminal@0.14.0":
590 | version "0.14.0"
591 | resolved "https://registry.yarnpkg.com/@rushstack/terminal/-/terminal-0.14.0.tgz#967ecc586d7172204353059f8fdb1760666e9381"
592 | integrity sha512-juTKMAMpTIJKudeFkG5slD8Z/LHwNwGZLtU441l/u82XdTBfsP+LbGKJLCNwP5se+DMCT55GB8x9p6+C4UL7jw==
593 | dependencies:
594 | "@rushstack/node-core-library" "5.7.0"
595 | supports-color "~8.1.1"
596 |
597 | "@rushstack/ts-command-line@4.22.6":
598 | version "4.22.6"
599 | resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.22.6.tgz#2aee4fc98c6043c026ce278880fbffb5227de5ca"
600 | integrity sha512-QSRqHT/IfoC5nk9zn6+fgyqOPXHME0BfchII9EUPR19pocsNp/xSbeBCbD3PIR2Lg+Q5qk7OFqk1VhWPMdKHJg==
601 | dependencies:
602 | "@rushstack/terminal" "0.14.0"
603 | "@types/argparse" "1.0.38"
604 | argparse "~1.0.9"
605 | string-argv "~0.3.1"
606 |
607 | "@types/argparse@1.0.38":
608 | version "1.0.38"
609 | resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9"
610 | integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==
611 |
612 | "@types/eslint@*":
613 | version "9.6.1"
614 | resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584"
615 | integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==
616 | dependencies:
617 | "@types/estree" "*"
618 | "@types/json-schema" "*"
619 |
620 | "@types/eslint__js@^8.42.3":
621 | version "8.42.3"
622 | resolved "https://registry.yarnpkg.com/@types/eslint__js/-/eslint__js-8.42.3.tgz#d1fa13e5c1be63a10b4e3afe992779f81c1179a0"
623 | integrity sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==
624 | dependencies:
625 | "@types/eslint" "*"
626 |
627 | "@types/estree@*", "@types/estree@1.0.6", "@types/estree@^1.0.0", "@types/estree@^1.0.6":
628 | version "1.0.6"
629 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
630 | integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
631 |
632 | "@types/json-schema@*", "@types/json-schema@^7.0.15":
633 | version "7.0.15"
634 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
635 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
636 |
637 | "@typescript-eslint/eslint-plugin@8.8.1":
638 | version "8.8.1"
639 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz#9364b756d4d78bcbdf6fd3e9345e6924c68ad371"
640 | integrity sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==
641 | dependencies:
642 | "@eslint-community/regexpp" "^4.10.0"
643 | "@typescript-eslint/scope-manager" "8.8.1"
644 | "@typescript-eslint/type-utils" "8.8.1"
645 | "@typescript-eslint/utils" "8.8.1"
646 | "@typescript-eslint/visitor-keys" "8.8.1"
647 | graphemer "^1.4.0"
648 | ignore "^5.3.1"
649 | natural-compare "^1.4.0"
650 | ts-api-utils "^1.3.0"
651 |
652 | "@typescript-eslint/parser@8.8.1":
653 | version "8.8.1"
654 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.8.1.tgz#5952ba2a83bd52024b872f3fdc8ed2d3636073b8"
655 | integrity sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==
656 | dependencies:
657 | "@typescript-eslint/scope-manager" "8.8.1"
658 | "@typescript-eslint/types" "8.8.1"
659 | "@typescript-eslint/typescript-estree" "8.8.1"
660 | "@typescript-eslint/visitor-keys" "8.8.1"
661 | debug "^4.3.4"
662 |
663 | "@typescript-eslint/scope-manager@8.8.1":
664 | version "8.8.1"
665 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz#b4bea1c0785aaebfe3c4ab059edaea1c4977e7ff"
666 | integrity sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==
667 | dependencies:
668 | "@typescript-eslint/types" "8.8.1"
669 | "@typescript-eslint/visitor-keys" "8.8.1"
670 |
671 | "@typescript-eslint/type-utils@8.8.1":
672 | version "8.8.1"
673 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz#31f59ec46e93a02b409fb4d406a368a59fad306e"
674 | integrity sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==
675 | dependencies:
676 | "@typescript-eslint/typescript-estree" "8.8.1"
677 | "@typescript-eslint/utils" "8.8.1"
678 | debug "^4.3.4"
679 | ts-api-utils "^1.3.0"
680 |
681 | "@typescript-eslint/types@8.8.1":
682 | version "8.8.1"
683 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.8.1.tgz#ebe85e0fa4a8e32a24a56adadf060103bef13bd1"
684 | integrity sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==
685 |
686 | "@typescript-eslint/typescript-estree@8.8.1":
687 | version "8.8.1"
688 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz#34649f4e28d32ee49152193bc7dedc0e78e5d1ec"
689 | integrity sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==
690 | dependencies:
691 | "@typescript-eslint/types" "8.8.1"
692 | "@typescript-eslint/visitor-keys" "8.8.1"
693 | debug "^4.3.4"
694 | fast-glob "^3.3.2"
695 | is-glob "^4.0.3"
696 | minimatch "^9.0.4"
697 | semver "^7.6.0"
698 | ts-api-utils "^1.3.0"
699 |
700 | "@typescript-eslint/utils@8.8.1":
701 | version "8.8.1"
702 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.8.1.tgz#9e29480fbfa264c26946253daa72181f9f053c9d"
703 | integrity sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==
704 | dependencies:
705 | "@eslint-community/eslint-utils" "^4.4.0"
706 | "@typescript-eslint/scope-manager" "8.8.1"
707 | "@typescript-eslint/types" "8.8.1"
708 | "@typescript-eslint/typescript-estree" "8.8.1"
709 |
710 | "@typescript-eslint/visitor-keys@8.8.1":
711 | version "8.8.1"
712 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz#0fb1280f381149fc345dfde29f7542ff4e587fc5"
713 | integrity sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==
714 | dependencies:
715 | "@typescript-eslint/types" "8.8.1"
716 | eslint-visitor-keys "^3.4.3"
717 |
718 | "@vitest/coverage-v8@2.1.2":
719 | version "2.1.2"
720 | resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-2.1.2.tgz#0fd098a80c6bda8fb6b8eb65b41be98286331a0a"
721 | integrity sha512-b7kHrFrs2urS0cOk5N10lttI8UdJ/yP3nB4JYTREvR5o18cR99yPpK4gK8oQgI42BVv0ILWYUSYB7AXkAUDc0g==
722 | dependencies:
723 | "@ampproject/remapping" "^2.3.0"
724 | "@bcoe/v8-coverage" "^0.2.3"
725 | debug "^4.3.6"
726 | istanbul-lib-coverage "^3.2.2"
727 | istanbul-lib-report "^3.0.1"
728 | istanbul-lib-source-maps "^5.0.6"
729 | istanbul-reports "^3.1.7"
730 | magic-string "^0.30.11"
731 | magicast "^0.3.4"
732 | std-env "^3.7.0"
733 | test-exclude "^7.0.1"
734 | tinyrainbow "^1.2.0"
735 |
736 | "@vitest/expect@2.1.2":
737 | version "2.1.2"
738 | resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.1.2.tgz#e92fa284b8472548f72cacfe896020c64af6bf78"
739 | integrity sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==
740 | dependencies:
741 | "@vitest/spy" "2.1.2"
742 | "@vitest/utils" "2.1.2"
743 | chai "^5.1.1"
744 | tinyrainbow "^1.2.0"
745 |
746 | "@vitest/mocker@2.1.2":
747 | version "2.1.2"
748 | resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-2.1.2.tgz#08853a9d8d12afba284aebdf9b5ea26ddae5f20a"
749 | integrity sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==
750 | dependencies:
751 | "@vitest/spy" "^2.1.0-beta.1"
752 | estree-walker "^3.0.3"
753 | magic-string "^0.30.11"
754 |
755 | "@vitest/pretty-format@2.1.2", "@vitest/pretty-format@^2.1.2":
756 | version "2.1.2"
757 | resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.2.tgz#42882ea18c4cd40428e34f74bbac706a82465193"
758 | integrity sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==
759 | dependencies:
760 | tinyrainbow "^1.2.0"
761 |
762 | "@vitest/runner@2.1.2":
763 | version "2.1.2"
764 | resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.2.tgz#14da1f5eac43fbd9a37d7cd72de102e8f785d727"
765 | integrity sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==
766 | dependencies:
767 | "@vitest/utils" "2.1.2"
768 | pathe "^1.1.2"
769 |
770 | "@vitest/snapshot@2.1.2":
771 | version "2.1.2"
772 | resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-2.1.2.tgz#e20bd794b33fdcd4bfe69138baac7bb890c4d51f"
773 | integrity sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==
774 | dependencies:
775 | "@vitest/pretty-format" "2.1.2"
776 | magic-string "^0.30.11"
777 | pathe "^1.1.2"
778 |
779 | "@vitest/spy@2.1.2", "@vitest/spy@^2.1.0-beta.1":
780 | version "2.1.2"
781 | resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.1.2.tgz#bccdeca597c8fc3777302889e8c98cec9264df44"
782 | integrity sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==
783 | dependencies:
784 | tinyspy "^3.0.0"
785 |
786 | "@vitest/utils@2.1.2":
787 | version "2.1.2"
788 | resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.2.tgz#222ac35ba02493173e40581256eb7a62520fcdba"
789 | integrity sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==
790 | dependencies:
791 | "@vitest/pretty-format" "2.1.2"
792 | loupe "^3.1.1"
793 | tinyrainbow "^1.2.0"
794 |
795 | "@volar/language-core@2.4.6", "@volar/language-core@~2.4.1":
796 | version "2.4.6"
797 | resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-2.4.6.tgz#159625a6e1263fe68d1afad524ae2bd40c4ee0dd"
798 | integrity sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A==
799 | dependencies:
800 | "@volar/source-map" "2.4.6"
801 |
802 | "@volar/source-map@2.4.6":
803 | version "2.4.6"
804 | resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-2.4.6.tgz#b71ad241216f646812639f359262e6a84b46b6ed"
805 | integrity sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw==
806 |
807 | "@volar/typescript@^2.4.4":
808 | version "2.4.6"
809 | resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-2.4.6.tgz#6a4611b9fae793ad0d4c66d11d765f2731d93a12"
810 | integrity sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ==
811 | dependencies:
812 | "@volar/language-core" "2.4.6"
813 | path-browserify "^1.0.1"
814 | vscode-uri "^3.0.8"
815 |
816 | "@vue/compiler-core@3.5.12":
817 | version "3.5.12"
818 | resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.12.tgz#bd70b7dabd12b0b6f31bc53418ba3da77994c437"
819 | integrity sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==
820 | dependencies:
821 | "@babel/parser" "^7.25.3"
822 | "@vue/shared" "3.5.12"
823 | entities "^4.5.0"
824 | estree-walker "^2.0.2"
825 | source-map-js "^1.2.0"
826 |
827 | "@vue/compiler-dom@^3.4.0":
828 | version "3.5.12"
829 | resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz#456d631d11102535b7ee6fd954cf2c93158d0354"
830 | integrity sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==
831 | dependencies:
832 | "@vue/compiler-core" "3.5.12"
833 | "@vue/shared" "3.5.12"
834 |
835 | "@vue/compiler-vue2@^2.7.16":
836 | version "2.7.16"
837 | resolved "https://registry.yarnpkg.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz#2ba837cbd3f1b33c2bc865fbe1a3b53fb611e249"
838 | integrity sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==
839 | dependencies:
840 | de-indent "^1.0.2"
841 | he "^1.2.0"
842 |
843 | "@vue/language-core@2.1.6":
844 | version "2.1.6"
845 | resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-2.1.6.tgz#b48186bdb9b3ef2b83e1f76d5b1ac357b3a7ed94"
846 | integrity sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==
847 | dependencies:
848 | "@volar/language-core" "~2.4.1"
849 | "@vue/compiler-dom" "^3.4.0"
850 | "@vue/compiler-vue2" "^2.7.16"
851 | "@vue/shared" "^3.4.0"
852 | computeds "^0.0.1"
853 | minimatch "^9.0.3"
854 | muggle-string "^0.4.1"
855 | path-browserify "^1.0.1"
856 |
857 | "@vue/shared@3.5.12", "@vue/shared@^3.4.0":
858 | version "3.5.12"
859 | resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.12.tgz#f9e45b7f63f2c3f40d84237b1194b7f67de192e3"
860 | integrity sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==
861 |
862 | acorn-jsx@^5.3.2:
863 | version "5.3.2"
864 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
865 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
866 |
867 | acorn@^8.12.0, acorn@^8.12.1:
868 | version "8.12.1"
869 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
870 | integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
871 |
872 | ajv-draft-04@~1.0.0:
873 | version "1.0.0"
874 | resolved "https://registry.yarnpkg.com/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz#3b64761b268ba0b9e668f0b41ba53fce0ad77fc8"
875 | integrity sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==
876 |
877 | ajv-formats@~3.0.1:
878 | version "3.0.1"
879 | resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578"
880 | integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==
881 | dependencies:
882 | ajv "^8.0.0"
883 |
884 | ajv@^6.12.4:
885 | version "6.12.6"
886 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
887 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
888 | dependencies:
889 | fast-deep-equal "^3.1.1"
890 | fast-json-stable-stringify "^2.0.0"
891 | json-schema-traverse "^0.4.1"
892 | uri-js "^4.2.2"
893 |
894 | ajv@^8.0.0:
895 | version "8.17.1"
896 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
897 | integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
898 | dependencies:
899 | fast-deep-equal "^3.1.3"
900 | fast-uri "^3.0.1"
901 | json-schema-traverse "^1.0.0"
902 | require-from-string "^2.0.2"
903 |
904 | ajv@~8.12.0:
905 | version "8.12.0"
906 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
907 | integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
908 | dependencies:
909 | fast-deep-equal "^3.1.1"
910 | json-schema-traverse "^1.0.0"
911 | require-from-string "^2.0.2"
912 | uri-js "^4.2.2"
913 |
914 | ajv@~8.13.0:
915 | version "8.13.0"
916 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91"
917 | integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==
918 | dependencies:
919 | fast-deep-equal "^3.1.3"
920 | json-schema-traverse "^1.0.0"
921 | require-from-string "^2.0.2"
922 | uri-js "^4.4.1"
923 |
924 | ansi-regex@^5.0.1:
925 | version "5.0.1"
926 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
927 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
928 |
929 | ansi-regex@^6.0.1:
930 | version "6.1.0"
931 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
932 | integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
933 |
934 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
935 | version "4.3.0"
936 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
937 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
938 | dependencies:
939 | color-convert "^2.0.1"
940 |
941 | ansi-styles@^6.1.0:
942 | version "6.2.1"
943 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
944 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
945 |
946 | argparse@^2.0.1:
947 | version "2.0.1"
948 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
949 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
950 |
951 | argparse@~1.0.9:
952 | version "1.0.10"
953 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
954 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
955 | dependencies:
956 | sprintf-js "~1.0.2"
957 |
958 | assertion-error@^2.0.1:
959 | version "2.0.1"
960 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7"
961 | integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==
962 |
963 | balanced-match@^1.0.0:
964 | version "1.0.2"
965 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
966 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
967 |
968 | boolbase@^1.0.0:
969 | version "1.0.0"
970 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
971 | integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
972 |
973 | brace-expansion@^1.1.7:
974 | version "1.1.11"
975 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
976 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
977 | dependencies:
978 | balanced-match "^1.0.0"
979 | concat-map "0.0.1"
980 |
981 | brace-expansion@^2.0.1:
982 | version "2.0.1"
983 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
984 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
985 | dependencies:
986 | balanced-match "^1.0.0"
987 |
988 | braces@^3.0.2:
989 | version "3.0.2"
990 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
991 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
992 | dependencies:
993 | fill-range "^7.0.1"
994 |
995 | cac@^6.7.14:
996 | version "6.7.14"
997 | resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
998 | integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
999 |
1000 | callsites@^3.0.0:
1001 | version "3.1.0"
1002 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
1003 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
1004 |
1005 | chai@^5.1.1:
1006 | version "5.1.1"
1007 | resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.1.tgz#f035d9792a22b481ead1c65908d14bb62ec1c82c"
1008 | integrity sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==
1009 | dependencies:
1010 | assertion-error "^2.0.1"
1011 | check-error "^2.1.1"
1012 | deep-eql "^5.0.1"
1013 | loupe "^3.1.0"
1014 | pathval "^2.0.0"
1015 |
1016 | chalk@^4.0.0:
1017 | version "4.1.2"
1018 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
1019 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
1020 | dependencies:
1021 | ansi-styles "^4.1.0"
1022 | supports-color "^7.1.0"
1023 |
1024 | check-error@^2.1.1:
1025 | version "2.1.1"
1026 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc"
1027 | integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
1028 |
1029 | cheerio-select@^2.1.0:
1030 | version "2.1.0"
1031 | resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4"
1032 | integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==
1033 | dependencies:
1034 | boolbase "^1.0.0"
1035 | css-select "^5.1.0"
1036 | css-what "^6.1.0"
1037 | domelementtype "^2.3.0"
1038 | domhandler "^5.0.3"
1039 | domutils "^3.0.1"
1040 |
1041 | cheerio@1.0.0-rc.12:
1042 | version "1.0.0-rc.12"
1043 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683"
1044 | integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==
1045 | dependencies:
1046 | cheerio-select "^2.1.0"
1047 | dom-serializer "^2.0.0"
1048 | domhandler "^5.0.3"
1049 | domutils "^3.0.1"
1050 | htmlparser2 "^8.0.1"
1051 | parse5 "^7.0.0"
1052 | parse5-htmlparser2-tree-adapter "^7.0.0"
1053 |
1054 | color-convert@^2.0.1:
1055 | version "2.0.1"
1056 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
1057 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
1058 | dependencies:
1059 | color-name "~1.1.4"
1060 |
1061 | color-name@~1.1.4:
1062 | version "1.1.4"
1063 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
1064 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1065 |
1066 | compare-versions@^6.1.1:
1067 | version "6.1.1"
1068 | resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.1.tgz#7af3cc1099ba37d244b3145a9af5201b629148a9"
1069 | integrity sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==
1070 |
1071 | computeds@^0.0.1:
1072 | version "0.0.1"
1073 | resolved "https://registry.yarnpkg.com/computeds/-/computeds-0.0.1.tgz#215b08a4ba3e08a11ff6eee5d6d8d7166a97ce2e"
1074 | integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==
1075 |
1076 | concat-map@0.0.1:
1077 | version "0.0.1"
1078 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
1079 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
1080 |
1081 | confbox@^0.1.8:
1082 | version "0.1.8"
1083 | resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06"
1084 | integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==
1085 |
1086 | cross-spawn@^7.0.0, cross-spawn@^7.0.2:
1087 | version "7.0.3"
1088 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
1089 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
1090 | dependencies:
1091 | path-key "^3.1.0"
1092 | shebang-command "^2.0.0"
1093 | which "^2.0.1"
1094 |
1095 | css-select@^5.1.0:
1096 | version "5.1.0"
1097 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
1098 | integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
1099 | dependencies:
1100 | boolbase "^1.0.0"
1101 | css-what "^6.1.0"
1102 | domhandler "^5.0.2"
1103 | domutils "^3.0.1"
1104 | nth-check "^2.0.1"
1105 |
1106 | css-what@^6.1.0:
1107 | version "6.1.0"
1108 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
1109 | integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
1110 |
1111 | de-indent@^1.0.2:
1112 | version "1.0.2"
1113 | resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
1114 | integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
1115 |
1116 | debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
1117 | version "4.3.4"
1118 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
1119 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
1120 | dependencies:
1121 | ms "2.1.2"
1122 |
1123 | debug@^4.3.1, debug@^4.3.6:
1124 | version "4.3.7"
1125 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
1126 | integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
1127 | dependencies:
1128 | ms "^2.1.3"
1129 |
1130 | deep-eql@^5.0.1:
1131 | version "5.0.2"
1132 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341"
1133 | integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==
1134 |
1135 | deep-is@^0.1.3:
1136 | version "0.1.4"
1137 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
1138 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
1139 |
1140 | dom-serializer@^2.0.0:
1141 | version "2.0.0"
1142 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
1143 | integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
1144 | dependencies:
1145 | domelementtype "^2.3.0"
1146 | domhandler "^5.0.2"
1147 | entities "^4.2.0"
1148 |
1149 | domelementtype@^2.3.0:
1150 | version "2.3.0"
1151 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
1152 | integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
1153 |
1154 | domhandler@^5.0.2, domhandler@^5.0.3:
1155 | version "5.0.3"
1156 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
1157 | integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
1158 | dependencies:
1159 | domelementtype "^2.3.0"
1160 |
1161 | domutils@^3.0.1:
1162 | version "3.1.0"
1163 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e"
1164 | integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==
1165 | dependencies:
1166 | dom-serializer "^2.0.0"
1167 | domelementtype "^2.3.0"
1168 | domhandler "^5.0.3"
1169 |
1170 | eastasianwidth@^0.2.0:
1171 | version "0.2.0"
1172 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
1173 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
1174 |
1175 | emoji-regex@^8.0.0:
1176 | version "8.0.0"
1177 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
1178 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
1179 |
1180 | emoji-regex@^9.2.2:
1181 | version "9.2.2"
1182 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
1183 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
1184 |
1185 | entities@^4.2.0, entities@^4.4.0, entities@^4.5.0:
1186 | version "4.5.0"
1187 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
1188 | integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
1189 |
1190 | esbuild@^0.21.3:
1191 | version "0.21.5"
1192 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
1193 | integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
1194 | optionalDependencies:
1195 | "@esbuild/aix-ppc64" "0.21.5"
1196 | "@esbuild/android-arm" "0.21.5"
1197 | "@esbuild/android-arm64" "0.21.5"
1198 | "@esbuild/android-x64" "0.21.5"
1199 | "@esbuild/darwin-arm64" "0.21.5"
1200 | "@esbuild/darwin-x64" "0.21.5"
1201 | "@esbuild/freebsd-arm64" "0.21.5"
1202 | "@esbuild/freebsd-x64" "0.21.5"
1203 | "@esbuild/linux-arm" "0.21.5"
1204 | "@esbuild/linux-arm64" "0.21.5"
1205 | "@esbuild/linux-ia32" "0.21.5"
1206 | "@esbuild/linux-loong64" "0.21.5"
1207 | "@esbuild/linux-mips64el" "0.21.5"
1208 | "@esbuild/linux-ppc64" "0.21.5"
1209 | "@esbuild/linux-riscv64" "0.21.5"
1210 | "@esbuild/linux-s390x" "0.21.5"
1211 | "@esbuild/linux-x64" "0.21.5"
1212 | "@esbuild/netbsd-x64" "0.21.5"
1213 | "@esbuild/openbsd-x64" "0.21.5"
1214 | "@esbuild/sunos-x64" "0.21.5"
1215 | "@esbuild/win32-arm64" "0.21.5"
1216 | "@esbuild/win32-ia32" "0.21.5"
1217 | "@esbuild/win32-x64" "0.21.5"
1218 |
1219 | esbuild@~0.23.0:
1220 | version "0.23.1"
1221 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8"
1222 | integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==
1223 | optionalDependencies:
1224 | "@esbuild/aix-ppc64" "0.23.1"
1225 | "@esbuild/android-arm" "0.23.1"
1226 | "@esbuild/android-arm64" "0.23.1"
1227 | "@esbuild/android-x64" "0.23.1"
1228 | "@esbuild/darwin-arm64" "0.23.1"
1229 | "@esbuild/darwin-x64" "0.23.1"
1230 | "@esbuild/freebsd-arm64" "0.23.1"
1231 | "@esbuild/freebsd-x64" "0.23.1"
1232 | "@esbuild/linux-arm" "0.23.1"
1233 | "@esbuild/linux-arm64" "0.23.1"
1234 | "@esbuild/linux-ia32" "0.23.1"
1235 | "@esbuild/linux-loong64" "0.23.1"
1236 | "@esbuild/linux-mips64el" "0.23.1"
1237 | "@esbuild/linux-ppc64" "0.23.1"
1238 | "@esbuild/linux-riscv64" "0.23.1"
1239 | "@esbuild/linux-s390x" "0.23.1"
1240 | "@esbuild/linux-x64" "0.23.1"
1241 | "@esbuild/netbsd-x64" "0.23.1"
1242 | "@esbuild/openbsd-arm64" "0.23.1"
1243 | "@esbuild/openbsd-x64" "0.23.1"
1244 | "@esbuild/sunos-x64" "0.23.1"
1245 | "@esbuild/win32-arm64" "0.23.1"
1246 | "@esbuild/win32-ia32" "0.23.1"
1247 | "@esbuild/win32-x64" "0.23.1"
1248 |
1249 | escape-string-regexp@^4.0.0:
1250 | version "4.0.0"
1251 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
1252 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
1253 |
1254 | eslint-scope@^8.1.0:
1255 | version "8.1.0"
1256 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.1.0.tgz#70214a174d4cbffbc3e8a26911d8bf51b9ae9d30"
1257 | integrity sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==
1258 | dependencies:
1259 | esrecurse "^4.3.0"
1260 | estraverse "^5.2.0"
1261 |
1262 | eslint-visitor-keys@^3.3.0:
1263 | version "3.4.1"
1264 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994"
1265 | integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
1266 |
1267 | eslint-visitor-keys@^3.4.3:
1268 | version "3.4.3"
1269 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
1270 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
1271 |
1272 | eslint-visitor-keys@^4.1.0:
1273 | version "4.1.0"
1274 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz#1f785cc5e81eb7534523d85922248232077d2f8c"
1275 | integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==
1276 |
1277 | eslint@^9.12.0:
1278 | version "9.12.0"
1279 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.12.0.tgz#54fcba2876c90528396da0fa44b6446329031e86"
1280 | integrity sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==
1281 | dependencies:
1282 | "@eslint-community/eslint-utils" "^4.2.0"
1283 | "@eslint-community/regexpp" "^4.11.0"
1284 | "@eslint/config-array" "^0.18.0"
1285 | "@eslint/core" "^0.6.0"
1286 | "@eslint/eslintrc" "^3.1.0"
1287 | "@eslint/js" "9.12.0"
1288 | "@eslint/plugin-kit" "^0.2.0"
1289 | "@humanfs/node" "^0.16.5"
1290 | "@humanwhocodes/module-importer" "^1.0.1"
1291 | "@humanwhocodes/retry" "^0.3.1"
1292 | "@types/estree" "^1.0.6"
1293 | "@types/json-schema" "^7.0.15"
1294 | ajv "^6.12.4"
1295 | chalk "^4.0.0"
1296 | cross-spawn "^7.0.2"
1297 | debug "^4.3.2"
1298 | escape-string-regexp "^4.0.0"
1299 | eslint-scope "^8.1.0"
1300 | eslint-visitor-keys "^4.1.0"
1301 | espree "^10.2.0"
1302 | esquery "^1.5.0"
1303 | esutils "^2.0.2"
1304 | fast-deep-equal "^3.1.3"
1305 | file-entry-cache "^8.0.0"
1306 | find-up "^5.0.0"
1307 | glob-parent "^6.0.2"
1308 | ignore "^5.2.0"
1309 | imurmurhash "^0.1.4"
1310 | is-glob "^4.0.0"
1311 | json-stable-stringify-without-jsonify "^1.0.1"
1312 | lodash.merge "^4.6.2"
1313 | minimatch "^3.1.2"
1314 | natural-compare "^1.4.0"
1315 | optionator "^0.9.3"
1316 | text-table "^0.2.0"
1317 |
1318 | espree@^10.0.1, espree@^10.2.0:
1319 | version "10.2.0"
1320 | resolved "https://registry.yarnpkg.com/espree/-/espree-10.2.0.tgz#f4bcead9e05b0615c968e85f83816bc386a45df6"
1321 | integrity sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==
1322 | dependencies:
1323 | acorn "^8.12.0"
1324 | acorn-jsx "^5.3.2"
1325 | eslint-visitor-keys "^4.1.0"
1326 |
1327 | esquery@^1.5.0:
1328 | version "1.6.0"
1329 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
1330 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
1331 | dependencies:
1332 | estraverse "^5.1.0"
1333 |
1334 | esrecurse@^4.3.0:
1335 | version "4.3.0"
1336 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
1337 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
1338 | dependencies:
1339 | estraverse "^5.2.0"
1340 |
1341 | estraverse@^5.1.0, estraverse@^5.2.0:
1342 | version "5.3.0"
1343 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
1344 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
1345 |
1346 | estree-walker@^2.0.2:
1347 | version "2.0.2"
1348 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
1349 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
1350 |
1351 | estree-walker@^3.0.3:
1352 | version "3.0.3"
1353 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d"
1354 | integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==
1355 | dependencies:
1356 | "@types/estree" "^1.0.0"
1357 |
1358 | esutils@^2.0.2:
1359 | version "2.0.3"
1360 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
1361 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
1362 |
1363 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
1364 | version "3.1.3"
1365 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1366 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
1367 |
1368 | fast-glob@^3.3.2:
1369 | version "3.3.2"
1370 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
1371 | integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
1372 | dependencies:
1373 | "@nodelib/fs.stat" "^2.0.2"
1374 | "@nodelib/fs.walk" "^1.2.3"
1375 | glob-parent "^5.1.2"
1376 | merge2 "^1.3.0"
1377 | micromatch "^4.0.4"
1378 |
1379 | fast-json-stable-stringify@^2.0.0:
1380 | version "2.1.0"
1381 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1382 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1383 |
1384 | fast-levenshtein@^2.0.6:
1385 | version "2.0.6"
1386 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
1387 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
1388 |
1389 | fast-uri@^3.0.1:
1390 | version "3.0.2"
1391 | resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.2.tgz#d78b298cf70fd3b752fd951175a3da6a7b48f024"
1392 | integrity sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==
1393 |
1394 | fastq@^1.6.0:
1395 | version "1.15.0"
1396 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
1397 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
1398 | dependencies:
1399 | reusify "^1.0.4"
1400 |
1401 | file-entry-cache@^8.0.0:
1402 | version "8.0.0"
1403 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
1404 | integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
1405 | dependencies:
1406 | flat-cache "^4.0.0"
1407 |
1408 | fill-range@^7.0.1:
1409 | version "7.0.1"
1410 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1411 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1412 | dependencies:
1413 | to-regex-range "^5.0.1"
1414 |
1415 | find-up@^5.0.0:
1416 | version "5.0.0"
1417 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
1418 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
1419 | dependencies:
1420 | locate-path "^6.0.0"
1421 | path-exists "^4.0.0"
1422 |
1423 | flat-cache@^4.0.0:
1424 | version "4.0.1"
1425 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
1426 | integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
1427 | dependencies:
1428 | flatted "^3.2.9"
1429 | keyv "^4.5.4"
1430 |
1431 | flatted@^3.2.9:
1432 | version "3.3.1"
1433 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
1434 | integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
1435 |
1436 | foreground-child@^3.1.0:
1437 | version "3.3.0"
1438 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
1439 | integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==
1440 | dependencies:
1441 | cross-spawn "^7.0.0"
1442 | signal-exit "^4.0.1"
1443 |
1444 | fs-extra@~7.0.1:
1445 | version "7.0.1"
1446 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
1447 | integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
1448 | dependencies:
1449 | graceful-fs "^4.1.2"
1450 | jsonfile "^4.0.0"
1451 | universalify "^0.1.0"
1452 |
1453 | fsevents@~2.3.2, fsevents@~2.3.3:
1454 | version "2.3.3"
1455 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
1456 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
1457 |
1458 | function-bind@^1.1.2:
1459 | version "1.1.2"
1460 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
1461 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
1462 |
1463 | get-tsconfig@^4.7.5:
1464 | version "4.8.1"
1465 | resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471"
1466 | integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==
1467 | dependencies:
1468 | resolve-pkg-maps "^1.0.0"
1469 |
1470 | glob-parent@^5.1.2:
1471 | version "5.1.2"
1472 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
1473 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
1474 | dependencies:
1475 | is-glob "^4.0.1"
1476 |
1477 | glob-parent@^6.0.2:
1478 | version "6.0.2"
1479 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
1480 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
1481 | dependencies:
1482 | is-glob "^4.0.3"
1483 |
1484 | glob@^10.4.1:
1485 | version "10.4.5"
1486 | resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
1487 | integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
1488 | dependencies:
1489 | foreground-child "^3.1.0"
1490 | jackspeak "^3.1.2"
1491 | minimatch "^9.0.4"
1492 | minipass "^7.1.2"
1493 | package-json-from-dist "^1.0.0"
1494 | path-scurry "^1.11.1"
1495 |
1496 | globals@^14.0.0:
1497 | version "14.0.0"
1498 | resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
1499 | integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
1500 |
1501 | graceful-fs@^4.1.2, graceful-fs@^4.1.6:
1502 | version "4.2.11"
1503 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
1504 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
1505 |
1506 | graphemer@^1.4.0:
1507 | version "1.4.0"
1508 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
1509 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
1510 |
1511 | has-flag@^4.0.0:
1512 | version "4.0.0"
1513 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1514 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1515 |
1516 | hasown@^2.0.2:
1517 | version "2.0.2"
1518 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
1519 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
1520 | dependencies:
1521 | function-bind "^1.1.2"
1522 |
1523 | he@^1.2.0:
1524 | version "1.2.0"
1525 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
1526 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
1527 |
1528 | html-escaper@^2.0.0:
1529 | version "2.0.2"
1530 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
1531 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
1532 |
1533 | htmlparser2@^8.0.1:
1534 | version "8.0.2"
1535 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21"
1536 | integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==
1537 | dependencies:
1538 | domelementtype "^2.3.0"
1539 | domhandler "^5.0.3"
1540 | domutils "^3.0.1"
1541 | entities "^4.4.0"
1542 |
1543 | ignore@^5.2.0:
1544 | version "5.2.4"
1545 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
1546 | integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
1547 |
1548 | ignore@^5.3.1:
1549 | version "5.3.2"
1550 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
1551 | integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
1552 |
1553 | import-fresh@^3.2.1:
1554 | version "3.3.0"
1555 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
1556 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
1557 | dependencies:
1558 | parent-module "^1.0.0"
1559 | resolve-from "^4.0.0"
1560 |
1561 | import-lazy@~4.0.0:
1562 | version "4.0.0"
1563 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153"
1564 | integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==
1565 |
1566 | imurmurhash@^0.1.4:
1567 | version "0.1.4"
1568 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1569 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
1570 |
1571 | is-core-module@^2.13.0:
1572 | version "2.15.1"
1573 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
1574 | integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
1575 | dependencies:
1576 | hasown "^2.0.2"
1577 |
1578 | is-extglob@^2.1.1:
1579 | version "2.1.1"
1580 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1581 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
1582 |
1583 | is-fullwidth-code-point@^3.0.0:
1584 | version "3.0.0"
1585 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
1586 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
1587 |
1588 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
1589 | version "4.0.3"
1590 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
1591 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
1592 | dependencies:
1593 | is-extglob "^2.1.1"
1594 |
1595 | is-number@^7.0.0:
1596 | version "7.0.0"
1597 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1598 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1599 |
1600 | isexe@^2.0.0:
1601 | version "2.0.0"
1602 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1603 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1604 |
1605 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.2:
1606 | version "3.2.2"
1607 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756"
1608 | integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==
1609 |
1610 | istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1:
1611 | version "3.0.1"
1612 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d"
1613 | integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==
1614 | dependencies:
1615 | istanbul-lib-coverage "^3.0.0"
1616 | make-dir "^4.0.0"
1617 | supports-color "^7.1.0"
1618 |
1619 | istanbul-lib-source-maps@^5.0.6:
1620 | version "5.0.6"
1621 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441"
1622 | integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==
1623 | dependencies:
1624 | "@jridgewell/trace-mapping" "^0.3.23"
1625 | debug "^4.1.1"
1626 | istanbul-lib-coverage "^3.0.0"
1627 |
1628 | istanbul-reports@^3.1.7:
1629 | version "3.1.7"
1630 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b"
1631 | integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==
1632 | dependencies:
1633 | html-escaper "^2.0.0"
1634 | istanbul-lib-report "^3.0.0"
1635 |
1636 | jackspeak@^3.1.2:
1637 | version "3.4.3"
1638 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
1639 | integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
1640 | dependencies:
1641 | "@isaacs/cliui" "^8.0.2"
1642 | optionalDependencies:
1643 | "@pkgjs/parseargs" "^0.11.0"
1644 |
1645 | jju@~1.4.0:
1646 | version "1.4.0"
1647 | resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a"
1648 | integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==
1649 |
1650 | js-yaml@^4.1.0:
1651 | version "4.1.0"
1652 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
1653 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
1654 | dependencies:
1655 | argparse "^2.0.1"
1656 |
1657 | json-buffer@3.0.1:
1658 | version "3.0.1"
1659 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
1660 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
1661 |
1662 | json-schema-traverse@^0.4.1:
1663 | version "0.4.1"
1664 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1665 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1666 |
1667 | json-schema-traverse@^1.0.0:
1668 | version "1.0.0"
1669 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
1670 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
1671 |
1672 | json-stable-stringify-without-jsonify@^1.0.1:
1673 | version "1.0.1"
1674 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1675 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
1676 |
1677 | jsonfile@^4.0.0:
1678 | version "4.0.0"
1679 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
1680 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
1681 | optionalDependencies:
1682 | graceful-fs "^4.1.6"
1683 |
1684 | keyv@^4.5.4:
1685 | version "4.5.4"
1686 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
1687 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
1688 | dependencies:
1689 | json-buffer "3.0.1"
1690 |
1691 | kolorist@^1.8.0:
1692 | version "1.8.0"
1693 | resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c"
1694 | integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==
1695 |
1696 | levn@^0.4.1:
1697 | version "0.4.1"
1698 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
1699 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
1700 | dependencies:
1701 | prelude-ls "^1.2.1"
1702 | type-check "~0.4.0"
1703 |
1704 | local-pkg@^0.5.0:
1705 | version "0.5.0"
1706 | resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c"
1707 | integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==
1708 | dependencies:
1709 | mlly "^1.4.2"
1710 | pkg-types "^1.0.3"
1711 |
1712 | locate-path@^6.0.0:
1713 | version "6.0.0"
1714 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
1715 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
1716 | dependencies:
1717 | p-locate "^5.0.0"
1718 |
1719 | lodash.merge@^4.6.2:
1720 | version "4.6.2"
1721 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
1722 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
1723 |
1724 | lodash@~4.17.15:
1725 | version "4.17.21"
1726 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
1727 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
1728 |
1729 | loupe@^3.1.0, loupe@^3.1.1:
1730 | version "3.1.2"
1731 | resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240"
1732 | integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==
1733 |
1734 | lru-cache@^10.2.0:
1735 | version "10.4.3"
1736 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
1737 | integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
1738 |
1739 | lru-cache@^6.0.0:
1740 | version "6.0.0"
1741 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
1742 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
1743 | dependencies:
1744 | yallist "^4.0.0"
1745 |
1746 | magic-string@^0.30.11:
1747 | version "0.30.12"
1748 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.12.tgz#9eb11c9d072b9bcb4940a5b2c2e1a217e4ee1a60"
1749 | integrity sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==
1750 | dependencies:
1751 | "@jridgewell/sourcemap-codec" "^1.5.0"
1752 |
1753 | magicast@^0.3.4:
1754 | version "0.3.5"
1755 | resolved "https://registry.yarnpkg.com/magicast/-/magicast-0.3.5.tgz#8301c3c7d66704a0771eb1bad74274f0ec036739"
1756 | integrity sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==
1757 | dependencies:
1758 | "@babel/parser" "^7.25.4"
1759 | "@babel/types" "^7.25.4"
1760 | source-map-js "^1.2.0"
1761 |
1762 | make-dir@^4.0.0:
1763 | version "4.0.0"
1764 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e"
1765 | integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==
1766 | dependencies:
1767 | semver "^7.5.3"
1768 |
1769 | merge2@^1.3.0:
1770 | version "1.4.1"
1771 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
1772 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
1773 |
1774 | micromatch@^4.0.4:
1775 | version "4.0.5"
1776 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
1777 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
1778 | dependencies:
1779 | braces "^3.0.2"
1780 | picomatch "^2.3.1"
1781 |
1782 | minimatch@^3.1.2:
1783 | version "3.1.2"
1784 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1785 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
1786 | dependencies:
1787 | brace-expansion "^1.1.7"
1788 |
1789 | minimatch@^9.0.3, minimatch@^9.0.4:
1790 | version "9.0.5"
1791 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
1792 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
1793 | dependencies:
1794 | brace-expansion "^2.0.1"
1795 |
1796 | minimatch@~3.0.3:
1797 | version "3.0.8"
1798 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1"
1799 | integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==
1800 | dependencies:
1801 | brace-expansion "^1.1.7"
1802 |
1803 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
1804 | version "7.1.2"
1805 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
1806 | integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
1807 |
1808 | mlly@^1.4.2, mlly@^1.7.2:
1809 | version "1.7.2"
1810 | resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.2.tgz#21c0d04543207495b8d867eff0ac29fac9a023c0"
1811 | integrity sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==
1812 | dependencies:
1813 | acorn "^8.12.1"
1814 | pathe "^1.1.2"
1815 | pkg-types "^1.2.0"
1816 | ufo "^1.5.4"
1817 |
1818 | ms@2.1.2:
1819 | version "2.1.2"
1820 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1821 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1822 |
1823 | ms@^2.1.3:
1824 | version "2.1.3"
1825 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1826 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1827 |
1828 | muggle-string@^0.4.1:
1829 | version "0.4.1"
1830 | resolved "https://registry.yarnpkg.com/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328"
1831 | integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==
1832 |
1833 | nanoid@^3.3.7:
1834 | version "3.3.7"
1835 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
1836 | integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
1837 |
1838 | natural-compare@^1.4.0:
1839 | version "1.4.0"
1840 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1841 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
1842 |
1843 | nth-check@^2.0.1:
1844 | version "2.1.1"
1845 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
1846 | integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
1847 | dependencies:
1848 | boolbase "^1.0.0"
1849 |
1850 | optionator@^0.9.3:
1851 | version "0.9.4"
1852 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
1853 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
1854 | dependencies:
1855 | deep-is "^0.1.3"
1856 | fast-levenshtein "^2.0.6"
1857 | levn "^0.4.1"
1858 | prelude-ls "^1.2.1"
1859 | type-check "^0.4.0"
1860 | word-wrap "^1.2.5"
1861 |
1862 | p-limit@^3.0.2:
1863 | version "3.1.0"
1864 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1865 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1866 | dependencies:
1867 | yocto-queue "^0.1.0"
1868 |
1869 | p-locate@^5.0.0:
1870 | version "5.0.0"
1871 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1872 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1873 | dependencies:
1874 | p-limit "^3.0.2"
1875 |
1876 | package-json-from-dist@^1.0.0:
1877 | version "1.0.1"
1878 | resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
1879 | integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
1880 |
1881 | parent-module@^1.0.0:
1882 | version "1.0.1"
1883 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1884 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1885 | dependencies:
1886 | callsites "^3.0.0"
1887 |
1888 | parse5-htmlparser2-tree-adapter@^7.0.0:
1889 | version "7.0.0"
1890 | resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1"
1891 | integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==
1892 | dependencies:
1893 | domhandler "^5.0.2"
1894 | parse5 "^7.0.0"
1895 |
1896 | parse5@^7.0.0:
1897 | version "7.1.2"
1898 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
1899 | integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
1900 | dependencies:
1901 | entities "^4.4.0"
1902 |
1903 | path-browserify@^1.0.1:
1904 | version "1.0.1"
1905 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
1906 | integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
1907 |
1908 | path-exists@^4.0.0:
1909 | version "4.0.0"
1910 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1911 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1912 |
1913 | path-key@^3.1.0:
1914 | version "3.1.1"
1915 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1916 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1917 |
1918 | path-parse@^1.0.7:
1919 | version "1.0.7"
1920 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1921 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1922 |
1923 | path-scurry@^1.11.1:
1924 | version "1.11.1"
1925 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
1926 | integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
1927 | dependencies:
1928 | lru-cache "^10.2.0"
1929 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
1930 |
1931 | pathe@^1.1.2:
1932 | version "1.1.2"
1933 | resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
1934 | integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
1935 |
1936 | pathval@^2.0.0:
1937 | version "2.0.0"
1938 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25"
1939 | integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==
1940 |
1941 | picocolors@^1.1.0:
1942 | version "1.1.0"
1943 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
1944 | integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
1945 |
1946 | picomatch@^2.3.1:
1947 | version "2.3.1"
1948 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1949 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1950 |
1951 | pkg-types@^1.0.3, pkg-types@^1.2.0:
1952 | version "1.2.1"
1953 | resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.2.1.tgz#6ac4e455a5bb4b9a6185c1c79abd544c901db2e5"
1954 | integrity sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==
1955 | dependencies:
1956 | confbox "^0.1.8"
1957 | mlly "^1.7.2"
1958 | pathe "^1.1.2"
1959 |
1960 | postcss@^8.4.43:
1961 | version "8.4.47"
1962 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365"
1963 | integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==
1964 | dependencies:
1965 | nanoid "^3.3.7"
1966 | picocolors "^1.1.0"
1967 | source-map-js "^1.2.1"
1968 |
1969 | prelude-ls@^1.2.1:
1970 | version "1.2.1"
1971 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
1972 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
1973 |
1974 | punycode@^2.1.0:
1975 | version "2.3.0"
1976 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
1977 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
1978 |
1979 | queue-microtask@^1.2.2:
1980 | version "1.2.3"
1981 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1982 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1983 |
1984 | require-from-string@^2.0.2:
1985 | version "2.0.2"
1986 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
1987 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
1988 |
1989 | resolve-from@^4.0.0:
1990 | version "4.0.0"
1991 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1992 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1993 |
1994 | resolve-pkg-maps@^1.0.0:
1995 | version "1.0.0"
1996 | resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
1997 | integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
1998 |
1999 | resolve@~1.22.1, resolve@~1.22.2:
2000 | version "1.22.8"
2001 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
2002 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
2003 | dependencies:
2004 | is-core-module "^2.13.0"
2005 | path-parse "^1.0.7"
2006 | supports-preserve-symlinks-flag "^1.0.0"
2007 |
2008 | reusify@^1.0.4:
2009 | version "1.0.4"
2010 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
2011 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
2012 |
2013 | rollup@^4.20.0:
2014 | version "4.24.0"
2015 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.0.tgz#c14a3576f20622ea6a5c9cad7caca5e6e9555d05"
2016 | integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==
2017 | dependencies:
2018 | "@types/estree" "1.0.6"
2019 | optionalDependencies:
2020 | "@rollup/rollup-android-arm-eabi" "4.24.0"
2021 | "@rollup/rollup-android-arm64" "4.24.0"
2022 | "@rollup/rollup-darwin-arm64" "4.24.0"
2023 | "@rollup/rollup-darwin-x64" "4.24.0"
2024 | "@rollup/rollup-linux-arm-gnueabihf" "4.24.0"
2025 | "@rollup/rollup-linux-arm-musleabihf" "4.24.0"
2026 | "@rollup/rollup-linux-arm64-gnu" "4.24.0"
2027 | "@rollup/rollup-linux-arm64-musl" "4.24.0"
2028 | "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0"
2029 | "@rollup/rollup-linux-riscv64-gnu" "4.24.0"
2030 | "@rollup/rollup-linux-s390x-gnu" "4.24.0"
2031 | "@rollup/rollup-linux-x64-gnu" "4.24.0"
2032 | "@rollup/rollup-linux-x64-musl" "4.24.0"
2033 | "@rollup/rollup-win32-arm64-msvc" "4.24.0"
2034 | "@rollup/rollup-win32-ia32-msvc" "4.24.0"
2035 | "@rollup/rollup-win32-x64-msvc" "4.24.0"
2036 | fsevents "~2.3.2"
2037 |
2038 | run-parallel@^1.1.9:
2039 | version "1.2.0"
2040 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
2041 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
2042 | dependencies:
2043 | queue-microtask "^1.2.2"
2044 |
2045 | semver@^7.5.3, semver@^7.6.0:
2046 | version "7.6.3"
2047 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
2048 | integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
2049 |
2050 | semver@~7.5.4:
2051 | version "7.5.4"
2052 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
2053 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
2054 | dependencies:
2055 | lru-cache "^6.0.0"
2056 |
2057 | shebang-command@^2.0.0:
2058 | version "2.0.0"
2059 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2060 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2061 | dependencies:
2062 | shebang-regex "^3.0.0"
2063 |
2064 | shebang-regex@^3.0.0:
2065 | version "3.0.0"
2066 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2067 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2068 |
2069 | siginfo@^2.0.0:
2070 | version "2.0.0"
2071 | resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30"
2072 | integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
2073 |
2074 | signal-exit@^4.0.1:
2075 | version "4.1.0"
2076 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
2077 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
2078 |
2079 | source-map-js@^1.2.0, source-map-js@^1.2.1:
2080 | version "1.2.1"
2081 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
2082 | integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
2083 |
2084 | source-map@~0.6.1:
2085 | version "0.6.1"
2086 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2087 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
2088 |
2089 | sprintf-js@~1.0.2:
2090 | version "1.0.3"
2091 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
2092 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
2093 |
2094 | stackback@0.0.2:
2095 | version "0.0.2"
2096 | resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
2097 | integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
2098 |
2099 | std-env@^3.7.0:
2100 | version "3.7.0"
2101 | resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2"
2102 | integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==
2103 |
2104 | string-argv@~0.3.1:
2105 | version "0.3.2"
2106 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6"
2107 | integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==
2108 |
2109 | "string-width-cjs@npm:string-width@^4.2.0":
2110 | version "4.2.3"
2111 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
2112 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
2113 | dependencies:
2114 | emoji-regex "^8.0.0"
2115 | is-fullwidth-code-point "^3.0.0"
2116 | strip-ansi "^6.0.1"
2117 |
2118 | string-width@^4.1.0:
2119 | version "4.2.3"
2120 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
2121 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
2122 | dependencies:
2123 | emoji-regex "^8.0.0"
2124 | is-fullwidth-code-point "^3.0.0"
2125 | strip-ansi "^6.0.1"
2126 |
2127 | string-width@^5.0.1, string-width@^5.1.2:
2128 | version "5.1.2"
2129 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
2130 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
2131 | dependencies:
2132 | eastasianwidth "^0.2.0"
2133 | emoji-regex "^9.2.2"
2134 | strip-ansi "^7.0.1"
2135 |
2136 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1":
2137 | version "6.0.1"
2138 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
2139 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
2140 | dependencies:
2141 | ansi-regex "^5.0.1"
2142 |
2143 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
2144 | version "6.0.1"
2145 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
2146 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
2147 | dependencies:
2148 | ansi-regex "^5.0.1"
2149 |
2150 | strip-ansi@^7.0.1:
2151 | version "7.1.0"
2152 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
2153 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
2154 | dependencies:
2155 | ansi-regex "^6.0.1"
2156 |
2157 | strip-json-comments@^3.1.1, strip-json-comments@~3.1.1:
2158 | version "3.1.1"
2159 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
2160 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
2161 |
2162 | supports-color@^7.1.0:
2163 | version "7.2.0"
2164 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2165 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2166 | dependencies:
2167 | has-flag "^4.0.0"
2168 |
2169 | supports-color@~8.1.1:
2170 | version "8.1.1"
2171 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
2172 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
2173 | dependencies:
2174 | has-flag "^4.0.0"
2175 |
2176 | supports-preserve-symlinks-flag@^1.0.0:
2177 | version "1.0.0"
2178 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
2179 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
2180 |
2181 | test-exclude@^7.0.1:
2182 | version "7.0.1"
2183 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-7.0.1.tgz#20b3ba4906ac20994e275bbcafd68d510264c2a2"
2184 | integrity sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==
2185 | dependencies:
2186 | "@istanbuljs/schema" "^0.1.2"
2187 | glob "^10.4.1"
2188 | minimatch "^9.0.4"
2189 |
2190 | text-table@^0.2.0:
2191 | version "0.2.0"
2192 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
2193 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
2194 |
2195 | tinybench@^2.9.0:
2196 | version "2.9.0"
2197 | resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b"
2198 | integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==
2199 |
2200 | tinyexec@^0.3.0:
2201 | version "0.3.0"
2202 | resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.0.tgz#ed60cfce19c17799d4a241e06b31b0ec2bee69e6"
2203 | integrity sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==
2204 |
2205 | tinypool@^1.0.0:
2206 | version "1.0.1"
2207 | resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.1.tgz#c64233c4fac4304e109a64340178760116dbe1fe"
2208 | integrity sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==
2209 |
2210 | tinyrainbow@^1.2.0:
2211 | version "1.2.0"
2212 | resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5"
2213 | integrity sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==
2214 |
2215 | tinyspy@^3.0.0:
2216 | version "3.0.2"
2217 | resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a"
2218 | integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==
2219 |
2220 | to-fast-properties@^2.0.0:
2221 | version "2.0.0"
2222 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
2223 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
2224 |
2225 | to-regex-range@^5.0.1:
2226 | version "5.0.1"
2227 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2228 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2229 | dependencies:
2230 | is-number "^7.0.0"
2231 |
2232 | ts-api-utils@^1.3.0:
2233 | version "1.3.0"
2234 | resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
2235 | integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
2236 |
2237 | tsx@^4.19.1:
2238 | version "4.19.1"
2239 | resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.1.tgz#b7bffdf4b565813e4dea14b90872af279cd0090b"
2240 | integrity sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==
2241 | dependencies:
2242 | esbuild "~0.23.0"
2243 | get-tsconfig "^4.7.5"
2244 | optionalDependencies:
2245 | fsevents "~2.3.3"
2246 |
2247 | type-check@^0.4.0, type-check@~0.4.0:
2248 | version "0.4.0"
2249 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
2250 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
2251 | dependencies:
2252 | prelude-ls "^1.2.1"
2253 |
2254 | typescript-eslint@^8.8.1:
2255 | version "8.8.1"
2256 | resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.8.1.tgz#b375c877b2184d883b6228170bc66f0fca847c9a"
2257 | integrity sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==
2258 | dependencies:
2259 | "@typescript-eslint/eslint-plugin" "8.8.1"
2260 | "@typescript-eslint/parser" "8.8.1"
2261 | "@typescript-eslint/utils" "8.8.1"
2262 |
2263 | typescript@5.4.2:
2264 | version "5.4.2"
2265 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372"
2266 | integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==
2267 |
2268 | typescript@^5.6.3:
2269 | version "5.6.3"
2270 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b"
2271 | integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
2272 |
2273 | ufo@^1.5.4:
2274 | version "1.5.4"
2275 | resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
2276 | integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
2277 |
2278 | universalify@^0.1.0:
2279 | version "0.1.2"
2280 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
2281 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
2282 |
2283 | uri-js@^4.2.2, uri-js@^4.4.1:
2284 | version "4.4.1"
2285 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
2286 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
2287 | dependencies:
2288 | punycode "^2.1.0"
2289 |
2290 | vite-node@2.1.2:
2291 | version "2.1.2"
2292 | resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-2.1.2.tgz#f5491a2b399959c9e2f3c4b70cb0cbaecf9be6d2"
2293 | integrity sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==
2294 | dependencies:
2295 | cac "^6.7.14"
2296 | debug "^4.3.6"
2297 | pathe "^1.1.2"
2298 | vite "^5.0.0"
2299 |
2300 | vite-plugin-dts@^4.2.4:
2301 | version "4.2.4"
2302 | resolved "https://registry.yarnpkg.com/vite-plugin-dts/-/vite-plugin-dts-4.2.4.tgz#5b8697e6abe9004e6d134a59a9bc08f2eacb9288"
2303 | integrity sha512-REcYoxO90Pi8c0P1J7XAa/nVwNVGkX2eYkBEIfFSfcKE4g1W8sB0R23a7SU3aLEMfdOdb0SVHq3JlJ+Qb6gjgA==
2304 | dependencies:
2305 | "@microsoft/api-extractor" "7.47.7"
2306 | "@rollup/pluginutils" "^5.1.0"
2307 | "@volar/typescript" "^2.4.4"
2308 | "@vue/language-core" "2.1.6"
2309 | compare-versions "^6.1.1"
2310 | debug "^4.3.6"
2311 | kolorist "^1.8.0"
2312 | local-pkg "^0.5.0"
2313 | magic-string "^0.30.11"
2314 |
2315 | vite@^5.0.0, vite@^5.4.8:
2316 | version "5.4.8"
2317 | resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.8.tgz#af548ce1c211b2785478d3ba3e8da51e39a287e8"
2318 | integrity sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==
2319 | dependencies:
2320 | esbuild "^0.21.3"
2321 | postcss "^8.4.43"
2322 | rollup "^4.20.0"
2323 | optionalDependencies:
2324 | fsevents "~2.3.3"
2325 |
2326 | vitest@^2.1.2:
2327 | version "2.1.2"
2328 | resolved "https://registry.yarnpkg.com/vitest/-/vitest-2.1.2.tgz#f285fdde876749fddc0cb4d9748ae224443c1694"
2329 | integrity sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==
2330 | dependencies:
2331 | "@vitest/expect" "2.1.2"
2332 | "@vitest/mocker" "2.1.2"
2333 | "@vitest/pretty-format" "^2.1.2"
2334 | "@vitest/runner" "2.1.2"
2335 | "@vitest/snapshot" "2.1.2"
2336 | "@vitest/spy" "2.1.2"
2337 | "@vitest/utils" "2.1.2"
2338 | chai "^5.1.1"
2339 | debug "^4.3.6"
2340 | magic-string "^0.30.11"
2341 | pathe "^1.1.2"
2342 | std-env "^3.7.0"
2343 | tinybench "^2.9.0"
2344 | tinyexec "^0.3.0"
2345 | tinypool "^1.0.0"
2346 | tinyrainbow "^1.2.0"
2347 | vite "^5.0.0"
2348 | vite-node "2.1.2"
2349 | why-is-node-running "^2.3.0"
2350 |
2351 | vscode-uri@^3.0.8:
2352 | version "3.0.8"
2353 | resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f"
2354 | integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==
2355 |
2356 | which@^2.0.1:
2357 | version "2.0.2"
2358 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2359 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2360 | dependencies:
2361 | isexe "^2.0.0"
2362 |
2363 | why-is-node-running@^2.3.0:
2364 | version "2.3.0"
2365 | resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04"
2366 | integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==
2367 | dependencies:
2368 | siginfo "^2.0.0"
2369 | stackback "0.0.2"
2370 |
2371 | word-wrap@^1.2.5:
2372 | version "1.2.5"
2373 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
2374 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
2375 |
2376 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
2377 | version "7.0.0"
2378 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
2379 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
2380 | dependencies:
2381 | ansi-styles "^4.0.0"
2382 | string-width "^4.1.0"
2383 | strip-ansi "^6.0.0"
2384 |
2385 | wrap-ansi@^8.1.0:
2386 | version "8.1.0"
2387 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
2388 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
2389 | dependencies:
2390 | ansi-styles "^6.1.0"
2391 | string-width "^5.0.1"
2392 | strip-ansi "^7.0.1"
2393 |
2394 | yallist@^4.0.0:
2395 | version "4.0.0"
2396 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
2397 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
2398 |
2399 | yocto-queue@^0.1.0:
2400 | version "0.1.0"
2401 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2402 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
2403 |
--------------------------------------------------------------------------------