summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/01_require.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/polyfills/01_require.js')
-rw-r--r--ext/node/polyfills/01_require.js68
1 files changed, 43 insertions, 25 deletions
diff --git a/ext/node/polyfills/01_require.js b/ext/node/polyfills/01_require.js
index 5b0980c31..083d4e49b 100644
--- a/ext/node/polyfills/01_require.js
+++ b/ext/node/polyfills/01_require.js
@@ -11,6 +11,7 @@ import {
op_require_can_parse_as_esm,
op_require_init_paths,
op_require_is_deno_dir_package,
+ op_require_is_maybe_cjs,
op_require_is_request_relative,
op_require_node_module_paths,
op_require_package_imports_resolve,
@@ -19,7 +20,6 @@ import {
op_require_path_is_absolute,
op_require_path_resolve,
op_require_proxy_path,
- op_require_read_closest_package_json,
op_require_read_file,
op_require_read_package_scope,
op_require_real_path,
@@ -523,17 +523,13 @@ function resolveExports(
return;
}
- if (!parentPath) {
- return false;
- }
-
return op_require_resolve_exports(
usesLocalNodeModulesDir,
modulesPath,
request,
name,
expansion,
- parentPath,
+ parentPath ?? "",
) ?? false;
}
@@ -1064,23 +1060,22 @@ Module.prototype._compile = function (content, filename, format) {
return result;
};
-Module._extensions[".js"] = function (module, filename) {
- const content = op_require_read_file(filename);
-
- let format;
- if (StringPrototypeEndsWith(filename, ".js")) {
- const pkg = op_require_read_closest_package_json(filename);
- if (pkg?.type === "module") {
- format = "module";
- } else if (pkg?.type === "commonjs") {
- format = "commonjs";
- }
- } else if (StringPrototypeEndsWith(filename, ".cjs")) {
- format = "commonjs";
- }
-
- module._compile(content, filename, format);
-};
+Module._extensions[".js"] =
+ Module._extensions[".ts"] =
+ Module._extensions[".jsx"] =
+ Module._extensions[".tsx"] =
+ function (module, filename) {
+ const content = op_require_read_file(filename);
+ const format = op_require_is_maybe_cjs(filename) ? undefined : "module";
+ module._compile(content, filename, format);
+ };
+
+Module._extensions[".cjs"] =
+ Module._extensions[".cts"] =
+ function (module, filename) {
+ const content = op_require_read_file(filename);
+ module._compile(content, filename, "commonjs");
+ };
function loadESMFromCJS(module, filename, code) {
const namespace = op_import_sync(
@@ -1091,7 +1086,10 @@ function loadESMFromCJS(module, filename, code) {
module.exports = namespace;
}
-Module._extensions[".mjs"] = function (module, filename) {
+Module._extensions[".mjs"] = Module._extensions[".mts"] = function (
+ module,
+ filename,
+) {
loadESMFromCJS(module, filename);
};
@@ -1212,6 +1210,24 @@ function isBuiltin(moduleName) {
!StringPrototypeStartsWith(moduleName, "internal/");
}
+function getBuiltinModule(id) {
+ if (!isBuiltin(id)) {
+ return undefined;
+ }
+
+ if (StringPrototypeStartsWith(id, "node:")) {
+ // Slice 'node:' prefix
+ id = StringPrototypeSlice(id, 5);
+ }
+
+ const mod = loadNativeModule(id, id);
+ if (mod) {
+ return mod.exports;
+ }
+
+ return undefined;
+}
+
Module.isBuiltin = isBuiltin;
Module.createRequire = createRequire;
@@ -1291,6 +1307,8 @@ export function findSourceMap(_path) {
return undefined;
}
+Module.findSourceMap = findSourceMap;
+
/**
* @param {string | URL} _specifier
* @param {string | URL} _parentUrl
@@ -1304,7 +1322,7 @@ export function register(_specifier, _parentUrl, _options) {
return undefined;
}
-export { builtinModules, createRequire, isBuiltin, Module };
+export { builtinModules, createRequire, getBuiltinModule, isBuiltin, Module };
export const _cache = Module._cache;
export const _extensions = Module._extensions;
export const _findPath = Module._findPath;