Skip to content

Commit 4281bc0

Browse files
authored
Fix string_decoder import (#548)
* Fix `string_decoder` import Resolves #547 * add replacement to replacement.mjs, add node version to package.json and rebuild * chore: put node version in package.json script * chore: use node version 18.19.0 * run npm run format
1 parent fdfbf82 commit 4281bc0

23 files changed

+359
-324
lines changed

build/replacements.mjs

+4-1
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ const streamsRequireInternal = ["require\\('internal/(.+)'\\)", "require('../int
146146

147147
const streamsRequirePrimordials = ['= primordials', "= require('../ours/primordials')"]
148148

149+
const stringDecoderRequirePackage = ["require\\('string_decoder'\\)", "require('string_decoder/')"]
150+
149151
const testCommonKnownGlobals = [
150152
'let knownGlobals = \\[(\\n\\s+)',
151153
`
@@ -312,7 +314,8 @@ export const replacements = {
312314
],
313315
'lib/internal/streams/readable.js': [
314316
removefromWebReadableMethod,
315-
removetoWebReadableMethod
317+
removetoWebReadableMethod,
318+
stringDecoderRequirePackage
316319
],
317320
'lib/internal/streams/.+': [
318321
internalStreamsRequireErrors,

eslint.config.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export default [
2121
'space-before-function-paren': 0,
2222
curly: [2, 'all'],
2323
'local/no-big-int': 'error',
24+
'no-undef': 'warn',
2425
},
2526
},
2627
]
27-

lib/internal/streams/readable.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ const {
6565
} = require('../../ours/errors')
6666
const { validateObject } = require('../validators')
6767
const kPaused = Symbol('kPaused')
68-
const { StringDecoder } = require('string_decoder')
68+
const { StringDecoder } = require('string_decoder/')
6969
const from = require('./from')
7070
ObjectSetPrototypeOf(Readable.prototype, Stream.prototype)
7171
ObjectSetPrototypeOf(Readable, Stream)

lib/internal/streams/utils.js

-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ function isReadableNodeStream(obj, strict = false) {
3030
) // Writable has .pipe.
3131
)
3232
}
33-
3433
function isWritableNodeStream(obj) {
3534
var _obj$_writableState
3635
return !!(
@@ -45,7 +44,6 @@ function isWritableNodeStream(obj) {
4544
) // Duplex
4645
)
4746
}
48-
4947
function isDuplexNodeStream(obj) {
5048
return !!(
5149
obj &&

lib/ours/errors.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,8 @@ E(
311311
received = addNumericalSeparator(String(input))
312312
} else if (typeof input === 'bigint') {
313313
received = String(input)
314-
if (input > 2n ** 32n || input < -(2n ** 32n)) {
314+
const limit = BigInt(2) ** BigInt(32)
315+
if (input > limit || input < -limit) {
315316
received = addNumericalSeparator(received)
316317
}
317318
received += 'n'

lib/ours/primordials.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,6 @@ module.exports = {
102102
TypedArrayPrototypeSet(self, buf, len) {
103103
return self.set(buf, len)
104104
},
105-
Boolean: Boolean,
105+
Boolean,
106106
Uint8Array
107107
}

lib/ours/util.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ const validateAbortSignal = (signal, name) => {
2424
}
2525
}
2626
const validateFunction = (value, name) => {
27-
if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)
27+
if (typeof value !== 'function') {
28+
throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)
29+
}
2830
}
2931

3032
// This is a simplified version of AggregateError

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"./lib/ours/index.js": "./lib/ours/browser.js"
3434
},
3535
"scripts": {
36-
"build": "node build/build.mjs",
36+
"build": "node build/build.mjs 18.19.0",
3737
"postbuild": "prettier -w lib test",
3838
"test": "tap --rcfile=./tap.yml test/parallel/test-*.js test/ours/test-*.js",
3939
"test:prepare": "node test/browser/runner-prepare.mjs",

src/primordials.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,6 @@ module.exports = {
103103
TypedArrayPrototypeSet(self, buf, len) {
104104
return self.set(buf, len)
105105
},
106-
Boolean: Boolean,
106+
Boolean,
107107
Uint8Array
108108
}

src/util.js

+53-47
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,15 @@ const isBlob =
2020
/* eslint-enable indent */
2121

2222
const validateAbortSignal = (signal, name) => {
23-
if (signal !== undefined &&
24-
(signal === null ||
25-
typeof signal !== 'object' ||
26-
!('aborted' in signal))) {
27-
throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal);
23+
if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {
24+
throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)
2825
}
29-
};
26+
}
3027
const validateFunction = (value, name) => {
31-
if (typeof value !== 'function')
32-
throw new ERR_INVALID_ARG_TYPE(name, 'Function', value);
33-
};
28+
if (typeof value !== 'function') {
29+
throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)
30+
}
31+
}
3432

3533
// This is a simplified version of AggregateError
3634
class AggregateError extends Error {
@@ -153,45 +151,53 @@ module.exports = {
153151
deprecate(fn, message) {
154152
return fn
155153
},
156-
addAbortListener: require('events').addAbortListener || function addAbortListener(signal, listener) {
157-
if (signal === undefined) {
158-
throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal);
159-
}
160-
validateAbortSignal(signal, 'signal');
161-
validateFunction(listener, 'listener');
162-
163-
let removeEventListener;
164-
if (signal.aborted) {
165-
queueMicrotask(() => listener());
166-
} else {
167-
signal.addEventListener('abort', listener, { __proto__: null, once: true, [kResistStopPropagation]: true });
168-
removeEventListener = () => {
169-
signal.removeEventListener('abort', listener);
170-
};
171-
}
172-
return {
173-
__proto__: null,
174-
[SymbolDispose]() {
175-
removeEventListener?.();
176-
},
177-
};
178-
},
179-
AbortSignalAny: AbortSignal.any || function AbortSignalAny(signals) {
180-
// Fast path if there is only one signal.
181-
if (signals.length === 1) {
182-
return signals[0]
154+
addAbortListener:
155+
require('events').addAbortListener ||
156+
function addAbortListener(signal, listener) {
157+
if (signal === undefined) {
158+
throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal)
159+
}
160+
validateAbortSignal(signal, 'signal')
161+
validateFunction(listener, 'listener')
162+
163+
let removeEventListener
164+
if (signal.aborted) {
165+
queueMicrotask(() => listener())
166+
} else {
167+
signal.addEventListener('abort', listener, { __proto__: null, once: true, [kResistStopPropagation]: true })
168+
removeEventListener = () => {
169+
signal.removeEventListener('abort', listener)
170+
}
171+
}
172+
return {
173+
__proto__: null,
174+
[SymbolDispose]() {
175+
removeEventListener?.()
176+
}
177+
}
178+
},
179+
AbortSignalAny:
180+
AbortSignal.any ||
181+
function AbortSignalAny(signals) {
182+
// Fast path if there is only one signal.
183+
if (signals.length === 1) {
184+
return signals[0]
185+
}
186+
const ac = new AbortController()
187+
const abort = () => ac.abort()
188+
signals.forEach((signal) => {
189+
validateAbortSignal(signal, 'signals')
190+
signal.addEventListener('abort', abort, { once: true })
191+
})
192+
ac.signal.addEventListener(
193+
'abort',
194+
() => {
195+
signals.forEach((signal) => signal.removeEventListener('abort', abort))
196+
},
197+
{ once: true }
198+
)
199+
return ac.signal
183200
}
184-
const ac = new AbortController()
185-
const abort = () => ac.abort()
186-
signals.forEach(signal => {
187-
validateAbortSignal(signal, 'signals')
188-
signal.addEventListener('abort', abort, { once: true })
189-
})
190-
ac.signal.addEventListener('abort', () => {
191-
signals.forEach(signal => signal.removeEventListener('abort', abort))
192-
}, { once: true })
193-
return ac.signal
194-
}
195201
}
196202

197203
module.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')

test/browser/test-stream2-readable-wrap.js

-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ module.exports = function (test) {
4747
old.emit('data', item)
4848
// console.log('after emit', chunks, flowing);
4949
}
50-
5150
if (chunks <= 0) {
5251
oldEnded = true
5352
// console.log('old end', chunks, flowing);

test/common/fixtures.mjs

+3-15
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,5 @@
1-
import fixtures from './fixtures.js';
1+
import fixtures from './fixtures.js'
22

3-
const {
4-
fixturesDir,
5-
path,
6-
fileURL,
7-
readSync,
8-
readKey,
9-
} = fixtures;
3+
const { fixturesDir, path, fileURL, readSync, readKey } = fixtures
104

11-
export {
12-
fixturesDir,
13-
path,
14-
fileURL,
15-
readSync,
16-
readKey,
17-
};
5+
export { fixturesDir, path, fileURL, readSync, readKey }

test/common/index.js

-1
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,6 @@ const common = {
866866
get enoughTestMem() {
867867
return require('os').totalmem() > 0x70000000 /* 1.75 Gb */
868868
},
869-
870869
get hasFipsCrypto() {
871870
return hasCrypto && require('crypto').getFips()
872871
},

test/common/index.mjs

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { createRequire } from 'module';
1+
import { createRequire } from 'module'
22

3-
const require = createRequire(import.meta.url);
4-
const common = require('./index.js');
3+
const require = createRequire(import.meta.url)
4+
const common = require('./index.js')
55

66
const {
77
allowGlobals,
@@ -50,10 +50,10 @@ const {
5050
skipIfDumbTerminal,
5151
skipIfEslintMissing,
5252
skipIfInspectorDisabled,
53-
spawnPromisified,
54-
} = common;
53+
spawnPromisified
54+
} = common
5555

56-
const getPort = () => common.PORT;
56+
const getPort = () => common.PORT
5757

5858
export {
5959
allowGlobals,
@@ -104,5 +104,5 @@ export {
104104
skipIfDumbTerminal,
105105
skipIfEslintMissing,
106106
skipIfInspectorDisabled,
107-
spawnPromisified,
108-
};
107+
spawnPromisified
108+
}

0 commit comments

Comments
 (0)