'use strict'; var pathToFileURL = require('url').pathToFileURL; var importESM; try { // Node.js <10 errors out with a SyntaxError when loading a script that uses import(). // So a function is dynamically created to catch the SyntaxError at runtime instead of parsetime. // That way we can keep supporting all Node.js versions all the way back to 0.10. importESM = new Function('id', 'return import(id);'); } catch (e) { /* istanbul ignore next */ importESM = null; } function requireOrImport(path, callback) { var err = null; var cjs; try { cjs = require(path); } catch (e) { /* istanbul ignore else */ if (pathToFileURL && importESM) { // Because e.code is undefined on nyc process. /* istanbul ignore else */ if (e.code === 'ERR_REQUIRE_ESM' || process.env.NYC_CONFIG) { // This is needed on Windows, because import() fails if providing a Windows file path. var url = pathToFileURL(path); importESM(url).then(function(esm) { callback(null, esm); }, callback); return; } } /* istanbul ignore next */ err = e; } process.nextTick(function() { callback(err, cjs); }); } module.exports = requireOrImport;