├── .gitignore ├── .node-version ├── renovate.json ├── package.json ├── README.md ├── .github └── workflows │ └── ci.yml ├── src └── index.bench.mjs ├── scripts └── update-readme-bench.js └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 22.9.0 2 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": ["github>Boshen/renovate"] 4 | } 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bench-nodejs-resolver", 3 | "private": true, 4 | "type": "module", 5 | "packageManager": "pnpm@10.25.0", 6 | "scripts": { 7 | "bench": "vitest bench --run", 8 | "bench:update-readme": "node scripts/update-readme-bench.js" 9 | }, 10 | "devDependencies": { 11 | "enhanced-resolve": "^5.18.3", 12 | "oxc-resolver": "^11.8.2", 13 | "vitest": "^4.0.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bench Resolver 2 | 3 | - [enhanced-resolve](https://www.npmjs.com/package/enhanced-resolve) 4 | - [oxc-resolver](https://www.npmjs.com/package/oxc-resolver) 5 | 6 | ## Benchmark Results 7 | 8 | 9 | `oxc-resolver` is 27x faster than webpack's `enhanced-resolve`. 10 | 11 | ``` 12 | BENCH Summary 13 | 14 | oxc-resolver sync - src/index.bench.mjs > bench 15 | 1.11x faster than oxc-resolver sync Promise.all 16 | 5.59x faster than oxc-resolver async Promise.all 17 | 12.93x faster than oxc-resolver async 18 | 22.59x faster than enhanced-resolve Promise.all 19 | 27.03x faster than enhanced-resolve async 20 | ``` 21 | 22 | 23 | ## Run 24 | 25 | ```bash 26 | pnpm install 27 | pnpm run bench 28 | ``` 29 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | types: [opened, synchronize] 7 | push: 8 | branches: 9 | - main 10 | 11 | permissions: {} 12 | 13 | concurrency: 14 | group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} 15 | cancel-in-progress: ${{ github.ref_name != 'main' }} 16 | 17 | jobs: 18 | benchmark: 19 | name: Benchmark 20 | runs-on: ubuntu-latest 21 | permissions: 22 | contents: write 23 | steps: 24 | - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 25 | 26 | - uses: oxc-project/setup-node@141eb77546de6702f92d320926403fe3f9f6a6f2 # v1.0.5 27 | 28 | - run: pnpm run bench 29 | 30 | - name: Update README with benchmark results 31 | if: github.ref == 'refs/heads/main' && github.event_name == 'push' 32 | run: | 33 | pnpm run bench:update-readme 34 | 35 | # Check if README was modified 36 | if git diff --quiet README.md; then 37 | echo "No changes to README.md" 38 | else 39 | echo "README.md was updated with new benchmark results" 40 | git config --local user.email "action@github.com" 41 | git config --local user.name "GitHub Action" 42 | git add README.md 43 | git commit -m "chore: update benchmark results in README" 44 | git push 45 | fi 46 | -------------------------------------------------------------------------------- /src/index.bench.mjs: -------------------------------------------------------------------------------- 1 | import assert from "assert"; 2 | import fs from "fs"; 3 | import { bench, describe } from "vitest"; 4 | import enhancedResolve from "enhanced-resolve"; 5 | import { ResolverFactory as OxcResolverFactory } from "oxc-resolver"; 6 | 7 | const cwd = process.cwd(); 8 | 9 | const enhancedResolver = enhancedResolve.ResolverFactory.createResolver({ 10 | fileSystem: new enhancedResolve.CachedInputFileSystem(fs, 4000), 11 | }); 12 | 13 | const oxcResolver = new OxcResolverFactory({}); 14 | 15 | const data = [ 16 | "./src/index.bench.mjs", 17 | "oxc-resolver", 18 | "enhanced-resolve", 19 | "vitest/node", 20 | ]; 21 | 22 | // Check results are valid 23 | for (let request of data) { 24 | assert(await enhancedResolveAsync(request), await oxcResolveAsync(request)); 25 | assert(await enhancedResolveAsync(request), oxcResolveSync(request)); 26 | } 27 | 28 | async function enhancedResolveAsync(request) { 29 | return new Promise(function (resolve) { 30 | enhancedResolver.resolve({}, cwd, request, {}, function (_err, res) { 31 | resolve(res); 32 | }); 33 | }); 34 | } 35 | 36 | async function oxcResolveAsync(request) { 37 | return oxcResolver.async(cwd, request).then((r) => r.path); 38 | } 39 | 40 | async function oxcResolveSync(request) { 41 | return Promise.resolve(oxcResolver.sync(cwd, request).path); 42 | } 43 | 44 | describe("bench", () => { 45 | bench("enhanced-resolve async", async () => { 46 | for (let path of data) { 47 | await enhancedResolveAsync(path); 48 | } 49 | }); 50 | 51 | bench("oxc-resolver async", async () => { 52 | for (let path of data) { 53 | await oxcResolveAsync(path); 54 | } 55 | }); 56 | 57 | bench("oxc-resolver sync", () => { 58 | for (let path of data) { 59 | oxcResolveSync(path); 60 | } 61 | }); 62 | 63 | bench("enhanced-resolve Promise.all", async () => { 64 | return Promise.all(data.map(enhancedResolveAsync)); 65 | }); 66 | 67 | bench("oxc-resolver async Promise.all", async () => { 68 | return Promise.all(data.map(oxcResolveAsync)); 69 | }); 70 | 71 | bench("oxc-resolver sync Promise.all", async () => { 72 | return Promise.all(data.map(oxcResolveSync)); 73 | }); 74 | }); 75 | -------------------------------------------------------------------------------- /scripts/update-readme-bench.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { exec } from "child_process"; 4 | import { readFile, writeFile } from "fs/promises"; 5 | import { promisify } from "util"; 6 | 7 | const execAsync = promisify(exec); 8 | 9 | async function runBenchmark() { 10 | console.log("Running benchmark..."); 11 | try { 12 | const { stdout } = await execAsync("pnpm run bench --no-color"); 13 | return stdout; 14 | } catch (error) { 15 | console.error("Error running benchmark:", error); 16 | process.exit(1); 17 | } 18 | } 19 | 20 | function extractBenchmarkResults(output) { 21 | // Extract the BENCH Summary section 22 | const summaryMatch = output.match(/BENCH\s+Summary\n\n([\s\S]*?)$/); 23 | if (!summaryMatch) { 24 | throw new Error("Could not find BENCH Summary in output"); 25 | } 26 | 27 | const summarySection = summaryMatch[1].trim(); 28 | 29 | // Extract the main performance multiplier (e.g., "23.38x faster than enhanced-resolve async") 30 | const mainPerformanceMatch = summarySection.match( 31 | /(\d+\.?\d*)x faster than enhanced-resolve async/, 32 | ); 33 | if (!mainPerformanceMatch) { 34 | throw new Error("Could not extract main performance metric"); 35 | } 36 | 37 | const mainMultiplier = Math.round(parseFloat(mainPerformanceMatch[1])); 38 | 39 | return { 40 | summarySection, 41 | mainMultiplier, 42 | }; 43 | } 44 | 45 | async function updateReadme(benchmarkResults) { 46 | console.log("Updating README..."); 47 | 48 | const readmePath = "README.md"; 49 | let readmeContent = await readFile(readmePath, "utf-8"); 50 | 51 | // Find the benchmark results section between markers 52 | const startMarker = ""; 53 | const endMarker = ""; 54 | 55 | const startIndex = readmeContent.indexOf(startMarker); 56 | const endIndex = readmeContent.indexOf(endMarker); 57 | 58 | if (startIndex === -1 || endIndex === -1) { 59 | throw new Error("Could not find benchmark results markers in README.md"); 60 | } 61 | 62 | // Create the new benchmark content 63 | // Preserve the exact spacing from the original output 64 | const newBenchmarkContent = `\`oxc-resolver\` is ${benchmarkResults.mainMultiplier}x faster than webpack's \`enhanced-resolve\`. 65 | 66 | \`\`\` 67 | BENCH Summary 68 | 69 | ${benchmarkResults.summarySection} 70 | \`\`\``; 71 | 72 | // Replace the content between markers 73 | const beforeMarker = readmeContent.substring( 74 | 0, 75 | startIndex + startMarker.length, 76 | ); 77 | const afterMarker = readmeContent.substring(endIndex); 78 | 79 | readmeContent = 80 | beforeMarker + "\n" + newBenchmarkContent + "\n" + afterMarker; 81 | 82 | await writeFile(readmePath, readmeContent); 83 | console.log("README updated successfully"); 84 | } 85 | 86 | async function main() { 87 | try { 88 | const benchmarkOutput = await runBenchmark(); 89 | const results = extractBenchmarkResults(benchmarkOutput); 90 | await updateReadme(results); 91 | 92 | console.log( 93 | `Performance: ${results.mainMultiplier}x faster than enhanced-resolve`, 94 | ); 95 | console.log("README has been updated with the latest benchmark results"); 96 | } catch (error) { 97 | console.error("Error:", error.message); 98 | process.exit(1); 99 | } 100 | } 101 | 102 | main(); 103 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | enhanced-resolve: 12 | specifier: ^5.18.3 13 | version: 5.18.4 14 | oxc-resolver: 15 | specifier: ^11.8.2 16 | version: 11.16.0 17 | vitest: 18 | specifier: ^4.0.0 19 | version: 4.0.15 20 | 21 | packages: 22 | 23 | '@emnapi/core@1.7.1': 24 | resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} 25 | 26 | '@emnapi/runtime@1.7.1': 27 | resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} 28 | 29 | '@emnapi/wasi-threads@1.1.0': 30 | resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} 31 | 32 | '@esbuild/aix-ppc64@0.25.12': 33 | resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 34 | engines: {node: '>=18'} 35 | cpu: [ppc64] 36 | os: [aix] 37 | 38 | '@esbuild/android-arm64@0.25.12': 39 | resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} 40 | engines: {node: '>=18'} 41 | cpu: [arm64] 42 | os: [android] 43 | 44 | '@esbuild/android-arm@0.25.12': 45 | resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 46 | engines: {node: '>=18'} 47 | cpu: [arm] 48 | os: [android] 49 | 50 | '@esbuild/android-x64@0.25.12': 51 | resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} 52 | engines: {node: '>=18'} 53 | cpu: [x64] 54 | os: [android] 55 | 56 | '@esbuild/darwin-arm64@0.25.12': 57 | resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 58 | engines: {node: '>=18'} 59 | cpu: [arm64] 60 | os: [darwin] 61 | 62 | '@esbuild/darwin-x64@0.25.12': 63 | resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} 64 | engines: {node: '>=18'} 65 | cpu: [x64] 66 | os: [darwin] 67 | 68 | '@esbuild/freebsd-arm64@0.25.12': 69 | resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 70 | engines: {node: '>=18'} 71 | cpu: [arm64] 72 | os: [freebsd] 73 | 74 | '@esbuild/freebsd-x64@0.25.12': 75 | resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 76 | engines: {node: '>=18'} 77 | cpu: [x64] 78 | os: [freebsd] 79 | 80 | '@esbuild/linux-arm64@0.25.12': 81 | resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} 82 | engines: {node: '>=18'} 83 | cpu: [arm64] 84 | os: [linux] 85 | 86 | '@esbuild/linux-arm@0.25.12': 87 | resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} 88 | engines: {node: '>=18'} 89 | cpu: [arm] 90 | os: [linux] 91 | 92 | '@esbuild/linux-ia32@0.25.12': 93 | resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 94 | engines: {node: '>=18'} 95 | cpu: [ia32] 96 | os: [linux] 97 | 98 | '@esbuild/linux-loong64@0.25.12': 99 | resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 100 | engines: {node: '>=18'} 101 | cpu: [loong64] 102 | os: [linux] 103 | 104 | '@esbuild/linux-mips64el@0.25.12': 105 | resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} 106 | engines: {node: '>=18'} 107 | cpu: [mips64el] 108 | os: [linux] 109 | 110 | '@esbuild/linux-ppc64@0.25.12': 111 | resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 112 | engines: {node: '>=18'} 113 | cpu: [ppc64] 114 | os: [linux] 115 | 116 | '@esbuild/linux-riscv64@0.25.12': 117 | resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} 118 | engines: {node: '>=18'} 119 | cpu: [riscv64] 120 | os: [linux] 121 | 122 | '@esbuild/linux-s390x@0.25.12': 123 | resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 124 | engines: {node: '>=18'} 125 | cpu: [s390x] 126 | os: [linux] 127 | 128 | '@esbuild/linux-x64@0.25.12': 129 | resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} 130 | engines: {node: '>=18'} 131 | cpu: [x64] 132 | os: [linux] 133 | 134 | '@esbuild/netbsd-arm64@0.25.12': 135 | resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 136 | engines: {node: '>=18'} 137 | cpu: [arm64] 138 | os: [netbsd] 139 | 140 | '@esbuild/netbsd-x64@0.25.12': 141 | resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} 142 | engines: {node: '>=18'} 143 | cpu: [x64] 144 | os: [netbsd] 145 | 146 | '@esbuild/openbsd-arm64@0.25.12': 147 | resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 148 | engines: {node: '>=18'} 149 | cpu: [arm64] 150 | os: [openbsd] 151 | 152 | '@esbuild/openbsd-x64@0.25.12': 153 | resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} 154 | engines: {node: '>=18'} 155 | cpu: [x64] 156 | os: [openbsd] 157 | 158 | '@esbuild/openharmony-arm64@0.25.12': 159 | resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 160 | engines: {node: '>=18'} 161 | cpu: [arm64] 162 | os: [openharmony] 163 | 164 | '@esbuild/sunos-x64@0.25.12': 165 | resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} 166 | engines: {node: '>=18'} 167 | cpu: [x64] 168 | os: [sunos] 169 | 170 | '@esbuild/win32-arm64@0.25.12': 171 | resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 172 | engines: {node: '>=18'} 173 | cpu: [arm64] 174 | os: [win32] 175 | 176 | '@esbuild/win32-ia32@0.25.12': 177 | resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} 178 | engines: {node: '>=18'} 179 | cpu: [ia32] 180 | os: [win32] 181 | 182 | '@esbuild/win32-x64@0.25.12': 183 | resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 184 | engines: {node: '>=18'} 185 | cpu: [x64] 186 | os: [win32] 187 | 188 | '@jridgewell/sourcemap-codec@1.5.5': 189 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 190 | 191 | '@napi-rs/wasm-runtime@1.1.0': 192 | resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} 193 | 194 | '@oxc-resolver/binding-android-arm-eabi@11.16.0': 195 | resolution: {integrity: sha512-/kFX4o8KISHCZzHRs8fBp/wZOPdkhYGquhMP2PQjc8ePAVbtaXXDPAFkjUKhz2jXNPS4jGA1wNW+8grhnJgstw==} 196 | cpu: [arm] 197 | os: [android] 198 | 199 | '@oxc-resolver/binding-android-arm64@11.16.0': 200 | resolution: {integrity: sha512-kPySx7j7mPxW4mRDrdbADyzJV2XrxVeMPDmNnFvTt0/LT1IA26Uk9hzWKQb4k4aeJY58bnRY1soYSawW5wAlKQ==} 201 | cpu: [arm64] 202 | os: [android] 203 | 204 | '@oxc-resolver/binding-darwin-arm64@11.16.0': 205 | resolution: {integrity: sha512-eB00fkys5TX6oI3lY+1hgHl6dwfmrbhHTmInmJmfD6BysHpE+DUqSdQIRS2v5NI6+j+J9EWBmbW3hRtolr+MSg==} 206 | cpu: [arm64] 207 | os: [darwin] 208 | 209 | '@oxc-resolver/binding-darwin-x64@11.16.0': 210 | resolution: {integrity: sha512-B/yMSxqe4MZfh/VoMax0qixl4XxG/sAQVlYtdVGNteBAYKfX/uw2mglkYsApk6D4qD6fVgJ21RwI50lV7oD0Qg==} 211 | cpu: [x64] 212 | os: [darwin] 213 | 214 | '@oxc-resolver/binding-freebsd-x64@11.16.0': 215 | resolution: {integrity: sha512-aKj+PNsSdn0owueMt/6TtR8QuLBNL/q2HgMdN8nRCDmoCBPvQlwB2s+AcW+UW1vyiok+9qiI5tVjihbKwQ+Khg==} 216 | cpu: [x64] 217 | os: [freebsd] 218 | 219 | '@oxc-resolver/binding-linux-arm-gnueabihf@11.16.0': 220 | resolution: {integrity: sha512-fxod0D0eMsIlGF98KRAwR3zjLCbpRoknDHjCHx22A9TmyQthGo7t66gwkRCj5g2LBbpaPZ+i6cYd2l9bRrx8+Q==} 221 | cpu: [arm] 222 | os: [linux] 223 | 224 | '@oxc-resolver/binding-linux-arm-musleabihf@11.16.0': 225 | resolution: {integrity: sha512-5BoVnD0hpEID/13hnj0fCIojE26wfa9p4puCnm12/D5BhGlXA103n8iRaPZPLHS/prQGtrwMiFONiysD6vmIBA==} 226 | cpu: [arm] 227 | os: [linux] 228 | 229 | '@oxc-resolver/binding-linux-arm64-gnu@11.16.0': 230 | resolution: {integrity: sha512-dMoKX6A8iuIdShbc4PB/+q6Tx8grgQxNAJQfIAmpaDTZp5NxfgzKrssPL0TCdu3RQMblF8yfXLYUFnOdPYZeRg==} 231 | cpu: [arm64] 232 | os: [linux] 233 | 234 | '@oxc-resolver/binding-linux-arm64-musl@11.16.0': 235 | resolution: {integrity: sha512-oLJsyqVHw53ZZPl3+wPiRNXTvavBFSInRYBB5MaNf+y42+b4XJfH7hVYyc67er0c26cQUCfx2KzqltSx7Jg9jg==} 236 | cpu: [arm64] 237 | os: [linux] 238 | 239 | '@oxc-resolver/binding-linux-ppc64-gnu@11.16.0': 240 | resolution: {integrity: sha512-qL7GsXwyytVTIh/o8cLftRYvzrpniD8pFf0jDW3VXlVsl1joCrb4GM26udGls7Zxe76nsZpPvQVB5eZ9xmHxIA==} 241 | cpu: [ppc64] 242 | os: [linux] 243 | 244 | '@oxc-resolver/binding-linux-riscv64-gnu@11.16.0': 245 | resolution: {integrity: sha512-CFJEvagoakxPtIoKtRgPoGUqeXSgd63c3/T9hOXrgelOaMv6aEWFfjvc/4Lk5ppk2wv4KeK4IqOKBe8Faqv1Mw==} 246 | cpu: [riscv64] 247 | os: [linux] 248 | 249 | '@oxc-resolver/binding-linux-riscv64-musl@11.16.0': 250 | resolution: {integrity: sha512-LVuE2tbZ7gjEjY1G8mjf7+pacj0/Rge9EoHxr8DY2gAxxy0qXe5Yh2Qxe3dwwFGObVNioqRH0IPkePmQ/KJK6w==} 251 | cpu: [riscv64] 252 | os: [linux] 253 | 254 | '@oxc-resolver/binding-linux-s390x-gnu@11.16.0': 255 | resolution: {integrity: sha512-D4Zk48WN7sKsbyq4xD2F09U4S0sIkHXTW9A33BaqjfNXOD/jFXM5nTPahHx2RxBLo5ZEgS3kUW1U8V0oCBcPcg==} 256 | cpu: [s390x] 257 | os: [linux] 258 | 259 | '@oxc-resolver/binding-linux-x64-gnu@11.16.0': 260 | resolution: {integrity: sha512-WyqsQwz+x1lDe/rwf5pl/FiTiS4eEM7hEHn1OwjP+EThzXXBup9BeZE5QVB421QGm9n4SyJT1gJgI1LCRvqbaA==} 261 | cpu: [x64] 262 | os: [linux] 263 | 264 | '@oxc-resolver/binding-linux-x64-musl@11.16.0': 265 | resolution: {integrity: sha512-5XCuIoviaMsiAAuaQL4HqnYj1BkADcbtdf2s6Ru4YHF3P/bt2p05hd4xVo85cFT1VXlGYL66XVfepsAGymJs0g==} 266 | cpu: [x64] 267 | os: [linux] 268 | 269 | '@oxc-resolver/binding-openharmony-arm64@11.16.0': 270 | resolution: {integrity: sha512-gn54HKxOhWTxZG8pNeBMmbRwHT4k/eIf0KxBII2oHUrSTinNTcqu6xn1etqt1Yezi9KzJzkTMS0cl5kTFmCHUQ==} 271 | cpu: [arm64] 272 | os: [openharmony] 273 | 274 | '@oxc-resolver/binding-wasm32-wasi@11.16.0': 275 | resolution: {integrity: sha512-dUsUjffSI7nlt+TH9C4gGqmD/kNyx3Kghh8u+i8eZZAEFWDO+s51Yw3UADDa0BYrZDeaLjz8rgHWCE8lxpL2XQ==} 276 | engines: {node: '>=14.0.0'} 277 | cpu: [wasm32] 278 | 279 | '@oxc-resolver/binding-win32-arm64-msvc@11.16.0': 280 | resolution: {integrity: sha512-6EhsnwzA6iT752sU5tv/r+XI5cz6sWUPHJZu3brTW3m96j6yCZ8vnfeKAkFCzuDwZAXOkRLPW8WKrL0GXWfCUQ==} 281 | cpu: [arm64] 282 | os: [win32] 283 | 284 | '@oxc-resolver/binding-win32-ia32-msvc@11.16.0': 285 | resolution: {integrity: sha512-YpUXuKrslGs4+In1gZhY25menhzyBbMct4RvWT9je6mYA5VCQ6aGAZf/ky5b+5sNPpR2UBNbCcYk5pP/6MowMw==} 286 | cpu: [ia32] 287 | os: [win32] 288 | 289 | '@oxc-resolver/binding-win32-x64-msvc@11.16.0': 290 | resolution: {integrity: sha512-x3hU0m0c/+frUSFaw3r5Xmde5q/PdsAfznh+8lZloGK2/qfIze0jyQG0H5M6AgrUIQE1oNn8vdGXanza5+naMw==} 291 | cpu: [x64] 292 | os: [win32] 293 | 294 | '@rollup/rollup-android-arm-eabi@4.53.3': 295 | resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} 296 | cpu: [arm] 297 | os: [android] 298 | 299 | '@rollup/rollup-android-arm64@4.53.3': 300 | resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} 301 | cpu: [arm64] 302 | os: [android] 303 | 304 | '@rollup/rollup-darwin-arm64@4.53.3': 305 | resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} 306 | cpu: [arm64] 307 | os: [darwin] 308 | 309 | '@rollup/rollup-darwin-x64@4.53.3': 310 | resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} 311 | cpu: [x64] 312 | os: [darwin] 313 | 314 | '@rollup/rollup-freebsd-arm64@4.53.3': 315 | resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} 316 | cpu: [arm64] 317 | os: [freebsd] 318 | 319 | '@rollup/rollup-freebsd-x64@4.53.3': 320 | resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} 321 | cpu: [x64] 322 | os: [freebsd] 323 | 324 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3': 325 | resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} 326 | cpu: [arm] 327 | os: [linux] 328 | 329 | '@rollup/rollup-linux-arm-musleabihf@4.53.3': 330 | resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} 331 | cpu: [arm] 332 | os: [linux] 333 | 334 | '@rollup/rollup-linux-arm64-gnu@4.53.3': 335 | resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} 336 | cpu: [arm64] 337 | os: [linux] 338 | 339 | '@rollup/rollup-linux-arm64-musl@4.53.3': 340 | resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} 341 | cpu: [arm64] 342 | os: [linux] 343 | 344 | '@rollup/rollup-linux-loong64-gnu@4.53.3': 345 | resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} 346 | cpu: [loong64] 347 | os: [linux] 348 | 349 | '@rollup/rollup-linux-ppc64-gnu@4.53.3': 350 | resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} 351 | cpu: [ppc64] 352 | os: [linux] 353 | 354 | '@rollup/rollup-linux-riscv64-gnu@4.53.3': 355 | resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} 356 | cpu: [riscv64] 357 | os: [linux] 358 | 359 | '@rollup/rollup-linux-riscv64-musl@4.53.3': 360 | resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} 361 | cpu: [riscv64] 362 | os: [linux] 363 | 364 | '@rollup/rollup-linux-s390x-gnu@4.53.3': 365 | resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} 366 | cpu: [s390x] 367 | os: [linux] 368 | 369 | '@rollup/rollup-linux-x64-gnu@4.53.3': 370 | resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} 371 | cpu: [x64] 372 | os: [linux] 373 | 374 | '@rollup/rollup-linux-x64-musl@4.53.3': 375 | resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} 376 | cpu: [x64] 377 | os: [linux] 378 | 379 | '@rollup/rollup-openharmony-arm64@4.53.3': 380 | resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} 381 | cpu: [arm64] 382 | os: [openharmony] 383 | 384 | '@rollup/rollup-win32-arm64-msvc@4.53.3': 385 | resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} 386 | cpu: [arm64] 387 | os: [win32] 388 | 389 | '@rollup/rollup-win32-ia32-msvc@4.53.3': 390 | resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} 391 | cpu: [ia32] 392 | os: [win32] 393 | 394 | '@rollup/rollup-win32-x64-gnu@4.53.3': 395 | resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} 396 | cpu: [x64] 397 | os: [win32] 398 | 399 | '@rollup/rollup-win32-x64-msvc@4.53.3': 400 | resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} 401 | cpu: [x64] 402 | os: [win32] 403 | 404 | '@standard-schema/spec@1.0.0': 405 | resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} 406 | 407 | '@tybys/wasm-util@0.10.1': 408 | resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} 409 | 410 | '@types/chai@5.2.3': 411 | resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} 412 | 413 | '@types/deep-eql@4.0.2': 414 | resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} 415 | 416 | '@types/estree@1.0.8': 417 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 418 | 419 | '@vitest/expect@4.0.15': 420 | resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} 421 | 422 | '@vitest/mocker@4.0.15': 423 | resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} 424 | peerDependencies: 425 | msw: ^2.4.9 426 | vite: ^6.0.0 || ^7.0.0-0 427 | peerDependenciesMeta: 428 | msw: 429 | optional: true 430 | vite: 431 | optional: true 432 | 433 | '@vitest/pretty-format@4.0.15': 434 | resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} 435 | 436 | '@vitest/runner@4.0.15': 437 | resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} 438 | 439 | '@vitest/snapshot@4.0.15': 440 | resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} 441 | 442 | '@vitest/spy@4.0.15': 443 | resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} 444 | 445 | '@vitest/utils@4.0.15': 446 | resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} 447 | 448 | assertion-error@2.0.1: 449 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 450 | engines: {node: '>=12'} 451 | 452 | chai@6.2.1: 453 | resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} 454 | engines: {node: '>=18'} 455 | 456 | enhanced-resolve@5.18.4: 457 | resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} 458 | engines: {node: '>=10.13.0'} 459 | 460 | es-module-lexer@1.7.0: 461 | resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 462 | 463 | esbuild@0.25.12: 464 | resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} 465 | engines: {node: '>=18'} 466 | hasBin: true 467 | 468 | estree-walker@3.0.3: 469 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 470 | 471 | expect-type@1.2.2: 472 | resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} 473 | engines: {node: '>=12.0.0'} 474 | 475 | fdir@6.5.0: 476 | resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 477 | engines: {node: '>=12.0.0'} 478 | peerDependencies: 479 | picomatch: ^3 || ^4 480 | peerDependenciesMeta: 481 | picomatch: 482 | optional: true 483 | 484 | fsevents@2.3.3: 485 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 486 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 487 | os: [darwin] 488 | 489 | graceful-fs@4.2.11: 490 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 491 | 492 | magic-string@0.30.21: 493 | resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 494 | 495 | nanoid@3.3.11: 496 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 497 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 498 | hasBin: true 499 | 500 | obug@2.1.1: 501 | resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} 502 | 503 | oxc-resolver@11.16.0: 504 | resolution: {integrity: sha512-I4sHGa1fZUpTQ9ftS0E0cBYbBjNnIKXRSX/trFMIJDIJ4n21dCrLAZhnJS0TSfRIRqZNFyceNZr2kablfgNyTA==} 505 | 506 | pathe@2.0.3: 507 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 508 | 509 | picocolors@1.1.1: 510 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 511 | 512 | picomatch@4.0.3: 513 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 514 | engines: {node: '>=12'} 515 | 516 | postcss@8.5.6: 517 | resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 518 | engines: {node: ^10 || ^12 || >=14} 519 | 520 | rollup@4.53.3: 521 | resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} 522 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 523 | hasBin: true 524 | 525 | siginfo@2.0.0: 526 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 527 | 528 | source-map-js@1.2.1: 529 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 530 | engines: {node: '>=0.10.0'} 531 | 532 | stackback@0.0.2: 533 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 534 | 535 | std-env@3.10.0: 536 | resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} 537 | 538 | tapable@2.3.0: 539 | resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} 540 | engines: {node: '>=6'} 541 | 542 | tinybench@2.9.0: 543 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 544 | 545 | tinyexec@1.0.2: 546 | resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 547 | engines: {node: '>=18'} 548 | 549 | tinyglobby@0.2.15: 550 | resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 551 | engines: {node: '>=12.0.0'} 552 | 553 | tinyrainbow@3.0.3: 554 | resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} 555 | engines: {node: '>=14.0.0'} 556 | 557 | tslib@2.8.1: 558 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 559 | 560 | vite@7.2.6: 561 | resolution: {integrity: sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==} 562 | engines: {node: ^20.19.0 || >=22.12.0} 563 | hasBin: true 564 | peerDependencies: 565 | '@types/node': ^20.19.0 || >=22.12.0 566 | jiti: '>=1.21.0' 567 | less: ^4.0.0 568 | lightningcss: ^1.21.0 569 | sass: ^1.70.0 570 | sass-embedded: ^1.70.0 571 | stylus: '>=0.54.8' 572 | sugarss: ^5.0.0 573 | terser: ^5.16.0 574 | tsx: ^4.8.1 575 | yaml: ^2.4.2 576 | peerDependenciesMeta: 577 | '@types/node': 578 | optional: true 579 | jiti: 580 | optional: true 581 | less: 582 | optional: true 583 | lightningcss: 584 | optional: true 585 | sass: 586 | optional: true 587 | sass-embedded: 588 | optional: true 589 | stylus: 590 | optional: true 591 | sugarss: 592 | optional: true 593 | terser: 594 | optional: true 595 | tsx: 596 | optional: true 597 | yaml: 598 | optional: true 599 | 600 | vitest@4.0.15: 601 | resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} 602 | engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} 603 | hasBin: true 604 | peerDependencies: 605 | '@edge-runtime/vm': '*' 606 | '@opentelemetry/api': ^1.9.0 607 | '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 608 | '@vitest/browser-playwright': 4.0.15 609 | '@vitest/browser-preview': 4.0.15 610 | '@vitest/browser-webdriverio': 4.0.15 611 | '@vitest/ui': 4.0.15 612 | happy-dom: '*' 613 | jsdom: '*' 614 | peerDependenciesMeta: 615 | '@edge-runtime/vm': 616 | optional: true 617 | '@opentelemetry/api': 618 | optional: true 619 | '@types/node': 620 | optional: true 621 | '@vitest/browser-playwright': 622 | optional: true 623 | '@vitest/browser-preview': 624 | optional: true 625 | '@vitest/browser-webdriverio': 626 | optional: true 627 | '@vitest/ui': 628 | optional: true 629 | happy-dom: 630 | optional: true 631 | jsdom: 632 | optional: true 633 | 634 | why-is-node-running@2.3.0: 635 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 636 | engines: {node: '>=8'} 637 | hasBin: true 638 | 639 | snapshots: 640 | 641 | '@emnapi/core@1.7.1': 642 | dependencies: 643 | '@emnapi/wasi-threads': 1.1.0 644 | tslib: 2.8.1 645 | optional: true 646 | 647 | '@emnapi/runtime@1.7.1': 648 | dependencies: 649 | tslib: 2.8.1 650 | optional: true 651 | 652 | '@emnapi/wasi-threads@1.1.0': 653 | dependencies: 654 | tslib: 2.8.1 655 | optional: true 656 | 657 | '@esbuild/aix-ppc64@0.25.12': 658 | optional: true 659 | 660 | '@esbuild/android-arm64@0.25.12': 661 | optional: true 662 | 663 | '@esbuild/android-arm@0.25.12': 664 | optional: true 665 | 666 | '@esbuild/android-x64@0.25.12': 667 | optional: true 668 | 669 | '@esbuild/darwin-arm64@0.25.12': 670 | optional: true 671 | 672 | '@esbuild/darwin-x64@0.25.12': 673 | optional: true 674 | 675 | '@esbuild/freebsd-arm64@0.25.12': 676 | optional: true 677 | 678 | '@esbuild/freebsd-x64@0.25.12': 679 | optional: true 680 | 681 | '@esbuild/linux-arm64@0.25.12': 682 | optional: true 683 | 684 | '@esbuild/linux-arm@0.25.12': 685 | optional: true 686 | 687 | '@esbuild/linux-ia32@0.25.12': 688 | optional: true 689 | 690 | '@esbuild/linux-loong64@0.25.12': 691 | optional: true 692 | 693 | '@esbuild/linux-mips64el@0.25.12': 694 | optional: true 695 | 696 | '@esbuild/linux-ppc64@0.25.12': 697 | optional: true 698 | 699 | '@esbuild/linux-riscv64@0.25.12': 700 | optional: true 701 | 702 | '@esbuild/linux-s390x@0.25.12': 703 | optional: true 704 | 705 | '@esbuild/linux-x64@0.25.12': 706 | optional: true 707 | 708 | '@esbuild/netbsd-arm64@0.25.12': 709 | optional: true 710 | 711 | '@esbuild/netbsd-x64@0.25.12': 712 | optional: true 713 | 714 | '@esbuild/openbsd-arm64@0.25.12': 715 | optional: true 716 | 717 | '@esbuild/openbsd-x64@0.25.12': 718 | optional: true 719 | 720 | '@esbuild/openharmony-arm64@0.25.12': 721 | optional: true 722 | 723 | '@esbuild/sunos-x64@0.25.12': 724 | optional: true 725 | 726 | '@esbuild/win32-arm64@0.25.12': 727 | optional: true 728 | 729 | '@esbuild/win32-ia32@0.25.12': 730 | optional: true 731 | 732 | '@esbuild/win32-x64@0.25.12': 733 | optional: true 734 | 735 | '@jridgewell/sourcemap-codec@1.5.5': {} 736 | 737 | '@napi-rs/wasm-runtime@1.1.0': 738 | dependencies: 739 | '@emnapi/core': 1.7.1 740 | '@emnapi/runtime': 1.7.1 741 | '@tybys/wasm-util': 0.10.1 742 | optional: true 743 | 744 | '@oxc-resolver/binding-android-arm-eabi@11.16.0': 745 | optional: true 746 | 747 | '@oxc-resolver/binding-android-arm64@11.16.0': 748 | optional: true 749 | 750 | '@oxc-resolver/binding-darwin-arm64@11.16.0': 751 | optional: true 752 | 753 | '@oxc-resolver/binding-darwin-x64@11.16.0': 754 | optional: true 755 | 756 | '@oxc-resolver/binding-freebsd-x64@11.16.0': 757 | optional: true 758 | 759 | '@oxc-resolver/binding-linux-arm-gnueabihf@11.16.0': 760 | optional: true 761 | 762 | '@oxc-resolver/binding-linux-arm-musleabihf@11.16.0': 763 | optional: true 764 | 765 | '@oxc-resolver/binding-linux-arm64-gnu@11.16.0': 766 | optional: true 767 | 768 | '@oxc-resolver/binding-linux-arm64-musl@11.16.0': 769 | optional: true 770 | 771 | '@oxc-resolver/binding-linux-ppc64-gnu@11.16.0': 772 | optional: true 773 | 774 | '@oxc-resolver/binding-linux-riscv64-gnu@11.16.0': 775 | optional: true 776 | 777 | '@oxc-resolver/binding-linux-riscv64-musl@11.16.0': 778 | optional: true 779 | 780 | '@oxc-resolver/binding-linux-s390x-gnu@11.16.0': 781 | optional: true 782 | 783 | '@oxc-resolver/binding-linux-x64-gnu@11.16.0': 784 | optional: true 785 | 786 | '@oxc-resolver/binding-linux-x64-musl@11.16.0': 787 | optional: true 788 | 789 | '@oxc-resolver/binding-openharmony-arm64@11.16.0': 790 | optional: true 791 | 792 | '@oxc-resolver/binding-wasm32-wasi@11.16.0': 793 | dependencies: 794 | '@napi-rs/wasm-runtime': 1.1.0 795 | optional: true 796 | 797 | '@oxc-resolver/binding-win32-arm64-msvc@11.16.0': 798 | optional: true 799 | 800 | '@oxc-resolver/binding-win32-ia32-msvc@11.16.0': 801 | optional: true 802 | 803 | '@oxc-resolver/binding-win32-x64-msvc@11.16.0': 804 | optional: true 805 | 806 | '@rollup/rollup-android-arm-eabi@4.53.3': 807 | optional: true 808 | 809 | '@rollup/rollup-android-arm64@4.53.3': 810 | optional: true 811 | 812 | '@rollup/rollup-darwin-arm64@4.53.3': 813 | optional: true 814 | 815 | '@rollup/rollup-darwin-x64@4.53.3': 816 | optional: true 817 | 818 | '@rollup/rollup-freebsd-arm64@4.53.3': 819 | optional: true 820 | 821 | '@rollup/rollup-freebsd-x64@4.53.3': 822 | optional: true 823 | 824 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3': 825 | optional: true 826 | 827 | '@rollup/rollup-linux-arm-musleabihf@4.53.3': 828 | optional: true 829 | 830 | '@rollup/rollup-linux-arm64-gnu@4.53.3': 831 | optional: true 832 | 833 | '@rollup/rollup-linux-arm64-musl@4.53.3': 834 | optional: true 835 | 836 | '@rollup/rollup-linux-loong64-gnu@4.53.3': 837 | optional: true 838 | 839 | '@rollup/rollup-linux-ppc64-gnu@4.53.3': 840 | optional: true 841 | 842 | '@rollup/rollup-linux-riscv64-gnu@4.53.3': 843 | optional: true 844 | 845 | '@rollup/rollup-linux-riscv64-musl@4.53.3': 846 | optional: true 847 | 848 | '@rollup/rollup-linux-s390x-gnu@4.53.3': 849 | optional: true 850 | 851 | '@rollup/rollup-linux-x64-gnu@4.53.3': 852 | optional: true 853 | 854 | '@rollup/rollup-linux-x64-musl@4.53.3': 855 | optional: true 856 | 857 | '@rollup/rollup-openharmony-arm64@4.53.3': 858 | optional: true 859 | 860 | '@rollup/rollup-win32-arm64-msvc@4.53.3': 861 | optional: true 862 | 863 | '@rollup/rollup-win32-ia32-msvc@4.53.3': 864 | optional: true 865 | 866 | '@rollup/rollup-win32-x64-gnu@4.53.3': 867 | optional: true 868 | 869 | '@rollup/rollup-win32-x64-msvc@4.53.3': 870 | optional: true 871 | 872 | '@standard-schema/spec@1.0.0': {} 873 | 874 | '@tybys/wasm-util@0.10.1': 875 | dependencies: 876 | tslib: 2.8.1 877 | optional: true 878 | 879 | '@types/chai@5.2.3': 880 | dependencies: 881 | '@types/deep-eql': 4.0.2 882 | assertion-error: 2.0.1 883 | 884 | '@types/deep-eql@4.0.2': {} 885 | 886 | '@types/estree@1.0.8': {} 887 | 888 | '@vitest/expect@4.0.15': 889 | dependencies: 890 | '@standard-schema/spec': 1.0.0 891 | '@types/chai': 5.2.3 892 | '@vitest/spy': 4.0.15 893 | '@vitest/utils': 4.0.15 894 | chai: 6.2.1 895 | tinyrainbow: 3.0.3 896 | 897 | '@vitest/mocker@4.0.15(vite@7.2.6)': 898 | dependencies: 899 | '@vitest/spy': 4.0.15 900 | estree-walker: 3.0.3 901 | magic-string: 0.30.21 902 | optionalDependencies: 903 | vite: 7.2.6 904 | 905 | '@vitest/pretty-format@4.0.15': 906 | dependencies: 907 | tinyrainbow: 3.0.3 908 | 909 | '@vitest/runner@4.0.15': 910 | dependencies: 911 | '@vitest/utils': 4.0.15 912 | pathe: 2.0.3 913 | 914 | '@vitest/snapshot@4.0.15': 915 | dependencies: 916 | '@vitest/pretty-format': 4.0.15 917 | magic-string: 0.30.21 918 | pathe: 2.0.3 919 | 920 | '@vitest/spy@4.0.15': {} 921 | 922 | '@vitest/utils@4.0.15': 923 | dependencies: 924 | '@vitest/pretty-format': 4.0.15 925 | tinyrainbow: 3.0.3 926 | 927 | assertion-error@2.0.1: {} 928 | 929 | chai@6.2.1: {} 930 | 931 | enhanced-resolve@5.18.4: 932 | dependencies: 933 | graceful-fs: 4.2.11 934 | tapable: 2.3.0 935 | 936 | es-module-lexer@1.7.0: {} 937 | 938 | esbuild@0.25.12: 939 | optionalDependencies: 940 | '@esbuild/aix-ppc64': 0.25.12 941 | '@esbuild/android-arm': 0.25.12 942 | '@esbuild/android-arm64': 0.25.12 943 | '@esbuild/android-x64': 0.25.12 944 | '@esbuild/darwin-arm64': 0.25.12 945 | '@esbuild/darwin-x64': 0.25.12 946 | '@esbuild/freebsd-arm64': 0.25.12 947 | '@esbuild/freebsd-x64': 0.25.12 948 | '@esbuild/linux-arm': 0.25.12 949 | '@esbuild/linux-arm64': 0.25.12 950 | '@esbuild/linux-ia32': 0.25.12 951 | '@esbuild/linux-loong64': 0.25.12 952 | '@esbuild/linux-mips64el': 0.25.12 953 | '@esbuild/linux-ppc64': 0.25.12 954 | '@esbuild/linux-riscv64': 0.25.12 955 | '@esbuild/linux-s390x': 0.25.12 956 | '@esbuild/linux-x64': 0.25.12 957 | '@esbuild/netbsd-arm64': 0.25.12 958 | '@esbuild/netbsd-x64': 0.25.12 959 | '@esbuild/openbsd-arm64': 0.25.12 960 | '@esbuild/openbsd-x64': 0.25.12 961 | '@esbuild/openharmony-arm64': 0.25.12 962 | '@esbuild/sunos-x64': 0.25.12 963 | '@esbuild/win32-arm64': 0.25.12 964 | '@esbuild/win32-ia32': 0.25.12 965 | '@esbuild/win32-x64': 0.25.12 966 | 967 | estree-walker@3.0.3: 968 | dependencies: 969 | '@types/estree': 1.0.8 970 | 971 | expect-type@1.2.2: {} 972 | 973 | fdir@6.5.0(picomatch@4.0.3): 974 | optionalDependencies: 975 | picomatch: 4.0.3 976 | 977 | fsevents@2.3.3: 978 | optional: true 979 | 980 | graceful-fs@4.2.11: {} 981 | 982 | magic-string@0.30.21: 983 | dependencies: 984 | '@jridgewell/sourcemap-codec': 1.5.5 985 | 986 | nanoid@3.3.11: {} 987 | 988 | obug@2.1.1: {} 989 | 990 | oxc-resolver@11.16.0: 991 | optionalDependencies: 992 | '@oxc-resolver/binding-android-arm-eabi': 11.16.0 993 | '@oxc-resolver/binding-android-arm64': 11.16.0 994 | '@oxc-resolver/binding-darwin-arm64': 11.16.0 995 | '@oxc-resolver/binding-darwin-x64': 11.16.0 996 | '@oxc-resolver/binding-freebsd-x64': 11.16.0 997 | '@oxc-resolver/binding-linux-arm-gnueabihf': 11.16.0 998 | '@oxc-resolver/binding-linux-arm-musleabihf': 11.16.0 999 | '@oxc-resolver/binding-linux-arm64-gnu': 11.16.0 1000 | '@oxc-resolver/binding-linux-arm64-musl': 11.16.0 1001 | '@oxc-resolver/binding-linux-ppc64-gnu': 11.16.0 1002 | '@oxc-resolver/binding-linux-riscv64-gnu': 11.16.0 1003 | '@oxc-resolver/binding-linux-riscv64-musl': 11.16.0 1004 | '@oxc-resolver/binding-linux-s390x-gnu': 11.16.0 1005 | '@oxc-resolver/binding-linux-x64-gnu': 11.16.0 1006 | '@oxc-resolver/binding-linux-x64-musl': 11.16.0 1007 | '@oxc-resolver/binding-openharmony-arm64': 11.16.0 1008 | '@oxc-resolver/binding-wasm32-wasi': 11.16.0 1009 | '@oxc-resolver/binding-win32-arm64-msvc': 11.16.0 1010 | '@oxc-resolver/binding-win32-ia32-msvc': 11.16.0 1011 | '@oxc-resolver/binding-win32-x64-msvc': 11.16.0 1012 | 1013 | pathe@2.0.3: {} 1014 | 1015 | picocolors@1.1.1: {} 1016 | 1017 | picomatch@4.0.3: {} 1018 | 1019 | postcss@8.5.6: 1020 | dependencies: 1021 | nanoid: 3.3.11 1022 | picocolors: 1.1.1 1023 | source-map-js: 1.2.1 1024 | 1025 | rollup@4.53.3: 1026 | dependencies: 1027 | '@types/estree': 1.0.8 1028 | optionalDependencies: 1029 | '@rollup/rollup-android-arm-eabi': 4.53.3 1030 | '@rollup/rollup-android-arm64': 4.53.3 1031 | '@rollup/rollup-darwin-arm64': 4.53.3 1032 | '@rollup/rollup-darwin-x64': 4.53.3 1033 | '@rollup/rollup-freebsd-arm64': 4.53.3 1034 | '@rollup/rollup-freebsd-x64': 4.53.3 1035 | '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 1036 | '@rollup/rollup-linux-arm-musleabihf': 4.53.3 1037 | '@rollup/rollup-linux-arm64-gnu': 4.53.3 1038 | '@rollup/rollup-linux-arm64-musl': 4.53.3 1039 | '@rollup/rollup-linux-loong64-gnu': 4.53.3 1040 | '@rollup/rollup-linux-ppc64-gnu': 4.53.3 1041 | '@rollup/rollup-linux-riscv64-gnu': 4.53.3 1042 | '@rollup/rollup-linux-riscv64-musl': 4.53.3 1043 | '@rollup/rollup-linux-s390x-gnu': 4.53.3 1044 | '@rollup/rollup-linux-x64-gnu': 4.53.3 1045 | '@rollup/rollup-linux-x64-musl': 4.53.3 1046 | '@rollup/rollup-openharmony-arm64': 4.53.3 1047 | '@rollup/rollup-win32-arm64-msvc': 4.53.3 1048 | '@rollup/rollup-win32-ia32-msvc': 4.53.3 1049 | '@rollup/rollup-win32-x64-gnu': 4.53.3 1050 | '@rollup/rollup-win32-x64-msvc': 4.53.3 1051 | fsevents: 2.3.3 1052 | 1053 | siginfo@2.0.0: {} 1054 | 1055 | source-map-js@1.2.1: {} 1056 | 1057 | stackback@0.0.2: {} 1058 | 1059 | std-env@3.10.0: {} 1060 | 1061 | tapable@2.3.0: {} 1062 | 1063 | tinybench@2.9.0: {} 1064 | 1065 | tinyexec@1.0.2: {} 1066 | 1067 | tinyglobby@0.2.15: 1068 | dependencies: 1069 | fdir: 6.5.0(picomatch@4.0.3) 1070 | picomatch: 4.0.3 1071 | 1072 | tinyrainbow@3.0.3: {} 1073 | 1074 | tslib@2.8.1: 1075 | optional: true 1076 | 1077 | vite@7.2.6: 1078 | dependencies: 1079 | esbuild: 0.25.12 1080 | fdir: 6.5.0(picomatch@4.0.3) 1081 | picomatch: 4.0.3 1082 | postcss: 8.5.6 1083 | rollup: 4.53.3 1084 | tinyglobby: 0.2.15 1085 | optionalDependencies: 1086 | fsevents: 2.3.3 1087 | 1088 | vitest@4.0.15: 1089 | dependencies: 1090 | '@vitest/expect': 4.0.15 1091 | '@vitest/mocker': 4.0.15(vite@7.2.6) 1092 | '@vitest/pretty-format': 4.0.15 1093 | '@vitest/runner': 4.0.15 1094 | '@vitest/snapshot': 4.0.15 1095 | '@vitest/spy': 4.0.15 1096 | '@vitest/utils': 4.0.15 1097 | es-module-lexer: 1.7.0 1098 | expect-type: 1.2.2 1099 | magic-string: 0.30.21 1100 | obug: 2.1.1 1101 | pathe: 2.0.3 1102 | picomatch: 4.0.3 1103 | std-env: 3.10.0 1104 | tinybench: 2.9.0 1105 | tinyexec: 1.0.2 1106 | tinyglobby: 0.2.15 1107 | tinyrainbow: 3.0.3 1108 | vite: 7.2.6 1109 | why-is-node-running: 2.3.0 1110 | transitivePeerDependencies: 1111 | - jiti 1112 | - less 1113 | - lightningcss 1114 | - msw 1115 | - sass 1116 | - sass-embedded 1117 | - stylus 1118 | - sugarss 1119 | - terser 1120 | - tsx 1121 | - yaml 1122 | 1123 | why-is-node-running@2.3.0: 1124 | dependencies: 1125 | siginfo: 2.0.0 1126 | stackback: 0.0.2 1127 | --------------------------------------------------------------------------------