├── compare-automation.png ├── .gitignore ├── jest.config.js ├── package.json ├── tests ├── translations │ ├── react-i18next │ │ ├── Basic.tsx │ │ └── Basic_expected.tsx │ └── react-intl │ │ ├── Basic.tsx │ │ └── Basic_expected.tsx ├── transformer-react-intl.test.ts └── transformer-react-i18next.test.ts ├── LICENSE ├── README.md ├── src └── transformers │ ├── react-intl.ts │ └── react-i18next.ts ├── tsconfig.json └── pnpm-lock.yaml /compare-automation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingualdev/react-i18n-transformations/HEAD/compare-automation.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | 7 | yarn.lock 8 | 9 | .DS_Store -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 2 | module.exports = { 3 | preset: "ts-jest", 4 | testEnvironment: "node", 5 | }; 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@lingual/react-i18n-transformations", 3 | "version": "0.0.1", 4 | "description": "Example repository showing how to transform React to introduce i18n", 5 | "license": "MIT", 6 | "scripts": { 7 | "test": "jest" 8 | }, 9 | "dependencies": { 10 | "typescript": "^5.7.2" 11 | }, 12 | "devDependencies": { 13 | "@types/jest": "^29.5.14", 14 | "@types/node": "^22.10.2", 15 | "jest": "^29.7.0", 16 | "ts-jest": "^29.2.5", 17 | "ts-morph": "^24.0.0" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "https://github.com/lingualdev/i18n-check.git" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /tests/translations/react-i18next/Basic.tsx: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | import React from "react"; 3 | 4 | export const Basic = () => { 5 | return ( 6 |
7 |

This is some title

8 |

This is some paragraph

9 |
This is some div
10 |
11 | ); 12 | }; 13 | 14 | function DoNothing() { 15 | return
{""}
; 16 | } 17 | 18 | function HasTranslations() { 19 | return
Some translation in here
; 20 | } 21 | 22 | function HasTranslationsWithTFunction() { 23 | const { t } = useTranslation(); 24 | return ( 25 |
26 |

{t("some.key", "this is some other translation")}

27 | Some untranslated text inside a span 28 |
29 | ); 30 | } 31 | -------------------------------------------------------------------------------- /tests/translations/react-intl/Basic.tsx: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | import React from "react"; 3 | 4 | export const Basic = () => { 5 | return ( 6 |
7 |

This is some title

8 |

This is some paragraph

9 |
This is some div
10 |
11 | ); 12 | }; 13 | 14 | function DoNothing() { 15 | return
{""}
; 16 | } 17 | 18 | function HasTranslations() { 19 | return
Some translation in here
; 20 | } 21 | 22 | function HasTranslationsWithIntl() { 23 | const intl = useIntl(); 24 | return ( 25 |
26 |

27 | {intl.formatMessage({ 28 | id: "some.existing.key", 29 | defaultMessage: "this is some other translation", 30 | })} 31 |

32 | Some untranslated text inside a span 33 |
34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /tests/transformer-react-intl.test.ts: -------------------------------------------------------------------------------- 1 | import { transform } from "../src/transformers/react-intl"; 2 | import fs from "node:fs"; 3 | import path from "node:path"; 4 | 5 | const originalFile = path.join( 6 | __dirname, 7 | "./translations/react-intl/Basic.tsx" 8 | ); 9 | const compareFile = path.join( 10 | __dirname, 11 | "./translations/react-intl/BasicTest.tsx" 12 | ); 13 | const expectedFile = path.join( 14 | __dirname, 15 | "./translations/react-intl/Basic_expected.tsx" 16 | ); 17 | 18 | beforeEach(() => { 19 | fs.copyFile(originalFile, compareFile, (error) => { 20 | if (error) { 21 | throw error; 22 | } 23 | }); 24 | }); 25 | afterEach(() => { 26 | fs.rmSync(compareFile); 27 | }); 28 | 29 | describe("transformer", () => { 30 | it("should replace a string literal with intl.formatMessage", () => { 31 | transform({ 32 | filesPaths: [compareFile], 33 | }); 34 | 35 | const result = fs.readFileSync(compareFile, "utf-8"); 36 | const expected = fs.readFileSync(expectedFile, "utf8"); 37 | 38 | expect(result).toEqual(expected); 39 | }); 40 | }); 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 lingual 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /tests/translations/react-i18next/Basic_expected.tsx: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | import React from "react"; 3 | import { useTranslation } from "react-i18next"; 4 | 5 | export const Basic = () => { 6 | const { t } = useTranslation(); 7 | 8 | return ( 9 |
10 |

{t("basictest.this_is_some_title", "This is some title")}

11 |

{t("basictest.this_is_some_paragraph", "This is some paragraph")}

12 |
{t("basictest.this_is_some_div", "This is some div")}
13 |
14 | ); 15 | }; 16 | 17 | function DoNothing() { 18 | return
{""}
; 19 | } 20 | 21 | function HasTranslations() { 22 | const { t } = useTranslation(); 23 | 24 | return
{t("basictest.some_translation_in_here", "Some translation in here")}
; 25 | } 26 | 27 | function HasTranslationsWithTFunction() { 28 | const { t } = useTranslation(); 29 | return ( 30 |
31 |

{t("some.key", "this is some other translation")}

32 | {t("basictest.some_untranslated_text_inside_a_span", "Some untranslated text inside a span")} 33 |
34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /tests/transformer-react-i18next.test.ts: -------------------------------------------------------------------------------- 1 | import { transform } from "../src/transformers/react-i18next"; 2 | import fs from "node:fs"; 3 | import path from "node:path"; 4 | 5 | const originalFile = path.join( 6 | __dirname, 7 | "./translations/react-i18next/Basic.tsx" 8 | ); 9 | const compareFile = path.join( 10 | __dirname, 11 | "./translations/react-i18next/BasicTest.tsx" 12 | ); 13 | const expectedFile = path.join( 14 | __dirname, 15 | "./translations/react-i18next/Basic_expected.tsx" 16 | ); 17 | 18 | beforeEach(() => { 19 | fs.copyFile(originalFile, compareFile, (error) => { 20 | if (error) { 21 | throw error; 22 | } 23 | }); 24 | }); 25 | afterEach(() => { 26 | fs.rmSync(compareFile); 27 | }); 28 | 29 | describe("transformer", () => { 30 | it("should replace a string literal with a t function", () => { 31 | // const tsConfigFilePath = path.join(cwd(), "tsconfig.json"); 32 | 33 | transform({ 34 | filesPaths: [compareFile], 35 | }); 36 | 37 | const result = fs.readFileSync(compareFile, "utf-8"); 38 | const expected = fs.readFileSync(expectedFile, "utf-8"); 39 | 40 | expect(result).toEqual(expected); 41 | }); 42 | }); 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Scaffolding React i18n examples 2 | 3 | This repository contains examples on how to transform your React code to replace hard coded strings with translation functions. The setup can be seen as a starting point for building your own transformers to scaffold your `react-i18next` or `react-intl` internationalization. These examples are used in the blog post [Scaffolding your internatlization in React with automation](https://lingual.dev/blog/automating-your-react-internationalization/). 4 | 5 | ![The diff between pre and post automation](./compare-automation.png) 6 | 7 | The examples use [ts-morph](https://ts-morph.com/) but this can be replaced by either working directly with the [Typscript compiler API](https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API) or using another AST parser. 8 | 9 | There are more transformations than can be useful like automatically replacing any alt tags text with a translation function. The `transform` function can be extended to handle more automatic transformations. 10 | 11 | ## How to test 12 | 13 | The `transformers` can be found in the [`src/transformers`](./src/transformers/) folder, and the tests in the [`tests`](./tests/) folder. 14 | 15 | Install all required dependencies: 16 | 17 | ```bash 18 | pnpm install 19 | ``` 20 | 21 | Then run all the tests: 22 | 23 | ```bash 24 | pnpm test 25 | ``` 26 | -------------------------------------------------------------------------------- /tests/translations/react-intl/Basic_expected.tsx: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | import React from "react"; 3 | import { useIntl } from "react-intl"; 4 | 5 | export const Basic = () => { 6 | const intl = useIntl(); 7 | 8 | return ( 9 |
10 |

{intl.formatMessage({ id: "basictest.this_is_some_title", defaultMessage: "This is some title" })}

11 |

{intl.formatMessage({ id: "basictest.this_is_some_paragraph", defaultMessage: "This is some paragraph" })}

12 |
{intl.formatMessage({ id: "basictest.this_is_some_div", defaultMessage: "This is some div" })}
13 |
14 | ); 15 | }; 16 | 17 | function DoNothing() { 18 | return
{""}
; 19 | } 20 | 21 | function HasTranslations() { 22 | const intl = useIntl(); 23 | 24 | return
{intl.formatMessage({ id: "basictest.some_translation_in_here", defaultMessage: "Some translation in here" })}
; 25 | } 26 | 27 | function HasTranslationsWithIntl() { 28 | const intl = useIntl(); 29 | return ( 30 |
31 |

32 | {intl.formatMessage({ 33 | id: "some.existing.key", 34 | defaultMessage: "this is some other translation", 35 | })} 36 |

37 | {intl.formatMessage({ id: "basictest.some_untranslated_text_inside_a_span", defaultMessage: "Some untranslated text inside a span" })} 38 |
39 | ); 40 | } 41 | -------------------------------------------------------------------------------- /src/transformers/react-intl.ts: -------------------------------------------------------------------------------- 1 | import { printNode, Project, ProjectOptions, SyntaxKind, ts } from "ts-morph"; 2 | 3 | const factory = ts.factory; 4 | 5 | export const transform = ({ 6 | tsConfigFilePath, 7 | filesPaths, 8 | }: { 9 | tsConfigFilePath?: ProjectOptions["tsConfigFilePath"]; 10 | filesPaths: string | string[]; 11 | }) => { 12 | const project = new Project({ 13 | tsConfigFilePath, 14 | }); 15 | 16 | project.addSourceFilesAtPaths(filesPaths); 17 | 18 | for (const sourceFile of project.getSourceFiles()) { 19 | for (const statement of sourceFile.getStatements()) { 20 | const hasTranslatableContent = statement 21 | .getDescendantsOfKind(SyntaxKind.JsxText) 22 | .some((node) => !node.containsOnlyTriviaWhiteSpaces()); 23 | 24 | if (!hasTranslatableContent) { 25 | continue; 26 | } 27 | 28 | statement.transform((traversal) => { 29 | const node = traversal.visitChildren(); 30 | if (ts.isJsxText(node) && !node.containsOnlyTriviaWhiteSpaces) { 31 | const text = node.getText(); 32 | const key = `${sourceFile 33 | .getBaseNameWithoutExtension() 34 | .toLowerCase()}.${text 35 | .substring(0, 100) 36 | .replace(/ /g, "_") 37 | .toLowerCase()}`; 38 | 39 | return traversal.factory.updateJsxText( 40 | node, 41 | `{intl.formatMessage({id: "${key}", defaultMessage: "${text}"})}` 42 | ); 43 | } 44 | return node; 45 | }); 46 | 47 | // add import function 48 | const hasUserTranslationImport = 49 | sourceFile.getImportDeclaration("react-intl"); 50 | 51 | if (!hasUserTranslationImport) { 52 | sourceFile.addImportDeclaration({ 53 | namedImports: ["useIntl"], 54 | moduleSpecifier: "react-intl", 55 | }); 56 | } 57 | 58 | // add useTranslation hook 59 | const hasTranslateHook = statement 60 | .getDescendantsOfKind(ts.SyntaxKind.CallExpression) 61 | .some((node) => node.getText().startsWith("useIntl")); 62 | 63 | if (!hasTranslateHook) { 64 | // add the useTranslation hook as no translation was found 65 | const [blocks] = statement.getDescendantsOfKind(SyntaxKind.Block); 66 | const useTranslationStatement = printNode( 67 | factory.createVariableStatement( 68 | undefined, 69 | factory.createVariableDeclarationList( 70 | [ 71 | factory.createVariableDeclaration( 72 | factory.createIdentifier("intl"), 73 | undefined, 74 | undefined, 75 | factory.createCallExpression( 76 | factory.createIdentifier("useIntl"), 77 | undefined, 78 | [] 79 | ) 80 | ), 81 | ], 82 | ts.NodeFlags.Const 83 | ) 84 | ) 85 | ); 86 | 87 | if (blocks) { 88 | blocks.insertText(blocks.getStatements()[0].getPos(), (writer) => { 89 | writer.newLine(); 90 | writer.write(useTranslationStatement); 91 | writer.newLine(); 92 | }); 93 | } 94 | } 95 | } 96 | 97 | sourceFile.formatText(); 98 | sourceFile.saveSync(); 99 | } 100 | }; 101 | -------------------------------------------------------------------------------- /src/transformers/react-i18next.ts: -------------------------------------------------------------------------------- 1 | import { printNode, Project, ProjectOptions, SyntaxKind, ts } from "ts-morph"; 2 | 3 | const factory = ts.factory; 4 | 5 | export const transform = ({ 6 | tsConfigFilePath, 7 | filesPaths, 8 | }: { 9 | tsConfigFilePath?: ProjectOptions["tsConfigFilePath"]; 10 | filesPaths: string | string[]; 11 | }) => { 12 | const project = new Project({ 13 | tsConfigFilePath, 14 | }); 15 | 16 | project.addSourceFilesAtPaths(filesPaths); 17 | 18 | for (const sourceFile of project.getSourceFiles()) { 19 | for (const statement of sourceFile.getStatements()) { 20 | const hasTranslatableContent = statement 21 | .getDescendantsOfKind(SyntaxKind.JsxText) 22 | .some((node) => !node.containsOnlyTriviaWhiteSpaces()); 23 | 24 | if (!hasTranslatableContent) { 25 | continue; 26 | } 27 | 28 | statement.transform((traversal) => { 29 | const node = traversal.visitChildren(); 30 | if (ts.isJsxText(node) && !node.containsOnlyTriviaWhiteSpaces) { 31 | const text = node.getText(); 32 | const key = `${sourceFile 33 | .getBaseNameWithoutExtension() 34 | .toLowerCase()}.${text 35 | .substring(0, 100) 36 | .replace(/ /g, "_") 37 | .toLowerCase()}`; 38 | 39 | return traversal.factory.updateJsxText( 40 | node, 41 | `{t("${key}", "${text}")}` 42 | ); 43 | } 44 | return node; 45 | }); 46 | 47 | // add import function 48 | const hasUserTranslationImport = 49 | sourceFile.getImportDeclaration("react-i18next"); 50 | 51 | if (!hasUserTranslationImport) { 52 | sourceFile.addImportDeclaration({ 53 | namedImports: ["useTranslation"], 54 | moduleSpecifier: "react-i18next", 55 | }); 56 | } 57 | 58 | // add useTranslation hook 59 | const hasTranslateHook = statement 60 | .getDescendantsOfKind(ts.SyntaxKind.CallExpression) 61 | .some((node) => node.getText().startsWith("useTranslation")); 62 | 63 | if (!hasTranslateHook) { 64 | // add the useTranslation hook as no translation was found 65 | const [blocks] = statement.getDescendantsOfKind(SyntaxKind.Block); 66 | const useTranslationStatement = printNode( 67 | factory.createVariableStatement( 68 | undefined, 69 | factory.createVariableDeclarationList( 70 | [ 71 | factory.createVariableDeclaration( 72 | factory.createObjectBindingPattern([ 73 | factory.createBindingElement( 74 | undefined, 75 | undefined, 76 | factory.createIdentifier("t"), 77 | undefined 78 | ), 79 | ]), 80 | undefined, 81 | undefined, 82 | factory.createCallExpression( 83 | factory.createIdentifier("useTranslation"), 84 | undefined, 85 | [] 86 | ) 87 | ), 88 | ], 89 | ts.NodeFlags.Const 90 | ) 91 | ) 92 | ); 93 | 94 | if (blocks) { 95 | blocks.insertText(blocks.getStatements()[0].getPos(), (writer) => { 96 | writer.newLine(); 97 | writer.write(useTranslationStatement); 98 | writer.newLine(); 99 | }); 100 | } 101 | } 102 | } 103 | 104 | sourceFile.formatText(); 105 | sourceFile.saveSync(); 106 | } 107 | }; 108 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 | 27 | /* Modules */ 28 | "module": "NodeNext" /* Specify what module code is generated. */, 29 | // "rootDir": "./", /* Specify the root folder within your source files. */ 30 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ 31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 35 | "types": [ 36 | "node", 37 | "jest" 38 | ] /* Specify type package names to be included without being referenced in a source file. */, 39 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 40 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 41 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 42 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 43 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 44 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 45 | // "resolveJsonModule": true, /* Enable importing .json files. */ 46 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 47 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 48 | 49 | /* JavaScript Support */ 50 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 51 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 52 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 53 | 54 | /* Emit */ 55 | "declaration": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */, 56 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 57 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 58 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 59 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 60 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 61 | "outDir": "./dist" /* Specify an output folder for all emitted files. */, 62 | // "removeComments": true, /* Disable emitting comments. */ 63 | // "noEmit": true, /* Disable emitting files from a compilation. */ 64 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 65 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 66 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 67 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 68 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 69 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 70 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 71 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 72 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 73 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 74 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 75 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 76 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 77 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 78 | 79 | /* Interop Constraints */ 80 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 81 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 82 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 83 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, 84 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 85 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 86 | 87 | /* Type Checking */ 88 | "strict": true /* Enable all strict type-checking options. */, 89 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 90 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 91 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 92 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 93 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 94 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 95 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 96 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 97 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 98 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 99 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 100 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 101 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 102 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 103 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 104 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 105 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 106 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 107 | 108 | /* Completeness */ 109 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 110 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 111 | }, 112 | "exclude": ["node_modules"] 113 | } 114 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | typescript: 12 | specifier: ^5.7.2 13 | version: 5.7.2 14 | devDependencies: 15 | '@types/jest': 16 | specifier: ^29.5.14 17 | version: 29.5.14 18 | '@types/node': 19 | specifier: ^22.10.2 20 | version: 22.10.2 21 | jest: 22 | specifier: ^29.7.0 23 | version: 29.7.0(@types/node@22.10.2) 24 | ts-jest: 25 | specifier: ^29.2.5 26 | version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.10.2))(typescript@5.7.2) 27 | ts-morph: 28 | specifier: ^24.0.0 29 | version: 24.0.0 30 | 31 | packages: 32 | 33 | '@ampproject/remapping@2.3.0': 34 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 35 | engines: {node: '>=6.0.0'} 36 | 37 | '@babel/code-frame@7.26.2': 38 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 39 | engines: {node: '>=6.9.0'} 40 | 41 | '@babel/compat-data@7.26.3': 42 | resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} 43 | engines: {node: '>=6.9.0'} 44 | 45 | '@babel/core@7.26.0': 46 | resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} 47 | engines: {node: '>=6.9.0'} 48 | 49 | '@babel/generator@7.26.3': 50 | resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} 51 | engines: {node: '>=6.9.0'} 52 | 53 | '@babel/helper-compilation-targets@7.25.9': 54 | resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} 55 | engines: {node: '>=6.9.0'} 56 | 57 | '@babel/helper-module-imports@7.25.9': 58 | resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 59 | engines: {node: '>=6.9.0'} 60 | 61 | '@babel/helper-module-transforms@7.26.0': 62 | resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 63 | engines: {node: '>=6.9.0'} 64 | peerDependencies: 65 | '@babel/core': ^7.0.0 66 | 67 | '@babel/helper-plugin-utils@7.25.9': 68 | resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} 69 | engines: {node: '>=6.9.0'} 70 | 71 | '@babel/helper-string-parser@7.25.9': 72 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 73 | engines: {node: '>=6.9.0'} 74 | 75 | '@babel/helper-validator-identifier@7.25.9': 76 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 77 | engines: {node: '>=6.9.0'} 78 | 79 | '@babel/helper-validator-option@7.25.9': 80 | resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 81 | engines: {node: '>=6.9.0'} 82 | 83 | '@babel/helpers@7.26.0': 84 | resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} 85 | engines: {node: '>=6.9.0'} 86 | 87 | '@babel/parser@7.26.3': 88 | resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} 89 | engines: {node: '>=6.0.0'} 90 | hasBin: true 91 | 92 | '@babel/plugin-syntax-async-generators@7.8.4': 93 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 94 | peerDependencies: 95 | '@babel/core': ^7.0.0-0 96 | 97 | '@babel/plugin-syntax-bigint@7.8.3': 98 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 99 | peerDependencies: 100 | '@babel/core': ^7.0.0-0 101 | 102 | '@babel/plugin-syntax-class-properties@7.12.13': 103 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 104 | peerDependencies: 105 | '@babel/core': ^7.0.0-0 106 | 107 | '@babel/plugin-syntax-class-static-block@7.14.5': 108 | resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} 109 | engines: {node: '>=6.9.0'} 110 | peerDependencies: 111 | '@babel/core': ^7.0.0-0 112 | 113 | '@babel/plugin-syntax-import-attributes@7.26.0': 114 | resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} 115 | engines: {node: '>=6.9.0'} 116 | peerDependencies: 117 | '@babel/core': ^7.0.0-0 118 | 119 | '@babel/plugin-syntax-import-meta@7.10.4': 120 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 121 | peerDependencies: 122 | '@babel/core': ^7.0.0-0 123 | 124 | '@babel/plugin-syntax-json-strings@7.8.3': 125 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 126 | peerDependencies: 127 | '@babel/core': ^7.0.0-0 128 | 129 | '@babel/plugin-syntax-jsx@7.25.9': 130 | resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} 131 | engines: {node: '>=6.9.0'} 132 | peerDependencies: 133 | '@babel/core': ^7.0.0-0 134 | 135 | '@babel/plugin-syntax-logical-assignment-operators@7.10.4': 136 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 137 | peerDependencies: 138 | '@babel/core': ^7.0.0-0 139 | 140 | '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': 141 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 142 | peerDependencies: 143 | '@babel/core': ^7.0.0-0 144 | 145 | '@babel/plugin-syntax-numeric-separator@7.10.4': 146 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 147 | peerDependencies: 148 | '@babel/core': ^7.0.0-0 149 | 150 | '@babel/plugin-syntax-object-rest-spread@7.8.3': 151 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 152 | peerDependencies: 153 | '@babel/core': ^7.0.0-0 154 | 155 | '@babel/plugin-syntax-optional-catch-binding@7.8.3': 156 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 157 | peerDependencies: 158 | '@babel/core': ^7.0.0-0 159 | 160 | '@babel/plugin-syntax-optional-chaining@7.8.3': 161 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 162 | peerDependencies: 163 | '@babel/core': ^7.0.0-0 164 | 165 | '@babel/plugin-syntax-private-property-in-object@7.14.5': 166 | resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} 167 | engines: {node: '>=6.9.0'} 168 | peerDependencies: 169 | '@babel/core': ^7.0.0-0 170 | 171 | '@babel/plugin-syntax-top-level-await@7.14.5': 172 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 173 | engines: {node: '>=6.9.0'} 174 | peerDependencies: 175 | '@babel/core': ^7.0.0-0 176 | 177 | '@babel/plugin-syntax-typescript@7.25.9': 178 | resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} 179 | engines: {node: '>=6.9.0'} 180 | peerDependencies: 181 | '@babel/core': ^7.0.0-0 182 | 183 | '@babel/template@7.25.9': 184 | resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} 185 | engines: {node: '>=6.9.0'} 186 | 187 | '@babel/traverse@7.26.4': 188 | resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} 189 | engines: {node: '>=6.9.0'} 190 | 191 | '@babel/types@7.26.3': 192 | resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} 193 | engines: {node: '>=6.9.0'} 194 | 195 | '@bcoe/v8-coverage@0.2.3': 196 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 197 | 198 | '@istanbuljs/load-nyc-config@1.1.0': 199 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 200 | engines: {node: '>=8'} 201 | 202 | '@istanbuljs/schema@0.1.3': 203 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 204 | engines: {node: '>=8'} 205 | 206 | '@jest/console@29.7.0': 207 | resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} 208 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 209 | 210 | '@jest/core@29.7.0': 211 | resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} 212 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 213 | peerDependencies: 214 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 215 | peerDependenciesMeta: 216 | node-notifier: 217 | optional: true 218 | 219 | '@jest/environment@29.7.0': 220 | resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} 221 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 222 | 223 | '@jest/expect-utils@29.7.0': 224 | resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} 225 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 226 | 227 | '@jest/expect@29.7.0': 228 | resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} 229 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 230 | 231 | '@jest/fake-timers@29.7.0': 232 | resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} 233 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 234 | 235 | '@jest/globals@29.7.0': 236 | resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} 237 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 238 | 239 | '@jest/reporters@29.7.0': 240 | resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} 241 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 242 | peerDependencies: 243 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 244 | peerDependenciesMeta: 245 | node-notifier: 246 | optional: true 247 | 248 | '@jest/schemas@29.6.3': 249 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} 250 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 251 | 252 | '@jest/source-map@29.6.3': 253 | resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} 254 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 255 | 256 | '@jest/test-result@29.7.0': 257 | resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} 258 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 259 | 260 | '@jest/test-sequencer@29.7.0': 261 | resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} 262 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 263 | 264 | '@jest/transform@29.7.0': 265 | resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} 266 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 267 | 268 | '@jest/types@29.6.3': 269 | resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} 270 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 271 | 272 | '@jridgewell/gen-mapping@0.3.8': 273 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 274 | engines: {node: '>=6.0.0'} 275 | 276 | '@jridgewell/resolve-uri@3.1.2': 277 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 278 | engines: {node: '>=6.0.0'} 279 | 280 | '@jridgewell/set-array@1.2.1': 281 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 282 | engines: {node: '>=6.0.0'} 283 | 284 | '@jridgewell/sourcemap-codec@1.5.0': 285 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 286 | 287 | '@jridgewell/trace-mapping@0.3.25': 288 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 289 | 290 | '@sinclair/typebox@0.27.8': 291 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 292 | 293 | '@sinonjs/commons@3.0.1': 294 | resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} 295 | 296 | '@sinonjs/fake-timers@10.3.0': 297 | resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} 298 | 299 | '@ts-morph/common@0.25.0': 300 | resolution: {integrity: sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg==} 301 | 302 | '@types/babel__core@7.20.5': 303 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 304 | 305 | '@types/babel__generator@7.6.8': 306 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 307 | 308 | '@types/babel__template@7.4.4': 309 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 310 | 311 | '@types/babel__traverse@7.20.6': 312 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 313 | 314 | '@types/graceful-fs@4.1.9': 315 | resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} 316 | 317 | '@types/istanbul-lib-coverage@2.0.6': 318 | resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} 319 | 320 | '@types/istanbul-lib-report@3.0.3': 321 | resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} 322 | 323 | '@types/istanbul-reports@3.0.4': 324 | resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} 325 | 326 | '@types/jest@29.5.14': 327 | resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} 328 | 329 | '@types/node@22.10.2': 330 | resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} 331 | 332 | '@types/stack-utils@2.0.3': 333 | resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} 334 | 335 | '@types/yargs-parser@21.0.3': 336 | resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} 337 | 338 | '@types/yargs@17.0.33': 339 | resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} 340 | 341 | ansi-escapes@4.3.2: 342 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 343 | engines: {node: '>=8'} 344 | 345 | ansi-regex@5.0.1: 346 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 347 | engines: {node: '>=8'} 348 | 349 | ansi-styles@4.3.0: 350 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 351 | engines: {node: '>=8'} 352 | 353 | ansi-styles@5.2.0: 354 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 355 | engines: {node: '>=10'} 356 | 357 | anymatch@3.1.3: 358 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 359 | engines: {node: '>= 8'} 360 | 361 | argparse@1.0.10: 362 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 363 | 364 | async@3.2.6: 365 | resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} 366 | 367 | babel-jest@29.7.0: 368 | resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} 369 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 370 | peerDependencies: 371 | '@babel/core': ^7.8.0 372 | 373 | babel-plugin-istanbul@6.1.1: 374 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} 375 | engines: {node: '>=8'} 376 | 377 | babel-plugin-jest-hoist@29.6.3: 378 | resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} 379 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 380 | 381 | babel-preset-current-node-syntax@1.1.0: 382 | resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} 383 | peerDependencies: 384 | '@babel/core': ^7.0.0 385 | 386 | babel-preset-jest@29.6.3: 387 | resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} 388 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 389 | peerDependencies: 390 | '@babel/core': ^7.0.0 391 | 392 | balanced-match@1.0.2: 393 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 394 | 395 | brace-expansion@1.1.11: 396 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 397 | 398 | brace-expansion@2.0.1: 399 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 400 | 401 | braces@3.0.3: 402 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 403 | engines: {node: '>=8'} 404 | 405 | browserslist@4.24.3: 406 | resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} 407 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 408 | hasBin: true 409 | 410 | bs-logger@0.2.6: 411 | resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} 412 | engines: {node: '>= 6'} 413 | 414 | bser@2.1.1: 415 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 416 | 417 | buffer-from@1.1.2: 418 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 419 | 420 | callsites@3.1.0: 421 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 422 | engines: {node: '>=6'} 423 | 424 | camelcase@5.3.1: 425 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 426 | engines: {node: '>=6'} 427 | 428 | camelcase@6.3.0: 429 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 430 | engines: {node: '>=10'} 431 | 432 | caniuse-lite@1.0.30001690: 433 | resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} 434 | 435 | chalk@4.1.2: 436 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 437 | engines: {node: '>=10'} 438 | 439 | char-regex@1.0.2: 440 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 441 | engines: {node: '>=10'} 442 | 443 | ci-info@3.9.0: 444 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 445 | engines: {node: '>=8'} 446 | 447 | cjs-module-lexer@1.4.1: 448 | resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} 449 | 450 | cliui@8.0.1: 451 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 452 | engines: {node: '>=12'} 453 | 454 | co@4.6.0: 455 | resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} 456 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 457 | 458 | code-block-writer@13.0.3: 459 | resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} 460 | 461 | collect-v8-coverage@1.0.2: 462 | resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} 463 | 464 | color-convert@2.0.1: 465 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 466 | engines: {node: '>=7.0.0'} 467 | 468 | color-name@1.1.4: 469 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 470 | 471 | concat-map@0.0.1: 472 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 473 | 474 | convert-source-map@2.0.0: 475 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 476 | 477 | create-jest@29.7.0: 478 | resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} 479 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 480 | hasBin: true 481 | 482 | cross-spawn@7.0.6: 483 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 484 | engines: {node: '>= 8'} 485 | 486 | debug@4.4.0: 487 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 488 | engines: {node: '>=6.0'} 489 | peerDependencies: 490 | supports-color: '*' 491 | peerDependenciesMeta: 492 | supports-color: 493 | optional: true 494 | 495 | dedent@1.5.3: 496 | resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} 497 | peerDependencies: 498 | babel-plugin-macros: ^3.1.0 499 | peerDependenciesMeta: 500 | babel-plugin-macros: 501 | optional: true 502 | 503 | deepmerge@4.3.1: 504 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 505 | engines: {node: '>=0.10.0'} 506 | 507 | detect-newline@3.1.0: 508 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 509 | engines: {node: '>=8'} 510 | 511 | diff-sequences@29.6.3: 512 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} 513 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 514 | 515 | ejs@3.1.10: 516 | resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} 517 | engines: {node: '>=0.10.0'} 518 | hasBin: true 519 | 520 | electron-to-chromium@1.5.76: 521 | resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} 522 | 523 | emittery@0.13.1: 524 | resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} 525 | engines: {node: '>=12'} 526 | 527 | emoji-regex@8.0.0: 528 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 529 | 530 | error-ex@1.3.2: 531 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 532 | 533 | escalade@3.2.0: 534 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 535 | engines: {node: '>=6'} 536 | 537 | escape-string-regexp@2.0.0: 538 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 539 | engines: {node: '>=8'} 540 | 541 | esprima@4.0.1: 542 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 543 | engines: {node: '>=4'} 544 | hasBin: true 545 | 546 | execa@5.1.1: 547 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 548 | engines: {node: '>=10'} 549 | 550 | exit@0.1.2: 551 | resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} 552 | engines: {node: '>= 0.8.0'} 553 | 554 | expect@29.7.0: 555 | resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} 556 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 557 | 558 | fast-json-stable-stringify@2.1.0: 559 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 560 | 561 | fb-watchman@2.0.2: 562 | resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} 563 | 564 | fdir@6.4.2: 565 | resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} 566 | peerDependencies: 567 | picomatch: ^3 || ^4 568 | peerDependenciesMeta: 569 | picomatch: 570 | optional: true 571 | 572 | filelist@1.0.4: 573 | resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} 574 | 575 | fill-range@7.1.1: 576 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 577 | engines: {node: '>=8'} 578 | 579 | find-up@4.1.0: 580 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 581 | engines: {node: '>=8'} 582 | 583 | fs.realpath@1.0.0: 584 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 585 | 586 | fsevents@2.3.3: 587 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 588 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 589 | os: [darwin] 590 | 591 | function-bind@1.1.2: 592 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 593 | 594 | gensync@1.0.0-beta.2: 595 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 596 | engines: {node: '>=6.9.0'} 597 | 598 | get-caller-file@2.0.5: 599 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 600 | engines: {node: 6.* || 8.* || >= 10.*} 601 | 602 | get-package-type@0.1.0: 603 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 604 | engines: {node: '>=8.0.0'} 605 | 606 | get-stream@6.0.1: 607 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 608 | engines: {node: '>=10'} 609 | 610 | glob@7.2.3: 611 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 612 | deprecated: Glob versions prior to v9 are no longer supported 613 | 614 | globals@11.12.0: 615 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 616 | engines: {node: '>=4'} 617 | 618 | graceful-fs@4.2.11: 619 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 620 | 621 | has-flag@4.0.0: 622 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 623 | engines: {node: '>=8'} 624 | 625 | hasown@2.0.2: 626 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 627 | engines: {node: '>= 0.4'} 628 | 629 | html-escaper@2.0.2: 630 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 631 | 632 | human-signals@2.1.0: 633 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 634 | engines: {node: '>=10.17.0'} 635 | 636 | import-local@3.2.0: 637 | resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} 638 | engines: {node: '>=8'} 639 | hasBin: true 640 | 641 | imurmurhash@0.1.4: 642 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 643 | engines: {node: '>=0.8.19'} 644 | 645 | inflight@1.0.6: 646 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 647 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 648 | 649 | inherits@2.0.4: 650 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 651 | 652 | is-arrayish@0.2.1: 653 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 654 | 655 | is-core-module@2.16.1: 656 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 657 | engines: {node: '>= 0.4'} 658 | 659 | is-fullwidth-code-point@3.0.0: 660 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 661 | engines: {node: '>=8'} 662 | 663 | is-generator-fn@2.1.0: 664 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 665 | engines: {node: '>=6'} 666 | 667 | is-number@7.0.0: 668 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 669 | engines: {node: '>=0.12.0'} 670 | 671 | is-stream@2.0.1: 672 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 673 | engines: {node: '>=8'} 674 | 675 | isexe@2.0.0: 676 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 677 | 678 | istanbul-lib-coverage@3.2.2: 679 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 680 | engines: {node: '>=8'} 681 | 682 | istanbul-lib-instrument@5.2.1: 683 | resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} 684 | engines: {node: '>=8'} 685 | 686 | istanbul-lib-instrument@6.0.3: 687 | resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} 688 | engines: {node: '>=10'} 689 | 690 | istanbul-lib-report@3.0.1: 691 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 692 | engines: {node: '>=10'} 693 | 694 | istanbul-lib-source-maps@4.0.1: 695 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} 696 | engines: {node: '>=10'} 697 | 698 | istanbul-reports@3.1.7: 699 | resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} 700 | engines: {node: '>=8'} 701 | 702 | jake@10.9.2: 703 | resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} 704 | engines: {node: '>=10'} 705 | hasBin: true 706 | 707 | jest-changed-files@29.7.0: 708 | resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} 709 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 710 | 711 | jest-circus@29.7.0: 712 | resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} 713 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 714 | 715 | jest-cli@29.7.0: 716 | resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} 717 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 718 | hasBin: true 719 | peerDependencies: 720 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 721 | peerDependenciesMeta: 722 | node-notifier: 723 | optional: true 724 | 725 | jest-config@29.7.0: 726 | resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} 727 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 728 | peerDependencies: 729 | '@types/node': '*' 730 | ts-node: '>=9.0.0' 731 | peerDependenciesMeta: 732 | '@types/node': 733 | optional: true 734 | ts-node: 735 | optional: true 736 | 737 | jest-diff@29.7.0: 738 | resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} 739 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 740 | 741 | jest-docblock@29.7.0: 742 | resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} 743 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 744 | 745 | jest-each@29.7.0: 746 | resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} 747 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 748 | 749 | jest-environment-node@29.7.0: 750 | resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} 751 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 752 | 753 | jest-get-type@29.6.3: 754 | resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} 755 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 756 | 757 | jest-haste-map@29.7.0: 758 | resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} 759 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 760 | 761 | jest-leak-detector@29.7.0: 762 | resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} 763 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 764 | 765 | jest-matcher-utils@29.7.0: 766 | resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} 767 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 768 | 769 | jest-message-util@29.7.0: 770 | resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} 771 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 772 | 773 | jest-mock@29.7.0: 774 | resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} 775 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 776 | 777 | jest-pnp-resolver@1.2.3: 778 | resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} 779 | engines: {node: '>=6'} 780 | peerDependencies: 781 | jest-resolve: '*' 782 | peerDependenciesMeta: 783 | jest-resolve: 784 | optional: true 785 | 786 | jest-regex-util@29.6.3: 787 | resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} 788 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 789 | 790 | jest-resolve-dependencies@29.7.0: 791 | resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} 792 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 793 | 794 | jest-resolve@29.7.0: 795 | resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} 796 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 797 | 798 | jest-runner@29.7.0: 799 | resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} 800 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 801 | 802 | jest-runtime@29.7.0: 803 | resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} 804 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 805 | 806 | jest-snapshot@29.7.0: 807 | resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} 808 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 809 | 810 | jest-util@29.7.0: 811 | resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} 812 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 813 | 814 | jest-validate@29.7.0: 815 | resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} 816 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 817 | 818 | jest-watcher@29.7.0: 819 | resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} 820 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 821 | 822 | jest-worker@29.7.0: 823 | resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} 824 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 825 | 826 | jest@29.7.0: 827 | resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} 828 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 829 | hasBin: true 830 | peerDependencies: 831 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 832 | peerDependenciesMeta: 833 | node-notifier: 834 | optional: true 835 | 836 | js-tokens@4.0.0: 837 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 838 | 839 | js-yaml@3.14.1: 840 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 841 | hasBin: true 842 | 843 | jsesc@3.1.0: 844 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 845 | engines: {node: '>=6'} 846 | hasBin: true 847 | 848 | json-parse-even-better-errors@2.3.1: 849 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 850 | 851 | json5@2.2.3: 852 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 853 | engines: {node: '>=6'} 854 | hasBin: true 855 | 856 | kleur@3.0.3: 857 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 858 | engines: {node: '>=6'} 859 | 860 | leven@3.1.0: 861 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 862 | engines: {node: '>=6'} 863 | 864 | lines-and-columns@1.2.4: 865 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 866 | 867 | locate-path@5.0.0: 868 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 869 | engines: {node: '>=8'} 870 | 871 | lodash.memoize@4.1.2: 872 | resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} 873 | 874 | lru-cache@5.1.1: 875 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 876 | 877 | make-dir@4.0.0: 878 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 879 | engines: {node: '>=10'} 880 | 881 | make-error@1.3.6: 882 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 883 | 884 | makeerror@1.0.12: 885 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} 886 | 887 | merge-stream@2.0.0: 888 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 889 | 890 | micromatch@4.0.8: 891 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 892 | engines: {node: '>=8.6'} 893 | 894 | mimic-fn@2.1.0: 895 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 896 | engines: {node: '>=6'} 897 | 898 | minimatch@3.1.2: 899 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 900 | 901 | minimatch@5.1.6: 902 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 903 | engines: {node: '>=10'} 904 | 905 | minimatch@9.0.5: 906 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 907 | engines: {node: '>=16 || 14 >=14.17'} 908 | 909 | ms@2.1.3: 910 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 911 | 912 | natural-compare@1.4.0: 913 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 914 | 915 | node-int64@0.4.0: 916 | resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} 917 | 918 | node-releases@2.0.19: 919 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 920 | 921 | normalize-path@3.0.0: 922 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 923 | engines: {node: '>=0.10.0'} 924 | 925 | npm-run-path@4.0.1: 926 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 927 | engines: {node: '>=8'} 928 | 929 | once@1.4.0: 930 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 931 | 932 | onetime@5.1.2: 933 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 934 | engines: {node: '>=6'} 935 | 936 | p-limit@2.3.0: 937 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 938 | engines: {node: '>=6'} 939 | 940 | p-limit@3.1.0: 941 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 942 | engines: {node: '>=10'} 943 | 944 | p-locate@4.1.0: 945 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 946 | engines: {node: '>=8'} 947 | 948 | p-try@2.2.0: 949 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 950 | engines: {node: '>=6'} 951 | 952 | parse-json@5.2.0: 953 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 954 | engines: {node: '>=8'} 955 | 956 | path-browserify@1.0.1: 957 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 958 | 959 | path-exists@4.0.0: 960 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 961 | engines: {node: '>=8'} 962 | 963 | path-is-absolute@1.0.1: 964 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 965 | engines: {node: '>=0.10.0'} 966 | 967 | path-key@3.1.1: 968 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 969 | engines: {node: '>=8'} 970 | 971 | path-parse@1.0.7: 972 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 973 | 974 | picocolors@1.1.1: 975 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 976 | 977 | picomatch@2.3.1: 978 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 979 | engines: {node: '>=8.6'} 980 | 981 | picomatch@4.0.2: 982 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 983 | engines: {node: '>=12'} 984 | 985 | pirates@4.0.6: 986 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 987 | engines: {node: '>= 6'} 988 | 989 | pkg-dir@4.2.0: 990 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 991 | engines: {node: '>=8'} 992 | 993 | pretty-format@29.7.0: 994 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} 995 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 996 | 997 | prompts@2.4.2: 998 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 999 | engines: {node: '>= 6'} 1000 | 1001 | pure-rand@6.1.0: 1002 | resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} 1003 | 1004 | react-is@18.3.1: 1005 | resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} 1006 | 1007 | require-directory@2.1.1: 1008 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1009 | engines: {node: '>=0.10.0'} 1010 | 1011 | resolve-cwd@3.0.0: 1012 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 1013 | engines: {node: '>=8'} 1014 | 1015 | resolve-from@5.0.0: 1016 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1017 | engines: {node: '>=8'} 1018 | 1019 | resolve.exports@2.0.3: 1020 | resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} 1021 | engines: {node: '>=10'} 1022 | 1023 | resolve@1.22.10: 1024 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1025 | engines: {node: '>= 0.4'} 1026 | hasBin: true 1027 | 1028 | semver@6.3.1: 1029 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1030 | hasBin: true 1031 | 1032 | semver@7.6.3: 1033 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1034 | engines: {node: '>=10'} 1035 | hasBin: true 1036 | 1037 | shebang-command@2.0.0: 1038 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1039 | engines: {node: '>=8'} 1040 | 1041 | shebang-regex@3.0.0: 1042 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1043 | engines: {node: '>=8'} 1044 | 1045 | signal-exit@3.0.7: 1046 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1047 | 1048 | sisteransi@1.0.5: 1049 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 1050 | 1051 | slash@3.0.0: 1052 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1053 | engines: {node: '>=8'} 1054 | 1055 | source-map-support@0.5.13: 1056 | resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} 1057 | 1058 | source-map@0.6.1: 1059 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1060 | engines: {node: '>=0.10.0'} 1061 | 1062 | sprintf-js@1.0.3: 1063 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 1064 | 1065 | stack-utils@2.0.6: 1066 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 1067 | engines: {node: '>=10'} 1068 | 1069 | string-length@4.0.2: 1070 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 1071 | engines: {node: '>=10'} 1072 | 1073 | string-width@4.2.3: 1074 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1075 | engines: {node: '>=8'} 1076 | 1077 | strip-ansi@6.0.1: 1078 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1079 | engines: {node: '>=8'} 1080 | 1081 | strip-bom@4.0.0: 1082 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 1083 | engines: {node: '>=8'} 1084 | 1085 | strip-final-newline@2.0.0: 1086 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1087 | engines: {node: '>=6'} 1088 | 1089 | strip-json-comments@3.1.1: 1090 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1091 | engines: {node: '>=8'} 1092 | 1093 | supports-color@7.2.0: 1094 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1095 | engines: {node: '>=8'} 1096 | 1097 | supports-color@8.1.1: 1098 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 1099 | engines: {node: '>=10'} 1100 | 1101 | supports-preserve-symlinks-flag@1.0.0: 1102 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1103 | engines: {node: '>= 0.4'} 1104 | 1105 | test-exclude@6.0.0: 1106 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 1107 | engines: {node: '>=8'} 1108 | 1109 | tinyglobby@0.2.10: 1110 | resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} 1111 | engines: {node: '>=12.0.0'} 1112 | 1113 | tmpl@1.0.5: 1114 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 1115 | 1116 | to-regex-range@5.0.1: 1117 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1118 | engines: {node: '>=8.0'} 1119 | 1120 | ts-jest@29.2.5: 1121 | resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} 1122 | engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} 1123 | hasBin: true 1124 | peerDependencies: 1125 | '@babel/core': '>=7.0.0-beta.0 <8' 1126 | '@jest/transform': ^29.0.0 1127 | '@jest/types': ^29.0.0 1128 | babel-jest: ^29.0.0 1129 | esbuild: '*' 1130 | jest: ^29.0.0 1131 | typescript: '>=4.3 <6' 1132 | peerDependenciesMeta: 1133 | '@babel/core': 1134 | optional: true 1135 | '@jest/transform': 1136 | optional: true 1137 | '@jest/types': 1138 | optional: true 1139 | babel-jest: 1140 | optional: true 1141 | esbuild: 1142 | optional: true 1143 | 1144 | ts-morph@24.0.0: 1145 | resolution: {integrity: sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw==} 1146 | 1147 | type-detect@4.0.8: 1148 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 1149 | engines: {node: '>=4'} 1150 | 1151 | type-fest@0.21.3: 1152 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 1153 | engines: {node: '>=10'} 1154 | 1155 | typescript@5.7.2: 1156 | resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} 1157 | engines: {node: '>=14.17'} 1158 | hasBin: true 1159 | 1160 | undici-types@6.20.0: 1161 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 1162 | 1163 | update-browserslist-db@1.1.1: 1164 | resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} 1165 | hasBin: true 1166 | peerDependencies: 1167 | browserslist: '>= 4.21.0' 1168 | 1169 | v8-to-istanbul@9.3.0: 1170 | resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} 1171 | engines: {node: '>=10.12.0'} 1172 | 1173 | walker@1.0.8: 1174 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} 1175 | 1176 | which@2.0.2: 1177 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1178 | engines: {node: '>= 8'} 1179 | hasBin: true 1180 | 1181 | wrap-ansi@7.0.0: 1182 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1183 | engines: {node: '>=10'} 1184 | 1185 | wrappy@1.0.2: 1186 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1187 | 1188 | write-file-atomic@4.0.2: 1189 | resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} 1190 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1191 | 1192 | y18n@5.0.8: 1193 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1194 | engines: {node: '>=10'} 1195 | 1196 | yallist@3.1.1: 1197 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1198 | 1199 | yargs-parser@21.1.1: 1200 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 1201 | engines: {node: '>=12'} 1202 | 1203 | yargs@17.7.2: 1204 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 1205 | engines: {node: '>=12'} 1206 | 1207 | yocto-queue@0.1.0: 1208 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1209 | engines: {node: '>=10'} 1210 | 1211 | snapshots: 1212 | 1213 | '@ampproject/remapping@2.3.0': 1214 | dependencies: 1215 | '@jridgewell/gen-mapping': 0.3.8 1216 | '@jridgewell/trace-mapping': 0.3.25 1217 | 1218 | '@babel/code-frame@7.26.2': 1219 | dependencies: 1220 | '@babel/helper-validator-identifier': 7.25.9 1221 | js-tokens: 4.0.0 1222 | picocolors: 1.1.1 1223 | 1224 | '@babel/compat-data@7.26.3': {} 1225 | 1226 | '@babel/core@7.26.0': 1227 | dependencies: 1228 | '@ampproject/remapping': 2.3.0 1229 | '@babel/code-frame': 7.26.2 1230 | '@babel/generator': 7.26.3 1231 | '@babel/helper-compilation-targets': 7.25.9 1232 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) 1233 | '@babel/helpers': 7.26.0 1234 | '@babel/parser': 7.26.3 1235 | '@babel/template': 7.25.9 1236 | '@babel/traverse': 7.26.4 1237 | '@babel/types': 7.26.3 1238 | convert-source-map: 2.0.0 1239 | debug: 4.4.0 1240 | gensync: 1.0.0-beta.2 1241 | json5: 2.2.3 1242 | semver: 6.3.1 1243 | transitivePeerDependencies: 1244 | - supports-color 1245 | 1246 | '@babel/generator@7.26.3': 1247 | dependencies: 1248 | '@babel/parser': 7.26.3 1249 | '@babel/types': 7.26.3 1250 | '@jridgewell/gen-mapping': 0.3.8 1251 | '@jridgewell/trace-mapping': 0.3.25 1252 | jsesc: 3.1.0 1253 | 1254 | '@babel/helper-compilation-targets@7.25.9': 1255 | dependencies: 1256 | '@babel/compat-data': 7.26.3 1257 | '@babel/helper-validator-option': 7.25.9 1258 | browserslist: 4.24.3 1259 | lru-cache: 5.1.1 1260 | semver: 6.3.1 1261 | 1262 | '@babel/helper-module-imports@7.25.9': 1263 | dependencies: 1264 | '@babel/traverse': 7.26.4 1265 | '@babel/types': 7.26.3 1266 | transitivePeerDependencies: 1267 | - supports-color 1268 | 1269 | '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': 1270 | dependencies: 1271 | '@babel/core': 7.26.0 1272 | '@babel/helper-module-imports': 7.25.9 1273 | '@babel/helper-validator-identifier': 7.25.9 1274 | '@babel/traverse': 7.26.4 1275 | transitivePeerDependencies: 1276 | - supports-color 1277 | 1278 | '@babel/helper-plugin-utils@7.25.9': {} 1279 | 1280 | '@babel/helper-string-parser@7.25.9': {} 1281 | 1282 | '@babel/helper-validator-identifier@7.25.9': {} 1283 | 1284 | '@babel/helper-validator-option@7.25.9': {} 1285 | 1286 | '@babel/helpers@7.26.0': 1287 | dependencies: 1288 | '@babel/template': 7.25.9 1289 | '@babel/types': 7.26.3 1290 | 1291 | '@babel/parser@7.26.3': 1292 | dependencies: 1293 | '@babel/types': 7.26.3 1294 | 1295 | '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': 1296 | dependencies: 1297 | '@babel/core': 7.26.0 1298 | '@babel/helper-plugin-utils': 7.25.9 1299 | 1300 | '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': 1301 | dependencies: 1302 | '@babel/core': 7.26.0 1303 | '@babel/helper-plugin-utils': 7.25.9 1304 | 1305 | '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': 1306 | dependencies: 1307 | '@babel/core': 7.26.0 1308 | '@babel/helper-plugin-utils': 7.25.9 1309 | 1310 | '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': 1311 | dependencies: 1312 | '@babel/core': 7.26.0 1313 | '@babel/helper-plugin-utils': 7.25.9 1314 | 1315 | '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': 1316 | dependencies: 1317 | '@babel/core': 7.26.0 1318 | '@babel/helper-plugin-utils': 7.25.9 1319 | 1320 | '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': 1321 | dependencies: 1322 | '@babel/core': 7.26.0 1323 | '@babel/helper-plugin-utils': 7.25.9 1324 | 1325 | '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': 1326 | dependencies: 1327 | '@babel/core': 7.26.0 1328 | '@babel/helper-plugin-utils': 7.25.9 1329 | 1330 | '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': 1331 | dependencies: 1332 | '@babel/core': 7.26.0 1333 | '@babel/helper-plugin-utils': 7.25.9 1334 | 1335 | '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': 1336 | dependencies: 1337 | '@babel/core': 7.26.0 1338 | '@babel/helper-plugin-utils': 7.25.9 1339 | 1340 | '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': 1341 | dependencies: 1342 | '@babel/core': 7.26.0 1343 | '@babel/helper-plugin-utils': 7.25.9 1344 | 1345 | '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': 1346 | dependencies: 1347 | '@babel/core': 7.26.0 1348 | '@babel/helper-plugin-utils': 7.25.9 1349 | 1350 | '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': 1351 | dependencies: 1352 | '@babel/core': 7.26.0 1353 | '@babel/helper-plugin-utils': 7.25.9 1354 | 1355 | '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': 1356 | dependencies: 1357 | '@babel/core': 7.26.0 1358 | '@babel/helper-plugin-utils': 7.25.9 1359 | 1360 | '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': 1361 | dependencies: 1362 | '@babel/core': 7.26.0 1363 | '@babel/helper-plugin-utils': 7.25.9 1364 | 1365 | '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': 1366 | dependencies: 1367 | '@babel/core': 7.26.0 1368 | '@babel/helper-plugin-utils': 7.25.9 1369 | 1370 | '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': 1371 | dependencies: 1372 | '@babel/core': 7.26.0 1373 | '@babel/helper-plugin-utils': 7.25.9 1374 | 1375 | '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': 1376 | dependencies: 1377 | '@babel/core': 7.26.0 1378 | '@babel/helper-plugin-utils': 7.25.9 1379 | 1380 | '@babel/template@7.25.9': 1381 | dependencies: 1382 | '@babel/code-frame': 7.26.2 1383 | '@babel/parser': 7.26.3 1384 | '@babel/types': 7.26.3 1385 | 1386 | '@babel/traverse@7.26.4': 1387 | dependencies: 1388 | '@babel/code-frame': 7.26.2 1389 | '@babel/generator': 7.26.3 1390 | '@babel/parser': 7.26.3 1391 | '@babel/template': 7.25.9 1392 | '@babel/types': 7.26.3 1393 | debug: 4.4.0 1394 | globals: 11.12.0 1395 | transitivePeerDependencies: 1396 | - supports-color 1397 | 1398 | '@babel/types@7.26.3': 1399 | dependencies: 1400 | '@babel/helper-string-parser': 7.25.9 1401 | '@babel/helper-validator-identifier': 7.25.9 1402 | 1403 | '@bcoe/v8-coverage@0.2.3': {} 1404 | 1405 | '@istanbuljs/load-nyc-config@1.1.0': 1406 | dependencies: 1407 | camelcase: 5.3.1 1408 | find-up: 4.1.0 1409 | get-package-type: 0.1.0 1410 | js-yaml: 3.14.1 1411 | resolve-from: 5.0.0 1412 | 1413 | '@istanbuljs/schema@0.1.3': {} 1414 | 1415 | '@jest/console@29.7.0': 1416 | dependencies: 1417 | '@jest/types': 29.6.3 1418 | '@types/node': 22.10.2 1419 | chalk: 4.1.2 1420 | jest-message-util: 29.7.0 1421 | jest-util: 29.7.0 1422 | slash: 3.0.0 1423 | 1424 | '@jest/core@29.7.0': 1425 | dependencies: 1426 | '@jest/console': 29.7.0 1427 | '@jest/reporters': 29.7.0 1428 | '@jest/test-result': 29.7.0 1429 | '@jest/transform': 29.7.0 1430 | '@jest/types': 29.6.3 1431 | '@types/node': 22.10.2 1432 | ansi-escapes: 4.3.2 1433 | chalk: 4.1.2 1434 | ci-info: 3.9.0 1435 | exit: 0.1.2 1436 | graceful-fs: 4.2.11 1437 | jest-changed-files: 29.7.0 1438 | jest-config: 29.7.0(@types/node@22.10.2) 1439 | jest-haste-map: 29.7.0 1440 | jest-message-util: 29.7.0 1441 | jest-regex-util: 29.6.3 1442 | jest-resolve: 29.7.0 1443 | jest-resolve-dependencies: 29.7.0 1444 | jest-runner: 29.7.0 1445 | jest-runtime: 29.7.0 1446 | jest-snapshot: 29.7.0 1447 | jest-util: 29.7.0 1448 | jest-validate: 29.7.0 1449 | jest-watcher: 29.7.0 1450 | micromatch: 4.0.8 1451 | pretty-format: 29.7.0 1452 | slash: 3.0.0 1453 | strip-ansi: 6.0.1 1454 | transitivePeerDependencies: 1455 | - babel-plugin-macros 1456 | - supports-color 1457 | - ts-node 1458 | 1459 | '@jest/environment@29.7.0': 1460 | dependencies: 1461 | '@jest/fake-timers': 29.7.0 1462 | '@jest/types': 29.6.3 1463 | '@types/node': 22.10.2 1464 | jest-mock: 29.7.0 1465 | 1466 | '@jest/expect-utils@29.7.0': 1467 | dependencies: 1468 | jest-get-type: 29.6.3 1469 | 1470 | '@jest/expect@29.7.0': 1471 | dependencies: 1472 | expect: 29.7.0 1473 | jest-snapshot: 29.7.0 1474 | transitivePeerDependencies: 1475 | - supports-color 1476 | 1477 | '@jest/fake-timers@29.7.0': 1478 | dependencies: 1479 | '@jest/types': 29.6.3 1480 | '@sinonjs/fake-timers': 10.3.0 1481 | '@types/node': 22.10.2 1482 | jest-message-util: 29.7.0 1483 | jest-mock: 29.7.0 1484 | jest-util: 29.7.0 1485 | 1486 | '@jest/globals@29.7.0': 1487 | dependencies: 1488 | '@jest/environment': 29.7.0 1489 | '@jest/expect': 29.7.0 1490 | '@jest/types': 29.6.3 1491 | jest-mock: 29.7.0 1492 | transitivePeerDependencies: 1493 | - supports-color 1494 | 1495 | '@jest/reporters@29.7.0': 1496 | dependencies: 1497 | '@bcoe/v8-coverage': 0.2.3 1498 | '@jest/console': 29.7.0 1499 | '@jest/test-result': 29.7.0 1500 | '@jest/transform': 29.7.0 1501 | '@jest/types': 29.6.3 1502 | '@jridgewell/trace-mapping': 0.3.25 1503 | '@types/node': 22.10.2 1504 | chalk: 4.1.2 1505 | collect-v8-coverage: 1.0.2 1506 | exit: 0.1.2 1507 | glob: 7.2.3 1508 | graceful-fs: 4.2.11 1509 | istanbul-lib-coverage: 3.2.2 1510 | istanbul-lib-instrument: 6.0.3 1511 | istanbul-lib-report: 3.0.1 1512 | istanbul-lib-source-maps: 4.0.1 1513 | istanbul-reports: 3.1.7 1514 | jest-message-util: 29.7.0 1515 | jest-util: 29.7.0 1516 | jest-worker: 29.7.0 1517 | slash: 3.0.0 1518 | string-length: 4.0.2 1519 | strip-ansi: 6.0.1 1520 | v8-to-istanbul: 9.3.0 1521 | transitivePeerDependencies: 1522 | - supports-color 1523 | 1524 | '@jest/schemas@29.6.3': 1525 | dependencies: 1526 | '@sinclair/typebox': 0.27.8 1527 | 1528 | '@jest/source-map@29.6.3': 1529 | dependencies: 1530 | '@jridgewell/trace-mapping': 0.3.25 1531 | callsites: 3.1.0 1532 | graceful-fs: 4.2.11 1533 | 1534 | '@jest/test-result@29.7.0': 1535 | dependencies: 1536 | '@jest/console': 29.7.0 1537 | '@jest/types': 29.6.3 1538 | '@types/istanbul-lib-coverage': 2.0.6 1539 | collect-v8-coverage: 1.0.2 1540 | 1541 | '@jest/test-sequencer@29.7.0': 1542 | dependencies: 1543 | '@jest/test-result': 29.7.0 1544 | graceful-fs: 4.2.11 1545 | jest-haste-map: 29.7.0 1546 | slash: 3.0.0 1547 | 1548 | '@jest/transform@29.7.0': 1549 | dependencies: 1550 | '@babel/core': 7.26.0 1551 | '@jest/types': 29.6.3 1552 | '@jridgewell/trace-mapping': 0.3.25 1553 | babel-plugin-istanbul: 6.1.1 1554 | chalk: 4.1.2 1555 | convert-source-map: 2.0.0 1556 | fast-json-stable-stringify: 2.1.0 1557 | graceful-fs: 4.2.11 1558 | jest-haste-map: 29.7.0 1559 | jest-regex-util: 29.6.3 1560 | jest-util: 29.7.0 1561 | micromatch: 4.0.8 1562 | pirates: 4.0.6 1563 | slash: 3.0.0 1564 | write-file-atomic: 4.0.2 1565 | transitivePeerDependencies: 1566 | - supports-color 1567 | 1568 | '@jest/types@29.6.3': 1569 | dependencies: 1570 | '@jest/schemas': 29.6.3 1571 | '@types/istanbul-lib-coverage': 2.0.6 1572 | '@types/istanbul-reports': 3.0.4 1573 | '@types/node': 22.10.2 1574 | '@types/yargs': 17.0.33 1575 | chalk: 4.1.2 1576 | 1577 | '@jridgewell/gen-mapping@0.3.8': 1578 | dependencies: 1579 | '@jridgewell/set-array': 1.2.1 1580 | '@jridgewell/sourcemap-codec': 1.5.0 1581 | '@jridgewell/trace-mapping': 0.3.25 1582 | 1583 | '@jridgewell/resolve-uri@3.1.2': {} 1584 | 1585 | '@jridgewell/set-array@1.2.1': {} 1586 | 1587 | '@jridgewell/sourcemap-codec@1.5.0': {} 1588 | 1589 | '@jridgewell/trace-mapping@0.3.25': 1590 | dependencies: 1591 | '@jridgewell/resolve-uri': 3.1.2 1592 | '@jridgewell/sourcemap-codec': 1.5.0 1593 | 1594 | '@sinclair/typebox@0.27.8': {} 1595 | 1596 | '@sinonjs/commons@3.0.1': 1597 | dependencies: 1598 | type-detect: 4.0.8 1599 | 1600 | '@sinonjs/fake-timers@10.3.0': 1601 | dependencies: 1602 | '@sinonjs/commons': 3.0.1 1603 | 1604 | '@ts-morph/common@0.25.0': 1605 | dependencies: 1606 | minimatch: 9.0.5 1607 | path-browserify: 1.0.1 1608 | tinyglobby: 0.2.10 1609 | 1610 | '@types/babel__core@7.20.5': 1611 | dependencies: 1612 | '@babel/parser': 7.26.3 1613 | '@babel/types': 7.26.3 1614 | '@types/babel__generator': 7.6.8 1615 | '@types/babel__template': 7.4.4 1616 | '@types/babel__traverse': 7.20.6 1617 | 1618 | '@types/babel__generator@7.6.8': 1619 | dependencies: 1620 | '@babel/types': 7.26.3 1621 | 1622 | '@types/babel__template@7.4.4': 1623 | dependencies: 1624 | '@babel/parser': 7.26.3 1625 | '@babel/types': 7.26.3 1626 | 1627 | '@types/babel__traverse@7.20.6': 1628 | dependencies: 1629 | '@babel/types': 7.26.3 1630 | 1631 | '@types/graceful-fs@4.1.9': 1632 | dependencies: 1633 | '@types/node': 22.10.2 1634 | 1635 | '@types/istanbul-lib-coverage@2.0.6': {} 1636 | 1637 | '@types/istanbul-lib-report@3.0.3': 1638 | dependencies: 1639 | '@types/istanbul-lib-coverage': 2.0.6 1640 | 1641 | '@types/istanbul-reports@3.0.4': 1642 | dependencies: 1643 | '@types/istanbul-lib-report': 3.0.3 1644 | 1645 | '@types/jest@29.5.14': 1646 | dependencies: 1647 | expect: 29.7.0 1648 | pretty-format: 29.7.0 1649 | 1650 | '@types/node@22.10.2': 1651 | dependencies: 1652 | undici-types: 6.20.0 1653 | 1654 | '@types/stack-utils@2.0.3': {} 1655 | 1656 | '@types/yargs-parser@21.0.3': {} 1657 | 1658 | '@types/yargs@17.0.33': 1659 | dependencies: 1660 | '@types/yargs-parser': 21.0.3 1661 | 1662 | ansi-escapes@4.3.2: 1663 | dependencies: 1664 | type-fest: 0.21.3 1665 | 1666 | ansi-regex@5.0.1: {} 1667 | 1668 | ansi-styles@4.3.0: 1669 | dependencies: 1670 | color-convert: 2.0.1 1671 | 1672 | ansi-styles@5.2.0: {} 1673 | 1674 | anymatch@3.1.3: 1675 | dependencies: 1676 | normalize-path: 3.0.0 1677 | picomatch: 2.3.1 1678 | 1679 | argparse@1.0.10: 1680 | dependencies: 1681 | sprintf-js: 1.0.3 1682 | 1683 | async@3.2.6: {} 1684 | 1685 | babel-jest@29.7.0(@babel/core@7.26.0): 1686 | dependencies: 1687 | '@babel/core': 7.26.0 1688 | '@jest/transform': 29.7.0 1689 | '@types/babel__core': 7.20.5 1690 | babel-plugin-istanbul: 6.1.1 1691 | babel-preset-jest: 29.6.3(@babel/core@7.26.0) 1692 | chalk: 4.1.2 1693 | graceful-fs: 4.2.11 1694 | slash: 3.0.0 1695 | transitivePeerDependencies: 1696 | - supports-color 1697 | 1698 | babel-plugin-istanbul@6.1.1: 1699 | dependencies: 1700 | '@babel/helper-plugin-utils': 7.25.9 1701 | '@istanbuljs/load-nyc-config': 1.1.0 1702 | '@istanbuljs/schema': 0.1.3 1703 | istanbul-lib-instrument: 5.2.1 1704 | test-exclude: 6.0.0 1705 | transitivePeerDependencies: 1706 | - supports-color 1707 | 1708 | babel-plugin-jest-hoist@29.6.3: 1709 | dependencies: 1710 | '@babel/template': 7.25.9 1711 | '@babel/types': 7.26.3 1712 | '@types/babel__core': 7.20.5 1713 | '@types/babel__traverse': 7.20.6 1714 | 1715 | babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): 1716 | dependencies: 1717 | '@babel/core': 7.26.0 1718 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) 1719 | '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) 1720 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) 1721 | '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) 1722 | '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) 1723 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) 1724 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) 1725 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) 1726 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) 1727 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) 1728 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) 1729 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) 1730 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) 1731 | '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) 1732 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) 1733 | 1734 | babel-preset-jest@29.6.3(@babel/core@7.26.0): 1735 | dependencies: 1736 | '@babel/core': 7.26.0 1737 | babel-plugin-jest-hoist: 29.6.3 1738 | babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) 1739 | 1740 | balanced-match@1.0.2: {} 1741 | 1742 | brace-expansion@1.1.11: 1743 | dependencies: 1744 | balanced-match: 1.0.2 1745 | concat-map: 0.0.1 1746 | 1747 | brace-expansion@2.0.1: 1748 | dependencies: 1749 | balanced-match: 1.0.2 1750 | 1751 | braces@3.0.3: 1752 | dependencies: 1753 | fill-range: 7.1.1 1754 | 1755 | browserslist@4.24.3: 1756 | dependencies: 1757 | caniuse-lite: 1.0.30001690 1758 | electron-to-chromium: 1.5.76 1759 | node-releases: 2.0.19 1760 | update-browserslist-db: 1.1.1(browserslist@4.24.3) 1761 | 1762 | bs-logger@0.2.6: 1763 | dependencies: 1764 | fast-json-stable-stringify: 2.1.0 1765 | 1766 | bser@2.1.1: 1767 | dependencies: 1768 | node-int64: 0.4.0 1769 | 1770 | buffer-from@1.1.2: {} 1771 | 1772 | callsites@3.1.0: {} 1773 | 1774 | camelcase@5.3.1: {} 1775 | 1776 | camelcase@6.3.0: {} 1777 | 1778 | caniuse-lite@1.0.30001690: {} 1779 | 1780 | chalk@4.1.2: 1781 | dependencies: 1782 | ansi-styles: 4.3.0 1783 | supports-color: 7.2.0 1784 | 1785 | char-regex@1.0.2: {} 1786 | 1787 | ci-info@3.9.0: {} 1788 | 1789 | cjs-module-lexer@1.4.1: {} 1790 | 1791 | cliui@8.0.1: 1792 | dependencies: 1793 | string-width: 4.2.3 1794 | strip-ansi: 6.0.1 1795 | wrap-ansi: 7.0.0 1796 | 1797 | co@4.6.0: {} 1798 | 1799 | code-block-writer@13.0.3: {} 1800 | 1801 | collect-v8-coverage@1.0.2: {} 1802 | 1803 | color-convert@2.0.1: 1804 | dependencies: 1805 | color-name: 1.1.4 1806 | 1807 | color-name@1.1.4: {} 1808 | 1809 | concat-map@0.0.1: {} 1810 | 1811 | convert-source-map@2.0.0: {} 1812 | 1813 | create-jest@29.7.0(@types/node@22.10.2): 1814 | dependencies: 1815 | '@jest/types': 29.6.3 1816 | chalk: 4.1.2 1817 | exit: 0.1.2 1818 | graceful-fs: 4.2.11 1819 | jest-config: 29.7.0(@types/node@22.10.2) 1820 | jest-util: 29.7.0 1821 | prompts: 2.4.2 1822 | transitivePeerDependencies: 1823 | - '@types/node' 1824 | - babel-plugin-macros 1825 | - supports-color 1826 | - ts-node 1827 | 1828 | cross-spawn@7.0.6: 1829 | dependencies: 1830 | path-key: 3.1.1 1831 | shebang-command: 2.0.0 1832 | which: 2.0.2 1833 | 1834 | debug@4.4.0: 1835 | dependencies: 1836 | ms: 2.1.3 1837 | 1838 | dedent@1.5.3: {} 1839 | 1840 | deepmerge@4.3.1: {} 1841 | 1842 | detect-newline@3.1.0: {} 1843 | 1844 | diff-sequences@29.6.3: {} 1845 | 1846 | ejs@3.1.10: 1847 | dependencies: 1848 | jake: 10.9.2 1849 | 1850 | electron-to-chromium@1.5.76: {} 1851 | 1852 | emittery@0.13.1: {} 1853 | 1854 | emoji-regex@8.0.0: {} 1855 | 1856 | error-ex@1.3.2: 1857 | dependencies: 1858 | is-arrayish: 0.2.1 1859 | 1860 | escalade@3.2.0: {} 1861 | 1862 | escape-string-regexp@2.0.0: {} 1863 | 1864 | esprima@4.0.1: {} 1865 | 1866 | execa@5.1.1: 1867 | dependencies: 1868 | cross-spawn: 7.0.6 1869 | get-stream: 6.0.1 1870 | human-signals: 2.1.0 1871 | is-stream: 2.0.1 1872 | merge-stream: 2.0.0 1873 | npm-run-path: 4.0.1 1874 | onetime: 5.1.2 1875 | signal-exit: 3.0.7 1876 | strip-final-newline: 2.0.0 1877 | 1878 | exit@0.1.2: {} 1879 | 1880 | expect@29.7.0: 1881 | dependencies: 1882 | '@jest/expect-utils': 29.7.0 1883 | jest-get-type: 29.6.3 1884 | jest-matcher-utils: 29.7.0 1885 | jest-message-util: 29.7.0 1886 | jest-util: 29.7.0 1887 | 1888 | fast-json-stable-stringify@2.1.0: {} 1889 | 1890 | fb-watchman@2.0.2: 1891 | dependencies: 1892 | bser: 2.1.1 1893 | 1894 | fdir@6.4.2(picomatch@4.0.2): 1895 | optionalDependencies: 1896 | picomatch: 4.0.2 1897 | 1898 | filelist@1.0.4: 1899 | dependencies: 1900 | minimatch: 5.1.6 1901 | 1902 | fill-range@7.1.1: 1903 | dependencies: 1904 | to-regex-range: 5.0.1 1905 | 1906 | find-up@4.1.0: 1907 | dependencies: 1908 | locate-path: 5.0.0 1909 | path-exists: 4.0.0 1910 | 1911 | fs.realpath@1.0.0: {} 1912 | 1913 | fsevents@2.3.3: 1914 | optional: true 1915 | 1916 | function-bind@1.1.2: {} 1917 | 1918 | gensync@1.0.0-beta.2: {} 1919 | 1920 | get-caller-file@2.0.5: {} 1921 | 1922 | get-package-type@0.1.0: {} 1923 | 1924 | get-stream@6.0.1: {} 1925 | 1926 | glob@7.2.3: 1927 | dependencies: 1928 | fs.realpath: 1.0.0 1929 | inflight: 1.0.6 1930 | inherits: 2.0.4 1931 | minimatch: 3.1.2 1932 | once: 1.4.0 1933 | path-is-absolute: 1.0.1 1934 | 1935 | globals@11.12.0: {} 1936 | 1937 | graceful-fs@4.2.11: {} 1938 | 1939 | has-flag@4.0.0: {} 1940 | 1941 | hasown@2.0.2: 1942 | dependencies: 1943 | function-bind: 1.1.2 1944 | 1945 | html-escaper@2.0.2: {} 1946 | 1947 | human-signals@2.1.0: {} 1948 | 1949 | import-local@3.2.0: 1950 | dependencies: 1951 | pkg-dir: 4.2.0 1952 | resolve-cwd: 3.0.0 1953 | 1954 | imurmurhash@0.1.4: {} 1955 | 1956 | inflight@1.0.6: 1957 | dependencies: 1958 | once: 1.4.0 1959 | wrappy: 1.0.2 1960 | 1961 | inherits@2.0.4: {} 1962 | 1963 | is-arrayish@0.2.1: {} 1964 | 1965 | is-core-module@2.16.1: 1966 | dependencies: 1967 | hasown: 2.0.2 1968 | 1969 | is-fullwidth-code-point@3.0.0: {} 1970 | 1971 | is-generator-fn@2.1.0: {} 1972 | 1973 | is-number@7.0.0: {} 1974 | 1975 | is-stream@2.0.1: {} 1976 | 1977 | isexe@2.0.0: {} 1978 | 1979 | istanbul-lib-coverage@3.2.2: {} 1980 | 1981 | istanbul-lib-instrument@5.2.1: 1982 | dependencies: 1983 | '@babel/core': 7.26.0 1984 | '@babel/parser': 7.26.3 1985 | '@istanbuljs/schema': 0.1.3 1986 | istanbul-lib-coverage: 3.2.2 1987 | semver: 6.3.1 1988 | transitivePeerDependencies: 1989 | - supports-color 1990 | 1991 | istanbul-lib-instrument@6.0.3: 1992 | dependencies: 1993 | '@babel/core': 7.26.0 1994 | '@babel/parser': 7.26.3 1995 | '@istanbuljs/schema': 0.1.3 1996 | istanbul-lib-coverage: 3.2.2 1997 | semver: 7.6.3 1998 | transitivePeerDependencies: 1999 | - supports-color 2000 | 2001 | istanbul-lib-report@3.0.1: 2002 | dependencies: 2003 | istanbul-lib-coverage: 3.2.2 2004 | make-dir: 4.0.0 2005 | supports-color: 7.2.0 2006 | 2007 | istanbul-lib-source-maps@4.0.1: 2008 | dependencies: 2009 | debug: 4.4.0 2010 | istanbul-lib-coverage: 3.2.2 2011 | source-map: 0.6.1 2012 | transitivePeerDependencies: 2013 | - supports-color 2014 | 2015 | istanbul-reports@3.1.7: 2016 | dependencies: 2017 | html-escaper: 2.0.2 2018 | istanbul-lib-report: 3.0.1 2019 | 2020 | jake@10.9.2: 2021 | dependencies: 2022 | async: 3.2.6 2023 | chalk: 4.1.2 2024 | filelist: 1.0.4 2025 | minimatch: 3.1.2 2026 | 2027 | jest-changed-files@29.7.0: 2028 | dependencies: 2029 | execa: 5.1.1 2030 | jest-util: 29.7.0 2031 | p-limit: 3.1.0 2032 | 2033 | jest-circus@29.7.0: 2034 | dependencies: 2035 | '@jest/environment': 29.7.0 2036 | '@jest/expect': 29.7.0 2037 | '@jest/test-result': 29.7.0 2038 | '@jest/types': 29.6.3 2039 | '@types/node': 22.10.2 2040 | chalk: 4.1.2 2041 | co: 4.6.0 2042 | dedent: 1.5.3 2043 | is-generator-fn: 2.1.0 2044 | jest-each: 29.7.0 2045 | jest-matcher-utils: 29.7.0 2046 | jest-message-util: 29.7.0 2047 | jest-runtime: 29.7.0 2048 | jest-snapshot: 29.7.0 2049 | jest-util: 29.7.0 2050 | p-limit: 3.1.0 2051 | pretty-format: 29.7.0 2052 | pure-rand: 6.1.0 2053 | slash: 3.0.0 2054 | stack-utils: 2.0.6 2055 | transitivePeerDependencies: 2056 | - babel-plugin-macros 2057 | - supports-color 2058 | 2059 | jest-cli@29.7.0(@types/node@22.10.2): 2060 | dependencies: 2061 | '@jest/core': 29.7.0 2062 | '@jest/test-result': 29.7.0 2063 | '@jest/types': 29.6.3 2064 | chalk: 4.1.2 2065 | create-jest: 29.7.0(@types/node@22.10.2) 2066 | exit: 0.1.2 2067 | import-local: 3.2.0 2068 | jest-config: 29.7.0(@types/node@22.10.2) 2069 | jest-util: 29.7.0 2070 | jest-validate: 29.7.0 2071 | yargs: 17.7.2 2072 | transitivePeerDependencies: 2073 | - '@types/node' 2074 | - babel-plugin-macros 2075 | - supports-color 2076 | - ts-node 2077 | 2078 | jest-config@29.7.0(@types/node@22.10.2): 2079 | dependencies: 2080 | '@babel/core': 7.26.0 2081 | '@jest/test-sequencer': 29.7.0 2082 | '@jest/types': 29.6.3 2083 | babel-jest: 29.7.0(@babel/core@7.26.0) 2084 | chalk: 4.1.2 2085 | ci-info: 3.9.0 2086 | deepmerge: 4.3.1 2087 | glob: 7.2.3 2088 | graceful-fs: 4.2.11 2089 | jest-circus: 29.7.0 2090 | jest-environment-node: 29.7.0 2091 | jest-get-type: 29.6.3 2092 | jest-regex-util: 29.6.3 2093 | jest-resolve: 29.7.0 2094 | jest-runner: 29.7.0 2095 | jest-util: 29.7.0 2096 | jest-validate: 29.7.0 2097 | micromatch: 4.0.8 2098 | parse-json: 5.2.0 2099 | pretty-format: 29.7.0 2100 | slash: 3.0.0 2101 | strip-json-comments: 3.1.1 2102 | optionalDependencies: 2103 | '@types/node': 22.10.2 2104 | transitivePeerDependencies: 2105 | - babel-plugin-macros 2106 | - supports-color 2107 | 2108 | jest-diff@29.7.0: 2109 | dependencies: 2110 | chalk: 4.1.2 2111 | diff-sequences: 29.6.3 2112 | jest-get-type: 29.6.3 2113 | pretty-format: 29.7.0 2114 | 2115 | jest-docblock@29.7.0: 2116 | dependencies: 2117 | detect-newline: 3.1.0 2118 | 2119 | jest-each@29.7.0: 2120 | dependencies: 2121 | '@jest/types': 29.6.3 2122 | chalk: 4.1.2 2123 | jest-get-type: 29.6.3 2124 | jest-util: 29.7.0 2125 | pretty-format: 29.7.0 2126 | 2127 | jest-environment-node@29.7.0: 2128 | dependencies: 2129 | '@jest/environment': 29.7.0 2130 | '@jest/fake-timers': 29.7.0 2131 | '@jest/types': 29.6.3 2132 | '@types/node': 22.10.2 2133 | jest-mock: 29.7.0 2134 | jest-util: 29.7.0 2135 | 2136 | jest-get-type@29.6.3: {} 2137 | 2138 | jest-haste-map@29.7.0: 2139 | dependencies: 2140 | '@jest/types': 29.6.3 2141 | '@types/graceful-fs': 4.1.9 2142 | '@types/node': 22.10.2 2143 | anymatch: 3.1.3 2144 | fb-watchman: 2.0.2 2145 | graceful-fs: 4.2.11 2146 | jest-regex-util: 29.6.3 2147 | jest-util: 29.7.0 2148 | jest-worker: 29.7.0 2149 | micromatch: 4.0.8 2150 | walker: 1.0.8 2151 | optionalDependencies: 2152 | fsevents: 2.3.3 2153 | 2154 | jest-leak-detector@29.7.0: 2155 | dependencies: 2156 | jest-get-type: 29.6.3 2157 | pretty-format: 29.7.0 2158 | 2159 | jest-matcher-utils@29.7.0: 2160 | dependencies: 2161 | chalk: 4.1.2 2162 | jest-diff: 29.7.0 2163 | jest-get-type: 29.6.3 2164 | pretty-format: 29.7.0 2165 | 2166 | jest-message-util@29.7.0: 2167 | dependencies: 2168 | '@babel/code-frame': 7.26.2 2169 | '@jest/types': 29.6.3 2170 | '@types/stack-utils': 2.0.3 2171 | chalk: 4.1.2 2172 | graceful-fs: 4.2.11 2173 | micromatch: 4.0.8 2174 | pretty-format: 29.7.0 2175 | slash: 3.0.0 2176 | stack-utils: 2.0.6 2177 | 2178 | jest-mock@29.7.0: 2179 | dependencies: 2180 | '@jest/types': 29.6.3 2181 | '@types/node': 22.10.2 2182 | jest-util: 29.7.0 2183 | 2184 | jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): 2185 | optionalDependencies: 2186 | jest-resolve: 29.7.0 2187 | 2188 | jest-regex-util@29.6.3: {} 2189 | 2190 | jest-resolve-dependencies@29.7.0: 2191 | dependencies: 2192 | jest-regex-util: 29.6.3 2193 | jest-snapshot: 29.7.0 2194 | transitivePeerDependencies: 2195 | - supports-color 2196 | 2197 | jest-resolve@29.7.0: 2198 | dependencies: 2199 | chalk: 4.1.2 2200 | graceful-fs: 4.2.11 2201 | jest-haste-map: 29.7.0 2202 | jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) 2203 | jest-util: 29.7.0 2204 | jest-validate: 29.7.0 2205 | resolve: 1.22.10 2206 | resolve.exports: 2.0.3 2207 | slash: 3.0.0 2208 | 2209 | jest-runner@29.7.0: 2210 | dependencies: 2211 | '@jest/console': 29.7.0 2212 | '@jest/environment': 29.7.0 2213 | '@jest/test-result': 29.7.0 2214 | '@jest/transform': 29.7.0 2215 | '@jest/types': 29.6.3 2216 | '@types/node': 22.10.2 2217 | chalk: 4.1.2 2218 | emittery: 0.13.1 2219 | graceful-fs: 4.2.11 2220 | jest-docblock: 29.7.0 2221 | jest-environment-node: 29.7.0 2222 | jest-haste-map: 29.7.0 2223 | jest-leak-detector: 29.7.0 2224 | jest-message-util: 29.7.0 2225 | jest-resolve: 29.7.0 2226 | jest-runtime: 29.7.0 2227 | jest-util: 29.7.0 2228 | jest-watcher: 29.7.0 2229 | jest-worker: 29.7.0 2230 | p-limit: 3.1.0 2231 | source-map-support: 0.5.13 2232 | transitivePeerDependencies: 2233 | - supports-color 2234 | 2235 | jest-runtime@29.7.0: 2236 | dependencies: 2237 | '@jest/environment': 29.7.0 2238 | '@jest/fake-timers': 29.7.0 2239 | '@jest/globals': 29.7.0 2240 | '@jest/source-map': 29.6.3 2241 | '@jest/test-result': 29.7.0 2242 | '@jest/transform': 29.7.0 2243 | '@jest/types': 29.6.3 2244 | '@types/node': 22.10.2 2245 | chalk: 4.1.2 2246 | cjs-module-lexer: 1.4.1 2247 | collect-v8-coverage: 1.0.2 2248 | glob: 7.2.3 2249 | graceful-fs: 4.2.11 2250 | jest-haste-map: 29.7.0 2251 | jest-message-util: 29.7.0 2252 | jest-mock: 29.7.0 2253 | jest-regex-util: 29.6.3 2254 | jest-resolve: 29.7.0 2255 | jest-snapshot: 29.7.0 2256 | jest-util: 29.7.0 2257 | slash: 3.0.0 2258 | strip-bom: 4.0.0 2259 | transitivePeerDependencies: 2260 | - supports-color 2261 | 2262 | jest-snapshot@29.7.0: 2263 | dependencies: 2264 | '@babel/core': 7.26.0 2265 | '@babel/generator': 7.26.3 2266 | '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) 2267 | '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) 2268 | '@babel/types': 7.26.3 2269 | '@jest/expect-utils': 29.7.0 2270 | '@jest/transform': 29.7.0 2271 | '@jest/types': 29.6.3 2272 | babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) 2273 | chalk: 4.1.2 2274 | expect: 29.7.0 2275 | graceful-fs: 4.2.11 2276 | jest-diff: 29.7.0 2277 | jest-get-type: 29.6.3 2278 | jest-matcher-utils: 29.7.0 2279 | jest-message-util: 29.7.0 2280 | jest-util: 29.7.0 2281 | natural-compare: 1.4.0 2282 | pretty-format: 29.7.0 2283 | semver: 7.6.3 2284 | transitivePeerDependencies: 2285 | - supports-color 2286 | 2287 | jest-util@29.7.0: 2288 | dependencies: 2289 | '@jest/types': 29.6.3 2290 | '@types/node': 22.10.2 2291 | chalk: 4.1.2 2292 | ci-info: 3.9.0 2293 | graceful-fs: 4.2.11 2294 | picomatch: 2.3.1 2295 | 2296 | jest-validate@29.7.0: 2297 | dependencies: 2298 | '@jest/types': 29.6.3 2299 | camelcase: 6.3.0 2300 | chalk: 4.1.2 2301 | jest-get-type: 29.6.3 2302 | leven: 3.1.0 2303 | pretty-format: 29.7.0 2304 | 2305 | jest-watcher@29.7.0: 2306 | dependencies: 2307 | '@jest/test-result': 29.7.0 2308 | '@jest/types': 29.6.3 2309 | '@types/node': 22.10.2 2310 | ansi-escapes: 4.3.2 2311 | chalk: 4.1.2 2312 | emittery: 0.13.1 2313 | jest-util: 29.7.0 2314 | string-length: 4.0.2 2315 | 2316 | jest-worker@29.7.0: 2317 | dependencies: 2318 | '@types/node': 22.10.2 2319 | jest-util: 29.7.0 2320 | merge-stream: 2.0.0 2321 | supports-color: 8.1.1 2322 | 2323 | jest@29.7.0(@types/node@22.10.2): 2324 | dependencies: 2325 | '@jest/core': 29.7.0 2326 | '@jest/types': 29.6.3 2327 | import-local: 3.2.0 2328 | jest-cli: 29.7.0(@types/node@22.10.2) 2329 | transitivePeerDependencies: 2330 | - '@types/node' 2331 | - babel-plugin-macros 2332 | - supports-color 2333 | - ts-node 2334 | 2335 | js-tokens@4.0.0: {} 2336 | 2337 | js-yaml@3.14.1: 2338 | dependencies: 2339 | argparse: 1.0.10 2340 | esprima: 4.0.1 2341 | 2342 | jsesc@3.1.0: {} 2343 | 2344 | json-parse-even-better-errors@2.3.1: {} 2345 | 2346 | json5@2.2.3: {} 2347 | 2348 | kleur@3.0.3: {} 2349 | 2350 | leven@3.1.0: {} 2351 | 2352 | lines-and-columns@1.2.4: {} 2353 | 2354 | locate-path@5.0.0: 2355 | dependencies: 2356 | p-locate: 4.1.0 2357 | 2358 | lodash.memoize@4.1.2: {} 2359 | 2360 | lru-cache@5.1.1: 2361 | dependencies: 2362 | yallist: 3.1.1 2363 | 2364 | make-dir@4.0.0: 2365 | dependencies: 2366 | semver: 7.6.3 2367 | 2368 | make-error@1.3.6: {} 2369 | 2370 | makeerror@1.0.12: 2371 | dependencies: 2372 | tmpl: 1.0.5 2373 | 2374 | merge-stream@2.0.0: {} 2375 | 2376 | micromatch@4.0.8: 2377 | dependencies: 2378 | braces: 3.0.3 2379 | picomatch: 2.3.1 2380 | 2381 | mimic-fn@2.1.0: {} 2382 | 2383 | minimatch@3.1.2: 2384 | dependencies: 2385 | brace-expansion: 1.1.11 2386 | 2387 | minimatch@5.1.6: 2388 | dependencies: 2389 | brace-expansion: 2.0.1 2390 | 2391 | minimatch@9.0.5: 2392 | dependencies: 2393 | brace-expansion: 2.0.1 2394 | 2395 | ms@2.1.3: {} 2396 | 2397 | natural-compare@1.4.0: {} 2398 | 2399 | node-int64@0.4.0: {} 2400 | 2401 | node-releases@2.0.19: {} 2402 | 2403 | normalize-path@3.0.0: {} 2404 | 2405 | npm-run-path@4.0.1: 2406 | dependencies: 2407 | path-key: 3.1.1 2408 | 2409 | once@1.4.0: 2410 | dependencies: 2411 | wrappy: 1.0.2 2412 | 2413 | onetime@5.1.2: 2414 | dependencies: 2415 | mimic-fn: 2.1.0 2416 | 2417 | p-limit@2.3.0: 2418 | dependencies: 2419 | p-try: 2.2.0 2420 | 2421 | p-limit@3.1.0: 2422 | dependencies: 2423 | yocto-queue: 0.1.0 2424 | 2425 | p-locate@4.1.0: 2426 | dependencies: 2427 | p-limit: 2.3.0 2428 | 2429 | p-try@2.2.0: {} 2430 | 2431 | parse-json@5.2.0: 2432 | dependencies: 2433 | '@babel/code-frame': 7.26.2 2434 | error-ex: 1.3.2 2435 | json-parse-even-better-errors: 2.3.1 2436 | lines-and-columns: 1.2.4 2437 | 2438 | path-browserify@1.0.1: {} 2439 | 2440 | path-exists@4.0.0: {} 2441 | 2442 | path-is-absolute@1.0.1: {} 2443 | 2444 | path-key@3.1.1: {} 2445 | 2446 | path-parse@1.0.7: {} 2447 | 2448 | picocolors@1.1.1: {} 2449 | 2450 | picomatch@2.3.1: {} 2451 | 2452 | picomatch@4.0.2: {} 2453 | 2454 | pirates@4.0.6: {} 2455 | 2456 | pkg-dir@4.2.0: 2457 | dependencies: 2458 | find-up: 4.1.0 2459 | 2460 | pretty-format@29.7.0: 2461 | dependencies: 2462 | '@jest/schemas': 29.6.3 2463 | ansi-styles: 5.2.0 2464 | react-is: 18.3.1 2465 | 2466 | prompts@2.4.2: 2467 | dependencies: 2468 | kleur: 3.0.3 2469 | sisteransi: 1.0.5 2470 | 2471 | pure-rand@6.1.0: {} 2472 | 2473 | react-is@18.3.1: {} 2474 | 2475 | require-directory@2.1.1: {} 2476 | 2477 | resolve-cwd@3.0.0: 2478 | dependencies: 2479 | resolve-from: 5.0.0 2480 | 2481 | resolve-from@5.0.0: {} 2482 | 2483 | resolve.exports@2.0.3: {} 2484 | 2485 | resolve@1.22.10: 2486 | dependencies: 2487 | is-core-module: 2.16.1 2488 | path-parse: 1.0.7 2489 | supports-preserve-symlinks-flag: 1.0.0 2490 | 2491 | semver@6.3.1: {} 2492 | 2493 | semver@7.6.3: {} 2494 | 2495 | shebang-command@2.0.0: 2496 | dependencies: 2497 | shebang-regex: 3.0.0 2498 | 2499 | shebang-regex@3.0.0: {} 2500 | 2501 | signal-exit@3.0.7: {} 2502 | 2503 | sisteransi@1.0.5: {} 2504 | 2505 | slash@3.0.0: {} 2506 | 2507 | source-map-support@0.5.13: 2508 | dependencies: 2509 | buffer-from: 1.1.2 2510 | source-map: 0.6.1 2511 | 2512 | source-map@0.6.1: {} 2513 | 2514 | sprintf-js@1.0.3: {} 2515 | 2516 | stack-utils@2.0.6: 2517 | dependencies: 2518 | escape-string-regexp: 2.0.0 2519 | 2520 | string-length@4.0.2: 2521 | dependencies: 2522 | char-regex: 1.0.2 2523 | strip-ansi: 6.0.1 2524 | 2525 | string-width@4.2.3: 2526 | dependencies: 2527 | emoji-regex: 8.0.0 2528 | is-fullwidth-code-point: 3.0.0 2529 | strip-ansi: 6.0.1 2530 | 2531 | strip-ansi@6.0.1: 2532 | dependencies: 2533 | ansi-regex: 5.0.1 2534 | 2535 | strip-bom@4.0.0: {} 2536 | 2537 | strip-final-newline@2.0.0: {} 2538 | 2539 | strip-json-comments@3.1.1: {} 2540 | 2541 | supports-color@7.2.0: 2542 | dependencies: 2543 | has-flag: 4.0.0 2544 | 2545 | supports-color@8.1.1: 2546 | dependencies: 2547 | has-flag: 4.0.0 2548 | 2549 | supports-preserve-symlinks-flag@1.0.0: {} 2550 | 2551 | test-exclude@6.0.0: 2552 | dependencies: 2553 | '@istanbuljs/schema': 0.1.3 2554 | glob: 7.2.3 2555 | minimatch: 3.1.2 2556 | 2557 | tinyglobby@0.2.10: 2558 | dependencies: 2559 | fdir: 6.4.2(picomatch@4.0.2) 2560 | picomatch: 4.0.2 2561 | 2562 | tmpl@1.0.5: {} 2563 | 2564 | to-regex-range@5.0.1: 2565 | dependencies: 2566 | is-number: 7.0.0 2567 | 2568 | ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.10.2))(typescript@5.7.2): 2569 | dependencies: 2570 | bs-logger: 0.2.6 2571 | ejs: 3.1.10 2572 | fast-json-stable-stringify: 2.1.0 2573 | jest: 29.7.0(@types/node@22.10.2) 2574 | jest-util: 29.7.0 2575 | json5: 2.2.3 2576 | lodash.memoize: 4.1.2 2577 | make-error: 1.3.6 2578 | semver: 7.6.3 2579 | typescript: 5.7.2 2580 | yargs-parser: 21.1.1 2581 | optionalDependencies: 2582 | '@babel/core': 7.26.0 2583 | '@jest/transform': 29.7.0 2584 | '@jest/types': 29.6.3 2585 | babel-jest: 29.7.0(@babel/core@7.26.0) 2586 | 2587 | ts-morph@24.0.0: 2588 | dependencies: 2589 | '@ts-morph/common': 0.25.0 2590 | code-block-writer: 13.0.3 2591 | 2592 | type-detect@4.0.8: {} 2593 | 2594 | type-fest@0.21.3: {} 2595 | 2596 | typescript@5.7.2: {} 2597 | 2598 | undici-types@6.20.0: {} 2599 | 2600 | update-browserslist-db@1.1.1(browserslist@4.24.3): 2601 | dependencies: 2602 | browserslist: 4.24.3 2603 | escalade: 3.2.0 2604 | picocolors: 1.1.1 2605 | 2606 | v8-to-istanbul@9.3.0: 2607 | dependencies: 2608 | '@jridgewell/trace-mapping': 0.3.25 2609 | '@types/istanbul-lib-coverage': 2.0.6 2610 | convert-source-map: 2.0.0 2611 | 2612 | walker@1.0.8: 2613 | dependencies: 2614 | makeerror: 1.0.12 2615 | 2616 | which@2.0.2: 2617 | dependencies: 2618 | isexe: 2.0.0 2619 | 2620 | wrap-ansi@7.0.0: 2621 | dependencies: 2622 | ansi-styles: 4.3.0 2623 | string-width: 4.2.3 2624 | strip-ansi: 6.0.1 2625 | 2626 | wrappy@1.0.2: {} 2627 | 2628 | write-file-atomic@4.0.2: 2629 | dependencies: 2630 | imurmurhash: 0.1.4 2631 | signal-exit: 3.0.7 2632 | 2633 | y18n@5.0.8: {} 2634 | 2635 | yallist@3.1.1: {} 2636 | 2637 | yargs-parser@21.1.1: {} 2638 | 2639 | yargs@17.7.2: 2640 | dependencies: 2641 | cliui: 8.0.1 2642 | escalade: 3.2.0 2643 | get-caller-file: 2.0.5 2644 | require-directory: 2.1.1 2645 | string-width: 4.2.3 2646 | y18n: 5.0.8 2647 | yargs-parser: 21.1.1 2648 | 2649 | yocto-queue@0.1.0: {} 2650 | --------------------------------------------------------------------------------