@rsbuild/plugin-node-polyfill
Advanced tools
Comparing version 1.0.0 to 1.0.1
import { RsbuildPlugin } from '@rsbuild/core'; | ||
declare function pluginNodePolyfill(): RsbuildPlugin; | ||
type Globals = { | ||
process?: boolean; | ||
Buffer?: boolean; | ||
}; | ||
type PluginNodePolyfillOptions = { | ||
/** | ||
* Whether to provide polyfill of globals. | ||
* @default | ||
* { | ||
* Buffer: true, | ||
* process: true, | ||
* } | ||
*/ | ||
globals?: Globals; | ||
/** | ||
* Whether to polyfill Node.js builtin modules starting with `node:`. | ||
* @see https://nodejs.org/api/esm.html#node-imports | ||
* @default true | ||
*/ | ||
protocolImports?: boolean; | ||
}; | ||
declare const PLUGIN_NODE_POLYFILL_NAME = "rsbuild:node-polyfill"; | ||
declare function pluginNodePolyfill(options?: PluginNodePolyfillOptions): RsbuildPlugin; | ||
export { pluginNodePolyfill }; | ||
export { PLUGIN_NODE_POLYFILL_NAME, type PluginNodePolyfillOptions, pluginNodePolyfill }; |
@@ -1,60 +0,125 @@ | ||
"use strict"; | ||
var __create = Object.create; | ||
var __defProp = Object.defineProperty; | ||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
var __getOwnPropNames = Object.getOwnPropertyNames; | ||
var __getProtoOf = Object.getPrototypeOf; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __export = (target, all) => { | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
return to; | ||
}; | ||
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | ||
// If the importer is in node compatibility mode or this is not an ESM | ||
// file that has been converted to a CommonJS file using a Babel- | ||
// compatible transform (i.e. "__esModule" has not been set), then set | ||
// "default" to the CommonJS "module.exports" for node compatibility. | ||
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | ||
mod | ||
)); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
import { | ||
__export | ||
} from "./chunk-6C3VEZWH.js"; | ||
// src/libs.ts | ||
var libs_exports = {}; | ||
__export(libs_exports, { | ||
_stream_duplex: () => _stream_duplex, | ||
_stream_passthrough: () => _stream_passthrough, | ||
_stream_readable: () => _stream_readable, | ||
_stream_transform: () => _stream_transform, | ||
_stream_writable: () => _stream_writable, | ||
assert: () => assert, | ||
buffer: () => buffer, | ||
child_process: () => child_process, | ||
cluster: () => cluster, | ||
console: () => console, | ||
constants: () => constants, | ||
crypto: () => crypto, | ||
dgram: () => dgram, | ||
dns: () => dns, | ||
domain: () => domain, | ||
events: () => events, | ||
fs: () => fs, | ||
http: () => http, | ||
https: () => https, | ||
module: () => module, | ||
net: () => net, | ||
os: () => os, | ||
path: () => path, | ||
process: () => process, | ||
punycode: () => punycode, | ||
querystring: () => querystring, | ||
readline: () => readline, | ||
repl: () => repl, | ||
stream: () => stream, | ||
string_decoder: () => string_decoder, | ||
sys: () => sys, | ||
timers: () => timers, | ||
tls: () => tls, | ||
tty: () => tty, | ||
url: () => url, | ||
util: () => util, | ||
vm: () => vm, | ||
zlib: () => zlib | ||
}); | ||
import { createRequire } from "node:module"; | ||
var require2 = createRequire(import.meta.url); | ||
var assert = require2.resolve("assert/"); | ||
var buffer = require2.resolve("buffer/"); | ||
var child_process = null; | ||
var cluster = null; | ||
var console = require2.resolve("console-browserify"); | ||
var constants = require2.resolve("constants-browserify"); | ||
var crypto = require2.resolve("crypto-browserify"); | ||
var dgram = null; | ||
var dns = null; | ||
var domain = require2.resolve("domain-browser"); | ||
var events = require2.resolve("events/"); | ||
var fs = null; | ||
var http = require2.resolve("stream-http"); | ||
var https = require2.resolve("https-browserify"); | ||
var module = null; | ||
var net = null; | ||
var os = require2.resolve("os-browserify/browser.js"); | ||
var path = require2.resolve("path-browserify"); | ||
var punycode = require2.resolve("punycode/"); | ||
var process = require2.resolve("process/browser.js"); | ||
var querystring = require2.resolve("querystring-es3/"); | ||
var readline = null; | ||
var repl = null; | ||
var stream = require2.resolve("stream-browserify"); | ||
var _stream_duplex = require2.resolve( | ||
"readable-stream/lib/_stream_duplex.js" | ||
); | ||
var _stream_passthrough = require2.resolve( | ||
"readable-stream/lib/_stream_passthrough.js" | ||
); | ||
var _stream_readable = require2.resolve( | ||
"readable-stream/lib/_stream_readable.js" | ||
); | ||
var _stream_transform = require2.resolve( | ||
"readable-stream/lib/_stream_transform.js" | ||
); | ||
var _stream_writable = require2.resolve( | ||
"readable-stream/lib/_stream_writable.js" | ||
); | ||
var string_decoder = require2.resolve("string_decoder/"); | ||
var sys = require2.resolve("util/util.js"); | ||
var timers = require2.resolve("timers-browserify"); | ||
var tls = null; | ||
var tty = require2.resolve("tty-browserify"); | ||
var url = require2.resolve("url/"); | ||
var util = require2.resolve("util/util.js"); | ||
var vm = require2.resolve("vm-browserify"); | ||
var zlib = require2.resolve("browserify-zlib"); | ||
// src/index.ts | ||
var src_exports = {}; | ||
__export(src_exports, { | ||
pluginNodePolyfill: () => pluginNodePolyfill | ||
}); | ||
module.exports = __toCommonJS(src_exports); | ||
var getResolveFallback = (nodeLibs) => Object.keys(nodeLibs).reduce( | ||
(previous, name) => { | ||
if (nodeLibs[name]) { | ||
previous[name] = nodeLibs[name]; | ||
} else { | ||
previous[name] = false; | ||
var getResolveFallback = (protocolImports) => { | ||
const fallback = {}; | ||
for (const name of Object.keys(libs_exports)) { | ||
const libPath = libs_exports[name]; | ||
fallback[name] = libPath ?? false; | ||
if (protocolImports) { | ||
fallback[`node:${name}`] = fallback[name]; | ||
} | ||
return previous; | ||
}, | ||
{} | ||
); | ||
var getProvideLibs = async () => { | ||
const { default: nodeLibs } = await import( | ||
// @ts-expect-error | ||
"node-libs-browser" | ||
); | ||
return { | ||
Buffer: [nodeLibs.buffer, "Buffer"], | ||
process: [nodeLibs.process] | ||
}; | ||
} | ||
return fallback; | ||
}; | ||
function pluginNodePolyfill() { | ||
var getProvideGlobals = async (globals) => { | ||
const result = {}; | ||
if (globals?.Buffer !== false) { | ||
result.Buffer = [buffer, "Buffer"]; | ||
} | ||
if (globals?.process !== false) { | ||
result.process = [process]; | ||
} | ||
return result; | ||
}; | ||
var PLUGIN_NODE_POLYFILL_NAME = "rsbuild:node-polyfill"; | ||
function pluginNodePolyfill(options = {}) { | ||
const { protocolImports = true } = options; | ||
return { | ||
name: "rsbuild:node-polyfill", | ||
name: PLUGIN_NODE_POLYFILL_NAME, | ||
setup(api) { | ||
@@ -65,8 +130,11 @@ api.modifyBundlerChain(async (chain, { CHAIN_ID, isServer, bundler }) => { | ||
} | ||
const { default: nodeLibs } = await import( | ||
// @ts-expect-error | ||
"node-libs-browser" | ||
); | ||
chain.resolve.fallback.merge(getResolveFallback(nodeLibs)); | ||
chain.plugin(CHAIN_ID.PLUGIN.NODE_POLYFILL_PROVIDE).use(bundler.ProvidePlugin, [await getProvideLibs()]); | ||
chain.resolve.fallback.merge(getResolveFallback(protocolImports)); | ||
const provideGlobals = await getProvideGlobals(options.globals); | ||
if (Object.keys(provideGlobals).length) { | ||
chain.plugin(CHAIN_ID.PLUGIN.NODE_POLYFILL_PROVIDE).use(bundler.ProvidePlugin, [provideGlobals]); | ||
} | ||
if (protocolImports) { | ||
const { ProtocolImportsPlugin } = await import("./ProtocolImportsPlugin-HUSWFIAE.js"); | ||
chain.plugin("protocol-imports").use(ProtocolImportsPlugin); | ||
} | ||
}); | ||
@@ -76,5 +144,5 @@ } | ||
} | ||
// Annotate the CommonJS export names for ESM import in node: | ||
0 && (module.exports = { | ||
export { | ||
PLUGIN_NODE_POLYFILL_NAME, | ||
pluginNodePolyfill | ||
}); | ||
}; |
{ | ||
"name": "@rsbuild/plugin-node-polyfill", | ||
"version": "1.0.0", | ||
"description": "Node polyfill plugin for Rsbuild", | ||
"homepage": "https://rsbuild.dev", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/web-infra-dev/rsbuild", | ||
"directory": "packages/plugin-node-polyfill" | ||
}, | ||
"version": "1.0.1", | ||
"repository": "https://github.com/rspack-contrib/rsbuild-plugin-template", | ||
"license": "MIT", | ||
"type": "module", | ||
"exports": { | ||
".": { | ||
"types": "./dist/index.d.ts", | ||
"import": "./dist/index.mjs", | ||
"default": "./dist/index.js" | ||
"import": "./dist/index.js", | ||
"require": "./dist/index.cjs" | ||
} | ||
}, | ||
"main": "./dist/index.js", | ||
"module": "./dist/index.mjs", | ||
"types": "./dist/index.d.ts", | ||
@@ -24,20 +20,65 @@ "files": [ | ||
], | ||
"simple-git-hooks": { | ||
"pre-commit": "npx nano-staged" | ||
}, | ||
"nano-staged": { | ||
"*.{js,jsx,ts,tsx,mjs,cjs}": [ | ||
"biome check --write --no-errors-on-unmatched" | ||
] | ||
}, | ||
"dependencies": { | ||
"node-libs-browser": "2.2.1", | ||
"@rsbuild/shared": "1.0.0" | ||
"assert": "^2.1.0", | ||
"browserify-zlib": "^0.2.0", | ||
"buffer": "^5.7.1", | ||
"console-browserify": "^1.2.0", | ||
"constants-browserify": "^1.0.0", | ||
"crypto-browserify": "^3.12.0", | ||
"domain-browser": "^5.7.0", | ||
"events": "^3.3.0", | ||
"https-browserify": "^1.0.0", | ||
"os-browserify": "^0.3.0", | ||
"path-browserify": "^1.0.1", | ||
"process": "^0.11.10", | ||
"punycode": "^2.3.1", | ||
"querystring-es3": "^0.2.1", | ||
"readable-stream": "^4.5.2", | ||
"stream-browserify": "^3.0.0", | ||
"stream-http": "^3.2.0", | ||
"string_decoder": "^1.3.0", | ||
"timers-browserify": "^2.0.12", | ||
"tty-browserify": "^0.0.1", | ||
"url": "^0.11.3", | ||
"util": "^0.12.5", | ||
"vm-browserify": "^1.1.2" | ||
}, | ||
"devDependencies": { | ||
"typescript": "^5.3.0", | ||
"@rsbuild/core": "1.0.0", | ||
"@rsbuild/webpack": "1.0.0" | ||
"@biomejs/biome": "^1.8.3", | ||
"@playwright/test": "^1.44.1", | ||
"@rsbuild/core": "^0.7.10", | ||
"@types/node": "^20.14.1", | ||
"nano-staged": "^0.8.0", | ||
"playwright": "^1.44.1", | ||
"simple-git-hooks": "^2.11.1", | ||
"tsup": "^8.0.2", | ||
"typescript": "^5.5.2" | ||
}, | ||
"peerDependencies": { | ||
"@rsbuild/core": "0.x || 1.x" | ||
}, | ||
"peerDependenciesMeta": { | ||
"@rsbuild/core": { | ||
"optional": true | ||
} | ||
}, | ||
"publishConfig": { | ||
"access": "public", | ||
"provenance": true, | ||
"registry": "https://registry.npmjs.org/" | ||
}, | ||
"scripts": { | ||
"build": "modern build", | ||
"dev": "modern build --watch" | ||
"build": "tsup", | ||
"dev": "tsup --watch", | ||
"lint": "biome check .", | ||
"lint:write": "biome check . --write", | ||
"test": "playwright test" | ||
} | ||
} |
157
README.md
@@ -1,19 +0,158 @@ | ||
<p align="center"> | ||
<a href="https://rsbuild.dev" target="blank"><img src="https://github.com/web-infra-dev/rsbuild/assets/7237365/84abc13e-b620-468f-a90b-dbf28e7e9427" alt="Rsbuild Logo" /></a> | ||
# @rsbuild/plugin-node-polyfill | ||
@rsbuild/plugin-node-polyfill is a Rsbuild plugin to do something. | ||
<p> | ||
<a href="https://npmjs.com/package/@rsbuild/plugin-node-polyfill"> | ||
<img src="https://img.shields.io/npm/v/@rsbuild/plugin-node-polyfill?style=flat-square&colorA=564341&colorB=EDED91" alt="npm version" /> | ||
</a> | ||
<img src="https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square&colorA=564341&colorB=EDED91" alt="license" /> | ||
</p> | ||
# Rsbuild | ||
## Usage | ||
Unleash the power of Rspack with the out-of-the-box build tool. | ||
Install: | ||
## Documentation | ||
```bash | ||
npm add @rsbuild/plugin-node-polyfill -D | ||
``` | ||
https://rsbuild.dev/ | ||
Add plugin to your `rsbuild.config.ts`: | ||
## Contributing | ||
```ts | ||
// rsbuild.config.ts | ||
import { pluginNodePolyfill } from "@rsbuild/plugin-node-polyfill"; | ||
Please read the [Contributing Guide](https://github.com/web-infra-dev/rsbuild/blob/main/CONTRIBUTING.md). | ||
export default { | ||
plugins: [pluginNodePolyfill()], | ||
}; | ||
``` | ||
## Node Polyfills | ||
### Globals | ||
- `Buffer` | ||
- `process` | ||
When you use the above global variables in your code, the corresponding polyfill will be automatically injected. | ||
For instance, the following code would inject the `Buffer` polyfill: | ||
```ts | ||
const bufferData = Buffer.from("abc"); | ||
``` | ||
You can disable this behavior through the `globals` option of the plugin: | ||
```ts | ||
pluginNodePolyfill({ | ||
globals: { | ||
Buffer: false, | ||
process: false, | ||
}, | ||
}); | ||
``` | ||
### Modules | ||
- `assert` | ||
- `buffer` | ||
- `console` | ||
- `constants` | ||
- `crypto` | ||
- `domain` | ||
- `events` | ||
- `http` | ||
- `https` | ||
- `os` | ||
- `path` | ||
- `punycode` | ||
- `process` | ||
- `querystring` | ||
- `stream` | ||
- `_stream_duplex` | ||
- `_stream_passthrough` | ||
- `_stream_readable` | ||
- `_stream_transform` | ||
- `_stream_writable` | ||
- `string_decoder` | ||
- `sys` | ||
- `timers` | ||
- `tty` | ||
- `url` | ||
- `util` | ||
- `vm` | ||
- `zlib` | ||
When the above module is referenced in code via import / require syntax, the corresponding polyfill will be injected. | ||
```ts | ||
import { Buffer } from "buffer"; | ||
const bufferData = Buffer.from("abc"); | ||
``` | ||
### Fallbacks | ||
- `child_process` | ||
- `cluster` | ||
- `dgram` | ||
- `dns` | ||
- `fs` | ||
- `module` | ||
- `net` | ||
- `readline` | ||
- `repl` | ||
- `tls` | ||
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. | ||
```ts | ||
import fs from "fs"; | ||
console.log(fs); // -> {} | ||
``` | ||
## Options | ||
### globals | ||
Used to specify whether to inject polyfills for global variables. | ||
- **Type:** | ||
```ts | ||
type Globals = { | ||
process?: boolean; | ||
Buffer?: boolean; | ||
}; | ||
``` | ||
- **Default:** | ||
```ts | ||
const defaultGlobals = { | ||
Buffer: true, | ||
process: true, | ||
}; | ||
``` | ||
### protocolImports | ||
Whether to polyfill Node.js builtin modules starting with `node:`. | ||
- **Type:** `boolean` | ||
- **Default:** `true` | ||
For example, if you disable `protocolImports`, modules such as `node:path`, `node:http`, etc. will not be polyfilled. | ||
```ts | ||
pluginNodePolyfill({ | ||
protocolImports: false, | ||
}); | ||
``` | ||
## License | ||
Rsbuild is [MIT licensed](https://github.com/web-infra-dev/rsbuild/blob/main/LICENSE). | ||
[MIT](./LICENSE). |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
19731
9
409
0
159
Yes
24
9
1
2
1
+ Addedassert@^2.1.0
+ Addedbrowserify-zlib@^0.2.0
+ Addedbuffer@^5.7.1
+ Addedconsole-browserify@^1.2.0
+ Addedconstants-browserify@^1.0.0
+ Addedcrypto-browserify@^3.12.0
+ Addeddomain-browser@^5.7.0
+ Addedevents@^3.3.0
+ Addedhttps-browserify@^1.0.0
+ Addedos-browserify@^0.3.0
+ Addedpath-browserify@^1.0.1
+ Addedprocess@^0.11.10
+ Addedpunycode@^2.3.1
+ Addedquerystring-es3@^0.2.1
+ Addedreadable-stream@^4.5.2
+ Addedstream-browserify@^3.0.0
+ Addedstream-http@^3.2.0
+ Addedstring_decoder@^1.3.0
+ Addedtimers-browserify@^2.0.12
+ Addedtty-browserify@^0.0.1
+ Addedurl@^0.11.3
+ Addedutil@^0.12.5
+ Addedvm-browserify@^1.1.2
+ Added@module-federation/runtime@0.5.1(transitive)
+ Added@module-federation/runtime-tools@0.5.1(transitive)
+ Added@module-federation/sdk@0.5.1(transitive)
+ Added@module-federation/webpack-bundler-runtime@0.5.1(transitive)
+ Added@rsbuild/core@1.0.4(transitive)
+ Added@rspack/binding@1.0.5(transitive)
+ Added@rspack/binding-darwin-arm64@1.0.5(transitive)
+ Added@rspack/binding-darwin-x64@1.0.5(transitive)
+ Added@rspack/binding-linux-arm64-gnu@1.0.5(transitive)
+ Added@rspack/binding-linux-arm64-musl@1.0.5(transitive)
+ Added@rspack/binding-linux-x64-gnu@1.0.5(transitive)
+ Added@rspack/binding-linux-x64-musl@1.0.5(transitive)
+ Added@rspack/binding-win32-arm64-msvc@1.0.5(transitive)
+ Added@rspack/binding-win32-ia32-msvc@1.0.5(transitive)
+ Added@rspack/binding-win32-x64-msvc@1.0.5(transitive)
+ Added@rspack/core@1.0.5(transitive)
+ Added@rspack/lite-tapable@1.0.0(transitive)
+ Added@swc/helpers@0.5.13(transitive)
+ Addedabort-controller@3.0.0(transitive)
+ Addedassert@2.1.0(transitive)
+ Addedavailable-typed-arrays@1.0.7(transitive)
+ Addedbuffer@5.7.16.0.3(transitive)
+ Addedcore-js@3.38.1(transitive)
+ Addeddomain-browser@5.7.0(transitive)
+ Addedevent-target-shim@5.0.1(transitive)
+ Addedfor-each@0.3.3(transitive)
+ Addedfsevents@2.3.3(transitive)
+ Addedhas-tostringtag@1.0.2(transitive)
+ Addedis-arguments@1.1.1(transitive)
+ Addedis-callable@1.2.7(transitive)
+ Addedis-generator-function@1.0.10(transitive)
+ Addedis-nan@1.3.2(transitive)
+ Addedis-typed-array@1.1.13(transitive)
+ Addedobject-is@1.1.6(transitive)
+ Addedpath-browserify@1.0.1(transitive)
+ Addedpossible-typed-array-names@1.0.0(transitive)
+ Addedpunycode@2.3.1(transitive)
+ Addedreadable-stream@3.6.24.5.2(transitive)
+ Addedstream-browserify@3.0.0(transitive)
+ Addedstream-http@3.2.0(transitive)
+ Addedtty-browserify@0.0.1(transitive)
+ Addedutil@0.12.5(transitive)
+ Addedwhich-typed-array@1.1.15(transitive)
- Removed@rsbuild/shared@1.0.0
- Removednode-libs-browser@2.2.1
- Removed@rsbuild/shared@1.0.0(transitive)
- Removed@rspack/binding@0.4.0(transitive)
- Removed@rspack/binding-darwin-arm64@0.4.0(transitive)
- Removed@rspack/binding-darwin-x64@0.4.0(transitive)
- Removed@rspack/binding-linux-arm64-gnu@0.4.0(transitive)
- Removed@rspack/binding-linux-arm64-musl@0.4.0(transitive)
- Removed@rspack/binding-linux-x64-gnu@0.4.0(transitive)
- Removed@rspack/binding-linux-x64-musl@0.4.0(transitive)
- Removed@rspack/binding-win32-arm64-msvc@0.4.0(transitive)
- Removed@rspack/binding-win32-ia32-msvc@0.4.0(transitive)
- Removed@rspack/binding-win32-x64-msvc@0.4.0(transitive)
- Removed@rspack/core@0.4.0(transitive)
- Removed@swc/helpers@0.5.1(transitive)
- Removedansi-escapes@4.3.2(transitive)
- Removedassert@1.5.1(transitive)
- Removedbrowserslist@4.23.3(transitive)
- Removedbuffer@4.9.2(transitive)
- Removedcompare-versions@6.0.0-rc.1(transitive)
- Removeddomain-browser@1.2.0(transitive)
- Removedelectron-to-chromium@1.5.23(transitive)
- Removedenhanced-resolve@5.12.0(transitive)
- Removedescalade@3.2.0(transitive)
- Removedfast-decode-uri-component@1.0.1(transitive)
- Removedfast-querystring@1.1.2(transitive)
- Removedglob-to-regexp@0.4.1(transitive)
- Removedgraceful-fs@4.2.10(transitive)
- Removedhas-flag@4.0.0(transitive)
- Removedinherits@2.0.3(transitive)
- Removedjson-parse-even-better-errors@3.0.2(transitive)
- Removedlevdist@1.0.0(transitive)
- Removedline-diff@2.1.1(transitive)
- Removedlodash@4.17.21(transitive)
- Removednanoid@3.3.7(transitive)
- Removedneo-async@2.6.2(transitive)
- Removednode-libs-browser@2.2.1(transitive)
- Removednode-releases@2.0.18(transitive)
- Removedpath-browserify@0.0.1(transitive)
- Removedpicocolors@1.1.0(transitive)
- Removedpostcss@8.4.31(transitive)
- Removedreact-refresh@0.14.0(transitive)
- Removedsource-map-js@1.2.1(transitive)
- Removedstream-browserify@2.0.2(transitive)
- Removedstream-http@2.8.3(transitive)
- Removedsupports-color@7.2.0(transitive)
- Removedsupports-hyperlinks@2.3.0(transitive)
- Removedtapable@2.2.1(transitive)
- Removedterminal-link@2.1.1(transitive)
- Removedto-arraybuffer@1.0.1(transitive)
- Removedtty-browserify@0.0.0(transitive)
- Removedtype-fest@0.21.3(transitive)
- Removedupdate-browserslist-db@1.1.0(transitive)
- Removedutil@0.10.40.11.1(transitive)
- Removedwatchpack@2.4.2(transitive)
- Removedwebpack-sources@3.2.3(transitive)
- Removedzod@3.23.8(transitive)
- Removedzod-validation-error@1.2.0(transitive)