context-require
Version:
Allows you to require files in a custom vm context.
44 lines (43 loc) • 1.68 kB
TypeScript
/// <reference types="node" />
import Module = require("module");
export default createContextRequire;
export declare namespace Types {
type compileFunction = (module: Module, filename: string) => any;
type resolveFunction = (from: string, request: string, parent: Module) => string;
interface RequireFunction {
<T = any>(id: string): T;
main: typeof require.main;
cache: typeof require.cache;
extensions: Partial<typeof require.extensions>;
resolve(id: string): string;
}
interface Hooks {
[x: string]: Types.compileFunction | undefined;
}
interface Options {
/** The directory from which to resolve requires for this module. */
dir: string;
/** A vm context which will be used as the context for any required modules. */
context: any;
/** A function to which will override the native module resolution. */
resolve?: resolveFunction;
/** An object containing any context specific require hooks to be used in this module. */
extensions?: Hooks;
}
}
export declare class ContextModule extends Module {
_context: any;
_cache: any;
_relativeResolveCache: Record<string, string>;
_resolve?: Types.resolveFunction;
_hooks?: Types.Hooks;
/**
* Custom nodejs Module implementation which uses a provided
* resolver, require hooks, and context.
*/
constructor({ dir, context, resolve, extensions }: Types.Options);
}
/**
* Creates a custom Module object which runs all required scripts in a provided vm context.
*/
declare function createContextRequire(options: Types.Options): Types.RequireFunction;