| 'use strict'; |
| |
| const { createModuleLoader } = require('internal/modules/esm/loader'); |
| const { getOptionValue } = require('internal/options'); |
| const { |
| hasUncaughtExceptionCaptureCallback, |
| } = require('internal/process/execution'); |
| const { kEmptyObject, getCWDURL } = require('internal/util'); |
| |
| let esmLoader; |
| |
| module.exports = { |
| get esmLoader() { |
| return esmLoader ??= createModuleLoader(); |
| }, |
| async loadESM(callback) { |
| esmLoader ??= createModuleLoader(); |
| try { |
| const userImports = getOptionValue('--import'); |
| if (userImports.length > 0) { |
| const parentURL = getCWDURL().href; |
| for (let i = 0; i < userImports.length; i++) { |
| await esmLoader.import(userImports[i], parentURL, kEmptyObject); |
| } |
| } else { |
| esmLoader.forceLoadHooks(); |
| } |
| await callback(esmLoader); |
| } catch (err) { |
| if (hasUncaughtExceptionCaptureCallback()) { |
| process._fatalException(err); |
| return; |
| } |
| internalBinding('errors').triggerUncaughtException( |
| err, |
| true, /* fromPromise */ |
| ); |
| } |
| }, |
| }; |