/// /** * Snapshots various global values and allows rolling back to the snapshot. * * In particular, it: * - Restores `require.cache`, typically useful for allowing modules to be * loaded again fresh. * - Restores `require.extensions`, typically useful for unloading loader hooks * such as babel-register or ts-node. * - Restores event listeners on `process`, typically useful for preventing * hooks (especially 'exit') from being called on un-cached modules. */ export default class ProcessSnapshot { private readonly requireImpl; private readonly processImpl; private readonly log; private readonly cacheEntries; private readonly extensions; private readonly processEvents; constructor(requireImpl?: typeof require, processImpl?: typeof process, log?: typeof console.log); /** * Restores the snapshot that was captured on construction. */ restore(): void; /** * Helper to diff two maps used as snapshots. */ private static diffMaps; /** * Restores `require.cache` in place. */ private restoreRequireCache; /** * Restores `require.extensions` in place. */ private restoreExtensions; /** * Restores `process` events using the `EventEmitter` API. */ private restoreProcessEvents; /** * Snapshots the current state of `require.cache`. */ private snapshotRequireCache; /** * Snapshots the current state of `require.extensions`. */ private snapshotRequireExtensions; /** * Snapshots the current state of `process` events. */ private snapshotProcessEvents; }