| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 73c16b1 commit e2c0c0c
13 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -338,7 +338,7 @@ function initializePolicy() { | |||
| 338 | 338 | } | |
| 339 | 339 | ||
| 340 | 340 | function initializeCJSLoader() { | |
| 341 | - require('internal/modules/cjs/loader')._initPaths(); | ||
| 341 | + require('internal/modules/cjs/loader').Module._initPaths(); | ||
| 342 | 342 | } | |
| 343 | 343 | ||
| 344 | 344 | function initializeESMLoader() { | |
@@ -387,7 +387,9 @@ function loadPreloadModules() { | |||
| 387 | 387 | const preloadModules = getOptionValue('--require'); | |
| 388 | 388 | if (preloadModules) { | |
| 389 | 389 | const { | |
| 390 | - _preloadModules | ||
| 390 | + Module: { | ||
| 391 | + _preloadModules | ||
| 392 | + }, | ||
| 391 | 393 | } = require('internal/modules/cjs/loader'); | |
| 392 | 394 | _preloadModules(preloadModules); | |
| 393 | 395 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -13,14 +13,15 @@ const { | |||
| 13 | 13 | ||
| 14 | 14 | const { pathToFileURL } = require('url'); | |
| 15 | 15 | ||
| 16 | - const vm = require('vm'); | ||
| 17 | 16 | const { | |
| 18 | - stripShebang, stripBOM | ||
| 17 | + stripShebangOrBOM, | ||
| 19 | 18 | } = require('internal/modules/cjs/helpers'); | |
| 20 | 19 | ||
| 21 | 20 | const { | |
| 22 | - _resolveFilename: resolveCJSModuleName, | ||
| 23 | - wrap: wrapCJSModule | ||
| 21 | + Module: { | ||
| 22 | + _resolveFilename: resolveCJSModuleName, | ||
| 23 | + }, | ||
| 24 | + wrapSafe, | ||
| 24 | 25 | } = require('internal/modules/cjs/loader'); | |
| 25 | 26 | ||
| 26 | 27 | // TODO(joyeecheung): not every one of these are necessary | |
@@ -49,9 +50,6 @@ if (process.argv[1] && process.argv[1] !== '-') { | |||
| 49 | 50 | } | |
| 50 | 51 | ||
| 51 | 52 | function checkSyntax(source, filename) { | |
| 52 | - // Remove Shebang. | ||
| 53 | - source = stripShebang(source); | ||
| 54 | - | ||
| 55 | 53 | const { getOptionValue } = require('internal/options'); | |
| 56 | 54 | const experimentalModules = getOptionValue('--experimental-modules'); | |
| 57 | 55 | if (experimentalModules) { | |
@@ -70,10 +68,5 @@ function checkSyntax(source, filename) { | |||
| 70 | 68 | } | |
| 71 | 69 | } | |
| 72 | 70 | ||
| 73 | - // Remove BOM. | ||
| 74 | - source = stripBOM(source); | ||
| 75 | - // Wrap it. | ||
| 76 | - source = wrapCJSModule(source); | ||
| 77 | - // Compile the script, this will throw if it fails. | ||
| 78 | - new vm.Script(source, { displayErrors: true, filename }); | ||
| 71 | + wrapSafe(filename, stripShebangOrBOM(source)); | ||
| 79 | 72 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -6,7 +6,7 @@ const { | |||
| 6 | 6 | ||
| 7 | 7 | prepareMainThreadExecution(true); | |
| 8 | 8 | ||
| 9 | - const CJSModule = require('internal/modules/cjs/loader'); | ||
| 9 | + const CJSModule = require('internal/modules/cjs/loader').Module; | ||
| 10 | 10 | ||
| 11 | 11 | markBootstrapComplete(); | |
| 12 | 12 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -72,6 +72,17 @@ function stripShebang(content) { | |||
| 72 | 72 | return content; | |
| 73 | 73 | } | |
| 74 | 74 | ||
| 75 | + // Strip either the shebang or UTF BOM of a file. | ||
| 76 | + // Note that this only processes one. If both occur in | ||
| 77 | + // either order, the one that comes second is not | ||
| 78 | + // significant. | ||
| 79 | + function stripShebangOrBOM(content) { | ||
| 80 | + if (content.charCodeAt(0) === 0xFEFF) { | ||
| 81 | + return content.slice(1); | ||
| 82 | + } | ||
| 83 | + return stripShebang(content); | ||
| 84 | + } | ||
| 85 | + | ||
| 75 | 86 | const builtinLibs = [ | |
| 76 | 87 | 'assert', 'async_hooks', 'buffer', 'child_process', 'cluster', 'crypto', | |
| 77 | 88 | 'dgram', 'dns', 'domain', 'events', 'fs', 'http', 'http2', 'https', 'net', | |
@@ -137,5 +148,6 @@ module.exports = { | |||
| 137 | 148 | makeRequireFunction, | |
| 138 | 149 | normalizeReferrerURL, | |
| 139 | 150 | stripBOM, | |
| 140 | - stripShebang | ||
| 151 | + stripShebang, | ||
| 152 | + stripShebangOrBOM, | ||
| 141 | 153 | }; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -40,7 +40,7 @@ const { | |||
| 40 | 40 | makeRequireFunction, | |
| 41 | 41 | normalizeReferrerURL, | |
| 42 | 42 | stripBOM, | |
| 43 | - stripShebang | ||
| 43 | + stripShebangOrBOM, | ||
| 44 | 44 | } = require('internal/modules/cjs/helpers'); | |
| 45 | 45 | const { getOptionValue } = require('internal/options'); | |
| 46 | 46 | const preserveSymlinks = getOptionValue('--preserve-symlinks'); | |
@@ -59,7 +59,7 @@ const { | |||
| 59 | 59 | const { validateString } = require('internal/validators'); | |
| 60 | 60 | const pendingDeprecation = getOptionValue('--pending-deprecation'); | |
| 61 | 61 | ||
| 62 | - module.exports = Module; | ||
| 62 | + module.exports = { wrapSafe, Module }; | ||
| 63 | 63 | ||
| 64 | 64 | let asyncESM; | |
| 65 | 65 | let ModuleJob; | |
@@ -690,22 +690,10 @@ Module.prototype.require = function(id) { | |||
| 690 | 690 | var resolvedArgv; | |
| 691 | 691 | let hasPausedEntry = false; | |
| 692 | 692 | ||
| 693 | - // Run the file contents in the correct scope or sandbox. Expose | ||
| 694 | - // the correct helper variables (require, module, exports) to | ||
| 695 | - // the file. | ||
| 696 | - // Returns exception, if any. | ||
| 697 | - Module.prototype._compile = function(content, filename) { | ||
| 698 | - if (manifest) { | ||
| 699 | - const moduleURL = pathToFileURL(filename); | ||
| 700 | - manifest.assertIntegrity(moduleURL, content); | ||
| 701 | - } | ||
| 702 | - | ||
| 703 | - content = stripShebang(content); | ||
| 704 | - | ||
| 705 | - let compiledWrapper; | ||
| 693 | + function wrapSafe(filename, content) { | ||
| 706 | 694 | if (patched) { | |
| 707 | 695 | const wrapper = Module.wrap(content); | |
| 708 | - compiledWrapper = vm.runInThisContext(wrapper, { | ||
| 696 | + return vm.runInThisContext(wrapper, { | ||
| 709 | 697 | filename, | |
| 710 | 698 | lineOffset: 0, | |
| 711 | 699 | displayErrors: true, | |
@@ -714,35 +702,54 @@ Module.prototype._compile = function(content, filename) { | |||
| 714 | 702 | return loader.import(specifier, normalizeReferrerURL(filename)); | |
| 715 | 703 | } : undefined, | |
| 716 | 704 | }); | |
| 717 | - } else { | ||
| 718 | - compiledWrapper = compileFunction( | ||
| 719 | - content, | ||
| 720 | - filename, | ||
| 721 | - 0, | ||
| 722 | - 0, | ||
| 723 | - undefined, | ||
| 724 | - false, | ||
| 725 | - undefined, | ||
| 726 | - [], | ||
| 727 | - [ | ||
| 728 | - 'exports', | ||
| 729 | - 'require', | ||
| 730 | - 'module', | ||
| 731 | - '__filename', | ||
| 732 | - '__dirname', | ||
| 733 | - ] | ||
| 734 | - ); | ||
| 735 | - if (experimentalModules) { | ||
| 736 | - const { callbackMap } = internalBinding('module_wrap'); | ||
| 737 | - callbackMap.set(compiledWrapper, { | ||
| 738 | - importModuleDynamically: async (specifier) => { | ||
| 739 | - const loader = await asyncESM.loaderPromise; | ||
| 740 | - return loader.import(specifier, normalizeReferrerURL(filename)); | ||
| 741 | - } | ||
| 742 | - }); | ||
| 743 | - } | ||
| 744 | 705 | } | |
| 745 | 706 | ||
| 707 | + const compiledWrapper = compileFunction( | ||
| 708 | + content, | ||
| 709 | + filename, | ||
| 710 | + 0, | ||
| 711 | + 0, | ||
| 712 | + undefined, | ||
| 713 | + false, | ||
| 714 | + undefined, | ||
| 715 | + [], | ||
| 716 | + [ | ||
| 717 | + 'exports', | ||
| 718 | + 'require', | ||
| 719 | + 'module', | ||
| 720 | + '__filename', | ||
| 721 | + '__dirname', | ||
| 722 | + ] | ||
| 723 | + ); | ||
| 724 | + | ||
| 725 | + if (experimentalModules) { | ||
| 726 | + const { callbackMap } = internalBinding('module_wrap'); | ||
| 727 | + callbackMap.set(compiledWrapper, { | ||
| 728 | + importModuleDynamically: async (specifier) => { | ||
| 729 | + const loader = await asyncESM.loaderPromise; | ||
| 730 | + return loader.import(specifier, normalizeReferrerURL(filename)); | ||
| 731 | + } | ||
| 732 | + }); | ||
| 733 | + } | ||
| 734 | + | ||
| 735 | + return compiledWrapper; | ||
| 736 | + } | ||
| 737 | + | ||
| 738 | + // Run the file contents in the correct scope or sandbox. Expose | ||
| 739 | + // the correct helper variables (require, module, exports) to | ||
| 740 | + // the file. | ||
| 741 | + // Returns exception, if any. | ||
| 742 | + Module.prototype._compile = function(content, filename) { | ||
| 743 | + if (manifest) { | ||
| 744 | + const moduleURL = pathToFileURL(filename); | ||
| 745 | + manifest.assertIntegrity(moduleURL, content); | ||
| 746 | + } | ||
| 747 | + | ||
| 748 | + // Strip after manifest integrity check | ||
| 749 | + content = stripShebangOrBOM(content); | ||
| 750 | + | ||
| 751 | + const compiledWrapper = wrapSafe(filename, content); | ||
| 752 | + | ||
| 746 | 753 | var inspectorWrapper = null; | |
| 747 | 754 | if (getOptionValue('--inspect-brk') && process._eval == null) { | |
| 748 | 755 | if (!resolvedArgv) { | |
@@ -782,7 +789,7 @@ Module.prototype._compile = function(content, filename) { | |||
| 782 | 789 | // Native extension for .js | |
| 783 | 790 | Module._extensions['.js'] = function(module, filename) { | |
| 784 | 791 | const content = fs.readFileSync(filename, 'utf8'); | |
| 785 | - module._compile(stripBOM(content), filename); | ||
| 792 | + module._compile(content, filename); | ||
| 786 | 793 | }; | |
| 787 | 794 | ||
| 788 | 795 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -11,10 +11,9 @@ const { | |||
| 11 | 11 | ||
| 12 | 12 | const { NativeModule } = require('internal/bootstrap/loaders'); | |
| 13 | 13 | const { | |
| 14 | - stripShebang, | ||
| 15 | 14 | stripBOM | |
| 16 | 15 | } = require('internal/modules/cjs/helpers'); | |
| 17 | - const CJSModule = require('internal/modules/cjs/loader'); | ||
| 16 | + const CJSModule = require('internal/modules/cjs/loader').Module; | ||
| 18 | 17 | const internalURLModule = require('internal/url'); | |
| 19 | 18 | const createDynamicModule = require( | |
| 20 | 19 | 'internal/modules/esm/create_dynamic_module'); | |
@@ -48,7 +47,7 @@ translators.set('module', async function moduleStrategy(url) { | |||
| 48 | 47 | const source = `${await readFileAsync(new URL(url))}`; | |
| 49 | 48 | debug(`Translating StandardModule ${url}`); | |
| 50 | 49 | const { ModuleWrap, callbackMap } = internalBinding('module_wrap'); | |
| 51 | - const module = new ModuleWrap(stripShebang(source), url); | ||
| 50 | + const module = new ModuleWrap(source, url); | ||
| 52 | 51 | callbackMap.set(module, { | |
| 53 | 52 | initializeImportMeta, | |
| 54 | 53 | importModuleDynamically, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -53,7 +53,7 @@ function evalModule(source, print) { | |||
| 53 | 53 | } | |
| 54 | 54 | ||
| 55 | 55 | function evalScript(name, body, breakFirstLine, print) { | |
| 56 | - const CJSModule = require('internal/modules/cjs/loader'); | ||
| 56 | + const CJSModule = require('internal/modules/cjs/loader').Module; | ||
| 57 | 57 | const { kVmBreakFirstLineSymbol } = require('internal/util'); | |
| 58 | 58 | ||
| 59 | 59 | const cwd = tryGetCwd(); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -24,7 +24,7 @@ function sendInspectorCommand(cb, onError) { | |||
| 24 | 24 | function installConsoleExtensions(commandLineApi) { | |
| 25 | 25 | if (commandLineApi.require) { return; } | |
| 26 | 26 | const { tryGetCwd } = require('internal/process/execution'); | |
| 27 | - const CJSModule = require('internal/modules/cjs/loader'); | ||
| 27 | + const CJSModule = require('internal/modules/cjs/loader').Module; | ||
| 28 | 28 | const { makeRequireFunction } = require('internal/modules/cjs/helpers'); | |
| 29 | 29 | const consoleAPIModule = new CJSModule('<inspector console>'); | |
| 30 | 30 | const cwd = tryGetCwd(); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,3 +1,3 @@ | |||
| 1 | 1 | 'use strict'; | |
| 2 | 2 | ||
| 3 | - module.exports = require('internal/modules/cjs/loader'); | ||
| 3 | + module.exports = require('internal/modules/cjs/loader').Module; | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -65,7 +65,7 @@ const path = require('path'); | |||
| 65 | 65 | const fs = require('fs'); | |
| 66 | 66 | const { Interface } = require('readline'); | |
| 67 | 67 | const { Console } = require('console'); | |
| 68 | - const CJSModule = require('internal/modules/cjs/loader'); | ||
| 68 | + const CJSModule = require('internal/modules/cjs/loader').Module; | ||
| 69 | 69 | const domain = require('domain'); | |
| 70 | 70 | const debug = require('internal/util/debuglog').debuglog('repl'); | |
| 71 | 71 | const { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments