mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 12:20:27 +01:00
lib: add primordials.SafeArrayIterator
PR-URL: https://github.com/nodejs/node/pull/36532 Backport-PR-URL: https://github.com/nodejs/node/pull/39446 Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
parent
4efefe02a8
commit
d8cc2fffd6
|
|
@ -438,7 +438,7 @@ function trySelf(parentPath, request) {
|
|||
const EXPORTS_PATTERN = /^((?:@[^/\\%]+\/)?[^./\\%][^/\\%]*)(\/.*)?$/;
|
||||
function resolveExports(nmPath, request) {
|
||||
// The implementation's behavior is meant to mirror resolution in ESM.
|
||||
const [, name, expansion = ''] =
|
||||
const { 1: name, 2: expansion = '' } =
|
||||
StringPrototypeMatch(request, EXPORTS_PATTERN) || [];
|
||||
if (!name)
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ const {
|
|||
PromisePrototypeCatch,
|
||||
ReflectApply,
|
||||
RegExpPrototypeTest,
|
||||
SafeArrayIterator,
|
||||
SafeSet,
|
||||
StringPrototypeIncludes,
|
||||
StringPrototypeMatch,
|
||||
|
|
@ -76,9 +77,9 @@ class ModuleJob {
|
|||
});
|
||||
|
||||
if (promises !== undefined)
|
||||
await PromiseAll(promises);
|
||||
await PromiseAll(new SafeArrayIterator(promises));
|
||||
|
||||
return PromiseAll(dependencyJobs);
|
||||
return PromiseAll(new SafeArrayIterator(dependencyJobs));
|
||||
};
|
||||
// Promise for the list of all dependencyJobs.
|
||||
this.linked = link();
|
||||
|
|
@ -106,8 +107,8 @@ class ModuleJob {
|
|||
}
|
||||
jobsInGraph.add(moduleJob);
|
||||
const dependencyJobs = await moduleJob.linked;
|
||||
return PromiseAll(
|
||||
ArrayPrototypeMap(dependencyJobs, addJobsToDependencyGraph));
|
||||
return PromiseAll(new SafeArrayIterator(
|
||||
ArrayPrototypeMap(dependencyJobs, addJobsToDependencyGraph)));
|
||||
};
|
||||
await addJobsToDependencyGraph(this);
|
||||
|
||||
|
|
|
|||
|
|
@ -263,6 +263,9 @@ primordials.SafeWeakSet = makeSafe(
|
|||
// Refs: https://tc39.es/ecma262/#sec-%typedarray%-intrinsic-object
|
||||
[
|
||||
{ name: 'TypedArray', original: Reflect.getPrototypeOf(Uint8Array) },
|
||||
{ name: 'ArrayIterator', original: {
|
||||
prototype: Reflect.getPrototypeOf(Array.prototype[Symbol.iterator]()),
|
||||
} },
|
||||
{ name: 'StringIterator', original: {
|
||||
prototype: Reflect.getPrototypeOf(String.prototype[Symbol.iterator]()),
|
||||
} },
|
||||
|
|
@ -274,6 +277,10 @@ primordials.SafeWeakSet = makeSafe(
|
|||
copyPrototype(original.prototype, primordials, `${name}Prototype`);
|
||||
});
|
||||
|
||||
primordials.SafeArrayIterator = createSafeIterator(
|
||||
primordials.ArrayPrototypeSymbolIterator,
|
||||
primordials.ArrayIteratorPrototypeNext
|
||||
);
|
||||
primordials.SafeStringIterator = createSafeIterator(
|
||||
primordials.StringPrototypeSymbolIterator,
|
||||
primordials.StringIteratorPrototypeNext
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ const {
|
|||
ObjectDefineProperty,
|
||||
RegExp,
|
||||
RegExpPrototypeTest,
|
||||
SafeArrayIterator,
|
||||
StringPrototypeToUpperCase
|
||||
} = primordials;
|
||||
|
||||
|
|
@ -78,7 +79,7 @@ function debuglog(set, cb) {
|
|||
debug = debuglogImpl(enabled, set);
|
||||
if (typeof cb === 'function')
|
||||
cb(debug);
|
||||
debug(...args);
|
||||
debug(...new SafeArrayIterator(args));
|
||||
};
|
||||
let enabled;
|
||||
let test = () => {
|
||||
|
|
@ -86,7 +87,7 @@ function debuglog(set, cb) {
|
|||
test = () => enabled;
|
||||
return enabled;
|
||||
};
|
||||
const logger = (...args) => debug(...args);
|
||||
const logger = (...args) => debug(...new SafeArrayIterator(args));
|
||||
ObjectDefineProperty(logger, 'enabled', {
|
||||
get() {
|
||||
return test();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user