| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent d33dcf1 commit 69061dc
6 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,6 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | 3 | const { | |
| 4 | 4 | ObjectDefineProperty, | |
| 5 | + ObjectPrototypeHasOwnProperty, | ||
| 5 | 6 | SafeMap, | |
| 6 | 7 | } = primordials; | |
| 7 | 8 | const { | |
@@ -109,55 +110,17 @@ function stripBOM(content) { | |||
| 109 | 110 | return content; | |
| 110 | 111 | } | |
| 111 | 112 | ||
| 112 | - const builtinLibs = [ | ||
| 113 | - 'assert', | ||
| 114 | - 'async_hooks', | ||
| 115 | - 'buffer', | ||
| 116 | - 'child_process', | ||
| 117 | - 'cluster', | ||
| 118 | - 'crypto', | ||
| 119 | - 'dgram', | ||
| 120 | - 'dns', | ||
| 121 | - 'domain', | ||
| 122 | - 'events', | ||
| 123 | - 'fs', | ||
| 124 | - 'http', | ||
| 125 | - 'http2', | ||
| 126 | - 'https', | ||
| 127 | - 'net', | ||
| 128 | - 'os', | ||
| 129 | - 'path', | ||
| 130 | - 'perf_hooks', | ||
| 131 | - 'punycode', | ||
| 132 | - 'querystring', | ||
| 133 | - 'readline', | ||
| 134 | - 'repl', | ||
| 135 | - 'stream', | ||
| 136 | - 'string_decoder', | ||
| 137 | - 'tls', | ||
| 138 | - 'trace_events', | ||
| 139 | - 'tty', | ||
| 140 | - 'url', | ||
| 141 | - 'util', | ||
| 142 | - 'v8', | ||
| 143 | - 'vm', | ||
| 144 | - 'worker_threads', | ||
| 145 | - 'zlib', | ||
| 146 | - ]; | ||
| 147 | - | ||
| 148 | - if (internalBinding('config').experimentalWasi) { | ||
| 149 | - builtinLibs.push('wasi'); | ||
| 150 | - builtinLibs.sort(); | ||
| 151 | - } | ||
| 152 | - | ||
| 153 | - if (typeof internalBinding('inspector').open === 'function') { | ||
| 154 | - builtinLibs.push('inspector'); | ||
| 155 | - builtinLibs.sort(); | ||
| 156 | - } | ||
| 157 | - | ||
| 158 | 113 | function addBuiltinLibsToObject(object) { | |
| 159 | 114 | // Make built-in modules available directly (loaded lazily). | |
| 160 | - builtinLibs.forEach((name) => { | ||
| 115 | + const { builtinModules } = require('internal/modules/cjs/loader').Module; | ||
| 116 | + builtinModules.forEach((name) => { | ||
| 117 | + // Neither add underscored modules, nor ones that contain slashes (e.g., | ||
| 118 | + // 'fs/promises') or ones that are already defined. | ||
| 119 | + if (name.startsWith('_') || | ||
| 120 | + name.includes('/') || | ||
| 121 | + ObjectPrototypeHasOwnProperty(object, name)) { | ||
| 122 | + return; | ||
| 123 | + } | ||
| 161 | 124 | // Goals of this mechanism are: | |
| 162 | 125 | // - Lazy loading of built-in modules | |
| 163 | 126 | // - Having all built-in modules available as non-enumerable properties | |
@@ -203,7 +166,6 @@ function normalizeReferrerURL(referrer) { | |||
| 203 | 166 | ||
| 204 | 167 | module.exports = { | |
| 205 | 168 | addBuiltinLibsToObject, | |
| 206 | - builtinLibs, | ||
| 207 | 169 | loadNativeModule, | |
| 208 | 170 | makeRequireFunction, | |
| 209 | 171 | normalizeReferrerURL, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -63,7 +63,6 @@ const { | |||
| 63 | 63 | } = primordials; | |
| 64 | 64 | ||
| 65 | 65 | const { | |
| 66 | - builtinLibs, | ||
| 67 | 66 | makeRequireFunction, | |
| 68 | 67 | addBuiltinLibsToObject | |
| 69 | 68 | } = require('internal/modules/cjs/helpers'); | |
@@ -86,6 +85,8 @@ const { | |||
| 86 | 85 | } = require('internal/readline/utils'); | |
| 87 | 86 | const { Console } = require('console'); | |
| 88 | 87 | const CJSModule = require('internal/modules/cjs/loader').Module; | |
| 88 | + const builtinModules = [...CJSModule.builtinModules] | ||
| 89 | + .filter((e) => !e.startsWith('_')); | ||
| 89 | 90 | const domain = require('domain'); | |
| 90 | 91 | const debug = require('internal/util/debuglog').debuglog('repl'); | |
| 91 | 92 | const { | |
@@ -158,7 +159,7 @@ module.paths = CJSModule._nodeModulePaths(module.filename); | |||
| 158 | 159 | const writer = exports.writer = (obj) => inspect(obj, writer.options); | |
| 159 | 160 | writer.options = { ...inspect.defaultOptions, showProxy: true }; | |
| 160 | 161 | ||
| 161 | - exports._builtinLibs = builtinLibs; | ||
| 162 | + exports._builtinLibs = builtinModules; | ||
| 162 | 163 | ||
| 163 | 164 | function REPLServer(prompt, | |
| 164 | 165 | stream, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -17,7 +17,6 @@ const expectedModules = new Set([ | |||
| 17 | 17 | 'Internal Binding credentials', | |
| 18 | 18 | 'Internal Binding fs', | |
| 19 | 19 | 'Internal Binding fs_dir', | |
| 20 | - 'Internal Binding inspector', | ||
| 21 | 20 | 'Internal Binding module_wrap', | |
| 22 | 21 | 'Internal Binding native_module', | |
| 23 | 22 | 'Internal Binding options', | |
@@ -116,6 +115,7 @@ if (common.hasIntl) { | |||
| 116 | 115 | } | |
| 117 | 116 | ||
| 118 | 117 | if (process.features.inspector) { | |
| 118 | + expectedModules.add('Internal Binding inspector'); | ||
| 119 | 119 | expectedModules.add('NativeModule internal/inspector_async_hook'); | |
| 120 | 120 | expectedModules.add('NativeModule internal/util/inspector'); | |
| 121 | 121 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -39,6 +39,10 @@ function testStrictMode() { | |||
| 39 | 39 | } | |
| 40 | 40 | ||
| 41 | 41 | function testStrictModeTerminal() { | |
| 42 | + if (!process.features.inspector) { | ||
| 43 | + console.warn('Test skipped: V8 inspector is disabled'); | ||
| 44 | + return; | ||
| 45 | + } | ||
| 42 | 46 | // Verify that ReferenceErrors are reported in strict mode previews. | |
| 43 | 47 | const cli = initRepl(repl.REPL_MODE_STRICT, { | |
| 44 | 48 | terminal: true | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -30,6 +30,7 @@ const { | |||
| 30 | 30 | const assert = require('assert'); | |
| 31 | 31 | const path = require('path'); | |
| 32 | 32 | const fixtures = require('../common/fixtures'); | |
| 33 | + const { builtinModules } = require('module'); | ||
| 33 | 34 | const hasInspector = process.features.inspector; | |
| 34 | 35 | ||
| 35 | 36 | if (!common.isMainThread) | |
@@ -222,8 +223,9 @@ putIn.run(['.clear']); | |||
| 222 | 223 | ||
| 223 | 224 | testMe.complete('require(\'', common.mustCall(function(error, data) { | |
| 224 | 225 | assert.strictEqual(error, null); | |
| 225 | - repl._builtinLibs.forEach(function(lib) { | ||
| 226 | - assert(data[0].includes(lib), `${lib} not found`); | ||
| 226 | + builtinModules.forEach((lib) => { | ||
| 227 | + if (!lib.startsWith('_')) | ||
| 228 | + assert(data[0].includes(lib), `${lib} not found`); | ||
| 227 | 229 | }); | |
| 228 | 230 | })); | |
| 229 | 231 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments