fix: add browser to mainFields resolution to prevent crypto-browserify bundling

ws package has a browser field pointing to a crypto-free entry point.
Without 'browser' in mainFields, Vite resolved the Node.js version
which pulled in crypto-browserify -> inherits -> runtime error.
This commit is contained in:
2026-02-22 19:48:03 +03:00
parent e2cfa136f9
commit 1ee4bc4f1d
2 changed files with 1 additions and 14 deletions
-11
View File
@@ -1,11 +0,0 @@
// Minimal crypto shim that delegates to the browser's native Web Crypto API
// Prevents crypto-browserify (and its inherits dependency) from being bundled
export default globalThis.crypto;
export const webcrypto = globalThis.crypto;
export const randomBytes = (size: number): Uint8Array => {
const bytes = new Uint8Array(size);
globalThis.crypto.getRandomValues(bytes);
return bytes;
};
export const createHash = undefined;
export const createHmac = undefined;
+1 -3
View File
@@ -61,7 +61,7 @@ export default defineConfig(() => ({
},
].filter(Boolean),
resolve: {
mainFields: ['module', 'main', 'exports'],
mainFields: ['browser', 'module', 'main', 'exports'],
alias: {
"@": path.resolve(__dirname, "./src"),
"@pezkuwi/i18n": path.resolve(__dirname, "../shared/i18n"),
@@ -75,8 +75,6 @@ export default defineConfig(() => ({
'vite-plugin-node-polyfills/shims/buffer': path.resolve(__dirname, './src/polyfills/buffer-shim.ts'),
'vite-plugin-node-polyfills/shims/global': path.resolve(__dirname, './src/polyfills/global-shim.ts'),
'vite-plugin-node-polyfills/shims/process': path.resolve(__dirname, './src/polyfills/process-shim.ts'),
// Prevent crypto-browserify chain (inherits error) - use native Web Crypto API
'crypto-browserify': path.resolve(__dirname, './src/polyfills/crypto-shim.ts'),
},
dedupe: ['react', 'lucide-react', 'sonner', '@pezkuwi/util-crypto', '@pezkuwi/util', '@pezkuwi/api', '@pezkuwi/extension-dapp', '@pezkuwi/keyring'],
},