Skip to content

Commit 7e08455

Browse files
authored
🤖 Merge PR DefinitelyTyped#72651 [node] v22.15 hotfix: enforce synchronous callbacks to module.registerHooks() by @Renegade334
1 parent 4bcabbe commit 7e08455

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

‎types/node/module.d.ts‎

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,12 @@ declare module "module" {
225225
* See [load hook](https://nodejs.org/docs/latest-v22.x/api/module.html#loadurl-context-nextload).
226226
* @default undefined
227227
*/
228-
load?: LoadHook | undefined;
228+
load?: LoadHookSync | undefined;
229229
/**
230230
* See [resolve hook](https://nodejs.org/docs/latest-v22.x/api/module.html#resolvespecifier-context-nextresolve).
231231
* @default undefined
232232
*/
233-
resolve?: ResolveHook | undefined;
233+
resolve?: ResolveHookSync | undefined;
234234
}
235235
interface ModuleHooks {
236236
/**
@@ -429,6 +429,14 @@ declare module "module" {
429429
context?: Partial<ResolveHookContext>,
430430
) => ResolveFnOutput | Promise<ResolveFnOutput>,
431431
) => ResolveFnOutput | Promise<ResolveFnOutput>;
432+
type ResolveHookSync = (
433+
specifier: string,
434+
context: ResolveHookContext,
435+
nextResolve: (
436+
specifier: string,
437+
context?: Partial<ResolveHookContext>,
438+
) => ResolveFnOutput,
439+
) => ResolveFnOutput;
432440
interface LoadHookContext {
433441
/**
434442
* Export conditions of the relevant `package.json`
@@ -468,6 +476,14 @@ declare module "module" {
468476
context?: Partial<LoadHookContext>,
469477
) => LoadFnOutput | Promise<LoadFnOutput>,
470478
) => LoadFnOutput | Promise<LoadFnOutput>;
479+
type LoadHookSync = (
480+
url: string,
481+
context: LoadHookContext,
482+
nextLoad: (
483+
url: string,
484+
context?: Partial<LoadHookContext>,
485+
) => LoadFnOutput,
486+
) => LoadFnOutput;
471487
/**
472488
* `path` is the resolved path for the file for which a corresponding source map
473489
* should be fetched.

‎types/node/test/module.ts‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,18 @@ Module.Module === Module;
207207
return nextLoad(url);
208208
};
209209

210-
const moduleHooks = Module.registerHooks({ load, resolve });
210+
const moduleHooks = Module.registerHooks({
211+
resolve(url, context, nextResolve) {
212+
return nextResolve(url, context);
213+
},
214+
load(url, context, nextLoad) {
215+
return nextLoad(url, context);
216+
},
217+
});
211218
moduleHooks.deregister();
219+
220+
// @ts-expect-error asynchronous hooks should be rejected by the synchronous API
221+
Module.registerHooks({ load, resolve });
212222
}
213223

214224
// Compile cache

0 commit comments

Comments
 (0)