Skip to content

Commit

Permalink
lib: export submodules in parent builtins
Browse files Browse the repository at this point in the history
  • Loading branch information
Mesteery committed Oct 11, 2021
1 parent 4f68839 commit cfff2a3
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 6 deletions.
35 changes: 29 additions & 6 deletions lib/stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
'use strict';

const {
ObjectDefineProperties,
ObjectDefineProperty,
} = primordials;

Expand Down Expand Up @@ -51,12 +52,34 @@ Stream.finished = eos;
Stream.destroy = destroyer;
Stream.compose = compose;

ObjectDefineProperty(Stream, 'promises', {
configurable: true,
enumerable: true,
get() {
return promises;
}
let consumers;
let web;
ObjectDefineProperties(Stream, {
consumers: {
configurable: true,
enumerable: true,
get() {
if (consumers === undefined)
consumers = require('stream/consumers');
return consumers;
}
},
web: {
configurable: true,
enumerable: true,
get() {
if (web === undefined)
web = require('stream/web');
return web;
}
},
promises: {
configurable: true,
enumerable: true,
get() {
return promises;
},
},
});

ObjectDefineProperty(pipeline, customPromisify, {
Expand Down
10 changes: 10 additions & 0 deletions lib/timers.js
Original file line number Diff line number Diff line change
Expand Up @@ -360,3 +360,13 @@ module.exports = {
'timers.enroll() is deprecated. Please use setTimeout instead.',
'DEP0095')
};

ObjectDefineProperty(module.exports, 'promises', {
configurable: true,
enumerable: true,
get() {
if (!timersPromises)
timersPromises = require('timers/promises');
return timersPromises;
},
});
14 changes: 14 additions & 0 deletions test/parallel/test-builtins-exports-submodules.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Flags: --no-warnings
'use strict';

require('../common');
const { strictEqual } = require('assert');
const { builtinModules } = require('module');

for (const module of builtinModules) {
if (!module.includes('/')) continue;
const subIdx = module.lastIndexOf('/');
const parent = module.slice(0, subIdx);
const child = module.slice(subIdx + 1);
strictEqual(require(parent)[child], require(module));
}

0 comments on commit cfff2a3

Please sign in to comment.