├── .github
├── renovate.json5
└── workflows
│ ├── release.yml
│ └── test.yml
├── .gitignore
├── .vscode
├── extensions.json
└── settings.json
├── LICENSE
├── README.md
├── biome.json
├── package.json
├── playground
├── package.json
├── rsbuild.config.ts
└── src
│ └── index.js
├── playwright.config.ts
├── pnpm-lock.yaml
├── rslib.config.ts
├── rstest.config.ts
├── src
├── ProtocolImportsPlugin.ts
├── index.ts
└── libs.ts
├── test
├── e2e
│ ├── index.test.ts
│ ├── rsbuild.config.ts
│ └── src
│ │ └── index.js
└── unit
│ └── index.test.ts
└── tsconfig.json
/.github/renovate.json5:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": ["config:base", "schedule:monthly", "group:allNonMajor"],
4 | "rangeStrategy": "bump",
5 | "packageRules": [{ "depTypeList": ["peerDependencies"], "enabled": false }]
6 | }
7 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | # This action will publish the package to npm and create a GitHub release.
2 | name: Release
3 |
4 | on:
5 | # Run `npm run bump` to bump the version and create a git tag.
6 | push:
7 | tags:
8 | - "v*"
9 |
10 | workflow_dispatch:
11 |
12 | permissions:
13 | contents: write
14 | id-token: write
15 |
16 | jobs:
17 | publish:
18 | runs-on: ubuntu-latest
19 | steps:
20 | - name: Checkout
21 | uses: actions/checkout@v4
22 |
23 | - name: Install Pnpm
24 | run: npm i -g corepack@latest --force && corepack enable
25 |
26 | - name: Setup Node.js
27 | uses: actions/setup-node@v4
28 | with:
29 | node-version: 22
30 | cache: "pnpm"
31 |
32 | - name: Install Dependencies
33 | run: pnpm install
34 |
35 | - name: Publish
36 | uses: JS-DevTools/npm-publish@v3
37 | with:
38 | token: ${{ secrets.RSBUILD_PLUGIN_NPM_TOKEN }}
39 |
40 | - name: Create GitHub Release
41 | uses: ncipollo/release-action@v1
42 | with:
43 | generateReleaseNotes: "true"
44 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Test
2 |
3 | # Controls when the action will run.
4 | on:
5 | # Triggers the workflow on pull request events but only for the main branch
6 | pull_request:
7 | branches: [main]
8 | push:
9 | branches: [main]
10 | # Allows you to run this workflow manually from the Actions tab
11 | workflow_dispatch:
12 |
13 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
14 | jobs:
15 | test:
16 | runs-on: ${{ matrix.os }}
17 | strategy:
18 | matrix:
19 | os: [ubuntu-latest, windows-latest]
20 |
21 | # Steps represent a sequence of tasks that will be executed as part of the job
22 | steps:
23 | - name: Checkout
24 | uses: actions/checkout@v4
25 |
26 | - name: Install Pnpm
27 | run: npm i -g corepack@latest --force && corepack enable
28 |
29 | - name: Setup Node.js
30 | uses: actions/setup-node@v4
31 | with:
32 | node-version: 22
33 | cache: "pnpm"
34 |
35 | - name: Install Dependencies
36 | run: pnpm install && npx playwright install
37 |
38 | - name: Run Test
39 | run: pnpm run test
40 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Local
2 | .DS_Store
3 | *.local
4 | *.log*
5 |
6 | # Dist
7 | node_modules
8 | dist/
9 | test-results
10 |
11 | # IDE
12 | .vscode/*
13 | !.vscode/settings.json
14 | !.vscode/extensions.json
15 | .idea
16 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["biomejs.biome"]
3 | }
4 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "search.useIgnoreFiles": true,
3 | "[json]": {
4 | "editor.defaultFormatter": "biomejs.biome"
5 | },
6 | "[typescript]": {
7 | "editor.defaultFormatter": "biomejs.biome"
8 | },
9 | "[javascript]": {
10 | "editor.defaultFormatter": "biomejs.biome"
11 | },
12 | "[javascriptreact]": {
13 | "editor.defaultFormatter": "biomejs.biome"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Rspack Contrib
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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # @rsbuild/plugin-node-polyfill
2 |
3 | An Rsbuild plugin to automatically inject polyfills for [Node.js builtin modules](https://nodejs.org/api/modules.html#built-in-modules) into the browser side.
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | ## When to use
14 |
15 | Normally, we don't need to use Node builtin modules on the browser side. However, it is possible to use some Node builtin modules when the code will run on both the Node side and the browser side, and this plugin provides browser versions of polyfills for these Node builtin modules.
16 |
17 | By using the Node Polyfill plugin, polyfills for Node builtin modules are automatically injected into the browser-side, allowing you to use these modules on the browser side with confidence.
18 |
19 | ## Usage
20 |
21 | Install:
22 |
23 | ```bash
24 | npm add @rsbuild/plugin-node-polyfill -D
25 | ```
26 |
27 | Add plugin to your `rsbuild.config.ts`:
28 |
29 | ```ts
30 | // rsbuild.config.ts
31 | import { pluginNodePolyfill } from "@rsbuild/plugin-node-polyfill";
32 |
33 | export default {
34 | plugins: [pluginNodePolyfill()],
35 | };
36 | ```
37 |
38 | ## Node Polyfills
39 |
40 | ### Globals
41 |
42 | - `Buffer`
43 | - `process`
44 |
45 | When you use the above global variables in your code, the corresponding polyfill will be automatically injected.
46 |
47 | For instance, the following code would inject the `Buffer` polyfill:
48 |
49 | ```ts
50 | const bufferData = Buffer.from("abc");
51 | ```
52 |
53 | You can disable this behavior through the `globals` option of the plugin:
54 |
55 | ```ts
56 | pluginNodePolyfill({
57 | globals: {
58 | Buffer: false,
59 | process: false,
60 | },
61 | });
62 | ```
63 |
64 | ### Modules
65 |
66 | - `assert`
67 | - `buffer`
68 | - `console`
69 | - `constants`
70 | - `crypto`
71 | - `domain`
72 | - `events`
73 | - `http`
74 | - `https`
75 | - `os`
76 | - `path`
77 | - `punycode`
78 | - `process`
79 | - `querystring`
80 | - `stream`
81 | - `_stream_duplex`
82 | - `_stream_passthrough`
83 | - `_stream_readable`
84 | - `_stream_transform`
85 | - `_stream_writable`
86 | - `string_decoder`
87 | - `sys`
88 | - `timers`
89 | - `tty`
90 | - `url`
91 | - `util`
92 | - `vm`
93 | - `zlib`
94 |
95 | When the above module is referenced in code via import / require syntax, the corresponding polyfill will be injected.
96 |
97 | ```ts
98 | import { Buffer } from "buffer";
99 |
100 | const bufferData = Buffer.from("abc");
101 | ```
102 |
103 | ### Fallbacks
104 |
105 | - `child_process`
106 | - `cluster`
107 | - `dgram`
108 | - `dns`
109 | - `fs`
110 | - `module`
111 | - `net`
112 | - `readline`
113 | - `repl`
114 | - `tls`
115 |
116 | Currently there is no polyfill for the above modules on the browser side, so when you import the above modules, it will automatically fallback to an empty object.
117 |
118 | ```ts
119 | import fs from "fs";
120 |
121 | console.log(fs); // -> {}
122 | ```
123 |
124 | ## Options
125 |
126 | ### globals
127 |
128 | Used to specify whether to inject polyfills for global variables.
129 |
130 | - **Type:**
131 |
132 | ```ts
133 | type Globals = {
134 | process?: boolean;
135 | Buffer?: boolean;
136 | };
137 | ```
138 |
139 | - **Default:**
140 |
141 | ```ts
142 | const defaultGlobals = {
143 | Buffer: true,
144 | process: true,
145 | };
146 | ```
147 |
148 | ### protocolImports
149 |
150 | Whether to polyfill Node.js builtin modules starting with `node:`.
151 |
152 | - **Type:** `boolean`
153 | - **Default:** `true`
154 |
155 | For example, if you disable `protocolImports`, modules such as `node:path`, `node:http`, etc. will not be polyfilled.
156 |
157 | ```ts
158 | pluginNodePolyfill({
159 | protocolImports: false,
160 | });
161 | ```
162 |
163 | ### include
164 |
165 | Specify an array of modules for which polyfills should be injected. If this option is set, only the specified modules will be polyfilled. `include` is mutually exclusive with [`exclude`](#exclude).
166 |
167 | - **Type:** `string[]`
168 | - **Default:** `undefined`
169 |
170 | ```ts
171 | pluginNodePolyfill({
172 | include: ["buffer", "crypto"], // Only "buffer" and "crypto" modules will be polyfilled.
173 | });
174 | ```
175 |
176 | ### exclude
177 |
178 | Specify an array of modules for which polyfills should not be injected from the default. If this option is set, the specified modules will be excluded from polyfilled. `exclude` is mutually exclusive with [`include`](#include).
179 |
180 | - **Type:** `string[]`
181 | - **Default:** `undefined`
182 |
183 | ```ts
184 | pluginNodePolyfill({
185 | exclude: ["http", "https"], // All modules except "http" and "https" will be polyfilled.
186 | });
187 | ```
188 |
189 | ### overrides
190 |
191 | Override the default polyfills for specific modules.
192 |
193 | - **Type:** `Record`
194 | - **Default:** `{}`
195 |
196 | ```ts
197 | pluginNodePolyfill({
198 | overrides: {
199 | fs: "memfs",
200 | },
201 | });
202 | ```
203 |
204 | ### force
205 |
206 | By default, the plugin only polyfills the browser-side code. If you want to polyfill the server-side code as well (when `output.target` is `node`), you can set the `force` option to `true`.
207 |
208 | - **Type:** `boolean`
209 | - **Default:** `false`
210 |
211 | ```ts
212 | pluginNodePolyfill({
213 | force: true,
214 | });
215 | ```
216 |
217 | ## Exported variables
218 |
219 | - `builtinMappingResolved`: A map of Node.js builtin modules to their resolved corresponding polyfills modules.
220 | - `resolvedPolyfillToModules`: A map of resolved polyfill modules to the polyfill modules before resolving.
221 |
222 | ## License
223 |
224 | [MIT](./LICENSE).
225 |
--------------------------------------------------------------------------------
/biome.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json",
3 | "organizeImports": {
4 | "enabled": true
5 | },
6 | "vcs": {
7 | "enabled": true,
8 | "defaultBranch": "main",
9 | "clientKind": "git",
10 | "useIgnoreFile": true
11 | },
12 | "javascript": {
13 | "formatter": {
14 | "quoteStyle": "single"
15 | }
16 | },
17 | "linter": {
18 | "enabled": true,
19 | "rules": {
20 | "recommended": true
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@rsbuild/plugin-node-polyfill",
3 | "version": "1.3.0",
4 | "repository": "https://github.com/rspack-contrib/rsbuild-plugin-node-polyfill",
5 | "license": "MIT",
6 | "type": "module",
7 | "exports": {
8 | ".": {
9 | "types": "./dist/index.d.ts",
10 | "import": "./dist/index.js",
11 | "require": "./dist/index.cjs"
12 | }
13 | },
14 | "main": "./dist/index.js",
15 | "module": "./dist/index.mjs",
16 | "types": "./dist/index.d.ts",
17 | "files": ["dist"],
18 | "scripts": {
19 | "build": "rslib build",
20 | "dev": "rslib build --watch",
21 | "lint": "biome check .",
22 | "lint:write": "biome check . --write",
23 | "prepare": "simple-git-hooks && npm run build",
24 | "test": "pnpm run /^test:/",
25 | "test:e2e": "playwright test",
26 | "test:unit": "rstest run",
27 | "bump": "npx bumpp"
28 | },
29 | "simple-git-hooks": {
30 | "pre-commit": "npx nano-staged"
31 | },
32 | "nano-staged": {
33 | "*.{js,jsx,ts,tsx,mjs,cjs}": [
34 | "biome check --write --no-errors-on-unmatched"
35 | ]
36 | },
37 | "dependencies": {
38 | "assert": "^2.1.0",
39 | "browserify-zlib": "^0.2.0",
40 | "buffer": "^5.7.1",
41 | "console-browserify": "^1.2.0",
42 | "constants-browserify": "^1.0.0",
43 | "crypto-browserify": "^3.12.1",
44 | "domain-browser": "^5.7.0",
45 | "events": "^3.3.0",
46 | "https-browserify": "^1.0.0",
47 | "os-browserify": "^0.3.0",
48 | "path-browserify": "^1.0.1",
49 | "process": "^0.11.10",
50 | "punycode": "^2.3.1",
51 | "querystring-es3": "^0.2.1",
52 | "readable-stream": "^4.7.0",
53 | "stream-browserify": "^3.0.0",
54 | "stream-http": "^3.2.0",
55 | "string_decoder": "^1.3.0",
56 | "timers-browserify": "^2.0.12",
57 | "tty-browserify": "^0.0.1",
58 | "url": "^0.11.4",
59 | "util": "^0.12.5",
60 | "vm-browserify": "^1.1.2"
61 | },
62 | "devDependencies": {
63 | "@biomejs/biome": "^1.9.4",
64 | "@playwright/test": "^1.52.0",
65 | "@rsbuild/core": "^1.3.22",
66 | "@rslib/core": "^0.9.1",
67 | "@rstest/core": "https://pkg.pr.new/web-infra-dev/rstest/@rstest/core@1b40438",
68 | "@types/node": "^22.15.29",
69 | "nano-staged": "^0.8.0",
70 | "playwright": "^1.52.0",
71 | "simple-git-hooks": "^2.13.0",
72 | "tsx": "^4.19.4",
73 | "typescript": "^5.8.3"
74 | },
75 | "peerDependencies": {
76 | "@rsbuild/core": "1.x"
77 | },
78 | "peerDependenciesMeta": {
79 | "@rsbuild/core": {
80 | "optional": true
81 | }
82 | },
83 | "packageManager": "pnpm@10.11.0",
84 | "publishConfig": {
85 | "access": "public",
86 | "registry": "https://registry.npmjs.org/"
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/playground/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "playground",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "dev": "npx rsbuild dev",
7 | "build": "npx rsbuild build"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/playground/rsbuild.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from '@rsbuild/core';
2 | import { pluginNodePolyfill } from '../src';
3 |
4 | export default defineConfig({
5 | plugins: [pluginNodePolyfill()],
6 | });
7 |
--------------------------------------------------------------------------------
/playground/src/index.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path';
2 | // biome-ignore lint: test non-import protocol
3 | import querystring from 'querystring';
4 |
5 | const bufferData = Buffer.from('abc');
6 |
7 | const qsRes = querystring.stringify({
8 | foo: 'bar',
9 | });
10 |
11 | document.querySelector('#root').innerHTML = `
12 |
13 |
${bufferData.join('')}
14 |
${qsRes}
15 |
${path.join('foo', 'bar')}
16 |
Hello Rsbuild!
17 |
18 | `;
19 |
--------------------------------------------------------------------------------
/playwright.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from '@playwright/test';
2 |
3 | export default defineConfig({
4 | testMatch: '*test/e2e/*.test.ts',
5 | });
6 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | assert:
12 | specifier: ^2.1.0
13 | version: 2.1.0
14 | browserify-zlib:
15 | specifier: ^0.2.0
16 | version: 0.2.0
17 | buffer:
18 | specifier: ^5.7.1
19 | version: 5.7.1
20 | console-browserify:
21 | specifier: ^1.2.0
22 | version: 1.2.0
23 | constants-browserify:
24 | specifier: ^1.0.0
25 | version: 1.0.0
26 | crypto-browserify:
27 | specifier: ^3.12.1
28 | version: 3.12.1
29 | domain-browser:
30 | specifier: ^5.7.0
31 | version: 5.7.0
32 | events:
33 | specifier: ^3.3.0
34 | version: 3.3.0
35 | https-browserify:
36 | specifier: ^1.0.0
37 | version: 1.0.0
38 | os-browserify:
39 | specifier: ^0.3.0
40 | version: 0.3.0
41 | path-browserify:
42 | specifier: ^1.0.1
43 | version: 1.0.1
44 | process:
45 | specifier: ^0.11.10
46 | version: 0.11.10
47 | punycode:
48 | specifier: ^2.3.1
49 | version: 2.3.1
50 | querystring-es3:
51 | specifier: ^0.2.1
52 | version: 0.2.1
53 | readable-stream:
54 | specifier: ^4.7.0
55 | version: 4.7.0
56 | stream-browserify:
57 | specifier: ^3.0.0
58 | version: 3.0.0
59 | stream-http:
60 | specifier: ^3.2.0
61 | version: 3.2.0
62 | string_decoder:
63 | specifier: ^1.3.0
64 | version: 1.3.0
65 | timers-browserify:
66 | specifier: ^2.0.12
67 | version: 2.0.12
68 | tty-browserify:
69 | specifier: ^0.0.1
70 | version: 0.0.1
71 | url:
72 | specifier: ^0.11.4
73 | version: 0.11.4
74 | util:
75 | specifier: ^0.12.5
76 | version: 0.12.5
77 | vm-browserify:
78 | specifier: ^1.1.2
79 | version: 1.1.2
80 | devDependencies:
81 | '@biomejs/biome':
82 | specifier: ^1.9.4
83 | version: 1.9.4
84 | '@playwright/test':
85 | specifier: ^1.52.0
86 | version: 1.52.0
87 | '@rsbuild/core':
88 | specifier: ^1.3.22
89 | version: 1.3.22
90 | '@rslib/core':
91 | specifier: ^0.9.1
92 | version: 0.9.1(typescript@5.8.3)
93 | '@rstest/core':
94 | specifier: https://pkg.pr.new/web-infra-dev/rstest/@rstest/core@1b40438
95 | version: https://pkg.pr.new/web-infra-dev/rstest/@rstest/core@1b40438
96 | '@types/node':
97 | specifier: ^22.15.29
98 | version: 22.15.29
99 | nano-staged:
100 | specifier: ^0.8.0
101 | version: 0.8.0
102 | playwright:
103 | specifier: ^1.52.0
104 | version: 1.52.0
105 | simple-git-hooks:
106 | specifier: ^2.13.0
107 | version: 2.13.0
108 | tsx:
109 | specifier: ^4.19.4
110 | version: 4.19.4
111 | typescript:
112 | specifier: ^5.8.3
113 | version: 5.8.3
114 |
115 | packages:
116 |
117 | '@ast-grep/napi-darwin-arm64@0.37.0':
118 | resolution: {integrity: sha512-QAiIiaAbLvMEg/yBbyKn+p1gX2/FuaC0SMf7D7capm/oG4xGMzdeaQIcSosF4TCxxV+hIH4Bz9e4/u7w6Bnk3Q==}
119 | engines: {node: '>= 10'}
120 | cpu: [arm64]
121 | os: [darwin]
122 |
123 | '@ast-grep/napi-darwin-x64@0.37.0':
124 | resolution: {integrity: sha512-zvcvdgekd4ySV3zUbUp8HF5nk5zqwiMXTuVzTUdl/w08O7JjM6XPOIVT+d2o/MqwM9rsXdzdergY5oY2RdhSPA==}
125 | engines: {node: '>= 10'}
126 | cpu: [x64]
127 | os: [darwin]
128 |
129 | '@ast-grep/napi-linux-arm64-gnu@0.37.0':
130 | resolution: {integrity: sha512-L7Sj0lXy8X+BqSMgr1LB8cCoWk0rericdeu+dC8/c8zpsav5Oo2IQKY1PmiZ7H8IHoFBbURLf8iklY9wsD+cyA==}
131 | engines: {node: '>= 10'}
132 | cpu: [arm64]
133 | os: [linux]
134 |
135 | '@ast-grep/napi-linux-arm64-musl@0.37.0':
136 | resolution: {integrity: sha512-LF9sAvYy6es/OdyJDO3RwkX3I82Vkfsng1sqUBcoWC1jVb1wX5YVzHtpQox9JrEhGl+bNp7FYxB4Qba9OdA5GA==}
137 | engines: {node: '>= 10'}
138 | cpu: [arm64]
139 | os: [linux]
140 |
141 | '@ast-grep/napi-linux-x64-gnu@0.37.0':
142 | resolution: {integrity: sha512-TViz5/klqre6aSmJzswEIjApnGjJzstG/SE8VDWsrftMBMYt2PTu3MeluZVwzSqDao8doT/P+6U11dU05UOgxw==}
143 | engines: {node: '>= 10'}
144 | cpu: [x64]
145 | os: [linux]
146 |
147 | '@ast-grep/napi-linux-x64-musl@0.37.0':
148 | resolution: {integrity: sha512-/BcCH33S9E3ovOAEoxYngUNXgb+JLg991sdyiNP2bSoYd30a9RHrG7CYwW6fMgua3ijQ474eV6cq9yZO1bCpXg==}
149 | engines: {node: '>= 10'}
150 | cpu: [x64]
151 | os: [linux]
152 |
153 | '@ast-grep/napi-win32-arm64-msvc@0.37.0':
154 | resolution: {integrity: sha512-TjQA4cFoIEW2bgjLkaL9yqT4XWuuLa5MCNd0VCDhGRDMNQ9+rhwi9eLOWRaap3xzT7g+nlbcEHL3AkVCD2+b3A==}
155 | engines: {node: '>= 10'}
156 | cpu: [arm64]
157 | os: [win32]
158 |
159 | '@ast-grep/napi-win32-ia32-msvc@0.37.0':
160 | resolution: {integrity: sha512-uNmVka8fJCdYsyOlF9aZqQMLTatEYBynjChVTzUfFMDfmZ0bihs/YTqJVbkSm8TZM7CUX82apvn50z/dX5iWRA==}
161 | engines: {node: '>= 10'}
162 | cpu: [ia32]
163 | os: [win32]
164 |
165 | '@ast-grep/napi-win32-x64-msvc@0.37.0':
166 | resolution: {integrity: sha512-vCiFOT3hSCQuHHfZ933GAwnPzmL0G04JxQEsBRfqONywyT8bSdDc/ECpAfr3S9VcS4JZ9/F6tkePKW/Om2Dq2g==}
167 | engines: {node: '>= 10'}
168 | cpu: [x64]
169 | os: [win32]
170 |
171 | '@ast-grep/napi@0.37.0':
172 | resolution: {integrity: sha512-Hb4o6h1Pf6yRUAX07DR4JVY7dmQw+RVQMW5/m55GoiAT/VRoKCWBtIUPPOnqDVhbx1Cjfil9b6EDrgJsUAujEQ==}
173 | engines: {node: '>= 10'}
174 |
175 | '@biomejs/biome@1.9.4':
176 | resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==}
177 | engines: {node: '>=14.21.3'}
178 | hasBin: true
179 |
180 | '@biomejs/cli-darwin-arm64@1.9.4':
181 | resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==}
182 | engines: {node: '>=14.21.3'}
183 | cpu: [arm64]
184 | os: [darwin]
185 |
186 | '@biomejs/cli-darwin-x64@1.9.4':
187 | resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==}
188 | engines: {node: '>=14.21.3'}
189 | cpu: [x64]
190 | os: [darwin]
191 |
192 | '@biomejs/cli-linux-arm64-musl@1.9.4':
193 | resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==}
194 | engines: {node: '>=14.21.3'}
195 | cpu: [arm64]
196 | os: [linux]
197 |
198 | '@biomejs/cli-linux-arm64@1.9.4':
199 | resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==}
200 | engines: {node: '>=14.21.3'}
201 | cpu: [arm64]
202 | os: [linux]
203 |
204 | '@biomejs/cli-linux-x64-musl@1.9.4':
205 | resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==}
206 | engines: {node: '>=14.21.3'}
207 | cpu: [x64]
208 | os: [linux]
209 |
210 | '@biomejs/cli-linux-x64@1.9.4':
211 | resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==}
212 | engines: {node: '>=14.21.3'}
213 | cpu: [x64]
214 | os: [linux]
215 |
216 | '@biomejs/cli-win32-arm64@1.9.4':
217 | resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==}
218 | engines: {node: '>=14.21.3'}
219 | cpu: [arm64]
220 | os: [win32]
221 |
222 | '@biomejs/cli-win32-x64@1.9.4':
223 | resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==}
224 | engines: {node: '>=14.21.3'}
225 | cpu: [x64]
226 | os: [win32]
227 |
228 | '@esbuild/aix-ppc64@0.25.0':
229 | resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==}
230 | engines: {node: '>=18'}
231 | cpu: [ppc64]
232 | os: [aix]
233 |
234 | '@esbuild/android-arm64@0.25.0':
235 | resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==}
236 | engines: {node: '>=18'}
237 | cpu: [arm64]
238 | os: [android]
239 |
240 | '@esbuild/android-arm@0.25.0':
241 | resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==}
242 | engines: {node: '>=18'}
243 | cpu: [arm]
244 | os: [android]
245 |
246 | '@esbuild/android-x64@0.25.0':
247 | resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==}
248 | engines: {node: '>=18'}
249 | cpu: [x64]
250 | os: [android]
251 |
252 | '@esbuild/darwin-arm64@0.25.0':
253 | resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==}
254 | engines: {node: '>=18'}
255 | cpu: [arm64]
256 | os: [darwin]
257 |
258 | '@esbuild/darwin-x64@0.25.0':
259 | resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==}
260 | engines: {node: '>=18'}
261 | cpu: [x64]
262 | os: [darwin]
263 |
264 | '@esbuild/freebsd-arm64@0.25.0':
265 | resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==}
266 | engines: {node: '>=18'}
267 | cpu: [arm64]
268 | os: [freebsd]
269 |
270 | '@esbuild/freebsd-x64@0.25.0':
271 | resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==}
272 | engines: {node: '>=18'}
273 | cpu: [x64]
274 | os: [freebsd]
275 |
276 | '@esbuild/linux-arm64@0.25.0':
277 | resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==}
278 | engines: {node: '>=18'}
279 | cpu: [arm64]
280 | os: [linux]
281 |
282 | '@esbuild/linux-arm@0.25.0':
283 | resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==}
284 | engines: {node: '>=18'}
285 | cpu: [arm]
286 | os: [linux]
287 |
288 | '@esbuild/linux-ia32@0.25.0':
289 | resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==}
290 | engines: {node: '>=18'}
291 | cpu: [ia32]
292 | os: [linux]
293 |
294 | '@esbuild/linux-loong64@0.25.0':
295 | resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==}
296 | engines: {node: '>=18'}
297 | cpu: [loong64]
298 | os: [linux]
299 |
300 | '@esbuild/linux-mips64el@0.25.0':
301 | resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==}
302 | engines: {node: '>=18'}
303 | cpu: [mips64el]
304 | os: [linux]
305 |
306 | '@esbuild/linux-ppc64@0.25.0':
307 | resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==}
308 | engines: {node: '>=18'}
309 | cpu: [ppc64]
310 | os: [linux]
311 |
312 | '@esbuild/linux-riscv64@0.25.0':
313 | resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==}
314 | engines: {node: '>=18'}
315 | cpu: [riscv64]
316 | os: [linux]
317 |
318 | '@esbuild/linux-s390x@0.25.0':
319 | resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==}
320 | engines: {node: '>=18'}
321 | cpu: [s390x]
322 | os: [linux]
323 |
324 | '@esbuild/linux-x64@0.25.0':
325 | resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==}
326 | engines: {node: '>=18'}
327 | cpu: [x64]
328 | os: [linux]
329 |
330 | '@esbuild/netbsd-arm64@0.25.0':
331 | resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==}
332 | engines: {node: '>=18'}
333 | cpu: [arm64]
334 | os: [netbsd]
335 |
336 | '@esbuild/netbsd-x64@0.25.0':
337 | resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==}
338 | engines: {node: '>=18'}
339 | cpu: [x64]
340 | os: [netbsd]
341 |
342 | '@esbuild/openbsd-arm64@0.25.0':
343 | resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==}
344 | engines: {node: '>=18'}
345 | cpu: [arm64]
346 | os: [openbsd]
347 |
348 | '@esbuild/openbsd-x64@0.25.0':
349 | resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==}
350 | engines: {node: '>=18'}
351 | cpu: [x64]
352 | os: [openbsd]
353 |
354 | '@esbuild/sunos-x64@0.25.0':
355 | resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==}
356 | engines: {node: '>=18'}
357 | cpu: [x64]
358 | os: [sunos]
359 |
360 | '@esbuild/win32-arm64@0.25.0':
361 | resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==}
362 | engines: {node: '>=18'}
363 | cpu: [arm64]
364 | os: [win32]
365 |
366 | '@esbuild/win32-ia32@0.25.0':
367 | resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==}
368 | engines: {node: '>=18'}
369 | cpu: [ia32]
370 | os: [win32]
371 |
372 | '@esbuild/win32-x64@0.25.0':
373 | resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==}
374 | engines: {node: '>=18'}
375 | cpu: [x64]
376 | os: [win32]
377 |
378 | '@jridgewell/sourcemap-codec@1.5.0':
379 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
380 |
381 | '@module-federation/error-codes@0.14.0':
382 | resolution: {integrity: sha512-GGk+EoeSACJikZZyShnLshtq9E2eCrDWbRiB4QAFXCX4oYmGgFfzXlx59vMNwqTKPJWxkEGnPYacJMcr2YYjag==}
383 |
384 | '@module-federation/error-codes@0.14.3':
385 | resolution: {integrity: sha512-sBJ3XKU9g5Up31jFeXPFsD8AgORV7TLO/cCSMuRewSfgYbG/3vSKLJmfHrO6+PvjZSb9VyV2UaF02ojktW65vw==}
386 |
387 | '@module-federation/runtime-core@0.14.0':
388 | resolution: {integrity: sha512-fGE1Ro55zIFDp/CxQuRhKQ1pJvG7P0qvRm2N+4i8z++2bgDjcxnCKUqDJ8lLD+JfJQvUJf0tuSsJPgevzueD4g==}
389 |
390 | '@module-federation/runtime-core@0.14.3':
391 | resolution: {integrity: sha512-xMFQXflLVW/AJTWb4soAFP+LB4XuhE7ryiLIX8oTyUoBBgV6U2OPghnFljPjeXbud72O08NYlQ1qsHw1kN/V8Q==}
392 |
393 | '@module-federation/runtime-tools@0.14.0':
394 | resolution: {integrity: sha512-y/YN0c2DKsLETE+4EEbmYWjqF9G6ZwgZoDIPkaQ9p0pQu0V4YxzWfQagFFxR0RigYGuhJKmSU/rtNoHq+qF8jg==}
395 |
396 | '@module-federation/runtime-tools@0.14.3':
397 | resolution: {integrity: sha512-QBETX7iMYXdSa3JtqFlYU+YkpymxETZqyIIRiqg0gW+XGpH3jgU68yjrme2NBJp7URQi/CFZG8KWtfClk0Pjgw==}
398 |
399 | '@module-federation/runtime@0.14.0':
400 | resolution: {integrity: sha512-kR3cyHw/Y64SEa7mh4CHXOEQYY32LKLK75kJOmBroLNLO7/W01hMNAvGBYTedS7hWpVuefPk1aFZioy3q2VLdQ==}
401 |
402 | '@module-federation/runtime@0.14.3':
403 | resolution: {integrity: sha512-7ZHpa3teUDVhraYdxQGkfGHzPbjna4LtwbpudgzAxSLLFxLDNanaxCuSeIgSM9c+8sVUNC9kvzUgJEZB0krPJw==}
404 |
405 | '@module-federation/sdk@0.14.0':
406 | resolution: {integrity: sha512-lg/OWRsh18hsyTCamOOhEX546vbDiA2O4OggTxxH2wTGr156N6DdELGQlYIKfRdU/0StgtQS81Goc0BgDZlx9A==}
407 |
408 | '@module-federation/sdk@0.14.3':
409 | resolution: {integrity: sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw==}
410 |
411 | '@module-federation/webpack-bundler-runtime@0.14.0':
412 | resolution: {integrity: sha512-POWS6cKBicAAQ3DNY5X7XEUSfOfUsRaBNxbuwEfSGlrkTE9UcWheO06QP2ndHi8tHQuUKcIHi2navhPkJ+k5xg==}
413 |
414 | '@module-federation/webpack-bundler-runtime@0.14.3':
415 | resolution: {integrity: sha512-hIyJFu34P7bY2NeMIUHAS/mYUHEY71VTAsN0A0AqEJFSVPszheopu9VdXq0VDLrP9KQfuXT8SDxeYeJXyj0mgA==}
416 |
417 | '@playwright/test@1.52.0':
418 | resolution: {integrity: sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==}
419 | engines: {node: '>=18'}
420 | hasBin: true
421 |
422 | '@rsbuild/core@1.3.22':
423 | resolution: {integrity: sha512-FGB7m8Tn/uiOhvqk0lw+NRMyD+VYJ+eBqVfpn0X11spkJDiPWn8UkMRvfzCX4XFcNZwRKYuuKJaZK1DNU8UG+w==}
424 | engines: {node: '>=16.10.0'}
425 | hasBin: true
426 |
427 | '@rsbuild/core@1.4.0-beta.2':
428 | resolution: {integrity: sha512-cgMGolvlPkDghi0+tuoN5pYZERhOuOHQWXwxVU963/f5BSrXDRtwH6QzUevmUVyh+i1zFE5OdWM3YyVCahvG2Q==}
429 | engines: {node: '>=16.10.0'}
430 | hasBin: true
431 |
432 | '@rslib/core@0.9.1':
433 | resolution: {integrity: sha512-aa/LXYxr49lCNm/b0B4CQoTB5286MPglGsE5/YFoY0VwIcKJdMz0zBJ4DsPwh27/fcfDQvmN1+J9tzjt9TxQtQ==}
434 | engines: {node: '>=16.7.0'}
435 | hasBin: true
436 | peerDependencies:
437 | '@microsoft/api-extractor': ^7
438 | typescript: ^5
439 | peerDependenciesMeta:
440 | '@microsoft/api-extractor':
441 | optional: true
442 | typescript:
443 | optional: true
444 |
445 | '@rspack/binding-darwin-arm64@1.3.12':
446 | resolution: {integrity: sha512-8hKjVTBeWPqkMzFPNWIh72oU9O3vFy3e88wRjMPImDCXBiEYrKqGTTLd/J0SO+efdL3SBD1rX1IvdJpxCv6Yrw==}
447 | cpu: [arm64]
448 | os: [darwin]
449 |
450 | '@rspack/binding-darwin-arm64@1.3.15':
451 | resolution: {integrity: sha512-f+DnVRENRdVe+ufpZeqTtWAUDSTnP48jVo7x9KWsXf8XyJHUi+eHKEPrFoy1HvL1/k5yJ3HVnFBh1Hb9cNIwSg==}
452 | cpu: [arm64]
453 | os: [darwin]
454 |
455 | '@rspack/binding-darwin-x64@1.3.12':
456 | resolution: {integrity: sha512-Sj4m+mCUxL7oCpdu7OmWT7fpBM7hywk5CM9RDc3D7StaBZbvNtNftafCrTZzTYKuZrKmemTh5SFzT5Tz7tf6GA==}
457 | cpu: [x64]
458 | os: [darwin]
459 |
460 | '@rspack/binding-darwin-x64@1.3.15':
461 | resolution: {integrity: sha512-TfUvEIBqYUT2OK01BYXb2MNcZeZIhAnJy/5aj0qV0uy4KlvwW63HYcKWa1sFd4Ac7bnGShDkanvP3YEuHOFOyg==}
462 | cpu: [x64]
463 | os: [darwin]
464 |
465 | '@rspack/binding-linux-arm64-gnu@1.3.12':
466 | resolution: {integrity: sha512-7MuOxf3/Mhv4mgFdLTvgnt/J+VouNR65DEhorth+RZm3LEWojgoFEphSAMAvpvAOpYSS68Sw4SqsOZi719ia2w==}
467 | cpu: [arm64]
468 | os: [linux]
469 |
470 | '@rspack/binding-linux-arm64-gnu@1.3.15':
471 | resolution: {integrity: sha512-D/YjYk9snKvYm1Elotq8/GsEipB4ZJWVv/V8cZ+ohhFNOPzygENi6JfyI06TryBTQiN0/JDZqt/S9RaWBWnMqw==}
472 | cpu: [arm64]
473 | os: [linux]
474 |
475 | '@rspack/binding-linux-arm64-musl@1.3.12':
476 | resolution: {integrity: sha512-s6KKj20T9Z1bA8caIjU6EzJbwyDo1URNFgBAlafCT2UC6yX7flstDJJ38CxZacA9A2P24RuQK2/jPSZpWrTUFA==}
477 | cpu: [arm64]
478 | os: [linux]
479 |
480 | '@rspack/binding-linux-arm64-musl@1.3.15':
481 | resolution: {integrity: sha512-lJbBsPMOiR0hYPCSM42yp7QiZjfo0ALtX7ws2wURpsQp3BMfRVAmXU3Ixpo2XCRtG1zj8crHaCmAWOJTS0smsA==}
482 | cpu: [arm64]
483 | os: [linux]
484 |
485 | '@rspack/binding-linux-x64-gnu@1.3.12':
486 | resolution: {integrity: sha512-0w/sRREYbRgHgWvs2uMEJSLfvzbZkPHUg6CMcYQGNVK6axYRot6jPyKetyFYA9pR5fB5rsXegpnFaZaVrRIK2g==}
487 | cpu: [x64]
488 | os: [linux]
489 |
490 | '@rspack/binding-linux-x64-gnu@1.3.15':
491 | resolution: {integrity: sha512-qGB8ucHklrzNg6lsAS36VrBsCbOw0acgpQNqTE5cuHWrp1Pu3GFTRiFEogenxEmzoRbohMZt0Ev5grivrcgKBQ==}
492 | cpu: [x64]
493 | os: [linux]
494 |
495 | '@rspack/binding-linux-x64-musl@1.3.12':
496 | resolution: {integrity: sha512-jEdxkPymkRxbijDRsBGdhopcbGXiXDg59lXqIRkVklqbDmZ/O6DHm7gImmlx5q9FoWbz0gqJuOKBz4JqWxjWVA==}
497 | cpu: [x64]
498 | os: [linux]
499 |
500 | '@rspack/binding-linux-x64-musl@1.3.15':
501 | resolution: {integrity: sha512-qRn6e40fLQP+N2rQD8GAj/h4DakeTIho32VxTIaHRVuzw68ZD7VmKkwn55ssN370ejmey35ZdoNFNE12RBrMZA==}
502 | cpu: [x64]
503 | os: [linux]
504 |
505 | '@rspack/binding-win32-arm64-msvc@1.3.12':
506 | resolution: {integrity: sha512-ZRvUCb3TDLClAqcTsl/o9UdJf0B5CgzAxgdbnYJbldyuyMeTUB4jp20OfG55M3C2Nute2SNhu2bOOp9Se5Ongw==}
507 | cpu: [arm64]
508 | os: [win32]
509 |
510 | '@rspack/binding-win32-arm64-msvc@1.3.15':
511 | resolution: {integrity: sha512-7uJ7dWhO1nWXJiCss6Rslz8hoAxAhFpwpbWja3eHgRb7O4NPHg6MWw63AQSI2aFVakreenfu9yXQqYfpVWJ2dA==}
512 | cpu: [arm64]
513 | os: [win32]
514 |
515 | '@rspack/binding-win32-ia32-msvc@1.3.12':
516 | resolution: {integrity: sha512-1TKPjuXStPJr14f3ZHuv40Xc/87jUXx10pzVtrPnw+f3hckECHrbYU/fvbVzZyuXbsXtkXpYca6ygCDRJAoNeQ==}
517 | cpu: [ia32]
518 | os: [win32]
519 |
520 | '@rspack/binding-win32-ia32-msvc@1.3.15':
521 | resolution: {integrity: sha512-UsaWTYCjDiSCB0A0qETgZk4QvhwfG8gCrO4SJvA+QSEWOmgSai1YV70prFtLLIiyT9mDt1eU3tPWl1UWPRU/EQ==}
522 | cpu: [ia32]
523 | os: [win32]
524 |
525 | '@rspack/binding-win32-x64-msvc@1.3.12':
526 | resolution: {integrity: sha512-lCR0JfnYKpV+a6r2A2FdxyUKUS4tajePgpPJN5uXDgMGwrDtRqvx+d0BHhwjFudQVJq9VVbRaL89s2MQ6u+xYw==}
527 | cpu: [x64]
528 | os: [win32]
529 |
530 | '@rspack/binding-win32-x64-msvc@1.3.15':
531 | resolution: {integrity: sha512-ZnDIc9Es8EF94MirPDN+hOMt7tkb8nMEbRJFKLMmNd0ElNPgsql+1cY5SqyGRH1hsKB87KfSUQlhFiKZvzbfIg==}
532 | cpu: [x64]
533 | os: [win32]
534 |
535 | '@rspack/binding@1.3.12':
536 | resolution: {integrity: sha512-4Ic8lV0+LCBfTlH5aIOujIRWZOtgmG223zC4L3o8WY/+ESAgpdnK6lSSMfcYgRanYLAy3HOmFIp20jwskMpbAg==}
537 |
538 | '@rspack/binding@1.3.15':
539 | resolution: {integrity: sha512-utNPuJglLO5lW9XbwIqjB7+2ilMo6JkuVLTVdnNVKU94FW7asn9F/qV+d+MgjUVqU1QPCGm0NuGO9xhbgeJ7pg==}
540 |
541 | '@rspack/core@1.3.12':
542 | resolution: {integrity: sha512-mAPmV4LPPRgxpouUrGmAE4kpF1NEWJGyM5coebsjK/zaCMSjw3mkdxiU2b5cO44oIi0Ifv5iGkvwbdrZOvMyFA==}
543 | engines: {node: '>=16.0.0'}
544 | peerDependencies:
545 | '@swc/helpers': '>=0.5.1'
546 | peerDependenciesMeta:
547 | '@swc/helpers':
548 | optional: true
549 |
550 | '@rspack/core@1.3.15':
551 | resolution: {integrity: sha512-QuElIC8jXSKWAp0LSx18pmbhA7NiA5HGoVYesmai90UVxz98tud0KpMxTVCg+0lrLrnKZfCWN9kwjCxM5pGnrA==}
552 | engines: {node: '>=16.0.0'}
553 | peerDependencies:
554 | '@swc/helpers': '>=0.5.1'
555 | peerDependenciesMeta:
556 | '@swc/helpers':
557 | optional: true
558 |
559 | '@rspack/lite-tapable@1.0.1':
560 | resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==}
561 | engines: {node: '>=16.0.0'}
562 |
563 | '@rstest/core@https://pkg.pr.new/web-infra-dev/rstest/@rstest/core@1b40438':
564 | resolution: {tarball: https://pkg.pr.new/web-infra-dev/rstest/@rstest/core@1b40438}
565 | version: 0.0.0
566 | engines: {node: '>=18.0.0'}
567 | hasBin: true
568 |
569 | '@swc/helpers@0.5.17':
570 | resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
571 |
572 | '@types/chai@5.2.2':
573 | resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
574 |
575 | '@types/deep-eql@4.0.2':
576 | resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
577 |
578 | '@types/node@22.15.29':
579 | resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==}
580 |
581 | '@vitest/expect@3.2.3':
582 | resolution: {integrity: sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==}
583 |
584 | '@vitest/pretty-format@3.2.3':
585 | resolution: {integrity: sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==}
586 |
587 | '@vitest/snapshot@3.2.3':
588 | resolution: {integrity: sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==}
589 |
590 | '@vitest/spy@3.2.3':
591 | resolution: {integrity: sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==}
592 |
593 | '@vitest/utils@3.2.3':
594 | resolution: {integrity: sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==}
595 |
596 | abort-controller@3.0.0:
597 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
598 | engines: {node: '>=6.5'}
599 |
600 | asn1.js@4.10.1:
601 | resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==}
602 |
603 | assert@2.1.0:
604 | resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==}
605 |
606 | assertion-error@2.0.1:
607 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
608 | engines: {node: '>=12'}
609 |
610 | available-typed-arrays@1.0.7:
611 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
612 | engines: {node: '>= 0.4'}
613 |
614 | base64-js@1.5.1:
615 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
616 |
617 | birpc@2.3.0:
618 | resolution: {integrity: sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==}
619 |
620 | bn.js@4.12.0:
621 | resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==}
622 |
623 | bn.js@5.2.1:
624 | resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==}
625 |
626 | brorand@1.1.0:
627 | resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==}
628 |
629 | browserify-aes@1.2.0:
630 | resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==}
631 |
632 | browserify-cipher@1.0.1:
633 | resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==}
634 |
635 | browserify-des@1.0.2:
636 | resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==}
637 |
638 | browserify-rsa@4.1.0:
639 | resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==}
640 |
641 | browserify-sign@4.2.3:
642 | resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==}
643 | engines: {node: '>= 0.12'}
644 |
645 | browserify-zlib@0.2.0:
646 | resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==}
647 |
648 | buffer-xor@1.0.3:
649 | resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==}
650 |
651 | buffer@5.7.1:
652 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
653 |
654 | buffer@6.0.3:
655 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
656 |
657 | builtin-status-codes@3.0.0:
658 | resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==}
659 |
660 | call-bind@1.0.7:
661 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
662 | engines: {node: '>= 0.4'}
663 |
664 | caniuse-lite@1.0.30001720:
665 | resolution: {integrity: sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==}
666 |
667 | chai@5.2.0:
668 | resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==}
669 | engines: {node: '>=12'}
670 |
671 | check-error@2.1.1:
672 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
673 | engines: {node: '>= 16'}
674 |
675 | cipher-base@1.0.4:
676 | resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==}
677 |
678 | console-browserify@1.2.0:
679 | resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==}
680 |
681 | constants-browserify@1.0.0:
682 | resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==}
683 |
684 | core-js@3.42.0:
685 | resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==}
686 |
687 | core-util-is@1.0.3:
688 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
689 |
690 | create-ecdh@4.0.4:
691 | resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==}
692 |
693 | create-hash@1.2.0:
694 | resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==}
695 |
696 | create-hmac@1.1.7:
697 | resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==}
698 |
699 | crypto-browserify@3.12.1:
700 | resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==}
701 | engines: {node: '>= 0.10'}
702 |
703 | deep-eql@5.0.2:
704 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
705 | engines: {node: '>=6'}
706 |
707 | define-data-property@1.1.4:
708 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
709 | engines: {node: '>= 0.4'}
710 |
711 | define-properties@1.2.1:
712 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
713 | engines: {node: '>= 0.4'}
714 |
715 | des.js@1.1.0:
716 | resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==}
717 |
718 | diffie-hellman@5.0.3:
719 | resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==}
720 |
721 | domain-browser@5.7.0:
722 | resolution: {integrity: sha512-edTFu0M/7wO1pXY6GDxVNVW086uqwWYIHP98txhcPyV995X21JIH2DtYp33sQJOupYoXKe9RwTw2Ya2vWaquTQ==}
723 | engines: {node: '>=4'}
724 |
725 | elliptic@6.5.5:
726 | resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==}
727 |
728 | es-define-property@1.0.0:
729 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
730 | engines: {node: '>= 0.4'}
731 |
732 | es-errors@1.3.0:
733 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
734 | engines: {node: '>= 0.4'}
735 |
736 | esbuild@0.25.0:
737 | resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==}
738 | engines: {node: '>=18'}
739 | hasBin: true
740 |
741 | event-target-shim@5.0.1:
742 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
743 | engines: {node: '>=6'}
744 |
745 | events@3.3.0:
746 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
747 | engines: {node: '>=0.8.x'}
748 |
749 | evp_bytestokey@1.0.3:
750 | resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==}
751 |
752 | fdir@6.4.4:
753 | resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==}
754 | peerDependencies:
755 | picomatch: ^3 || ^4
756 | peerDependenciesMeta:
757 | picomatch:
758 | optional: true
759 |
760 | for-each@0.3.3:
761 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
762 |
763 | fsevents@2.3.2:
764 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
765 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
766 | os: [darwin]
767 |
768 | fsevents@2.3.3:
769 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
770 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
771 | os: [darwin]
772 |
773 | function-bind@1.1.2:
774 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
775 |
776 | get-intrinsic@1.2.4:
777 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
778 | engines: {node: '>= 0.4'}
779 |
780 | get-tsconfig@4.10.0:
781 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==}
782 |
783 | gopd@1.0.1:
784 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
785 |
786 | has-property-descriptors@1.0.2:
787 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
788 |
789 | has-proto@1.0.3:
790 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
791 | engines: {node: '>= 0.4'}
792 |
793 | has-symbols@1.0.3:
794 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
795 | engines: {node: '>= 0.4'}
796 |
797 | has-tostringtag@1.0.2:
798 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
799 | engines: {node: '>= 0.4'}
800 |
801 | hash-base@3.0.4:
802 | resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==}
803 | engines: {node: '>=4'}
804 |
805 | hash-base@3.1.0:
806 | resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==}
807 | engines: {node: '>=4'}
808 |
809 | hash.js@1.1.7:
810 | resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
811 |
812 | hasown@2.0.2:
813 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
814 | engines: {node: '>= 0.4'}
815 |
816 | hmac-drbg@1.0.1:
817 | resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==}
818 |
819 | https-browserify@1.0.0:
820 | resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==}
821 |
822 | ieee754@1.2.1:
823 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
824 |
825 | inherits@2.0.4:
826 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
827 |
828 | is-arguments@1.1.1:
829 | resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
830 | engines: {node: '>= 0.4'}
831 |
832 | is-callable@1.2.7:
833 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
834 | engines: {node: '>= 0.4'}
835 |
836 | is-generator-function@1.0.10:
837 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
838 | engines: {node: '>= 0.4'}
839 |
840 | is-nan@1.3.2:
841 | resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==}
842 | engines: {node: '>= 0.4'}
843 |
844 | is-typed-array@1.1.13:
845 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
846 | engines: {node: '>= 0.4'}
847 |
848 | isarray@1.0.0:
849 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
850 |
851 | jiti@2.4.2:
852 | resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
853 | hasBin: true
854 |
855 | json5@2.2.3:
856 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
857 | engines: {node: '>=6'}
858 | hasBin: true
859 |
860 | loupe@3.1.3:
861 | resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
862 |
863 | magic-string@0.30.17:
864 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
865 |
866 | md5.js@1.3.5:
867 | resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==}
868 |
869 | miller-rabin@4.0.1:
870 | resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==}
871 | hasBin: true
872 |
873 | minimalistic-assert@1.0.1:
874 | resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
875 |
876 | minimalistic-crypto-utils@1.0.1:
877 | resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
878 |
879 | minimist@1.2.8:
880 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
881 |
882 | nano-staged@0.8.0:
883 | resolution: {integrity: sha512-QSEqPGTCJbkHU2yLvfY6huqYPjdBrOaTMKatO1F8nCSrkQGXeKwtCiCnsdxnuMhbg3DTVywKaeWLGCE5oJpq0g==}
884 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
885 | hasBin: true
886 |
887 | object-inspect@1.13.2:
888 | resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
889 | engines: {node: '>= 0.4'}
890 |
891 | object-is@1.1.6:
892 | resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
893 | engines: {node: '>= 0.4'}
894 |
895 | object-keys@1.1.1:
896 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
897 | engines: {node: '>= 0.4'}
898 |
899 | object.assign@4.1.5:
900 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
901 | engines: {node: '>= 0.4'}
902 |
903 | os-browserify@0.3.0:
904 | resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
905 |
906 | pako@1.0.11:
907 | resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
908 |
909 | parse-asn1@5.1.7:
910 | resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==}
911 | engines: {node: '>= 0.10'}
912 |
913 | path-browserify@1.0.1:
914 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
915 |
916 | pathe@2.0.3:
917 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
918 |
919 | pathval@2.0.0:
920 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
921 | engines: {node: '>= 14.16'}
922 |
923 | pbkdf2@3.1.2:
924 | resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==}
925 | engines: {node: '>=0.12'}
926 |
927 | picocolors@1.0.0:
928 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
929 |
930 | picocolors@1.1.1:
931 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
932 |
933 | picomatch@4.0.2:
934 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
935 | engines: {node: '>=12'}
936 |
937 | playwright-core@1.52.0:
938 | resolution: {integrity: sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==}
939 | engines: {node: '>=18'}
940 | hasBin: true
941 |
942 | playwright@1.52.0:
943 | resolution: {integrity: sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==}
944 | engines: {node: '>=18'}
945 | hasBin: true
946 |
947 | possible-typed-array-names@1.0.0:
948 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
949 | engines: {node: '>= 0.4'}
950 |
951 | process-nextick-args@2.0.1:
952 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
953 |
954 | process@0.11.10:
955 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
956 | engines: {node: '>= 0.6.0'}
957 |
958 | public-encrypt@4.0.3:
959 | resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==}
960 |
961 | punycode@1.4.1:
962 | resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
963 |
964 | punycode@2.3.1:
965 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
966 | engines: {node: '>=6'}
967 |
968 | qs@6.13.0:
969 | resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
970 | engines: {node: '>=0.6'}
971 |
972 | querystring-es3@0.2.1:
973 | resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==}
974 | engines: {node: '>=0.4.x'}
975 |
976 | randombytes@2.1.0:
977 | resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
978 |
979 | randomfill@1.0.4:
980 | resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==}
981 |
982 | readable-stream@2.3.8:
983 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
984 |
985 | readable-stream@3.6.2:
986 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
987 | engines: {node: '>= 6'}
988 |
989 | readable-stream@4.7.0:
990 | resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
991 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
992 |
993 | resolve-pkg-maps@1.0.0:
994 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
995 |
996 | ripemd160@2.0.2:
997 | resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==}
998 |
999 | rsbuild-plugin-dts@0.9.1:
1000 | resolution: {integrity: sha512-04pkKrebuajsCpC8Vj2z4n6NFFxUYAdUdqSQRFGkGhdmururoDFYW0k9+ZQq9XrSQTlB01F/HFv5mAc0dwG/Qg==}
1001 | engines: {node: '>=16.7.0'}
1002 | peerDependencies:
1003 | '@microsoft/api-extractor': ^7
1004 | '@rsbuild/core': 1.x
1005 | typescript: ^5
1006 | peerDependenciesMeta:
1007 | '@microsoft/api-extractor':
1008 | optional: true
1009 | typescript:
1010 | optional: true
1011 |
1012 | safe-buffer@5.1.2:
1013 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
1014 |
1015 | safe-buffer@5.2.1:
1016 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1017 |
1018 | set-function-length@1.2.2:
1019 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
1020 | engines: {node: '>= 0.4'}
1021 |
1022 | setimmediate@1.0.5:
1023 | resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
1024 |
1025 | sha.js@2.4.11:
1026 | resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==}
1027 | hasBin: true
1028 |
1029 | side-channel@1.0.6:
1030 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
1031 | engines: {node: '>= 0.4'}
1032 |
1033 | simple-git-hooks@2.13.0:
1034 | resolution: {integrity: sha512-N+goiLxlkHJlyaYEglFypzVNMaNplPAk5syu0+OPp/Bk6dwVoXF6FfOw2vO0Dp+JHsBaI+w6cm8TnFl2Hw6tDA==}
1035 | hasBin: true
1036 |
1037 | std-env@3.9.0:
1038 | resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
1039 |
1040 | stream-browserify@3.0.0:
1041 | resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==}
1042 |
1043 | stream-http@3.2.0:
1044 | resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==}
1045 |
1046 | string_decoder@1.1.1:
1047 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
1048 |
1049 | string_decoder@1.3.0:
1050 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1051 |
1052 | strip-bom@3.0.0:
1053 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1054 | engines: {node: '>=4'}
1055 |
1056 | timers-browserify@2.0.12:
1057 | resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==}
1058 | engines: {node: '>=0.6.0'}
1059 |
1060 | tinyglobby@0.2.14:
1061 | resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
1062 | engines: {node: '>=12.0.0'}
1063 |
1064 | tinypool@1.1.0:
1065 | resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==}
1066 | engines: {node: ^18.0.0 || >=20.0.0}
1067 |
1068 | tinyrainbow@2.0.0:
1069 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
1070 | engines: {node: '>=14.0.0'}
1071 |
1072 | tinyspy@4.0.3:
1073 | resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==}
1074 | engines: {node: '>=14.0.0'}
1075 |
1076 | tsconfig-paths@4.2.0:
1077 | resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
1078 | engines: {node: '>=6'}
1079 |
1080 | tslib@2.8.1:
1081 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
1082 |
1083 | tsx@4.19.4:
1084 | resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==}
1085 | engines: {node: '>=18.0.0'}
1086 | hasBin: true
1087 |
1088 | tty-browserify@0.0.1:
1089 | resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==}
1090 |
1091 | typescript@5.8.3:
1092 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
1093 | engines: {node: '>=14.17'}
1094 | hasBin: true
1095 |
1096 | undici-types@6.21.0:
1097 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
1098 |
1099 | url@0.11.4:
1100 | resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==}
1101 | engines: {node: '>= 0.4'}
1102 |
1103 | util-deprecate@1.0.2:
1104 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1105 |
1106 | util@0.12.5:
1107 | resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
1108 |
1109 | vm-browserify@1.1.2:
1110 | resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==}
1111 |
1112 | which-typed-array@1.1.15:
1113 | resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
1114 | engines: {node: '>= 0.4'}
1115 |
1116 | xtend@4.0.2:
1117 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
1118 | engines: {node: '>=0.4'}
1119 |
1120 | snapshots:
1121 |
1122 | '@ast-grep/napi-darwin-arm64@0.37.0':
1123 | optional: true
1124 |
1125 | '@ast-grep/napi-darwin-x64@0.37.0':
1126 | optional: true
1127 |
1128 | '@ast-grep/napi-linux-arm64-gnu@0.37.0':
1129 | optional: true
1130 |
1131 | '@ast-grep/napi-linux-arm64-musl@0.37.0':
1132 | optional: true
1133 |
1134 | '@ast-grep/napi-linux-x64-gnu@0.37.0':
1135 | optional: true
1136 |
1137 | '@ast-grep/napi-linux-x64-musl@0.37.0':
1138 | optional: true
1139 |
1140 | '@ast-grep/napi-win32-arm64-msvc@0.37.0':
1141 | optional: true
1142 |
1143 | '@ast-grep/napi-win32-ia32-msvc@0.37.0':
1144 | optional: true
1145 |
1146 | '@ast-grep/napi-win32-x64-msvc@0.37.0':
1147 | optional: true
1148 |
1149 | '@ast-grep/napi@0.37.0':
1150 | optionalDependencies:
1151 | '@ast-grep/napi-darwin-arm64': 0.37.0
1152 | '@ast-grep/napi-darwin-x64': 0.37.0
1153 | '@ast-grep/napi-linux-arm64-gnu': 0.37.0
1154 | '@ast-grep/napi-linux-arm64-musl': 0.37.0
1155 | '@ast-grep/napi-linux-x64-gnu': 0.37.0
1156 | '@ast-grep/napi-linux-x64-musl': 0.37.0
1157 | '@ast-grep/napi-win32-arm64-msvc': 0.37.0
1158 | '@ast-grep/napi-win32-ia32-msvc': 0.37.0
1159 | '@ast-grep/napi-win32-x64-msvc': 0.37.0
1160 |
1161 | '@biomejs/biome@1.9.4':
1162 | optionalDependencies:
1163 | '@biomejs/cli-darwin-arm64': 1.9.4
1164 | '@biomejs/cli-darwin-x64': 1.9.4
1165 | '@biomejs/cli-linux-arm64': 1.9.4
1166 | '@biomejs/cli-linux-arm64-musl': 1.9.4
1167 | '@biomejs/cli-linux-x64': 1.9.4
1168 | '@biomejs/cli-linux-x64-musl': 1.9.4
1169 | '@biomejs/cli-win32-arm64': 1.9.4
1170 | '@biomejs/cli-win32-x64': 1.9.4
1171 |
1172 | '@biomejs/cli-darwin-arm64@1.9.4':
1173 | optional: true
1174 |
1175 | '@biomejs/cli-darwin-x64@1.9.4':
1176 | optional: true
1177 |
1178 | '@biomejs/cli-linux-arm64-musl@1.9.4':
1179 | optional: true
1180 |
1181 | '@biomejs/cli-linux-arm64@1.9.4':
1182 | optional: true
1183 |
1184 | '@biomejs/cli-linux-x64-musl@1.9.4':
1185 | optional: true
1186 |
1187 | '@biomejs/cli-linux-x64@1.9.4':
1188 | optional: true
1189 |
1190 | '@biomejs/cli-win32-arm64@1.9.4':
1191 | optional: true
1192 |
1193 | '@biomejs/cli-win32-x64@1.9.4':
1194 | optional: true
1195 |
1196 | '@esbuild/aix-ppc64@0.25.0':
1197 | optional: true
1198 |
1199 | '@esbuild/android-arm64@0.25.0':
1200 | optional: true
1201 |
1202 | '@esbuild/android-arm@0.25.0':
1203 | optional: true
1204 |
1205 | '@esbuild/android-x64@0.25.0':
1206 | optional: true
1207 |
1208 | '@esbuild/darwin-arm64@0.25.0':
1209 | optional: true
1210 |
1211 | '@esbuild/darwin-x64@0.25.0':
1212 | optional: true
1213 |
1214 | '@esbuild/freebsd-arm64@0.25.0':
1215 | optional: true
1216 |
1217 | '@esbuild/freebsd-x64@0.25.0':
1218 | optional: true
1219 |
1220 | '@esbuild/linux-arm64@0.25.0':
1221 | optional: true
1222 |
1223 | '@esbuild/linux-arm@0.25.0':
1224 | optional: true
1225 |
1226 | '@esbuild/linux-ia32@0.25.0':
1227 | optional: true
1228 |
1229 | '@esbuild/linux-loong64@0.25.0':
1230 | optional: true
1231 |
1232 | '@esbuild/linux-mips64el@0.25.0':
1233 | optional: true
1234 |
1235 | '@esbuild/linux-ppc64@0.25.0':
1236 | optional: true
1237 |
1238 | '@esbuild/linux-riscv64@0.25.0':
1239 | optional: true
1240 |
1241 | '@esbuild/linux-s390x@0.25.0':
1242 | optional: true
1243 |
1244 | '@esbuild/linux-x64@0.25.0':
1245 | optional: true
1246 |
1247 | '@esbuild/netbsd-arm64@0.25.0':
1248 | optional: true
1249 |
1250 | '@esbuild/netbsd-x64@0.25.0':
1251 | optional: true
1252 |
1253 | '@esbuild/openbsd-arm64@0.25.0':
1254 | optional: true
1255 |
1256 | '@esbuild/openbsd-x64@0.25.0':
1257 | optional: true
1258 |
1259 | '@esbuild/sunos-x64@0.25.0':
1260 | optional: true
1261 |
1262 | '@esbuild/win32-arm64@0.25.0':
1263 | optional: true
1264 |
1265 | '@esbuild/win32-ia32@0.25.0':
1266 | optional: true
1267 |
1268 | '@esbuild/win32-x64@0.25.0':
1269 | optional: true
1270 |
1271 | '@jridgewell/sourcemap-codec@1.5.0': {}
1272 |
1273 | '@module-federation/error-codes@0.14.0': {}
1274 |
1275 | '@module-federation/error-codes@0.14.3': {}
1276 |
1277 | '@module-federation/runtime-core@0.14.0':
1278 | dependencies:
1279 | '@module-federation/error-codes': 0.14.0
1280 | '@module-federation/sdk': 0.14.0
1281 |
1282 | '@module-federation/runtime-core@0.14.3':
1283 | dependencies:
1284 | '@module-federation/error-codes': 0.14.3
1285 | '@module-federation/sdk': 0.14.3
1286 |
1287 | '@module-federation/runtime-tools@0.14.0':
1288 | dependencies:
1289 | '@module-federation/runtime': 0.14.0
1290 | '@module-federation/webpack-bundler-runtime': 0.14.0
1291 |
1292 | '@module-federation/runtime-tools@0.14.3':
1293 | dependencies:
1294 | '@module-federation/runtime': 0.14.3
1295 | '@module-federation/webpack-bundler-runtime': 0.14.3
1296 |
1297 | '@module-federation/runtime@0.14.0':
1298 | dependencies:
1299 | '@module-federation/error-codes': 0.14.0
1300 | '@module-federation/runtime-core': 0.14.0
1301 | '@module-federation/sdk': 0.14.0
1302 |
1303 | '@module-federation/runtime@0.14.3':
1304 | dependencies:
1305 | '@module-federation/error-codes': 0.14.3
1306 | '@module-federation/runtime-core': 0.14.3
1307 | '@module-federation/sdk': 0.14.3
1308 |
1309 | '@module-federation/sdk@0.14.0': {}
1310 |
1311 | '@module-federation/sdk@0.14.3': {}
1312 |
1313 | '@module-federation/webpack-bundler-runtime@0.14.0':
1314 | dependencies:
1315 | '@module-federation/runtime': 0.14.0
1316 | '@module-federation/sdk': 0.14.0
1317 |
1318 | '@module-federation/webpack-bundler-runtime@0.14.3':
1319 | dependencies:
1320 | '@module-federation/runtime': 0.14.3
1321 | '@module-federation/sdk': 0.14.3
1322 |
1323 | '@playwright/test@1.52.0':
1324 | dependencies:
1325 | playwright: 1.52.0
1326 |
1327 | '@rsbuild/core@1.3.22':
1328 | dependencies:
1329 | '@rspack/core': 1.3.12(@swc/helpers@0.5.17)
1330 | '@rspack/lite-tapable': 1.0.1
1331 | '@swc/helpers': 0.5.17
1332 | core-js: 3.42.0
1333 | jiti: 2.4.2
1334 |
1335 | '@rsbuild/core@1.4.0-beta.2':
1336 | dependencies:
1337 | '@rspack/core': 1.3.15(@swc/helpers@0.5.17)
1338 | '@rspack/lite-tapable': 1.0.1
1339 | '@swc/helpers': 0.5.17
1340 | core-js: 3.42.0
1341 | jiti: 2.4.2
1342 |
1343 | '@rslib/core@0.9.1(typescript@5.8.3)':
1344 | dependencies:
1345 | '@rsbuild/core': 1.3.22
1346 | rsbuild-plugin-dts: 0.9.1(@rsbuild/core@1.3.22)(typescript@5.8.3)
1347 | tinyglobby: 0.2.14
1348 | optionalDependencies:
1349 | typescript: 5.8.3
1350 |
1351 | '@rspack/binding-darwin-arm64@1.3.12':
1352 | optional: true
1353 |
1354 | '@rspack/binding-darwin-arm64@1.3.15':
1355 | optional: true
1356 |
1357 | '@rspack/binding-darwin-x64@1.3.12':
1358 | optional: true
1359 |
1360 | '@rspack/binding-darwin-x64@1.3.15':
1361 | optional: true
1362 |
1363 | '@rspack/binding-linux-arm64-gnu@1.3.12':
1364 | optional: true
1365 |
1366 | '@rspack/binding-linux-arm64-gnu@1.3.15':
1367 | optional: true
1368 |
1369 | '@rspack/binding-linux-arm64-musl@1.3.12':
1370 | optional: true
1371 |
1372 | '@rspack/binding-linux-arm64-musl@1.3.15':
1373 | optional: true
1374 |
1375 | '@rspack/binding-linux-x64-gnu@1.3.12':
1376 | optional: true
1377 |
1378 | '@rspack/binding-linux-x64-gnu@1.3.15':
1379 | optional: true
1380 |
1381 | '@rspack/binding-linux-x64-musl@1.3.12':
1382 | optional: true
1383 |
1384 | '@rspack/binding-linux-x64-musl@1.3.15':
1385 | optional: true
1386 |
1387 | '@rspack/binding-win32-arm64-msvc@1.3.12':
1388 | optional: true
1389 |
1390 | '@rspack/binding-win32-arm64-msvc@1.3.15':
1391 | optional: true
1392 |
1393 | '@rspack/binding-win32-ia32-msvc@1.3.12':
1394 | optional: true
1395 |
1396 | '@rspack/binding-win32-ia32-msvc@1.3.15':
1397 | optional: true
1398 |
1399 | '@rspack/binding-win32-x64-msvc@1.3.12':
1400 | optional: true
1401 |
1402 | '@rspack/binding-win32-x64-msvc@1.3.15':
1403 | optional: true
1404 |
1405 | '@rspack/binding@1.3.12':
1406 | optionalDependencies:
1407 | '@rspack/binding-darwin-arm64': 1.3.12
1408 | '@rspack/binding-darwin-x64': 1.3.12
1409 | '@rspack/binding-linux-arm64-gnu': 1.3.12
1410 | '@rspack/binding-linux-arm64-musl': 1.3.12
1411 | '@rspack/binding-linux-x64-gnu': 1.3.12
1412 | '@rspack/binding-linux-x64-musl': 1.3.12
1413 | '@rspack/binding-win32-arm64-msvc': 1.3.12
1414 | '@rspack/binding-win32-ia32-msvc': 1.3.12
1415 | '@rspack/binding-win32-x64-msvc': 1.3.12
1416 |
1417 | '@rspack/binding@1.3.15':
1418 | optionalDependencies:
1419 | '@rspack/binding-darwin-arm64': 1.3.15
1420 | '@rspack/binding-darwin-x64': 1.3.15
1421 | '@rspack/binding-linux-arm64-gnu': 1.3.15
1422 | '@rspack/binding-linux-arm64-musl': 1.3.15
1423 | '@rspack/binding-linux-x64-gnu': 1.3.15
1424 | '@rspack/binding-linux-x64-musl': 1.3.15
1425 | '@rspack/binding-win32-arm64-msvc': 1.3.15
1426 | '@rspack/binding-win32-ia32-msvc': 1.3.15
1427 | '@rspack/binding-win32-x64-msvc': 1.3.15
1428 |
1429 | '@rspack/core@1.3.12(@swc/helpers@0.5.17)':
1430 | dependencies:
1431 | '@module-federation/runtime-tools': 0.14.0
1432 | '@rspack/binding': 1.3.12
1433 | '@rspack/lite-tapable': 1.0.1
1434 | caniuse-lite: 1.0.30001720
1435 | optionalDependencies:
1436 | '@swc/helpers': 0.5.17
1437 |
1438 | '@rspack/core@1.3.15(@swc/helpers@0.5.17)':
1439 | dependencies:
1440 | '@module-federation/runtime-tools': 0.14.3
1441 | '@rspack/binding': 1.3.15
1442 | '@rspack/lite-tapable': 1.0.1
1443 | optionalDependencies:
1444 | '@swc/helpers': 0.5.17
1445 |
1446 | '@rspack/lite-tapable@1.0.1': {}
1447 |
1448 | '@rstest/core@https://pkg.pr.new/web-infra-dev/rstest/@rstest/core@1b40438':
1449 | dependencies:
1450 | '@rsbuild/core': 1.4.0-beta.2
1451 | '@types/chai': 5.2.2
1452 | '@vitest/expect': 3.2.3
1453 | '@vitest/snapshot': 3.2.3
1454 | birpc: 2.3.0
1455 | chai: 5.2.0
1456 | pathe: 2.0.3
1457 | std-env: 3.9.0
1458 | tinypool: 1.1.0
1459 |
1460 | '@swc/helpers@0.5.17':
1461 | dependencies:
1462 | tslib: 2.8.1
1463 |
1464 | '@types/chai@5.2.2':
1465 | dependencies:
1466 | '@types/deep-eql': 4.0.2
1467 |
1468 | '@types/deep-eql@4.0.2': {}
1469 |
1470 | '@types/node@22.15.29':
1471 | dependencies:
1472 | undici-types: 6.21.0
1473 |
1474 | '@vitest/expect@3.2.3':
1475 | dependencies:
1476 | '@types/chai': 5.2.2
1477 | '@vitest/spy': 3.2.3
1478 | '@vitest/utils': 3.2.3
1479 | chai: 5.2.0
1480 | tinyrainbow: 2.0.0
1481 |
1482 | '@vitest/pretty-format@3.2.3':
1483 | dependencies:
1484 | tinyrainbow: 2.0.0
1485 |
1486 | '@vitest/snapshot@3.2.3':
1487 | dependencies:
1488 | '@vitest/pretty-format': 3.2.3
1489 | magic-string: 0.30.17
1490 | pathe: 2.0.3
1491 |
1492 | '@vitest/spy@3.2.3':
1493 | dependencies:
1494 | tinyspy: 4.0.3
1495 |
1496 | '@vitest/utils@3.2.3':
1497 | dependencies:
1498 | '@vitest/pretty-format': 3.2.3
1499 | loupe: 3.1.3
1500 | tinyrainbow: 2.0.0
1501 |
1502 | abort-controller@3.0.0:
1503 | dependencies:
1504 | event-target-shim: 5.0.1
1505 |
1506 | asn1.js@4.10.1:
1507 | dependencies:
1508 | bn.js: 4.12.0
1509 | inherits: 2.0.4
1510 | minimalistic-assert: 1.0.1
1511 |
1512 | assert@2.1.0:
1513 | dependencies:
1514 | call-bind: 1.0.7
1515 | is-nan: 1.3.2
1516 | object-is: 1.1.6
1517 | object.assign: 4.1.5
1518 | util: 0.12.5
1519 |
1520 | assertion-error@2.0.1: {}
1521 |
1522 | available-typed-arrays@1.0.7:
1523 | dependencies:
1524 | possible-typed-array-names: 1.0.0
1525 |
1526 | base64-js@1.5.1: {}
1527 |
1528 | birpc@2.3.0: {}
1529 |
1530 | bn.js@4.12.0: {}
1531 |
1532 | bn.js@5.2.1: {}
1533 |
1534 | brorand@1.1.0: {}
1535 |
1536 | browserify-aes@1.2.0:
1537 | dependencies:
1538 | buffer-xor: 1.0.3
1539 | cipher-base: 1.0.4
1540 | create-hash: 1.2.0
1541 | evp_bytestokey: 1.0.3
1542 | inherits: 2.0.4
1543 | safe-buffer: 5.2.1
1544 |
1545 | browserify-cipher@1.0.1:
1546 | dependencies:
1547 | browserify-aes: 1.2.0
1548 | browserify-des: 1.0.2
1549 | evp_bytestokey: 1.0.3
1550 |
1551 | browserify-des@1.0.2:
1552 | dependencies:
1553 | cipher-base: 1.0.4
1554 | des.js: 1.1.0
1555 | inherits: 2.0.4
1556 | safe-buffer: 5.2.1
1557 |
1558 | browserify-rsa@4.1.0:
1559 | dependencies:
1560 | bn.js: 5.2.1
1561 | randombytes: 2.1.0
1562 |
1563 | browserify-sign@4.2.3:
1564 | dependencies:
1565 | bn.js: 5.2.1
1566 | browserify-rsa: 4.1.0
1567 | create-hash: 1.2.0
1568 | create-hmac: 1.1.7
1569 | elliptic: 6.5.5
1570 | hash-base: 3.0.4
1571 | inherits: 2.0.4
1572 | parse-asn1: 5.1.7
1573 | readable-stream: 2.3.8
1574 | safe-buffer: 5.2.1
1575 |
1576 | browserify-zlib@0.2.0:
1577 | dependencies:
1578 | pako: 1.0.11
1579 |
1580 | buffer-xor@1.0.3: {}
1581 |
1582 | buffer@5.7.1:
1583 | dependencies:
1584 | base64-js: 1.5.1
1585 | ieee754: 1.2.1
1586 |
1587 | buffer@6.0.3:
1588 | dependencies:
1589 | base64-js: 1.5.1
1590 | ieee754: 1.2.1
1591 |
1592 | builtin-status-codes@3.0.0: {}
1593 |
1594 | call-bind@1.0.7:
1595 | dependencies:
1596 | es-define-property: 1.0.0
1597 | es-errors: 1.3.0
1598 | function-bind: 1.1.2
1599 | get-intrinsic: 1.2.4
1600 | set-function-length: 1.2.2
1601 |
1602 | caniuse-lite@1.0.30001720: {}
1603 |
1604 | chai@5.2.0:
1605 | dependencies:
1606 | assertion-error: 2.0.1
1607 | check-error: 2.1.1
1608 | deep-eql: 5.0.2
1609 | loupe: 3.1.3
1610 | pathval: 2.0.0
1611 |
1612 | check-error@2.1.1: {}
1613 |
1614 | cipher-base@1.0.4:
1615 | dependencies:
1616 | inherits: 2.0.4
1617 | safe-buffer: 5.2.1
1618 |
1619 | console-browserify@1.2.0: {}
1620 |
1621 | constants-browserify@1.0.0: {}
1622 |
1623 | core-js@3.42.0: {}
1624 |
1625 | core-util-is@1.0.3: {}
1626 |
1627 | create-ecdh@4.0.4:
1628 | dependencies:
1629 | bn.js: 4.12.0
1630 | elliptic: 6.5.5
1631 |
1632 | create-hash@1.2.0:
1633 | dependencies:
1634 | cipher-base: 1.0.4
1635 | inherits: 2.0.4
1636 | md5.js: 1.3.5
1637 | ripemd160: 2.0.2
1638 | sha.js: 2.4.11
1639 |
1640 | create-hmac@1.1.7:
1641 | dependencies:
1642 | cipher-base: 1.0.4
1643 | create-hash: 1.2.0
1644 | inherits: 2.0.4
1645 | ripemd160: 2.0.2
1646 | safe-buffer: 5.2.1
1647 | sha.js: 2.4.11
1648 |
1649 | crypto-browserify@3.12.1:
1650 | dependencies:
1651 | browserify-cipher: 1.0.1
1652 | browserify-sign: 4.2.3
1653 | create-ecdh: 4.0.4
1654 | create-hash: 1.2.0
1655 | create-hmac: 1.1.7
1656 | diffie-hellman: 5.0.3
1657 | hash-base: 3.0.4
1658 | inherits: 2.0.4
1659 | pbkdf2: 3.1.2
1660 | public-encrypt: 4.0.3
1661 | randombytes: 2.1.0
1662 | randomfill: 1.0.4
1663 |
1664 | deep-eql@5.0.2: {}
1665 |
1666 | define-data-property@1.1.4:
1667 | dependencies:
1668 | es-define-property: 1.0.0
1669 | es-errors: 1.3.0
1670 | gopd: 1.0.1
1671 |
1672 | define-properties@1.2.1:
1673 | dependencies:
1674 | define-data-property: 1.1.4
1675 | has-property-descriptors: 1.0.2
1676 | object-keys: 1.1.1
1677 |
1678 | des.js@1.1.0:
1679 | dependencies:
1680 | inherits: 2.0.4
1681 | minimalistic-assert: 1.0.1
1682 |
1683 | diffie-hellman@5.0.3:
1684 | dependencies:
1685 | bn.js: 4.12.0
1686 | miller-rabin: 4.0.1
1687 | randombytes: 2.1.0
1688 |
1689 | domain-browser@5.7.0: {}
1690 |
1691 | elliptic@6.5.5:
1692 | dependencies:
1693 | bn.js: 4.12.0
1694 | brorand: 1.1.0
1695 | hash.js: 1.1.7
1696 | hmac-drbg: 1.0.1
1697 | inherits: 2.0.4
1698 | minimalistic-assert: 1.0.1
1699 | minimalistic-crypto-utils: 1.0.1
1700 |
1701 | es-define-property@1.0.0:
1702 | dependencies:
1703 | get-intrinsic: 1.2.4
1704 |
1705 | es-errors@1.3.0: {}
1706 |
1707 | esbuild@0.25.0:
1708 | optionalDependencies:
1709 | '@esbuild/aix-ppc64': 0.25.0
1710 | '@esbuild/android-arm': 0.25.0
1711 | '@esbuild/android-arm64': 0.25.0
1712 | '@esbuild/android-x64': 0.25.0
1713 | '@esbuild/darwin-arm64': 0.25.0
1714 | '@esbuild/darwin-x64': 0.25.0
1715 | '@esbuild/freebsd-arm64': 0.25.0
1716 | '@esbuild/freebsd-x64': 0.25.0
1717 | '@esbuild/linux-arm': 0.25.0
1718 | '@esbuild/linux-arm64': 0.25.0
1719 | '@esbuild/linux-ia32': 0.25.0
1720 | '@esbuild/linux-loong64': 0.25.0
1721 | '@esbuild/linux-mips64el': 0.25.0
1722 | '@esbuild/linux-ppc64': 0.25.0
1723 | '@esbuild/linux-riscv64': 0.25.0
1724 | '@esbuild/linux-s390x': 0.25.0
1725 | '@esbuild/linux-x64': 0.25.0
1726 | '@esbuild/netbsd-arm64': 0.25.0
1727 | '@esbuild/netbsd-x64': 0.25.0
1728 | '@esbuild/openbsd-arm64': 0.25.0
1729 | '@esbuild/openbsd-x64': 0.25.0
1730 | '@esbuild/sunos-x64': 0.25.0
1731 | '@esbuild/win32-arm64': 0.25.0
1732 | '@esbuild/win32-ia32': 0.25.0
1733 | '@esbuild/win32-x64': 0.25.0
1734 |
1735 | event-target-shim@5.0.1: {}
1736 |
1737 | events@3.3.0: {}
1738 |
1739 | evp_bytestokey@1.0.3:
1740 | dependencies:
1741 | md5.js: 1.3.5
1742 | safe-buffer: 5.2.1
1743 |
1744 | fdir@6.4.4(picomatch@4.0.2):
1745 | optionalDependencies:
1746 | picomatch: 4.0.2
1747 |
1748 | for-each@0.3.3:
1749 | dependencies:
1750 | is-callable: 1.2.7
1751 |
1752 | fsevents@2.3.2:
1753 | optional: true
1754 |
1755 | fsevents@2.3.3:
1756 | optional: true
1757 |
1758 | function-bind@1.1.2: {}
1759 |
1760 | get-intrinsic@1.2.4:
1761 | dependencies:
1762 | es-errors: 1.3.0
1763 | function-bind: 1.1.2
1764 | has-proto: 1.0.3
1765 | has-symbols: 1.0.3
1766 | hasown: 2.0.2
1767 |
1768 | get-tsconfig@4.10.0:
1769 | dependencies:
1770 | resolve-pkg-maps: 1.0.0
1771 |
1772 | gopd@1.0.1:
1773 | dependencies:
1774 | get-intrinsic: 1.2.4
1775 |
1776 | has-property-descriptors@1.0.2:
1777 | dependencies:
1778 | es-define-property: 1.0.0
1779 |
1780 | has-proto@1.0.3: {}
1781 |
1782 | has-symbols@1.0.3: {}
1783 |
1784 | has-tostringtag@1.0.2:
1785 | dependencies:
1786 | has-symbols: 1.0.3
1787 |
1788 | hash-base@3.0.4:
1789 | dependencies:
1790 | inherits: 2.0.4
1791 | safe-buffer: 5.2.1
1792 |
1793 | hash-base@3.1.0:
1794 | dependencies:
1795 | inherits: 2.0.4
1796 | readable-stream: 3.6.2
1797 | safe-buffer: 5.2.1
1798 |
1799 | hash.js@1.1.7:
1800 | dependencies:
1801 | inherits: 2.0.4
1802 | minimalistic-assert: 1.0.1
1803 |
1804 | hasown@2.0.2:
1805 | dependencies:
1806 | function-bind: 1.1.2
1807 |
1808 | hmac-drbg@1.0.1:
1809 | dependencies:
1810 | hash.js: 1.1.7
1811 | minimalistic-assert: 1.0.1
1812 | minimalistic-crypto-utils: 1.0.1
1813 |
1814 | https-browserify@1.0.0: {}
1815 |
1816 | ieee754@1.2.1: {}
1817 |
1818 | inherits@2.0.4: {}
1819 |
1820 | is-arguments@1.1.1:
1821 | dependencies:
1822 | call-bind: 1.0.7
1823 | has-tostringtag: 1.0.2
1824 |
1825 | is-callable@1.2.7: {}
1826 |
1827 | is-generator-function@1.0.10:
1828 | dependencies:
1829 | has-tostringtag: 1.0.2
1830 |
1831 | is-nan@1.3.2:
1832 | dependencies:
1833 | call-bind: 1.0.7
1834 | define-properties: 1.2.1
1835 |
1836 | is-typed-array@1.1.13:
1837 | dependencies:
1838 | which-typed-array: 1.1.15
1839 |
1840 | isarray@1.0.0: {}
1841 |
1842 | jiti@2.4.2: {}
1843 |
1844 | json5@2.2.3: {}
1845 |
1846 | loupe@3.1.3: {}
1847 |
1848 | magic-string@0.30.17:
1849 | dependencies:
1850 | '@jridgewell/sourcemap-codec': 1.5.0
1851 |
1852 | md5.js@1.3.5:
1853 | dependencies:
1854 | hash-base: 3.1.0
1855 | inherits: 2.0.4
1856 | safe-buffer: 5.2.1
1857 |
1858 | miller-rabin@4.0.1:
1859 | dependencies:
1860 | bn.js: 4.12.0
1861 | brorand: 1.1.0
1862 |
1863 | minimalistic-assert@1.0.1: {}
1864 |
1865 | minimalistic-crypto-utils@1.0.1: {}
1866 |
1867 | minimist@1.2.8: {}
1868 |
1869 | nano-staged@0.8.0:
1870 | dependencies:
1871 | picocolors: 1.0.0
1872 |
1873 | object-inspect@1.13.2: {}
1874 |
1875 | object-is@1.1.6:
1876 | dependencies:
1877 | call-bind: 1.0.7
1878 | define-properties: 1.2.1
1879 |
1880 | object-keys@1.1.1: {}
1881 |
1882 | object.assign@4.1.5:
1883 | dependencies:
1884 | call-bind: 1.0.7
1885 | define-properties: 1.2.1
1886 | has-symbols: 1.0.3
1887 | object-keys: 1.1.1
1888 |
1889 | os-browserify@0.3.0: {}
1890 |
1891 | pako@1.0.11: {}
1892 |
1893 | parse-asn1@5.1.7:
1894 | dependencies:
1895 | asn1.js: 4.10.1
1896 | browserify-aes: 1.2.0
1897 | evp_bytestokey: 1.0.3
1898 | hash-base: 3.0.4
1899 | pbkdf2: 3.1.2
1900 | safe-buffer: 5.2.1
1901 |
1902 | path-browserify@1.0.1: {}
1903 |
1904 | pathe@2.0.3: {}
1905 |
1906 | pathval@2.0.0: {}
1907 |
1908 | pbkdf2@3.1.2:
1909 | dependencies:
1910 | create-hash: 1.2.0
1911 | create-hmac: 1.1.7
1912 | ripemd160: 2.0.2
1913 | safe-buffer: 5.2.1
1914 | sha.js: 2.4.11
1915 |
1916 | picocolors@1.0.0: {}
1917 |
1918 | picocolors@1.1.1: {}
1919 |
1920 | picomatch@4.0.2: {}
1921 |
1922 | playwright-core@1.52.0: {}
1923 |
1924 | playwright@1.52.0:
1925 | dependencies:
1926 | playwright-core: 1.52.0
1927 | optionalDependencies:
1928 | fsevents: 2.3.2
1929 |
1930 | possible-typed-array-names@1.0.0: {}
1931 |
1932 | process-nextick-args@2.0.1: {}
1933 |
1934 | process@0.11.10: {}
1935 |
1936 | public-encrypt@4.0.3:
1937 | dependencies:
1938 | bn.js: 4.12.0
1939 | browserify-rsa: 4.1.0
1940 | create-hash: 1.2.0
1941 | parse-asn1: 5.1.7
1942 | randombytes: 2.1.0
1943 | safe-buffer: 5.2.1
1944 |
1945 | punycode@1.4.1: {}
1946 |
1947 | punycode@2.3.1: {}
1948 |
1949 | qs@6.13.0:
1950 | dependencies:
1951 | side-channel: 1.0.6
1952 |
1953 | querystring-es3@0.2.1: {}
1954 |
1955 | randombytes@2.1.0:
1956 | dependencies:
1957 | safe-buffer: 5.2.1
1958 |
1959 | randomfill@1.0.4:
1960 | dependencies:
1961 | randombytes: 2.1.0
1962 | safe-buffer: 5.2.1
1963 |
1964 | readable-stream@2.3.8:
1965 | dependencies:
1966 | core-util-is: 1.0.3
1967 | inherits: 2.0.4
1968 | isarray: 1.0.0
1969 | process-nextick-args: 2.0.1
1970 | safe-buffer: 5.1.2
1971 | string_decoder: 1.1.1
1972 | util-deprecate: 1.0.2
1973 |
1974 | readable-stream@3.6.2:
1975 | dependencies:
1976 | inherits: 2.0.4
1977 | string_decoder: 1.3.0
1978 | util-deprecate: 1.0.2
1979 |
1980 | readable-stream@4.7.0:
1981 | dependencies:
1982 | abort-controller: 3.0.0
1983 | buffer: 6.0.3
1984 | events: 3.3.0
1985 | process: 0.11.10
1986 | string_decoder: 1.3.0
1987 |
1988 | resolve-pkg-maps@1.0.0: {}
1989 |
1990 | ripemd160@2.0.2:
1991 | dependencies:
1992 | hash-base: 3.1.0
1993 | inherits: 2.0.4
1994 |
1995 | rsbuild-plugin-dts@0.9.1(@rsbuild/core@1.3.22)(typescript@5.8.3):
1996 | dependencies:
1997 | '@ast-grep/napi': 0.37.0
1998 | '@rsbuild/core': 1.3.22
1999 | magic-string: 0.30.17
2000 | picocolors: 1.1.1
2001 | tinyglobby: 0.2.14
2002 | tsconfig-paths: 4.2.0
2003 | optionalDependencies:
2004 | typescript: 5.8.3
2005 |
2006 | safe-buffer@5.1.2: {}
2007 |
2008 | safe-buffer@5.2.1: {}
2009 |
2010 | set-function-length@1.2.2:
2011 | dependencies:
2012 | define-data-property: 1.1.4
2013 | es-errors: 1.3.0
2014 | function-bind: 1.1.2
2015 | get-intrinsic: 1.2.4
2016 | gopd: 1.0.1
2017 | has-property-descriptors: 1.0.2
2018 |
2019 | setimmediate@1.0.5: {}
2020 |
2021 | sha.js@2.4.11:
2022 | dependencies:
2023 | inherits: 2.0.4
2024 | safe-buffer: 5.2.1
2025 |
2026 | side-channel@1.0.6:
2027 | dependencies:
2028 | call-bind: 1.0.7
2029 | es-errors: 1.3.0
2030 | get-intrinsic: 1.2.4
2031 | object-inspect: 1.13.2
2032 |
2033 | simple-git-hooks@2.13.0: {}
2034 |
2035 | std-env@3.9.0: {}
2036 |
2037 | stream-browserify@3.0.0:
2038 | dependencies:
2039 | inherits: 2.0.4
2040 | readable-stream: 3.6.2
2041 |
2042 | stream-http@3.2.0:
2043 | dependencies:
2044 | builtin-status-codes: 3.0.0
2045 | inherits: 2.0.4
2046 | readable-stream: 3.6.2
2047 | xtend: 4.0.2
2048 |
2049 | string_decoder@1.1.1:
2050 | dependencies:
2051 | safe-buffer: 5.1.2
2052 |
2053 | string_decoder@1.3.0:
2054 | dependencies:
2055 | safe-buffer: 5.2.1
2056 |
2057 | strip-bom@3.0.0: {}
2058 |
2059 | timers-browserify@2.0.12:
2060 | dependencies:
2061 | setimmediate: 1.0.5
2062 |
2063 | tinyglobby@0.2.14:
2064 | dependencies:
2065 | fdir: 6.4.4(picomatch@4.0.2)
2066 | picomatch: 4.0.2
2067 |
2068 | tinypool@1.1.0: {}
2069 |
2070 | tinyrainbow@2.0.0: {}
2071 |
2072 | tinyspy@4.0.3: {}
2073 |
2074 | tsconfig-paths@4.2.0:
2075 | dependencies:
2076 | json5: 2.2.3
2077 | minimist: 1.2.8
2078 | strip-bom: 3.0.0
2079 |
2080 | tslib@2.8.1: {}
2081 |
2082 | tsx@4.19.4:
2083 | dependencies:
2084 | esbuild: 0.25.0
2085 | get-tsconfig: 4.10.0
2086 | optionalDependencies:
2087 | fsevents: 2.3.3
2088 |
2089 | tty-browserify@0.0.1: {}
2090 |
2091 | typescript@5.8.3: {}
2092 |
2093 | undici-types@6.21.0: {}
2094 |
2095 | url@0.11.4:
2096 | dependencies:
2097 | punycode: 1.4.1
2098 | qs: 6.13.0
2099 |
2100 | util-deprecate@1.0.2: {}
2101 |
2102 | util@0.12.5:
2103 | dependencies:
2104 | inherits: 2.0.4
2105 | is-arguments: 1.1.1
2106 | is-generator-function: 1.0.10
2107 | is-typed-array: 1.1.13
2108 | which-typed-array: 1.1.15
2109 |
2110 | vm-browserify@1.1.2: {}
2111 |
2112 | which-typed-array@1.1.15:
2113 | dependencies:
2114 | available-typed-arrays: 1.0.7
2115 | call-bind: 1.0.7
2116 | for-each: 0.3.3
2117 | gopd: 1.0.1
2118 | has-tostringtag: 1.0.2
2119 |
2120 | xtend@4.0.2: {}
2121 |
--------------------------------------------------------------------------------
/rslib.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from '@rslib/core';
2 |
3 | export default defineConfig({
4 | lib: [
5 | { format: 'esm', syntax: 'es2021', dts: true },
6 | { format: 'cjs', syntax: 'es2021' },
7 | ],
8 | });
9 |
--------------------------------------------------------------------------------
/rstest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from '@rstest/core';
2 |
3 | export default defineConfig({
4 | include: ['test/unit/**/*.test.ts'],
5 | });
6 |
--------------------------------------------------------------------------------
/src/ProtocolImportsPlugin.ts:
--------------------------------------------------------------------------------
1 | import type { Rspack } from '@rsbuild/core';
2 |
3 | export class ProtocolImportsPlugin {
4 | apply(compiler: Rspack.Compiler): void {
5 | compiler.hooks.normalModuleFactory.tap(
6 | 'NormalModuleReplacementPlugin',
7 | (nmf) => {
8 | nmf.hooks.beforeResolve.tap(
9 | 'NormalModuleReplacementPlugin',
10 | (resource) => {
11 | // Remove the `node:` prefix
12 | // see: https://github.com/webpack/webpack/issues/14166
13 | if (/^node:/.test(resource.request)) {
14 | resource.request = resource.request.replace(/^node:/, '');
15 | }
16 | },
17 | );
18 | },
19 | );
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import type { RsbuildPlugin } from '@rsbuild/core';
2 | import { ProtocolImportsPlugin } from './ProtocolImportsPlugin.js';
3 | import { builtinMappingResolved } from './libs.js';
4 |
5 | type Globals = {
6 | process?: boolean;
7 | Buffer?: boolean;
8 | };
9 |
10 | export type PluginNodePolyfillOptions = {
11 | /**
12 | * Whether to provide polyfill of globals.
13 | * @default
14 | * {
15 | * Buffer: true,
16 | * process: true,
17 | * }
18 | */
19 | globals?: Globals;
20 | /**
21 | * Whether to polyfill Node.js builtin modules starting with `node:`.
22 | * @see https://nodejs.org/api/esm.html#node-imports
23 | * @default true
24 | */
25 | protocolImports?: boolean;
26 | /**
27 | * Exclude certain modules to be polyfilled.
28 | * This option is mutually exclusive with {@link PluginNodePolyfillOptions.include | `include`}.
29 | * @default undefined
30 | */
31 | exclude?: string[];
32 | /**
33 | * Only include certain modules to be polyfilled.
34 | * This option is mutually exclusive with {@link PluginNodePolyfillOptions.exclude | `exclude`}.
35 | * @default undefined
36 | */
37 | include?: string[];
38 | /**
39 | * Override the default polyfills for specific modules.
40 | * @default undefined
41 | */
42 | overrides?: Record;
43 | /**
44 | * By default, the plugin only polyfills the browser-side code.
45 | * If you want to polyfill the server-side code as well (when `output.target` is `node`),
46 | * you can set the `force` option to `true`.
47 | * @default false
48 | */
49 | force?: boolean;
50 | };
51 |
52 | export const resolvePolyfill = (
53 | libPath: string,
54 | overrides?: PluginNodePolyfillOptions['overrides'],
55 | ) => {
56 | if (overrides?.[libPath] !== undefined) {
57 | return overrides[libPath];
58 | }
59 |
60 | return builtinMappingResolved[libPath as keyof typeof builtinMappingResolved];
61 | };
62 |
63 | export const getResolveFallback = ({
64 | protocolImports,
65 | exclude,
66 | include,
67 | overrides,
68 | }: Pick<
69 | PluginNodePolyfillOptions,
70 | 'protocolImports' | 'exclude' | 'include' | 'overrides'
71 | >) => {
72 | if (exclude && include) {
73 | throw new Error('`include` is mutually exclusive with `exclude`.');
74 | }
75 |
76 | const resolvedNodeLibs = include
77 | ? include
78 | : Object.keys(builtinMappingResolved).filter((name) => {
79 | return !(exclude || []).includes(name);
80 | });
81 |
82 | const fallback: Record = {};
83 |
84 | for (const name of resolvedNodeLibs) {
85 | const libPath = resolvePolyfill(name, overrides);
86 | fallback[name] = libPath ?? false;
87 |
88 | if (protocolImports) {
89 | fallback[`node:${name}`] = fallback[name];
90 | }
91 | }
92 |
93 | return fallback;
94 | };
95 |
96 | export const getProvideGlobals = async (
97 | globals?: Globals,
98 | overrides?: PluginNodePolyfillOptions['overrides'],
99 | ) => {
100 | const result: Record = {};
101 |
102 | if (globals?.Buffer !== false) {
103 | result.Buffer = [resolvePolyfill('buffer', overrides) as string, 'Buffer'];
104 | }
105 | if (globals?.process !== false) {
106 | result.process = [resolvePolyfill('process', overrides) as string];
107 | }
108 |
109 | return result;
110 | };
111 |
112 | export const PLUGIN_NODE_POLYFILL_NAME = 'rsbuild:node-polyfill';
113 |
114 | export function pluginNodePolyfill(
115 | options: PluginNodePolyfillOptions = {},
116 | ): RsbuildPlugin {
117 | const {
118 | protocolImports = true,
119 | include,
120 | exclude,
121 | overrides,
122 | force = false,
123 | } = options;
124 |
125 | return {
126 | name: PLUGIN_NODE_POLYFILL_NAME,
127 |
128 | setup(api) {
129 | api.modifyBundlerChain(async (chain, { isServer, bundler }) => {
130 | // The server bundle does not require node polyfill
131 | if (isServer && !force) {
132 | return;
133 | }
134 |
135 | // module polyfill
136 | chain.resolve.fallback.merge(
137 | getResolveFallback({
138 | protocolImports,
139 | include: include,
140 | exclude,
141 | overrides,
142 | }),
143 | );
144 |
145 | const provideGlobals = await getProvideGlobals(
146 | options.globals,
147 | overrides,
148 | );
149 |
150 | if (Object.keys(provideGlobals).length) {
151 | chain
152 | .plugin('node-polyfill-provide')
153 | .use(bundler.ProvidePlugin, [provideGlobals]);
154 | }
155 |
156 | if (protocolImports) {
157 | chain.plugin('protocol-imports').use(ProtocolImportsPlugin);
158 | }
159 | });
160 | },
161 | };
162 | }
163 |
164 | export {
165 | builtinMappingResolved,
166 | resolvedPolyfillToModules,
167 | } from './libs.js';
168 |
--------------------------------------------------------------------------------
/src/libs.ts:
--------------------------------------------------------------------------------
1 | import { createRequire } from 'node:module';
2 |
3 | const require = createRequire(import.meta.url);
4 |
5 | export const builtinMappingResolved = {
6 | assert: require.resolve('assert/'),
7 | buffer: require.resolve('buffer/'),
8 | child_process: null,
9 | cluster: null,
10 | console: require.resolve('console-browserify'),
11 | constants: require.resolve('constants-browserify'),
12 | crypto: require.resolve('crypto-browserify'),
13 | dgram: null,
14 | dns: null,
15 | domain: require.resolve('domain-browser'),
16 | events: require.resolve('events/'),
17 | fs: null,
18 | http: require.resolve('stream-http'),
19 | https: require.resolve('https-browserify'),
20 | module: null,
21 | net: null,
22 | os: require.resolve('os-browserify/browser.js'),
23 | path: require.resolve('path-browserify'),
24 | punycode: require.resolve('punycode/'),
25 | process: require.resolve('process/browser.js'),
26 | querystring: require.resolve('querystring-es3/'),
27 | readline: null,
28 | repl: null,
29 | stream: require.resolve('stream-browserify'),
30 | _stream_duplex: require.resolve('readable-stream/lib/_stream_duplex.js'),
31 | _stream_passthrough: require.resolve(
32 | 'readable-stream/lib/_stream_passthrough.js',
33 | ),
34 | _stream_readable: require.resolve('readable-stream/lib/_stream_readable.js'),
35 | _stream_transform: require.resolve(
36 | 'readable-stream/lib/_stream_transform.js',
37 | ),
38 | _stream_writable: require.resolve('readable-stream/lib/_stream_writable.js'),
39 | string_decoder: require.resolve('string_decoder/'),
40 | sys: require.resolve('util/util.js'),
41 | timers: require.resolve('timers-browserify'),
42 | tls: null,
43 | tty: require.resolve('tty-browserify'),
44 | url: require.resolve('url/'),
45 | util: require.resolve('util/util.js'),
46 | vm: require.resolve('vm-browserify'),
47 | zlib: require.resolve('browserify-zlib'),
48 | } as const;
49 |
50 | export const resolvedPolyfillToModules = Object.fromEntries(
51 | Object.entries(builtinMappingResolved)
52 | .filter(([key]) => key !== null)
53 | .map(([key, value]) => [value, key]),
54 | );
55 |
--------------------------------------------------------------------------------
/test/e2e/index.test.ts:
--------------------------------------------------------------------------------
1 | import { dirname } from 'node:path';
2 | import { fileURLToPath } from 'node:url';
3 | import { expect, test } from '@playwright/test';
4 | import { loadConfig } from '@rsbuild/core';
5 | import { createRsbuild } from '@rsbuild/core';
6 |
7 | const __dirname = dirname(fileURLToPath(import.meta.url));
8 |
9 | test('should add node-polyfill when add node-polyfill plugin', async ({
10 | page,
11 | }) => {
12 | const rsbuild = await createRsbuild({
13 | cwd: __dirname,
14 | rsbuildConfig: (await loadConfig({ cwd: __dirname })).content,
15 | });
16 |
17 | const { server, urls } = await rsbuild.startDevServer();
18 |
19 | await page.goto(urls[0]);
20 |
21 | const test = page.locator('#test');
22 | await expect(test).toHaveText('Hello Rsbuild!');
23 |
24 | const testBuffer = page.locator('#test-buffer');
25 | await expect(testBuffer).toHaveText('979899');
26 |
27 | const testQueryString = page.locator('#test-querystring');
28 | await expect(testQueryString).toHaveText('foo=bar');
29 |
30 | await server.close();
31 | });
32 |
--------------------------------------------------------------------------------
/test/e2e/rsbuild.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from '@rsbuild/core';
2 | import { pluginNodePolyfill } from '@rsbuild/plugin-node-polyfill';
3 |
4 | export default defineConfig({
5 | plugins: [pluginNodePolyfill()],
6 | });
7 |
--------------------------------------------------------------------------------
/test/e2e/src/index.js:
--------------------------------------------------------------------------------
1 | import path from 'node:path';
2 | // biome-ignore lint: test non-import protocol
3 | import querystring from 'querystring';
4 |
5 | const bufferData = Buffer.from('abc');
6 |
7 | const qsRes = querystring.stringify({
8 | foo: 'bar',
9 | });
10 |
11 | document.querySelector('#root').innerHTML = `
12 |
13 |
${bufferData.join('')}
14 |
${qsRes}
15 |
${path.join('foo', 'bar')}
16 |
Hello Rsbuild!
17 |
18 | `;
19 |
--------------------------------------------------------------------------------
/test/unit/index.test.ts:
--------------------------------------------------------------------------------
1 | import { assert, test } from '@rstest/core';
2 | import {
3 | builtinMappingResolved,
4 | getResolveFallback,
5 | resolvePolyfill,
6 | } from '../../src/index';
7 |
8 | test('resolvePolyfill', async () => {
9 | assert.equal(resolvePolyfill('fs', { fs: 'memfs' }), 'memfs');
10 | assert.equal(resolvePolyfill('fs'), null);
11 | assert.equal(resolvePolyfill('buffer'), builtinMappingResolved.buffer);
12 | });
13 |
14 | test('getResolveFallback', async () => {
15 | const defaultFallback = getResolveFallback({});
16 | const withProtocolImportsFallback = getResolveFallback({
17 | protocolImports: true,
18 | });
19 |
20 | assert.deepEqual(Object.keys(defaultFallback), [
21 | 'assert',
22 | 'buffer',
23 | 'child_process',
24 | 'cluster',
25 | 'console',
26 | 'constants',
27 | 'crypto',
28 | 'dgram',
29 | 'dns',
30 | 'domain',
31 | 'events',
32 | 'fs',
33 | 'http',
34 | 'https',
35 | 'module',
36 | 'net',
37 | 'os',
38 | 'path',
39 | 'punycode',
40 | 'process',
41 | 'querystring',
42 | 'readline',
43 | 'repl',
44 | 'stream',
45 | '_stream_duplex',
46 | '_stream_passthrough',
47 | '_stream_readable',
48 | '_stream_transform',
49 | '_stream_writable',
50 | 'string_decoder',
51 | 'sys',
52 | 'timers',
53 | 'tls',
54 | 'tty',
55 | 'url',
56 | 'util',
57 | 'vm',
58 | 'zlib',
59 | ]);
60 |
61 | assert.deepEqual(Object.keys(withProtocolImportsFallback), [
62 | 'assert',
63 | 'node:assert',
64 | 'buffer',
65 | 'node:buffer',
66 | 'child_process',
67 | 'node:child_process',
68 | 'cluster',
69 | 'node:cluster',
70 | 'console',
71 | 'node:console',
72 | 'constants',
73 | 'node:constants',
74 | 'crypto',
75 | 'node:crypto',
76 | 'dgram',
77 | 'node:dgram',
78 | 'dns',
79 | 'node:dns',
80 | 'domain',
81 | 'node:domain',
82 | 'events',
83 | 'node:events',
84 | 'fs',
85 | 'node:fs',
86 | 'http',
87 | 'node:http',
88 | 'https',
89 | 'node:https',
90 | 'module',
91 | 'node:module',
92 | 'net',
93 | 'node:net',
94 | 'os',
95 | 'node:os',
96 | 'path',
97 | 'node:path',
98 | 'punycode',
99 | 'node:punycode',
100 | 'process',
101 | 'node:process',
102 | 'querystring',
103 | 'node:querystring',
104 | 'readline',
105 | 'node:readline',
106 | 'repl',
107 | 'node:repl',
108 | 'stream',
109 | 'node:stream',
110 | '_stream_duplex',
111 | 'node:_stream_duplex',
112 | '_stream_passthrough',
113 | 'node:_stream_passthrough',
114 | '_stream_readable',
115 | 'node:_stream_readable',
116 | '_stream_transform',
117 | 'node:_stream_transform',
118 | '_stream_writable',
119 | 'node:_stream_writable',
120 | 'string_decoder',
121 | 'node:string_decoder',
122 | 'sys',
123 | 'node:sys',
124 | 'timers',
125 | 'node:timers',
126 | 'tls',
127 | 'node:tls',
128 | 'tty',
129 | 'node:tty',
130 | 'url',
131 | 'node:url',
132 | 'util',
133 | 'node:util',
134 | 'vm',
135 | 'node:vm',
136 | 'zlib',
137 | 'node:zlib',
138 | ]);
139 |
140 | assert.equal(
141 | Object.keys(withProtocolImportsFallback).length,
142 | Object.keys(defaultFallback).length * 2,
143 | );
144 |
145 | const excludeFs = getResolveFallback({ exclude: ['fs'] });
146 | assert.deepEqual(
147 | Object.keys(defaultFallback).filter(
148 | (k) => !Object.keys(excludeFs).includes(k),
149 | ),
150 | ['fs'],
151 | );
152 |
153 | assert.ok(
154 | !Object.keys(getResolveFallback({ exclude: ['fs'] })).includes('fs'),
155 | );
156 |
157 | assert.deepEqual(Object.keys(getResolveFallback({ include: ['fs'] })), [
158 | 'fs',
159 | ]);
160 |
161 | const overrides = getResolveFallback({ overrides: { fs: 'memfs' } });
162 | assert.equal(overrides.fs, 'memfs');
163 | assert.deepEqual({ ...overrides, fs: defaultFallback.fs }, defaultFallback);
164 |
165 | assert.throws(
166 | () => getResolveFallback({ include: ['fs'], exclude: ['path'] }),
167 | '`include` is mutually exclusive with `exclude`.',
168 | );
169 | });
170 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "outDir": "./dist",
4 | "baseUrl": "./",
5 | "target": "ES2020",
6 | "lib": ["DOM", "ESNext"],
7 | "module": "Node16",
8 | "strict": true,
9 | "declaration": true,
10 | "isolatedModules": true,
11 | "esModuleInterop": true,
12 | "skipLibCheck": true,
13 | "resolveJsonModule": true,
14 | "moduleResolution": "Node16"
15 | },
16 | "include": ["src"]
17 | }
18 |
--------------------------------------------------------------------------------