Skip to content

Commit

Permalink
lib: remove unnecessary lazy loads
Browse files Browse the repository at this point in the history
Now that more modules are included in the snapshot, it's not
necessary to lazy load them anymore

PR-URL: #38737
Refs: #35711
Reviewed-By: Anna Henningsen <anna@addaleax.net>
  • Loading branch information
joyeecheung authored and danielleadams committed May 31, 2021
1 parent 5d9442a commit 7d3a8cb
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 30 deletions.
5 changes: 1 addition & 4 deletions lib/internal/crypto/cipher.js
Expand Up @@ -60,8 +60,7 @@ const LazyTransform = require('internal/streams/lazy_transform');

const { normalizeEncoding } = require('internal/util');

// Lazy loaded for startup performance.
let StringDecoder;
const { StringDecoder } = require('string_decoder');

function rsaFunctionFor(method, defaultPadding, keyType) {
return (options, buffer) => {
Expand Down Expand Up @@ -93,8 +92,6 @@ const privateDecrypt = rsaFunctionFor(_privateDecrypt, RSA_PKCS1_OAEP_PADDING,

function getDecoder(decoder, encoding) {
encoding = normalizeEncoding(encoding);
if (StringDecoder === undefined)
StringDecoder = require('string_decoder').StringDecoder;
decoder = decoder || new StringDecoder(encoding);
assert(decoder.encoding === encoding, 'Cannot change encoding');
return decoder;
Expand Down
3 changes: 1 addition & 2 deletions lib/internal/streams/pipeline.js
Expand Up @@ -8,7 +8,7 @@ const {
SymbolAsyncIterator,
} = primordials;

let eos;
const eos = require('internal/streams/end-of-stream');

const { once } = require('internal/util');
const destroyImpl = require('internal/streams/destroy');
Expand Down Expand Up @@ -39,7 +39,6 @@ function destroyer(stream, reading, writing, callback) {
finished = true;
});

if (eos === undefined) eos = require('internal/streams/end-of-stream');
eos(stream, { readable: reading, writable: writing }, (err) => {
finished = !err;

Expand Down
12 changes: 2 additions & 10 deletions lib/internal/streams/readable.js
Expand Up @@ -66,9 +66,8 @@ const { validateObject } = require('internal/validators');

const kPaused = Symbol('kPaused');

// Lazy loaded to improve the startup performance.
let StringDecoder;
let from;
const { StringDecoder } = require('string_decoder');
const from = require('internal/streams/from');

ObjectSetPrototypeOf(Readable.prototype, Stream.prototype);
ObjectSetPrototypeOf(Readable, Stream);
Expand Down Expand Up @@ -171,8 +170,6 @@ function ReadableState(options, stream, isDuplex) {
this.decoder = null;
this.encoding = null;
if (options && options.encoding) {
if (!StringDecoder)
StringDecoder = require('string_decoder').StringDecoder;
this.decoder = new StringDecoder(options.encoding);
this.encoding = options.encoding;
}
Expand Down Expand Up @@ -334,8 +331,6 @@ Readable.prototype.isPaused = function() {

// Backwards compatibility.
Readable.prototype.setEncoding = function(enc) {
if (!StringDecoder)
StringDecoder = require('string_decoder').StringDecoder;
const decoder = new StringDecoder(enc);
this._readableState.decoder = decoder;
// If setEncoding(null), decoder.encoding equals utf8.
Expand Down Expand Up @@ -1362,8 +1357,5 @@ function endWritableNT(state, stream) {
}

Readable.from = function(iterable, opts) {
if (from === undefined) {
from = require('internal/streams/from');
}
return from(Readable, iterable, opts);
};
14 changes: 4 additions & 10 deletions lib/stream.js
Expand Up @@ -33,8 +33,7 @@ const pipeline = require('internal/streams/pipeline');
const eos = require('internal/streams/end-of-stream');
const internalBuffer = require('internal/buffer');

// Lazy loaded
let promises = null;
const promises = require('stream/promises');

const Stream = module.exports = require('internal/streams/legacy').Stream;
Stream.Readable = require('internal/streams/readable');
Expand All @@ -47,30 +46,25 @@ const { addAbortSignal } = require('internal/streams/add-abort-signal');
Stream.addAbortSignal = addAbortSignal;
Stream.finished = eos;

function lazyLoadPromises() {
if (promises === null) promises = require('stream/promises');
return promises;
}

ObjectDefineProperty(Stream, 'promises', {
configurable: true,
enumerable: true,
get() {
return lazyLoadPromises();
return promises;
}
});

ObjectDefineProperty(pipeline, customPromisify, {
enumerable: true,
get() {
return lazyLoadPromises().pipeline;
return promises.pipeline;
}
});

ObjectDefineProperty(eos, customPromisify, {
enumerable: true,
get() {
return lazyLoadPromises().finished;
return promises.finished;
}
});

Expand Down
6 changes: 2 additions & 4 deletions lib/stream/promises.js
Expand Up @@ -18,11 +18,10 @@ const {
isStream,
} = require('internal/streams/utils');

let pl;
let eos;
const pl = require('internal/streams/pipeline');
const eos = require('internal/streams/end-of-stream');

function pipeline(...streams) {
if (!pl) pl = require('internal/streams/pipeline');
return new Promise((resolve, reject) => {
let signal;
const lastArg = streams[streams.length - 1];
Expand All @@ -47,7 +46,6 @@ function pipeline(...streams) {
}

function finished(stream, opts) {
if (!eos) eos = require('internal/streams/end-of-stream');
return new Promise((resolve, reject) => {
eos(stream, opts, (err) => {
if (err) {
Expand Down
3 changes: 3 additions & 0 deletions test/parallel/test-bootstrap-modules.js
Expand Up @@ -93,6 +93,7 @@ const expectedModules = new Set([
'NativeModule internal/streams/destroy',
'NativeModule internal/streams/duplex',
'NativeModule internal/streams/end-of-stream',
'NativeModule internal/streams/from',
'NativeModule internal/streams/legacy',
'NativeModule internal/streams/passthrough',
'NativeModule internal/streams/pipeline',
Expand All @@ -116,6 +117,8 @@ const expectedModules = new Set([
'NativeModule async_hooks',
'NativeModule path',
'NativeModule stream',
'NativeModule stream/promises',
'NativeModule string_decoder',
'NativeModule timers',
'NativeModule url',
'NativeModule util',
Expand Down

0 comments on commit 7d3a8cb

Please sign in to comment.