1/** 2 * Type definitions for require(), which is necessary in Jest tests when resetting 3 * the module cache or explicitly requiring mocks or actual modules. 4 * 5 * These type definitions are from the @types/node definitions. 6 */ 7type NodeRequireFunction = (id: string) => any; 8 9interface NodeRequire extends NodeRequireFunction { 10 resolve: RequireResolve; 11 cache: any; 12 extensions: NodeExtensions; 13 main: NodeModule | undefined; 14} 15 16interface RequireResolve { 17 (id: string, options?: { paths?: string[] }): string; 18 paths(request: string): string[] | null; 19} 20 21interface NodeExtensions { 22 '.js': (m: NodeModule, filename: string) => any; 23 '.json': (m: NodeModule, filename: string) => any; 24 '.node': (m: NodeModule, filename: string) => any; 25 [ext: string]: (m: NodeModule, filename: string) => any; 26} 27 28interface NodeModule { 29 exports: any; 30 require: NodeRequireFunction; 31 id: string; 32 filename: string; 33 loaded: boolean; 34 parent: NodeModule | null; 35 children: NodeModule[]; 36 paths: string[]; 37} 38 39declare var require: NodeRequire; 40