├── .circleci └── config.yml ├── .gitignore ├── .sonarcloud.properties ├── CHANGELOG.md ├── CONTRIBUTING.md ├── README.md ├── eslint.config.mjs ├── index.d.ts ├── index.ts ├── jest.config.js ├── license.md ├── package.json ├── renovate.json ├── tests ├── fruit.ts ├── index.test.ts ├── package.json ├── test.html └── yarn.lock ├── tsconfig.json └── yarn.lock /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | 3 | executors: 4 | nodejs: 5 | docker: 6 | - image: cimg/node:22.17.0 7 | 8 | commands: 9 | checkout-and-restore-cache: 10 | description: "restore cache" 11 | steps: 12 | - checkout 13 | - restore_cache: 14 | keys: 15 | - dependencies-{{ checksum "yarn.lock" }} 16 | - dependencies- 17 | save-node-modules-cache: 18 | steps: 19 | - save_cache: 20 | key: dependencies-{{ checksum "yarn.lock" }} 21 | paths: 22 | - node_modules 23 | 24 | jobs: 25 | lint: 26 | executor: nodejs 27 | steps: 28 | - checkout-and-restore-cache 29 | - run: yarn install 30 | - save-node-modules-cache 31 | - run: yarn lint 32 | 33 | build: 34 | executor: nodejs 35 | steps: 36 | - checkout-and-restore-cache 37 | - run: yarn install 38 | - save-node-modules-cache 39 | - run: yarn build 40 | 41 | test: 42 | executor: nodejs 43 | steps: 44 | - checkout-and-restore-cache 45 | - run: yarn install 46 | - run: yarn build 47 | - run: yarn test --coverage 48 | 49 | workflows: 50 | build-and-deploy: 51 | jobs: 52 | - lint 53 | - build: 54 | requires: 55 | - lint 56 | - test: 57 | requires: 58 | - build -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .vscode/* 3 | ui 4 | 5 | # Compiled source # 6 | ################### 7 | *.com 8 | *.class 9 | *.dll 10 | *.exe 11 | *.o 12 | *.so 13 | *.min.js 14 | *.d.ts.map 15 | dist 16 | # Packages # 17 | ############ 18 | # it's better to unpack these files and commit the raw source 19 | # git has its own built in compression methods 20 | *.7z 21 | *.dmg 22 | *.gz 23 | *.iso 24 | *.jar 25 | *.rar 26 | *.tar 27 | *.zip 28 | 29 | # Logs and databases # 30 | ###################### 31 | *.log 32 | *.sql 33 | *.sqlite 34 | 35 | # OS generated files # 36 | ###################### 37 | .DS_Store 38 | .DS_Store? 39 | ._* 40 | .Spotlight-V100 41 | .Trashes 42 | ehthumbs.db 43 | Thumbs.db 44 | -------------------------------------------------------------------------------- /.sonarcloud.properties: -------------------------------------------------------------------------------- 1 | sonar.projectKey=typescript-string-operations 2 | sonar.test=tests 3 | sonar.test.inclusions=**/*.test.ts 4 | sonar.javascript.lcov.reportPaths=./coverage/lcov.info 5 | sonar.exclusions=node_modules 6 | sonar.qualitygate.wait=true 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | #### 1.6.0 4 | - Using latest typescript version, please check if your environment still works with this version before upgrading! 5 | - chore: upgraded packages 6 | - chore: migrated eslint to 9.x 7 | 8 | #### 1.5.0 9 | - Using latest typescript version, please check if your environment still works with this version before upgrading! 10 | - feature: !IMPORTANT methods/properties starting with uppercase are marked deprecated now and will be removed in future versions! Check the deprecated infos 11 | - feature: `String.isNullOrWhiteSpace` accepts null or undefined now 12 | - feature: added new methods/properties: `isNullOrWhiteSpace(), formatString(), joinString(), empty`, check [README](https://github.com/sevensc/typescript-string-operations/blob/main/README.md) 13 | - chore: Updated packages 14 | - chore: added linting 15 | 16 | #### 1.4.1 17 | - docs: added missing docs for `AppendLine` and `AppendLineFormat` 18 | - bufix: fixed circleci badge 19 | 20 | #### 1.4.0 21 | - feature: added `AppendLine` and `AppendLineFormat` 22 | - feature: added hexadecimal conversion specifier 23 | - bugfix: `StringBuilder` initialization without parameter adds empty string to internal Values Array. 24 | - bugfix: When there is no placeholder in the template passed to String.format it should return the original template 25 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | ## Getting Started 4 | 5 | 1. clone this repo 6 | 1. execute `yarn install (not npm!)` 7 | 1. code! 8 | 1. build using `yarn build` 9 | 1. test using `yarn test` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | [![CircleCI](https://circleci.com/gh/sevensc/typescript-string-operations.svg?style=shield)](https://app.circleci.com/pipelines/github/sevensc/typescript-string-operations) 3 | [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=sevensc_typescript-string-operations&metric=alert_status)](https://sonarcloud.io/dashboard?id=sevensc_typescript-string-operations) 4 | ![npm](https://img.shields.io/npm/v/typescript-string-operations) 5 | ![npm](https://img.shields.io/npm/dw/typescript-string-operations) 6 | 7 | 8 | # Simple lightweight string operation library for Typescript. 9 | 10 | 11 | ## Installation 12 | 13 | ``` 14 | npm install typescript-string-operations 15 | ``` 16 | 17 | ## No jQuery required! Unit tested, works with Angular. 18 | 19 | 20 | ```typescript 21 | import { StringBuilder, emptyString, joinString, formatString, isNullOrWhiteSpace } from 'typescript-string-operations'; 22 | ``` 23 | 24 | When migrating from Version 1.4.1 or lower, you can also import the class `String`. Using this String class would override the native `String` object from JavaScript. We will remove this declaration with the next major release 25 | 26 | ```typescript 27 | import { String } from 'typescript-string-operations'; 28 | ``` 29 | 30 | #### USAGE: 31 | 32 | ### String.empty 33 | ```typescript 34 | var id = emptyString; // or String.empty 35 | // output: id = ''; 36 | ``` 37 | 38 | ### String.isNullOrWhiteSpace(): 39 | ```typescript 40 | var id = image.GetId(); 41 | if(isNullOrWhiteSpace(id)) // String.isNullOrWhiteSpace(id) 42 | return image; 43 | ``` 44 | ### String.format(): 45 | 46 | ```typescript 47 | var id = image.GetId() 48 | formatString("image_{0}.jpg", id) // or String.format() 49 | output: "image_2db5da20-1c5d-4f1a-8fd4-b41e34c8c5b5.jpg"; 50 | ``` 51 | 52 | Specifier available! 53 | ```typescript 54 | var value = formatString("{0:L}", "APPLE"); //output "apple" 55 | 56 | value = formatString("{0:U}", "apple"); // output "APPLE" 57 | 58 | value = formatString("{0:d}", "2017-01-23 00:00"); //output "23.01.2017" 59 | 60 | value = formatString("{0:s}", "21.03.2017 22:15:01") //output "2017-03-21T22:15:01" 61 | 62 | value = formatString("{0:n}", 1000000); 63 | //output "1.000.000" 64 | 65 | value = formatString("{0:00}", 1); 66 | //output "01" 67 | ``` 68 | 69 | ## UPDATE 70 | #### String.format for Objects including specifiers 71 | 72 | ```typescript 73 | var fruit = new Fruit(); 74 | fruit.type = "apple"; 75 | fruit.color = "RED"; 76 | fruit.shippingDate = new Date(2018, 1, 1); 77 | fruit.amount = 10000; 78 | 79 | format("the {type:U} is {color:L} shipped on {shippingDate:s} with an amount of {amount:n}", fruit); 80 | // output: the APPLE is red shipped on 2018-01-01 with an amount of 10.000 81 | 82 | ``` 83 | 84 | 85 | | Specifier | Result | 86 | | :-------------: |:---------------------------:| 87 | | `L` | LowerCase | 88 | | `U` | UpperCase | 89 | | `d` | ShortDatePattern | 90 | | `s` | SortableDateTimePattern | 91 | | `n` | Thousand seperator | 92 | | `00` | Padding numbers | 93 | 94 | 95 | 96 | ### String.join(): 97 | 98 | ```typescript 99 | var value = joinString("; ", "Apple", "Banana"); // or String.join() 100 | //output: "Apple; Banana"; 101 | ``` 102 | #### OR 103 | 104 | ```typescript 105 | let object = { Name: "Foo", Value: "Bar" }; 106 | var value = joinString('.', object); 107 | //output: "Foo.Bar"; 108 | 109 | var array = ['Apple', 'Banana'] 110 | var value = joinString("; ", array); 111 | //output: "Apple; Banana"; 112 | ``` 113 | 114 | ## Methods 115 | 116 | | Method | Type | Description | Parameter | 117 | | :------------------------:|:-----------:|:--------------------------:|:----------:| 118 | | `empty` | `Property` | simply returns `""`. | 119 | | `isNullOrWhiteSpace` | `Method` | returns true value if given parameter is either null, empty or undefined. | `format`, `...args` 120 | | `format`/`formatString` | `Method` | Converts the value of objects to strings based on the formats specified and inserts them into another string. | `format`, `...args` 121 | | `join`/`joinString` | `Method` | Combines arguments delimited by given seperator.| `delimiter`,`...args` 122 | | `join`/`joinString` | `Method` | Combines arguments delimited by given seperator from array. | `delimiter`,`array` | 123 | 124 | 125 | ### StringBuilder 126 | 127 | Just like you know from C#, 128 | 129 | 130 | ```typescript 131 | 132 | var favoriteFruit: string = this.fruitService.getFavorite(); //Blueberries 133 | 134 | var builder = new StringBuilder("My favorite fruits are: "); 135 | builder.Append("Apples, "); 136 | builder.Append("Bananas "); 137 | 138 | // using String.format() internally 139 | builder.AppendFormat("and especially {0:U}!", favoriteFruit); 140 | builder.AppendFormat(" I eat {0} every day!", 10); 141 | 142 | var fruits = builder.ToString(); 143 | 144 | //output: "My favorite fruits are: Apples, Bananas and especially BLUEBERRIES! I eat 10 every day!"; 145 | 146 | ``` 147 | ## Methods 148 | 149 | | Method | Type | Description | Parameter | 150 | | :------------------------:|:-----------:|:--------------------------:|:----------:| 151 | | `Append` | `Method` | appends a string. | `value` | 152 | | `AppendFormat` | `Method` | see description for `format()`| `format`, `args`| 153 | | `AppendLine` | `Method` | appends a string in a new line. | `format`, `args`| 154 | | `AppendLineFormat` | `Method` | like `format()` in a new line | `format`, `args`| 155 | | `Clear` | `Method` | clears the `StringBuilder` | | 156 | | `ToString` | `Method` | creates the actual string. | | 157 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig, globalIgnores } from "eslint/config"; 2 | import typescriptEslint from "@typescript-eslint/eslint-plugin"; 3 | import globals from "globals"; 4 | import tsParser from "@typescript-eslint/parser"; 5 | import path from "node:path"; 6 | import { fileURLToPath } from "node:url"; 7 | import js from "@eslint/js"; 8 | import { FlatCompat } from "@eslint/eslintrc"; 9 | 10 | const __filename = fileURLToPath(import.meta.url); 11 | const __dirname = path.dirname(__filename); 12 | const compat = new FlatCompat({ 13 | baseDirectory: __dirname, 14 | recommendedConfig: js.configs.recommended, 15 | allConfig: js.configs.all 16 | }); 17 | 18 | export default defineConfig([globalIgnores(["**/*.js", "**/*.d.ts"]), { 19 | extends: compat.extends("eslint:recommended", "plugin:@typescript-eslint/recommended"), 20 | 21 | plugins: { 22 | "@typescript-eslint": typescriptEslint, 23 | }, 24 | 25 | languageOptions: { 26 | globals: { 27 | ...globals.browser, 28 | ...globals.commonjs, 29 | ...globals.node, 30 | }, 31 | 32 | parser: tsParser, 33 | ecmaVersion: "latest", 34 | sourceType: "commonjs", 35 | }, 36 | ignores: [ 37 | "*.*js", 38 | "*.d.ts" 39 | ], 40 | rules: { 41 | "@typescript-eslint/no-explicit-any": ["off"], 42 | "@typescript-eslint/no-var-requires": ["off"], 43 | "@typescript-eslint/no-inferrable-types": ["off"], 44 | indent: ["off", "tab"], 45 | "linebreak-style": ["warn", "unix"], 46 | "no-mixed-spaces-and-tabs": ["warn", "smart-tabs"], 47 | 48 | quotes: ["warn", "single", { 49 | allowTemplateLiterals: true, 50 | }], 51 | 52 | semi: ["warn", "always"], 53 | "comma-dangle": ["warn", "always-multiline"], 54 | }, 55 | }]); -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | export declare const emptyString = ""; 2 | export declare function isNullOrWhiteSpace(value: string | null): boolean; 3 | export declare function joinString(delimiter: string, ...args: (string | object | Array)[]): string; 4 | export declare function formatString(format: string, ...args: any[]): string; 5 | export declare class String { 6 | private static readonly regexNumber; 7 | private static readonly regexObject; 8 | static empty: string; 9 | /** 10 | * @deprecated The property should not be used, and will be removed in future versions! Use `String.empty` instead. 11 | */ 12 | static Empty: string; 13 | /** 14 | * @deprecated The method should not be used, and will be removed in future versions! Use `String.isNullOrWhiteSpace()` instead. 15 | */ 16 | static IsNullOrWhiteSpace(value: string | null | undefined): boolean; 17 | /** 18 | * @deprecated The method should not be used, and will be removed in future versions! Use `String.join()` instead. 19 | */ 20 | static Join(delimiter: string, ...args: (string | object | Array)[]): string; 21 | /** 22 | * @deprecated The method should not be used, and will be removed in future version!s Use `String.format()` instead. 23 | */ 24 | static Format(format: string, ...args: any[]): string; 25 | static isNullOrWhiteSpace(value: string | null): boolean; 26 | static join(delimiter: string, ...args: (string | object | Array)[]): string; 27 | static format(format: string, ...args: any[]): string; 28 | private static formatString; 29 | private static parsePattern; 30 | private static decimalToHexString; 31 | private static getDisplayDateFromString; 32 | private static getSortableDateFromString; 33 | private static formatNumber; 34 | private static joinString; 35 | } 36 | export declare class StringBuilder { 37 | Values: string[]; 38 | constructor(value?: string); 39 | toString(): string; 40 | /** 41 | * @deprecated The method should not be used, and will be removed in future versions! Use `toString()` instead. 42 | */ 43 | ToString(): string; 44 | append(value: string): void; 45 | /** 46 | * @deprecated The method should not be used, and will be removed in future versions! Use `append()` instead. 47 | */ 48 | Append(value: string): void; 49 | appendLine(value: string): void; 50 | /** 51 | * @deprecated The method should not be used, and will be removed in future versions! Use `appendLine()` instead. 52 | */ 53 | AppendLine(value: string): void; 54 | appendFormat(format: string, ...args: any[]): void; 55 | /** 56 | * @deprecated The method should not be used, and will be removed in future versions! Use `appendFormat()` instead. 57 | */ 58 | AppendFormat(format: string, ...args: any[]): void; 59 | appendLineFormat(format: string, ...args: any[]): void; 60 | /** 61 | * @deprecated The method should not be used, and will be removed in future versions! Use `appendLineFormat()` instead. 62 | */ 63 | AppendLineFormat(format: string, ...args: any[]): void; 64 | clear(): void; 65 | /** 66 | * @deprecated The method should not be used, and will be removed in future versions! Use `clear()` instead. 67 | */ 68 | Clear(): void; 69 | } 70 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | const EOL = '\r\n'; 2 | 3 | export const emptyString = ''; 4 | 5 | export function isNullOrWhiteSpace(value: string | null): boolean { 6 | return String.isNullOrWhiteSpace(value); 7 | } 8 | 9 | export function joinString(delimiter: string, ...args: (string | object | Array)[]): string { 10 | return String.join(delimiter, ...args); 11 | } 12 | 13 | export function formatString(format: string, ...args: any[]): string { 14 | return String.format(format, ...args); 15 | } 16 | 17 | export class String { 18 | private static readonly regexNumber = /{(\d+(:\w*)?)}/g; 19 | private static readonly regexObject = /{(\w+(:\w*)?)}/g; 20 | public static empty = ''; 21 | /** 22 | * @deprecated The property should not be used, and will be removed in future versions! Use `String.empty` instead. 23 | */ 24 | public static Empty = ''; 25 | 26 | /** 27 | * @deprecated The method should not be used, and will be removed in future versions! Use `String.isNullOrWhiteSpace()` instead. 28 | */ 29 | public static IsNullOrWhiteSpace(value: string | null | undefined): boolean { 30 | return String.isNullOrWhiteSpace(value); 31 | } 32 | 33 | /** 34 | * @deprecated The method should not be used, and will be removed in future versions! Use `String.join()` instead. 35 | */ 36 | public static Join(delimiter: string, ...args: (string | object | Array)[]): string { 37 | return String.join(delimiter, ...args); 38 | } 39 | 40 | /** 41 | * @deprecated The method should not be used, and will be removed in future version!s Use `String.format()` instead. 42 | */ 43 | public static Format(format: string, ...args: any[]): string { 44 | return String.format(format, ...args); 45 | } 46 | 47 | public static isNullOrWhiteSpace(value: string | null): boolean { 48 | try { 49 | if (value == null || value == 'undefined') { 50 | return true; 51 | } 52 | 53 | return value.toString().replace(/\s/g, '').length < 1; 54 | } 55 | catch (e) { 56 | console.log(e); 57 | return false; 58 | } 59 | } 60 | 61 | public static join(delimiter: string, ...args: (string | object | Array)[]): string { 62 | try { 63 | const firstArg = args[0]; 64 | if (Array.isArray(firstArg) || firstArg instanceof Array) { 65 | let tempString = String.empty; 66 | 67 | for (let i = 0; i < firstArg.length; i++) { 68 | const current = firstArg[i]; 69 | if (i < firstArg.length - 1) { 70 | tempString += current + delimiter; 71 | } 72 | else { 73 | tempString += current; 74 | } 75 | } 76 | 77 | return tempString; 78 | } 79 | else if (typeof firstArg === 'object') { 80 | let tempString = String.empty; 81 | const objectArg = firstArg; 82 | const keys = Object.keys(firstArg); //get all Properties of the Object as Array 83 | keys.forEach(element => { tempString += (objectArg)[element] + delimiter; }); 84 | tempString = tempString.slice(0, tempString.length - delimiter.length); //remove last delimiter 85 | return tempString; 86 | } 87 | 88 | const stringArray = args; 89 | 90 | return String.joinString(delimiter, ...stringArray); 91 | } 92 | catch (e) { 93 | console.log(e); 94 | return String.empty; 95 | } 96 | } 97 | 98 | public static format(format: string, ...args: any[]): string { 99 | try { 100 | if (format.match(String.regexNumber)) { 101 | return String.formatString(String.regexNumber, format, args); 102 | } 103 | 104 | if (format.match(String.regexObject)) { 105 | return String.formatString(String.regexObject, format, args, true); 106 | } 107 | 108 | return format; 109 | } 110 | catch (e) { 111 | console.log(e); 112 | return String.empty; 113 | } 114 | } 115 | 116 | private static formatString(regex: any, format: string, args: any, parseByObject = false): string { 117 | return format.replace(regex, function (match, x) { //0 118 | const s = match.split(':'); 119 | if (s.length > 1) { 120 | x = s[0].replace('{', ''); 121 | match = s[1].replace('}', ''); //U 122 | } 123 | 124 | let arg; 125 | if (parseByObject) { 126 | arg = args[0][x]; 127 | } 128 | else { 129 | arg = args[x]; 130 | } 131 | 132 | if (arg == null || arg == undefined || match.match(/{\d+}/)) { 133 | return arg; 134 | } 135 | 136 | arg = String.parsePattern(match, arg); 137 | return typeof arg != 'undefined' && arg != null ? arg : String.empty; 138 | }); 139 | } 140 | 141 | private static parsePattern(match: 'L' | 'U' | 'd' | 's' | 'n' | 'x' | 'X' | string, arg: string | Date | number | any): string { 142 | switch (match) { 143 | case 'L': { 144 | arg = arg.toLocaleLowerCase(); 145 | return arg; 146 | } 147 | case 'U': { 148 | arg = arg.toLocaleUpperCase(); 149 | return arg; 150 | } 151 | case 'd': { 152 | if (typeof (arg) === 'string') { 153 | return String.getDisplayDateFromString(arg); 154 | } 155 | else if (arg instanceof Date) { 156 | return String.format('{0:00}.{1:00}.{2:0000}', arg.getDate(), arg.getMonth(), arg.getFullYear()); 157 | } 158 | break; 159 | } 160 | case 's': { 161 | if (typeof (arg) === 'string') { 162 | return String.getSortableDateFromString(arg); 163 | } 164 | else if (arg instanceof Date) { 165 | return String.format('{0:0000}-{1:00}-{2:00}', arg.getFullYear(), arg.getMonth(), arg.getDate()); 166 | } 167 | break; 168 | } 169 | case 'n': {//Tausender Trennzeichen 170 | if (typeof (arg) !== 'string') 171 | arg = arg.toString(); 172 | const replacedString = arg.replace(/,/g, '.'); 173 | if (isNaN(parseFloat(replacedString)) || replacedString.length <= 3) { 174 | break; 175 | } 176 | 177 | const numberparts = replacedString.split(/\D+/g); 178 | let parts = numberparts; 179 | 180 | if (numberparts.length > 1) { 181 | parts = [String.joinString('', ...(numberparts.splice(0, numberparts.length - 1))), numberparts[numberparts.length - 1]]; 182 | } 183 | 184 | const integer = parts[0]; 185 | 186 | const mod = integer.length % 3; 187 | let output = (mod > 0 ? (integer.substring(0, mod)) : String.empty); 188 | 189 | const remainingGroups = integer.substring(mod).match(/.{3}/g); 190 | output = output + '.' + String.join('.', remainingGroups); 191 | arg = output + (parts.length > 1 ? ',' + parts[1] : ''); 192 | return arg; 193 | } 194 | case 'x': { 195 | return this.decimalToHexString(arg); 196 | } 197 | case 'X': { 198 | return this.decimalToHexString(arg, true); 199 | } 200 | default: { 201 | break; 202 | } 203 | } 204 | 205 | if ((typeof (arg) === 'number' || !isNaN(arg)) && !isNaN(+match) && !String.isNullOrWhiteSpace(arg)) { 206 | return String.formatNumber(arg, match); 207 | } 208 | 209 | return arg; 210 | } 211 | 212 | private static decimalToHexString(value: string, upperCase = false) { 213 | const parsed = parseFloat(value); 214 | const hexNumber = parsed.toString(16); 215 | return upperCase ? hexNumber.toLocaleUpperCase() : hexNumber; 216 | } 217 | 218 | private static getDisplayDateFromString(input: string): string { 219 | const splitted: string[] = input.split('-'); 220 | 221 | if (splitted.length <= 1) { 222 | return input; 223 | } 224 | 225 | let day = splitted[splitted.length - 1]; 226 | const month = splitted[splitted.length - 2]; 227 | const year = splitted[splitted.length - 3]; 228 | day = day.split('T')[0]; 229 | day = day.split(' ')[0]; 230 | 231 | return `${day}.${month}.${year}`; 232 | } 233 | 234 | private static getSortableDateFromString(input: string): string { 235 | const splitted = input.replace(',', '').split('.'); 236 | if (splitted.length <= 1) { 237 | return input; 238 | } 239 | 240 | const times = splitted[splitted.length - 1].split(' '); 241 | let time = String.empty; 242 | if (times.length > 1) { 243 | time = times[times.length - 1]; 244 | } 245 | 246 | const year = splitted[splitted.length - 1].split(' ')[0]; 247 | const month = splitted[splitted.length - 2]; 248 | const day = splitted[splitted.length - 3]; 249 | let result = `${year}-${month}-${day}`; 250 | 251 | if (!String.isNullOrWhiteSpace(time) && time.length > 1) { 252 | result += `T${time}`; 253 | } 254 | else { 255 | result += 'T00:00:00'; 256 | } 257 | 258 | return result; 259 | } 260 | 261 | private static formatNumber(input: number, formatTemplate: string): string { 262 | const count = formatTemplate.length; 263 | const stringValue = input.toString(); 264 | if (count <= stringValue.length) { 265 | return stringValue; 266 | } 267 | 268 | let remainingCount = count - stringValue.length; 269 | remainingCount += 1; //Array must have an extra entry 270 | 271 | return new Array(remainingCount).join('0') + stringValue; 272 | } 273 | 274 | private static joinString(delimiter: string, ...args: string[]): string { 275 | let temp = String.empty; 276 | for (let i = 0; i < args.length; i++) { 277 | if ((typeof args[i] == 'string' && String.isNullOrWhiteSpace(args[i])) 278 | || (typeof args[i] != 'number' && typeof args[i] != 'string')) { 279 | continue; 280 | } 281 | 282 | const arg = '' + args[i]; 283 | temp += arg; 284 | for (let i2 = i + 1; i2 < args.length; i2++) { 285 | if (String.isNullOrWhiteSpace(args[i2])) { 286 | continue; 287 | } 288 | 289 | temp += delimiter; 290 | i = i2 - 1; 291 | break; 292 | } 293 | } 294 | 295 | return temp; 296 | } 297 | } 298 | 299 | 300 | export class StringBuilder { 301 | public Values: string[]; 302 | 303 | constructor(value = '') { 304 | this.Values = []; 305 | 306 | if (!String.isNullOrWhiteSpace(value)) { 307 | this.Values = new Array(value); 308 | } 309 | } 310 | 311 | public toString() { 312 | return this.Values.join(String.empty); 313 | } 314 | 315 | /** 316 | * @deprecated The method should not be used, and will be removed in future versions! Use `toString()` instead. 317 | */ 318 | public ToString() { 319 | return this.toString(); 320 | } 321 | 322 | public append(value: string) { 323 | this.Values.push(value); 324 | } 325 | 326 | /** 327 | * @deprecated The method should not be used, and will be removed in future versions! Use `append()` instead. 328 | */ 329 | public Append(value: string) { 330 | this.append(value); 331 | } 332 | 333 | public appendLine(value: string) { 334 | this.Values.push(EOL + value); 335 | } 336 | 337 | /** 338 | * @deprecated The method should not be used, and will be removed in future versions! Use `appendLine()` instead. 339 | */ 340 | public AppendLine(value: string) { 341 | this.appendLine(value); 342 | } 343 | 344 | public appendFormat(format: string, ...args: any[]) { 345 | this.Values.push(String.format(format, ...args)); 346 | } 347 | 348 | /** 349 | * @deprecated The method should not be used, and will be removed in future versions! Use `appendFormat()` instead. 350 | */ 351 | public AppendFormat(format: string, ...args: any[]) { 352 | this.appendFormat(format, ...args); 353 | } 354 | 355 | public appendLineFormat(format: string, ...args: any[]) { 356 | this.Values.push(EOL + String.format(format, ...args)); 357 | } 358 | 359 | /** 360 | * @deprecated The method should not be used, and will be removed in future versions! Use `appendLineFormat()` instead. 361 | */ 362 | public AppendLineFormat(format: string, ...args: any[]) { 363 | return this.appendLineFormat(format, ...args); 364 | } 365 | 366 | public clear() { 367 | this.Values = []; 368 | } 369 | 370 | /** 371 | * @deprecated The method should not be used, and will be removed in future versions! Use `clear()` instead. 372 | */ 373 | public Clear() { 374 | this.clear(); 375 | } 376 | 377 | } -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | testEnvironment: 'node', 4 | roots: ['/tests'], 5 | testMatch: ['**/*.test.ts'], 6 | preset: 'ts-jest', 7 | }; -------------------------------------------------------------------------------- /license.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Sven Ulrich 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. -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript-string-operations", 3 | "version": "1.6.1", 4 | "description": "Simple lightweight string operation library for Typescript, works with Angular", 5 | "main": "dist/index.js", 6 | "types": "index.d.ts", 7 | "files": [ 8 | "dist/**/*", 9 | "index.d.ts" 10 | ], 11 | "scripts": { 12 | "test": "jest", 13 | "build": "tsc; uglifyjs ./dist/index.js --compress -o ./dist/index.js", 14 | "lint": "eslint ." 15 | }, 16 | "repository": "https://github.com/sevensc/typescript-string-operations.git", 17 | "keywords": [ 18 | "typescript", 19 | "string format", 20 | "string operations", 21 | "stringbuilder", 22 | "string builder", 23 | "angular" 24 | ], 25 | "author": "sevensc", 26 | "license": "MIT", 27 | "bugs": { 28 | "url": "https://github.com/sevensc/typescript-string-operations/issues" 29 | }, 30 | "homepage": "https://github.com/sevensc/typescript-string-operations#readme", 31 | "devDependencies": { 32 | "@eslint/eslintrc": "^3.3.1", 33 | "@eslint/js": "^9.30.0", 34 | "@types/jest": "^30.0.0", 35 | "@types/node": "^24.0.7", 36 | "@typescript-eslint/eslint-plugin": "^8.35.0", 37 | "@typescript-eslint/parser": "^8.35.0", 38 | "eslint": "^9.30.0", 39 | "globals": "^16.2.0", 40 | "jest": "^30.0.3", 41 | "ts-jest": "^29.4.0", 42 | "ts-node": "^10.9.2", 43 | "typescript": "^5.8.3", 44 | "uglify-js": "^3.19.3" 45 | }, 46 | "directories": {}, 47 | "resolutions": { 48 | "natives": "1.1.6" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["config:recommended"], 3 | "regexManagers": [ 4 | { 5 | "fileMatch": ["^.circleci/config\\.ya?ml$"], 6 | "matchStrings": [ 7 | "image: (?[^:@\\s]+)(:(?[\\w.-]+))?", 8 | "circleci/(?[^@\\s]+)@(?[\\d.]+)" 9 | ], 10 | "datasourceTemplate": "docker", 11 | "versioningTemplate": "docker" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /tests/fruit.ts: -------------------------------------------------------------------------------- 1 | export class Fruit { 2 | public type: string; 3 | public color: string; 4 | public shippingDate: string | Date; 5 | public amount: number | string; 6 | 7 | constructor(type: string, color: string, shippingDate: string | Date, amount: number | string) { 8 | this.type = type; 9 | this.color = color; 10 | this.shippingDate = shippingDate; 11 | this.amount = amount; 12 | } 13 | } -------------------------------------------------------------------------------- /tests/index.test.ts: -------------------------------------------------------------------------------- 1 | import { String, StringBuilder, isNullOrWhiteSpace, formatString, joinString } from '..'; 2 | import { Fruit } from './fruit'; 3 | 4 | export const EOL = '\r\n'; 5 | 6 | describe('String.IsNullOrWhitespace', () => { 7 | 8 | it('should return true on null string', () => { 9 | const teststring: string | null = null; 10 | let result = String.IsNullOrWhiteSpace(teststring); 11 | expect(result).toBe(true); 12 | result = String.isNullOrWhiteSpace(teststring); 13 | expect(result).toBe(true); 14 | result = isNullOrWhiteSpace(teststring); 15 | expect(result).toBe(true); 16 | }); 17 | 18 | it('should return true on empty string', () => { 19 | const teststring = ''; 20 | let result = String.IsNullOrWhiteSpace(teststring); 21 | expect(result).toBe(true); 22 | result = String.isNullOrWhiteSpace(teststring); 23 | expect(result).toBe(true); 24 | result = isNullOrWhiteSpace(teststring); 25 | expect(result).toBe(true); 26 | }); 27 | 28 | it('should return true only whitespace', () => { 29 | const teststring = ' '; 30 | let result = String.IsNullOrWhiteSpace(teststring); 31 | expect(result).toBe(true); 32 | result = String.isNullOrWhiteSpace(teststring); 33 | expect(result).toBe(true); 34 | result = isNullOrWhiteSpace(teststring); 35 | expect(result).toBe(true); 36 | }); 37 | 38 | it('should return false contains non-whitespace characters', () => { 39 | const teststring = ' s '; 40 | let result = String.IsNullOrWhiteSpace(teststring); 41 | expect(result).toBe(false); 42 | result = String.isNullOrWhiteSpace(teststring); 43 | expect(result).toBe(false); 44 | result = isNullOrWhiteSpace(teststring); 45 | expect(result).toBe(false); 46 | }); 47 | }); 48 | 49 | describe('String.Format Number Pattern', () => { 50 | describe('Placeholders', () => { 51 | it('should return template if no format is found', () => { 52 | const template = 'Bar'; 53 | const valueToInsert = 'Foo'; 54 | let result = String.Format(template, valueToInsert); 55 | expect(result).toBe(template); 56 | result = String.format(template, valueToInsert); 57 | expect(result).toBe(template); 58 | result = formatString(template, valueToInsert); 59 | expect(result).toBe(template); 60 | }); 61 | 62 | it('should format the string correct', () => { 63 | const template = '{0}'; 64 | const valueToInsert = 'Foo'; 65 | let result = String.Format(template, valueToInsert); 66 | expect(result).toBe(valueToInsert); 67 | result = String.format(template, valueToInsert); 68 | expect(result).toBe(valueToInsert); 69 | result = formatString(template, valueToInsert); 70 | expect(result).toBe(valueToInsert); 71 | }); 72 | 73 | it('should format the string correct multiple times', () => { 74 | const template = '{0}Bar{0}'; 75 | const valueToInsert = 'Foo'; 76 | const expectedValue = 'FooBarFoo'; 77 | let result = String.Format(template, valueToInsert); 78 | expect(result).toBe(expectedValue); 79 | result = String.format(template, valueToInsert); 80 | expect(result).toBe(expectedValue); 81 | result = formatString(template, valueToInsert); 82 | expect(result).toBe(expectedValue); 83 | }); 84 | 85 | it('should format the string correct multiple values', () => { 86 | const template = '{0}Bar{1}'; 87 | const valueToInsert = 'Foo'; 88 | const secondValueToInsert = 'Baz'; 89 | const expectedValue = 'FooBarBaz'; 90 | let result = String.Format(template, valueToInsert, secondValueToInsert); 91 | expect(result).toBe(expectedValue); 92 | result = String.format(template, valueToInsert, secondValueToInsert); 93 | expect(result).toBe(expectedValue); 94 | result = formatString(template, valueToInsert, secondValueToInsert); 95 | expect(result).toBe(expectedValue); 96 | }); 97 | }); 98 | describe('formating', () => { 99 | describe('dates', () => { 100 | it('should set the correct display date using Date', () => { 101 | const template = '{0:d}'; 102 | const valueToInsert = new Date(2017, 4, 13); 103 | 104 | const expectedValue = '13.04.2017'; 105 | let result = String.Format(template, valueToInsert); 106 | console.log(result); 107 | expect(result).toBe(expectedValue); 108 | result = String.format(template, valueToInsert); 109 | console.log(result); 110 | expect(result).toBe(expectedValue); 111 | result = formatString(template, valueToInsert); 112 | console.log(result); 113 | expect(result).toBe(expectedValue); 114 | }); 115 | 116 | it('should set the correct sortable date using Date', () => { 117 | const template = '{0:s}'; 118 | const valueToInsert = new Date(2017, 4, 13); 119 | 120 | const expectedValue = '2017-04-13'; 121 | let result = String.Format(template, valueToInsert); 122 | console.log(result); 123 | expect(result).toBe(expectedValue); 124 | result = String.format(template, valueToInsert); 125 | console.log(result); 126 | expect(result).toBe(expectedValue); 127 | result = formatString(template, valueToInsert); 128 | console.log(result); 129 | expect(result).toBe(expectedValue); 130 | }); 131 | 132 | it('should set the correct display date using string', () => { 133 | const template = '{0:d}'; 134 | const valueToInsert = '2017-01-23 00:00'; 135 | 136 | const expectedValue = '23.01.2017'; 137 | let result = String.Format(template, valueToInsert); 138 | console.log(result); 139 | expect(result).toBe(expectedValue); 140 | result = String.format(template, valueToInsert); 141 | console.log(result); 142 | expect(result).toBe(expectedValue); 143 | result = formatString(template, valueToInsert); 144 | console.log(result); 145 | expect(result).toBe(expectedValue); 146 | }); 147 | 148 | it('should set the correct sortable date using string', () => { 149 | const template = '{0:s}'; 150 | const valueToInsert = '21.03.2017 22:15:01'; 151 | 152 | const expectedValue = '2017-03-21T22:15:01'; 153 | let result = String.Format(template, valueToInsert); 154 | console.log(result); 155 | expect(result).toBe(expectedValue); 156 | result = String.format(template, valueToInsert); 157 | console.log(result); 158 | expect(result).toBe(expectedValue); 159 | result = formatString(template, valueToInsert); 160 | console.log(result); 161 | expect(result).toBe(expectedValue); 162 | }); 163 | 164 | it('should set the correct sortable date without time using string', () => { 165 | const template = '{0:s}'; 166 | const valueToInsert = '21.03.2017'; 167 | 168 | const expectedValue = '2017-03-21T00:00:00'; 169 | let result = String.Format(template, valueToInsert); 170 | console.log(result); 171 | expect(result).toBe(expectedValue); 172 | result = String.format(template, valueToInsert); 173 | console.log(result); 174 | expect(result).toBe(expectedValue); 175 | result = formatString(template, valueToInsert); 176 | console.log(result); 177 | expect(result).toBe(expectedValue); 178 | }); 179 | }); 180 | 181 | describe('uppercasing', () => { 182 | it('should return the string as uppercase', () => { 183 | const expectedValue = 'AWESOME'; 184 | const template = '{0:U}'; 185 | const valueToInsert = 'awesome'; 186 | 187 | let actual = String.Format(template, valueToInsert); 188 | expect(actual).toBe(expectedValue); 189 | actual = String.format(template, valueToInsert); 190 | expect(actual).toBe(expectedValue); 191 | actual = formatString(template, valueToInsert); 192 | expect(actual).toBe(expectedValue); 193 | }); 194 | 195 | it('should return the string as lowercase', () => { 196 | const expectedValue = 'awesome'; 197 | const template = '{0:L}'; 198 | const valueToInsert = 'AWESOME'; 199 | 200 | let actual = String.Format(template, valueToInsert); 201 | expect(actual).toBe(expectedValue); 202 | actual = String.format(template, valueToInsert); 203 | expect(actual).toBe(expectedValue); 204 | actual = formatString(template, valueToInsert); 205 | expect(actual).toBe(expectedValue); 206 | }); 207 | }); 208 | 209 | describe('numbers', () => { 210 | 211 | it('should not pad without specifier using {0}', () => { 212 | const template = '{0}'; 213 | let result = String.Format(template, 5); 214 | expect(result).toBe('5'); 215 | result = String.format(template, 5); 216 | expect(result).toBe('5'); 217 | result = formatString(template, 5); 218 | expect(result).toBe('5'); 219 | }); 220 | 221 | it('should pad 5 to 05 using {0:00}', () => { 222 | const template = '{0:00}'; 223 | let result = String.Format(template, 5); 224 | expect(result).toBe('05'); 225 | result = String.format(template, 5); 226 | expect(result).toBe('05'); 227 | result = formatString(template, 5); 228 | expect(result).toBe('05'); 229 | }); 230 | 231 | it('should pad 5 to 005 using {0:000}', () => { 232 | const template = '{0:000}'; 233 | let result = String.Format(template, 5); 234 | expect(result).toBe('005'); 235 | result = String.format(template, 5); 236 | expect(result).toBe('005'); 237 | result = formatString(template, 5); 238 | expect(result).toBe('005'); 239 | }); 240 | 241 | it('should ignore padding when input is longer then template', () => { 242 | const template = '{0:000}'; 243 | let result = String.Format(template, 50000); 244 | expect(result).toBe('50000'); 245 | result = String.format(template, 50000); 246 | expect(result).toBe('50000'); 247 | result = formatString(template, 50000); 248 | expect(result).toBe('50000'); 249 | }); 250 | 251 | it('should set the correct thousands seperator', () => { 252 | const template = '{0:n}'; 253 | const valueToInsert = '10000000000'; 254 | const expectedValue = '10.000.000.000'; 255 | 256 | let result = String.Format(template, valueToInsert); 257 | expect(result).toBe(expectedValue); 258 | result = String.format(template, valueToInsert); 259 | expect(result).toBe(expectedValue); 260 | result = formatString(template, valueToInsert); 261 | expect(result).toBe(expectedValue); 262 | }); 263 | it('should set the correct thousands seperator keeping the decimals', () => { 264 | const template = '{0:n}'; 265 | const valueToInsert = '10000000000,12345'; 266 | const expectedValue = '10.000.000.000,12345'; 267 | 268 | let result = String.Format(template, valueToInsert); 269 | expect(result).toBe(expectedValue); 270 | result = String.format(template, valueToInsert); 271 | expect(result).toBe(expectedValue); 272 | result = formatString(template, valueToInsert); 273 | expect(result).toBe(expectedValue); 274 | }); 275 | }); 276 | 277 | describe('hexadecimal', () => { 278 | it('number should be converted to hex lowercase', () => { 279 | let result = String.Format('{0:x}', 500); 280 | expect(result).toBe('1f4'); 281 | result = String.format('{0:x}', 500); 282 | expect(result).toBe('1f4'); 283 | result = formatString('{0:x}', 500); 284 | expect(result).toBe('1f4'); 285 | }); 286 | 287 | it('number should be converted to hex uppercase', () => { 288 | let result = String.Format('{0:X}', 500); 289 | expect(result).toBe('1F4'); 290 | result = String.format('{0:X}', 500); 291 | expect(result).toBe('1F4'); 292 | result = formatString('{0:X}', 500); 293 | expect(result).toBe('1F4'); 294 | }); 295 | 296 | it('decimal should be converted to hex lowercase', () => { 297 | let result = String.Format('{0:x}', 321.124); 298 | expect(result).toBe('141.1fbe76c8b44'); 299 | result = String.format('{0:x}', 321.124); 300 | expect(result).toBe('141.1fbe76c8b44'); 301 | result = formatString('{0:x}', 321.124); 302 | expect(result).toBe('141.1fbe76c8b44'); 303 | }); 304 | 305 | it('decimal should be converted to hex uppercase', () => { 306 | let result = String.Format('{0:X}', 321.124); 307 | expect(result).toBe('141.1FBE76C8B44'); 308 | result = String.format('{0:X}', 321.124); 309 | expect(result).toBe('141.1FBE76C8B44'); 310 | result = formatString('{0:X}', 321.124); 311 | expect(result).toBe('141.1FBE76C8B44'); 312 | }); 313 | 314 | it('minus decimal should be converted to hex lowercase', () => { 315 | let result = String.Format('{0:x}', -321.124); 316 | expect(result).toBe('-141.1fbe76c8b44'); 317 | result = String.format('{0:x}', -321.124); 318 | expect(result).toBe('-141.1fbe76c8b44'); 319 | result = formatString('{0:x}', -321.124); 320 | expect(result).toBe('-141.1fbe76c8b44'); 321 | }); 322 | 323 | it('minus decimal should be converted to hex uppercase', () => { 324 | let result = String.Format('{0:X}', -321.124); 325 | expect(result).toBe('-141.1FBE76C8B44'); 326 | result = String.format('{0:X}', -321.124); 327 | expect(result).toBe('-141.1FBE76C8B44'); 328 | result = formatString('{0:X}', -321.124); 329 | expect(result).toBe('-141.1FBE76C8B44'); 330 | }); 331 | }); 332 | }); 333 | 334 | }); 335 | 336 | describe('String.Format Text Pattern', () => { 337 | describe('formatting', () => { 338 | it('Should parse out the word', () => { 339 | // Arrange 340 | const fruit = { type: 'apple', color: 'red' }; 341 | 342 | // Act 343 | // Assert 344 | let formatted = String.Format('the {type} is {color}', fruit); 345 | expect(formatted).toBe('the apple is red'); 346 | formatted = String.format('the {type} is {color}', fruit); 347 | expect(formatted).toBe('the apple is red'); 348 | formatted = formatString('the {type} is {color}', fruit); 349 | expect(formatted).toBe('the apple is red'); 350 | }); 351 | 352 | it('Should parse out the word with specifiers and TS Class', () => { 353 | // Arrange 354 | const fruit: Fruit = new Fruit('apple', 'RED', '31.12.2018 01:02:03', '10000'); 355 | 356 | // Act 357 | // Assert 358 | let formatted = String.Format('the {type:U} is {color:L} shipped on {shippingDate:s} with an amount of {amount:n}', fruit); 359 | expect(formatted).toBe('the APPLE is red shipped on 2018-12-31T01:02:03 with an amount of 10.000'); 360 | formatted = String.format('the {type:U} is {color:L} shipped on {shippingDate:s} with an amount of {amount:n}', fruit); 361 | expect(formatted).toBe('the APPLE is red shipped on 2018-12-31T01:02:03 with an amount of 10.000'); 362 | formatted = formatString('the {type:U} is {color:L} shipped on {shippingDate:s} with an amount of {amount:n}', fruit); 363 | expect(formatted).toBe('the APPLE is red shipped on 2018-12-31T01:02:03 with an amount of 10.000'); 364 | }); 365 | }); 366 | }); 367 | 368 | describe('String.Join', () => { 369 | it('should join the given strings passed as args', () => { 370 | const stringOne = 'red', stringTwo = 'yellow', stringThree = 'blue'; 371 | 372 | let result = String.Join('; ', stringOne, stringTwo, stringThree); 373 | expect(result).toBe('red; yellow; blue'); 374 | result = String.join('; ', stringOne, stringTwo, stringThree); 375 | expect(result).toBe('red; yellow; blue'); 376 | result = joinString('; ', stringOne, stringTwo, stringThree); 377 | expect(result).toBe('red; yellow; blue'); 378 | }); 379 | 380 | it('should join the given array', () => { 381 | const object = ['red', 'yellow', 'blue']; 382 | let result = String.Join('; ', object); 383 | expect(result).toBe('red; yellow; blue'); 384 | result = String.join('; ', object); 385 | expect(result).toBe('red; yellow; blue'); 386 | result = joinString('; ', object); 387 | expect(result).toBe('red; yellow; blue'); 388 | }); 389 | 390 | it('should join the given object', () => { 391 | const object = { Name: 'Foo', Value: 'Bar' }; 392 | 393 | let result = String.Join('.', object); 394 | console.log(result); 395 | expect(result).toBe('Foo.Bar'); 396 | result = String.join('.', object); 397 | console.log(result); 398 | expect(result).toBe('Foo.Bar'); 399 | result = joinString('.', object); 400 | console.log(result); 401 | expect(result).toBe('Foo.Bar'); 402 | }); 403 | }); 404 | 405 | describe('StringBuilder initialization', () => { 406 | it('should not add empty string if there is no ctor parameter', () => { 407 | const builder = new StringBuilder(); 408 | builder.Append('First Part... '); 409 | builder.Append('Second Part...'); 410 | 411 | expect(builder.ToString()).toBe('First Part... Second Part...'); 412 | }); 413 | 414 | it('should add a string if there is ctor parameter', () => { 415 | const builder = new StringBuilder(formatString('First {0}... ', 'Part')); 416 | builder.AppendFormat('Second {0}...', 'Part'); 417 | 418 | console.log(builder.ToString()); 419 | expect(builder.ToString()).toBe('First Part... Second Part...'); 420 | }); 421 | }); 422 | 423 | describe('StringBuilderng.Append', () => { 424 | it('should append characters', () => { 425 | const builder = new StringBuilder(); 426 | builder.Append('First Part... '); 427 | builder.Append('Second Part...'); 428 | 429 | expect(builder.ToString()).toBe('First Part... Second Part...'); 430 | }); 431 | 432 | it('should append characters', () => { 433 | const builder = new StringBuilder(); 434 | builder.AppendFormat('First {0}... ', 'Part'); 435 | builder.AppendFormat('Second {0}...', 'Part'); 436 | 437 | console.log(builder.ToString()); 438 | expect(builder.ToString()).toBe('First Part... Second Part...'); 439 | }); 440 | }); 441 | 442 | describe('StringBuilder.AppendLine', () => { 443 | it('should append characters and new line', () => { 444 | const builder = new StringBuilder(); 445 | builder.AppendLine('First Line...'); 446 | builder.AppendLine('Second Line...'); 447 | 448 | expect(builder.ToString()).toBe(`${EOL}First Line...${EOL}Second Line...`); 449 | }); 450 | 451 | it('should append characters and new line', () => { 452 | const builder = new StringBuilder(); 453 | builder.AppendLineFormat('First {0}...', 'Line'); 454 | builder.AppendLineFormat('Second {0}...', 'Line'); 455 | 456 | console.log(builder.ToString()); 457 | expect(builder.ToString()).toBe(`${EOL}First Line...${EOL}Second Line...`); 458 | }); 459 | 460 | it('should append characters and new line', () => { 461 | const builder = new StringBuilder(); 462 | builder.AppendLine('First Line...'); 463 | builder.AppendLine('Second Line...'); 464 | 465 | console.log(builder.ToString()); 466 | expect(builder.ToString()).toBe(`${EOL}First Line...${EOL}Second Line...`); 467 | }); 468 | }); -------------------------------------------------------------------------------- /tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript-string-operations-tests", 3 | "scripts": { 4 | }, 5 | "devDependencies": { 6 | "typescript-string-operations": "1.6.1" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | typescript-string-operations@1.6.1-beta.1: 6 | version "1.6.1-beta.1" 7 | resolved "https://registry.yarnpkg.com/typescript-string-operations/-/typescript-string-operations-1.6.1-beta.1.tgz#f8900643b14221a703e843cf736532a9945413ac" 8 | integrity sha512-UKkCT0Y1HM56JLcmU0sCMXdM69oD3Xch3Xk3k36vu78dB6/uarnz/ye0NjOKz1McG1ho8EneJk1pH5sQjPuv1A== 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [ 3 | "index.ts" 4 | ], 5 | "compilerOptions": { 6 | "noImplicitAny": true, 7 | "isolatedModules": true, 8 | "removeComments": false, 9 | "target": "ES2022", 10 | "module": "nodenext", 11 | "outDir": "./dist", 12 | "esModuleInterop": true, 13 | "skipLibCheck": true, 14 | "declaration": true, 15 | "declarationDir": "./", 16 | "inlineSourceMap": true, 17 | } 18 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.2.0": 6 | version "2.3.0" 7 | resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" 8 | integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.3.5" 11 | "@jridgewell/trace-mapping" "^0.3.24" 12 | 13 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.27.1": 14 | version "7.27.1" 15 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" 16 | integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== 17 | dependencies: 18 | "@babel/helper-validator-identifier" "^7.27.1" 19 | js-tokens "^4.0.0" 20 | picocolors "^1.1.1" 21 | 22 | "@babel/compat-data@^7.27.2": 23 | version "7.27.7" 24 | resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.7.tgz" 25 | integrity sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ== 26 | 27 | "@babel/core@^7.23.9", "@babel/core@^7.27.4": 28 | version "7.27.7" 29 | resolved "https://registry.npmjs.org/@babel/core/-/core-7.27.7.tgz" 30 | integrity sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w== 31 | dependencies: 32 | "@ampproject/remapping" "^2.2.0" 33 | "@babel/code-frame" "^7.27.1" 34 | "@babel/generator" "^7.27.5" 35 | "@babel/helper-compilation-targets" "^7.27.2" 36 | "@babel/helper-module-transforms" "^7.27.3" 37 | "@babel/helpers" "^7.27.6" 38 | "@babel/parser" "^7.27.7" 39 | "@babel/template" "^7.27.2" 40 | "@babel/traverse" "^7.27.7" 41 | "@babel/types" "^7.27.7" 42 | convert-source-map "^2.0.0" 43 | debug "^4.1.0" 44 | gensync "^1.0.0-beta.2" 45 | json5 "^2.2.3" 46 | semver "^6.3.1" 47 | 48 | "@babel/generator@^7.27.5": 49 | version "7.27.5" 50 | resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz" 51 | integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== 52 | dependencies: 53 | "@babel/parser" "^7.27.5" 54 | "@babel/types" "^7.27.3" 55 | "@jridgewell/gen-mapping" "^0.3.5" 56 | "@jridgewell/trace-mapping" "^0.3.25" 57 | jsesc "^3.0.2" 58 | 59 | "@babel/helper-compilation-targets@^7.27.2": 60 | version "7.27.2" 61 | resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz" 62 | integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== 63 | dependencies: 64 | "@babel/compat-data" "^7.27.2" 65 | "@babel/helper-validator-option" "^7.27.1" 66 | browserslist "^4.24.0" 67 | lru-cache "^5.1.1" 68 | semver "^6.3.1" 69 | 70 | "@babel/helper-module-imports@^7.27.1": 71 | version "7.27.1" 72 | resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz" 73 | integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== 74 | dependencies: 75 | "@babel/traverse" "^7.27.1" 76 | "@babel/types" "^7.27.1" 77 | 78 | "@babel/helper-module-transforms@^7.27.3": 79 | version "7.27.3" 80 | resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz" 81 | integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== 82 | dependencies: 83 | "@babel/helper-module-imports" "^7.27.1" 84 | "@babel/helper-validator-identifier" "^7.27.1" 85 | "@babel/traverse" "^7.27.3" 86 | 87 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": 88 | version "7.27.1" 89 | resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz" 90 | integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== 91 | 92 | "@babel/helper-string-parser@^7.27.1": 93 | version "7.27.1" 94 | resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" 95 | integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== 96 | 97 | "@babel/helper-validator-identifier@^7.27.1": 98 | version "7.27.1" 99 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" 100 | integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== 101 | 102 | "@babel/helper-validator-option@^7.27.1": 103 | version "7.27.1" 104 | resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" 105 | integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== 106 | 107 | "@babel/helpers@^7.27.6": 108 | version "7.27.6" 109 | resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz" 110 | integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== 111 | dependencies: 112 | "@babel/template" "^7.27.2" 113 | "@babel/types" "^7.27.6" 114 | 115 | "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.27.5", "@babel/parser@^7.27.7": 116 | version "7.27.7" 117 | resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.7.tgz" 118 | integrity sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q== 119 | dependencies: 120 | "@babel/types" "^7.27.7" 121 | 122 | "@babel/plugin-syntax-async-generators@^7.8.4": 123 | version "7.8.4" 124 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" 125 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 126 | dependencies: 127 | "@babel/helper-plugin-utils" "^7.8.0" 128 | 129 | "@babel/plugin-syntax-bigint@^7.8.3": 130 | version "7.8.3" 131 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" 132 | integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== 133 | dependencies: 134 | "@babel/helper-plugin-utils" "^7.8.0" 135 | 136 | "@babel/plugin-syntax-class-properties@^7.12.13": 137 | version "7.12.13" 138 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" 139 | integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== 140 | dependencies: 141 | "@babel/helper-plugin-utils" "^7.12.13" 142 | 143 | "@babel/plugin-syntax-class-static-block@^7.14.5": 144 | version "7.14.5" 145 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" 146 | integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== 147 | dependencies: 148 | "@babel/helper-plugin-utils" "^7.14.5" 149 | 150 | "@babel/plugin-syntax-import-attributes@^7.24.7": 151 | version "7.27.1" 152 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz" 153 | integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== 154 | dependencies: 155 | "@babel/helper-plugin-utils" "^7.27.1" 156 | 157 | "@babel/plugin-syntax-import-meta@^7.10.4": 158 | version "7.10.4" 159 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" 160 | integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== 161 | dependencies: 162 | "@babel/helper-plugin-utils" "^7.10.4" 163 | 164 | "@babel/plugin-syntax-json-strings@^7.8.3": 165 | version "7.8.3" 166 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" 167 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 168 | dependencies: 169 | "@babel/helper-plugin-utils" "^7.8.0" 170 | 171 | "@babel/plugin-syntax-jsx@^7.27.1": 172 | version "7.27.1" 173 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz" 174 | integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== 175 | dependencies: 176 | "@babel/helper-plugin-utils" "^7.27.1" 177 | 178 | "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": 179 | version "7.10.4" 180 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" 181 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== 182 | dependencies: 183 | "@babel/helper-plugin-utils" "^7.10.4" 184 | 185 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 186 | version "7.8.3" 187 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" 188 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 189 | dependencies: 190 | "@babel/helper-plugin-utils" "^7.8.0" 191 | 192 | "@babel/plugin-syntax-numeric-separator@^7.10.4": 193 | version "7.10.4" 194 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" 195 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== 196 | dependencies: 197 | "@babel/helper-plugin-utils" "^7.10.4" 198 | 199 | "@babel/plugin-syntax-object-rest-spread@^7.8.3": 200 | version "7.8.3" 201 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" 202 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 203 | dependencies: 204 | "@babel/helper-plugin-utils" "^7.8.0" 205 | 206 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 207 | version "7.8.3" 208 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" 209 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 210 | dependencies: 211 | "@babel/helper-plugin-utils" "^7.8.0" 212 | 213 | "@babel/plugin-syntax-optional-chaining@^7.8.3": 214 | version "7.8.3" 215 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" 216 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 217 | dependencies: 218 | "@babel/helper-plugin-utils" "^7.8.0" 219 | 220 | "@babel/plugin-syntax-private-property-in-object@^7.14.5": 221 | version "7.14.5" 222 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" 223 | integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== 224 | dependencies: 225 | "@babel/helper-plugin-utils" "^7.14.5" 226 | 227 | "@babel/plugin-syntax-top-level-await@^7.14.5": 228 | version "7.14.5" 229 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" 230 | integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== 231 | dependencies: 232 | "@babel/helper-plugin-utils" "^7.14.5" 233 | 234 | "@babel/plugin-syntax-typescript@^7.27.1": 235 | version "7.27.1" 236 | resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz" 237 | integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== 238 | dependencies: 239 | "@babel/helper-plugin-utils" "^7.27.1" 240 | 241 | "@babel/template@^7.27.2": 242 | version "7.27.2" 243 | resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" 244 | integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== 245 | dependencies: 246 | "@babel/code-frame" "^7.27.1" 247 | "@babel/parser" "^7.27.2" 248 | "@babel/types" "^7.27.1" 249 | 250 | "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.7": 251 | version "7.27.7" 252 | resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.7.tgz" 253 | integrity sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw== 254 | dependencies: 255 | "@babel/code-frame" "^7.27.1" 256 | "@babel/generator" "^7.27.5" 257 | "@babel/parser" "^7.27.7" 258 | "@babel/template" "^7.27.2" 259 | "@babel/types" "^7.27.7" 260 | debug "^4.3.1" 261 | globals "^11.1.0" 262 | 263 | "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.27.7": 264 | version "7.27.7" 265 | resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.7.tgz" 266 | integrity sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw== 267 | dependencies: 268 | "@babel/helper-string-parser" "^7.27.1" 269 | "@babel/helper-validator-identifier" "^7.27.1" 270 | 271 | "@bcoe/v8-coverage@^0.2.3": 272 | version "0.2.3" 273 | resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" 274 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 275 | 276 | "@cspotcode/source-map-support@^0.8.0": 277 | version "0.8.1" 278 | resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" 279 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 280 | dependencies: 281 | "@jridgewell/trace-mapping" "0.3.9" 282 | 283 | "@emnapi/core@^1.4.3": 284 | version "1.4.3" 285 | resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" 286 | integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== 287 | dependencies: 288 | "@emnapi/wasi-threads" "1.0.2" 289 | tslib "^2.4.0" 290 | 291 | "@emnapi/runtime@^1.4.3": 292 | version "1.4.3" 293 | resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" 294 | integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== 295 | dependencies: 296 | tslib "^2.4.0" 297 | 298 | "@emnapi/wasi-threads@1.0.2": 299 | version "1.0.2" 300 | resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" 301 | integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== 302 | dependencies: 303 | tslib "^2.4.0" 304 | 305 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": 306 | version "4.7.0" 307 | resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz" 308 | integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== 309 | dependencies: 310 | eslint-visitor-keys "^3.4.3" 311 | 312 | "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": 313 | version "4.12.1" 314 | resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" 315 | integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== 316 | 317 | "@eslint/config-array@^0.21.0": 318 | version "0.21.0" 319 | resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz" 320 | integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ== 321 | dependencies: 322 | "@eslint/object-schema" "^2.1.6" 323 | debug "^4.3.1" 324 | minimatch "^3.1.2" 325 | 326 | "@eslint/config-helpers@^0.3.0": 327 | version "0.3.0" 328 | resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz" 329 | integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw== 330 | 331 | "@eslint/core@^0.14.0": 332 | version "0.14.0" 333 | resolved "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz" 334 | integrity sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg== 335 | dependencies: 336 | "@types/json-schema" "^7.0.15" 337 | 338 | "@eslint/core@^0.15.1": 339 | version "0.15.1" 340 | resolved "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz" 341 | integrity sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA== 342 | dependencies: 343 | "@types/json-schema" "^7.0.15" 344 | 345 | "@eslint/eslintrc@^3.3.1": 346 | version "3.3.1" 347 | resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz" 348 | integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== 349 | dependencies: 350 | ajv "^6.12.4" 351 | debug "^4.3.2" 352 | espree "^10.0.1" 353 | globals "^14.0.0" 354 | ignore "^5.2.0" 355 | import-fresh "^3.2.1" 356 | js-yaml "^4.1.0" 357 | minimatch "^3.1.2" 358 | strip-json-comments "^3.1.1" 359 | 360 | "@eslint/js@9.30.0", "@eslint/js@^9.30.0": 361 | version "9.30.0" 362 | resolved "https://registry.npmjs.org/@eslint/js/-/js-9.30.0.tgz" 363 | integrity sha512-Wzw3wQwPvc9sHM+NjakWTcPx11mbZyiYHuwWa/QfZ7cIRX7WK54PSk7bdyXDaoaopUcMatv1zaQvOAAO8hCdww== 364 | 365 | "@eslint/object-schema@^2.1.6": 366 | version "2.1.6" 367 | resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz" 368 | integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== 369 | 370 | "@eslint/plugin-kit@^0.3.1": 371 | version "0.3.3" 372 | resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz" 373 | integrity sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag== 374 | dependencies: 375 | "@eslint/core" "^0.15.1" 376 | levn "^0.4.1" 377 | 378 | "@humanfs/core@^0.19.1": 379 | version "0.19.1" 380 | resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" 381 | integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== 382 | 383 | "@humanfs/node@^0.16.6": 384 | version "0.16.6" 385 | resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz" 386 | integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== 387 | dependencies: 388 | "@humanfs/core" "^0.19.1" 389 | "@humanwhocodes/retry" "^0.3.0" 390 | 391 | "@humanwhocodes/module-importer@^1.0.1": 392 | version "1.0.1" 393 | resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" 394 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 395 | 396 | "@humanwhocodes/retry@^0.3.0": 397 | version "0.3.1" 398 | resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz" 399 | integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== 400 | 401 | "@humanwhocodes/retry@^0.4.2": 402 | version "0.4.3" 403 | resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz" 404 | integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== 405 | 406 | "@isaacs/cliui@^8.0.2": 407 | version "8.0.2" 408 | resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" 409 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 410 | dependencies: 411 | string-width "^5.1.2" 412 | string-width-cjs "npm:string-width@^4.2.0" 413 | strip-ansi "^7.0.1" 414 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 415 | wrap-ansi "^8.1.0" 416 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 417 | 418 | "@istanbuljs/load-nyc-config@^1.0.0": 419 | version "1.1.0" 420 | resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" 421 | integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== 422 | dependencies: 423 | camelcase "^5.3.1" 424 | find-up "^4.1.0" 425 | get-package-type "^0.1.0" 426 | js-yaml "^3.13.1" 427 | resolve-from "^5.0.0" 428 | 429 | "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": 430 | version "0.1.3" 431 | resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" 432 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 433 | 434 | "@jest/console@30.0.2": 435 | version "30.0.2" 436 | resolved "https://registry.npmjs.org/@jest/console/-/console-30.0.2.tgz" 437 | integrity sha512-krGElPU0FipAqpVZ/BRZOy0MZh/ARdJ0Nj+PiH1ykFY1+VpBlYNLjdjVA5CFKxnKR6PFqFutO4Z7cdK9BlGiDA== 438 | dependencies: 439 | "@jest/types" "30.0.1" 440 | "@types/node" "*" 441 | chalk "^4.1.2" 442 | jest-message-util "30.0.2" 443 | jest-util "30.0.2" 444 | slash "^3.0.0" 445 | 446 | "@jest/core@30.0.3": 447 | version "30.0.3" 448 | resolved "https://registry.npmjs.org/@jest/core/-/core-30.0.3.tgz" 449 | integrity sha512-Mgs1N+NSHD3Fusl7bOq1jyxv1JDAUwjy+0DhVR93Q6xcBP9/bAQ+oZhXb5TTnP5sQzAHgb7ROCKQ2SnovtxYtg== 450 | dependencies: 451 | "@jest/console" "30.0.2" 452 | "@jest/pattern" "30.0.1" 453 | "@jest/reporters" "30.0.2" 454 | "@jest/test-result" "30.0.2" 455 | "@jest/transform" "30.0.2" 456 | "@jest/types" "30.0.1" 457 | "@types/node" "*" 458 | ansi-escapes "^4.3.2" 459 | chalk "^4.1.2" 460 | ci-info "^4.2.0" 461 | exit-x "^0.2.2" 462 | graceful-fs "^4.2.11" 463 | jest-changed-files "30.0.2" 464 | jest-config "30.0.3" 465 | jest-haste-map "30.0.2" 466 | jest-message-util "30.0.2" 467 | jest-regex-util "30.0.1" 468 | jest-resolve "30.0.2" 469 | jest-resolve-dependencies "30.0.3" 470 | jest-runner "30.0.3" 471 | jest-runtime "30.0.3" 472 | jest-snapshot "30.0.3" 473 | jest-util "30.0.2" 474 | jest-validate "30.0.2" 475 | jest-watcher "30.0.2" 476 | micromatch "^4.0.8" 477 | pretty-format "30.0.2" 478 | slash "^3.0.0" 479 | 480 | "@jest/diff-sequences@30.0.1": 481 | version "30.0.1" 482 | resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz" 483 | integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== 484 | 485 | "@jest/environment@30.0.2": 486 | version "30.0.2" 487 | resolved "https://registry.npmjs.org/@jest/environment/-/environment-30.0.2.tgz" 488 | integrity sha512-hRLhZRJNxBiOhxIKSq2UkrlhMt3/zVFQOAi5lvS8T9I03+kxsbflwHJEF+eXEYXCrRGRhHwECT7CDk6DyngsRA== 489 | dependencies: 490 | "@jest/fake-timers" "30.0.2" 491 | "@jest/types" "30.0.1" 492 | "@types/node" "*" 493 | jest-mock "30.0.2" 494 | 495 | "@jest/expect-utils@30.0.3": 496 | version "30.0.3" 497 | resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.3.tgz" 498 | integrity sha512-SMtBvf2sfX2agcT0dA9pXwcUrKvOSDqBY4e4iRfT+Hya33XzV35YVg+98YQFErVGA/VR1Gto5Y2+A6G9LSQ3Yg== 499 | dependencies: 500 | "@jest/get-type" "30.0.1" 501 | 502 | "@jest/expect@30.0.3": 503 | version "30.0.3" 504 | resolved "https://registry.npmjs.org/@jest/expect/-/expect-30.0.3.tgz" 505 | integrity sha512-73BVLqfCeWjYWPEQoYjiRZ4xuQRhQZU0WdgvbyXGRHItKQqg5e6mt2y1kVhzLSuZpmUnccZHbGynoaL7IcLU3A== 506 | dependencies: 507 | expect "30.0.3" 508 | jest-snapshot "30.0.3" 509 | 510 | "@jest/fake-timers@30.0.2": 511 | version "30.0.2" 512 | resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.2.tgz" 513 | integrity sha512-jfx0Xg7l0gmphTY9UKm5RtH12BlLYj/2Plj6wXjVW5Era4FZKfXeIvwC67WX+4q8UCFxYS20IgnMcFBcEU0DtA== 514 | dependencies: 515 | "@jest/types" "30.0.1" 516 | "@sinonjs/fake-timers" "^13.0.0" 517 | "@types/node" "*" 518 | jest-message-util "30.0.2" 519 | jest-mock "30.0.2" 520 | jest-util "30.0.2" 521 | 522 | "@jest/get-type@30.0.1": 523 | version "30.0.1" 524 | resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz" 525 | integrity sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw== 526 | 527 | "@jest/globals@30.0.3": 528 | version "30.0.3" 529 | resolved "https://registry.npmjs.org/@jest/globals/-/globals-30.0.3.tgz" 530 | integrity sha512-fIduqNyYpMeeSr5iEAiMn15KxCzvrmxl7X7VwLDRGj7t5CoHtbF+7K3EvKk32mOUIJ4kIvFRlaixClMH2h/Vaw== 531 | dependencies: 532 | "@jest/environment" "30.0.2" 533 | "@jest/expect" "30.0.3" 534 | "@jest/types" "30.0.1" 535 | jest-mock "30.0.2" 536 | 537 | "@jest/pattern@30.0.1": 538 | version "30.0.1" 539 | resolved "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz" 540 | integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== 541 | dependencies: 542 | "@types/node" "*" 543 | jest-regex-util "30.0.1" 544 | 545 | "@jest/reporters@30.0.2": 546 | version "30.0.2" 547 | resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-30.0.2.tgz" 548 | integrity sha512-l4QzS/oKf57F8WtPZK+vvF4Io6ukplc6XgNFu4Hd/QxaLEO9f+8dSFzUua62Oe0HKlCUjKHpltKErAgDiMJKsA== 549 | dependencies: 550 | "@bcoe/v8-coverage" "^0.2.3" 551 | "@jest/console" "30.0.2" 552 | "@jest/test-result" "30.0.2" 553 | "@jest/transform" "30.0.2" 554 | "@jest/types" "30.0.1" 555 | "@jridgewell/trace-mapping" "^0.3.25" 556 | "@types/node" "*" 557 | chalk "^4.1.2" 558 | collect-v8-coverage "^1.0.2" 559 | exit-x "^0.2.2" 560 | glob "^10.3.10" 561 | graceful-fs "^4.2.11" 562 | istanbul-lib-coverage "^3.0.0" 563 | istanbul-lib-instrument "^6.0.0" 564 | istanbul-lib-report "^3.0.0" 565 | istanbul-lib-source-maps "^5.0.0" 566 | istanbul-reports "^3.1.3" 567 | jest-message-util "30.0.2" 568 | jest-util "30.0.2" 569 | jest-worker "30.0.2" 570 | slash "^3.0.0" 571 | string-length "^4.0.2" 572 | v8-to-istanbul "^9.0.1" 573 | 574 | "@jest/schemas@30.0.1": 575 | version "30.0.1" 576 | resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz" 577 | integrity sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w== 578 | dependencies: 579 | "@sinclair/typebox" "^0.34.0" 580 | 581 | "@jest/snapshot-utils@30.0.1": 582 | version "30.0.1" 583 | resolved "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.0.1.tgz" 584 | integrity sha512-6Dpv7vdtoRiISEFwYF8/c7LIvqXD7xDXtLPNzC2xqAfBznKip0MQM+rkseKwUPUpv2PJ7KW/YsnwWXrIL2xF+A== 585 | dependencies: 586 | "@jest/types" "30.0.1" 587 | chalk "^4.1.2" 588 | graceful-fs "^4.2.11" 589 | natural-compare "^1.4.0" 590 | 591 | "@jest/source-map@30.0.1": 592 | version "30.0.1" 593 | resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz" 594 | integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== 595 | dependencies: 596 | "@jridgewell/trace-mapping" "^0.3.25" 597 | callsites "^3.1.0" 598 | graceful-fs "^4.2.11" 599 | 600 | "@jest/test-result@30.0.2": 601 | version "30.0.2" 602 | resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-30.0.2.tgz" 603 | integrity sha512-KKMuBKkkZYP/GfHMhI+cH2/P3+taMZS3qnqqiPC1UXZTJskkCS+YU/ILCtw5anw1+YsTulDHFpDo70mmCedW8w== 604 | dependencies: 605 | "@jest/console" "30.0.2" 606 | "@jest/types" "30.0.1" 607 | "@types/istanbul-lib-coverage" "^2.0.6" 608 | collect-v8-coverage "^1.0.2" 609 | 610 | "@jest/test-sequencer@30.0.2": 611 | version "30.0.2" 612 | resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.0.2.tgz" 613 | integrity sha512-fbyU5HPka0rkalZ3MXVvq0hwZY8dx3Y6SCqR64zRmh+xXlDeFl0IdL4l9e7vp4gxEXTYHbwLFA1D+WW5CucaSw== 614 | dependencies: 615 | "@jest/test-result" "30.0.2" 616 | graceful-fs "^4.2.11" 617 | jest-haste-map "30.0.2" 618 | slash "^3.0.0" 619 | 620 | "@jest/transform@30.0.2": 621 | version "30.0.2" 622 | resolved "https://registry.npmjs.org/@jest/transform/-/transform-30.0.2.tgz" 623 | integrity sha512-kJIuhLMTxRF7sc0gPzPtCDib/V9KwW3I2U25b+lYCYMVqHHSrcZopS8J8H+znx9yixuFv+Iozl8raLt/4MoxrA== 624 | dependencies: 625 | "@babel/core" "^7.27.4" 626 | "@jest/types" "30.0.1" 627 | "@jridgewell/trace-mapping" "^0.3.25" 628 | babel-plugin-istanbul "^7.0.0" 629 | chalk "^4.1.2" 630 | convert-source-map "^2.0.0" 631 | fast-json-stable-stringify "^2.1.0" 632 | graceful-fs "^4.2.11" 633 | jest-haste-map "30.0.2" 634 | jest-regex-util "30.0.1" 635 | jest-util "30.0.2" 636 | micromatch "^4.0.8" 637 | pirates "^4.0.7" 638 | slash "^3.0.0" 639 | write-file-atomic "^5.0.1" 640 | 641 | "@jest/types@30.0.1": 642 | version "30.0.1" 643 | resolved "https://registry.npmjs.org/@jest/types/-/types-30.0.1.tgz" 644 | integrity sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw== 645 | dependencies: 646 | "@jest/pattern" "30.0.1" 647 | "@jest/schemas" "30.0.1" 648 | "@types/istanbul-lib-coverage" "^2.0.6" 649 | "@types/istanbul-reports" "^3.0.4" 650 | "@types/node" "*" 651 | "@types/yargs" "^17.0.33" 652 | chalk "^4.1.2" 653 | 654 | "@jridgewell/gen-mapping@^0.3.5": 655 | version "0.3.8" 656 | resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz" 657 | integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== 658 | dependencies: 659 | "@jridgewell/set-array" "^1.2.1" 660 | "@jridgewell/sourcemap-codec" "^1.4.10" 661 | "@jridgewell/trace-mapping" "^0.3.24" 662 | 663 | "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": 664 | version "3.1.2" 665 | resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" 666 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 667 | 668 | "@jridgewell/set-array@^1.2.1": 669 | version "1.2.1" 670 | resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" 671 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== 672 | 673 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 674 | version "1.5.0" 675 | resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" 676 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 677 | 678 | "@jridgewell/trace-mapping@0.3.9": 679 | version "0.3.9" 680 | resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" 681 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 682 | dependencies: 683 | "@jridgewell/resolve-uri" "^3.0.3" 684 | "@jridgewell/sourcemap-codec" "^1.4.10" 685 | 686 | "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": 687 | version "0.3.25" 688 | resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" 689 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 690 | dependencies: 691 | "@jridgewell/resolve-uri" "^3.1.0" 692 | "@jridgewell/sourcemap-codec" "^1.4.14" 693 | 694 | "@napi-rs/wasm-runtime@^0.2.11": 695 | version "0.2.11" 696 | resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e" 697 | integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA== 698 | dependencies: 699 | "@emnapi/core" "^1.4.3" 700 | "@emnapi/runtime" "^1.4.3" 701 | "@tybys/wasm-util" "^0.9.0" 702 | 703 | "@nodelib/fs.scandir@2.1.5": 704 | version "2.1.5" 705 | resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" 706 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 707 | dependencies: 708 | "@nodelib/fs.stat" "2.0.5" 709 | run-parallel "^1.1.9" 710 | 711 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 712 | version "2.0.5" 713 | resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" 714 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 715 | 716 | "@nodelib/fs.walk@^1.2.3": 717 | version "1.2.8" 718 | resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" 719 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 720 | dependencies: 721 | "@nodelib/fs.scandir" "2.1.5" 722 | fastq "^1.6.0" 723 | 724 | "@pkgjs/parseargs@^0.11.0": 725 | version "0.11.0" 726 | resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" 727 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 728 | 729 | "@pkgr/core@^0.2.4": 730 | version "0.2.7" 731 | resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz" 732 | integrity sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg== 733 | 734 | "@sinclair/typebox@^0.34.0": 735 | version "0.34.37" 736 | resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.37.tgz" 737 | integrity sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw== 738 | 739 | "@sinonjs/commons@^3.0.1": 740 | version "3.0.1" 741 | resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" 742 | integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== 743 | dependencies: 744 | type-detect "4.0.8" 745 | 746 | "@sinonjs/fake-timers@^13.0.0": 747 | version "13.0.5" 748 | resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz" 749 | integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== 750 | dependencies: 751 | "@sinonjs/commons" "^3.0.1" 752 | 753 | "@tsconfig/node10@^1.0.7": 754 | version "1.0.11" 755 | resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz" 756 | integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== 757 | 758 | "@tsconfig/node12@^1.0.7": 759 | version "1.0.11" 760 | resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" 761 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 762 | 763 | "@tsconfig/node14@^1.0.0": 764 | version "1.0.3" 765 | resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" 766 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 767 | 768 | "@tsconfig/node16@^1.0.2": 769 | version "1.0.4" 770 | resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" 771 | integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== 772 | 773 | "@tybys/wasm-util@^0.9.0": 774 | version "0.9.0" 775 | resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" 776 | integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== 777 | dependencies: 778 | tslib "^2.4.0" 779 | 780 | "@types/babel__core@^7.20.5": 781 | version "7.20.5" 782 | resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" 783 | integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== 784 | dependencies: 785 | "@babel/parser" "^7.20.7" 786 | "@babel/types" "^7.20.7" 787 | "@types/babel__generator" "*" 788 | "@types/babel__template" "*" 789 | "@types/babel__traverse" "*" 790 | 791 | "@types/babel__generator@*": 792 | version "7.27.0" 793 | resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz" 794 | integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== 795 | dependencies: 796 | "@babel/types" "^7.0.0" 797 | 798 | "@types/babel__template@*": 799 | version "7.4.4" 800 | resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" 801 | integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== 802 | dependencies: 803 | "@babel/parser" "^7.1.0" 804 | "@babel/types" "^7.0.0" 805 | 806 | "@types/babel__traverse@*": 807 | version "7.20.7" 808 | resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz" 809 | integrity sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng== 810 | dependencies: 811 | "@babel/types" "^7.20.7" 812 | 813 | "@types/estree@^1.0.6": 814 | version "1.0.8" 815 | resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" 816 | integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== 817 | 818 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": 819 | version "2.0.6" 820 | resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" 821 | integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== 822 | 823 | "@types/istanbul-lib-report@*": 824 | version "3.0.3" 825 | resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" 826 | integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== 827 | dependencies: 828 | "@types/istanbul-lib-coverage" "*" 829 | 830 | "@types/istanbul-reports@^3.0.4": 831 | version "3.0.4" 832 | resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" 833 | integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== 834 | dependencies: 835 | "@types/istanbul-lib-report" "*" 836 | 837 | "@types/jest@^30.0.0": 838 | version "30.0.0" 839 | resolved "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz" 840 | integrity sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA== 841 | dependencies: 842 | expect "^30.0.0" 843 | pretty-format "^30.0.0" 844 | 845 | "@types/json-schema@^7.0.15": 846 | version "7.0.15" 847 | resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" 848 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 849 | 850 | "@types/node@*", "@types/node@^24.0.7": 851 | version "24.0.7" 852 | resolved "https://registry.npmjs.org/@types/node/-/node-24.0.7.tgz" 853 | integrity sha512-YIEUUr4yf8q8oQoXPpSlnvKNVKDQlPMWrmOcgzoduo7kvA2UF0/BwJ/eMKFTiTtkNL17I0M6Xe2tvwFU7be6iw== 854 | dependencies: 855 | undici-types "~7.8.0" 856 | 857 | "@types/stack-utils@^2.0.3": 858 | version "2.0.3" 859 | resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" 860 | integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== 861 | 862 | "@types/yargs-parser@*": 863 | version "21.0.3" 864 | resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" 865 | integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== 866 | 867 | "@types/yargs@^17.0.33": 868 | version "17.0.33" 869 | resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz" 870 | integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== 871 | dependencies: 872 | "@types/yargs-parser" "*" 873 | 874 | "@typescript-eslint/eslint-plugin@^8.35.0": 875 | version "8.35.0" 876 | resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.0.tgz" 877 | integrity sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg== 878 | dependencies: 879 | "@eslint-community/regexpp" "^4.10.0" 880 | "@typescript-eslint/scope-manager" "8.35.0" 881 | "@typescript-eslint/type-utils" "8.35.0" 882 | "@typescript-eslint/utils" "8.35.0" 883 | "@typescript-eslint/visitor-keys" "8.35.0" 884 | graphemer "^1.4.0" 885 | ignore "^7.0.0" 886 | natural-compare "^1.4.0" 887 | ts-api-utils "^2.1.0" 888 | 889 | "@typescript-eslint/parser@^8.35.0": 890 | version "8.35.0" 891 | resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.0.tgz" 892 | integrity sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA== 893 | dependencies: 894 | "@typescript-eslint/scope-manager" "8.35.0" 895 | "@typescript-eslint/types" "8.35.0" 896 | "@typescript-eslint/typescript-estree" "8.35.0" 897 | "@typescript-eslint/visitor-keys" "8.35.0" 898 | debug "^4.3.4" 899 | 900 | "@typescript-eslint/project-service@8.35.0": 901 | version "8.35.0" 902 | resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.0.tgz" 903 | integrity sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ== 904 | dependencies: 905 | "@typescript-eslint/tsconfig-utils" "^8.35.0" 906 | "@typescript-eslint/types" "^8.35.0" 907 | debug "^4.3.4" 908 | 909 | "@typescript-eslint/scope-manager@8.35.0": 910 | version "8.35.0" 911 | resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.0.tgz" 912 | integrity sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA== 913 | dependencies: 914 | "@typescript-eslint/types" "8.35.0" 915 | "@typescript-eslint/visitor-keys" "8.35.0" 916 | 917 | "@typescript-eslint/tsconfig-utils@8.35.0", "@typescript-eslint/tsconfig-utils@^8.35.0": 918 | version "8.35.0" 919 | resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.0.tgz" 920 | integrity sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA== 921 | 922 | "@typescript-eslint/type-utils@8.35.0": 923 | version "8.35.0" 924 | resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.0.tgz" 925 | integrity sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA== 926 | dependencies: 927 | "@typescript-eslint/typescript-estree" "8.35.0" 928 | "@typescript-eslint/utils" "8.35.0" 929 | debug "^4.3.4" 930 | ts-api-utils "^2.1.0" 931 | 932 | "@typescript-eslint/types@8.35.0", "@typescript-eslint/types@^8.35.0": 933 | version "8.35.0" 934 | resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz" 935 | integrity sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ== 936 | 937 | "@typescript-eslint/typescript-estree@8.35.0": 938 | version "8.35.0" 939 | resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.0.tgz" 940 | integrity sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w== 941 | dependencies: 942 | "@typescript-eslint/project-service" "8.35.0" 943 | "@typescript-eslint/tsconfig-utils" "8.35.0" 944 | "@typescript-eslint/types" "8.35.0" 945 | "@typescript-eslint/visitor-keys" "8.35.0" 946 | debug "^4.3.4" 947 | fast-glob "^3.3.2" 948 | is-glob "^4.0.3" 949 | minimatch "^9.0.4" 950 | semver "^7.6.0" 951 | ts-api-utils "^2.1.0" 952 | 953 | "@typescript-eslint/utils@8.35.0": 954 | version "8.35.0" 955 | resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.0.tgz" 956 | integrity sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg== 957 | dependencies: 958 | "@eslint-community/eslint-utils" "^4.7.0" 959 | "@typescript-eslint/scope-manager" "8.35.0" 960 | "@typescript-eslint/types" "8.35.0" 961 | "@typescript-eslint/typescript-estree" "8.35.0" 962 | 963 | "@typescript-eslint/visitor-keys@8.35.0": 964 | version "8.35.0" 965 | resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.0.tgz" 966 | integrity sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g== 967 | dependencies: 968 | "@typescript-eslint/types" "8.35.0" 969 | eslint-visitor-keys "^4.2.1" 970 | 971 | "@ungap/structured-clone@^1.3.0": 972 | version "1.3.0" 973 | resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" 974 | integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== 975 | 976 | "@unrs/resolver-binding-android-arm-eabi@1.9.2": 977 | version "1.9.2" 978 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.2.tgz#6cb01dde20bef06397ffd4924f502596cb458851" 979 | integrity sha512-tS+lqTU3N0kkthU+rYp0spAYq15DU8ld9kXkaKg9sbQqJNF+WPMuNHZQGCgdxrUOEO0j22RKMwRVhF1HTl+X8A== 980 | 981 | "@unrs/resolver-binding-android-arm64@1.9.2": 982 | version "1.9.2" 983 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.2.tgz#1672b533f01f98119095860683496def93929a2e" 984 | integrity sha512-MffGiZULa/KmkNjHeuuflLVqfhqLv1vZLm8lWIyeADvlElJ/GLSOkoUX+5jf4/EGtfwrNFcEaB8BRas03KT0/Q== 985 | 986 | "@unrs/resolver-binding-darwin-arm64@1.9.2": 987 | version "1.9.2" 988 | resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.2.tgz" 989 | integrity sha512-dzJYK5rohS1sYl1DHdJ3mwfwClJj5BClQnQSyAgEfggbUwA9RlROQSSbKBLqrGfsiC/VyrDPtbO8hh56fnkbsQ== 990 | 991 | "@unrs/resolver-binding-darwin-x64@1.9.2": 992 | version "1.9.2" 993 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.2.tgz#bfaedca218078862f3d536d44269fed94a6158e2" 994 | integrity sha512-gaIMWK+CWtXcg9gUyznkdV54LzQ90S3X3dn8zlh+QR5Xy7Y+Efqw4Rs4im61K1juy4YNb67vmJsCDAGOnIeffQ== 995 | 996 | "@unrs/resolver-binding-freebsd-x64@1.9.2": 997 | version "1.9.2" 998 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.2.tgz#bdab0e754c45831522b16df0b6fe4b0ffde22628" 999 | integrity sha512-S7QpkMbVoVJb0xwHFwujnwCAEDe/596xqY603rpi/ioTn9VDgBHnCCxh+UFrr5yxuMH+dliHfjwCZJXOPJGPnw== 1000 | 1001 | "@unrs/resolver-binding-linux-arm-gnueabihf@1.9.2": 1002 | version "1.9.2" 1003 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.2.tgz#2bac9c19599888d4ba4787b437b0273ac7a7a9f2" 1004 | integrity sha512-+XPUMCuCCI80I46nCDFbGum0ZODP5NWGiwS3Pj8fOgsG5/ctz+/zzuBlq/WmGa+EjWZdue6CF0aWWNv84sE1uw== 1005 | 1006 | "@unrs/resolver-binding-linux-arm-musleabihf@1.9.2": 1007 | version "1.9.2" 1008 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.2.tgz#49d27d5d63e5f26cf7b93a0731334b302b9b7fec" 1009 | integrity sha512-sqvUyAd1JUpwbz33Ce2tuTLJKM+ucSsYpPGl2vuFwZnEIg0CmdxiZ01MHQ3j6ExuRqEDUCy8yvkDKvjYFPb8Zg== 1010 | 1011 | "@unrs/resolver-binding-linux-arm64-gnu@1.9.2": 1012 | version "1.9.2" 1013 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.2.tgz#95ba5d1654a04b1049d944871e165d786e8da68f" 1014 | integrity sha512-UYA0MA8ajkEDCFRQdng/FVx3F6szBvk3EPnkTTQuuO9lV1kPGuTB+V9TmbDxy5ikaEgyWKxa4CI3ySjklZ9lFA== 1015 | 1016 | "@unrs/resolver-binding-linux-arm64-musl@1.9.2": 1017 | version "1.9.2" 1018 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.2.tgz#23f90a48b1d343189b1c20c89b694140e2d5a210" 1019 | integrity sha512-P/CO3ODU9YJIHFqAkHbquKtFst0COxdphc8TKGL5yCX75GOiVpGqd1d15ahpqu8xXVsqP4MGFP2C3LRZnnL5MA== 1020 | 1021 | "@unrs/resolver-binding-linux-ppc64-gnu@1.9.2": 1022 | version "1.9.2" 1023 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.2.tgz#076f2c2e95dbcd4824cc9929bc504151b402ac11" 1024 | integrity sha512-uKStFlOELBxBum2s1hODPtgJhY4NxYJE9pAeyBgNEzHgTqTiVBPjfTlPFJkfxyTjQEuxZbbJlJnMCrRgD7ubzw== 1025 | 1026 | "@unrs/resolver-binding-linux-riscv64-gnu@1.9.2": 1027 | version "1.9.2" 1028 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.2.tgz#f7de54d45df430c74bbd12794946a55805bed6dd" 1029 | integrity sha512-LkbNnZlhINfY9gK30AHs26IIVEZ9PEl9qOScYdmY2o81imJYI4IMnJiW0vJVtXaDHvBvxeAgEy5CflwJFIl3tQ== 1030 | 1031 | "@unrs/resolver-binding-linux-riscv64-musl@1.9.2": 1032 | version "1.9.2" 1033 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.2.tgz#ad1fcdcf5f112d7432fcfe38269a084bdccad266" 1034 | integrity sha512-vI+e6FzLyZHSLFNomPi+nT+qUWN4YSj8pFtQZSFTtmgFoxqB6NyjxSjAxEC1m93qn6hUXhIsh8WMp+fGgxCoRg== 1035 | 1036 | "@unrs/resolver-binding-linux-s390x-gnu@1.9.2": 1037 | version "1.9.2" 1038 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.2.tgz#d914a4f12b9048e1a4de0040f64d73274104e301" 1039 | integrity sha512-sSO4AlAYhSM2RAzBsRpahcJB1msc6uYLAtP6pesPbZtptF8OU/CbCPhSRW6cnYOGuVmEmWVW5xVboAqCnWTeHQ== 1040 | 1041 | "@unrs/resolver-binding-linux-x64-gnu@1.9.2": 1042 | version "1.9.2" 1043 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.2.tgz#d8f8cddc42ae267ef45ed4b61ff72b9e22aa3b82" 1044 | integrity sha512-jkSkwch0uPFva20Mdu8orbQjv2A3G88NExTN2oPTI1AJ+7mZfYW3cDCTyoH6OnctBKbBVeJCEqh0U02lTkqD5w== 1045 | 1046 | "@unrs/resolver-binding-linux-x64-musl@1.9.2": 1047 | version "1.9.2" 1048 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.2.tgz#7bfce67acb51b3f4a7cff8383f46600f7b055a96" 1049 | integrity sha512-Uk64NoiTpQbkpl+bXsbeyOPRpUoMdcUqa+hDC1KhMW7aN1lfW8PBlBH4mJ3n3Y47dYE8qi0XTxy1mBACruYBaw== 1050 | 1051 | "@unrs/resolver-binding-wasm32-wasi@1.9.2": 1052 | version "1.9.2" 1053 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.2.tgz#b133c9b6941aba54eea007ca2f27ff6ce917ae55" 1054 | integrity sha512-EpBGwkcjDicjR/ybC0g8wO5adPNdVuMrNalVgYcWi+gYtC1XYNuxe3rufcO7dA76OHGeVabcO6cSkPJKVcbCXQ== 1055 | dependencies: 1056 | "@napi-rs/wasm-runtime" "^0.2.11" 1057 | 1058 | "@unrs/resolver-binding-win32-arm64-msvc@1.9.2": 1059 | version "1.9.2" 1060 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.2.tgz#5f95f590f06c1e9ba15b24292c956c21a6294b30" 1061 | integrity sha512-EdFbGn7o1SxGmN6aZw9wAkehZJetFPao0VGZ9OMBwKx6TkvDuj6cNeLimF/Psi6ts9lMOe+Dt6z19fZQ9Ye2fw== 1062 | 1063 | "@unrs/resolver-binding-win32-ia32-msvc@1.9.2": 1064 | version "1.9.2" 1065 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.2.tgz#aac6595c6de6b26e5314372ab977b0f6a869c903" 1066 | integrity sha512-JY9hi1p7AG+5c/dMU8o2kWemM8I6VZxfGwn1GCtf3c5i+IKcMo2NQ8OjZ4Z3/itvY/Si3K10jOBQn7qsD/whUA== 1067 | 1068 | "@unrs/resolver-binding-win32-x64-msvc@1.9.2": 1069 | version "1.9.2" 1070 | resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.2.tgz#f755c5229f1401bbff7307d037c6e38fa169ad1d" 1071 | integrity sha512-ryoo+EB19lMxAd80ln9BVf8pdOAxLb97amrQ3SFN9OCRn/5M5wvwDgAe4i8ZjhpbiHoDeP8yavcTEnpKBo7lZg== 1072 | 1073 | acorn-jsx@^5.3.2: 1074 | version "5.3.2" 1075 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" 1076 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 1077 | 1078 | acorn-walk@^8.1.1: 1079 | version "8.3.4" 1080 | resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" 1081 | integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== 1082 | dependencies: 1083 | acorn "^8.11.0" 1084 | 1085 | acorn@^8.11.0, acorn@^8.15.0, acorn@^8.4.1: 1086 | version "8.15.0" 1087 | resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" 1088 | integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== 1089 | 1090 | ajv@^6.12.4: 1091 | version "6.12.6" 1092 | resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" 1093 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 1094 | dependencies: 1095 | fast-deep-equal "^3.1.1" 1096 | fast-json-stable-stringify "^2.0.0" 1097 | json-schema-traverse "^0.4.1" 1098 | uri-js "^4.2.2" 1099 | 1100 | ansi-escapes@^4.3.2: 1101 | version "4.3.2" 1102 | resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" 1103 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 1104 | dependencies: 1105 | type-fest "^0.21.3" 1106 | 1107 | ansi-regex@^5.0.1: 1108 | version "5.0.1" 1109 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 1110 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 1111 | 1112 | ansi-regex@^6.0.1: 1113 | version "6.1.0" 1114 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" 1115 | integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== 1116 | 1117 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 1118 | version "4.3.0" 1119 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 1120 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 1121 | dependencies: 1122 | color-convert "^2.0.1" 1123 | 1124 | ansi-styles@^5.2.0: 1125 | version "5.2.0" 1126 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" 1127 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 1128 | 1129 | ansi-styles@^6.1.0: 1130 | version "6.2.1" 1131 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" 1132 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 1133 | 1134 | anymatch@^3.1.3: 1135 | version "3.1.3" 1136 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" 1137 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 1138 | dependencies: 1139 | normalize-path "^3.0.0" 1140 | picomatch "^2.0.4" 1141 | 1142 | arg@^4.1.0: 1143 | version "4.1.3" 1144 | resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" 1145 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 1146 | 1147 | argparse@^1.0.7: 1148 | version "1.0.10" 1149 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" 1150 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 1151 | dependencies: 1152 | sprintf-js "~1.0.2" 1153 | 1154 | argparse@^2.0.1: 1155 | version "2.0.1" 1156 | resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" 1157 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 1158 | 1159 | async@^3.2.3: 1160 | version "3.2.6" 1161 | resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz" 1162 | integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== 1163 | 1164 | babel-jest@30.0.2: 1165 | version "30.0.2" 1166 | resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.2.tgz" 1167 | integrity sha512-A5kqR1/EUTidM2YC2YMEUDP2+19ppgOwK0IAd9Swc3q2KqFb5f9PtRUXVeZcngu0z5mDMyZ9zH2huJZSOMLiTQ== 1168 | dependencies: 1169 | "@jest/transform" "30.0.2" 1170 | "@types/babel__core" "^7.20.5" 1171 | babel-plugin-istanbul "^7.0.0" 1172 | babel-preset-jest "30.0.1" 1173 | chalk "^4.1.2" 1174 | graceful-fs "^4.2.11" 1175 | slash "^3.0.0" 1176 | 1177 | babel-plugin-istanbul@^7.0.0: 1178 | version "7.0.0" 1179 | resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz" 1180 | integrity sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw== 1181 | dependencies: 1182 | "@babel/helper-plugin-utils" "^7.0.0" 1183 | "@istanbuljs/load-nyc-config" "^1.0.0" 1184 | "@istanbuljs/schema" "^0.1.3" 1185 | istanbul-lib-instrument "^6.0.2" 1186 | test-exclude "^6.0.0" 1187 | 1188 | babel-plugin-jest-hoist@30.0.1: 1189 | version "30.0.1" 1190 | resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz" 1191 | integrity sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ== 1192 | dependencies: 1193 | "@babel/template" "^7.27.2" 1194 | "@babel/types" "^7.27.3" 1195 | "@types/babel__core" "^7.20.5" 1196 | 1197 | babel-preset-current-node-syntax@^1.1.0: 1198 | version "1.1.0" 1199 | resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz" 1200 | integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== 1201 | dependencies: 1202 | "@babel/plugin-syntax-async-generators" "^7.8.4" 1203 | "@babel/plugin-syntax-bigint" "^7.8.3" 1204 | "@babel/plugin-syntax-class-properties" "^7.12.13" 1205 | "@babel/plugin-syntax-class-static-block" "^7.14.5" 1206 | "@babel/plugin-syntax-import-attributes" "^7.24.7" 1207 | "@babel/plugin-syntax-import-meta" "^7.10.4" 1208 | "@babel/plugin-syntax-json-strings" "^7.8.3" 1209 | "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" 1210 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 1211 | "@babel/plugin-syntax-numeric-separator" "^7.10.4" 1212 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 1213 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 1214 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 1215 | "@babel/plugin-syntax-private-property-in-object" "^7.14.5" 1216 | "@babel/plugin-syntax-top-level-await" "^7.14.5" 1217 | 1218 | babel-preset-jest@30.0.1: 1219 | version "30.0.1" 1220 | resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz" 1221 | integrity sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw== 1222 | dependencies: 1223 | babel-plugin-jest-hoist "30.0.1" 1224 | babel-preset-current-node-syntax "^1.1.0" 1225 | 1226 | balanced-match@^1.0.0: 1227 | version "1.0.2" 1228 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 1229 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 1230 | 1231 | brace-expansion@^1.1.7: 1232 | version "1.1.12" 1233 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" 1234 | integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== 1235 | dependencies: 1236 | balanced-match "^1.0.0" 1237 | concat-map "0.0.1" 1238 | 1239 | brace-expansion@^2.0.1: 1240 | version "2.0.2" 1241 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" 1242 | integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== 1243 | dependencies: 1244 | balanced-match "^1.0.0" 1245 | 1246 | braces@^3.0.3: 1247 | version "3.0.3" 1248 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" 1249 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 1250 | dependencies: 1251 | fill-range "^7.1.1" 1252 | 1253 | browserslist@^4.24.0: 1254 | version "4.25.1" 1255 | resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz" 1256 | integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== 1257 | dependencies: 1258 | caniuse-lite "^1.0.30001726" 1259 | electron-to-chromium "^1.5.173" 1260 | node-releases "^2.0.19" 1261 | update-browserslist-db "^1.1.3" 1262 | 1263 | bs-logger@^0.2.6: 1264 | version "0.2.6" 1265 | resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" 1266 | integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== 1267 | dependencies: 1268 | fast-json-stable-stringify "2.x" 1269 | 1270 | bser@2.1.1: 1271 | version "2.1.1" 1272 | resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" 1273 | integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== 1274 | dependencies: 1275 | node-int64 "^0.4.0" 1276 | 1277 | buffer-from@^1.0.0: 1278 | version "1.1.2" 1279 | resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" 1280 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 1281 | 1282 | callsites@^3.0.0, callsites@^3.1.0: 1283 | version "3.1.0" 1284 | resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" 1285 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 1286 | 1287 | camelcase@^5.3.1: 1288 | version "5.3.1" 1289 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" 1290 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 1291 | 1292 | camelcase@^6.3.0: 1293 | version "6.3.0" 1294 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" 1295 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 1296 | 1297 | caniuse-lite@^1.0.30001726: 1298 | version "1.0.30001726" 1299 | resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz" 1300 | integrity sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw== 1301 | 1302 | chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.2: 1303 | version "4.1.2" 1304 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 1305 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 1306 | dependencies: 1307 | ansi-styles "^4.1.0" 1308 | supports-color "^7.1.0" 1309 | 1310 | char-regex@^1.0.2: 1311 | version "1.0.2" 1312 | resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" 1313 | integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== 1314 | 1315 | ci-info@^4.2.0: 1316 | version "4.2.0" 1317 | resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz" 1318 | integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== 1319 | 1320 | cjs-module-lexer@^2.1.0: 1321 | version "2.1.0" 1322 | resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz" 1323 | integrity sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA== 1324 | 1325 | cliui@^8.0.1: 1326 | version "8.0.1" 1327 | resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" 1328 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 1329 | dependencies: 1330 | string-width "^4.2.0" 1331 | strip-ansi "^6.0.1" 1332 | wrap-ansi "^7.0.0" 1333 | 1334 | co@^4.6.0: 1335 | version "4.6.0" 1336 | resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" 1337 | integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== 1338 | 1339 | collect-v8-coverage@^1.0.2: 1340 | version "1.0.2" 1341 | resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" 1342 | integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== 1343 | 1344 | color-convert@^2.0.1: 1345 | version "2.0.1" 1346 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 1347 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1348 | dependencies: 1349 | color-name "~1.1.4" 1350 | 1351 | color-name@~1.1.4: 1352 | version "1.1.4" 1353 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 1354 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1355 | 1356 | concat-map@0.0.1: 1357 | version "0.0.1" 1358 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 1359 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 1360 | 1361 | convert-source-map@^2.0.0: 1362 | version "2.0.0" 1363 | resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" 1364 | integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== 1365 | 1366 | create-require@^1.1.0: 1367 | version "1.1.1" 1368 | resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" 1369 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 1370 | 1371 | cross-spawn@^7.0.3, cross-spawn@^7.0.6: 1372 | version "7.0.6" 1373 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" 1374 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 1375 | dependencies: 1376 | path-key "^3.1.0" 1377 | shebang-command "^2.0.0" 1378 | which "^2.0.1" 1379 | 1380 | debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: 1381 | version "4.4.1" 1382 | resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz" 1383 | integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== 1384 | dependencies: 1385 | ms "^2.1.3" 1386 | 1387 | dedent@^1.6.0: 1388 | version "1.6.0" 1389 | resolved "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz" 1390 | integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== 1391 | 1392 | deep-is@^0.1.3: 1393 | version "0.1.4" 1394 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" 1395 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 1396 | 1397 | deepmerge@^4.3.1: 1398 | version "4.3.1" 1399 | resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" 1400 | integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== 1401 | 1402 | detect-newline@^3.1.0: 1403 | version "3.1.0" 1404 | resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" 1405 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1406 | 1407 | diff@^4.0.1: 1408 | version "4.0.2" 1409 | resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" 1410 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 1411 | 1412 | eastasianwidth@^0.2.0: 1413 | version "0.2.0" 1414 | resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" 1415 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 1416 | 1417 | ejs@^3.1.10: 1418 | version "3.1.10" 1419 | resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz" 1420 | integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== 1421 | dependencies: 1422 | jake "^10.8.5" 1423 | 1424 | electron-to-chromium@^1.5.173: 1425 | version "1.5.177" 1426 | resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.177.tgz" 1427 | integrity sha512-7EH2G59nLsEMj97fpDuvVcYi6lwTcM1xuWw3PssD8xzboAW7zj7iB3COEEEATUfjLHrs5uKBLQT03V/8URx06g== 1428 | 1429 | emittery@^0.13.1: 1430 | version "0.13.1" 1431 | resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" 1432 | integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== 1433 | 1434 | emoji-regex@^8.0.0: 1435 | version "8.0.0" 1436 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 1437 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1438 | 1439 | emoji-regex@^9.2.2: 1440 | version "9.2.2" 1441 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" 1442 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 1443 | 1444 | error-ex@^1.3.1: 1445 | version "1.3.2" 1446 | resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" 1447 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1448 | dependencies: 1449 | is-arrayish "^0.2.1" 1450 | 1451 | escalade@^3.1.1, escalade@^3.2.0: 1452 | version "3.2.0" 1453 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" 1454 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 1455 | 1456 | escape-string-regexp@^2.0.0: 1457 | version "2.0.0" 1458 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" 1459 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1460 | 1461 | escape-string-regexp@^4.0.0: 1462 | version "4.0.0" 1463 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 1464 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1465 | 1466 | eslint-scope@^8.4.0: 1467 | version "8.4.0" 1468 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz" 1469 | integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== 1470 | dependencies: 1471 | esrecurse "^4.3.0" 1472 | estraverse "^5.2.0" 1473 | 1474 | eslint-visitor-keys@^3.4.3: 1475 | version "3.4.3" 1476 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" 1477 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 1478 | 1479 | eslint-visitor-keys@^4.2.1: 1480 | version "4.2.1" 1481 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz" 1482 | integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== 1483 | 1484 | eslint@^9.30.0: 1485 | version "9.30.0" 1486 | resolved "https://registry.npmjs.org/eslint/-/eslint-9.30.0.tgz" 1487 | integrity sha512-iN/SiPxmQu6EVkf+m1qpBxzUhE12YqFLOSySuOyVLJLEF9nzTf+h/1AJYc1JWzCnktggeNrjvQGLngDzXirU6g== 1488 | dependencies: 1489 | "@eslint-community/eslint-utils" "^4.2.0" 1490 | "@eslint-community/regexpp" "^4.12.1" 1491 | "@eslint/config-array" "^0.21.0" 1492 | "@eslint/config-helpers" "^0.3.0" 1493 | "@eslint/core" "^0.14.0" 1494 | "@eslint/eslintrc" "^3.3.1" 1495 | "@eslint/js" "9.30.0" 1496 | "@eslint/plugin-kit" "^0.3.1" 1497 | "@humanfs/node" "^0.16.6" 1498 | "@humanwhocodes/module-importer" "^1.0.1" 1499 | "@humanwhocodes/retry" "^0.4.2" 1500 | "@types/estree" "^1.0.6" 1501 | "@types/json-schema" "^7.0.15" 1502 | ajv "^6.12.4" 1503 | chalk "^4.0.0" 1504 | cross-spawn "^7.0.6" 1505 | debug "^4.3.2" 1506 | escape-string-regexp "^4.0.0" 1507 | eslint-scope "^8.4.0" 1508 | eslint-visitor-keys "^4.2.1" 1509 | espree "^10.4.0" 1510 | esquery "^1.5.0" 1511 | esutils "^2.0.2" 1512 | fast-deep-equal "^3.1.3" 1513 | file-entry-cache "^8.0.0" 1514 | find-up "^5.0.0" 1515 | glob-parent "^6.0.2" 1516 | ignore "^5.2.0" 1517 | imurmurhash "^0.1.4" 1518 | is-glob "^4.0.0" 1519 | json-stable-stringify-without-jsonify "^1.0.1" 1520 | lodash.merge "^4.6.2" 1521 | minimatch "^3.1.2" 1522 | natural-compare "^1.4.0" 1523 | optionator "^0.9.3" 1524 | 1525 | espree@^10.0.1, espree@^10.4.0: 1526 | version "10.4.0" 1527 | resolved "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz" 1528 | integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== 1529 | dependencies: 1530 | acorn "^8.15.0" 1531 | acorn-jsx "^5.3.2" 1532 | eslint-visitor-keys "^4.2.1" 1533 | 1534 | esprima@^4.0.0: 1535 | version "4.0.1" 1536 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" 1537 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1538 | 1539 | esquery@^1.5.0: 1540 | version "1.6.0" 1541 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" 1542 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== 1543 | dependencies: 1544 | estraverse "^5.1.0" 1545 | 1546 | esrecurse@^4.3.0: 1547 | version "4.3.0" 1548 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" 1549 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1550 | dependencies: 1551 | estraverse "^5.2.0" 1552 | 1553 | estraverse@^5.1.0, estraverse@^5.2.0: 1554 | version "5.3.0" 1555 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" 1556 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1557 | 1558 | esutils@^2.0.2: 1559 | version "2.0.3" 1560 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" 1561 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1562 | 1563 | execa@^5.1.1: 1564 | version "5.1.1" 1565 | resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" 1566 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 1567 | dependencies: 1568 | cross-spawn "^7.0.3" 1569 | get-stream "^6.0.0" 1570 | human-signals "^2.1.0" 1571 | is-stream "^2.0.0" 1572 | merge-stream "^2.0.0" 1573 | npm-run-path "^4.0.1" 1574 | onetime "^5.1.2" 1575 | signal-exit "^3.0.3" 1576 | strip-final-newline "^2.0.0" 1577 | 1578 | exit-x@^0.2.2: 1579 | version "0.2.2" 1580 | resolved "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz" 1581 | integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== 1582 | 1583 | expect@30.0.3, expect@^30.0.0: 1584 | version "30.0.3" 1585 | resolved "https://registry.npmjs.org/expect/-/expect-30.0.3.tgz" 1586 | integrity sha512-HXg6NvK35/cSYZCUKAtmlgCFyqKM4frEPbzrav5hRqb0GMz0E0lS5hfzYjSaiaE5ysnp/qI2aeZkeyeIAOeXzQ== 1587 | dependencies: 1588 | "@jest/expect-utils" "30.0.3" 1589 | "@jest/get-type" "30.0.1" 1590 | jest-matcher-utils "30.0.3" 1591 | jest-message-util "30.0.2" 1592 | jest-mock "30.0.2" 1593 | jest-util "30.0.2" 1594 | 1595 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1596 | version "3.1.3" 1597 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 1598 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1599 | 1600 | fast-glob@^3.3.2: 1601 | version "3.3.3" 1602 | resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" 1603 | integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== 1604 | dependencies: 1605 | "@nodelib/fs.stat" "^2.0.2" 1606 | "@nodelib/fs.walk" "^1.2.3" 1607 | glob-parent "^5.1.2" 1608 | merge2 "^1.3.0" 1609 | micromatch "^4.0.8" 1610 | 1611 | fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: 1612 | version "2.1.0" 1613 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" 1614 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1615 | 1616 | fast-levenshtein@^2.0.6: 1617 | version "2.0.6" 1618 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" 1619 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 1620 | 1621 | fastq@^1.6.0: 1622 | version "1.19.1" 1623 | resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz" 1624 | integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== 1625 | dependencies: 1626 | reusify "^1.0.4" 1627 | 1628 | fb-watchman@^2.0.2: 1629 | version "2.0.2" 1630 | resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" 1631 | integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== 1632 | dependencies: 1633 | bser "2.1.1" 1634 | 1635 | file-entry-cache@^8.0.0: 1636 | version "8.0.0" 1637 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" 1638 | integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== 1639 | dependencies: 1640 | flat-cache "^4.0.0" 1641 | 1642 | filelist@^1.0.4: 1643 | version "1.0.4" 1644 | resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" 1645 | integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== 1646 | dependencies: 1647 | minimatch "^5.0.1" 1648 | 1649 | fill-range@^7.1.1: 1650 | version "7.1.1" 1651 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" 1652 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 1653 | dependencies: 1654 | to-regex-range "^5.0.1" 1655 | 1656 | find-up@^4.0.0, find-up@^4.1.0: 1657 | version "4.1.0" 1658 | resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" 1659 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1660 | dependencies: 1661 | locate-path "^5.0.0" 1662 | path-exists "^4.0.0" 1663 | 1664 | find-up@^5.0.0: 1665 | version "5.0.0" 1666 | resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" 1667 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 1668 | dependencies: 1669 | locate-path "^6.0.0" 1670 | path-exists "^4.0.0" 1671 | 1672 | flat-cache@^4.0.0: 1673 | version "4.0.1" 1674 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" 1675 | integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== 1676 | dependencies: 1677 | flatted "^3.2.9" 1678 | keyv "^4.5.4" 1679 | 1680 | flatted@^3.2.9: 1681 | version "3.3.3" 1682 | resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" 1683 | integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== 1684 | 1685 | foreground-child@^3.1.0: 1686 | version "3.3.1" 1687 | resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" 1688 | integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== 1689 | dependencies: 1690 | cross-spawn "^7.0.6" 1691 | signal-exit "^4.0.1" 1692 | 1693 | fs.realpath@^1.0.0: 1694 | version "1.0.0" 1695 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 1696 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1697 | 1698 | fsevents@^2.3.3: 1699 | version "2.3.3" 1700 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" 1701 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 1702 | 1703 | gensync@^1.0.0-beta.2: 1704 | version "1.0.0-beta.2" 1705 | resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" 1706 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1707 | 1708 | get-caller-file@^2.0.5: 1709 | version "2.0.5" 1710 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 1711 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1712 | 1713 | get-package-type@^0.1.0: 1714 | version "0.1.0" 1715 | resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" 1716 | integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== 1717 | 1718 | get-stream@^6.0.0: 1719 | version "6.0.1" 1720 | resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" 1721 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 1722 | 1723 | glob-parent@^5.1.2: 1724 | version "5.1.2" 1725 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 1726 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1727 | dependencies: 1728 | is-glob "^4.0.1" 1729 | 1730 | glob-parent@^6.0.2: 1731 | version "6.0.2" 1732 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" 1733 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1734 | dependencies: 1735 | is-glob "^4.0.3" 1736 | 1737 | glob@^10.3.10: 1738 | version "10.4.5" 1739 | resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" 1740 | integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== 1741 | dependencies: 1742 | foreground-child "^3.1.0" 1743 | jackspeak "^3.1.2" 1744 | minimatch "^9.0.4" 1745 | minipass "^7.1.2" 1746 | package-json-from-dist "^1.0.0" 1747 | path-scurry "^1.11.1" 1748 | 1749 | glob@^7.1.4: 1750 | version "7.2.3" 1751 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" 1752 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1753 | dependencies: 1754 | fs.realpath "^1.0.0" 1755 | inflight "^1.0.4" 1756 | inherits "2" 1757 | minimatch "^3.1.1" 1758 | once "^1.3.0" 1759 | path-is-absolute "^1.0.0" 1760 | 1761 | globals@^11.1.0: 1762 | version "11.12.0" 1763 | resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" 1764 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1765 | 1766 | globals@^14.0.0: 1767 | version "14.0.0" 1768 | resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" 1769 | integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== 1770 | 1771 | globals@^16.2.0: 1772 | version "16.2.0" 1773 | resolved "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz" 1774 | integrity sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg== 1775 | 1776 | graceful-fs@^4.2.11: 1777 | version "4.2.11" 1778 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" 1779 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 1780 | 1781 | graphemer@^1.4.0: 1782 | version "1.4.0" 1783 | resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" 1784 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 1785 | 1786 | has-flag@^4.0.0: 1787 | version "4.0.0" 1788 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 1789 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1790 | 1791 | html-escaper@^2.0.0: 1792 | version "2.0.2" 1793 | resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" 1794 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1795 | 1796 | human-signals@^2.1.0: 1797 | version "2.1.0" 1798 | resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" 1799 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1800 | 1801 | ignore@^5.2.0: 1802 | version "5.3.2" 1803 | resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" 1804 | integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== 1805 | 1806 | ignore@^7.0.0: 1807 | version "7.0.5" 1808 | resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz" 1809 | integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== 1810 | 1811 | import-fresh@^3.2.1: 1812 | version "3.3.1" 1813 | resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz" 1814 | integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== 1815 | dependencies: 1816 | parent-module "^1.0.0" 1817 | resolve-from "^4.0.0" 1818 | 1819 | import-local@^3.2.0: 1820 | version "3.2.0" 1821 | resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz" 1822 | integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== 1823 | dependencies: 1824 | pkg-dir "^4.2.0" 1825 | resolve-cwd "^3.0.0" 1826 | 1827 | imurmurhash@^0.1.4: 1828 | version "0.1.4" 1829 | resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" 1830 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1831 | 1832 | inflight@^1.0.4: 1833 | version "1.0.6" 1834 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 1835 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1836 | dependencies: 1837 | once "^1.3.0" 1838 | wrappy "1" 1839 | 1840 | inherits@2: 1841 | version "2.0.4" 1842 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 1843 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1844 | 1845 | is-arrayish@^0.2.1: 1846 | version "0.2.1" 1847 | resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" 1848 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 1849 | 1850 | is-extglob@^2.1.1: 1851 | version "2.1.1" 1852 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 1853 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1854 | 1855 | is-fullwidth-code-point@^3.0.0: 1856 | version "3.0.0" 1857 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 1858 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1859 | 1860 | is-generator-fn@^2.1.0: 1861 | version "2.1.0" 1862 | resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" 1863 | integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== 1864 | 1865 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 1866 | version "4.0.3" 1867 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 1868 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1869 | dependencies: 1870 | is-extglob "^2.1.1" 1871 | 1872 | is-number@^7.0.0: 1873 | version "7.0.0" 1874 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 1875 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1876 | 1877 | is-stream@^2.0.0: 1878 | version "2.0.1" 1879 | resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" 1880 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 1881 | 1882 | isexe@^2.0.0: 1883 | version "2.0.0" 1884 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 1885 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1886 | 1887 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1888 | version "3.2.2" 1889 | resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" 1890 | integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== 1891 | 1892 | istanbul-lib-instrument@^6.0.0, istanbul-lib-instrument@^6.0.2: 1893 | version "6.0.3" 1894 | resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz" 1895 | integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== 1896 | dependencies: 1897 | "@babel/core" "^7.23.9" 1898 | "@babel/parser" "^7.23.9" 1899 | "@istanbuljs/schema" "^0.1.3" 1900 | istanbul-lib-coverage "^3.2.0" 1901 | semver "^7.5.4" 1902 | 1903 | istanbul-lib-report@^3.0.0: 1904 | version "3.0.1" 1905 | resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" 1906 | integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== 1907 | dependencies: 1908 | istanbul-lib-coverage "^3.0.0" 1909 | make-dir "^4.0.0" 1910 | supports-color "^7.1.0" 1911 | 1912 | istanbul-lib-source-maps@^5.0.0: 1913 | version "5.0.6" 1914 | resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz" 1915 | integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== 1916 | dependencies: 1917 | "@jridgewell/trace-mapping" "^0.3.23" 1918 | debug "^4.1.1" 1919 | istanbul-lib-coverage "^3.0.0" 1920 | 1921 | istanbul-reports@^3.1.3: 1922 | version "3.1.7" 1923 | resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz" 1924 | integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== 1925 | dependencies: 1926 | html-escaper "^2.0.0" 1927 | istanbul-lib-report "^3.0.0" 1928 | 1929 | jackspeak@^3.1.2: 1930 | version "3.4.3" 1931 | resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" 1932 | integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== 1933 | dependencies: 1934 | "@isaacs/cliui" "^8.0.2" 1935 | optionalDependencies: 1936 | "@pkgjs/parseargs" "^0.11.0" 1937 | 1938 | jake@^10.8.5: 1939 | version "10.9.2" 1940 | resolved "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz" 1941 | integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== 1942 | dependencies: 1943 | async "^3.2.3" 1944 | chalk "^4.0.2" 1945 | filelist "^1.0.4" 1946 | minimatch "^3.1.2" 1947 | 1948 | jest-changed-files@30.0.2: 1949 | version "30.0.2" 1950 | resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.0.2.tgz" 1951 | integrity sha512-Ius/iRST9FKfJI+I+kpiDh8JuUlAISnRszF9ixZDIqJF17FckH5sOzKC8a0wd0+D+8em5ADRHA5V5MnfeDk2WA== 1952 | dependencies: 1953 | execa "^5.1.1" 1954 | jest-util "30.0.2" 1955 | p-limit "^3.1.0" 1956 | 1957 | jest-circus@30.0.3: 1958 | version "30.0.3" 1959 | resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-30.0.3.tgz" 1960 | integrity sha512-rD9qq2V28OASJHJWDRVdhoBdRs6k3u3EmBzDYcyuMby8XCO3Ll1uq9kyqM41ZcC4fMiPulMVh3qMw0cBvDbnyg== 1961 | dependencies: 1962 | "@jest/environment" "30.0.2" 1963 | "@jest/expect" "30.0.3" 1964 | "@jest/test-result" "30.0.2" 1965 | "@jest/types" "30.0.1" 1966 | "@types/node" "*" 1967 | chalk "^4.1.2" 1968 | co "^4.6.0" 1969 | dedent "^1.6.0" 1970 | is-generator-fn "^2.1.0" 1971 | jest-each "30.0.2" 1972 | jest-matcher-utils "30.0.3" 1973 | jest-message-util "30.0.2" 1974 | jest-runtime "30.0.3" 1975 | jest-snapshot "30.0.3" 1976 | jest-util "30.0.2" 1977 | p-limit "^3.1.0" 1978 | pretty-format "30.0.2" 1979 | pure-rand "^7.0.0" 1980 | slash "^3.0.0" 1981 | stack-utils "^2.0.6" 1982 | 1983 | jest-cli@30.0.3: 1984 | version "30.0.3" 1985 | resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-30.0.3.tgz" 1986 | integrity sha512-UWDSj0ayhumEAxpYRlqQLrssEi29kdQ+kddP94AuHhZknrE+mT0cR0J+zMHKFe9XPfX3dKQOc2TfWki3WhFTsA== 1987 | dependencies: 1988 | "@jest/core" "30.0.3" 1989 | "@jest/test-result" "30.0.2" 1990 | "@jest/types" "30.0.1" 1991 | chalk "^4.1.2" 1992 | exit-x "^0.2.2" 1993 | import-local "^3.2.0" 1994 | jest-config "30.0.3" 1995 | jest-util "30.0.2" 1996 | jest-validate "30.0.2" 1997 | yargs "^17.7.2" 1998 | 1999 | jest-config@30.0.3: 2000 | version "30.0.3" 2001 | resolved "https://registry.npmjs.org/jest-config/-/jest-config-30.0.3.tgz" 2002 | integrity sha512-j0L4oRCtJwNyZktXIqwzEiDVQXBbQ4dqXuLD/TZdn++hXIcIfZmjHgrViEy5s/+j4HvITmAXbexVZpQ/jnr0bg== 2003 | dependencies: 2004 | "@babel/core" "^7.27.4" 2005 | "@jest/get-type" "30.0.1" 2006 | "@jest/pattern" "30.0.1" 2007 | "@jest/test-sequencer" "30.0.2" 2008 | "@jest/types" "30.0.1" 2009 | babel-jest "30.0.2" 2010 | chalk "^4.1.2" 2011 | ci-info "^4.2.0" 2012 | deepmerge "^4.3.1" 2013 | glob "^10.3.10" 2014 | graceful-fs "^4.2.11" 2015 | jest-circus "30.0.3" 2016 | jest-docblock "30.0.1" 2017 | jest-environment-node "30.0.2" 2018 | jest-regex-util "30.0.1" 2019 | jest-resolve "30.0.2" 2020 | jest-runner "30.0.3" 2021 | jest-util "30.0.2" 2022 | jest-validate "30.0.2" 2023 | micromatch "^4.0.8" 2024 | parse-json "^5.2.0" 2025 | pretty-format "30.0.2" 2026 | slash "^3.0.0" 2027 | strip-json-comments "^3.1.1" 2028 | 2029 | jest-diff@30.0.3: 2030 | version "30.0.3" 2031 | resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.3.tgz" 2032 | integrity sha512-Q1TAV0cUcBTic57SVnk/mug0/ASyAqtSIOkr7RAlxx97llRYsM74+E8N5WdGJUlwCKwgxPAkVjKh653h1+HA9A== 2033 | dependencies: 2034 | "@jest/diff-sequences" "30.0.1" 2035 | "@jest/get-type" "30.0.1" 2036 | chalk "^4.1.2" 2037 | pretty-format "30.0.2" 2038 | 2039 | jest-docblock@30.0.1: 2040 | version "30.0.1" 2041 | resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.0.1.tgz" 2042 | integrity sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA== 2043 | dependencies: 2044 | detect-newline "^3.1.0" 2045 | 2046 | jest-each@30.0.2: 2047 | version "30.0.2" 2048 | resolved "https://registry.npmjs.org/jest-each/-/jest-each-30.0.2.tgz" 2049 | integrity sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ== 2050 | dependencies: 2051 | "@jest/get-type" "30.0.1" 2052 | "@jest/types" "30.0.1" 2053 | chalk "^4.1.2" 2054 | jest-util "30.0.2" 2055 | pretty-format "30.0.2" 2056 | 2057 | jest-environment-node@30.0.2: 2058 | version "30.0.2" 2059 | resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.0.2.tgz" 2060 | integrity sha512-XsGtZ0H+a70RsxAQkKuIh0D3ZlASXdZdhpOSBq9WRPq6lhe0IoQHGW0w9ZUaPiZQ/CpkIdprvlfV1QcXcvIQLQ== 2061 | dependencies: 2062 | "@jest/environment" "30.0.2" 2063 | "@jest/fake-timers" "30.0.2" 2064 | "@jest/types" "30.0.1" 2065 | "@types/node" "*" 2066 | jest-mock "30.0.2" 2067 | jest-util "30.0.2" 2068 | jest-validate "30.0.2" 2069 | 2070 | jest-haste-map@30.0.2: 2071 | version "30.0.2" 2072 | resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.0.2.tgz" 2073 | integrity sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ== 2074 | dependencies: 2075 | "@jest/types" "30.0.1" 2076 | "@types/node" "*" 2077 | anymatch "^3.1.3" 2078 | fb-watchman "^2.0.2" 2079 | graceful-fs "^4.2.11" 2080 | jest-regex-util "30.0.1" 2081 | jest-util "30.0.2" 2082 | jest-worker "30.0.2" 2083 | micromatch "^4.0.8" 2084 | walker "^1.0.8" 2085 | optionalDependencies: 2086 | fsevents "^2.3.3" 2087 | 2088 | jest-leak-detector@30.0.2: 2089 | version "30.0.2" 2090 | resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.0.2.tgz" 2091 | integrity sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ== 2092 | dependencies: 2093 | "@jest/get-type" "30.0.1" 2094 | pretty-format "30.0.2" 2095 | 2096 | jest-matcher-utils@30.0.3: 2097 | version "30.0.3" 2098 | resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.3.tgz" 2099 | integrity sha512-hMpVFGFOhYmIIRGJ0HgM9htC5qUiJ00famcc9sRFchJJiLZbbVKrAztcgE6VnXLRxA3XZ0bvNA7hQWh3oHXo/A== 2100 | dependencies: 2101 | "@jest/get-type" "30.0.1" 2102 | chalk "^4.1.2" 2103 | jest-diff "30.0.3" 2104 | pretty-format "30.0.2" 2105 | 2106 | jest-message-util@30.0.2: 2107 | version "30.0.2" 2108 | resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.2.tgz" 2109 | integrity sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw== 2110 | dependencies: 2111 | "@babel/code-frame" "^7.27.1" 2112 | "@jest/types" "30.0.1" 2113 | "@types/stack-utils" "^2.0.3" 2114 | chalk "^4.1.2" 2115 | graceful-fs "^4.2.11" 2116 | micromatch "^4.0.8" 2117 | pretty-format "30.0.2" 2118 | slash "^3.0.0" 2119 | stack-utils "^2.0.6" 2120 | 2121 | jest-mock@30.0.2: 2122 | version "30.0.2" 2123 | resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.2.tgz" 2124 | integrity sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA== 2125 | dependencies: 2126 | "@jest/types" "30.0.1" 2127 | "@types/node" "*" 2128 | jest-util "30.0.2" 2129 | 2130 | jest-pnp-resolver@^1.2.3: 2131 | version "1.2.3" 2132 | resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" 2133 | integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== 2134 | 2135 | jest-regex-util@30.0.1: 2136 | version "30.0.1" 2137 | resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz" 2138 | integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== 2139 | 2140 | jest-resolve-dependencies@30.0.3: 2141 | version "30.0.3" 2142 | resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.3.tgz" 2143 | integrity sha512-FlL6u7LiHbF0Oe27k7DHYMq2T2aNpPhxnNo75F7lEtu4A6sSw+TKkNNUGNcVckdFoL0RCWREJsC1HsKDwKRZzQ== 2144 | dependencies: 2145 | jest-regex-util "30.0.1" 2146 | jest-snapshot "30.0.3" 2147 | 2148 | jest-resolve@30.0.2: 2149 | version "30.0.2" 2150 | resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.0.2.tgz" 2151 | integrity sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw== 2152 | dependencies: 2153 | chalk "^4.1.2" 2154 | graceful-fs "^4.2.11" 2155 | jest-haste-map "30.0.2" 2156 | jest-pnp-resolver "^1.2.3" 2157 | jest-util "30.0.2" 2158 | jest-validate "30.0.2" 2159 | slash "^3.0.0" 2160 | unrs-resolver "^1.7.11" 2161 | 2162 | jest-runner@30.0.3: 2163 | version "30.0.3" 2164 | resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-30.0.3.tgz" 2165 | integrity sha512-CxYBzu9WStOBBXAKkLXGoUtNOWsiS1RRmUQb6SsdUdTcqVncOau7m8AJ4cW3Mz+YL1O9pOGPSYLyvl8HBdFmkQ== 2166 | dependencies: 2167 | "@jest/console" "30.0.2" 2168 | "@jest/environment" "30.0.2" 2169 | "@jest/test-result" "30.0.2" 2170 | "@jest/transform" "30.0.2" 2171 | "@jest/types" "30.0.1" 2172 | "@types/node" "*" 2173 | chalk "^4.1.2" 2174 | emittery "^0.13.1" 2175 | exit-x "^0.2.2" 2176 | graceful-fs "^4.2.11" 2177 | jest-docblock "30.0.1" 2178 | jest-environment-node "30.0.2" 2179 | jest-haste-map "30.0.2" 2180 | jest-leak-detector "30.0.2" 2181 | jest-message-util "30.0.2" 2182 | jest-resolve "30.0.2" 2183 | jest-runtime "30.0.3" 2184 | jest-util "30.0.2" 2185 | jest-watcher "30.0.2" 2186 | jest-worker "30.0.2" 2187 | p-limit "^3.1.0" 2188 | source-map-support "0.5.13" 2189 | 2190 | jest-runtime@30.0.3: 2191 | version "30.0.3" 2192 | resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.0.3.tgz" 2193 | integrity sha512-Xjosq0C48G9XEQOtmgrjXJwPaUPaq3sPJwHDRaiC+5wi4ZWxO6Lx6jNkizK/0JmTulVNuxP8iYwt77LGnfg3/w== 2194 | dependencies: 2195 | "@jest/environment" "30.0.2" 2196 | "@jest/fake-timers" "30.0.2" 2197 | "@jest/globals" "30.0.3" 2198 | "@jest/source-map" "30.0.1" 2199 | "@jest/test-result" "30.0.2" 2200 | "@jest/transform" "30.0.2" 2201 | "@jest/types" "30.0.1" 2202 | "@types/node" "*" 2203 | chalk "^4.1.2" 2204 | cjs-module-lexer "^2.1.0" 2205 | collect-v8-coverage "^1.0.2" 2206 | glob "^10.3.10" 2207 | graceful-fs "^4.2.11" 2208 | jest-haste-map "30.0.2" 2209 | jest-message-util "30.0.2" 2210 | jest-mock "30.0.2" 2211 | jest-regex-util "30.0.1" 2212 | jest-resolve "30.0.2" 2213 | jest-snapshot "30.0.3" 2214 | jest-util "30.0.2" 2215 | slash "^3.0.0" 2216 | strip-bom "^4.0.0" 2217 | 2218 | jest-snapshot@30.0.3: 2219 | version "30.0.3" 2220 | resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.0.3.tgz" 2221 | integrity sha512-F05JCohd3OA1N9+5aEPXA6I0qOfZDGIx0zTq5Z4yMBg2i1p5ELfBusjYAWwTkC12c7dHcbyth4QAfQbS7cRjow== 2222 | dependencies: 2223 | "@babel/core" "^7.27.4" 2224 | "@babel/generator" "^7.27.5" 2225 | "@babel/plugin-syntax-jsx" "^7.27.1" 2226 | "@babel/plugin-syntax-typescript" "^7.27.1" 2227 | "@babel/types" "^7.27.3" 2228 | "@jest/expect-utils" "30.0.3" 2229 | "@jest/get-type" "30.0.1" 2230 | "@jest/snapshot-utils" "30.0.1" 2231 | "@jest/transform" "30.0.2" 2232 | "@jest/types" "30.0.1" 2233 | babel-preset-current-node-syntax "^1.1.0" 2234 | chalk "^4.1.2" 2235 | expect "30.0.3" 2236 | graceful-fs "^4.2.11" 2237 | jest-diff "30.0.3" 2238 | jest-matcher-utils "30.0.3" 2239 | jest-message-util "30.0.2" 2240 | jest-util "30.0.2" 2241 | pretty-format "30.0.2" 2242 | semver "^7.7.2" 2243 | synckit "^0.11.8" 2244 | 2245 | jest-util@30.0.2: 2246 | version "30.0.2" 2247 | resolved "https://registry.npmjs.org/jest-util/-/jest-util-30.0.2.tgz" 2248 | integrity sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg== 2249 | dependencies: 2250 | "@jest/types" "30.0.1" 2251 | "@types/node" "*" 2252 | chalk "^4.1.2" 2253 | ci-info "^4.2.0" 2254 | graceful-fs "^4.2.11" 2255 | picomatch "^4.0.2" 2256 | 2257 | jest-validate@30.0.2: 2258 | version "30.0.2" 2259 | resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-30.0.2.tgz" 2260 | integrity sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ== 2261 | dependencies: 2262 | "@jest/get-type" "30.0.1" 2263 | "@jest/types" "30.0.1" 2264 | camelcase "^6.3.0" 2265 | chalk "^4.1.2" 2266 | leven "^3.1.0" 2267 | pretty-format "30.0.2" 2268 | 2269 | jest-watcher@30.0.2: 2270 | version "30.0.2" 2271 | resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.0.2.tgz" 2272 | integrity sha512-vYO5+E7jJuF+XmONr6CrbXdlYrgvZqtkn6pdkgjt/dU64UAdc0v1cAVaAeWtAfUUMScxNmnUjKPUMdCpNVASwg== 2273 | dependencies: 2274 | "@jest/test-result" "30.0.2" 2275 | "@jest/types" "30.0.1" 2276 | "@types/node" "*" 2277 | ansi-escapes "^4.3.2" 2278 | chalk "^4.1.2" 2279 | emittery "^0.13.1" 2280 | jest-util "30.0.2" 2281 | string-length "^4.0.2" 2282 | 2283 | jest-worker@30.0.2: 2284 | version "30.0.2" 2285 | resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-30.0.2.tgz" 2286 | integrity sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg== 2287 | dependencies: 2288 | "@types/node" "*" 2289 | "@ungap/structured-clone" "^1.3.0" 2290 | jest-util "30.0.2" 2291 | merge-stream "^2.0.0" 2292 | supports-color "^8.1.1" 2293 | 2294 | jest@^30.0.3: 2295 | version "30.0.3" 2296 | resolved "https://registry.npmjs.org/jest/-/jest-30.0.3.tgz" 2297 | integrity sha512-Uy8xfeE/WpT2ZLGDXQmaYNzw2v8NUKuYeKGtkS6sDxwsdQihdgYCXaKIYnph1h95DN5H35ubFDm0dfmsQnjn4Q== 2298 | dependencies: 2299 | "@jest/core" "30.0.3" 2300 | "@jest/types" "30.0.1" 2301 | import-local "^3.2.0" 2302 | jest-cli "30.0.3" 2303 | 2304 | js-tokens@^4.0.0: 2305 | version "4.0.0" 2306 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 2307 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 2308 | 2309 | js-yaml@^3.13.1: 2310 | version "3.14.1" 2311 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" 2312 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 2313 | dependencies: 2314 | argparse "^1.0.7" 2315 | esprima "^4.0.0" 2316 | 2317 | js-yaml@^4.1.0: 2318 | version "4.1.0" 2319 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" 2320 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 2321 | dependencies: 2322 | argparse "^2.0.1" 2323 | 2324 | jsesc@^3.0.2: 2325 | version "3.1.0" 2326 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" 2327 | integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== 2328 | 2329 | json-buffer@3.0.1: 2330 | version "3.0.1" 2331 | resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" 2332 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 2333 | 2334 | json-parse-even-better-errors@^2.3.0: 2335 | version "2.3.1" 2336 | resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" 2337 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 2338 | 2339 | json-schema-traverse@^0.4.1: 2340 | version "0.4.1" 2341 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 2342 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 2343 | 2344 | json-stable-stringify-without-jsonify@^1.0.1: 2345 | version "1.0.1" 2346 | resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" 2347 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 2348 | 2349 | json5@^2.2.3: 2350 | version "2.2.3" 2351 | resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" 2352 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 2353 | 2354 | keyv@^4.5.4: 2355 | version "4.5.4" 2356 | resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" 2357 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 2358 | dependencies: 2359 | json-buffer "3.0.1" 2360 | 2361 | leven@^3.1.0: 2362 | version "3.1.0" 2363 | resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" 2364 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 2365 | 2366 | levn@^0.4.1: 2367 | version "0.4.1" 2368 | resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" 2369 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 2370 | dependencies: 2371 | prelude-ls "^1.2.1" 2372 | type-check "~0.4.0" 2373 | 2374 | lines-and-columns@^1.1.6: 2375 | version "1.2.4" 2376 | resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" 2377 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 2378 | 2379 | locate-path@^5.0.0: 2380 | version "5.0.0" 2381 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" 2382 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 2383 | dependencies: 2384 | p-locate "^4.1.0" 2385 | 2386 | locate-path@^6.0.0: 2387 | version "6.0.0" 2388 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" 2389 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 2390 | dependencies: 2391 | p-locate "^5.0.0" 2392 | 2393 | lodash.memoize@^4.1.2: 2394 | version "4.1.2" 2395 | resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" 2396 | integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== 2397 | 2398 | lodash.merge@^4.6.2: 2399 | version "4.6.2" 2400 | resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" 2401 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 2402 | 2403 | lru-cache@^10.2.0: 2404 | version "10.4.3" 2405 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" 2406 | integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== 2407 | 2408 | lru-cache@^5.1.1: 2409 | version "5.1.1" 2410 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" 2411 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 2412 | dependencies: 2413 | yallist "^3.0.2" 2414 | 2415 | make-dir@^4.0.0: 2416 | version "4.0.0" 2417 | resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" 2418 | integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== 2419 | dependencies: 2420 | semver "^7.5.3" 2421 | 2422 | make-error@^1.1.1, make-error@^1.3.6: 2423 | version "1.3.6" 2424 | resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" 2425 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 2426 | 2427 | makeerror@1.0.12: 2428 | version "1.0.12" 2429 | resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" 2430 | integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== 2431 | dependencies: 2432 | tmpl "1.0.5" 2433 | 2434 | merge-stream@^2.0.0: 2435 | version "2.0.0" 2436 | resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" 2437 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2438 | 2439 | merge2@^1.3.0: 2440 | version "1.4.1" 2441 | resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" 2442 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 2443 | 2444 | micromatch@^4.0.8: 2445 | version "4.0.8" 2446 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" 2447 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 2448 | dependencies: 2449 | braces "^3.0.3" 2450 | picomatch "^2.3.1" 2451 | 2452 | mimic-fn@^2.1.0: 2453 | version "2.1.0" 2454 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" 2455 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 2456 | 2457 | minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: 2458 | version "3.1.2" 2459 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 2460 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 2461 | dependencies: 2462 | brace-expansion "^1.1.7" 2463 | 2464 | minimatch@^5.0.1: 2465 | version "5.1.6" 2466 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" 2467 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 2468 | dependencies: 2469 | brace-expansion "^2.0.1" 2470 | 2471 | minimatch@^9.0.4: 2472 | version "9.0.5" 2473 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" 2474 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== 2475 | dependencies: 2476 | brace-expansion "^2.0.1" 2477 | 2478 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: 2479 | version "7.1.2" 2480 | resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" 2481 | integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== 2482 | 2483 | ms@^2.1.3: 2484 | version "2.1.3" 2485 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 2486 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 2487 | 2488 | napi-postinstall@^0.2.4: 2489 | version "0.2.4" 2490 | resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz" 2491 | integrity sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg== 2492 | 2493 | natives@1.1.6: 2494 | version "1.1.6" 2495 | resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb" 2496 | integrity sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA== 2497 | 2498 | natural-compare@^1.4.0: 2499 | version "1.4.0" 2500 | resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" 2501 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 2502 | 2503 | node-int64@^0.4.0: 2504 | version "0.4.0" 2505 | resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" 2506 | integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== 2507 | 2508 | node-releases@^2.0.19: 2509 | version "2.0.19" 2510 | resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz" 2511 | integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== 2512 | 2513 | normalize-path@^3.0.0: 2514 | version "3.0.0" 2515 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 2516 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2517 | 2518 | npm-run-path@^4.0.1: 2519 | version "4.0.1" 2520 | resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" 2521 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 2522 | dependencies: 2523 | path-key "^3.0.0" 2524 | 2525 | once@^1.3.0: 2526 | version "1.4.0" 2527 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 2528 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 2529 | dependencies: 2530 | wrappy "1" 2531 | 2532 | onetime@^5.1.2: 2533 | version "5.1.2" 2534 | resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" 2535 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 2536 | dependencies: 2537 | mimic-fn "^2.1.0" 2538 | 2539 | optionator@^0.9.3: 2540 | version "0.9.4" 2541 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" 2542 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== 2543 | dependencies: 2544 | deep-is "^0.1.3" 2545 | fast-levenshtein "^2.0.6" 2546 | levn "^0.4.1" 2547 | prelude-ls "^1.2.1" 2548 | type-check "^0.4.0" 2549 | word-wrap "^1.2.5" 2550 | 2551 | p-limit@^2.2.0: 2552 | version "2.3.0" 2553 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" 2554 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 2555 | dependencies: 2556 | p-try "^2.0.0" 2557 | 2558 | p-limit@^3.0.2, p-limit@^3.1.0: 2559 | version "3.1.0" 2560 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" 2561 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2562 | dependencies: 2563 | yocto-queue "^0.1.0" 2564 | 2565 | p-locate@^4.1.0: 2566 | version "4.1.0" 2567 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" 2568 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 2569 | dependencies: 2570 | p-limit "^2.2.0" 2571 | 2572 | p-locate@^5.0.0: 2573 | version "5.0.0" 2574 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" 2575 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 2576 | dependencies: 2577 | p-limit "^3.0.2" 2578 | 2579 | p-try@^2.0.0: 2580 | version "2.2.0" 2581 | resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" 2582 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2583 | 2584 | package-json-from-dist@^1.0.0: 2585 | version "1.0.1" 2586 | resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" 2587 | integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== 2588 | 2589 | parent-module@^1.0.0: 2590 | version "1.0.1" 2591 | resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" 2592 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 2593 | dependencies: 2594 | callsites "^3.0.0" 2595 | 2596 | parse-json@^5.2.0: 2597 | version "5.2.0" 2598 | resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" 2599 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 2600 | dependencies: 2601 | "@babel/code-frame" "^7.0.0" 2602 | error-ex "^1.3.1" 2603 | json-parse-even-better-errors "^2.3.0" 2604 | lines-and-columns "^1.1.6" 2605 | 2606 | path-exists@^4.0.0: 2607 | version "4.0.0" 2608 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" 2609 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2610 | 2611 | path-is-absolute@^1.0.0: 2612 | version "1.0.1" 2613 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 2614 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 2615 | 2616 | path-key@^3.0.0, path-key@^3.1.0: 2617 | version "3.1.1" 2618 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" 2619 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2620 | 2621 | path-scurry@^1.11.1: 2622 | version "1.11.1" 2623 | resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" 2624 | integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== 2625 | dependencies: 2626 | lru-cache "^10.2.0" 2627 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 2628 | 2629 | picocolors@^1.1.1: 2630 | version "1.1.1" 2631 | resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" 2632 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 2633 | 2634 | picomatch@^2.0.4, picomatch@^2.3.1: 2635 | version "2.3.1" 2636 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 2637 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 2638 | 2639 | picomatch@^4.0.2: 2640 | version "4.0.2" 2641 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" 2642 | integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== 2643 | 2644 | pirates@^4.0.7: 2645 | version "4.0.7" 2646 | resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" 2647 | integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== 2648 | 2649 | pkg-dir@^4.2.0: 2650 | version "4.2.0" 2651 | resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" 2652 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 2653 | dependencies: 2654 | find-up "^4.0.0" 2655 | 2656 | prelude-ls@^1.2.1: 2657 | version "1.2.1" 2658 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" 2659 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 2660 | 2661 | pretty-format@30.0.2, pretty-format@^30.0.0: 2662 | version "30.0.2" 2663 | resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz" 2664 | integrity sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg== 2665 | dependencies: 2666 | "@jest/schemas" "30.0.1" 2667 | ansi-styles "^5.2.0" 2668 | react-is "^18.3.1" 2669 | 2670 | punycode@^2.1.0: 2671 | version "2.3.1" 2672 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" 2673 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 2674 | 2675 | pure-rand@^7.0.0: 2676 | version "7.0.1" 2677 | resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz" 2678 | integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== 2679 | 2680 | queue-microtask@^1.2.2: 2681 | version "1.2.3" 2682 | resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" 2683 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 2684 | 2685 | react-is@^18.3.1: 2686 | version "18.3.1" 2687 | resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" 2688 | integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== 2689 | 2690 | require-directory@^2.1.1: 2691 | version "2.1.1" 2692 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 2693 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 2694 | 2695 | resolve-cwd@^3.0.0: 2696 | version "3.0.0" 2697 | resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" 2698 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 2699 | dependencies: 2700 | resolve-from "^5.0.0" 2701 | 2702 | resolve-from@^4.0.0: 2703 | version "4.0.0" 2704 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" 2705 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2706 | 2707 | resolve-from@^5.0.0: 2708 | version "5.0.0" 2709 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" 2710 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 2711 | 2712 | reusify@^1.0.4: 2713 | version "1.1.0" 2714 | resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz" 2715 | integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== 2716 | 2717 | run-parallel@^1.1.9: 2718 | version "1.2.0" 2719 | resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" 2720 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 2721 | dependencies: 2722 | queue-microtask "^1.2.2" 2723 | 2724 | semver@^6.3.1: 2725 | version "6.3.1" 2726 | resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" 2727 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 2728 | 2729 | semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.2: 2730 | version "7.7.2" 2731 | resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" 2732 | integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== 2733 | 2734 | shebang-command@^2.0.0: 2735 | version "2.0.0" 2736 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" 2737 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2738 | dependencies: 2739 | shebang-regex "^3.0.0" 2740 | 2741 | shebang-regex@^3.0.0: 2742 | version "3.0.0" 2743 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" 2744 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2745 | 2746 | signal-exit@^3.0.3: 2747 | version "3.0.7" 2748 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" 2749 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 2750 | 2751 | signal-exit@^4.0.1: 2752 | version "4.1.0" 2753 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" 2754 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 2755 | 2756 | slash@^3.0.0: 2757 | version "3.0.0" 2758 | resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" 2759 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2760 | 2761 | source-map-support@0.5.13: 2762 | version "0.5.13" 2763 | resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" 2764 | integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== 2765 | dependencies: 2766 | buffer-from "^1.0.0" 2767 | source-map "^0.6.0" 2768 | 2769 | source-map@^0.6.0: 2770 | version "0.6.1" 2771 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" 2772 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2773 | 2774 | sprintf-js@~1.0.2: 2775 | version "1.0.3" 2776 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" 2777 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 2778 | 2779 | stack-utils@^2.0.6: 2780 | version "2.0.6" 2781 | resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" 2782 | integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== 2783 | dependencies: 2784 | escape-string-regexp "^2.0.0" 2785 | 2786 | string-length@^4.0.2: 2787 | version "4.0.2" 2788 | resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" 2789 | integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== 2790 | dependencies: 2791 | char-regex "^1.0.2" 2792 | strip-ansi "^6.0.0" 2793 | 2794 | "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 2795 | version "4.2.3" 2796 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 2797 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2798 | dependencies: 2799 | emoji-regex "^8.0.0" 2800 | is-fullwidth-code-point "^3.0.0" 2801 | strip-ansi "^6.0.1" 2802 | 2803 | string-width@^5.0.1, string-width@^5.1.2: 2804 | version "5.1.2" 2805 | resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" 2806 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 2807 | dependencies: 2808 | eastasianwidth "^0.2.0" 2809 | emoji-regex "^9.2.2" 2810 | strip-ansi "^7.0.1" 2811 | 2812 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: 2813 | version "6.0.1" 2814 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 2815 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2816 | dependencies: 2817 | ansi-regex "^5.0.1" 2818 | 2819 | strip-ansi@^7.0.1: 2820 | version "7.1.0" 2821 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" 2822 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 2823 | dependencies: 2824 | ansi-regex "^6.0.1" 2825 | 2826 | strip-bom@^4.0.0: 2827 | version "4.0.0" 2828 | resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" 2829 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 2830 | 2831 | strip-final-newline@^2.0.0: 2832 | version "2.0.0" 2833 | resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" 2834 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 2835 | 2836 | strip-json-comments@^3.1.1: 2837 | version "3.1.1" 2838 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 2839 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2840 | 2841 | supports-color@^7.1.0: 2842 | version "7.2.0" 2843 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 2844 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2845 | dependencies: 2846 | has-flag "^4.0.0" 2847 | 2848 | supports-color@^8.1.1: 2849 | version "8.1.1" 2850 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" 2851 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2852 | dependencies: 2853 | has-flag "^4.0.0" 2854 | 2855 | synckit@^0.11.8: 2856 | version "0.11.8" 2857 | resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz" 2858 | integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A== 2859 | dependencies: 2860 | "@pkgr/core" "^0.2.4" 2861 | 2862 | test-exclude@^6.0.0: 2863 | version "6.0.0" 2864 | resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" 2865 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 2866 | dependencies: 2867 | "@istanbuljs/schema" "^0.1.2" 2868 | glob "^7.1.4" 2869 | minimatch "^3.0.4" 2870 | 2871 | tmpl@1.0.5: 2872 | version "1.0.5" 2873 | resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" 2874 | integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== 2875 | 2876 | to-regex-range@^5.0.1: 2877 | version "5.0.1" 2878 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 2879 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2880 | dependencies: 2881 | is-number "^7.0.0" 2882 | 2883 | ts-api-utils@^2.1.0: 2884 | version "2.1.0" 2885 | resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz" 2886 | integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== 2887 | 2888 | ts-jest@^29.4.0: 2889 | version "29.4.0" 2890 | resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.0.tgz" 2891 | integrity sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q== 2892 | dependencies: 2893 | bs-logger "^0.2.6" 2894 | ejs "^3.1.10" 2895 | fast-json-stable-stringify "^2.1.0" 2896 | json5 "^2.2.3" 2897 | lodash.memoize "^4.1.2" 2898 | make-error "^1.3.6" 2899 | semver "^7.7.2" 2900 | type-fest "^4.41.0" 2901 | yargs-parser "^21.1.1" 2902 | 2903 | ts-node@^10.9.2: 2904 | version "10.9.2" 2905 | resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" 2906 | integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== 2907 | dependencies: 2908 | "@cspotcode/source-map-support" "^0.8.0" 2909 | "@tsconfig/node10" "^1.0.7" 2910 | "@tsconfig/node12" "^1.0.7" 2911 | "@tsconfig/node14" "^1.0.0" 2912 | "@tsconfig/node16" "^1.0.2" 2913 | acorn "^8.4.1" 2914 | acorn-walk "^8.1.1" 2915 | arg "^4.1.0" 2916 | create-require "^1.1.0" 2917 | diff "^4.0.1" 2918 | make-error "^1.1.1" 2919 | v8-compile-cache-lib "^3.0.1" 2920 | yn "3.1.1" 2921 | 2922 | tslib@^2.4.0: 2923 | version "2.8.1" 2924 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" 2925 | integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== 2926 | 2927 | type-check@^0.4.0, type-check@~0.4.0: 2928 | version "0.4.0" 2929 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" 2930 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2931 | dependencies: 2932 | prelude-ls "^1.2.1" 2933 | 2934 | type-detect@4.0.8: 2935 | version "4.0.8" 2936 | resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" 2937 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2938 | 2939 | type-fest@^0.21.3: 2940 | version "0.21.3" 2941 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" 2942 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 2943 | 2944 | type-fest@^4.41.0: 2945 | version "4.41.0" 2946 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz" 2947 | integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== 2948 | 2949 | typescript@^5.8.3: 2950 | version "5.8.3" 2951 | resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz" 2952 | integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== 2953 | 2954 | uglify-js@^3.19.3: 2955 | version "3.19.3" 2956 | resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz" 2957 | integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== 2958 | 2959 | undici-types@~7.8.0: 2960 | version "7.8.0" 2961 | resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz" 2962 | integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== 2963 | 2964 | unrs-resolver@^1.7.11: 2965 | version "1.9.2" 2966 | resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.2.tgz" 2967 | integrity sha512-VUyWiTNQD7itdiMuJy+EuLEErLj3uwX/EpHQF8EOf33Dq3Ju6VW1GXm+swk6+1h7a49uv9fKZ+dft9jU7esdLA== 2968 | dependencies: 2969 | napi-postinstall "^0.2.4" 2970 | optionalDependencies: 2971 | "@unrs/resolver-binding-android-arm-eabi" "1.9.2" 2972 | "@unrs/resolver-binding-android-arm64" "1.9.2" 2973 | "@unrs/resolver-binding-darwin-arm64" "1.9.2" 2974 | "@unrs/resolver-binding-darwin-x64" "1.9.2" 2975 | "@unrs/resolver-binding-freebsd-x64" "1.9.2" 2976 | "@unrs/resolver-binding-linux-arm-gnueabihf" "1.9.2" 2977 | "@unrs/resolver-binding-linux-arm-musleabihf" "1.9.2" 2978 | "@unrs/resolver-binding-linux-arm64-gnu" "1.9.2" 2979 | "@unrs/resolver-binding-linux-arm64-musl" "1.9.2" 2980 | "@unrs/resolver-binding-linux-ppc64-gnu" "1.9.2" 2981 | "@unrs/resolver-binding-linux-riscv64-gnu" "1.9.2" 2982 | "@unrs/resolver-binding-linux-riscv64-musl" "1.9.2" 2983 | "@unrs/resolver-binding-linux-s390x-gnu" "1.9.2" 2984 | "@unrs/resolver-binding-linux-x64-gnu" "1.9.2" 2985 | "@unrs/resolver-binding-linux-x64-musl" "1.9.2" 2986 | "@unrs/resolver-binding-wasm32-wasi" "1.9.2" 2987 | "@unrs/resolver-binding-win32-arm64-msvc" "1.9.2" 2988 | "@unrs/resolver-binding-win32-ia32-msvc" "1.9.2" 2989 | "@unrs/resolver-binding-win32-x64-msvc" "1.9.2" 2990 | 2991 | update-browserslist-db@^1.1.3: 2992 | version "1.1.3" 2993 | resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz" 2994 | integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== 2995 | dependencies: 2996 | escalade "^3.2.0" 2997 | picocolors "^1.1.1" 2998 | 2999 | uri-js@^4.2.2: 3000 | version "4.4.1" 3001 | resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" 3002 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 3003 | dependencies: 3004 | punycode "^2.1.0" 3005 | 3006 | v8-compile-cache-lib@^3.0.1: 3007 | version "3.0.1" 3008 | resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" 3009 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 3010 | 3011 | v8-to-istanbul@^9.0.1: 3012 | version "9.3.0" 3013 | resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz" 3014 | integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== 3015 | dependencies: 3016 | "@jridgewell/trace-mapping" "^0.3.12" 3017 | "@types/istanbul-lib-coverage" "^2.0.1" 3018 | convert-source-map "^2.0.0" 3019 | 3020 | walker@^1.0.8: 3021 | version "1.0.8" 3022 | resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" 3023 | integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== 3024 | dependencies: 3025 | makeerror "1.0.12" 3026 | 3027 | which@^2.0.1: 3028 | version "2.0.2" 3029 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 3030 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 3031 | dependencies: 3032 | isexe "^2.0.0" 3033 | 3034 | word-wrap@^1.2.5: 3035 | version "1.2.5" 3036 | resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" 3037 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== 3038 | 3039 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: 3040 | version "7.0.0" 3041 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 3042 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 3043 | dependencies: 3044 | ansi-styles "^4.0.0" 3045 | string-width "^4.1.0" 3046 | strip-ansi "^6.0.0" 3047 | 3048 | wrap-ansi@^8.1.0: 3049 | version "8.1.0" 3050 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" 3051 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 3052 | dependencies: 3053 | ansi-styles "^6.1.0" 3054 | string-width "^5.0.1" 3055 | strip-ansi "^7.0.1" 3056 | 3057 | wrappy@1: 3058 | version "1.0.2" 3059 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 3060 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 3061 | 3062 | write-file-atomic@^5.0.1: 3063 | version "5.0.1" 3064 | resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz" 3065 | integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== 3066 | dependencies: 3067 | imurmurhash "^0.1.4" 3068 | signal-exit "^4.0.1" 3069 | 3070 | y18n@^5.0.5: 3071 | version "5.0.8" 3072 | resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" 3073 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 3074 | 3075 | yallist@^3.0.2: 3076 | version "3.1.1" 3077 | resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" 3078 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 3079 | 3080 | yargs-parser@^21.1.1: 3081 | version "21.1.1" 3082 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" 3083 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 3084 | 3085 | yargs@^17.7.2: 3086 | version "17.7.2" 3087 | resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" 3088 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== 3089 | dependencies: 3090 | cliui "^8.0.1" 3091 | escalade "^3.1.1" 3092 | get-caller-file "^2.0.5" 3093 | require-directory "^2.1.1" 3094 | string-width "^4.2.3" 3095 | y18n "^5.0.5" 3096 | yargs-parser "^21.1.1" 3097 | 3098 | yn@3.1.1: 3099 | version "3.1.1" 3100 | resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" 3101 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 3102 | 3103 | yocto-queue@^0.1.0: 3104 | version "0.1.0" 3105 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" 3106 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 3107 | --------------------------------------------------------------------------------