fix: stub node:module.register() (#24965)

This is commonly used to register loading non standard file types. But
some libs also register TS loaders which Deno supports natively, like
the npm `payload` package. This PR unblocks those.

Fixes https://github.com/denoland/deno/issues/24902
This commit is contained in:
Marvin Hagemeister 2024-08-09 14:25:33 +02:00 committed by GitHub
parent fc02303842
commit f474c4f4ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 0 deletions

View File

@ -1293,6 +1293,19 @@ export function findSourceMap(_path) {
return undefined;
}
/**
* @param {string | URL} _specifier
* @param {string | URL} _parentUrl
* @param {{ parentURL: string | URL, data: any, transferList: any[] }} [_options]
*/
export function register(_specifier, _parentUrl, _options) {
// TODO(@marvinhagemeister): Stub implementation for programs registering
// TypeScript loaders. We don't support registering loaders for file
// types that Deno itself doesn't support at the moment.
return undefined;
}
export { builtinModules, createRequire, isBuiltin, Module };
export const _cache = Module._cache;
export const _extensions = Module._extensions;

View File

@ -6,6 +6,11 @@ import {
findSourceMap,
isBuiltin,
Module,
// @ts-ignore Our internal @types/node is at v18.16.19 which predates
// this change. Updating it is difficult due to different types in Node
// for `import.meta.filename` and `import.meta.dirname` that Deno
// provides.
register,
} from "node:module";
import { assert, assertEquals } from "@std/assert";
import process from "node:process";
@ -99,3 +104,8 @@ Deno.test("[node/module builtinModules] has 'module' in builtins", () => {
Deno.test("[node/module findSourceMap] is a function", () => {
assertEquals(findSourceMap("foo"), undefined);
});
// https://github.com/denoland/deno/issues/24902
Deno.test("[node/module register] is a function", () => {
assertEquals(register("foo"), undefined);
});