├── .npmrc ├── .prettierignore ├── .gitignore ├── .prettierrc.json ├── .gitattributes ├── pnpm-workspace.yaml ├── tsconfig.json ├── vitest.config.ts ├── rollup.config.js ├── .github ├── dependabot.yaml └── workflows │ ├── build.yaml │ └── test.yaml ├── lefthook.yaml ├── src ├── action.ts ├── utils.ts ├── exec.test.ts ├── exec.ts ├── cmake.ts ├── context.ts ├── cmake.test.ts └── context.test.ts ├── eslint.config.ts ├── package.json ├── LICENSE ├── action.yml ├── README.md ├── dist └── action.mjs └── pnpm-lock.yaml /.npmrc: -------------------------------------------------------------------------------- 1 | use-node-version=24.7.0 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | pnpm-lock.yaml 3 | README.md 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .* 2 | !.git* 3 | !.npmrc 4 | !.prettier* 5 | 6 | node_modules/ 7 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["prettier-plugin-organize-imports"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | dist/** -diff linguist-generated 2 | pnpm-lock.yaml -diff linguist-generated 3 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - . 3 | 4 | onlyBuiltDependencies: 5 | - esbuild 6 | - lefthook 7 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/node24", 3 | "compilerOptions": { 4 | "module": "node16", 5 | "noEmit": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitest/config"; 2 | 3 | export default defineConfig({ 4 | test: { 5 | coverage: { 6 | all: false, 7 | enabled: true, 8 | reporter: ["text"], 9 | thresholds: { 100: true }, 10 | }, 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import { nodeResolve } from "@rollup/plugin-node-resolve"; 2 | import typescript from "@rollup/plugin-typescript"; 3 | 4 | export default { 5 | input: "src/action.ts", 6 | output: { 7 | dir: "dist", 8 | entryFileNames: "[name].mjs", 9 | }, 10 | plugins: [nodeResolve(), typescript()], 11 | }; 12 | -------------------------------------------------------------------------------- /.github/dependabot.yaml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: / 5 | schedule: 6 | interval: daily 7 | commit-message: 8 | prefix: chore 9 | labels: [] 10 | 11 | - package-ecosystem: npm 12 | directory: / 13 | schedule: 14 | interval: daily 15 | commit-message: 16 | prefix: chore 17 | labels: [] 18 | versioning-strategy: increase 19 | -------------------------------------------------------------------------------- /lefthook.yaml: -------------------------------------------------------------------------------- 1 | pre-commit: 2 | piped: true 3 | jobs: 4 | - name: install dependencies 5 | run: pnpm install 6 | 7 | - name: check types 8 | run: pnpm tsc 9 | 10 | - name: fix formatting 11 | run: pnpm prettier --write . 12 | 13 | - name: fix lint 14 | run: pnpm eslint --fix 15 | 16 | - name: build action 17 | run: pnpm rollup -c 18 | 19 | - name: check diff 20 | run: git diff --exit-code dist pnpm-lock.yaml {staged_files} 21 | -------------------------------------------------------------------------------- /src/action.ts: -------------------------------------------------------------------------------- 1 | import { logError, setOutput } from "gha-utils"; 2 | import { buildProject, configureProject } from "./cmake.js"; 3 | import { getContext } from "./context.js"; 4 | 5 | try { 6 | const context = getContext(); 7 | 8 | await configureProject(context); 9 | 10 | await setOutput("build-dir", context.buildDir); 11 | 12 | if (context.build.enabled) { 13 | await buildProject(context); 14 | } 15 | } catch (err) { 16 | logError(err); 17 | process.exit(1); 18 | } 19 | -------------------------------------------------------------------------------- /eslint.config.ts: -------------------------------------------------------------------------------- 1 | import eslint from "@eslint/js"; 2 | import { defineConfig, globalIgnores } from "eslint/config"; 3 | import tseslint from "typescript-eslint"; 4 | 5 | export default defineConfig( 6 | globalIgnores(["dist"]), 7 | eslint.configs.recommended, 8 | tseslint.configs.strictTypeChecked, 9 | tseslint.configs.stylisticTypeChecked, 10 | { 11 | languageOptions: { 12 | parserOptions: { 13 | projectService: { 14 | allowDefaultProject: ["rollup.config.js"], 15 | }, 16 | tsconfigRootDir: import.meta.dirname, 17 | }, 18 | }, 19 | }, 20 | ); 21 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | const regex = /"([^"]*)"|'([^']*)'|`([^`]*)`|(\S+)/g; 2 | 3 | /** 4 | * Converts a space-separated string into a list of arguments. 5 | * 6 | * This function parses the provided string, which contains arguments separated by spaces and possibly enclosed in quotes, into a list of arguments. 7 | * 8 | * @param str - The space-separated string to parse. 9 | * @returns A list of arguments. 10 | */ 11 | export function parse(str: string): string[] { 12 | const args: string[] = []; 13 | let match: RegExpExecArray | null; 14 | while ((match = regex.exec(str)) !== null) { 15 | args.push(match[1] || match[2] || match[3] || match[4]); 16 | } 17 | return args; 18 | } 19 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "root", 3 | "private": true, 4 | "type": "module", 5 | "scripts": { 6 | "test": "vitest run" 7 | }, 8 | "dependencies": { 9 | "gha-utils": "^0.4.1" 10 | }, 11 | "devDependencies": { 12 | "@eslint/js": "^9.35.0", 13 | "@rollup/plugin-node-resolve": "^16.0.1", 14 | "@rollup/plugin-typescript": "^12.1.4", 15 | "@tsconfig/node24": "^24.0.1", 16 | "@types/node": "^24.3.0", 17 | "@vitest/coverage-v8": "^3.1.4", 18 | "eslint": "^9.34.0", 19 | "jiti": "^2.5.1", 20 | "lefthook": "^1.12.3", 21 | "prettier": "^3.6.2", 22 | "prettier-plugin-organize-imports": "^4.2.0", 23 | "rollup": "^4.46.2", 24 | "typescript": "^5.9.2", 25 | "typescript-eslint": "^8.42.0", 26 | "vitest": "^3.1.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: Build 2 | on: 3 | workflow_dispatch: 4 | pull_request: 5 | push: 6 | branches: [main] 7 | jobs: 8 | build-action: 9 | name: Build Action 10 | runs-on: ubuntu-24.04 11 | steps: 12 | - name: Checkout Project 13 | uses: actions/checkout@v5.0.0 14 | 15 | - name: Setup pnpm 16 | uses: threeal/setup-pnpm-action@v1.0.0 17 | 18 | - name: Install Dependencies 19 | run: pnpm install 20 | 21 | - name: Check Types 22 | run: pnpm tsc 23 | 24 | - name: Test Action 25 | run: pnpm test 26 | 27 | - name: Check Formatting 28 | run: pnpm prettier --check . 29 | 30 | - name: Check Lint 31 | run: pnpm eslint 32 | 33 | - name: Build Action 34 | run: pnpm rollup -c && git diff --exit-code dist 35 | -------------------------------------------------------------------------------- /src/exec.test.ts: -------------------------------------------------------------------------------- 1 | import { logCommand } from "gha-utils"; 2 | import { beforeEach, describe, expect, it, vi } from "vitest"; 3 | import { exec } from "./exec.js"; 4 | 5 | describe("execute commands", () => { 6 | vi.mock("gha-utils", () => ({ 7 | logCommand: vi.fn<(command: string, ...args: string[]) => void>(), 8 | })); 9 | 10 | beforeEach(() => { 11 | vi.mocked(logCommand).mockClear(); 12 | }); 13 | 14 | it("should successfully execute a command", async () => { 15 | await exec("node", ["--version"]); 16 | 17 | expect(logCommand).toHaveBeenCalledTimes(1); 18 | expect(logCommand).toHaveBeenCalledWith("node", "--version"); 19 | }); 20 | 21 | it("should fail to execute a command", async () => { 22 | await expect(exec("node", ["--invalid"])).rejects.toThrow( 23 | "Command exited with status code 9", 24 | ); 25 | 26 | expect(logCommand).toHaveBeenCalledTimes(1); 27 | expect(logCommand).toHaveBeenCalledWith("node", "--invalid"); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /src/exec.ts: -------------------------------------------------------------------------------- 1 | import { logCommand } from "gha-utils"; 2 | import { spawn } from "node:child_process"; 3 | 4 | /** 5 | * Executes a command with the given arguments. 6 | * 7 | * The command is executed with `stdin` ignored and both `stdout` and `stderr` inherited by the parent process. 8 | * 9 | * @param command The command to execute. 10 | * @param args The arguments to pass to the command. 11 | * @returns A promise that resolves when the command exits successfully or rejects if it exits with a non-zero status code or encounters an error. 12 | */ 13 | export async function exec(command: string, args: string[]): Promise { 14 | return new Promise((resolve, reject) => { 15 | const proc = spawn(command, args, { 16 | stdio: ["ignore", "inherit", "inherit"], 17 | }); 18 | logCommand(proc.spawnfile, ...proc.spawnargs.splice(1)); 19 | proc.on("error", reject); 20 | proc.on("close", (code: number) => { 21 | if (code === 0) { 22 | resolve(); 23 | } else { 24 | reject(new Error(`Command exited with status code ${code.toString()}`)); 25 | } 26 | }); 27 | }); 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023-2025 Alfi Maulana 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 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: CMake Action 2 | description: Configure and build CMake projects 3 | author: Alfi Maulana 4 | branding: 5 | color: gray-dark 6 | icon: terminal 7 | inputs: 8 | source-dir: 9 | description: The source directory of the CMake project 10 | build-dir: 11 | description: The build directory of the CMake project 12 | generator: 13 | description: The build system generator for the CMake project 14 | c-compiler: 15 | description: The preferred executable for compiling C language files 16 | cxx-compiler: 17 | description: The preferred executable for compiling C++ language files 18 | c-flags: 19 | description: Additional flags to pass when compiling C language files 20 | cxx-flags: 21 | description: Additional flags to pass when compiling C++ language files 22 | options: 23 | description: Additional options to pass during the CMake configuration 24 | args: 25 | description: Additional arguments to pass during the CMake configuration 26 | run-build: 27 | description: If enabled, builds the project using CMake 28 | default: true 29 | build-args: 30 | description: Additional arguments to pass during the CMake build 31 | outputs: 32 | build-dir: 33 | description: The build directory of the CMake project 34 | value: ${{ steps.process-inputs.outputs.build-dir }} 35 | runs: 36 | using: node24 37 | main: dist/action.mjs 38 | -------------------------------------------------------------------------------- /src/cmake.ts: -------------------------------------------------------------------------------- 1 | import type { Context } from "./context.js"; 2 | import { exec } from "./exec.js"; 3 | 4 | /** 5 | * Configures the build system for a CMake project. 6 | * 7 | * Constructs and runs the `cmake` command to configure the project with the specified 8 | * source directory, build directory, generator, options, and additional arguments. 9 | * 10 | * @param context - The action context containing configuration details. 11 | * @returns A promise that resolves when the build system is successfully configured. 12 | */ 13 | export async function configureProject(context: Context): Promise { 14 | const configureArgs = []; 15 | 16 | if (context.sourceDir) { 17 | configureArgs.push(context.sourceDir); 18 | } 19 | 20 | configureArgs.push("-B", context.buildDir); 21 | 22 | if (context.configure.generator) { 23 | configureArgs.push("-G", context.configure.generator); 24 | } 25 | 26 | configureArgs.push(...context.configure.options.map((opt) => "-D" + opt)); 27 | configureArgs.push(...context.configure.args); 28 | 29 | await exec("cmake", configureArgs); 30 | } 31 | 32 | /** 33 | * Builds a CMake project. 34 | * 35 | * Runs the `cmake --build` command to build the project using the specified 36 | * build directory and additional arguments. 37 | * 38 | * @param context - The action context containing build details. 39 | * @returns A promise that resolves when the project is successfully built. 40 | */ 41 | export async function buildProject(context: Context): Promise { 42 | await exec("cmake", ["--build", context.buildDir, ...context.build.args]); 43 | } 44 | -------------------------------------------------------------------------------- /src/context.ts: -------------------------------------------------------------------------------- 1 | import { getInput } from "gha-utils"; 2 | import path from "node:path"; 3 | import { parse } from "./utils.js"; 4 | 5 | export interface Context { 6 | sourceDir: string; 7 | buildDir: string; 8 | configure: { 9 | generator: string; 10 | options: string[]; 11 | args: string[]; 12 | }; 13 | build: { 14 | enabled: boolean; 15 | args: string[]; 16 | }; 17 | } 18 | 19 | export function getContext(): Context { 20 | const sourceDir = getInput("source-dir"); 21 | const options: string[] = []; 22 | 23 | let input = getInput("c-compiler"); 24 | if (input) options.push(`CMAKE_C_COMPILER=${input}`); 25 | 26 | input = getInput("cxx-compiler"); 27 | if (input) options.push(`CMAKE_CXX_COMPILER=${input}`); 28 | 29 | input = getInput("c-flags"); 30 | if (input) { 31 | const flags = input.replaceAll(/\s+/g, " "); 32 | options.push(`CMAKE_C_FLAGS=${flags}`); 33 | } 34 | 35 | input = getInput("cxx-flags"); 36 | if (input) { 37 | const flags = input.replaceAll(/\s+/g, " "); 38 | options.push(`CMAKE_CXX_FLAGS=${flags}`); 39 | } 40 | 41 | input = getInput("options"); 42 | if (input) { 43 | options.push(...parse(input).map((opt) => opt)); 44 | } 45 | 46 | return { 47 | sourceDir, 48 | buildDir: getInput("build-dir") || path.join(sourceDir, "build"), 49 | configure: { 50 | generator: getInput("generator"), 51 | options, 52 | args: parse(getInput("args")).map((arg) => arg), 53 | }, 54 | build: { 55 | enabled: getInput("run-build") == "true", 56 | args: parse(getInput("build-args")).map((arg) => arg), 57 | }, 58 | }; 59 | } 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CMake Action 2 | 3 | Configure and build [CMake](https://cmake.org/) projects on [GitHub Actions](https://github.com/features/actions). 4 | 5 | This action wraps the [`cmake`](https://cmake.org/cmake/help/latest/manual/cmake.1.html) command for configuring and building CMake projects. It provides a more streamlined syntax for specifying build options compared to calling the `cmake` command directly. 6 | 7 | ## Available Inputs 8 | 9 | | Name | Value Type | Description | 10 | | --- | --- | --- | 11 | | `source-dir` | Path | The source directory of the CMake project. Defaults to the current working directory. | 12 | | `build-dir` | Path | The build directory of the CMake project. Defaults to the `build` directory inside the source directory. | 13 | | `generator` | String | The build system generator for the CMake project. Equivalent to setting the `-G` option. | 14 | | `c-compiler` | String | The preferred executable for compiling C language files. Equivalent to defining the `CMAKE_C_COMPILER` variable. | 15 | | `cxx-compiler` | String | The preferred executable for compiling C++ language files. Equivalent to defining the `CMAKE_CXX_COMPILER` variable. | 16 | | `c-flags` | Multiple strings | Additional flags to pass when compiling C language files. Equivalent to defining the `CMAKE_C_FLAGS` variable. | 17 | | `cxx-flags` | Multiple strings | Additional flags to pass when compiling C++ language files. Equivalent to defining the `CMAKE_CXX_FLAGS` variable. | 18 | | `options` | Multiple strings | Additional options to pass during the CMake configuration. Equivalent to setting the `-D` option. | 19 | | `args` | Multiple strings | Additional arguments to pass during the CMake configuration. | 20 | | `run-build` | `true` or `false` | If enabled, builds the project using CMake. Defaults to `true`. | 21 | | `build-args` | Multiple strings | Additional arguments to pass during the CMake build. | 22 | 23 | ## Available Outputs 24 | 25 | | Name | Value Type | Description | 26 | | --- | --- | --- | 27 | | `build-dir` | Path | The build directory of the CMake project. | 28 | 29 | ## Example Usages 30 | 31 | This example demonstrates how to use this action to configure and build a CMake project in a GitHub Actions workflow: 32 | 33 | ```yaml 34 | name: Build 35 | on: 36 | push: 37 | jobs: 38 | build-project: 39 | name: Build Project 40 | runs-on: ubuntu-24.04 41 | steps: 42 | - name: Checkout Project 43 | uses: actions/checkout@v4.2.2 44 | 45 | - name: Build Project 46 | uses: threeal/cmake-action@v2.1.0 47 | ``` 48 | 49 | ### Specify the Source and Build Directories 50 | 51 | By default, this action uses the current working directory as the source directory and the `build` directory inside the source directory as the build directory. To use different directories, set the `source-dir` and/or `build-dir` inputs: 52 | 53 | ```yaml 54 | - name: Build Project 55 | uses: threeal/cmake-action@v2.1.0 56 | with: 57 | source-dir: source 58 | build-dir: output 59 | ``` 60 | 61 | ### Specify Build System Generator and Compiler 62 | 63 | The following example demonstrates how to use this action to configure and build the project using [Ninja](https://ninja-build.org/) as the build system generator and [Clang](https://clang.llvm.org/) as the compiler: 64 | 65 | ```yaml 66 | - name: Build Project 67 | uses: threeal/cmake-action@v2.1.0 68 | with: 69 | generator: Ninja 70 | cxx-compiler: clang++ 71 | ``` 72 | 73 | ### Specify Additional Options 74 | 75 | Use the `options` input to specify additional options for configuring a project: 76 | 77 | ```yaml 78 | - name: Build Project 79 | uses: threeal/cmake-action@v2.1.0 80 | with: 81 | options: | 82 | BUILD_TESTS=ON 83 | BUILD_EXAMPLES=ON 84 | ``` 85 | 86 | The above example is equivalent to calling the `cmake` command with the `-DBUILD_TESTS=ON` and `-DBUILD_EXAMPLES=ON` arguments. 87 | 88 | ### Configure Project Without Building 89 | 90 | By default, this action builds the project after configuration. To skip the build process, set the `run-build` option to `false`: 91 | 92 | ```yaml 93 | - name: Configure Project 94 | uses: threeal/cmake-action@v2.1.0 95 | with: 96 | run-build: false 97 | ``` 98 | 99 | ## License 100 | 101 | This project is licensed under the terms of the [MIT License](./LICENSE). 102 | 103 | Copyright © 2023-2025 [Alfi Maulana](https://github.com/threeal/) 104 | -------------------------------------------------------------------------------- /src/cmake.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, it, vi } from "vitest"; 2 | import { buildProject, configureProject } from "./cmake.js"; 3 | import type { Context } from "./context.js"; 4 | import { exec } from "./exec.js"; 5 | 6 | interface TestCase { 7 | name: string; 8 | context?: Partial; 9 | expectedArgs: string[]; 10 | } 11 | 12 | const defaultContext: Context = { 13 | sourceDir: "", 14 | buildDir: "build", 15 | configure: { 16 | generator: "", 17 | options: [], 18 | args: [], 19 | }, 20 | build: { 21 | enabled: true, 22 | args: [], 23 | }, 24 | }; 25 | 26 | vi.mock("./exec.js", () => ({ exec: vi.fn() })); 27 | 28 | describe("configure a CMake project", () => { 29 | const testCases: TestCase[] = [ 30 | { 31 | name: "with nothing specified", 32 | expectedArgs: ["-B", "build"], 33 | }, 34 | { 35 | name: "with source directory specified", 36 | context: { sourceDir: "project" }, 37 | expectedArgs: ["project", "-B", "build"], 38 | }, 39 | { 40 | name: "with build directory specified", 41 | context: { buildDir: "output" }, 42 | expectedArgs: ["-B", "output"], 43 | }, 44 | { 45 | name: "with generator specified", 46 | context: { configure: { generator: "Ninja", options: [], args: [] } }, 47 | expectedArgs: ["-B", "build", "-G", "Ninja"], 48 | }, 49 | { 50 | name: "with additional options specified", 51 | context: { 52 | configure: { 53 | generator: "", 54 | options: ["BUILD_TESTING=ON", "BUILD_EXAMPLES=ON"], 55 | args: [], 56 | }, 57 | }, 58 | expectedArgs: [ 59 | "-B", 60 | "build", 61 | "-DBUILD_TESTING=ON", 62 | "-DBUILD_EXAMPLES=ON", 63 | ], 64 | }, 65 | { 66 | name: "with additional arguments specified", 67 | context: { 68 | configure: { 69 | generator: "", 70 | options: [], 71 | args: ["-Wdev", "-Wdeprecated"], 72 | }, 73 | }, 74 | expectedArgs: ["-B", "build", "-Wdev", "-Wdeprecated"], 75 | }, 76 | { 77 | name: "with all specified", 78 | context: { 79 | sourceDir: "project", 80 | buildDir: "output", 81 | configure: { 82 | generator: "Ninja", 83 | options: ["BUILD_TESTING=ON", "BUILD_EXAMPLES=ON"], 84 | args: ["-Wdev", "-Wdeprecated"], 85 | }, 86 | }, 87 | expectedArgs: [ 88 | "project", 89 | "-B", 90 | "output", 91 | "-G", 92 | "Ninja", 93 | "-DBUILD_TESTING=ON", 94 | "-DBUILD_EXAMPLES=ON", 95 | "-Wdev", 96 | "-Wdeprecated", 97 | ], 98 | }, 99 | ]; 100 | 101 | for (const testCase of testCases) { 102 | it(`should execute the correct command ${testCase.name}`, async () => { 103 | vi.mocked(exec).mockReset(); 104 | 105 | await configureProject({ ...defaultContext, ...testCase.context }); 106 | 107 | expect(exec).toHaveBeenCalledTimes(1); 108 | expect(exec).toHaveBeenLastCalledWith("cmake", testCase.expectedArgs); 109 | }); 110 | } 111 | }); 112 | 113 | describe("build a CMake project", () => { 114 | const testCases: TestCase[] = [ 115 | { 116 | name: "with nothing specified", 117 | expectedArgs: ["--build", "build"], 118 | }, 119 | { 120 | name: "with build directory specified", 121 | context: { buildDir: "output" }, 122 | expectedArgs: ["--build", "output"], 123 | }, 124 | { 125 | name: "with additional arguments specified", 126 | context: { build: { enabled: true, args: ["--target", "foo"] } }, 127 | expectedArgs: ["--build", "build", "--target", "foo"], 128 | }, 129 | { 130 | name: "with all specified", 131 | context: { 132 | buildDir: "output", 133 | build: { 134 | enabled: true, 135 | args: ["--target", "foo"], 136 | }, 137 | }, 138 | expectedArgs: ["--build", "output", "--target", "foo"], 139 | }, 140 | ]; 141 | 142 | for (const testCase of testCases) { 143 | it(`should execute the correct command ${testCase.name}`, async () => { 144 | vi.mocked(exec).mockReset(); 145 | 146 | await buildProject({ ...defaultContext, ...testCase.context }); 147 | 148 | expect(exec).toHaveBeenCalledTimes(1); 149 | expect(exec).toHaveBeenLastCalledWith("cmake", testCase.expectedArgs); 150 | }); 151 | } 152 | }); 153 | -------------------------------------------------------------------------------- /.github/workflows/test.yaml: -------------------------------------------------------------------------------- 1 | name: Test 2 | on: 3 | workflow_dispatch: 4 | pull_request: 5 | push: 6 | branches: [main] 7 | jobs: 8 | test-action: 9 | name: Test Action 10 | runs-on: ${{ matrix.os }} 11 | strategy: 12 | fail-fast: false 13 | matrix: 14 | os: [ubuntu-24.04, macos-14, windows-2022] 15 | steps: 16 | - name: Checkout Sample Project 17 | uses: actions/checkout@v5.0.0 18 | with: 19 | repository: threeal/cpp-starter 20 | ref: v1.0.0 21 | 22 | - name: Checkout Action 23 | uses: actions/checkout@v5.0.0 24 | with: 25 | path: cmake-action 26 | sparse-checkout: | 27 | action.yml 28 | dist 29 | sparse-checkout-cone-mode: false 30 | 31 | - name: Build Sample Project 32 | id: cmake-action 33 | uses: ./cmake-action 34 | 35 | - name: Run Sample Project 36 | run: ${{ steps.cmake-action.outputs.build-dir }}/${{ matrix.os == 'windows-2022' && 'Debug/generate_sequence.exe' || 'generate_sequence' }} 5 37 | 38 | test-action-with-specified-dirs: 39 | name: Test Action With Specified Directories 40 | runs-on: ubuntu-24.04 41 | steps: 42 | - name: Checkout Sample Project 43 | uses: actions/checkout@v5.0.0 44 | with: 45 | repository: threeal/cpp-starter 46 | ref: v1.0.0 47 | path: project 48 | 49 | - name: Checkout Action 50 | uses: actions/checkout@v5.0.0 51 | with: 52 | path: cmake-action 53 | sparse-checkout: | 54 | action.yml 55 | dist 56 | sparse-checkout-cone-mode: false 57 | 58 | - name: Build Sample Project 59 | id: cmake-action 60 | uses: ./cmake-action 61 | with: 62 | source-dir: project 63 | build-dir: output 64 | 65 | - name: Run Sample Project 66 | run: output/generate_sequence 5 67 | 68 | test-action-without-run-build: 69 | name: Test Action Without Run Build 70 | runs-on: ubuntu-24.04 71 | steps: 72 | - name: Checkout Sample Project 73 | uses: actions/checkout@v5.0.0 74 | with: 75 | repository: threeal/cpp-starter 76 | ref: v1.0.0 77 | 78 | - name: Checkout Action 79 | uses: actions/checkout@v5.0.0 80 | with: 81 | path: cmake-action 82 | sparse-checkout: | 83 | action.yml 84 | dist 85 | sparse-checkout-cone-mode: false 86 | 87 | - name: Modify Sample Project 88 | run: echo 'invalid' >> src/main.cpp 89 | 90 | - name: Configure Sample Project 91 | uses: ./cmake-action 92 | with: 93 | run-build: false 94 | 95 | test-action-with-additional-options: 96 | name: Test Action With Additional Options 97 | runs-on: ubuntu-24.04 98 | steps: 99 | - name: Checkout Sample Project 100 | uses: actions/checkout@v5.0.0 101 | with: 102 | repository: threeal/cpp-starter 103 | ref: v1.0.0 104 | 105 | - name: Checkout Action 106 | uses: actions/checkout@v5.0.0 107 | with: 108 | path: cmake-action 109 | sparse-checkout: | 110 | action.yml 111 | dist 112 | sparse-checkout-cone-mode: false 113 | 114 | - name: Build Sample Project 115 | uses: ./cmake-action 116 | with: 117 | options: BUILD_TESTING=ON 118 | 119 | - name: Test Sample Project 120 | uses: threeal/ctest-action@v1.1.0 121 | 122 | test-action-with-custom-generator: 123 | name: Test Action With Custom Generator 124 | runs-on: ubuntu-24.04 125 | steps: 126 | - name: Checkout Sample Project 127 | uses: actions/checkout@v5.0.0 128 | with: 129 | repository: threeal/cpp-starter 130 | ref: v1.0.0 131 | 132 | - name: Checkout Action 133 | uses: actions/checkout@v5.0.0 134 | with: 135 | path: cmake-action 136 | sparse-checkout: | 137 | action.yml 138 | dist 139 | sparse-checkout-cone-mode: false 140 | 141 | - name: Configure Sample Project 142 | id: cmake-action 143 | uses: ./cmake-action 144 | with: 145 | generator: Ninja 146 | run-build: false 147 | 148 | - name: Build Sample Project 149 | run: ninja -C ${{ steps.cmake-action.outputs.build-dir }} 150 | -------------------------------------------------------------------------------- /src/context.test.ts: -------------------------------------------------------------------------------- 1 | import path from "node:path"; 2 | import { describe, expect, it, vi } from "vitest"; 3 | import type { Context } from "./context.js"; 4 | 5 | vi.mock("gha-utils", () => ({ getInput: vi.fn() })); 6 | 7 | describe("get action context", () => { 8 | interface TestCase { 9 | name: string; 10 | inputs?: Record; 11 | expectedContext?: Partial; 12 | } 13 | 14 | const testCases: TestCase[] = [ 15 | { 16 | name: "with nothing specified", 17 | }, 18 | { 19 | name: "with source directory specified", 20 | inputs: { "source-dir": "project" }, 21 | expectedContext: { 22 | sourceDir: "project", 23 | buildDir: path.join("project", "build"), 24 | }, 25 | }, 26 | { 27 | name: "with build directory specified", 28 | inputs: { "build-dir": "output" }, 29 | expectedContext: { buildDir: "output" }, 30 | }, 31 | { 32 | name: "with source and build directories specified", 33 | inputs: { 34 | "source-dir": "project", 35 | "build-dir": "output", 36 | }, 37 | expectedContext: { 38 | sourceDir: "project", 39 | buildDir: "output", 40 | }, 41 | }, 42 | { 43 | name: "with generator specified", 44 | inputs: { generator: "Ninja" }, 45 | expectedContext: { 46 | configure: { 47 | generator: "Ninja", 48 | options: [], 49 | args: [], 50 | }, 51 | }, 52 | }, 53 | { 54 | name: "with C compiler specified", 55 | inputs: { "c-compiler": "clang" }, 56 | expectedContext: { 57 | configure: { 58 | generator: "", 59 | options: ["CMAKE_C_COMPILER=clang"], 60 | args: [], 61 | }, 62 | }, 63 | }, 64 | { 65 | name: "with C++ compiler specified", 66 | inputs: { "cxx-compiler": "clang++" }, 67 | expectedContext: { 68 | configure: { 69 | generator: "", 70 | options: ["CMAKE_CXX_COMPILER=clang++"], 71 | args: [], 72 | }, 73 | }, 74 | }, 75 | { 76 | name: "with C flags specified", 77 | inputs: { "c-flags": "-Werror -Wall\n-Wextra" }, 78 | expectedContext: { 79 | configure: { 80 | generator: "", 81 | options: ["CMAKE_C_FLAGS=-Werror -Wall -Wextra"], 82 | args: [], 83 | }, 84 | }, 85 | }, 86 | { 87 | name: "with C++ flags specified", 88 | inputs: { "cxx-flags": "-Werror -Wall\n-Wextra -Wpedantic" }, 89 | expectedContext: { 90 | configure: { 91 | generator: "", 92 | options: ["CMAKE_CXX_FLAGS=-Werror -Wall -Wextra -Wpedantic"], 93 | args: [], 94 | }, 95 | }, 96 | }, 97 | { 98 | name: "with additional options specified", 99 | inputs: { 100 | options: `BUILD_TESTING=ON BUILD_EXAMPLES=ON\nBUILD_DOCS=ON "FOO=BAR BAZ"`, 101 | }, 102 | expectedContext: { 103 | configure: { 104 | generator: "", 105 | options: [ 106 | "BUILD_TESTING=ON", 107 | "BUILD_EXAMPLES=ON", 108 | "BUILD_DOCS=ON", 109 | "FOO=BAR BAZ", 110 | ], 111 | args: [], 112 | }, 113 | }, 114 | }, 115 | { 116 | name: "with additional arguments specified", 117 | inputs: { args: `-Wdev -Wdeprecated\n--fresh --foo "bar baz"` }, 118 | expectedContext: { 119 | configure: { 120 | generator: "", 121 | options: [], 122 | args: ["-Wdev", "-Wdeprecated", "--fresh", "--foo", "bar baz"], 123 | }, 124 | }, 125 | }, 126 | { 127 | name: "with run build specified", 128 | inputs: { "run-build": "true" }, 129 | expectedContext: { build: { enabled: true, args: [] } }, 130 | }, 131 | { 132 | name: "with additional build arguments specified", 133 | inputs: { "build-args": `--target foo\n--parallel 8 --foo "bar baz"` }, 134 | expectedContext: { 135 | build: { 136 | enabled: false, 137 | args: ["--target", "foo", "--parallel", "8", "--foo", "bar baz"], 138 | }, 139 | }, 140 | }, 141 | { 142 | name: "with all specified", 143 | inputs: { 144 | "source-dir": "project", 145 | "build-dir": "output", 146 | generator: "Ninja", 147 | "c-compiler": "clang", 148 | "cxx-compiler": "clang++", 149 | "c-flags": "-Werror -Wall\n-Wextra", 150 | "cxx-flags": "-Werror -Wall\n-Wextra -Wpedantic", 151 | options: `BUILD_TESTING=ON BUILD_EXAMPLES=ON\nBUILD_DOCS=ON "FOO=BAR BAZ"`, 152 | args: `-Wdev -Wdeprecated\n--fresh --foo "bar baz"`, 153 | "run-build": "true", 154 | "build-args": `--target foo\n--parallel 8 --foo "bar baz"`, 155 | }, 156 | expectedContext: { 157 | sourceDir: "project", 158 | buildDir: "output", 159 | configure: { 160 | generator: "Ninja", 161 | options: [ 162 | "CMAKE_C_COMPILER=clang", 163 | "CMAKE_CXX_COMPILER=clang++", 164 | "CMAKE_C_FLAGS=-Werror -Wall -Wextra", 165 | "CMAKE_CXX_FLAGS=-Werror -Wall -Wextra -Wpedantic", 166 | "BUILD_TESTING=ON", 167 | "BUILD_EXAMPLES=ON", 168 | "BUILD_DOCS=ON", 169 | "FOO=BAR BAZ", 170 | ], 171 | args: ["-Wdev", "-Wdeprecated", "--fresh", "--foo", "bar baz"], 172 | }, 173 | build: { 174 | enabled: true, 175 | args: ["--target", "foo", "--parallel", "8", "--foo", "bar baz"], 176 | }, 177 | }, 178 | }, 179 | ]; 180 | 181 | for (const testCase of testCases) { 182 | it(`should get the action context ${testCase.name}`, async () => { 183 | const { getInput } = await import("gha-utils"); 184 | const { getContext } = await import("./context.js"); 185 | 186 | const inputs = testCase.inputs ?? {}; 187 | vi.mocked(getInput).mockImplementation((name) => inputs[name] ?? ""); 188 | 189 | expect(getContext()).toStrictEqual({ 190 | sourceDir: "", 191 | buildDir: "build", 192 | configure: { 193 | generator: "", 194 | options: [], 195 | args: [], 196 | }, 197 | build: { 198 | enabled: false, 199 | args: [], 200 | }, 201 | ...testCase.expectedContext, 202 | }); 203 | }); 204 | } 205 | }); 206 | -------------------------------------------------------------------------------- /dist/action.mjs: -------------------------------------------------------------------------------- 1 | import 'node:fs'; 2 | import fsPromises from 'node:fs/promises'; 3 | import os from 'node:os'; 4 | import path from 'node:path'; 5 | import { spawn } from 'node:child_process'; 6 | 7 | /** 8 | * @internal 9 | * Retrieves the value of an environment variable. 10 | * 11 | * @param name - The name of the environment variable. 12 | * @returns The value of the environment variable. 13 | * @throws Error if the environment variable is not defined. 14 | */ 15 | function mustGetEnvironment(name) { 16 | const value = process.env[name]; 17 | if (value === undefined) { 18 | throw new Error(`the ${name} environment variable must be defined`); 19 | } 20 | return value; 21 | } 22 | /** 23 | * Retrieves the value of a GitHub Actions input. 24 | * 25 | * @param name - The name of the GitHub Actions input. 26 | * @returns The value of the GitHub Actions input, or an empty string if not found. 27 | */ 28 | function getInput(name) { 29 | const value = process.env[`INPUT_${name.toUpperCase()}`] ?? ""; 30 | return value.trim(); 31 | } 32 | /** 33 | * Sets the value of a GitHub Actions output. 34 | * 35 | * @param name - The name of the GitHub Actions output. 36 | * @param value - The value to set for the GitHub Actions output. 37 | * @returns A promise that resolves when the value is successfully set. 38 | */ 39 | async function setOutput(name, value) { 40 | const filePath = mustGetEnvironment("GITHUB_OUTPUT"); 41 | await fsPromises.appendFile(filePath, `${name}=${value}${os.EOL}`); 42 | } 43 | 44 | /** 45 | * Logs an error message in GitHub Actions. 46 | * 47 | * @param err - The error, which can be of any type. 48 | */ 49 | function logError(err) { 50 | const message = err instanceof Error ? err.message : String(err); 51 | process.stdout.write(`::error::${message}${os.EOL}`); 52 | } 53 | /** 54 | * Logs a command along with its arguments in GitHub Actions. 55 | * 56 | * @param command - The command to log. 57 | * @param args - The arguments of the command. 58 | */ 59 | function logCommand(command, ...args) { 60 | const message = [command, ...args].join(" "); 61 | process.stdout.write(`[command]${message}${os.EOL}`); 62 | } 63 | 64 | /** 65 | * Executes a command with the given arguments. 66 | * 67 | * The command is executed with `stdin` ignored and both `stdout` and `stderr` inherited by the parent process. 68 | * 69 | * @param command The command to execute. 70 | * @param args The arguments to pass to the command. 71 | * @returns A promise that resolves when the command exits successfully or rejects if it exits with a non-zero status code or encounters an error. 72 | */ 73 | async function exec(command, args) { 74 | return new Promise((resolve, reject) => { 75 | const proc = spawn(command, args, { 76 | stdio: ["ignore", "inherit", "inherit"], 77 | }); 78 | logCommand(proc.spawnfile, ...proc.spawnargs.splice(1)); 79 | proc.on("error", reject); 80 | proc.on("close", (code) => { 81 | if (code === 0) { 82 | resolve(); 83 | } 84 | else { 85 | reject(new Error(`Command exited with status code ${code.toString()}`)); 86 | } 87 | }); 88 | }); 89 | } 90 | 91 | /** 92 | * Configures the build system for a CMake project. 93 | * 94 | * Constructs and runs the `cmake` command to configure the project with the specified 95 | * source directory, build directory, generator, options, and additional arguments. 96 | * 97 | * @param context - The action context containing configuration details. 98 | * @returns A promise that resolves when the build system is successfully configured. 99 | */ 100 | async function configureProject(context) { 101 | const configureArgs = []; 102 | if (context.sourceDir) { 103 | configureArgs.push(context.sourceDir); 104 | } 105 | configureArgs.push("-B", context.buildDir); 106 | if (context.configure.generator) { 107 | configureArgs.push("-G", context.configure.generator); 108 | } 109 | configureArgs.push(...context.configure.options.map((opt) => "-D" + opt)); 110 | configureArgs.push(...context.configure.args); 111 | await exec("cmake", configureArgs); 112 | } 113 | /** 114 | * Builds a CMake project. 115 | * 116 | * Runs the `cmake --build` command to build the project using the specified 117 | * build directory and additional arguments. 118 | * 119 | * @param context - The action context containing build details. 120 | * @returns A promise that resolves when the project is successfully built. 121 | */ 122 | async function buildProject(context) { 123 | await exec("cmake", ["--build", context.buildDir, ...context.build.args]); 124 | } 125 | 126 | const regex = /"([^"]*)"|'([^']*)'|`([^`]*)`|(\S+)/g; 127 | /** 128 | * Converts a space-separated string into a list of arguments. 129 | * 130 | * This function parses the provided string, which contains arguments separated by spaces and possibly enclosed in quotes, into a list of arguments. 131 | * 132 | * @param str - The space-separated string to parse. 133 | * @returns A list of arguments. 134 | */ 135 | function parse(str) { 136 | const args = []; 137 | let match; 138 | while ((match = regex.exec(str)) !== null) { 139 | args.push(match[1] || match[2] || match[3] || match[4]); 140 | } 141 | return args; 142 | } 143 | 144 | function getContext() { 145 | const sourceDir = getInput("source-dir"); 146 | const options = []; 147 | let input = getInput("c-compiler"); 148 | if (input) 149 | options.push(`CMAKE_C_COMPILER=${input}`); 150 | input = getInput("cxx-compiler"); 151 | if (input) 152 | options.push(`CMAKE_CXX_COMPILER=${input}`); 153 | input = getInput("c-flags"); 154 | if (input) { 155 | const flags = input.replaceAll(/\s+/g, " "); 156 | options.push(`CMAKE_C_FLAGS=${flags}`); 157 | } 158 | input = getInput("cxx-flags"); 159 | if (input) { 160 | const flags = input.replaceAll(/\s+/g, " "); 161 | options.push(`CMAKE_CXX_FLAGS=${flags}`); 162 | } 163 | input = getInput("options"); 164 | if (input) { 165 | options.push(...parse(input).map((opt) => opt)); 166 | } 167 | return { 168 | sourceDir, 169 | buildDir: getInput("build-dir") || path.join(sourceDir, "build"), 170 | configure: { 171 | generator: getInput("generator"), 172 | options, 173 | args: parse(getInput("args")).map((arg) => arg), 174 | }, 175 | build: { 176 | enabled: getInput("run-build") == "true", 177 | args: parse(getInput("build-args")).map((arg) => arg), 178 | }, 179 | }; 180 | } 181 | 182 | try { 183 | const context = getContext(); 184 | await configureProject(context); 185 | await setOutput("build-dir", context.buildDir); 186 | if (context.build.enabled) { 187 | await buildProject(context); 188 | } 189 | } 190 | catch (err) { 191 | logError(err); 192 | process.exit(1); 193 | } 194 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | gha-utils: 12 | specifier: ^0.4.1 13 | version: 0.4.1 14 | devDependencies: 15 | '@eslint/js': 16 | specifier: ^9.35.0 17 | version: 9.35.0 18 | '@rollup/plugin-node-resolve': 19 | specifier: ^16.0.1 20 | version: 16.0.1(rollup@4.46.2) 21 | '@rollup/plugin-typescript': 22 | specifier: ^12.1.4 23 | version: 12.1.4(rollup@4.46.2)(tslib@2.8.1)(typescript@5.9.2) 24 | '@tsconfig/node24': 25 | specifier: ^24.0.1 26 | version: 24.0.1 27 | '@types/node': 28 | specifier: ^24.3.0 29 | version: 24.3.0 30 | '@vitest/coverage-v8': 31 | specifier: ^3.1.4 32 | version: 3.1.4(vitest@3.1.4(@types/node@24.3.0)(jiti@2.5.1)) 33 | eslint: 34 | specifier: ^9.34.0 35 | version: 9.34.0(jiti@2.5.1) 36 | jiti: 37 | specifier: ^2.5.1 38 | version: 2.5.1 39 | lefthook: 40 | specifier: ^1.12.3 41 | version: 1.12.3 42 | prettier: 43 | specifier: ^3.6.2 44 | version: 3.6.2 45 | prettier-plugin-organize-imports: 46 | specifier: ^4.2.0 47 | version: 4.2.0(prettier@3.6.2)(typescript@5.9.2) 48 | rollup: 49 | specifier: ^4.46.2 50 | version: 4.46.2 51 | typescript: 52 | specifier: ^5.9.2 53 | version: 5.9.2 54 | typescript-eslint: 55 | specifier: ^8.42.0 56 | version: 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) 57 | vitest: 58 | specifier: ^3.1.4 59 | version: 3.1.4(@types/node@24.3.0)(jiti@2.5.1) 60 | 61 | packages: 62 | 63 | '@ampproject/remapping@2.3.0': 64 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 65 | engines: {node: '>=6.0.0'} 66 | 67 | '@babel/helper-string-parser@7.25.9': 68 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 69 | engines: {node: '>=6.9.0'} 70 | 71 | '@babel/helper-validator-identifier@7.25.9': 72 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 73 | engines: {node: '>=6.9.0'} 74 | 75 | '@babel/parser@7.26.9': 76 | resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} 77 | engines: {node: '>=6.0.0'} 78 | hasBin: true 79 | 80 | '@babel/types@7.26.9': 81 | resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} 82 | engines: {node: '>=6.9.0'} 83 | 84 | '@bcoe/v8-coverage@1.0.2': 85 | resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} 86 | engines: {node: '>=18'} 87 | 88 | '@esbuild/aix-ppc64@0.25.0': 89 | resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} 90 | engines: {node: '>=18'} 91 | cpu: [ppc64] 92 | os: [aix] 93 | 94 | '@esbuild/android-arm64@0.25.0': 95 | resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} 96 | engines: {node: '>=18'} 97 | cpu: [arm64] 98 | os: [android] 99 | 100 | '@esbuild/android-arm@0.25.0': 101 | resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} 102 | engines: {node: '>=18'} 103 | cpu: [arm] 104 | os: [android] 105 | 106 | '@esbuild/android-x64@0.25.0': 107 | resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} 108 | engines: {node: '>=18'} 109 | cpu: [x64] 110 | os: [android] 111 | 112 | '@esbuild/darwin-arm64@0.25.0': 113 | resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} 114 | engines: {node: '>=18'} 115 | cpu: [arm64] 116 | os: [darwin] 117 | 118 | '@esbuild/darwin-x64@0.25.0': 119 | resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} 120 | engines: {node: '>=18'} 121 | cpu: [x64] 122 | os: [darwin] 123 | 124 | '@esbuild/freebsd-arm64@0.25.0': 125 | resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} 126 | engines: {node: '>=18'} 127 | cpu: [arm64] 128 | os: [freebsd] 129 | 130 | '@esbuild/freebsd-x64@0.25.0': 131 | resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} 132 | engines: {node: '>=18'} 133 | cpu: [x64] 134 | os: [freebsd] 135 | 136 | '@esbuild/linux-arm64@0.25.0': 137 | resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} 138 | engines: {node: '>=18'} 139 | cpu: [arm64] 140 | os: [linux] 141 | 142 | '@esbuild/linux-arm@0.25.0': 143 | resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} 144 | engines: {node: '>=18'} 145 | cpu: [arm] 146 | os: [linux] 147 | 148 | '@esbuild/linux-ia32@0.25.0': 149 | resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} 150 | engines: {node: '>=18'} 151 | cpu: [ia32] 152 | os: [linux] 153 | 154 | '@esbuild/linux-loong64@0.25.0': 155 | resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} 156 | engines: {node: '>=18'} 157 | cpu: [loong64] 158 | os: [linux] 159 | 160 | '@esbuild/linux-mips64el@0.25.0': 161 | resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} 162 | engines: {node: '>=18'} 163 | cpu: [mips64el] 164 | os: [linux] 165 | 166 | '@esbuild/linux-ppc64@0.25.0': 167 | resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} 168 | engines: {node: '>=18'} 169 | cpu: [ppc64] 170 | os: [linux] 171 | 172 | '@esbuild/linux-riscv64@0.25.0': 173 | resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} 174 | engines: {node: '>=18'} 175 | cpu: [riscv64] 176 | os: [linux] 177 | 178 | '@esbuild/linux-s390x@0.25.0': 179 | resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} 180 | engines: {node: '>=18'} 181 | cpu: [s390x] 182 | os: [linux] 183 | 184 | '@esbuild/linux-x64@0.25.0': 185 | resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} 186 | engines: {node: '>=18'} 187 | cpu: [x64] 188 | os: [linux] 189 | 190 | '@esbuild/netbsd-arm64@0.25.0': 191 | resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==} 192 | engines: {node: '>=18'} 193 | cpu: [arm64] 194 | os: [netbsd] 195 | 196 | '@esbuild/netbsd-x64@0.25.0': 197 | resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} 198 | engines: {node: '>=18'} 199 | cpu: [x64] 200 | os: [netbsd] 201 | 202 | '@esbuild/openbsd-arm64@0.25.0': 203 | resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} 204 | engines: {node: '>=18'} 205 | cpu: [arm64] 206 | os: [openbsd] 207 | 208 | '@esbuild/openbsd-x64@0.25.0': 209 | resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} 210 | engines: {node: '>=18'} 211 | cpu: [x64] 212 | os: [openbsd] 213 | 214 | '@esbuild/sunos-x64@0.25.0': 215 | resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} 216 | engines: {node: '>=18'} 217 | cpu: [x64] 218 | os: [sunos] 219 | 220 | '@esbuild/win32-arm64@0.25.0': 221 | resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} 222 | engines: {node: '>=18'} 223 | cpu: [arm64] 224 | os: [win32] 225 | 226 | '@esbuild/win32-ia32@0.25.0': 227 | resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} 228 | engines: {node: '>=18'} 229 | cpu: [ia32] 230 | os: [win32] 231 | 232 | '@esbuild/win32-x64@0.25.0': 233 | resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} 234 | engines: {node: '>=18'} 235 | cpu: [x64] 236 | os: [win32] 237 | 238 | '@eslint-community/eslint-utils@4.8.0': 239 | resolution: {integrity: sha512-MJQFqrZgcW0UNYLGOuQpey/oTN59vyWwplvCGZztn1cKz9agZPPYpJB7h2OMmuu7VLqkvEjN8feFZJmxNF9D+Q==} 240 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 241 | peerDependencies: 242 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 243 | 244 | '@eslint-community/regexpp@4.12.1': 245 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 246 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 247 | 248 | '@eslint/config-array@0.21.0': 249 | resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} 250 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 251 | 252 | '@eslint/config-helpers@0.3.1': 253 | resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} 254 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 255 | 256 | '@eslint/core@0.15.2': 257 | resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} 258 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 259 | 260 | '@eslint/eslintrc@3.3.1': 261 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 262 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 263 | 264 | '@eslint/js@9.34.0': 265 | resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} 266 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 267 | 268 | '@eslint/js@9.35.0': 269 | resolution: {integrity: sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==} 270 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 271 | 272 | '@eslint/object-schema@2.1.6': 273 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 274 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 275 | 276 | '@eslint/plugin-kit@0.3.5': 277 | resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} 278 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 279 | 280 | '@humanfs/core@0.19.1': 281 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 282 | engines: {node: '>=18.18.0'} 283 | 284 | '@humanfs/node@0.16.7': 285 | resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} 286 | engines: {node: '>=18.18.0'} 287 | 288 | '@humanwhocodes/module-importer@1.0.1': 289 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 290 | engines: {node: '>=12.22'} 291 | 292 | '@humanwhocodes/retry@0.4.3': 293 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 294 | engines: {node: '>=18.18'} 295 | 296 | '@isaacs/cliui@8.0.2': 297 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 298 | engines: {node: '>=12'} 299 | 300 | '@istanbuljs/schema@0.1.3': 301 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 302 | engines: {node: '>=8'} 303 | 304 | '@jridgewell/gen-mapping@0.3.8': 305 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 306 | engines: {node: '>=6.0.0'} 307 | 308 | '@jridgewell/resolve-uri@3.1.2': 309 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 310 | engines: {node: '>=6.0.0'} 311 | 312 | '@jridgewell/set-array@1.2.1': 313 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 314 | engines: {node: '>=6.0.0'} 315 | 316 | '@jridgewell/sourcemap-codec@1.5.0': 317 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 318 | 319 | '@jridgewell/trace-mapping@0.3.25': 320 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 321 | 322 | '@nodelib/fs.scandir@2.1.5': 323 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 324 | engines: {node: '>= 8'} 325 | 326 | '@nodelib/fs.stat@2.0.5': 327 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 328 | engines: {node: '>= 8'} 329 | 330 | '@nodelib/fs.walk@1.2.8': 331 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 332 | engines: {node: '>= 8'} 333 | 334 | '@pkgjs/parseargs@0.11.0': 335 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 336 | engines: {node: '>=14'} 337 | 338 | '@rollup/plugin-node-resolve@16.0.1': 339 | resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} 340 | engines: {node: '>=14.0.0'} 341 | peerDependencies: 342 | rollup: ^2.78.0||^3.0.0||^4.0.0 343 | peerDependenciesMeta: 344 | rollup: 345 | optional: true 346 | 347 | '@rollup/plugin-typescript@12.1.4': 348 | resolution: {integrity: sha512-s5Hx+EtN60LMlDBvl5f04bEiFZmAepk27Q+mr85L/00zPDn1jtzlTV6FWn81MaIwqfWzKxmOJrBWHU6vtQyedQ==} 349 | engines: {node: '>=14.0.0'} 350 | peerDependencies: 351 | rollup: ^2.14.0||^3.0.0||^4.0.0 352 | tslib: '*' 353 | typescript: '>=3.7.0' 354 | peerDependenciesMeta: 355 | rollup: 356 | optional: true 357 | tslib: 358 | optional: true 359 | 360 | '@rollup/pluginutils@5.1.4': 361 | resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} 362 | engines: {node: '>=14.0.0'} 363 | peerDependencies: 364 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 365 | peerDependenciesMeta: 366 | rollup: 367 | optional: true 368 | 369 | '@rollup/pluginutils@5.2.0': 370 | resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} 371 | engines: {node: '>=14.0.0'} 372 | peerDependencies: 373 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 374 | peerDependenciesMeta: 375 | rollup: 376 | optional: true 377 | 378 | '@rollup/rollup-android-arm-eabi@4.46.2': 379 | resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} 380 | cpu: [arm] 381 | os: [android] 382 | 383 | '@rollup/rollup-android-arm64@4.46.2': 384 | resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} 385 | cpu: [arm64] 386 | os: [android] 387 | 388 | '@rollup/rollup-darwin-arm64@4.46.2': 389 | resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} 390 | cpu: [arm64] 391 | os: [darwin] 392 | 393 | '@rollup/rollup-darwin-x64@4.46.2': 394 | resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} 395 | cpu: [x64] 396 | os: [darwin] 397 | 398 | '@rollup/rollup-freebsd-arm64@4.46.2': 399 | resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} 400 | cpu: [arm64] 401 | os: [freebsd] 402 | 403 | '@rollup/rollup-freebsd-x64@4.46.2': 404 | resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} 405 | cpu: [x64] 406 | os: [freebsd] 407 | 408 | '@rollup/rollup-linux-arm-gnueabihf@4.46.2': 409 | resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} 410 | cpu: [arm] 411 | os: [linux] 412 | 413 | '@rollup/rollup-linux-arm-musleabihf@4.46.2': 414 | resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} 415 | cpu: [arm] 416 | os: [linux] 417 | 418 | '@rollup/rollup-linux-arm64-gnu@4.46.2': 419 | resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} 420 | cpu: [arm64] 421 | os: [linux] 422 | 423 | '@rollup/rollup-linux-arm64-musl@4.46.2': 424 | resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} 425 | cpu: [arm64] 426 | os: [linux] 427 | 428 | '@rollup/rollup-linux-loongarch64-gnu@4.46.2': 429 | resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} 430 | cpu: [loong64] 431 | os: [linux] 432 | 433 | '@rollup/rollup-linux-ppc64-gnu@4.46.2': 434 | resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} 435 | cpu: [ppc64] 436 | os: [linux] 437 | 438 | '@rollup/rollup-linux-riscv64-gnu@4.46.2': 439 | resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} 440 | cpu: [riscv64] 441 | os: [linux] 442 | 443 | '@rollup/rollup-linux-riscv64-musl@4.46.2': 444 | resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} 445 | cpu: [riscv64] 446 | os: [linux] 447 | 448 | '@rollup/rollup-linux-s390x-gnu@4.46.2': 449 | resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} 450 | cpu: [s390x] 451 | os: [linux] 452 | 453 | '@rollup/rollup-linux-x64-gnu@4.46.2': 454 | resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} 455 | cpu: [x64] 456 | os: [linux] 457 | 458 | '@rollup/rollup-linux-x64-musl@4.46.2': 459 | resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} 460 | cpu: [x64] 461 | os: [linux] 462 | 463 | '@rollup/rollup-win32-arm64-msvc@4.46.2': 464 | resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} 465 | cpu: [arm64] 466 | os: [win32] 467 | 468 | '@rollup/rollup-win32-ia32-msvc@4.46.2': 469 | resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} 470 | cpu: [ia32] 471 | os: [win32] 472 | 473 | '@rollup/rollup-win32-x64-msvc@4.46.2': 474 | resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} 475 | cpu: [x64] 476 | os: [win32] 477 | 478 | '@tsconfig/node24@24.0.1': 479 | resolution: {integrity: sha512-3+IXshza3bIrT0tbHBr9CixQDVf4iBf0HTR0hCYowhpLqkzJjswu3UY8aZWjRXZep31kYB+o2SQeD8KwIoUHYw==} 480 | 481 | '@types/estree@1.0.7': 482 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 483 | 484 | '@types/estree@1.0.8': 485 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 486 | 487 | '@types/json-schema@7.0.15': 488 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 489 | 490 | '@types/node@24.3.0': 491 | resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} 492 | 493 | '@types/resolve@1.20.2': 494 | resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} 495 | 496 | '@typescript-eslint/eslint-plugin@8.42.0': 497 | resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==} 498 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 499 | peerDependencies: 500 | '@typescript-eslint/parser': ^8.42.0 501 | eslint: ^8.57.0 || ^9.0.0 502 | typescript: '>=4.8.4 <6.0.0' 503 | 504 | '@typescript-eslint/parser@8.42.0': 505 | resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==} 506 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 507 | peerDependencies: 508 | eslint: ^8.57.0 || ^9.0.0 509 | typescript: '>=4.8.4 <6.0.0' 510 | 511 | '@typescript-eslint/project-service@8.42.0': 512 | resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==} 513 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 514 | peerDependencies: 515 | typescript: '>=4.8.4 <6.0.0' 516 | 517 | '@typescript-eslint/scope-manager@8.42.0': 518 | resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==} 519 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 520 | 521 | '@typescript-eslint/tsconfig-utils@8.42.0': 522 | resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==} 523 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 524 | peerDependencies: 525 | typescript: '>=4.8.4 <6.0.0' 526 | 527 | '@typescript-eslint/type-utils@8.42.0': 528 | resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==} 529 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 530 | peerDependencies: 531 | eslint: ^8.57.0 || ^9.0.0 532 | typescript: '>=4.8.4 <6.0.0' 533 | 534 | '@typescript-eslint/types@8.42.0': 535 | resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==} 536 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 537 | 538 | '@typescript-eslint/typescript-estree@8.42.0': 539 | resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==} 540 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 541 | peerDependencies: 542 | typescript: '>=4.8.4 <6.0.0' 543 | 544 | '@typescript-eslint/utils@8.42.0': 545 | resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==} 546 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 547 | peerDependencies: 548 | eslint: ^8.57.0 || ^9.0.0 549 | typescript: '>=4.8.4 <6.0.0' 550 | 551 | '@typescript-eslint/visitor-keys@8.42.0': 552 | resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==} 553 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 554 | 555 | '@vitest/coverage-v8@3.1.4': 556 | resolution: {integrity: sha512-G4p6OtioySL+hPV7Y6JHlhpsODbJzt1ndwHAFkyk6vVjpK03PFsKnauZIzcd0PrK4zAbc5lc+jeZ+eNGiMA+iw==} 557 | peerDependencies: 558 | '@vitest/browser': 3.1.4 559 | vitest: 3.1.4 560 | peerDependenciesMeta: 561 | '@vitest/browser': 562 | optional: true 563 | 564 | '@vitest/expect@3.1.4': 565 | resolution: {integrity: sha512-xkD/ljeliyaClDYqHPNCiJ0plY5YIcM0OlRiZizLhlPmpXWpxnGMyTZXOHFhFeG7w9P5PBeL4IdtJ/HeQwTbQA==} 566 | 567 | '@vitest/mocker@3.1.4': 568 | resolution: {integrity: sha512-8IJ3CvwtSw/EFXqWFL8aCMu+YyYXG2WUSrQbViOZkWTKTVicVwZ/YiEZDSqD00kX+v/+W+OnxhNWoeVKorHygA==} 569 | peerDependencies: 570 | msw: ^2.4.9 571 | vite: ^5.0.0 || ^6.0.0 572 | peerDependenciesMeta: 573 | msw: 574 | optional: true 575 | vite: 576 | optional: true 577 | 578 | '@vitest/pretty-format@3.1.4': 579 | resolution: {integrity: sha512-cqv9H9GvAEoTaoq+cYqUTCGscUjKqlJZC7PRwY5FMySVj5J+xOm1KQcCiYHJOEzOKRUhLH4R2pTwvFlWCEScsg==} 580 | 581 | '@vitest/runner@3.1.4': 582 | resolution: {integrity: sha512-djTeF1/vt985I/wpKVFBMWUlk/I7mb5hmD5oP8K9ACRmVXgKTae3TUOtXAEBfslNKPzUQvnKhNd34nnRSYgLNQ==} 583 | 584 | '@vitest/snapshot@3.1.4': 585 | resolution: {integrity: sha512-JPHf68DvuO7vilmvwdPr9TS0SuuIzHvxeaCkxYcCD4jTk67XwL45ZhEHFKIuCm8CYstgI6LZ4XbwD6ANrwMpFg==} 586 | 587 | '@vitest/spy@3.1.4': 588 | resolution: {integrity: sha512-Xg1bXhu+vtPXIodYN369M86K8shGLouNjoVI78g8iAq2rFoHFdajNvJJ5A/9bPMFcfQqdaCpOgWKEoMQg/s0Yg==} 589 | 590 | '@vitest/utils@3.1.4': 591 | resolution: {integrity: sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==} 592 | 593 | acorn-jsx@5.3.2: 594 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 595 | peerDependencies: 596 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 597 | 598 | acorn@8.15.0: 599 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 600 | engines: {node: '>=0.4.0'} 601 | hasBin: true 602 | 603 | ajv@6.12.6: 604 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 605 | 606 | ansi-regex@5.0.1: 607 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 608 | engines: {node: '>=8'} 609 | 610 | ansi-regex@6.1.0: 611 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 612 | engines: {node: '>=12'} 613 | 614 | ansi-styles@4.3.0: 615 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 616 | engines: {node: '>=8'} 617 | 618 | ansi-styles@6.2.1: 619 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 620 | engines: {node: '>=12'} 621 | 622 | argparse@2.0.1: 623 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 624 | 625 | assertion-error@2.0.1: 626 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 627 | engines: {node: '>=12'} 628 | 629 | balanced-match@1.0.2: 630 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 631 | 632 | brace-expansion@1.1.12: 633 | resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 634 | 635 | brace-expansion@2.0.2: 636 | resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 637 | 638 | braces@3.0.3: 639 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 640 | engines: {node: '>=8'} 641 | 642 | cac@6.7.14: 643 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 644 | engines: {node: '>=8'} 645 | 646 | callsites@3.1.0: 647 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 648 | engines: {node: '>=6'} 649 | 650 | chai@5.2.0: 651 | resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} 652 | engines: {node: '>=12'} 653 | 654 | chalk@4.1.2: 655 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 656 | engines: {node: '>=10'} 657 | 658 | check-error@2.1.1: 659 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 660 | engines: {node: '>= 16'} 661 | 662 | color-convert@2.0.1: 663 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 664 | engines: {node: '>=7.0.0'} 665 | 666 | color-name@1.1.4: 667 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 668 | 669 | concat-map@0.0.1: 670 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 671 | 672 | cross-spawn@7.0.6: 673 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 674 | engines: {node: '>= 8'} 675 | 676 | debug@4.4.1: 677 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 678 | engines: {node: '>=6.0'} 679 | peerDependencies: 680 | supports-color: '*' 681 | peerDependenciesMeta: 682 | supports-color: 683 | optional: true 684 | 685 | deep-eql@5.0.2: 686 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 687 | engines: {node: '>=6'} 688 | 689 | deep-is@0.1.4: 690 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 691 | 692 | deepmerge@4.3.1: 693 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 694 | engines: {node: '>=0.10.0'} 695 | 696 | eastasianwidth@0.2.0: 697 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 698 | 699 | emoji-regex@8.0.0: 700 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 701 | 702 | emoji-regex@9.2.2: 703 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 704 | 705 | es-module-lexer@1.7.0: 706 | resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 707 | 708 | esbuild@0.25.0: 709 | resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} 710 | engines: {node: '>=18'} 711 | hasBin: true 712 | 713 | escape-string-regexp@4.0.0: 714 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 715 | engines: {node: '>=10'} 716 | 717 | eslint-scope@8.4.0: 718 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 719 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 720 | 721 | eslint-visitor-keys@3.4.3: 722 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 723 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 724 | 725 | eslint-visitor-keys@4.2.1: 726 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 727 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 728 | 729 | eslint@9.34.0: 730 | resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} 731 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 732 | hasBin: true 733 | peerDependencies: 734 | jiti: '*' 735 | peerDependenciesMeta: 736 | jiti: 737 | optional: true 738 | 739 | espree@10.4.0: 740 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 741 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 742 | 743 | esquery@1.6.0: 744 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 745 | engines: {node: '>=0.10'} 746 | 747 | esrecurse@4.3.0: 748 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 749 | engines: {node: '>=4.0'} 750 | 751 | estraverse@5.3.0: 752 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 753 | engines: {node: '>=4.0'} 754 | 755 | estree-walker@2.0.2: 756 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 757 | 758 | estree-walker@3.0.3: 759 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 760 | 761 | esutils@2.0.3: 762 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 763 | engines: {node: '>=0.10.0'} 764 | 765 | expect-type@1.2.1: 766 | resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} 767 | engines: {node: '>=12.0.0'} 768 | 769 | fast-deep-equal@3.1.3: 770 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 771 | 772 | fast-glob@3.3.3: 773 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 774 | engines: {node: '>=8.6.0'} 775 | 776 | fast-json-stable-stringify@2.1.0: 777 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 778 | 779 | fast-levenshtein@2.0.6: 780 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 781 | 782 | fastq@1.19.1: 783 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 784 | 785 | fdir@6.4.5: 786 | resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} 787 | peerDependencies: 788 | picomatch: ^3 || ^4 789 | peerDependenciesMeta: 790 | picomatch: 791 | optional: true 792 | 793 | file-entry-cache@8.0.0: 794 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 795 | engines: {node: '>=16.0.0'} 796 | 797 | fill-range@7.1.1: 798 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 799 | engines: {node: '>=8'} 800 | 801 | find-up@5.0.0: 802 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 803 | engines: {node: '>=10'} 804 | 805 | flat-cache@4.0.1: 806 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 807 | engines: {node: '>=16'} 808 | 809 | flatted@3.3.3: 810 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 811 | 812 | foreground-child@3.3.1: 813 | resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 814 | engines: {node: '>=14'} 815 | 816 | fsevents@2.3.3: 817 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 818 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 819 | os: [darwin] 820 | 821 | function-bind@1.1.2: 822 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 823 | 824 | gha-utils@0.4.1: 825 | resolution: {integrity: sha512-KHWQj6SQWFfsTt4epwcyx/LfLUU/3bFFkGhfkzpFKV/77w46Nm5vt8O+3KVk10sfON+3Ca578RZk0hQnLMUtCw==} 826 | 827 | glob-parent@5.1.2: 828 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 829 | engines: {node: '>= 6'} 830 | 831 | glob-parent@6.0.2: 832 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 833 | engines: {node: '>=10.13.0'} 834 | 835 | glob@10.4.5: 836 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 837 | hasBin: true 838 | 839 | globals@14.0.0: 840 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 841 | engines: {node: '>=18'} 842 | 843 | graphemer@1.4.0: 844 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 845 | 846 | has-flag@4.0.0: 847 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 848 | engines: {node: '>=8'} 849 | 850 | hasown@2.0.2: 851 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 852 | engines: {node: '>= 0.4'} 853 | 854 | html-escaper@2.0.2: 855 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 856 | 857 | ignore@5.3.2: 858 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 859 | engines: {node: '>= 4'} 860 | 861 | ignore@7.0.5: 862 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 863 | engines: {node: '>= 4'} 864 | 865 | import-fresh@3.3.1: 866 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 867 | engines: {node: '>=6'} 868 | 869 | imurmurhash@0.1.4: 870 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 871 | engines: {node: '>=0.8.19'} 872 | 873 | is-core-module@2.16.1: 874 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 875 | engines: {node: '>= 0.4'} 876 | 877 | is-extglob@2.1.1: 878 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 879 | engines: {node: '>=0.10.0'} 880 | 881 | is-fullwidth-code-point@3.0.0: 882 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 883 | engines: {node: '>=8'} 884 | 885 | is-glob@4.0.3: 886 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 887 | engines: {node: '>=0.10.0'} 888 | 889 | is-module@1.0.0: 890 | resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} 891 | 892 | is-number@7.0.0: 893 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 894 | engines: {node: '>=0.12.0'} 895 | 896 | isexe@2.0.0: 897 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 898 | 899 | istanbul-lib-coverage@3.2.2: 900 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 901 | engines: {node: '>=8'} 902 | 903 | istanbul-lib-report@3.0.1: 904 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 905 | engines: {node: '>=10'} 906 | 907 | istanbul-lib-source-maps@5.0.6: 908 | resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} 909 | engines: {node: '>=10'} 910 | 911 | istanbul-reports@3.1.7: 912 | resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} 913 | engines: {node: '>=8'} 914 | 915 | jackspeak@3.4.3: 916 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 917 | 918 | jiti@2.5.1: 919 | resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} 920 | hasBin: true 921 | 922 | js-yaml@4.1.0: 923 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 924 | hasBin: true 925 | 926 | json-buffer@3.0.1: 927 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 928 | 929 | json-schema-traverse@0.4.1: 930 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 931 | 932 | json-stable-stringify-without-jsonify@1.0.1: 933 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 934 | 935 | keyv@4.5.4: 936 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 937 | 938 | lefthook-darwin-arm64@1.12.3: 939 | resolution: {integrity: sha512-j1lwaosWRy3vhz8oQgCS1M6EUFN95aIYeNuqkczsBoAA6BDNAmVP1ctYEIYUK4bYaIgENbqbA9prYMAhyzh6Og==} 940 | cpu: [arm64] 941 | os: [darwin] 942 | 943 | lefthook-darwin-x64@1.12.3: 944 | resolution: {integrity: sha512-x6aWFfLQX4m5zQ4X9zh5+hHOE5XTvNjz2zB9DI+xbIBLs2RRg0xJNT3OfgSrBU1QtEBneJ5dRQP5nl47td9GDQ==} 945 | cpu: [x64] 946 | os: [darwin] 947 | 948 | lefthook-freebsd-arm64@1.12.3: 949 | resolution: {integrity: sha512-41OmulLqVZ0EOHmmHouJrpL59SwDD7FLoso4RsQVIBPaf8fHacdLo07Ye28VWQ5XolZQvnWcr1YXKo4JhqQMyw==} 950 | cpu: [arm64] 951 | os: [freebsd] 952 | 953 | lefthook-freebsd-x64@1.12.3: 954 | resolution: {integrity: sha512-741/JRCJIS++hgYEH2uefN4FsH872V7gy2zDhcfQofiZnWP7+qhl4Wmwi8IpjIu4X7hLOC4cT18LOVU5L8KV9Q==} 955 | cpu: [x64] 956 | os: [freebsd] 957 | 958 | lefthook-linux-arm64@1.12.3: 959 | resolution: {integrity: sha512-BXIy1aDFZmFgmebJliNrEqZfX1lSOD4b/USvANv1UirFrNgTq5SRssd1CKfflT2PwKX6LsJTD4WabLLWZOxp9A==} 960 | cpu: [arm64] 961 | os: [linux] 962 | 963 | lefthook-linux-x64@1.12.3: 964 | resolution: {integrity: sha512-FRdwdj5jsQAP2eVrtkVUqMqYNCbQ2Ix84izy29/BvLlu/hVypAGbDfUkgFnsmAd6ZsCBeYCEtPuqyg3E3SO0Rg==} 965 | cpu: [x64] 966 | os: [linux] 967 | 968 | lefthook-openbsd-arm64@1.12.3: 969 | resolution: {integrity: sha512-tch5wXY4GOjKAYohH7OFoxNdVHuUSYt2Pulo2VTkMYEG8IrvJnRO5MkvgHtKDHzU5mfABQYv5+ccJykDx5hQWA==} 970 | cpu: [arm64] 971 | os: [openbsd] 972 | 973 | lefthook-openbsd-x64@1.12.3: 974 | resolution: {integrity: sha512-IHbHg/rUFXrAN7LnjcQEtutCHBaD49CZge96Hpk0GZ2eEG5GTCNRnUyEf+Kf3+RTqHFgwtADdpeDa/ZaGZTM4g==} 975 | cpu: [x64] 976 | os: [openbsd] 977 | 978 | lefthook-windows-arm64@1.12.3: 979 | resolution: {integrity: sha512-wghcE5TSpb+mbtemUV6uAo9hEK09kxRzhf2nPdeDX+fw42cL2TGZsbaCnDyzaY144C+L2/wEWrLIHJMnZYkuqA==} 980 | cpu: [arm64] 981 | os: [win32] 982 | 983 | lefthook-windows-x64@1.12.3: 984 | resolution: {integrity: sha512-7Co/L8e2x2hGC1L33jDJ4ZlTkO3PJm25GOGpLfN1kqwhGB/uzMLeTI/PBczjlIN8isUv26ouNd9rVR7Bibrwyg==} 985 | cpu: [x64] 986 | os: [win32] 987 | 988 | lefthook@1.12.3: 989 | resolution: {integrity: sha512-huMg+mGp6wHPjkaLdchuOvxVRMzvz6OVdhivatiH2Qn47O5Zm46jwzbVPYIanX6N/8ZTjGLBxv8tZ0KYmKt/Jg==} 990 | hasBin: true 991 | 992 | levn@0.4.1: 993 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 994 | engines: {node: '>= 0.8.0'} 995 | 996 | locate-path@6.0.0: 997 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 998 | engines: {node: '>=10'} 999 | 1000 | lodash.merge@4.6.2: 1001 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1002 | 1003 | loupe@3.1.3: 1004 | resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} 1005 | 1006 | lru-cache@10.4.3: 1007 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1008 | 1009 | magic-string@0.30.17: 1010 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1011 | 1012 | magicast@0.3.5: 1013 | resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} 1014 | 1015 | make-dir@4.0.0: 1016 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 1017 | engines: {node: '>=10'} 1018 | 1019 | merge2@1.4.1: 1020 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1021 | engines: {node: '>= 8'} 1022 | 1023 | micromatch@4.0.8: 1024 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1025 | engines: {node: '>=8.6'} 1026 | 1027 | minimatch@3.1.2: 1028 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1029 | 1030 | minimatch@9.0.5: 1031 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1032 | engines: {node: '>=16 || 14 >=14.17'} 1033 | 1034 | minipass@7.1.2: 1035 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1036 | engines: {node: '>=16 || 14 >=14.17'} 1037 | 1038 | ms@2.1.3: 1039 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1040 | 1041 | nanoid@3.3.8: 1042 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 1043 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1044 | hasBin: true 1045 | 1046 | natural-compare@1.4.0: 1047 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1048 | 1049 | optionator@0.9.4: 1050 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1051 | engines: {node: '>= 0.8.0'} 1052 | 1053 | p-limit@3.1.0: 1054 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1055 | engines: {node: '>=10'} 1056 | 1057 | p-locate@5.0.0: 1058 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1059 | engines: {node: '>=10'} 1060 | 1061 | package-json-from-dist@1.0.1: 1062 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1063 | 1064 | parent-module@1.0.1: 1065 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1066 | engines: {node: '>=6'} 1067 | 1068 | path-exists@4.0.0: 1069 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1070 | engines: {node: '>=8'} 1071 | 1072 | path-key@3.1.1: 1073 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1074 | engines: {node: '>=8'} 1075 | 1076 | path-parse@1.0.7: 1077 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1078 | 1079 | path-scurry@1.11.1: 1080 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1081 | engines: {node: '>=16 || 14 >=14.18'} 1082 | 1083 | pathe@2.0.3: 1084 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1085 | 1086 | pathval@2.0.0: 1087 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1088 | engines: {node: '>= 14.16'} 1089 | 1090 | picocolors@1.1.1: 1091 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1092 | 1093 | picomatch@2.3.1: 1094 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1095 | engines: {node: '>=8.6'} 1096 | 1097 | picomatch@4.0.2: 1098 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1099 | engines: {node: '>=12'} 1100 | 1101 | postcss@8.5.3: 1102 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 1103 | engines: {node: ^10 || ^12 || >=14} 1104 | 1105 | prelude-ls@1.2.1: 1106 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1107 | engines: {node: '>= 0.8.0'} 1108 | 1109 | prettier-plugin-organize-imports@4.2.0: 1110 | resolution: {integrity: sha512-Zdy27UhlmyvATZi67BTnLcKTo8fm6Oik59Sz6H64PgZJVs6NJpPD1mT240mmJn62c98/QaL+r3kx9Q3gRpDajg==} 1111 | peerDependencies: 1112 | prettier: '>=2.0' 1113 | typescript: '>=2.9' 1114 | vue-tsc: ^2.1.0 || 3 1115 | peerDependenciesMeta: 1116 | vue-tsc: 1117 | optional: true 1118 | 1119 | prettier@3.6.2: 1120 | resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 1121 | engines: {node: '>=14'} 1122 | hasBin: true 1123 | 1124 | punycode@2.3.1: 1125 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1126 | engines: {node: '>=6'} 1127 | 1128 | queue-microtask@1.2.3: 1129 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1130 | 1131 | resolve-from@4.0.0: 1132 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1133 | engines: {node: '>=4'} 1134 | 1135 | resolve@1.22.10: 1136 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1137 | engines: {node: '>= 0.4'} 1138 | hasBin: true 1139 | 1140 | reusify@1.1.0: 1141 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1142 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1143 | 1144 | rollup@4.46.2: 1145 | resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} 1146 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1147 | hasBin: true 1148 | 1149 | run-parallel@1.2.0: 1150 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1151 | 1152 | semver@7.7.2: 1153 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1154 | engines: {node: '>=10'} 1155 | hasBin: true 1156 | 1157 | shebang-command@2.0.0: 1158 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1159 | engines: {node: '>=8'} 1160 | 1161 | shebang-regex@3.0.0: 1162 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1163 | engines: {node: '>=8'} 1164 | 1165 | siginfo@2.0.0: 1166 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1167 | 1168 | signal-exit@4.1.0: 1169 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1170 | engines: {node: '>=14'} 1171 | 1172 | source-map-js@1.2.1: 1173 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1174 | engines: {node: '>=0.10.0'} 1175 | 1176 | stackback@0.0.2: 1177 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1178 | 1179 | std-env@3.9.0: 1180 | resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} 1181 | 1182 | string-width@4.2.3: 1183 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1184 | engines: {node: '>=8'} 1185 | 1186 | string-width@5.1.2: 1187 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1188 | engines: {node: '>=12'} 1189 | 1190 | strip-ansi@6.0.1: 1191 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1192 | engines: {node: '>=8'} 1193 | 1194 | strip-ansi@7.1.0: 1195 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1196 | engines: {node: '>=12'} 1197 | 1198 | strip-json-comments@3.1.1: 1199 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1200 | engines: {node: '>=8'} 1201 | 1202 | supports-color@7.2.0: 1203 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1204 | engines: {node: '>=8'} 1205 | 1206 | supports-preserve-symlinks-flag@1.0.0: 1207 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1208 | engines: {node: '>= 0.4'} 1209 | 1210 | test-exclude@7.0.1: 1211 | resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} 1212 | engines: {node: '>=18'} 1213 | 1214 | tinybench@2.9.0: 1215 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1216 | 1217 | tinyexec@0.3.2: 1218 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1219 | 1220 | tinyglobby@0.2.14: 1221 | resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} 1222 | engines: {node: '>=12.0.0'} 1223 | 1224 | tinypool@1.0.2: 1225 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 1226 | engines: {node: ^18.0.0 || >=20.0.0} 1227 | 1228 | tinyrainbow@2.0.0: 1229 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1230 | engines: {node: '>=14.0.0'} 1231 | 1232 | tinyspy@3.0.2: 1233 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1234 | engines: {node: '>=14.0.0'} 1235 | 1236 | to-regex-range@5.0.1: 1237 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1238 | engines: {node: '>=8.0'} 1239 | 1240 | ts-api-utils@2.1.0: 1241 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1242 | engines: {node: '>=18.12'} 1243 | peerDependencies: 1244 | typescript: '>=4.8.4' 1245 | 1246 | tslib@2.8.1: 1247 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1248 | 1249 | type-check@0.4.0: 1250 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1251 | engines: {node: '>= 0.8.0'} 1252 | 1253 | typescript-eslint@8.42.0: 1254 | resolution: {integrity: sha512-ozR/rQn+aQXQxh1YgbCzQWDFrsi9mcg+1PM3l/z5o1+20P7suOIaNg515bpr/OYt6FObz/NHcBstydDLHWeEKg==} 1255 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1256 | peerDependencies: 1257 | eslint: ^8.57.0 || ^9.0.0 1258 | typescript: '>=4.8.4 <6.0.0' 1259 | 1260 | typescript@5.9.2: 1261 | resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 1262 | engines: {node: '>=14.17'} 1263 | hasBin: true 1264 | 1265 | undici-types@7.10.0: 1266 | resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} 1267 | 1268 | uri-js@4.4.1: 1269 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1270 | 1271 | vite-node@3.1.4: 1272 | resolution: {integrity: sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==} 1273 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1274 | hasBin: true 1275 | 1276 | vite@6.2.0: 1277 | resolution: {integrity: sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==} 1278 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1279 | hasBin: true 1280 | peerDependencies: 1281 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1282 | jiti: '>=1.21.0' 1283 | less: '*' 1284 | lightningcss: ^1.21.0 1285 | sass: '*' 1286 | sass-embedded: '*' 1287 | stylus: '*' 1288 | sugarss: '*' 1289 | terser: ^5.16.0 1290 | tsx: ^4.8.1 1291 | yaml: ^2.4.2 1292 | peerDependenciesMeta: 1293 | '@types/node': 1294 | optional: true 1295 | jiti: 1296 | optional: true 1297 | less: 1298 | optional: true 1299 | lightningcss: 1300 | optional: true 1301 | sass: 1302 | optional: true 1303 | sass-embedded: 1304 | optional: true 1305 | stylus: 1306 | optional: true 1307 | sugarss: 1308 | optional: true 1309 | terser: 1310 | optional: true 1311 | tsx: 1312 | optional: true 1313 | yaml: 1314 | optional: true 1315 | 1316 | vitest@3.1.4: 1317 | resolution: {integrity: sha512-Ta56rT7uWxCSJXlBtKgIlApJnT6e6IGmTYxYcmxjJ4ujuZDI59GUQgVDObXXJujOmPDBYXHK1qmaGtneu6TNIQ==} 1318 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1319 | hasBin: true 1320 | peerDependencies: 1321 | '@edge-runtime/vm': '*' 1322 | '@types/debug': ^4.1.12 1323 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1324 | '@vitest/browser': 3.1.4 1325 | '@vitest/ui': 3.1.4 1326 | happy-dom: '*' 1327 | jsdom: '*' 1328 | peerDependenciesMeta: 1329 | '@edge-runtime/vm': 1330 | optional: true 1331 | '@types/debug': 1332 | optional: true 1333 | '@types/node': 1334 | optional: true 1335 | '@vitest/browser': 1336 | optional: true 1337 | '@vitest/ui': 1338 | optional: true 1339 | happy-dom: 1340 | optional: true 1341 | jsdom: 1342 | optional: true 1343 | 1344 | which@2.0.2: 1345 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1346 | engines: {node: '>= 8'} 1347 | hasBin: true 1348 | 1349 | why-is-node-running@2.3.0: 1350 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1351 | engines: {node: '>=8'} 1352 | hasBin: true 1353 | 1354 | word-wrap@1.2.5: 1355 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1356 | engines: {node: '>=0.10.0'} 1357 | 1358 | wrap-ansi@7.0.0: 1359 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1360 | engines: {node: '>=10'} 1361 | 1362 | wrap-ansi@8.1.0: 1363 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1364 | engines: {node: '>=12'} 1365 | 1366 | yocto-queue@0.1.0: 1367 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1368 | engines: {node: '>=10'} 1369 | 1370 | snapshots: 1371 | 1372 | '@ampproject/remapping@2.3.0': 1373 | dependencies: 1374 | '@jridgewell/gen-mapping': 0.3.8 1375 | '@jridgewell/trace-mapping': 0.3.25 1376 | 1377 | '@babel/helper-string-parser@7.25.9': {} 1378 | 1379 | '@babel/helper-validator-identifier@7.25.9': {} 1380 | 1381 | '@babel/parser@7.26.9': 1382 | dependencies: 1383 | '@babel/types': 7.26.9 1384 | 1385 | '@babel/types@7.26.9': 1386 | dependencies: 1387 | '@babel/helper-string-parser': 7.25.9 1388 | '@babel/helper-validator-identifier': 7.25.9 1389 | 1390 | '@bcoe/v8-coverage@1.0.2': {} 1391 | 1392 | '@esbuild/aix-ppc64@0.25.0': 1393 | optional: true 1394 | 1395 | '@esbuild/android-arm64@0.25.0': 1396 | optional: true 1397 | 1398 | '@esbuild/android-arm@0.25.0': 1399 | optional: true 1400 | 1401 | '@esbuild/android-x64@0.25.0': 1402 | optional: true 1403 | 1404 | '@esbuild/darwin-arm64@0.25.0': 1405 | optional: true 1406 | 1407 | '@esbuild/darwin-x64@0.25.0': 1408 | optional: true 1409 | 1410 | '@esbuild/freebsd-arm64@0.25.0': 1411 | optional: true 1412 | 1413 | '@esbuild/freebsd-x64@0.25.0': 1414 | optional: true 1415 | 1416 | '@esbuild/linux-arm64@0.25.0': 1417 | optional: true 1418 | 1419 | '@esbuild/linux-arm@0.25.0': 1420 | optional: true 1421 | 1422 | '@esbuild/linux-ia32@0.25.0': 1423 | optional: true 1424 | 1425 | '@esbuild/linux-loong64@0.25.0': 1426 | optional: true 1427 | 1428 | '@esbuild/linux-mips64el@0.25.0': 1429 | optional: true 1430 | 1431 | '@esbuild/linux-ppc64@0.25.0': 1432 | optional: true 1433 | 1434 | '@esbuild/linux-riscv64@0.25.0': 1435 | optional: true 1436 | 1437 | '@esbuild/linux-s390x@0.25.0': 1438 | optional: true 1439 | 1440 | '@esbuild/linux-x64@0.25.0': 1441 | optional: true 1442 | 1443 | '@esbuild/netbsd-arm64@0.25.0': 1444 | optional: true 1445 | 1446 | '@esbuild/netbsd-x64@0.25.0': 1447 | optional: true 1448 | 1449 | '@esbuild/openbsd-arm64@0.25.0': 1450 | optional: true 1451 | 1452 | '@esbuild/openbsd-x64@0.25.0': 1453 | optional: true 1454 | 1455 | '@esbuild/sunos-x64@0.25.0': 1456 | optional: true 1457 | 1458 | '@esbuild/win32-arm64@0.25.0': 1459 | optional: true 1460 | 1461 | '@esbuild/win32-ia32@0.25.0': 1462 | optional: true 1463 | 1464 | '@esbuild/win32-x64@0.25.0': 1465 | optional: true 1466 | 1467 | '@eslint-community/eslint-utils@4.8.0(eslint@9.34.0(jiti@2.5.1))': 1468 | dependencies: 1469 | eslint: 9.34.0(jiti@2.5.1) 1470 | eslint-visitor-keys: 3.4.3 1471 | 1472 | '@eslint-community/regexpp@4.12.1': {} 1473 | 1474 | '@eslint/config-array@0.21.0': 1475 | dependencies: 1476 | '@eslint/object-schema': 2.1.6 1477 | debug: 4.4.1 1478 | minimatch: 3.1.2 1479 | transitivePeerDependencies: 1480 | - supports-color 1481 | 1482 | '@eslint/config-helpers@0.3.1': {} 1483 | 1484 | '@eslint/core@0.15.2': 1485 | dependencies: 1486 | '@types/json-schema': 7.0.15 1487 | 1488 | '@eslint/eslintrc@3.3.1': 1489 | dependencies: 1490 | ajv: 6.12.6 1491 | debug: 4.4.1 1492 | espree: 10.4.0 1493 | globals: 14.0.0 1494 | ignore: 5.3.2 1495 | import-fresh: 3.3.1 1496 | js-yaml: 4.1.0 1497 | minimatch: 3.1.2 1498 | strip-json-comments: 3.1.1 1499 | transitivePeerDependencies: 1500 | - supports-color 1501 | 1502 | '@eslint/js@9.34.0': {} 1503 | 1504 | '@eslint/js@9.35.0': {} 1505 | 1506 | '@eslint/object-schema@2.1.6': {} 1507 | 1508 | '@eslint/plugin-kit@0.3.5': 1509 | dependencies: 1510 | '@eslint/core': 0.15.2 1511 | levn: 0.4.1 1512 | 1513 | '@humanfs/core@0.19.1': {} 1514 | 1515 | '@humanfs/node@0.16.7': 1516 | dependencies: 1517 | '@humanfs/core': 0.19.1 1518 | '@humanwhocodes/retry': 0.4.3 1519 | 1520 | '@humanwhocodes/module-importer@1.0.1': {} 1521 | 1522 | '@humanwhocodes/retry@0.4.3': {} 1523 | 1524 | '@isaacs/cliui@8.0.2': 1525 | dependencies: 1526 | string-width: 5.1.2 1527 | string-width-cjs: string-width@4.2.3 1528 | strip-ansi: 7.1.0 1529 | strip-ansi-cjs: strip-ansi@6.0.1 1530 | wrap-ansi: 8.1.0 1531 | wrap-ansi-cjs: wrap-ansi@7.0.0 1532 | 1533 | '@istanbuljs/schema@0.1.3': {} 1534 | 1535 | '@jridgewell/gen-mapping@0.3.8': 1536 | dependencies: 1537 | '@jridgewell/set-array': 1.2.1 1538 | '@jridgewell/sourcemap-codec': 1.5.0 1539 | '@jridgewell/trace-mapping': 0.3.25 1540 | 1541 | '@jridgewell/resolve-uri@3.1.2': {} 1542 | 1543 | '@jridgewell/set-array@1.2.1': {} 1544 | 1545 | '@jridgewell/sourcemap-codec@1.5.0': {} 1546 | 1547 | '@jridgewell/trace-mapping@0.3.25': 1548 | dependencies: 1549 | '@jridgewell/resolve-uri': 3.1.2 1550 | '@jridgewell/sourcemap-codec': 1.5.0 1551 | 1552 | '@nodelib/fs.scandir@2.1.5': 1553 | dependencies: 1554 | '@nodelib/fs.stat': 2.0.5 1555 | run-parallel: 1.2.0 1556 | 1557 | '@nodelib/fs.stat@2.0.5': {} 1558 | 1559 | '@nodelib/fs.walk@1.2.8': 1560 | dependencies: 1561 | '@nodelib/fs.scandir': 2.1.5 1562 | fastq: 1.19.1 1563 | 1564 | '@pkgjs/parseargs@0.11.0': 1565 | optional: true 1566 | 1567 | '@rollup/plugin-node-resolve@16.0.1(rollup@4.46.2)': 1568 | dependencies: 1569 | '@rollup/pluginutils': 5.1.4(rollup@4.46.2) 1570 | '@types/resolve': 1.20.2 1571 | deepmerge: 4.3.1 1572 | is-module: 1.0.0 1573 | resolve: 1.22.10 1574 | optionalDependencies: 1575 | rollup: 4.46.2 1576 | 1577 | '@rollup/plugin-typescript@12.1.4(rollup@4.46.2)(tslib@2.8.1)(typescript@5.9.2)': 1578 | dependencies: 1579 | '@rollup/pluginutils': 5.2.0(rollup@4.46.2) 1580 | resolve: 1.22.10 1581 | typescript: 5.9.2 1582 | optionalDependencies: 1583 | rollup: 4.46.2 1584 | tslib: 2.8.1 1585 | 1586 | '@rollup/pluginutils@5.1.4(rollup@4.46.2)': 1587 | dependencies: 1588 | '@types/estree': 1.0.7 1589 | estree-walker: 2.0.2 1590 | picomatch: 4.0.2 1591 | optionalDependencies: 1592 | rollup: 4.46.2 1593 | 1594 | '@rollup/pluginutils@5.2.0(rollup@4.46.2)': 1595 | dependencies: 1596 | '@types/estree': 1.0.8 1597 | estree-walker: 2.0.2 1598 | picomatch: 4.0.2 1599 | optionalDependencies: 1600 | rollup: 4.46.2 1601 | 1602 | '@rollup/rollup-android-arm-eabi@4.46.2': 1603 | optional: true 1604 | 1605 | '@rollup/rollup-android-arm64@4.46.2': 1606 | optional: true 1607 | 1608 | '@rollup/rollup-darwin-arm64@4.46.2': 1609 | optional: true 1610 | 1611 | '@rollup/rollup-darwin-x64@4.46.2': 1612 | optional: true 1613 | 1614 | '@rollup/rollup-freebsd-arm64@4.46.2': 1615 | optional: true 1616 | 1617 | '@rollup/rollup-freebsd-x64@4.46.2': 1618 | optional: true 1619 | 1620 | '@rollup/rollup-linux-arm-gnueabihf@4.46.2': 1621 | optional: true 1622 | 1623 | '@rollup/rollup-linux-arm-musleabihf@4.46.2': 1624 | optional: true 1625 | 1626 | '@rollup/rollup-linux-arm64-gnu@4.46.2': 1627 | optional: true 1628 | 1629 | '@rollup/rollup-linux-arm64-musl@4.46.2': 1630 | optional: true 1631 | 1632 | '@rollup/rollup-linux-loongarch64-gnu@4.46.2': 1633 | optional: true 1634 | 1635 | '@rollup/rollup-linux-ppc64-gnu@4.46.2': 1636 | optional: true 1637 | 1638 | '@rollup/rollup-linux-riscv64-gnu@4.46.2': 1639 | optional: true 1640 | 1641 | '@rollup/rollup-linux-riscv64-musl@4.46.2': 1642 | optional: true 1643 | 1644 | '@rollup/rollup-linux-s390x-gnu@4.46.2': 1645 | optional: true 1646 | 1647 | '@rollup/rollup-linux-x64-gnu@4.46.2': 1648 | optional: true 1649 | 1650 | '@rollup/rollup-linux-x64-musl@4.46.2': 1651 | optional: true 1652 | 1653 | '@rollup/rollup-win32-arm64-msvc@4.46.2': 1654 | optional: true 1655 | 1656 | '@rollup/rollup-win32-ia32-msvc@4.46.2': 1657 | optional: true 1658 | 1659 | '@rollup/rollup-win32-x64-msvc@4.46.2': 1660 | optional: true 1661 | 1662 | '@tsconfig/node24@24.0.1': {} 1663 | 1664 | '@types/estree@1.0.7': {} 1665 | 1666 | '@types/estree@1.0.8': {} 1667 | 1668 | '@types/json-schema@7.0.15': {} 1669 | 1670 | '@types/node@24.3.0': 1671 | dependencies: 1672 | undici-types: 7.10.0 1673 | 1674 | '@types/resolve@1.20.2': {} 1675 | 1676 | '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': 1677 | dependencies: 1678 | '@eslint-community/regexpp': 4.12.1 1679 | '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) 1680 | '@typescript-eslint/scope-manager': 8.42.0 1681 | '@typescript-eslint/type-utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) 1682 | '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) 1683 | '@typescript-eslint/visitor-keys': 8.42.0 1684 | eslint: 9.34.0(jiti@2.5.1) 1685 | graphemer: 1.4.0 1686 | ignore: 7.0.5 1687 | natural-compare: 1.4.0 1688 | ts-api-utils: 2.1.0(typescript@5.9.2) 1689 | typescript: 5.9.2 1690 | transitivePeerDependencies: 1691 | - supports-color 1692 | 1693 | '@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': 1694 | dependencies: 1695 | '@typescript-eslint/scope-manager': 8.42.0 1696 | '@typescript-eslint/types': 8.42.0 1697 | '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) 1698 | '@typescript-eslint/visitor-keys': 8.42.0 1699 | debug: 4.4.1 1700 | eslint: 9.34.0(jiti@2.5.1) 1701 | typescript: 5.9.2 1702 | transitivePeerDependencies: 1703 | - supports-color 1704 | 1705 | '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)': 1706 | dependencies: 1707 | '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) 1708 | '@typescript-eslint/types': 8.42.0 1709 | debug: 4.4.1 1710 | typescript: 5.9.2 1711 | transitivePeerDependencies: 1712 | - supports-color 1713 | 1714 | '@typescript-eslint/scope-manager@8.42.0': 1715 | dependencies: 1716 | '@typescript-eslint/types': 8.42.0 1717 | '@typescript-eslint/visitor-keys': 8.42.0 1718 | 1719 | '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)': 1720 | dependencies: 1721 | typescript: 5.9.2 1722 | 1723 | '@typescript-eslint/type-utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': 1724 | dependencies: 1725 | '@typescript-eslint/types': 8.42.0 1726 | '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) 1727 | '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) 1728 | debug: 4.4.1 1729 | eslint: 9.34.0(jiti@2.5.1) 1730 | ts-api-utils: 2.1.0(typescript@5.9.2) 1731 | typescript: 5.9.2 1732 | transitivePeerDependencies: 1733 | - supports-color 1734 | 1735 | '@typescript-eslint/types@8.42.0': {} 1736 | 1737 | '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)': 1738 | dependencies: 1739 | '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2) 1740 | '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) 1741 | '@typescript-eslint/types': 8.42.0 1742 | '@typescript-eslint/visitor-keys': 8.42.0 1743 | debug: 4.4.1 1744 | fast-glob: 3.3.3 1745 | is-glob: 4.0.3 1746 | minimatch: 9.0.5 1747 | semver: 7.7.2 1748 | ts-api-utils: 2.1.0(typescript@5.9.2) 1749 | typescript: 5.9.2 1750 | transitivePeerDependencies: 1751 | - supports-color 1752 | 1753 | '@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2)': 1754 | dependencies: 1755 | '@eslint-community/eslint-utils': 4.8.0(eslint@9.34.0(jiti@2.5.1)) 1756 | '@typescript-eslint/scope-manager': 8.42.0 1757 | '@typescript-eslint/types': 8.42.0 1758 | '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) 1759 | eslint: 9.34.0(jiti@2.5.1) 1760 | typescript: 5.9.2 1761 | transitivePeerDependencies: 1762 | - supports-color 1763 | 1764 | '@typescript-eslint/visitor-keys@8.42.0': 1765 | dependencies: 1766 | '@typescript-eslint/types': 8.42.0 1767 | eslint-visitor-keys: 4.2.1 1768 | 1769 | '@vitest/coverage-v8@3.1.4(vitest@3.1.4(@types/node@24.3.0)(jiti@2.5.1))': 1770 | dependencies: 1771 | '@ampproject/remapping': 2.3.0 1772 | '@bcoe/v8-coverage': 1.0.2 1773 | debug: 4.4.1 1774 | istanbul-lib-coverage: 3.2.2 1775 | istanbul-lib-report: 3.0.1 1776 | istanbul-lib-source-maps: 5.0.6 1777 | istanbul-reports: 3.1.7 1778 | magic-string: 0.30.17 1779 | magicast: 0.3.5 1780 | std-env: 3.9.0 1781 | test-exclude: 7.0.1 1782 | tinyrainbow: 2.0.0 1783 | vitest: 3.1.4(@types/node@24.3.0)(jiti@2.5.1) 1784 | transitivePeerDependencies: 1785 | - supports-color 1786 | 1787 | '@vitest/expect@3.1.4': 1788 | dependencies: 1789 | '@vitest/spy': 3.1.4 1790 | '@vitest/utils': 3.1.4 1791 | chai: 5.2.0 1792 | tinyrainbow: 2.0.0 1793 | 1794 | '@vitest/mocker@3.1.4(vite@6.2.0(@types/node@24.3.0)(jiti@2.5.1))': 1795 | dependencies: 1796 | '@vitest/spy': 3.1.4 1797 | estree-walker: 3.0.3 1798 | magic-string: 0.30.17 1799 | optionalDependencies: 1800 | vite: 6.2.0(@types/node@24.3.0)(jiti@2.5.1) 1801 | 1802 | '@vitest/pretty-format@3.1.4': 1803 | dependencies: 1804 | tinyrainbow: 2.0.0 1805 | 1806 | '@vitest/runner@3.1.4': 1807 | dependencies: 1808 | '@vitest/utils': 3.1.4 1809 | pathe: 2.0.3 1810 | 1811 | '@vitest/snapshot@3.1.4': 1812 | dependencies: 1813 | '@vitest/pretty-format': 3.1.4 1814 | magic-string: 0.30.17 1815 | pathe: 2.0.3 1816 | 1817 | '@vitest/spy@3.1.4': 1818 | dependencies: 1819 | tinyspy: 3.0.2 1820 | 1821 | '@vitest/utils@3.1.4': 1822 | dependencies: 1823 | '@vitest/pretty-format': 3.1.4 1824 | loupe: 3.1.3 1825 | tinyrainbow: 2.0.0 1826 | 1827 | acorn-jsx@5.3.2(acorn@8.15.0): 1828 | dependencies: 1829 | acorn: 8.15.0 1830 | 1831 | acorn@8.15.0: {} 1832 | 1833 | ajv@6.12.6: 1834 | dependencies: 1835 | fast-deep-equal: 3.1.3 1836 | fast-json-stable-stringify: 2.1.0 1837 | json-schema-traverse: 0.4.1 1838 | uri-js: 4.4.1 1839 | 1840 | ansi-regex@5.0.1: {} 1841 | 1842 | ansi-regex@6.1.0: {} 1843 | 1844 | ansi-styles@4.3.0: 1845 | dependencies: 1846 | color-convert: 2.0.1 1847 | 1848 | ansi-styles@6.2.1: {} 1849 | 1850 | argparse@2.0.1: {} 1851 | 1852 | assertion-error@2.0.1: {} 1853 | 1854 | balanced-match@1.0.2: {} 1855 | 1856 | brace-expansion@1.1.12: 1857 | dependencies: 1858 | balanced-match: 1.0.2 1859 | concat-map: 0.0.1 1860 | 1861 | brace-expansion@2.0.2: 1862 | dependencies: 1863 | balanced-match: 1.0.2 1864 | 1865 | braces@3.0.3: 1866 | dependencies: 1867 | fill-range: 7.1.1 1868 | 1869 | cac@6.7.14: {} 1870 | 1871 | callsites@3.1.0: {} 1872 | 1873 | chai@5.2.0: 1874 | dependencies: 1875 | assertion-error: 2.0.1 1876 | check-error: 2.1.1 1877 | deep-eql: 5.0.2 1878 | loupe: 3.1.3 1879 | pathval: 2.0.0 1880 | 1881 | chalk@4.1.2: 1882 | dependencies: 1883 | ansi-styles: 4.3.0 1884 | supports-color: 7.2.0 1885 | 1886 | check-error@2.1.1: {} 1887 | 1888 | color-convert@2.0.1: 1889 | dependencies: 1890 | color-name: 1.1.4 1891 | 1892 | color-name@1.1.4: {} 1893 | 1894 | concat-map@0.0.1: {} 1895 | 1896 | cross-spawn@7.0.6: 1897 | dependencies: 1898 | path-key: 3.1.1 1899 | shebang-command: 2.0.0 1900 | which: 2.0.2 1901 | 1902 | debug@4.4.1: 1903 | dependencies: 1904 | ms: 2.1.3 1905 | 1906 | deep-eql@5.0.2: {} 1907 | 1908 | deep-is@0.1.4: {} 1909 | 1910 | deepmerge@4.3.1: {} 1911 | 1912 | eastasianwidth@0.2.0: {} 1913 | 1914 | emoji-regex@8.0.0: {} 1915 | 1916 | emoji-regex@9.2.2: {} 1917 | 1918 | es-module-lexer@1.7.0: {} 1919 | 1920 | esbuild@0.25.0: 1921 | optionalDependencies: 1922 | '@esbuild/aix-ppc64': 0.25.0 1923 | '@esbuild/android-arm': 0.25.0 1924 | '@esbuild/android-arm64': 0.25.0 1925 | '@esbuild/android-x64': 0.25.0 1926 | '@esbuild/darwin-arm64': 0.25.0 1927 | '@esbuild/darwin-x64': 0.25.0 1928 | '@esbuild/freebsd-arm64': 0.25.0 1929 | '@esbuild/freebsd-x64': 0.25.0 1930 | '@esbuild/linux-arm': 0.25.0 1931 | '@esbuild/linux-arm64': 0.25.0 1932 | '@esbuild/linux-ia32': 0.25.0 1933 | '@esbuild/linux-loong64': 0.25.0 1934 | '@esbuild/linux-mips64el': 0.25.0 1935 | '@esbuild/linux-ppc64': 0.25.0 1936 | '@esbuild/linux-riscv64': 0.25.0 1937 | '@esbuild/linux-s390x': 0.25.0 1938 | '@esbuild/linux-x64': 0.25.0 1939 | '@esbuild/netbsd-arm64': 0.25.0 1940 | '@esbuild/netbsd-x64': 0.25.0 1941 | '@esbuild/openbsd-arm64': 0.25.0 1942 | '@esbuild/openbsd-x64': 0.25.0 1943 | '@esbuild/sunos-x64': 0.25.0 1944 | '@esbuild/win32-arm64': 0.25.0 1945 | '@esbuild/win32-ia32': 0.25.0 1946 | '@esbuild/win32-x64': 0.25.0 1947 | 1948 | escape-string-regexp@4.0.0: {} 1949 | 1950 | eslint-scope@8.4.0: 1951 | dependencies: 1952 | esrecurse: 4.3.0 1953 | estraverse: 5.3.0 1954 | 1955 | eslint-visitor-keys@3.4.3: {} 1956 | 1957 | eslint-visitor-keys@4.2.1: {} 1958 | 1959 | eslint@9.34.0(jiti@2.5.1): 1960 | dependencies: 1961 | '@eslint-community/eslint-utils': 4.8.0(eslint@9.34.0(jiti@2.5.1)) 1962 | '@eslint-community/regexpp': 4.12.1 1963 | '@eslint/config-array': 0.21.0 1964 | '@eslint/config-helpers': 0.3.1 1965 | '@eslint/core': 0.15.2 1966 | '@eslint/eslintrc': 3.3.1 1967 | '@eslint/js': 9.34.0 1968 | '@eslint/plugin-kit': 0.3.5 1969 | '@humanfs/node': 0.16.7 1970 | '@humanwhocodes/module-importer': 1.0.1 1971 | '@humanwhocodes/retry': 0.4.3 1972 | '@types/estree': 1.0.8 1973 | '@types/json-schema': 7.0.15 1974 | ajv: 6.12.6 1975 | chalk: 4.1.2 1976 | cross-spawn: 7.0.6 1977 | debug: 4.4.1 1978 | escape-string-regexp: 4.0.0 1979 | eslint-scope: 8.4.0 1980 | eslint-visitor-keys: 4.2.1 1981 | espree: 10.4.0 1982 | esquery: 1.6.0 1983 | esutils: 2.0.3 1984 | fast-deep-equal: 3.1.3 1985 | file-entry-cache: 8.0.0 1986 | find-up: 5.0.0 1987 | glob-parent: 6.0.2 1988 | ignore: 5.3.2 1989 | imurmurhash: 0.1.4 1990 | is-glob: 4.0.3 1991 | json-stable-stringify-without-jsonify: 1.0.1 1992 | lodash.merge: 4.6.2 1993 | minimatch: 3.1.2 1994 | natural-compare: 1.4.0 1995 | optionator: 0.9.4 1996 | optionalDependencies: 1997 | jiti: 2.5.1 1998 | transitivePeerDependencies: 1999 | - supports-color 2000 | 2001 | espree@10.4.0: 2002 | dependencies: 2003 | acorn: 8.15.0 2004 | acorn-jsx: 5.3.2(acorn@8.15.0) 2005 | eslint-visitor-keys: 4.2.1 2006 | 2007 | esquery@1.6.0: 2008 | dependencies: 2009 | estraverse: 5.3.0 2010 | 2011 | esrecurse@4.3.0: 2012 | dependencies: 2013 | estraverse: 5.3.0 2014 | 2015 | estraverse@5.3.0: {} 2016 | 2017 | estree-walker@2.0.2: {} 2018 | 2019 | estree-walker@3.0.3: 2020 | dependencies: 2021 | '@types/estree': 1.0.8 2022 | 2023 | esutils@2.0.3: {} 2024 | 2025 | expect-type@1.2.1: {} 2026 | 2027 | fast-deep-equal@3.1.3: {} 2028 | 2029 | fast-glob@3.3.3: 2030 | dependencies: 2031 | '@nodelib/fs.stat': 2.0.5 2032 | '@nodelib/fs.walk': 1.2.8 2033 | glob-parent: 5.1.2 2034 | merge2: 1.4.1 2035 | micromatch: 4.0.8 2036 | 2037 | fast-json-stable-stringify@2.1.0: {} 2038 | 2039 | fast-levenshtein@2.0.6: {} 2040 | 2041 | fastq@1.19.1: 2042 | dependencies: 2043 | reusify: 1.1.0 2044 | 2045 | fdir@6.4.5(picomatch@4.0.2): 2046 | optionalDependencies: 2047 | picomatch: 4.0.2 2048 | 2049 | file-entry-cache@8.0.0: 2050 | dependencies: 2051 | flat-cache: 4.0.1 2052 | 2053 | fill-range@7.1.1: 2054 | dependencies: 2055 | to-regex-range: 5.0.1 2056 | 2057 | find-up@5.0.0: 2058 | dependencies: 2059 | locate-path: 6.0.0 2060 | path-exists: 4.0.0 2061 | 2062 | flat-cache@4.0.1: 2063 | dependencies: 2064 | flatted: 3.3.3 2065 | keyv: 4.5.4 2066 | 2067 | flatted@3.3.3: {} 2068 | 2069 | foreground-child@3.3.1: 2070 | dependencies: 2071 | cross-spawn: 7.0.6 2072 | signal-exit: 4.1.0 2073 | 2074 | fsevents@2.3.3: 2075 | optional: true 2076 | 2077 | function-bind@1.1.2: {} 2078 | 2079 | gha-utils@0.4.1: {} 2080 | 2081 | glob-parent@5.1.2: 2082 | dependencies: 2083 | is-glob: 4.0.3 2084 | 2085 | glob-parent@6.0.2: 2086 | dependencies: 2087 | is-glob: 4.0.3 2088 | 2089 | glob@10.4.5: 2090 | dependencies: 2091 | foreground-child: 3.3.1 2092 | jackspeak: 3.4.3 2093 | minimatch: 9.0.5 2094 | minipass: 7.1.2 2095 | package-json-from-dist: 1.0.1 2096 | path-scurry: 1.11.1 2097 | 2098 | globals@14.0.0: {} 2099 | 2100 | graphemer@1.4.0: {} 2101 | 2102 | has-flag@4.0.0: {} 2103 | 2104 | hasown@2.0.2: 2105 | dependencies: 2106 | function-bind: 1.1.2 2107 | 2108 | html-escaper@2.0.2: {} 2109 | 2110 | ignore@5.3.2: {} 2111 | 2112 | ignore@7.0.5: {} 2113 | 2114 | import-fresh@3.3.1: 2115 | dependencies: 2116 | parent-module: 1.0.1 2117 | resolve-from: 4.0.0 2118 | 2119 | imurmurhash@0.1.4: {} 2120 | 2121 | is-core-module@2.16.1: 2122 | dependencies: 2123 | hasown: 2.0.2 2124 | 2125 | is-extglob@2.1.1: {} 2126 | 2127 | is-fullwidth-code-point@3.0.0: {} 2128 | 2129 | is-glob@4.0.3: 2130 | dependencies: 2131 | is-extglob: 2.1.1 2132 | 2133 | is-module@1.0.0: {} 2134 | 2135 | is-number@7.0.0: {} 2136 | 2137 | isexe@2.0.0: {} 2138 | 2139 | istanbul-lib-coverage@3.2.2: {} 2140 | 2141 | istanbul-lib-report@3.0.1: 2142 | dependencies: 2143 | istanbul-lib-coverage: 3.2.2 2144 | make-dir: 4.0.0 2145 | supports-color: 7.2.0 2146 | 2147 | istanbul-lib-source-maps@5.0.6: 2148 | dependencies: 2149 | '@jridgewell/trace-mapping': 0.3.25 2150 | debug: 4.4.1 2151 | istanbul-lib-coverage: 3.2.2 2152 | transitivePeerDependencies: 2153 | - supports-color 2154 | 2155 | istanbul-reports@3.1.7: 2156 | dependencies: 2157 | html-escaper: 2.0.2 2158 | istanbul-lib-report: 3.0.1 2159 | 2160 | jackspeak@3.4.3: 2161 | dependencies: 2162 | '@isaacs/cliui': 8.0.2 2163 | optionalDependencies: 2164 | '@pkgjs/parseargs': 0.11.0 2165 | 2166 | jiti@2.5.1: {} 2167 | 2168 | js-yaml@4.1.0: 2169 | dependencies: 2170 | argparse: 2.0.1 2171 | 2172 | json-buffer@3.0.1: {} 2173 | 2174 | json-schema-traverse@0.4.1: {} 2175 | 2176 | json-stable-stringify-without-jsonify@1.0.1: {} 2177 | 2178 | keyv@4.5.4: 2179 | dependencies: 2180 | json-buffer: 3.0.1 2181 | 2182 | lefthook-darwin-arm64@1.12.3: 2183 | optional: true 2184 | 2185 | lefthook-darwin-x64@1.12.3: 2186 | optional: true 2187 | 2188 | lefthook-freebsd-arm64@1.12.3: 2189 | optional: true 2190 | 2191 | lefthook-freebsd-x64@1.12.3: 2192 | optional: true 2193 | 2194 | lefthook-linux-arm64@1.12.3: 2195 | optional: true 2196 | 2197 | lefthook-linux-x64@1.12.3: 2198 | optional: true 2199 | 2200 | lefthook-openbsd-arm64@1.12.3: 2201 | optional: true 2202 | 2203 | lefthook-openbsd-x64@1.12.3: 2204 | optional: true 2205 | 2206 | lefthook-windows-arm64@1.12.3: 2207 | optional: true 2208 | 2209 | lefthook-windows-x64@1.12.3: 2210 | optional: true 2211 | 2212 | lefthook@1.12.3: 2213 | optionalDependencies: 2214 | lefthook-darwin-arm64: 1.12.3 2215 | lefthook-darwin-x64: 1.12.3 2216 | lefthook-freebsd-arm64: 1.12.3 2217 | lefthook-freebsd-x64: 1.12.3 2218 | lefthook-linux-arm64: 1.12.3 2219 | lefthook-linux-x64: 1.12.3 2220 | lefthook-openbsd-arm64: 1.12.3 2221 | lefthook-openbsd-x64: 1.12.3 2222 | lefthook-windows-arm64: 1.12.3 2223 | lefthook-windows-x64: 1.12.3 2224 | 2225 | levn@0.4.1: 2226 | dependencies: 2227 | prelude-ls: 1.2.1 2228 | type-check: 0.4.0 2229 | 2230 | locate-path@6.0.0: 2231 | dependencies: 2232 | p-locate: 5.0.0 2233 | 2234 | lodash.merge@4.6.2: {} 2235 | 2236 | loupe@3.1.3: {} 2237 | 2238 | lru-cache@10.4.3: {} 2239 | 2240 | magic-string@0.30.17: 2241 | dependencies: 2242 | '@jridgewell/sourcemap-codec': 1.5.0 2243 | 2244 | magicast@0.3.5: 2245 | dependencies: 2246 | '@babel/parser': 7.26.9 2247 | '@babel/types': 7.26.9 2248 | source-map-js: 1.2.1 2249 | 2250 | make-dir@4.0.0: 2251 | dependencies: 2252 | semver: 7.7.2 2253 | 2254 | merge2@1.4.1: {} 2255 | 2256 | micromatch@4.0.8: 2257 | dependencies: 2258 | braces: 3.0.3 2259 | picomatch: 2.3.1 2260 | 2261 | minimatch@3.1.2: 2262 | dependencies: 2263 | brace-expansion: 1.1.12 2264 | 2265 | minimatch@9.0.5: 2266 | dependencies: 2267 | brace-expansion: 2.0.2 2268 | 2269 | minipass@7.1.2: {} 2270 | 2271 | ms@2.1.3: {} 2272 | 2273 | nanoid@3.3.8: {} 2274 | 2275 | natural-compare@1.4.0: {} 2276 | 2277 | optionator@0.9.4: 2278 | dependencies: 2279 | deep-is: 0.1.4 2280 | fast-levenshtein: 2.0.6 2281 | levn: 0.4.1 2282 | prelude-ls: 1.2.1 2283 | type-check: 0.4.0 2284 | word-wrap: 1.2.5 2285 | 2286 | p-limit@3.1.0: 2287 | dependencies: 2288 | yocto-queue: 0.1.0 2289 | 2290 | p-locate@5.0.0: 2291 | dependencies: 2292 | p-limit: 3.1.0 2293 | 2294 | package-json-from-dist@1.0.1: {} 2295 | 2296 | parent-module@1.0.1: 2297 | dependencies: 2298 | callsites: 3.1.0 2299 | 2300 | path-exists@4.0.0: {} 2301 | 2302 | path-key@3.1.1: {} 2303 | 2304 | path-parse@1.0.7: {} 2305 | 2306 | path-scurry@1.11.1: 2307 | dependencies: 2308 | lru-cache: 10.4.3 2309 | minipass: 7.1.2 2310 | 2311 | pathe@2.0.3: {} 2312 | 2313 | pathval@2.0.0: {} 2314 | 2315 | picocolors@1.1.1: {} 2316 | 2317 | picomatch@2.3.1: {} 2318 | 2319 | picomatch@4.0.2: {} 2320 | 2321 | postcss@8.5.3: 2322 | dependencies: 2323 | nanoid: 3.3.8 2324 | picocolors: 1.1.1 2325 | source-map-js: 1.2.1 2326 | 2327 | prelude-ls@1.2.1: {} 2328 | 2329 | prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2): 2330 | dependencies: 2331 | prettier: 3.6.2 2332 | typescript: 5.9.2 2333 | 2334 | prettier@3.6.2: {} 2335 | 2336 | punycode@2.3.1: {} 2337 | 2338 | queue-microtask@1.2.3: {} 2339 | 2340 | resolve-from@4.0.0: {} 2341 | 2342 | resolve@1.22.10: 2343 | dependencies: 2344 | is-core-module: 2.16.1 2345 | path-parse: 1.0.7 2346 | supports-preserve-symlinks-flag: 1.0.0 2347 | 2348 | reusify@1.1.0: {} 2349 | 2350 | rollup@4.46.2: 2351 | dependencies: 2352 | '@types/estree': 1.0.8 2353 | optionalDependencies: 2354 | '@rollup/rollup-android-arm-eabi': 4.46.2 2355 | '@rollup/rollup-android-arm64': 4.46.2 2356 | '@rollup/rollup-darwin-arm64': 4.46.2 2357 | '@rollup/rollup-darwin-x64': 4.46.2 2358 | '@rollup/rollup-freebsd-arm64': 4.46.2 2359 | '@rollup/rollup-freebsd-x64': 4.46.2 2360 | '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 2361 | '@rollup/rollup-linux-arm-musleabihf': 4.46.2 2362 | '@rollup/rollup-linux-arm64-gnu': 4.46.2 2363 | '@rollup/rollup-linux-arm64-musl': 4.46.2 2364 | '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 2365 | '@rollup/rollup-linux-ppc64-gnu': 4.46.2 2366 | '@rollup/rollup-linux-riscv64-gnu': 4.46.2 2367 | '@rollup/rollup-linux-riscv64-musl': 4.46.2 2368 | '@rollup/rollup-linux-s390x-gnu': 4.46.2 2369 | '@rollup/rollup-linux-x64-gnu': 4.46.2 2370 | '@rollup/rollup-linux-x64-musl': 4.46.2 2371 | '@rollup/rollup-win32-arm64-msvc': 4.46.2 2372 | '@rollup/rollup-win32-ia32-msvc': 4.46.2 2373 | '@rollup/rollup-win32-x64-msvc': 4.46.2 2374 | fsevents: 2.3.3 2375 | 2376 | run-parallel@1.2.0: 2377 | dependencies: 2378 | queue-microtask: 1.2.3 2379 | 2380 | semver@7.7.2: {} 2381 | 2382 | shebang-command@2.0.0: 2383 | dependencies: 2384 | shebang-regex: 3.0.0 2385 | 2386 | shebang-regex@3.0.0: {} 2387 | 2388 | siginfo@2.0.0: {} 2389 | 2390 | signal-exit@4.1.0: {} 2391 | 2392 | source-map-js@1.2.1: {} 2393 | 2394 | stackback@0.0.2: {} 2395 | 2396 | std-env@3.9.0: {} 2397 | 2398 | string-width@4.2.3: 2399 | dependencies: 2400 | emoji-regex: 8.0.0 2401 | is-fullwidth-code-point: 3.0.0 2402 | strip-ansi: 6.0.1 2403 | 2404 | string-width@5.1.2: 2405 | dependencies: 2406 | eastasianwidth: 0.2.0 2407 | emoji-regex: 9.2.2 2408 | strip-ansi: 7.1.0 2409 | 2410 | strip-ansi@6.0.1: 2411 | dependencies: 2412 | ansi-regex: 5.0.1 2413 | 2414 | strip-ansi@7.1.0: 2415 | dependencies: 2416 | ansi-regex: 6.1.0 2417 | 2418 | strip-json-comments@3.1.1: {} 2419 | 2420 | supports-color@7.2.0: 2421 | dependencies: 2422 | has-flag: 4.0.0 2423 | 2424 | supports-preserve-symlinks-flag@1.0.0: {} 2425 | 2426 | test-exclude@7.0.1: 2427 | dependencies: 2428 | '@istanbuljs/schema': 0.1.3 2429 | glob: 10.4.5 2430 | minimatch: 9.0.5 2431 | 2432 | tinybench@2.9.0: {} 2433 | 2434 | tinyexec@0.3.2: {} 2435 | 2436 | tinyglobby@0.2.14: 2437 | dependencies: 2438 | fdir: 6.4.5(picomatch@4.0.2) 2439 | picomatch: 4.0.2 2440 | 2441 | tinypool@1.0.2: {} 2442 | 2443 | tinyrainbow@2.0.0: {} 2444 | 2445 | tinyspy@3.0.2: {} 2446 | 2447 | to-regex-range@5.0.1: 2448 | dependencies: 2449 | is-number: 7.0.0 2450 | 2451 | ts-api-utils@2.1.0(typescript@5.9.2): 2452 | dependencies: 2453 | typescript: 5.9.2 2454 | 2455 | tslib@2.8.1: 2456 | optional: true 2457 | 2458 | type-check@0.4.0: 2459 | dependencies: 2460 | prelude-ls: 1.2.1 2461 | 2462 | typescript-eslint@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2): 2463 | dependencies: 2464 | '@typescript-eslint/eslint-plugin': 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) 2465 | '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) 2466 | '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) 2467 | '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.5.1))(typescript@5.9.2) 2468 | eslint: 9.34.0(jiti@2.5.1) 2469 | typescript: 5.9.2 2470 | transitivePeerDependencies: 2471 | - supports-color 2472 | 2473 | typescript@5.9.2: {} 2474 | 2475 | undici-types@7.10.0: {} 2476 | 2477 | uri-js@4.4.1: 2478 | dependencies: 2479 | punycode: 2.3.1 2480 | 2481 | vite-node@3.1.4(@types/node@24.3.0)(jiti@2.5.1): 2482 | dependencies: 2483 | cac: 6.7.14 2484 | debug: 4.4.1 2485 | es-module-lexer: 1.7.0 2486 | pathe: 2.0.3 2487 | vite: 6.2.0(@types/node@24.3.0)(jiti@2.5.1) 2488 | transitivePeerDependencies: 2489 | - '@types/node' 2490 | - jiti 2491 | - less 2492 | - lightningcss 2493 | - sass 2494 | - sass-embedded 2495 | - stylus 2496 | - sugarss 2497 | - supports-color 2498 | - terser 2499 | - tsx 2500 | - yaml 2501 | 2502 | vite@6.2.0(@types/node@24.3.0)(jiti@2.5.1): 2503 | dependencies: 2504 | esbuild: 0.25.0 2505 | postcss: 8.5.3 2506 | rollup: 4.46.2 2507 | optionalDependencies: 2508 | '@types/node': 24.3.0 2509 | fsevents: 2.3.3 2510 | jiti: 2.5.1 2511 | 2512 | vitest@3.1.4(@types/node@24.3.0)(jiti@2.5.1): 2513 | dependencies: 2514 | '@vitest/expect': 3.1.4 2515 | '@vitest/mocker': 3.1.4(vite@6.2.0(@types/node@24.3.0)(jiti@2.5.1)) 2516 | '@vitest/pretty-format': 3.1.4 2517 | '@vitest/runner': 3.1.4 2518 | '@vitest/snapshot': 3.1.4 2519 | '@vitest/spy': 3.1.4 2520 | '@vitest/utils': 3.1.4 2521 | chai: 5.2.0 2522 | debug: 4.4.1 2523 | expect-type: 1.2.1 2524 | magic-string: 0.30.17 2525 | pathe: 2.0.3 2526 | std-env: 3.9.0 2527 | tinybench: 2.9.0 2528 | tinyexec: 0.3.2 2529 | tinyglobby: 0.2.14 2530 | tinypool: 1.0.2 2531 | tinyrainbow: 2.0.0 2532 | vite: 6.2.0(@types/node@24.3.0)(jiti@2.5.1) 2533 | vite-node: 3.1.4(@types/node@24.3.0)(jiti@2.5.1) 2534 | why-is-node-running: 2.3.0 2535 | optionalDependencies: 2536 | '@types/node': 24.3.0 2537 | transitivePeerDependencies: 2538 | - jiti 2539 | - less 2540 | - lightningcss 2541 | - msw 2542 | - sass 2543 | - sass-embedded 2544 | - stylus 2545 | - sugarss 2546 | - supports-color 2547 | - terser 2548 | - tsx 2549 | - yaml 2550 | 2551 | which@2.0.2: 2552 | dependencies: 2553 | isexe: 2.0.0 2554 | 2555 | why-is-node-running@2.3.0: 2556 | dependencies: 2557 | siginfo: 2.0.0 2558 | stackback: 0.0.2 2559 | 2560 | word-wrap@1.2.5: {} 2561 | 2562 | wrap-ansi@7.0.0: 2563 | dependencies: 2564 | ansi-styles: 4.3.0 2565 | string-width: 4.2.3 2566 | strip-ansi: 6.0.1 2567 | 2568 | wrap-ansi@8.1.0: 2569 | dependencies: 2570 | ansi-styles: 6.2.1 2571 | string-width: 5.1.2 2572 | strip-ansi: 7.1.0 2573 | 2574 | yocto-queue@0.1.0: {} 2575 | --------------------------------------------------------------------------------