├── .npmrc ├── .prettierignore ├── .gitattributes ├── src ├── index.ts ├── internal │ ├── index.ts │ ├── format.ts │ ├── format.test.ts │ ├── arguments.test.ts │ └── arguments.ts ├── bin.ts ├── rank.ts └── rank.test.ts ├── .prettierrc.json ├── pnpm-workspace.yaml ├── .gitignore ├── tsconfig.json ├── tsconfig.build.json ├── vitest.config.ts ├── lefthook.yaml ├── .github ├── dependabot.yaml └── workflows │ └── build.yaml ├── eslint.config.ts ├── LICENSE ├── package.json ├── README.md └── pnpm-lock.yaml /.npmrc: -------------------------------------------------------------------------------- 1 | use-node-version=24.12.0 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | pnpm-lock.yaml 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | pnpm-lock.yaml -diff linguist-generated 2 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { WebsiteRank, getWebsiteRank } from "./rank.js"; 2 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["prettier-plugin-organize-imports"] 3 | } 4 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - . 3 | 4 | onlyBuiltDependencies: 5 | - esbuild 6 | - lefthook 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .* 2 | !.git* 3 | !.npmrc 4 | !.prettier* 5 | 6 | dist/ 7 | node_modules/ 8 | 9 | *.tgz 10 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/node24", 3 | "compilerOptions": { 4 | "noEmit": true 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/internal/index.ts: -------------------------------------------------------------------------------- 1 | export { Arguments, ArgumentsParser } from "./arguments.js"; 2 | export { formatKeywordRank } from "./format.js"; 3 | -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/node24", 3 | "include": ["src"], 4 | "exclude": ["**/*.test.*"], 5 | "compilerOptions": { 6 | "declaration": true, 7 | "outDir": "dist" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitest/config"; 2 | 3 | export default defineConfig({ 4 | test: { 5 | coverage: { 6 | enabled: true, 7 | reporter: ["text"], 8 | thresholds: { 100: true }, 9 | }, 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /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: check diff 17 | run: git diff --exit-code pnpm-lock.yaml {staged_files} 18 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /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: true, 14 | tsconfigRootDir: import.meta.dirname, 15 | }, 16 | }, 17 | }, 18 | ); 19 | -------------------------------------------------------------------------------- /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: Build 2 | on: 3 | workflow_dispatch: 4 | pull_request: 5 | push: 6 | branches: [main] 7 | jobs: 8 | build-library: 9 | name: Build Library 10 | runs-on: ubuntu-24.04 11 | steps: 12 | - name: Checkout Project 13 | uses: actions/checkout@v6.0.1 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 Libarry 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: Package Libarry 34 | run: pnpm pack 35 | -------------------------------------------------------------------------------- /src/bin.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import chalk from "chalk"; 4 | import ora from "ora"; 5 | 6 | import { ArgumentsParser, formatKeywordRank } from "./internal/index.js"; 7 | import { getWebsiteRank, WebsiteRank } from "./rank.js"; 8 | 9 | type RankPromise = Promise; 10 | 11 | const parser = new ArgumentsParser(); 12 | const args = await parser.parse(); 13 | 14 | const rankByKeywords: [string, RankPromise][] = []; 15 | for (const keyword of args.keywords) { 16 | const prom = getWebsiteRank(args.website, keyword, { 17 | maxPage: args.maxPage, 18 | }); 19 | rankByKeywords.push([keyword, prom]); 20 | } 21 | 22 | process.stdout.write(`Ranks for ${chalk.blueBright(args.website)} website:\n`); 23 | 24 | const loading = ora("Getting ranks..."); 25 | loading.start(); 26 | for (const [keyword, prom] of rankByKeywords) { 27 | loading.text = `Getting ranks of ${chalk.blueBright(keyword)} keyword...`; 28 | const str = formatKeywordRank(keyword, await prom); 29 | process.stdout.write(`\r\x1b[K${str}\n`); 30 | } 31 | loading.stop(); 32 | -------------------------------------------------------------------------------- /src/internal/format.ts: -------------------------------------------------------------------------------- 1 | import chalk from "chalk"; 2 | import { WebsiteRank } from "../rank.js"; 3 | 4 | function formatPageRank(rank?: WebsiteRank): string { 5 | if (rank === undefined) return `page ${chalk.blackBright("?")}`; 6 | return rank.page <= 0 7 | ? `page ${chalk.greenBright(rank.page + 1)}` 8 | : `page ${chalk.redBright(rank.page + 1)}`; 9 | } 10 | 11 | function formatRank(rank?: WebsiteRank): string { 12 | if (rank === undefined) return `rank ${chalk.blackBright("?")}`; 13 | return rank.page <= 0 && rank.rank <= 2 14 | ? `rank ${chalk.greenBright(rank.rank + 1)}` 15 | : `rank ${chalk.redBright(rank.rank + 1)}`; 16 | } 17 | 18 | /** 19 | * Formats the rank of a keyword as a string. 20 | * @param keyword - The keyword string. 21 | * @param rank - The rank of the keyword. 22 | * @returns A formatted string. The rank will be displayed as a question mark if it is undefined. 23 | */ 24 | export function formatKeywordRank(keyword: string, rank?: WebsiteRank): string { 25 | return `${formatPageRank(rank)} ${formatRank(rank)} ${keyword}`; 26 | } 27 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /src/internal/format.test.ts: -------------------------------------------------------------------------------- 1 | import chalk from "chalk"; 2 | import { describe, expect, it } from "vitest"; 3 | import { formatKeywordRank } from "./format.js"; 4 | 5 | describe("format the rank of a keyword as a string", () => { 6 | it("should format undefined rank correctly", () => { 7 | const str = formatKeywordRank("a keyword", undefined); 8 | const mark = chalk.blackBright("?"); 9 | expect(str).toBe(`page ${mark} rank ${mark} a keyword`); 10 | }); 11 | 12 | it("should format green rank correctly", () => { 13 | const str = formatKeywordRank("a keyword", { page: 0, rank: 2 }); 14 | expect(str).toBe( 15 | `page ${chalk.greenBright(1)} rank ${chalk.greenBright(3)} a keyword`, 16 | ); 17 | }); 18 | 19 | it("should format green page and red rank correctly", () => { 20 | const str = formatKeywordRank("a keyword", { page: 0, rank: 3 }); 21 | expect(str).toBe( 22 | `page ${chalk.greenBright(1)} rank ${chalk.redBright(4)} a keyword`, 23 | ); 24 | }); 25 | 26 | it("should format red rank correctly", () => { 27 | const str = formatKeywordRank("a keyword", { page: 1, rank: 0 }); 28 | expect(str).toBe( 29 | `page ${chalk.redBright(2)} rank ${chalk.redBright(1)} a keyword`, 30 | ); 31 | }); 32 | }); 33 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "google-rank", 3 | "version": "0.3.0", 4 | "description": "Retrieve the Google search ranking of your website for specific keywords ", 5 | "keywords": [ 6 | "cli", 7 | "google", 8 | "tools", 9 | "seo", 10 | "seotools", 11 | "google-search", 12 | "search-ranking" 13 | ], 14 | "homepage": "https://github.com/threeal/google-rank#readme", 15 | "bugs": { 16 | "url": "https://github.com/threeal/google-rank/issues", 17 | "email": "alfi.maulana.f@gmail.com" 18 | }, 19 | "repository": "github:threeal/google-rank.git", 20 | "license": "MIT", 21 | "author": "Alfi Maulana (https://github.com/threeal)", 22 | "type": "module", 23 | "main": "dist/index.js", 24 | "types": "dist/index.d.ts", 25 | "bin": "dist/bin.js", 26 | "files": [ 27 | "dist" 28 | ], 29 | "scripts": { 30 | "prepack": "tsc -p tsconfig.build.json", 31 | "start": "jiti src/bin.ts", 32 | "test": "vitest run" 33 | }, 34 | "dependencies": { 35 | "chalk": "^5.6.2", 36 | "commander": "^14.0.2", 37 | "google-sr": "^6.0.0", 38 | "ora": "^9.0.0" 39 | }, 40 | "devDependencies": { 41 | "@eslint/js": "^9.39.1", 42 | "@tsconfig/node24": "^24.0.3", 43 | "@types/node": "^24.10.1", 44 | "@vitest/coverage-v8": "^4.0.15", 45 | "eslint": "^9.39.1", 46 | "jiti": "^2.6.1", 47 | "lefthook": "^2.0.2", 48 | "prettier": "^3.6.2", 49 | "prettier-plugin-organize-imports": "^4.3.0", 50 | "typescript": "^5.9.3", 51 | "typescript-eslint": "^8.46.3", 52 | "vitest": "^4.0.15" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/rank.ts: -------------------------------------------------------------------------------- 1 | import { searchWithPages } from "google-sr"; 2 | 3 | /** 4 | * Represents the ranking of a website in Google Search. 5 | */ 6 | export interface WebsiteRank { 7 | /** The search page ranking of the website. */ 8 | page: number; 9 | 10 | /** The ranking of the website on the specified page. */ 11 | rank: number; 12 | } 13 | 14 | /** 15 | * Retrieves the rank of a website in Google search results for a specific keyword. 16 | * @param website - The website URL to check the rank for. 17 | * @param keyword - The keyword to search for. 18 | * @param opts - Additional options. 19 | * @returns A promise that resolves to the rank of the website. Returns `undefined` if the website is not found in the search results. 20 | */ 21 | export async function getWebsiteRank( 22 | website: string, 23 | keyword: string, 24 | opts?: { maxPage?: number }, 25 | ): Promise { 26 | const maxPage = opts?.maxPage ?? 1; 27 | 28 | const res = await searchWithPages({ query: keyword, pages: maxPage }); 29 | 30 | for (let page = 0; page < res.length; ++page) { 31 | const websites: string[] = []; 32 | let prevWebsite = ""; 33 | for (const result of res[page]) { 34 | if (result.link == null) continue; 35 | const website = new URL(result.link).hostname; 36 | if (website !== prevWebsite) websites.push(website); 37 | prevWebsite = website; 38 | } 39 | 40 | for (let rank = 0; rank < websites.length; ++rank) { 41 | if (websites[rank].includes(website)) { 42 | return { page, rank }; 43 | } 44 | } 45 | } 46 | return undefined; 47 | } 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Google Rank 2 | 3 | Google Rank is a tool designed to provide valuable insights into website visibility on [Google](https://www.google.com/) search results. By tracking and monitoring your website's ranking for specific keywords, you can optimize your online presence and effectively reach a wider audience. 4 | 5 | Whether you're an SEO specialist, a digital marketer, or a website owner, Google Rank empowers you to enhance your website's performance in search engine rankings. With this tool, you can stay informed about your website's visibility, make data-driven decisions, and improve your overall online presence. 6 | 7 | ## Installation 8 | 9 | To install the `google-rank` tool globally, run the following command: 10 | 11 | ``` 12 | $ npm install --global google-rank 13 | ``` 14 | 15 | ## Usage 16 | 17 | To retrieve the rank of a website for a specific keyword, run the `google-rank` tool followed by the website URL and the search keyword: 18 | 19 | ``` 20 | $ google-rank wikipedia.org --keywords krakatoa 21 | 22 | Ranks for wikipedia.org website: 23 | page 1 rank 1 krakatoa 24 | ``` 25 | 26 | Multiple keywords can also be specified: 27 | 28 | ``` 29 | $ google-rank wikipedia.org --keywords krakatoa facebook 'social media' 30 | 31 | Ranks for wikipedia.org website: 32 | page 1 rank 1 krakatoa 33 | page 2 rank 2 facebook 34 | page 1 rank 1 social media 35 | ``` 36 | 37 | If the website is not found for the specified keywords, it will output the rank as `?`: 38 | 39 | ``` 40 | $ google-rank wikipedia.org --keywords 'best city to travel' 41 | 42 | Ranks for wikipedia.org website: 43 | page ? rank ? best city to travel 44 | ``` 45 | 46 | ## License 47 | 48 | This project is licensed under the terms of the [MIT License](./LICENSE). 49 | 50 | Copyright © 2023-2025 [Alfi Maulana](https://github.com/threeal) 51 | -------------------------------------------------------------------------------- /src/internal/arguments.test.ts: -------------------------------------------------------------------------------- 1 | import { Readable } from "node:stream"; 2 | import { describe, expect, it, vi } from "vitest"; 3 | 4 | vi.mock("fs", () => ({ 5 | createReadStream: () => 6 | Readable.from(["googlethis\n\n\ngooglethat\n", "googlethis github"]), 7 | })); 8 | 9 | describe("parse program arguments and options", () => { 10 | it("should parse nothing", async () => { 11 | const { ArgumentsParser } = await import("./arguments.js"); 12 | const parser = new ArgumentsParser(); 13 | const cmd = "node test github.com"; 14 | 15 | const prom = parser.parse(cmd.split(" ")); 16 | return expect(prom).resolves.toStrictEqual({ 17 | website: "github.com", 18 | keywords: ["github.com"], 19 | maxPage: 3, 20 | }); 21 | }); 22 | 23 | it("should parse keywords correctly", async () => { 24 | const { ArgumentsParser } = await import("./arguments.js"); 25 | const parser = new ArgumentsParser(); 26 | const cmd = "node test github.com --keywords github gihtub"; 27 | 28 | const prom = parser.parse(cmd.split(" ")); 29 | return expect(prom).resolves.toStrictEqual({ 30 | website: "github.com", 31 | keywords: ["github", "gihtub"], 32 | maxPage: 3, 33 | }); 34 | }); 35 | 36 | it("should parse file correctly", async () => { 37 | const { ArgumentsParser } = await import("./arguments.js"); 38 | const parser = new ArgumentsParser(); 39 | const cmd = "node test github.com --file keywords.txt"; 40 | 41 | const prom = parser.parse(cmd.split(" ")); 42 | return expect(prom).resolves.toStrictEqual({ 43 | website: "github.com", 44 | keywords: ["googlethis", "googlethat", "googlethis github"], 45 | maxPage: 3, 46 | }); 47 | }); 48 | 49 | it("should parse arguments and options correctly", async () => { 50 | const { ArgumentsParser } = await import("./arguments.js"); 51 | const parser = new ArgumentsParser(); 52 | const cmd = 53 | "node test github.com --keywords github gihtub --file keywords.txt --max-page 7"; 54 | 55 | const prom = parser.parse(cmd.split(" ")); 56 | return expect(prom).resolves.toStrictEqual({ 57 | website: "github.com", 58 | keywords: [ 59 | "github", 60 | "gihtub", 61 | "googlethis", 62 | "googlethat", 63 | "googlethis github", 64 | ], 65 | maxPage: 7, 66 | }); 67 | }); 68 | }); 69 | -------------------------------------------------------------------------------- /src/internal/arguments.ts: -------------------------------------------------------------------------------- 1 | import { Command } from "commander"; 2 | import * as fs from "fs"; 3 | import * as readline from "readline"; 4 | 5 | /** 6 | * Represents the arguments and options of the program. 7 | */ 8 | export interface Arguments { 9 | /** Website name. */ 10 | website: string; 11 | 12 | /** Keywords to search for. */ 13 | keywords: string[]; 14 | 15 | /** Maximum page to search for. */ 16 | maxPage: number; 17 | } 18 | 19 | /** 20 | * Represents the arguments and options parser of the program. 21 | */ 22 | export class ArgumentsParser { 23 | #program: Command; 24 | 25 | /** 26 | * Constructs a new instance of the arguments and options parser of the program. 27 | */ 28 | constructor() { 29 | this.#program = new Command(); 30 | 31 | // Sets up the arguments and options available in the program 32 | this.#program 33 | .argument("", "website name") 34 | .option("--keywords ", "keywords to search for") 35 | .option("--file ", "file to read keywords from") 36 | .option("--max-page ", "maximum page to search for", "3"); 37 | } 38 | 39 | /** 40 | * Parses the arguments and options of the program. 41 | * @param argv - An optional array of strings representing the command-line arguments. 42 | * @returns A promise that resolves to the arguments and options. 43 | */ 44 | async parse(argv?: readonly string[]): Promise { 45 | this.#program.parse(argv); 46 | 47 | const opts: { keywords?: string[]; file?: string; maxPage: string } = 48 | this.#program.opts(); 49 | 50 | const args: Arguments = { 51 | website: this.#program.args[0], 52 | keywords: opts.keywords ?? [], 53 | maxPage: parseInt(opts.maxPage, 10), 54 | }; 55 | 56 | // Parse additional keywords from the given file, if specified. 57 | if (opts.file !== undefined) { 58 | const keywords = await readKeywordsFromFile(opts.file); 59 | args.keywords = args.keywords.concat(keywords); 60 | } 61 | 62 | // If no keywords are provided, use the website as the keyword. 63 | if (args.keywords.length < 1) { 64 | args.keywords = [args.website]; 65 | } 66 | 67 | return args; 68 | } 69 | } 70 | 71 | /** 72 | * Reads keywords from the specified file. 73 | * @param filename - The file to read keywords from. 74 | * @returns A promise that resolves to a list of keywords. 75 | */ 76 | async function readKeywordsFromFile(filename: string): Promise { 77 | const file = fs.createReadStream(filename); 78 | const read = readline.createInterface({ input: file }); 79 | 80 | const keywords: string[] = []; 81 | for await (const line of read) { 82 | const trimmedLine = line.trim(); 83 | if (trimmedLine.length > 0) keywords.push(trimmedLine); 84 | } 85 | return keywords; 86 | } 87 | -------------------------------------------------------------------------------- /src/rank.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, it, vi } from "vitest"; 2 | 3 | vi.mock("google-sr", () => ({ 4 | searchWithPages: ({ query, pages }: { query: string; pages: number }) => { 5 | if (query !== "google") return []; 6 | const websitesPages = [ 7 | [ 8 | "https://www.google.com/?hl=id", 9 | "https://www.google.co.id/?hl=id", 10 | "https://accounts.google.com/login?hl=id", 11 | "https://play.google.com/store/apps/details?id=com.google.android.googlequicksearchbox&hl=en_US", 12 | "https://myaccount.google.com/privacy?hl=id", 13 | "https://accounts.google.com/", 14 | "https://myaccount.google.com/intro/personal-info?hl=id", 15 | "https://id.wikipedia.org/wiki/Google", 16 | ], 17 | [ 18 | null, 19 | "https://twitter.com/Google", 20 | "https://accounts.google.com/", 21 | "https://www.youtube.com/user/google", 22 | "https://www.instagram.com/googleindonesia/", 23 | "https://news.google.com/?hl=ID", 24 | "https://about.google/", 25 | "https://blog.google/", 26 | "https://store.google.com/", 27 | "https://support.google.com/", 28 | ], 29 | [ 30 | "https://www.facebook.com/Google/?locale=id_ID", 31 | "https://www.facebook.com/Google/?locale=id_ID", 32 | "https://io.google/", 33 | "https://www.google.co.uk/", 34 | "https://myactivity.google.com/", 35 | "https://apps.google.com/meet/", 36 | "https://one.google.com/about", 37 | "https://bard.google.com/?hl=in", 38 | "https://ads.google.com/intl/id_id/home/", 39 | "https://classroom.google.com/", 40 | ], 41 | ]; 42 | return websitesPages.slice(0, pages).map((websites) => { 43 | return websites.map((website) => ({ 44 | type: "SEARCH", 45 | link: website, 46 | })); 47 | }); 48 | }, 49 | })); 50 | 51 | describe("rank a website in Google Search", function () { 52 | it("should rank a website that is found", async () => { 53 | const { getWebsiteRank } = await import("./rank.js"); 54 | const res = await getWebsiteRank("google.com", "google"); 55 | expect(res).not.toBeUndefined(); 56 | if (res !== undefined) { 57 | expect(res.page).toBe(0); 58 | expect(res.rank).toBeGreaterThanOrEqual(0); 59 | } 60 | }); 61 | 62 | it("should not rank a website that is not found", async () => { 63 | const { getWebsiteRank } = await import("./rank.js"); 64 | const prom = getWebsiteRank("randomsite.con", "google"); 65 | return expect(prom).resolves.toBeUndefined(); 66 | }); 67 | 68 | it("should rank a website that is found on a specific page", async () => { 69 | const { getWebsiteRank } = await import("./rank.js"); 70 | const res = await getWebsiteRank("facebook.com", "google", { 71 | maxPage: 3, 72 | }); 73 | expect(res).not.toBeUndefined(); 74 | if (res !== undefined) { 75 | expect(res.page).toBeGreaterThan(0); 76 | expect(res.rank).toBeGreaterThanOrEqual(0); 77 | } 78 | }); 79 | }); 80 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | chalk: 12 | specifier: ^5.6.2 13 | version: 5.6.2 14 | commander: 15 | specifier: ^14.0.2 16 | version: 14.0.2 17 | google-sr: 18 | specifier: ^6.0.0 19 | version: 6.0.0 20 | ora: 21 | specifier: ^9.0.0 22 | version: 9.0.0 23 | devDependencies: 24 | '@eslint/js': 25 | specifier: ^9.39.1 26 | version: 9.39.1 27 | '@tsconfig/node24': 28 | specifier: ^24.0.3 29 | version: 24.0.3 30 | '@types/node': 31 | specifier: ^24.10.1 32 | version: 24.10.1 33 | '@vitest/coverage-v8': 34 | specifier: ^4.0.15 35 | version: 4.0.15(vitest@4.0.15(@types/node@24.10.1)(jiti@2.6.1)) 36 | eslint: 37 | specifier: ^9.39.1 38 | version: 9.39.1(jiti@2.6.1) 39 | jiti: 40 | specifier: ^2.6.1 41 | version: 2.6.1 42 | lefthook: 43 | specifier: ^2.0.2 44 | version: 2.0.2 45 | prettier: 46 | specifier: ^3.6.2 47 | version: 3.6.2 48 | prettier-plugin-organize-imports: 49 | specifier: ^4.3.0 50 | version: 4.3.0(prettier@3.6.2)(typescript@5.9.3) 51 | typescript: 52 | specifier: ^5.9.3 53 | version: 5.9.3 54 | typescript-eslint: 55 | specifier: ^8.46.3 56 | version: 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 57 | vitest: 58 | specifier: ^4.0.15 59 | version: 4.0.15(@types/node@24.10.1)(jiti@2.6.1) 60 | 61 | packages: 62 | 63 | '@babel/helper-string-parser@7.27.1': 64 | resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 65 | engines: {node: '>=6.9.0'} 66 | 67 | '@babel/helper-validator-identifier@7.28.5': 68 | resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 69 | engines: {node: '>=6.9.0'} 70 | 71 | '@babel/parser@7.28.5': 72 | resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} 73 | engines: {node: '>=6.0.0'} 74 | hasBin: true 75 | 76 | '@babel/types@7.28.5': 77 | resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} 78 | engines: {node: '>=6.9.0'} 79 | 80 | '@bcoe/v8-coverage@1.0.2': 81 | resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} 82 | engines: {node: '>=18'} 83 | 84 | '@esbuild/aix-ppc64@0.25.5': 85 | resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} 86 | engines: {node: '>=18'} 87 | cpu: [ppc64] 88 | os: [aix] 89 | 90 | '@esbuild/android-arm64@0.25.5': 91 | resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} 92 | engines: {node: '>=18'} 93 | cpu: [arm64] 94 | os: [android] 95 | 96 | '@esbuild/android-arm@0.25.5': 97 | resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} 98 | engines: {node: '>=18'} 99 | cpu: [arm] 100 | os: [android] 101 | 102 | '@esbuild/android-x64@0.25.5': 103 | resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} 104 | engines: {node: '>=18'} 105 | cpu: [x64] 106 | os: [android] 107 | 108 | '@esbuild/darwin-arm64@0.25.5': 109 | resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} 110 | engines: {node: '>=18'} 111 | cpu: [arm64] 112 | os: [darwin] 113 | 114 | '@esbuild/darwin-x64@0.25.5': 115 | resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} 116 | engines: {node: '>=18'} 117 | cpu: [x64] 118 | os: [darwin] 119 | 120 | '@esbuild/freebsd-arm64@0.25.5': 121 | resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} 122 | engines: {node: '>=18'} 123 | cpu: [arm64] 124 | os: [freebsd] 125 | 126 | '@esbuild/freebsd-x64@0.25.5': 127 | resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} 128 | engines: {node: '>=18'} 129 | cpu: [x64] 130 | os: [freebsd] 131 | 132 | '@esbuild/linux-arm64@0.25.5': 133 | resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} 134 | engines: {node: '>=18'} 135 | cpu: [arm64] 136 | os: [linux] 137 | 138 | '@esbuild/linux-arm@0.25.5': 139 | resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} 140 | engines: {node: '>=18'} 141 | cpu: [arm] 142 | os: [linux] 143 | 144 | '@esbuild/linux-ia32@0.25.5': 145 | resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} 146 | engines: {node: '>=18'} 147 | cpu: [ia32] 148 | os: [linux] 149 | 150 | '@esbuild/linux-loong64@0.25.5': 151 | resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} 152 | engines: {node: '>=18'} 153 | cpu: [loong64] 154 | os: [linux] 155 | 156 | '@esbuild/linux-mips64el@0.25.5': 157 | resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} 158 | engines: {node: '>=18'} 159 | cpu: [mips64el] 160 | os: [linux] 161 | 162 | '@esbuild/linux-ppc64@0.25.5': 163 | resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} 164 | engines: {node: '>=18'} 165 | cpu: [ppc64] 166 | os: [linux] 167 | 168 | '@esbuild/linux-riscv64@0.25.5': 169 | resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} 170 | engines: {node: '>=18'} 171 | cpu: [riscv64] 172 | os: [linux] 173 | 174 | '@esbuild/linux-s390x@0.25.5': 175 | resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} 176 | engines: {node: '>=18'} 177 | cpu: [s390x] 178 | os: [linux] 179 | 180 | '@esbuild/linux-x64@0.25.5': 181 | resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} 182 | engines: {node: '>=18'} 183 | cpu: [x64] 184 | os: [linux] 185 | 186 | '@esbuild/netbsd-arm64@0.25.5': 187 | resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} 188 | engines: {node: '>=18'} 189 | cpu: [arm64] 190 | os: [netbsd] 191 | 192 | '@esbuild/netbsd-x64@0.25.5': 193 | resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} 194 | engines: {node: '>=18'} 195 | cpu: [x64] 196 | os: [netbsd] 197 | 198 | '@esbuild/openbsd-arm64@0.25.5': 199 | resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} 200 | engines: {node: '>=18'} 201 | cpu: [arm64] 202 | os: [openbsd] 203 | 204 | '@esbuild/openbsd-x64@0.25.5': 205 | resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} 206 | engines: {node: '>=18'} 207 | cpu: [x64] 208 | os: [openbsd] 209 | 210 | '@esbuild/sunos-x64@0.25.5': 211 | resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} 212 | engines: {node: '>=18'} 213 | cpu: [x64] 214 | os: [sunos] 215 | 216 | '@esbuild/win32-arm64@0.25.5': 217 | resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} 218 | engines: {node: '>=18'} 219 | cpu: [arm64] 220 | os: [win32] 221 | 222 | '@esbuild/win32-ia32@0.25.5': 223 | resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} 224 | engines: {node: '>=18'} 225 | cpu: [ia32] 226 | os: [win32] 227 | 228 | '@esbuild/win32-x64@0.25.5': 229 | resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} 230 | engines: {node: '>=18'} 231 | cpu: [x64] 232 | os: [win32] 233 | 234 | '@eslint-community/eslint-utils@4.9.0': 235 | resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} 236 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 237 | peerDependencies: 238 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 239 | 240 | '@eslint-community/regexpp@4.12.2': 241 | resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} 242 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 243 | 244 | '@eslint/config-array@0.21.1': 245 | resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} 246 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 247 | 248 | '@eslint/config-helpers@0.4.2': 249 | resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} 250 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 251 | 252 | '@eslint/core@0.17.0': 253 | resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} 254 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 255 | 256 | '@eslint/eslintrc@3.3.1': 257 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 258 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 259 | 260 | '@eslint/js@9.39.1': 261 | resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==} 262 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 263 | 264 | '@eslint/object-schema@2.1.7': 265 | resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} 266 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 267 | 268 | '@eslint/plugin-kit@0.4.1': 269 | resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} 270 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 271 | 272 | '@humanfs/core@0.19.1': 273 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 274 | engines: {node: '>=18.18.0'} 275 | 276 | '@humanfs/node@0.16.7': 277 | resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} 278 | engines: {node: '>=18.18.0'} 279 | 280 | '@humanwhocodes/module-importer@1.0.1': 281 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 282 | engines: {node: '>=12.22'} 283 | 284 | '@humanwhocodes/retry@0.4.3': 285 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 286 | engines: {node: '>=18.18'} 287 | 288 | '@jridgewell/resolve-uri@3.1.2': 289 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 290 | engines: {node: '>=6.0.0'} 291 | 292 | '@jridgewell/sourcemap-codec@1.5.0': 293 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 294 | 295 | '@jridgewell/sourcemap-codec@1.5.5': 296 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 297 | 298 | '@jridgewell/trace-mapping@0.3.25': 299 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 300 | 301 | '@jridgewell/trace-mapping@0.3.31': 302 | resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 303 | 304 | '@nodelib/fs.scandir@2.1.5': 305 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 306 | engines: {node: '>= 8'} 307 | 308 | '@nodelib/fs.stat@2.0.5': 309 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 310 | engines: {node: '>= 8'} 311 | 312 | '@nodelib/fs.walk@1.2.8': 313 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 314 | engines: {node: '>= 8'} 315 | 316 | '@rollup/rollup-android-arm-eabi@4.42.0': 317 | resolution: {integrity: sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==} 318 | cpu: [arm] 319 | os: [android] 320 | 321 | '@rollup/rollup-android-arm64@4.42.0': 322 | resolution: {integrity: sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==} 323 | cpu: [arm64] 324 | os: [android] 325 | 326 | '@rollup/rollup-darwin-arm64@4.42.0': 327 | resolution: {integrity: sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==} 328 | cpu: [arm64] 329 | os: [darwin] 330 | 331 | '@rollup/rollup-darwin-x64@4.42.0': 332 | resolution: {integrity: sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==} 333 | cpu: [x64] 334 | os: [darwin] 335 | 336 | '@rollup/rollup-freebsd-arm64@4.42.0': 337 | resolution: {integrity: sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==} 338 | cpu: [arm64] 339 | os: [freebsd] 340 | 341 | '@rollup/rollup-freebsd-x64@4.42.0': 342 | resolution: {integrity: sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==} 343 | cpu: [x64] 344 | os: [freebsd] 345 | 346 | '@rollup/rollup-linux-arm-gnueabihf@4.42.0': 347 | resolution: {integrity: sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==} 348 | cpu: [arm] 349 | os: [linux] 350 | 351 | '@rollup/rollup-linux-arm-musleabihf@4.42.0': 352 | resolution: {integrity: sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==} 353 | cpu: [arm] 354 | os: [linux] 355 | 356 | '@rollup/rollup-linux-arm64-gnu@4.42.0': 357 | resolution: {integrity: sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==} 358 | cpu: [arm64] 359 | os: [linux] 360 | 361 | '@rollup/rollup-linux-arm64-musl@4.42.0': 362 | resolution: {integrity: sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==} 363 | cpu: [arm64] 364 | os: [linux] 365 | 366 | '@rollup/rollup-linux-loongarch64-gnu@4.42.0': 367 | resolution: {integrity: sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==} 368 | cpu: [loong64] 369 | os: [linux] 370 | 371 | '@rollup/rollup-linux-powerpc64le-gnu@4.42.0': 372 | resolution: {integrity: sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==} 373 | cpu: [ppc64] 374 | os: [linux] 375 | 376 | '@rollup/rollup-linux-riscv64-gnu@4.42.0': 377 | resolution: {integrity: sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==} 378 | cpu: [riscv64] 379 | os: [linux] 380 | 381 | '@rollup/rollup-linux-riscv64-musl@4.42.0': 382 | resolution: {integrity: sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==} 383 | cpu: [riscv64] 384 | os: [linux] 385 | 386 | '@rollup/rollup-linux-s390x-gnu@4.42.0': 387 | resolution: {integrity: sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==} 388 | cpu: [s390x] 389 | os: [linux] 390 | 391 | '@rollup/rollup-linux-x64-gnu@4.42.0': 392 | resolution: {integrity: sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==} 393 | cpu: [x64] 394 | os: [linux] 395 | 396 | '@rollup/rollup-linux-x64-musl@4.42.0': 397 | resolution: {integrity: sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==} 398 | cpu: [x64] 399 | os: [linux] 400 | 401 | '@rollup/rollup-win32-arm64-msvc@4.42.0': 402 | resolution: {integrity: sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==} 403 | cpu: [arm64] 404 | os: [win32] 405 | 406 | '@rollup/rollup-win32-ia32-msvc@4.42.0': 407 | resolution: {integrity: sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==} 408 | cpu: [ia32] 409 | os: [win32] 410 | 411 | '@rollup/rollup-win32-x64-msvc@4.42.0': 412 | resolution: {integrity: sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==} 413 | cpu: [x64] 414 | os: [win32] 415 | 416 | '@standard-schema/spec@1.0.0': 417 | resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} 418 | 419 | '@tsconfig/node24@24.0.3': 420 | resolution: {integrity: sha512-vcERKtKQKHgzt/vfS3Gjasd8SUI2a0WZXpgJURdJsMySpS5+ctgbPfuLj2z/W+w4lAfTWxoN4upKfu2WzIRYnw==} 421 | 422 | '@types/chai@5.2.3': 423 | resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} 424 | 425 | '@types/deep-eql@4.0.2': 426 | resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} 427 | 428 | '@types/estree@1.0.7': 429 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 430 | 431 | '@types/estree@1.0.8': 432 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 433 | 434 | '@types/json-schema@7.0.15': 435 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 436 | 437 | '@types/node@24.10.1': 438 | resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} 439 | 440 | '@typescript-eslint/eslint-plugin@8.46.3': 441 | resolution: {integrity: sha512-sbaQ27XBUopBkRiuY/P9sWGOWUW4rl8fDoHIUmLpZd8uldsTyB4/Zg6bWTegPoTLnKj9Hqgn3QD6cjPNB32Odw==} 442 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 443 | peerDependencies: 444 | '@typescript-eslint/parser': ^8.46.3 445 | eslint: ^8.57.0 || ^9.0.0 446 | typescript: '>=4.8.4 <6.0.0' 447 | 448 | '@typescript-eslint/parser@8.46.3': 449 | resolution: {integrity: sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==} 450 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 451 | peerDependencies: 452 | eslint: ^8.57.0 || ^9.0.0 453 | typescript: '>=4.8.4 <6.0.0' 454 | 455 | '@typescript-eslint/project-service@8.46.3': 456 | resolution: {integrity: sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==} 457 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 458 | peerDependencies: 459 | typescript: '>=4.8.4 <6.0.0' 460 | 461 | '@typescript-eslint/scope-manager@8.46.3': 462 | resolution: {integrity: sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg==} 463 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 464 | 465 | '@typescript-eslint/tsconfig-utils@8.46.3': 466 | resolution: {integrity: sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==} 467 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 468 | peerDependencies: 469 | typescript: '>=4.8.4 <6.0.0' 470 | 471 | '@typescript-eslint/type-utils@8.46.3': 472 | resolution: {integrity: sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw==} 473 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 474 | peerDependencies: 475 | eslint: ^8.57.0 || ^9.0.0 476 | typescript: '>=4.8.4 <6.0.0' 477 | 478 | '@typescript-eslint/types@8.46.3': 479 | resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==} 480 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 481 | 482 | '@typescript-eslint/typescript-estree@8.46.3': 483 | resolution: {integrity: sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==} 484 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 485 | peerDependencies: 486 | typescript: '>=4.8.4 <6.0.0' 487 | 488 | '@typescript-eslint/utils@8.46.3': 489 | resolution: {integrity: sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g==} 490 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 491 | peerDependencies: 492 | eslint: ^8.57.0 || ^9.0.0 493 | typescript: '>=4.8.4 <6.0.0' 494 | 495 | '@typescript-eslint/visitor-keys@8.46.3': 496 | resolution: {integrity: sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==} 497 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 498 | 499 | '@vitest/coverage-v8@4.0.15': 500 | resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==} 501 | peerDependencies: 502 | '@vitest/browser': 4.0.15 503 | vitest: 4.0.15 504 | peerDependenciesMeta: 505 | '@vitest/browser': 506 | optional: true 507 | 508 | '@vitest/expect@4.0.15': 509 | resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} 510 | 511 | '@vitest/mocker@4.0.15': 512 | resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} 513 | peerDependencies: 514 | msw: ^2.4.9 515 | vite: ^6.0.0 || ^7.0.0-0 516 | peerDependenciesMeta: 517 | msw: 518 | optional: true 519 | vite: 520 | optional: true 521 | 522 | '@vitest/pretty-format@4.0.15': 523 | resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} 524 | 525 | '@vitest/runner@4.0.15': 526 | resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} 527 | 528 | '@vitest/snapshot@4.0.15': 529 | resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} 530 | 531 | '@vitest/spy@4.0.15': 532 | resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} 533 | 534 | '@vitest/utils@4.0.15': 535 | resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} 536 | 537 | acorn-jsx@5.3.2: 538 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 539 | peerDependencies: 540 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 541 | 542 | acorn@8.15.0: 543 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 544 | engines: {node: '>=0.4.0'} 545 | hasBin: true 546 | 547 | ajv@6.12.6: 548 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 549 | 550 | ansi-regex@6.2.2: 551 | resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} 552 | engines: {node: '>=12'} 553 | 554 | ansi-styles@4.3.0: 555 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 556 | engines: {node: '>=8'} 557 | 558 | argparse@2.0.1: 559 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 560 | 561 | assertion-error@2.0.1: 562 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 563 | engines: {node: '>=12'} 564 | 565 | ast-v8-to-istanbul@0.3.8: 566 | resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} 567 | 568 | balanced-match@1.0.2: 569 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 570 | 571 | boolbase@1.0.0: 572 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 573 | 574 | brace-expansion@1.1.12: 575 | resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 576 | 577 | brace-expansion@2.0.2: 578 | resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 579 | 580 | braces@3.0.3: 581 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 582 | engines: {node: '>=8'} 583 | 584 | callsites@3.1.0: 585 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 586 | engines: {node: '>=6'} 587 | 588 | chai@6.2.1: 589 | resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} 590 | engines: {node: '>=18'} 591 | 592 | chalk@4.1.2: 593 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 594 | engines: {node: '>=10'} 595 | 596 | chalk@5.6.2: 597 | resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} 598 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 599 | 600 | cheerio-select@2.1.0: 601 | resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} 602 | 603 | cheerio@1.1.0: 604 | resolution: {integrity: sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==} 605 | engines: {node: '>=18.17'} 606 | 607 | cli-cursor@5.0.0: 608 | resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} 609 | engines: {node: '>=18'} 610 | 611 | cli-spinners@3.3.0: 612 | resolution: {integrity: sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==} 613 | engines: {node: '>=18.20'} 614 | 615 | color-convert@2.0.1: 616 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 617 | engines: {node: '>=7.0.0'} 618 | 619 | color-name@1.1.4: 620 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 621 | 622 | commander@14.0.2: 623 | resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} 624 | engines: {node: '>=20'} 625 | 626 | concat-map@0.0.1: 627 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 628 | 629 | cross-spawn@7.0.6: 630 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 631 | engines: {node: '>= 8'} 632 | 633 | css-select@5.2.2: 634 | resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} 635 | 636 | css-what@6.2.2: 637 | resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} 638 | engines: {node: '>= 6'} 639 | 640 | debug@4.4.3: 641 | resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 642 | engines: {node: '>=6.0'} 643 | peerDependencies: 644 | supports-color: '*' 645 | peerDependenciesMeta: 646 | supports-color: 647 | optional: true 648 | 649 | deep-is@0.1.4: 650 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 651 | 652 | dom-serializer@2.0.0: 653 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 654 | 655 | domelementtype@2.3.0: 656 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 657 | 658 | domhandler@5.0.3: 659 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 660 | engines: {node: '>= 4'} 661 | 662 | domutils@3.2.2: 663 | resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} 664 | 665 | encoding-sniffer@0.2.1: 666 | resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} 667 | 668 | entities@4.5.0: 669 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 670 | engines: {node: '>=0.12'} 671 | 672 | entities@6.0.1: 673 | resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} 674 | engines: {node: '>=0.12'} 675 | 676 | es-module-lexer@1.7.0: 677 | resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 678 | 679 | esbuild@0.25.5: 680 | resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} 681 | engines: {node: '>=18'} 682 | hasBin: true 683 | 684 | escape-string-regexp@4.0.0: 685 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 686 | engines: {node: '>=10'} 687 | 688 | eslint-scope@8.4.0: 689 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 690 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 691 | 692 | eslint-visitor-keys@3.4.3: 693 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 694 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 695 | 696 | eslint-visitor-keys@4.2.1: 697 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 698 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 699 | 700 | eslint@9.39.1: 701 | resolution: {integrity: sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==} 702 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 703 | hasBin: true 704 | peerDependencies: 705 | jiti: '*' 706 | peerDependenciesMeta: 707 | jiti: 708 | optional: true 709 | 710 | espree@10.4.0: 711 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 712 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 713 | 714 | esquery@1.6.0: 715 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 716 | engines: {node: '>=0.10'} 717 | 718 | esrecurse@4.3.0: 719 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 720 | engines: {node: '>=4.0'} 721 | 722 | estraverse@5.3.0: 723 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 724 | engines: {node: '>=4.0'} 725 | 726 | estree-walker@3.0.3: 727 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 728 | 729 | esutils@2.0.3: 730 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 731 | engines: {node: '>=0.10.0'} 732 | 733 | expect-type@1.3.0: 734 | resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} 735 | engines: {node: '>=12.0.0'} 736 | 737 | fast-deep-equal@3.1.3: 738 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 739 | 740 | fast-glob@3.3.3: 741 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 742 | engines: {node: '>=8.6.0'} 743 | 744 | fast-json-stable-stringify@2.1.0: 745 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 746 | 747 | fast-levenshtein@2.0.6: 748 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 749 | 750 | fastq@1.19.1: 751 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 752 | 753 | fdir@6.4.5: 754 | resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} 755 | peerDependencies: 756 | picomatch: ^3 || ^4 757 | peerDependenciesMeta: 758 | picomatch: 759 | optional: true 760 | 761 | fdir@6.5.0: 762 | resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 763 | engines: {node: '>=12.0.0'} 764 | peerDependencies: 765 | picomatch: ^3 || ^4 766 | peerDependenciesMeta: 767 | picomatch: 768 | optional: true 769 | 770 | file-entry-cache@8.0.0: 771 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 772 | engines: {node: '>=16.0.0'} 773 | 774 | fill-range@7.1.1: 775 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 776 | engines: {node: '>=8'} 777 | 778 | find-up@5.0.0: 779 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 780 | engines: {node: '>=10'} 781 | 782 | flat-cache@4.0.1: 783 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 784 | engines: {node: '>=16'} 785 | 786 | flatted@3.3.3: 787 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 788 | 789 | fsevents@2.3.3: 790 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 791 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 792 | os: [darwin] 793 | 794 | get-east-asian-width@1.4.0: 795 | resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} 796 | engines: {node: '>=18'} 797 | 798 | glob-parent@5.1.2: 799 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 800 | engines: {node: '>= 6'} 801 | 802 | glob-parent@6.0.2: 803 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 804 | engines: {node: '>=10.13.0'} 805 | 806 | globals@14.0.0: 807 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 808 | engines: {node: '>=18'} 809 | 810 | google-sr-selectors@3.0.0: 811 | resolution: {integrity: sha512-8duGEpfQ9O93YYRZvfWXJYyGhQ5/Zf3+Ejb100X4JD6RZr/YQcI+YANH+Ppuk5+ZiPZfqwLyHtBU1aiLgoqqgQ==} 812 | engines: {node: '>=20.0.0', pnpm: '>=10.13.1'} 813 | 814 | google-sr@6.0.0: 815 | resolution: {integrity: sha512-C2Oo36ycwCuKAMCQB/Gij09UlP/nuf4Tu9+gCcW6/ILuj6BSQI9WcEA23CgPcTr3IAUUbEj1KtzKri/ocLOm1Q==} 816 | engines: {node: '>=20.0.0', pnpm: '>=10.13.1'} 817 | 818 | graphemer@1.4.0: 819 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 820 | 821 | has-flag@4.0.0: 822 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 823 | engines: {node: '>=8'} 824 | 825 | html-escaper@2.0.2: 826 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 827 | 828 | htmlparser2@10.0.0: 829 | resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} 830 | 831 | iconv-lite@0.6.3: 832 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 833 | engines: {node: '>=0.10.0'} 834 | 835 | ignore@5.3.2: 836 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 837 | engines: {node: '>= 4'} 838 | 839 | ignore@7.0.5: 840 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 841 | engines: {node: '>= 4'} 842 | 843 | import-fresh@3.3.1: 844 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 845 | engines: {node: '>=6'} 846 | 847 | imurmurhash@0.1.4: 848 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 849 | engines: {node: '>=0.8.19'} 850 | 851 | is-extglob@2.1.1: 852 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 853 | engines: {node: '>=0.10.0'} 854 | 855 | is-glob@4.0.3: 856 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 857 | engines: {node: '>=0.10.0'} 858 | 859 | is-interactive@2.0.0: 860 | resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} 861 | engines: {node: '>=12'} 862 | 863 | is-number@7.0.0: 864 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 865 | engines: {node: '>=0.12.0'} 866 | 867 | is-unicode-supported@2.1.0: 868 | resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} 869 | engines: {node: '>=18'} 870 | 871 | isexe@2.0.0: 872 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 873 | 874 | istanbul-lib-coverage@3.2.2: 875 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 876 | engines: {node: '>=8'} 877 | 878 | istanbul-lib-report@3.0.1: 879 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 880 | engines: {node: '>=10'} 881 | 882 | istanbul-lib-source-maps@5.0.6: 883 | resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} 884 | engines: {node: '>=10'} 885 | 886 | istanbul-reports@3.2.0: 887 | resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} 888 | engines: {node: '>=8'} 889 | 890 | jiti@2.6.1: 891 | resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 892 | hasBin: true 893 | 894 | js-tokens@9.0.1: 895 | resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} 896 | 897 | js-yaml@4.1.1: 898 | resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 899 | hasBin: true 900 | 901 | json-buffer@3.0.1: 902 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 903 | 904 | json-schema-traverse@0.4.1: 905 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 906 | 907 | json-stable-stringify-without-jsonify@1.0.1: 908 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 909 | 910 | keyv@4.5.4: 911 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 912 | 913 | lefthook-darwin-arm64@2.0.2: 914 | resolution: {integrity: sha512-x/4AOinpMS2abZyA/krDd50cRPZit/6P670Z1mJjfS0+fPZkFw7AXpjxroiN0rgglg78vD7BwcA5331z4YZa5g==} 915 | cpu: [arm64] 916 | os: [darwin] 917 | 918 | lefthook-darwin-x64@2.0.2: 919 | resolution: {integrity: sha512-MSb8XZBfmlNvCpuLiQqrJS+sPiSEAyuoHOMZOHjlceYqO0leVVw9YfePVcb4Vi/PqOYngTdJk83MmYvqhsSNTQ==} 920 | cpu: [x64] 921 | os: [darwin] 922 | 923 | lefthook-freebsd-arm64@2.0.2: 924 | resolution: {integrity: sha512-gewPsUPc3J/n2/RrhHLS9jtL3qK4HcTED25vfExhvFRW3eT1SDYaBbXnUUmB8SE0zE8Bl6AfEdT2zzZcPbOFuA==} 925 | cpu: [arm64] 926 | os: [freebsd] 927 | 928 | lefthook-freebsd-x64@2.0.2: 929 | resolution: {integrity: sha512-fsLlaChiKAWiSavQO2LXPR8Z9OcBnyMDvmkIlXC0lG3SjBb9xbVdBdDVlcrsUyDCs5YstmGYHuzw6DfJYpAE1g==} 930 | cpu: [x64] 931 | os: [freebsd] 932 | 933 | lefthook-linux-arm64@2.0.2: 934 | resolution: {integrity: sha512-vNl3HiZud9T2nGHMngvLw3hSJgutjlN/Lzf5/5jKt/2IIuyd9L3UYktWC9HLUb03Zukr7jeaxG3+VxdAohQwAw==} 935 | cpu: [arm64] 936 | os: [linux] 937 | 938 | lefthook-linux-x64@2.0.2: 939 | resolution: {integrity: sha512-0ghHMPu4fixIieS8V2k2yZHvcFd9pP0q+sIAIaWo8x7ce/AOQIXFCPHGPAOc8/wi5uVtfyEvCnhxIDKf+lHA2A==} 940 | cpu: [x64] 941 | os: [linux] 942 | 943 | lefthook-openbsd-arm64@2.0.2: 944 | resolution: {integrity: sha512-qfXnDM8jffut9rylvi3T+HOqlNRkFYqIDUXeVXlY7dmwCW4u2K46p0W4M3BmAVUeL/MRxBRnjze//Yy6aCbGQw==} 945 | cpu: [arm64] 946 | os: [openbsd] 947 | 948 | lefthook-openbsd-x64@2.0.2: 949 | resolution: {integrity: sha512-RXqR0FiDTwsQv1X3QVsuBFneWeNXS+tmPFIX8F6Wz9yDPHF8+vBnkWCju6HdkTVTY71Ba5HbYGKEVDvscJkU7Q==} 950 | cpu: [x64] 951 | os: [openbsd] 952 | 953 | lefthook-windows-arm64@2.0.2: 954 | resolution: {integrity: sha512-KfLKhiUPHP9Aea+9D7or2hgL9wtKEV+GHpx7LBg82ZhCXkAml6rop7mWsBgL80xPYLqMahKolZGO+8z5H6W4HQ==} 955 | cpu: [arm64] 956 | os: [win32] 957 | 958 | lefthook-windows-x64@2.0.2: 959 | resolution: {integrity: sha512-TdysWxGRNtuRg5bN6Uj00tZJIsHTrF/7FavoR5rp1sq21QJhJi36M4I3UVlmOKAUCKhibAIAauZWmX7yaW3eHA==} 960 | cpu: [x64] 961 | os: [win32] 962 | 963 | lefthook@2.0.2: 964 | resolution: {integrity: sha512-2lrSva53G604ZWjK5kHYvDdwb5GzbhciIPWhebv0A8ceveqSsnG2JgVEt+DnhOPZ4VfNcXvt3/ohFBPNpuAlVw==} 965 | hasBin: true 966 | 967 | levn@0.4.1: 968 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 969 | engines: {node: '>= 0.8.0'} 970 | 971 | locate-path@6.0.0: 972 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 973 | engines: {node: '>=10'} 974 | 975 | lodash.merge@4.6.2: 976 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 977 | 978 | log-symbols@7.0.1: 979 | resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} 980 | engines: {node: '>=18'} 981 | 982 | magic-string@0.30.21: 983 | resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 984 | 985 | magicast@0.5.1: 986 | resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} 987 | 988 | make-dir@4.0.0: 989 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 990 | engines: {node: '>=10'} 991 | 992 | merge2@1.4.1: 993 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 994 | engines: {node: '>= 8'} 995 | 996 | micromatch@4.0.8: 997 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 998 | engines: {node: '>=8.6'} 999 | 1000 | mimic-function@5.0.1: 1001 | resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} 1002 | engines: {node: '>=18'} 1003 | 1004 | minimatch@3.1.2: 1005 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1006 | 1007 | minimatch@9.0.5: 1008 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1009 | engines: {node: '>=16 || 14 >=14.17'} 1010 | 1011 | ms@2.1.3: 1012 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1013 | 1014 | nanoid@3.3.11: 1015 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1016 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1017 | hasBin: true 1018 | 1019 | natural-compare@1.4.0: 1020 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1021 | 1022 | nth-check@2.1.1: 1023 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 1024 | 1025 | obug@2.1.1: 1026 | resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} 1027 | 1028 | onetime@7.0.0: 1029 | resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} 1030 | engines: {node: '>=18'} 1031 | 1032 | optionator@0.9.4: 1033 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1034 | engines: {node: '>= 0.8.0'} 1035 | 1036 | ora@9.0.0: 1037 | resolution: {integrity: sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==} 1038 | engines: {node: '>=20'} 1039 | 1040 | p-limit@3.1.0: 1041 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1042 | engines: {node: '>=10'} 1043 | 1044 | p-locate@5.0.0: 1045 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1046 | engines: {node: '>=10'} 1047 | 1048 | parent-module@1.0.1: 1049 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1050 | engines: {node: '>=6'} 1051 | 1052 | parse5-htmlparser2-tree-adapter@7.1.0: 1053 | resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} 1054 | 1055 | parse5-parser-stream@7.1.2: 1056 | resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} 1057 | 1058 | parse5@7.3.0: 1059 | resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 1060 | 1061 | path-exists@4.0.0: 1062 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1063 | engines: {node: '>=8'} 1064 | 1065 | path-key@3.1.1: 1066 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1067 | engines: {node: '>=8'} 1068 | 1069 | pathe@2.0.3: 1070 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1071 | 1072 | picocolors@1.1.1: 1073 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1074 | 1075 | picomatch@2.3.1: 1076 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1077 | engines: {node: '>=8.6'} 1078 | 1079 | picomatch@4.0.3: 1080 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1081 | engines: {node: '>=12'} 1082 | 1083 | postcss@8.5.4: 1084 | resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} 1085 | engines: {node: ^10 || ^12 || >=14} 1086 | 1087 | prelude-ls@1.2.1: 1088 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1089 | engines: {node: '>= 0.8.0'} 1090 | 1091 | prettier-plugin-organize-imports@4.3.0: 1092 | resolution: {integrity: sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw==} 1093 | peerDependencies: 1094 | prettier: '>=2.0' 1095 | typescript: '>=2.9' 1096 | vue-tsc: ^2.1.0 || 3 1097 | peerDependenciesMeta: 1098 | vue-tsc: 1099 | optional: true 1100 | 1101 | prettier@3.6.2: 1102 | resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 1103 | engines: {node: '>=14'} 1104 | hasBin: true 1105 | 1106 | punycode@2.3.1: 1107 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1108 | engines: {node: '>=6'} 1109 | 1110 | queue-microtask@1.2.3: 1111 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1112 | 1113 | resolve-from@4.0.0: 1114 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1115 | engines: {node: '>=4'} 1116 | 1117 | restore-cursor@5.1.0: 1118 | resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} 1119 | engines: {node: '>=18'} 1120 | 1121 | reusify@1.1.0: 1122 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1123 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1124 | 1125 | rollup@4.42.0: 1126 | resolution: {integrity: sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==} 1127 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1128 | hasBin: true 1129 | 1130 | run-parallel@1.2.0: 1131 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1132 | 1133 | safer-buffer@2.1.2: 1134 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1135 | 1136 | semver@7.7.3: 1137 | resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 1138 | engines: {node: '>=10'} 1139 | hasBin: true 1140 | 1141 | shebang-command@2.0.0: 1142 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1143 | engines: {node: '>=8'} 1144 | 1145 | shebang-regex@3.0.0: 1146 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1147 | engines: {node: '>=8'} 1148 | 1149 | siginfo@2.0.0: 1150 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1151 | 1152 | signal-exit@4.1.0: 1153 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1154 | engines: {node: '>=14'} 1155 | 1156 | source-map-js@1.2.1: 1157 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1158 | engines: {node: '>=0.10.0'} 1159 | 1160 | stackback@0.0.2: 1161 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1162 | 1163 | std-env@3.10.0: 1164 | resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} 1165 | 1166 | stdin-discarder@0.2.2: 1167 | resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} 1168 | engines: {node: '>=18'} 1169 | 1170 | string-width@8.1.0: 1171 | resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} 1172 | engines: {node: '>=20'} 1173 | 1174 | strip-ansi@7.1.2: 1175 | resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} 1176 | engines: {node: '>=12'} 1177 | 1178 | strip-json-comments@3.1.1: 1179 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1180 | engines: {node: '>=8'} 1181 | 1182 | supports-color@7.2.0: 1183 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1184 | engines: {node: '>=8'} 1185 | 1186 | tinybench@2.9.0: 1187 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1188 | 1189 | tinyexec@1.0.2: 1190 | resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 1191 | engines: {node: '>=18'} 1192 | 1193 | tinyglobby@0.2.15: 1194 | resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 1195 | engines: {node: '>=12.0.0'} 1196 | 1197 | tinyrainbow@3.0.3: 1198 | resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} 1199 | engines: {node: '>=14.0.0'} 1200 | 1201 | to-regex-range@5.0.1: 1202 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1203 | engines: {node: '>=8.0'} 1204 | 1205 | ts-api-utils@2.1.0: 1206 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1207 | engines: {node: '>=18.12'} 1208 | peerDependencies: 1209 | typescript: '>=4.8.4' 1210 | 1211 | type-check@0.4.0: 1212 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1213 | engines: {node: '>= 0.8.0'} 1214 | 1215 | typescript-eslint@8.46.3: 1216 | resolution: {integrity: sha512-bAfgMavTuGo+8n6/QQDVQz4tZ4f7Soqg53RbrlZQEoAltYop/XR4RAts/I0BrO3TTClTSTFJ0wYbla+P8cEWJA==} 1217 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1218 | peerDependencies: 1219 | eslint: ^8.57.0 || ^9.0.0 1220 | typescript: '>=4.8.4 <6.0.0' 1221 | 1222 | typescript@5.9.3: 1223 | resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 1224 | engines: {node: '>=14.17'} 1225 | hasBin: true 1226 | 1227 | undici-types@7.16.0: 1228 | resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} 1229 | 1230 | undici@7.12.0: 1231 | resolution: {integrity: sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==} 1232 | engines: {node: '>=20.18.1'} 1233 | 1234 | uri-js@4.4.1: 1235 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1236 | 1237 | vite@6.3.5: 1238 | resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} 1239 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1240 | hasBin: true 1241 | peerDependencies: 1242 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1243 | jiti: '>=1.21.0' 1244 | less: '*' 1245 | lightningcss: ^1.21.0 1246 | sass: '*' 1247 | sass-embedded: '*' 1248 | stylus: '*' 1249 | sugarss: '*' 1250 | terser: ^5.16.0 1251 | tsx: ^4.8.1 1252 | yaml: ^2.4.2 1253 | peerDependenciesMeta: 1254 | '@types/node': 1255 | optional: true 1256 | jiti: 1257 | optional: true 1258 | less: 1259 | optional: true 1260 | lightningcss: 1261 | optional: true 1262 | sass: 1263 | optional: true 1264 | sass-embedded: 1265 | optional: true 1266 | stylus: 1267 | optional: true 1268 | sugarss: 1269 | optional: true 1270 | terser: 1271 | optional: true 1272 | tsx: 1273 | optional: true 1274 | yaml: 1275 | optional: true 1276 | 1277 | vitest@4.0.15: 1278 | resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} 1279 | engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} 1280 | hasBin: true 1281 | peerDependencies: 1282 | '@edge-runtime/vm': '*' 1283 | '@opentelemetry/api': ^1.9.0 1284 | '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 1285 | '@vitest/browser-playwright': 4.0.15 1286 | '@vitest/browser-preview': 4.0.15 1287 | '@vitest/browser-webdriverio': 4.0.15 1288 | '@vitest/ui': 4.0.15 1289 | happy-dom: '*' 1290 | jsdom: '*' 1291 | peerDependenciesMeta: 1292 | '@edge-runtime/vm': 1293 | optional: true 1294 | '@opentelemetry/api': 1295 | optional: true 1296 | '@types/node': 1297 | optional: true 1298 | '@vitest/browser-playwright': 1299 | optional: true 1300 | '@vitest/browser-preview': 1301 | optional: true 1302 | '@vitest/browser-webdriverio': 1303 | optional: true 1304 | '@vitest/ui': 1305 | optional: true 1306 | happy-dom: 1307 | optional: true 1308 | jsdom: 1309 | optional: true 1310 | 1311 | whatwg-encoding@3.1.1: 1312 | resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} 1313 | engines: {node: '>=18'} 1314 | 1315 | whatwg-mimetype@4.0.0: 1316 | resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} 1317 | engines: {node: '>=18'} 1318 | 1319 | which@2.0.2: 1320 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1321 | engines: {node: '>= 8'} 1322 | hasBin: true 1323 | 1324 | why-is-node-running@2.3.0: 1325 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1326 | engines: {node: '>=8'} 1327 | hasBin: true 1328 | 1329 | word-wrap@1.2.5: 1330 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1331 | engines: {node: '>=0.10.0'} 1332 | 1333 | yocto-queue@0.1.0: 1334 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1335 | engines: {node: '>=10'} 1336 | 1337 | yoctocolors@2.1.2: 1338 | resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} 1339 | engines: {node: '>=18'} 1340 | 1341 | snapshots: 1342 | 1343 | '@babel/helper-string-parser@7.27.1': {} 1344 | 1345 | '@babel/helper-validator-identifier@7.28.5': {} 1346 | 1347 | '@babel/parser@7.28.5': 1348 | dependencies: 1349 | '@babel/types': 7.28.5 1350 | 1351 | '@babel/types@7.28.5': 1352 | dependencies: 1353 | '@babel/helper-string-parser': 7.27.1 1354 | '@babel/helper-validator-identifier': 7.28.5 1355 | 1356 | '@bcoe/v8-coverage@1.0.2': {} 1357 | 1358 | '@esbuild/aix-ppc64@0.25.5': 1359 | optional: true 1360 | 1361 | '@esbuild/android-arm64@0.25.5': 1362 | optional: true 1363 | 1364 | '@esbuild/android-arm@0.25.5': 1365 | optional: true 1366 | 1367 | '@esbuild/android-x64@0.25.5': 1368 | optional: true 1369 | 1370 | '@esbuild/darwin-arm64@0.25.5': 1371 | optional: true 1372 | 1373 | '@esbuild/darwin-x64@0.25.5': 1374 | optional: true 1375 | 1376 | '@esbuild/freebsd-arm64@0.25.5': 1377 | optional: true 1378 | 1379 | '@esbuild/freebsd-x64@0.25.5': 1380 | optional: true 1381 | 1382 | '@esbuild/linux-arm64@0.25.5': 1383 | optional: true 1384 | 1385 | '@esbuild/linux-arm@0.25.5': 1386 | optional: true 1387 | 1388 | '@esbuild/linux-ia32@0.25.5': 1389 | optional: true 1390 | 1391 | '@esbuild/linux-loong64@0.25.5': 1392 | optional: true 1393 | 1394 | '@esbuild/linux-mips64el@0.25.5': 1395 | optional: true 1396 | 1397 | '@esbuild/linux-ppc64@0.25.5': 1398 | optional: true 1399 | 1400 | '@esbuild/linux-riscv64@0.25.5': 1401 | optional: true 1402 | 1403 | '@esbuild/linux-s390x@0.25.5': 1404 | optional: true 1405 | 1406 | '@esbuild/linux-x64@0.25.5': 1407 | optional: true 1408 | 1409 | '@esbuild/netbsd-arm64@0.25.5': 1410 | optional: true 1411 | 1412 | '@esbuild/netbsd-x64@0.25.5': 1413 | optional: true 1414 | 1415 | '@esbuild/openbsd-arm64@0.25.5': 1416 | optional: true 1417 | 1418 | '@esbuild/openbsd-x64@0.25.5': 1419 | optional: true 1420 | 1421 | '@esbuild/sunos-x64@0.25.5': 1422 | optional: true 1423 | 1424 | '@esbuild/win32-arm64@0.25.5': 1425 | optional: true 1426 | 1427 | '@esbuild/win32-ia32@0.25.5': 1428 | optional: true 1429 | 1430 | '@esbuild/win32-x64@0.25.5': 1431 | optional: true 1432 | 1433 | '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': 1434 | dependencies: 1435 | eslint: 9.39.1(jiti@2.6.1) 1436 | eslint-visitor-keys: 3.4.3 1437 | 1438 | '@eslint-community/regexpp@4.12.2': {} 1439 | 1440 | '@eslint/config-array@0.21.1': 1441 | dependencies: 1442 | '@eslint/object-schema': 2.1.7 1443 | debug: 4.4.3 1444 | minimatch: 3.1.2 1445 | transitivePeerDependencies: 1446 | - supports-color 1447 | 1448 | '@eslint/config-helpers@0.4.2': 1449 | dependencies: 1450 | '@eslint/core': 0.17.0 1451 | 1452 | '@eslint/core@0.17.0': 1453 | dependencies: 1454 | '@types/json-schema': 7.0.15 1455 | 1456 | '@eslint/eslintrc@3.3.1': 1457 | dependencies: 1458 | ajv: 6.12.6 1459 | debug: 4.4.3 1460 | espree: 10.4.0 1461 | globals: 14.0.0 1462 | ignore: 5.3.2 1463 | import-fresh: 3.3.1 1464 | js-yaml: 4.1.1 1465 | minimatch: 3.1.2 1466 | strip-json-comments: 3.1.1 1467 | transitivePeerDependencies: 1468 | - supports-color 1469 | 1470 | '@eslint/js@9.39.1': {} 1471 | 1472 | '@eslint/object-schema@2.1.7': {} 1473 | 1474 | '@eslint/plugin-kit@0.4.1': 1475 | dependencies: 1476 | '@eslint/core': 0.17.0 1477 | levn: 0.4.1 1478 | 1479 | '@humanfs/core@0.19.1': {} 1480 | 1481 | '@humanfs/node@0.16.7': 1482 | dependencies: 1483 | '@humanfs/core': 0.19.1 1484 | '@humanwhocodes/retry': 0.4.3 1485 | 1486 | '@humanwhocodes/module-importer@1.0.1': {} 1487 | 1488 | '@humanwhocodes/retry@0.4.3': {} 1489 | 1490 | '@jridgewell/resolve-uri@3.1.2': {} 1491 | 1492 | '@jridgewell/sourcemap-codec@1.5.0': {} 1493 | 1494 | '@jridgewell/sourcemap-codec@1.5.5': {} 1495 | 1496 | '@jridgewell/trace-mapping@0.3.25': 1497 | dependencies: 1498 | '@jridgewell/resolve-uri': 3.1.2 1499 | '@jridgewell/sourcemap-codec': 1.5.0 1500 | 1501 | '@jridgewell/trace-mapping@0.3.31': 1502 | dependencies: 1503 | '@jridgewell/resolve-uri': 3.1.2 1504 | '@jridgewell/sourcemap-codec': 1.5.0 1505 | 1506 | '@nodelib/fs.scandir@2.1.5': 1507 | dependencies: 1508 | '@nodelib/fs.stat': 2.0.5 1509 | run-parallel: 1.2.0 1510 | 1511 | '@nodelib/fs.stat@2.0.5': {} 1512 | 1513 | '@nodelib/fs.walk@1.2.8': 1514 | dependencies: 1515 | '@nodelib/fs.scandir': 2.1.5 1516 | fastq: 1.19.1 1517 | 1518 | '@rollup/rollup-android-arm-eabi@4.42.0': 1519 | optional: true 1520 | 1521 | '@rollup/rollup-android-arm64@4.42.0': 1522 | optional: true 1523 | 1524 | '@rollup/rollup-darwin-arm64@4.42.0': 1525 | optional: true 1526 | 1527 | '@rollup/rollup-darwin-x64@4.42.0': 1528 | optional: true 1529 | 1530 | '@rollup/rollup-freebsd-arm64@4.42.0': 1531 | optional: true 1532 | 1533 | '@rollup/rollup-freebsd-x64@4.42.0': 1534 | optional: true 1535 | 1536 | '@rollup/rollup-linux-arm-gnueabihf@4.42.0': 1537 | optional: true 1538 | 1539 | '@rollup/rollup-linux-arm-musleabihf@4.42.0': 1540 | optional: true 1541 | 1542 | '@rollup/rollup-linux-arm64-gnu@4.42.0': 1543 | optional: true 1544 | 1545 | '@rollup/rollup-linux-arm64-musl@4.42.0': 1546 | optional: true 1547 | 1548 | '@rollup/rollup-linux-loongarch64-gnu@4.42.0': 1549 | optional: true 1550 | 1551 | '@rollup/rollup-linux-powerpc64le-gnu@4.42.0': 1552 | optional: true 1553 | 1554 | '@rollup/rollup-linux-riscv64-gnu@4.42.0': 1555 | optional: true 1556 | 1557 | '@rollup/rollup-linux-riscv64-musl@4.42.0': 1558 | optional: true 1559 | 1560 | '@rollup/rollup-linux-s390x-gnu@4.42.0': 1561 | optional: true 1562 | 1563 | '@rollup/rollup-linux-x64-gnu@4.42.0': 1564 | optional: true 1565 | 1566 | '@rollup/rollup-linux-x64-musl@4.42.0': 1567 | optional: true 1568 | 1569 | '@rollup/rollup-win32-arm64-msvc@4.42.0': 1570 | optional: true 1571 | 1572 | '@rollup/rollup-win32-ia32-msvc@4.42.0': 1573 | optional: true 1574 | 1575 | '@rollup/rollup-win32-x64-msvc@4.42.0': 1576 | optional: true 1577 | 1578 | '@standard-schema/spec@1.0.0': {} 1579 | 1580 | '@tsconfig/node24@24.0.3': {} 1581 | 1582 | '@types/chai@5.2.3': 1583 | dependencies: 1584 | '@types/deep-eql': 4.0.2 1585 | assertion-error: 2.0.1 1586 | 1587 | '@types/deep-eql@4.0.2': {} 1588 | 1589 | '@types/estree@1.0.7': {} 1590 | 1591 | '@types/estree@1.0.8': {} 1592 | 1593 | '@types/json-schema@7.0.15': {} 1594 | 1595 | '@types/node@24.10.1': 1596 | dependencies: 1597 | undici-types: 7.16.0 1598 | 1599 | '@typescript-eslint/eslint-plugin@8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': 1600 | dependencies: 1601 | '@eslint-community/regexpp': 4.12.2 1602 | '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 1603 | '@typescript-eslint/scope-manager': 8.46.3 1604 | '@typescript-eslint/type-utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 1605 | '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 1606 | '@typescript-eslint/visitor-keys': 8.46.3 1607 | eslint: 9.39.1(jiti@2.6.1) 1608 | graphemer: 1.4.0 1609 | ignore: 7.0.5 1610 | natural-compare: 1.4.0 1611 | ts-api-utils: 2.1.0(typescript@5.9.3) 1612 | typescript: 5.9.3 1613 | transitivePeerDependencies: 1614 | - supports-color 1615 | 1616 | '@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': 1617 | dependencies: 1618 | '@typescript-eslint/scope-manager': 8.46.3 1619 | '@typescript-eslint/types': 8.46.3 1620 | '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) 1621 | '@typescript-eslint/visitor-keys': 8.46.3 1622 | debug: 4.4.3 1623 | eslint: 9.39.1(jiti@2.6.1) 1624 | typescript: 5.9.3 1625 | transitivePeerDependencies: 1626 | - supports-color 1627 | 1628 | '@typescript-eslint/project-service@8.46.3(typescript@5.9.3)': 1629 | dependencies: 1630 | '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3) 1631 | '@typescript-eslint/types': 8.46.3 1632 | debug: 4.4.3 1633 | typescript: 5.9.3 1634 | transitivePeerDependencies: 1635 | - supports-color 1636 | 1637 | '@typescript-eslint/scope-manager@8.46.3': 1638 | dependencies: 1639 | '@typescript-eslint/types': 8.46.3 1640 | '@typescript-eslint/visitor-keys': 8.46.3 1641 | 1642 | '@typescript-eslint/tsconfig-utils@8.46.3(typescript@5.9.3)': 1643 | dependencies: 1644 | typescript: 5.9.3 1645 | 1646 | '@typescript-eslint/type-utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': 1647 | dependencies: 1648 | '@typescript-eslint/types': 8.46.3 1649 | '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) 1650 | '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 1651 | debug: 4.4.3 1652 | eslint: 9.39.1(jiti@2.6.1) 1653 | ts-api-utils: 2.1.0(typescript@5.9.3) 1654 | typescript: 5.9.3 1655 | transitivePeerDependencies: 1656 | - supports-color 1657 | 1658 | '@typescript-eslint/types@8.46.3': {} 1659 | 1660 | '@typescript-eslint/typescript-estree@8.46.3(typescript@5.9.3)': 1661 | dependencies: 1662 | '@typescript-eslint/project-service': 8.46.3(typescript@5.9.3) 1663 | '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3) 1664 | '@typescript-eslint/types': 8.46.3 1665 | '@typescript-eslint/visitor-keys': 8.46.3 1666 | debug: 4.4.3 1667 | fast-glob: 3.3.3 1668 | is-glob: 4.0.3 1669 | minimatch: 9.0.5 1670 | semver: 7.7.3 1671 | ts-api-utils: 2.1.0(typescript@5.9.3) 1672 | typescript: 5.9.3 1673 | transitivePeerDependencies: 1674 | - supports-color 1675 | 1676 | '@typescript-eslint/utils@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': 1677 | dependencies: 1678 | '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) 1679 | '@typescript-eslint/scope-manager': 8.46.3 1680 | '@typescript-eslint/types': 8.46.3 1681 | '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) 1682 | eslint: 9.39.1(jiti@2.6.1) 1683 | typescript: 5.9.3 1684 | transitivePeerDependencies: 1685 | - supports-color 1686 | 1687 | '@typescript-eslint/visitor-keys@8.46.3': 1688 | dependencies: 1689 | '@typescript-eslint/types': 8.46.3 1690 | eslint-visitor-keys: 4.2.1 1691 | 1692 | '@vitest/coverage-v8@4.0.15(vitest@4.0.15(@types/node@24.10.1)(jiti@2.6.1))': 1693 | dependencies: 1694 | '@bcoe/v8-coverage': 1.0.2 1695 | '@vitest/utils': 4.0.15 1696 | ast-v8-to-istanbul: 0.3.8 1697 | istanbul-lib-coverage: 3.2.2 1698 | istanbul-lib-report: 3.0.1 1699 | istanbul-lib-source-maps: 5.0.6 1700 | istanbul-reports: 3.2.0 1701 | magicast: 0.5.1 1702 | obug: 2.1.1 1703 | std-env: 3.10.0 1704 | tinyrainbow: 3.0.3 1705 | vitest: 4.0.15(@types/node@24.10.1)(jiti@2.6.1) 1706 | transitivePeerDependencies: 1707 | - supports-color 1708 | 1709 | '@vitest/expect@4.0.15': 1710 | dependencies: 1711 | '@standard-schema/spec': 1.0.0 1712 | '@types/chai': 5.2.3 1713 | '@vitest/spy': 4.0.15 1714 | '@vitest/utils': 4.0.15 1715 | chai: 6.2.1 1716 | tinyrainbow: 3.0.3 1717 | 1718 | '@vitest/mocker@4.0.15(vite@6.3.5(@types/node@24.10.1)(jiti@2.6.1))': 1719 | dependencies: 1720 | '@vitest/spy': 4.0.15 1721 | estree-walker: 3.0.3 1722 | magic-string: 0.30.21 1723 | optionalDependencies: 1724 | vite: 6.3.5(@types/node@24.10.1)(jiti@2.6.1) 1725 | 1726 | '@vitest/pretty-format@4.0.15': 1727 | dependencies: 1728 | tinyrainbow: 3.0.3 1729 | 1730 | '@vitest/runner@4.0.15': 1731 | dependencies: 1732 | '@vitest/utils': 4.0.15 1733 | pathe: 2.0.3 1734 | 1735 | '@vitest/snapshot@4.0.15': 1736 | dependencies: 1737 | '@vitest/pretty-format': 4.0.15 1738 | magic-string: 0.30.21 1739 | pathe: 2.0.3 1740 | 1741 | '@vitest/spy@4.0.15': {} 1742 | 1743 | '@vitest/utils@4.0.15': 1744 | dependencies: 1745 | '@vitest/pretty-format': 4.0.15 1746 | tinyrainbow: 3.0.3 1747 | 1748 | acorn-jsx@5.3.2(acorn@8.15.0): 1749 | dependencies: 1750 | acorn: 8.15.0 1751 | 1752 | acorn@8.15.0: {} 1753 | 1754 | ajv@6.12.6: 1755 | dependencies: 1756 | fast-deep-equal: 3.1.3 1757 | fast-json-stable-stringify: 2.1.0 1758 | json-schema-traverse: 0.4.1 1759 | uri-js: 4.4.1 1760 | 1761 | ansi-regex@6.2.2: {} 1762 | 1763 | ansi-styles@4.3.0: 1764 | dependencies: 1765 | color-convert: 2.0.1 1766 | 1767 | argparse@2.0.1: {} 1768 | 1769 | assertion-error@2.0.1: {} 1770 | 1771 | ast-v8-to-istanbul@0.3.8: 1772 | dependencies: 1773 | '@jridgewell/trace-mapping': 0.3.31 1774 | estree-walker: 3.0.3 1775 | js-tokens: 9.0.1 1776 | 1777 | balanced-match@1.0.2: {} 1778 | 1779 | boolbase@1.0.0: {} 1780 | 1781 | brace-expansion@1.1.12: 1782 | dependencies: 1783 | balanced-match: 1.0.2 1784 | concat-map: 0.0.1 1785 | 1786 | brace-expansion@2.0.2: 1787 | dependencies: 1788 | balanced-match: 1.0.2 1789 | 1790 | braces@3.0.3: 1791 | dependencies: 1792 | fill-range: 7.1.1 1793 | 1794 | callsites@3.1.0: {} 1795 | 1796 | chai@6.2.1: {} 1797 | 1798 | chalk@4.1.2: 1799 | dependencies: 1800 | ansi-styles: 4.3.0 1801 | supports-color: 7.2.0 1802 | 1803 | chalk@5.6.2: {} 1804 | 1805 | cheerio-select@2.1.0: 1806 | dependencies: 1807 | boolbase: 1.0.0 1808 | css-select: 5.2.2 1809 | css-what: 6.2.2 1810 | domelementtype: 2.3.0 1811 | domhandler: 5.0.3 1812 | domutils: 3.2.2 1813 | 1814 | cheerio@1.1.0: 1815 | dependencies: 1816 | cheerio-select: 2.1.0 1817 | dom-serializer: 2.0.0 1818 | domhandler: 5.0.3 1819 | domutils: 3.2.2 1820 | encoding-sniffer: 0.2.1 1821 | htmlparser2: 10.0.0 1822 | parse5: 7.3.0 1823 | parse5-htmlparser2-tree-adapter: 7.1.0 1824 | parse5-parser-stream: 7.1.2 1825 | undici: 7.12.0 1826 | whatwg-mimetype: 4.0.0 1827 | 1828 | cli-cursor@5.0.0: 1829 | dependencies: 1830 | restore-cursor: 5.1.0 1831 | 1832 | cli-spinners@3.3.0: {} 1833 | 1834 | color-convert@2.0.1: 1835 | dependencies: 1836 | color-name: 1.1.4 1837 | 1838 | color-name@1.1.4: {} 1839 | 1840 | commander@14.0.2: {} 1841 | 1842 | concat-map@0.0.1: {} 1843 | 1844 | cross-spawn@7.0.6: 1845 | dependencies: 1846 | path-key: 3.1.1 1847 | shebang-command: 2.0.0 1848 | which: 2.0.2 1849 | 1850 | css-select@5.2.2: 1851 | dependencies: 1852 | boolbase: 1.0.0 1853 | css-what: 6.2.2 1854 | domhandler: 5.0.3 1855 | domutils: 3.2.2 1856 | nth-check: 2.1.1 1857 | 1858 | css-what@6.2.2: {} 1859 | 1860 | debug@4.4.3: 1861 | dependencies: 1862 | ms: 2.1.3 1863 | 1864 | deep-is@0.1.4: {} 1865 | 1866 | dom-serializer@2.0.0: 1867 | dependencies: 1868 | domelementtype: 2.3.0 1869 | domhandler: 5.0.3 1870 | entities: 4.5.0 1871 | 1872 | domelementtype@2.3.0: {} 1873 | 1874 | domhandler@5.0.3: 1875 | dependencies: 1876 | domelementtype: 2.3.0 1877 | 1878 | domutils@3.2.2: 1879 | dependencies: 1880 | dom-serializer: 2.0.0 1881 | domelementtype: 2.3.0 1882 | domhandler: 5.0.3 1883 | 1884 | encoding-sniffer@0.2.1: 1885 | dependencies: 1886 | iconv-lite: 0.6.3 1887 | whatwg-encoding: 3.1.1 1888 | 1889 | entities@4.5.0: {} 1890 | 1891 | entities@6.0.1: {} 1892 | 1893 | es-module-lexer@1.7.0: {} 1894 | 1895 | esbuild@0.25.5: 1896 | optionalDependencies: 1897 | '@esbuild/aix-ppc64': 0.25.5 1898 | '@esbuild/android-arm': 0.25.5 1899 | '@esbuild/android-arm64': 0.25.5 1900 | '@esbuild/android-x64': 0.25.5 1901 | '@esbuild/darwin-arm64': 0.25.5 1902 | '@esbuild/darwin-x64': 0.25.5 1903 | '@esbuild/freebsd-arm64': 0.25.5 1904 | '@esbuild/freebsd-x64': 0.25.5 1905 | '@esbuild/linux-arm': 0.25.5 1906 | '@esbuild/linux-arm64': 0.25.5 1907 | '@esbuild/linux-ia32': 0.25.5 1908 | '@esbuild/linux-loong64': 0.25.5 1909 | '@esbuild/linux-mips64el': 0.25.5 1910 | '@esbuild/linux-ppc64': 0.25.5 1911 | '@esbuild/linux-riscv64': 0.25.5 1912 | '@esbuild/linux-s390x': 0.25.5 1913 | '@esbuild/linux-x64': 0.25.5 1914 | '@esbuild/netbsd-arm64': 0.25.5 1915 | '@esbuild/netbsd-x64': 0.25.5 1916 | '@esbuild/openbsd-arm64': 0.25.5 1917 | '@esbuild/openbsd-x64': 0.25.5 1918 | '@esbuild/sunos-x64': 0.25.5 1919 | '@esbuild/win32-arm64': 0.25.5 1920 | '@esbuild/win32-ia32': 0.25.5 1921 | '@esbuild/win32-x64': 0.25.5 1922 | 1923 | escape-string-regexp@4.0.0: {} 1924 | 1925 | eslint-scope@8.4.0: 1926 | dependencies: 1927 | esrecurse: 4.3.0 1928 | estraverse: 5.3.0 1929 | 1930 | eslint-visitor-keys@3.4.3: {} 1931 | 1932 | eslint-visitor-keys@4.2.1: {} 1933 | 1934 | eslint@9.39.1(jiti@2.6.1): 1935 | dependencies: 1936 | '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) 1937 | '@eslint-community/regexpp': 4.12.2 1938 | '@eslint/config-array': 0.21.1 1939 | '@eslint/config-helpers': 0.4.2 1940 | '@eslint/core': 0.17.0 1941 | '@eslint/eslintrc': 3.3.1 1942 | '@eslint/js': 9.39.1 1943 | '@eslint/plugin-kit': 0.4.1 1944 | '@humanfs/node': 0.16.7 1945 | '@humanwhocodes/module-importer': 1.0.1 1946 | '@humanwhocodes/retry': 0.4.3 1947 | '@types/estree': 1.0.8 1948 | ajv: 6.12.6 1949 | chalk: 4.1.2 1950 | cross-spawn: 7.0.6 1951 | debug: 4.4.3 1952 | escape-string-regexp: 4.0.0 1953 | eslint-scope: 8.4.0 1954 | eslint-visitor-keys: 4.2.1 1955 | espree: 10.4.0 1956 | esquery: 1.6.0 1957 | esutils: 2.0.3 1958 | fast-deep-equal: 3.1.3 1959 | file-entry-cache: 8.0.0 1960 | find-up: 5.0.0 1961 | glob-parent: 6.0.2 1962 | ignore: 5.3.2 1963 | imurmurhash: 0.1.4 1964 | is-glob: 4.0.3 1965 | json-stable-stringify-without-jsonify: 1.0.1 1966 | lodash.merge: 4.6.2 1967 | minimatch: 3.1.2 1968 | natural-compare: 1.4.0 1969 | optionator: 0.9.4 1970 | optionalDependencies: 1971 | jiti: 2.6.1 1972 | transitivePeerDependencies: 1973 | - supports-color 1974 | 1975 | espree@10.4.0: 1976 | dependencies: 1977 | acorn: 8.15.0 1978 | acorn-jsx: 5.3.2(acorn@8.15.0) 1979 | eslint-visitor-keys: 4.2.1 1980 | 1981 | esquery@1.6.0: 1982 | dependencies: 1983 | estraverse: 5.3.0 1984 | 1985 | esrecurse@4.3.0: 1986 | dependencies: 1987 | estraverse: 5.3.0 1988 | 1989 | estraverse@5.3.0: {} 1990 | 1991 | estree-walker@3.0.3: 1992 | dependencies: 1993 | '@types/estree': 1.0.8 1994 | 1995 | esutils@2.0.3: {} 1996 | 1997 | expect-type@1.3.0: {} 1998 | 1999 | fast-deep-equal@3.1.3: {} 2000 | 2001 | fast-glob@3.3.3: 2002 | dependencies: 2003 | '@nodelib/fs.stat': 2.0.5 2004 | '@nodelib/fs.walk': 1.2.8 2005 | glob-parent: 5.1.2 2006 | merge2: 1.4.1 2007 | micromatch: 4.0.8 2008 | 2009 | fast-json-stable-stringify@2.1.0: {} 2010 | 2011 | fast-levenshtein@2.0.6: {} 2012 | 2013 | fastq@1.19.1: 2014 | dependencies: 2015 | reusify: 1.1.0 2016 | 2017 | fdir@6.4.5(picomatch@4.0.3): 2018 | optionalDependencies: 2019 | picomatch: 4.0.3 2020 | 2021 | fdir@6.5.0(picomatch@4.0.3): 2022 | optionalDependencies: 2023 | picomatch: 4.0.3 2024 | 2025 | file-entry-cache@8.0.0: 2026 | dependencies: 2027 | flat-cache: 4.0.1 2028 | 2029 | fill-range@7.1.1: 2030 | dependencies: 2031 | to-regex-range: 5.0.1 2032 | 2033 | find-up@5.0.0: 2034 | dependencies: 2035 | locate-path: 6.0.0 2036 | path-exists: 4.0.0 2037 | 2038 | flat-cache@4.0.1: 2039 | dependencies: 2040 | flatted: 3.3.3 2041 | keyv: 4.5.4 2042 | 2043 | flatted@3.3.3: {} 2044 | 2045 | fsevents@2.3.3: 2046 | optional: true 2047 | 2048 | get-east-asian-width@1.4.0: {} 2049 | 2050 | glob-parent@5.1.2: 2051 | dependencies: 2052 | is-glob: 4.0.3 2053 | 2054 | glob-parent@6.0.2: 2055 | dependencies: 2056 | is-glob: 4.0.3 2057 | 2058 | globals@14.0.0: {} 2059 | 2060 | google-sr-selectors@3.0.0: {} 2061 | 2062 | google-sr@6.0.0: 2063 | dependencies: 2064 | cheerio: 1.1.0 2065 | google-sr-selectors: 3.0.0 2066 | 2067 | graphemer@1.4.0: {} 2068 | 2069 | has-flag@4.0.0: {} 2070 | 2071 | html-escaper@2.0.2: {} 2072 | 2073 | htmlparser2@10.0.0: 2074 | dependencies: 2075 | domelementtype: 2.3.0 2076 | domhandler: 5.0.3 2077 | domutils: 3.2.2 2078 | entities: 6.0.1 2079 | 2080 | iconv-lite@0.6.3: 2081 | dependencies: 2082 | safer-buffer: 2.1.2 2083 | 2084 | ignore@5.3.2: {} 2085 | 2086 | ignore@7.0.5: {} 2087 | 2088 | import-fresh@3.3.1: 2089 | dependencies: 2090 | parent-module: 1.0.1 2091 | resolve-from: 4.0.0 2092 | 2093 | imurmurhash@0.1.4: {} 2094 | 2095 | is-extglob@2.1.1: {} 2096 | 2097 | is-glob@4.0.3: 2098 | dependencies: 2099 | is-extglob: 2.1.1 2100 | 2101 | is-interactive@2.0.0: {} 2102 | 2103 | is-number@7.0.0: {} 2104 | 2105 | is-unicode-supported@2.1.0: {} 2106 | 2107 | isexe@2.0.0: {} 2108 | 2109 | istanbul-lib-coverage@3.2.2: {} 2110 | 2111 | istanbul-lib-report@3.0.1: 2112 | dependencies: 2113 | istanbul-lib-coverage: 3.2.2 2114 | make-dir: 4.0.0 2115 | supports-color: 7.2.0 2116 | 2117 | istanbul-lib-source-maps@5.0.6: 2118 | dependencies: 2119 | '@jridgewell/trace-mapping': 0.3.25 2120 | debug: 4.4.3 2121 | istanbul-lib-coverage: 3.2.2 2122 | transitivePeerDependencies: 2123 | - supports-color 2124 | 2125 | istanbul-reports@3.2.0: 2126 | dependencies: 2127 | html-escaper: 2.0.2 2128 | istanbul-lib-report: 3.0.1 2129 | 2130 | jiti@2.6.1: {} 2131 | 2132 | js-tokens@9.0.1: {} 2133 | 2134 | js-yaml@4.1.1: 2135 | dependencies: 2136 | argparse: 2.0.1 2137 | 2138 | json-buffer@3.0.1: {} 2139 | 2140 | json-schema-traverse@0.4.1: {} 2141 | 2142 | json-stable-stringify-without-jsonify@1.0.1: {} 2143 | 2144 | keyv@4.5.4: 2145 | dependencies: 2146 | json-buffer: 3.0.1 2147 | 2148 | lefthook-darwin-arm64@2.0.2: 2149 | optional: true 2150 | 2151 | lefthook-darwin-x64@2.0.2: 2152 | optional: true 2153 | 2154 | lefthook-freebsd-arm64@2.0.2: 2155 | optional: true 2156 | 2157 | lefthook-freebsd-x64@2.0.2: 2158 | optional: true 2159 | 2160 | lefthook-linux-arm64@2.0.2: 2161 | optional: true 2162 | 2163 | lefthook-linux-x64@2.0.2: 2164 | optional: true 2165 | 2166 | lefthook-openbsd-arm64@2.0.2: 2167 | optional: true 2168 | 2169 | lefthook-openbsd-x64@2.0.2: 2170 | optional: true 2171 | 2172 | lefthook-windows-arm64@2.0.2: 2173 | optional: true 2174 | 2175 | lefthook-windows-x64@2.0.2: 2176 | optional: true 2177 | 2178 | lefthook@2.0.2: 2179 | optionalDependencies: 2180 | lefthook-darwin-arm64: 2.0.2 2181 | lefthook-darwin-x64: 2.0.2 2182 | lefthook-freebsd-arm64: 2.0.2 2183 | lefthook-freebsd-x64: 2.0.2 2184 | lefthook-linux-arm64: 2.0.2 2185 | lefthook-linux-x64: 2.0.2 2186 | lefthook-openbsd-arm64: 2.0.2 2187 | lefthook-openbsd-x64: 2.0.2 2188 | lefthook-windows-arm64: 2.0.2 2189 | lefthook-windows-x64: 2.0.2 2190 | 2191 | levn@0.4.1: 2192 | dependencies: 2193 | prelude-ls: 1.2.1 2194 | type-check: 0.4.0 2195 | 2196 | locate-path@6.0.0: 2197 | dependencies: 2198 | p-locate: 5.0.0 2199 | 2200 | lodash.merge@4.6.2: {} 2201 | 2202 | log-symbols@7.0.1: 2203 | dependencies: 2204 | is-unicode-supported: 2.1.0 2205 | yoctocolors: 2.1.2 2206 | 2207 | magic-string@0.30.21: 2208 | dependencies: 2209 | '@jridgewell/sourcemap-codec': 1.5.5 2210 | 2211 | magicast@0.5.1: 2212 | dependencies: 2213 | '@babel/parser': 7.28.5 2214 | '@babel/types': 7.28.5 2215 | source-map-js: 1.2.1 2216 | 2217 | make-dir@4.0.0: 2218 | dependencies: 2219 | semver: 7.7.3 2220 | 2221 | merge2@1.4.1: {} 2222 | 2223 | micromatch@4.0.8: 2224 | dependencies: 2225 | braces: 3.0.3 2226 | picomatch: 2.3.1 2227 | 2228 | mimic-function@5.0.1: {} 2229 | 2230 | minimatch@3.1.2: 2231 | dependencies: 2232 | brace-expansion: 1.1.12 2233 | 2234 | minimatch@9.0.5: 2235 | dependencies: 2236 | brace-expansion: 2.0.2 2237 | 2238 | ms@2.1.3: {} 2239 | 2240 | nanoid@3.3.11: {} 2241 | 2242 | natural-compare@1.4.0: {} 2243 | 2244 | nth-check@2.1.1: 2245 | dependencies: 2246 | boolbase: 1.0.0 2247 | 2248 | obug@2.1.1: {} 2249 | 2250 | onetime@7.0.0: 2251 | dependencies: 2252 | mimic-function: 5.0.1 2253 | 2254 | optionator@0.9.4: 2255 | dependencies: 2256 | deep-is: 0.1.4 2257 | fast-levenshtein: 2.0.6 2258 | levn: 0.4.1 2259 | prelude-ls: 1.2.1 2260 | type-check: 0.4.0 2261 | word-wrap: 1.2.5 2262 | 2263 | ora@9.0.0: 2264 | dependencies: 2265 | chalk: 5.6.2 2266 | cli-cursor: 5.0.0 2267 | cli-spinners: 3.3.0 2268 | is-interactive: 2.0.0 2269 | is-unicode-supported: 2.1.0 2270 | log-symbols: 7.0.1 2271 | stdin-discarder: 0.2.2 2272 | string-width: 8.1.0 2273 | strip-ansi: 7.1.2 2274 | 2275 | p-limit@3.1.0: 2276 | dependencies: 2277 | yocto-queue: 0.1.0 2278 | 2279 | p-locate@5.0.0: 2280 | dependencies: 2281 | p-limit: 3.1.0 2282 | 2283 | parent-module@1.0.1: 2284 | dependencies: 2285 | callsites: 3.1.0 2286 | 2287 | parse5-htmlparser2-tree-adapter@7.1.0: 2288 | dependencies: 2289 | domhandler: 5.0.3 2290 | parse5: 7.3.0 2291 | 2292 | parse5-parser-stream@7.1.2: 2293 | dependencies: 2294 | parse5: 7.3.0 2295 | 2296 | parse5@7.3.0: 2297 | dependencies: 2298 | entities: 6.0.1 2299 | 2300 | path-exists@4.0.0: {} 2301 | 2302 | path-key@3.1.1: {} 2303 | 2304 | pathe@2.0.3: {} 2305 | 2306 | picocolors@1.1.1: {} 2307 | 2308 | picomatch@2.3.1: {} 2309 | 2310 | picomatch@4.0.3: {} 2311 | 2312 | postcss@8.5.4: 2313 | dependencies: 2314 | nanoid: 3.3.11 2315 | picocolors: 1.1.1 2316 | source-map-js: 1.2.1 2317 | 2318 | prelude-ls@1.2.1: {} 2319 | 2320 | prettier-plugin-organize-imports@4.3.0(prettier@3.6.2)(typescript@5.9.3): 2321 | dependencies: 2322 | prettier: 3.6.2 2323 | typescript: 5.9.3 2324 | 2325 | prettier@3.6.2: {} 2326 | 2327 | punycode@2.3.1: {} 2328 | 2329 | queue-microtask@1.2.3: {} 2330 | 2331 | resolve-from@4.0.0: {} 2332 | 2333 | restore-cursor@5.1.0: 2334 | dependencies: 2335 | onetime: 7.0.0 2336 | signal-exit: 4.1.0 2337 | 2338 | reusify@1.1.0: {} 2339 | 2340 | rollup@4.42.0: 2341 | dependencies: 2342 | '@types/estree': 1.0.7 2343 | optionalDependencies: 2344 | '@rollup/rollup-android-arm-eabi': 4.42.0 2345 | '@rollup/rollup-android-arm64': 4.42.0 2346 | '@rollup/rollup-darwin-arm64': 4.42.0 2347 | '@rollup/rollup-darwin-x64': 4.42.0 2348 | '@rollup/rollup-freebsd-arm64': 4.42.0 2349 | '@rollup/rollup-freebsd-x64': 4.42.0 2350 | '@rollup/rollup-linux-arm-gnueabihf': 4.42.0 2351 | '@rollup/rollup-linux-arm-musleabihf': 4.42.0 2352 | '@rollup/rollup-linux-arm64-gnu': 4.42.0 2353 | '@rollup/rollup-linux-arm64-musl': 4.42.0 2354 | '@rollup/rollup-linux-loongarch64-gnu': 4.42.0 2355 | '@rollup/rollup-linux-powerpc64le-gnu': 4.42.0 2356 | '@rollup/rollup-linux-riscv64-gnu': 4.42.0 2357 | '@rollup/rollup-linux-riscv64-musl': 4.42.0 2358 | '@rollup/rollup-linux-s390x-gnu': 4.42.0 2359 | '@rollup/rollup-linux-x64-gnu': 4.42.0 2360 | '@rollup/rollup-linux-x64-musl': 4.42.0 2361 | '@rollup/rollup-win32-arm64-msvc': 4.42.0 2362 | '@rollup/rollup-win32-ia32-msvc': 4.42.0 2363 | '@rollup/rollup-win32-x64-msvc': 4.42.0 2364 | fsevents: 2.3.3 2365 | 2366 | run-parallel@1.2.0: 2367 | dependencies: 2368 | queue-microtask: 1.2.3 2369 | 2370 | safer-buffer@2.1.2: {} 2371 | 2372 | semver@7.7.3: {} 2373 | 2374 | shebang-command@2.0.0: 2375 | dependencies: 2376 | shebang-regex: 3.0.0 2377 | 2378 | shebang-regex@3.0.0: {} 2379 | 2380 | siginfo@2.0.0: {} 2381 | 2382 | signal-exit@4.1.0: {} 2383 | 2384 | source-map-js@1.2.1: {} 2385 | 2386 | stackback@0.0.2: {} 2387 | 2388 | std-env@3.10.0: {} 2389 | 2390 | stdin-discarder@0.2.2: {} 2391 | 2392 | string-width@8.1.0: 2393 | dependencies: 2394 | get-east-asian-width: 1.4.0 2395 | strip-ansi: 7.1.2 2396 | 2397 | strip-ansi@7.1.2: 2398 | dependencies: 2399 | ansi-regex: 6.2.2 2400 | 2401 | strip-json-comments@3.1.1: {} 2402 | 2403 | supports-color@7.2.0: 2404 | dependencies: 2405 | has-flag: 4.0.0 2406 | 2407 | tinybench@2.9.0: {} 2408 | 2409 | tinyexec@1.0.2: {} 2410 | 2411 | tinyglobby@0.2.15: 2412 | dependencies: 2413 | fdir: 6.5.0(picomatch@4.0.3) 2414 | picomatch: 4.0.3 2415 | 2416 | tinyrainbow@3.0.3: {} 2417 | 2418 | to-regex-range@5.0.1: 2419 | dependencies: 2420 | is-number: 7.0.0 2421 | 2422 | ts-api-utils@2.1.0(typescript@5.9.3): 2423 | dependencies: 2424 | typescript: 5.9.3 2425 | 2426 | type-check@0.4.0: 2427 | dependencies: 2428 | prelude-ls: 1.2.1 2429 | 2430 | typescript-eslint@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): 2431 | dependencies: 2432 | '@typescript-eslint/eslint-plugin': 8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 2433 | '@typescript-eslint/parser': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 2434 | '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) 2435 | '@typescript-eslint/utils': 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) 2436 | eslint: 9.39.1(jiti@2.6.1) 2437 | typescript: 5.9.3 2438 | transitivePeerDependencies: 2439 | - supports-color 2440 | 2441 | typescript@5.9.3: {} 2442 | 2443 | undici-types@7.16.0: {} 2444 | 2445 | undici@7.12.0: {} 2446 | 2447 | uri-js@4.4.1: 2448 | dependencies: 2449 | punycode: 2.3.1 2450 | 2451 | vite@6.3.5(@types/node@24.10.1)(jiti@2.6.1): 2452 | dependencies: 2453 | esbuild: 0.25.5 2454 | fdir: 6.4.5(picomatch@4.0.3) 2455 | picomatch: 4.0.3 2456 | postcss: 8.5.4 2457 | rollup: 4.42.0 2458 | tinyglobby: 0.2.15 2459 | optionalDependencies: 2460 | '@types/node': 24.10.1 2461 | fsevents: 2.3.3 2462 | jiti: 2.6.1 2463 | 2464 | vitest@4.0.15(@types/node@24.10.1)(jiti@2.6.1): 2465 | dependencies: 2466 | '@vitest/expect': 4.0.15 2467 | '@vitest/mocker': 4.0.15(vite@6.3.5(@types/node@24.10.1)(jiti@2.6.1)) 2468 | '@vitest/pretty-format': 4.0.15 2469 | '@vitest/runner': 4.0.15 2470 | '@vitest/snapshot': 4.0.15 2471 | '@vitest/spy': 4.0.15 2472 | '@vitest/utils': 4.0.15 2473 | es-module-lexer: 1.7.0 2474 | expect-type: 1.3.0 2475 | magic-string: 0.30.21 2476 | obug: 2.1.1 2477 | pathe: 2.0.3 2478 | picomatch: 4.0.3 2479 | std-env: 3.10.0 2480 | tinybench: 2.9.0 2481 | tinyexec: 1.0.2 2482 | tinyglobby: 0.2.15 2483 | tinyrainbow: 3.0.3 2484 | vite: 6.3.5(@types/node@24.10.1)(jiti@2.6.1) 2485 | why-is-node-running: 2.3.0 2486 | optionalDependencies: 2487 | '@types/node': 24.10.1 2488 | transitivePeerDependencies: 2489 | - jiti 2490 | - less 2491 | - lightningcss 2492 | - msw 2493 | - sass 2494 | - sass-embedded 2495 | - stylus 2496 | - sugarss 2497 | - terser 2498 | - tsx 2499 | - yaml 2500 | 2501 | whatwg-encoding@3.1.1: 2502 | dependencies: 2503 | iconv-lite: 0.6.3 2504 | 2505 | whatwg-mimetype@4.0.0: {} 2506 | 2507 | which@2.0.2: 2508 | dependencies: 2509 | isexe: 2.0.0 2510 | 2511 | why-is-node-running@2.3.0: 2512 | dependencies: 2513 | siginfo: 2.0.0 2514 | stackback: 0.0.2 2515 | 2516 | word-wrap@1.2.5: {} 2517 | 2518 | yocto-queue@0.1.0: {} 2519 | 2520 | yoctocolors@2.1.2: {} 2521 | --------------------------------------------------------------------------------