readable-stream
readable-stream copied to clipboard
cannot use readable-stream on service worker
I patch these 2 modules with a postinstall script ("postinstall": "esno scripts/patch.ts"):
import { readFileSync, writeFileSync } from 'node:fs'
const patch = () => {
let content: string = readFileSync(
'./node_modules/readable-stream/lib/_stream_readable.js',
{ encoding: 'utf-8' },
)
if (content.includes('global.Uint8Array')) {
writeFileSync(
'./node_modules/readable-stream/lib/_stream_readable.js',
content.replace(
'var OurUint8Array = global.Uint8Array || function () {};',
'var OurUint8Array = self.Uint8Array || function () {};'
),
{ encoding: 'utf-8' },
)
}
content = readFileSync('./node_modules/readable-stream/lib/_stream_writable.js', { encoding: 'utf-8' })
if (content.includes('global.Uint8Array')) {
writeFileSync(
'./node_modules/readable-stream/lib/_stream_writable.js',
content.replace(
'var OurUint8Array = global.Uint8Array || function () {};',
'var OurUint8Array = self.Uint8Array || function () {};'
),
{ encoding: 'utf-8' },
)
}
}
patch()
Rather than just assuming global
will be defined, probably need to do something like:
typeof global !== "undefined"
? global
: typeof self !== "undefined"
? self
: typeof window !== "undefined"
? window
: {};
E.g. as done in https://github.com/Aslemammad/modern-node-polyfills/blob/main/global.ts
Would you like to send a PR? Checkout our build scripts inside build/
.
Mark as closed by https://github.com/nodejs/readable-stream/pull/502