diff --git a/graal-nodejs/lib/internal/util.js b/graal-nodejs/lib/internal/util.js index 4d72783617d..be4e60051d8 100644 --- a/graal-nodejs/lib/internal/util.js +++ b/graal-nodejs/lib/internal/util.js @@ -691,6 +691,24 @@ function isArrayBufferDetached(value) { return false; } +/** + * Helper function to lazy-load an initialize-once value. + * @template T Return value of initializer + * @param {()=>T} initializer Initializer of the lazily loaded value. + * @returns {()=>T} + */ +function getLazy(initializer) { + let value; + let initialized = false; + return function() { + if (initialized === false) { + value = initializer(); + initialized = true; + } + return value; + }; +} + // Setup user-facing NODE_V8_COVERAGE environment variable that writes // ScriptCoverage objects to a specified directory. function setupCoverageHooks(dir) { @@ -713,6 +731,7 @@ function setupCoverageHooks(dir) { } module.exports = { + getLazy, assertCrypto, cachedResult, convertToValidSignal,