declare module 'vm' { interface Context extends NodeJS.Dict { } interface BaseOptions { /** * Specifies the filename used in stack traces produced by this script. * Default: `''`. */ filename?: string; /** * Specifies the line number offset that is displayed in stack traces produced by this script. * Default: `0`. */ lineOffset?: number; /** * Specifies the column number offset that is displayed in stack traces produced by this script. * @default 0 */ columnOffset?: number; } interface ScriptOptions extends BaseOptions { displayErrors?: boolean; timeout?: number; cachedData?: Buffer; /** @deprecated in favor of `script.createCachedData()` */ produceCachedData?: boolean; } interface RunningScriptOptions extends BaseOptions { /** * When `true`, if an `Error` occurs while compiling the `code`, the line of code causing the error is attached to the stack trace. * Default: `true`. */ displayErrors?: boolean; /** * Specifies the number of milliseconds to execute code before terminating execution. * If execution is terminated, an `Error` will be thrown. This value must be a strictly positive integer. */ timeout?: number; /** * If `true`, the execution will be terminated when `SIGINT` (Ctrl+C) is received. * Existing handlers for the event that have been attached via `process.on('SIGINT')` will be disabled during script execution, but will continue to work after that. * If execution is terminated, an `Error` will be thrown. * Default: `false`. */ breakOnSigint?: boolean; /** * If set to `afterEvaluate`, microtasks will be run immediately after the script has run. */ microtaskMode?: 'afterEvaluate'; } interface CompileFunctionOptions extends BaseOptions { /** * Provides an optional data with V8's code cache data for the supplied source. */ cachedData?: Buffer; /** * Specifies whether to produce new cache data. * Default: `false`, */ produceCachedData?: boolean; /** * The sandbox/context in which the said function should be compiled in. */ parsingContext?: Context; /** * An array containing a collection of context extensions (objects wrapping the current scope) to be applied while compiling */ contextExtensions?: Object[]; } interface CreateContextOptions { /** * Human-readable name of the newly created context. * @default 'VM Context i' Where i is an ascending numerical index of the created context. */ name?: string; /** * Corresponds to the newly created context for display purposes. * The origin should be formatted like a `URL`, but with only the scheme, host, and port (if necessary), * like the value of the `url.origin` property of a URL object. * Most notably, this string should omit the trailing slash, as that denotes a path. * @default '' */ origin?: string; codeGeneration?: { /** * If set to false any calls to eval or function constructors (Function, GeneratorFunction, etc) * will throw an EvalError. * @default true */ strings?: boolean; /** * If set to false any attempt to compile a WebAssembly module will throw a WebAssembly.CompileError. * @default true */ wasm?: boolean; }; /** * If set to `afterEvaluate`, microtasks will be run immediately after the script has run. */ microtaskMode?: 'afterEvaluate'; } type MeasureMemoryMode = 'summary' | 'detailed'; interface MeasureMemoryOptions { /** * @default 'summary' */ mode?: MeasureMemoryMode; context?: Context; } interface MemoryMeasurement { total: { jsMemoryEstimate: number; jsMemoryRange: [number, number]; }; } class Script { constructor(code: string, options?: ScriptOptions); runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any; runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any; runInThisContext(options?: RunningScriptOptions): any; createCachedData(): Buffer; cachedDataRejected?: boolean; } function createContext(sandbox?: Context, options?: CreateContextOptions): Context; function isContext(sandbox: Context): boolean; function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions | string): any; function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions | string): any; function runInThisContext(code: string, options?: RunningScriptOptions | string): any; function compileFunction(code: string, params?: ReadonlyArray, options?: CompileFunctionOptions): Function; /** * Measure the memory known to V8 and used by the current execution context or a specified context. * * The format of the object that the returned Promise may resolve with is * specific to the V8 engine and may change from one version of V8 to the next. * * The returned result is different from the statistics returned by * `v8.getHeapSpaceStatistics()` in that `vm.measureMemory()` measures * the memory reachable by V8 from a specific context, while * `v8.getHeapSpaceStatistics()` measures the memory used by an instance * of V8 engine, which can switch among multiple contexts that reference * objects in the heap of one engine. * * @experimental */ function measureMemory(options?: MeasureMemoryOptions): Promise; }