@types/source-map-support
Version:
TypeScript definitions for source-map-support
203 lines (181 loc) • 6 kB
TypeScript
import { RawSourceMap } from "source-map";
/**
* Output of `retrieveSourceMap()`.
* The map field may be either a string or the parsed JSON object (i.e.,
* it must be a valid argument to the SourceMapConsumer constructor).
*/
export interface UrlAndMap {
url?: string | undefined;
map: string | RawSourceMap;
}
export type Environment = "auto" | "browser" | "node";
/**
* Options to install().
*/
export interface Options {
/**
* This module installs two things: a change to the `stack` property on `Error`
* objects and a handler for uncaught exceptions that mimics node's default exception
* handler (the handler can be seen in the demos below). You may want to disable the
* handler if you have your own uncaught exception handler. This can be done by passing
* an argument to the installer.
*
* @example
* import { install } from 'source-map-support';
*
* install({
* handleUncaughtExceptions: false
* });
*/
handleUncaughtExceptions?: boolean | undefined;
/**
* To support files with inline source maps, the `hookRequire` options can be specified,
* which will monitor all source files for inline source maps.
*
* This monkey patches the `require` module loading chain, so is not enabled by default
* and is not recommended for any sort of production usage.
*
* @example
* import { install } from 'source-map-support';
*
* install({
* hookRequire: true
* });
* ```
*/
hookRequire?: boolean | undefined;
/**
* If `true`, the caches are reset before a stack trace formatting operation.
*/
emptyCacheBetweenOperations?: boolean | undefined;
/**
* The module will by default assume a browser environment if `XMLHttpRequest` and `window`
* are defined. If either of these do not exist it will instead assume a node environment.
* In some rare cases, e.g. when running a browser emulation and where both variables are
* also set, you can explicitly specify the environment to be either `'browser'` or `'node'`.
*
* @example
* import { install } from 'source-map-support';
*
* install({
* environment: 'node'
* });
*/
environment?: Environment | undefined;
/**
* Disable all other means of retrieving file contents and use only the provided
* `retrieveFile` handler.
*/
overrideRetrieveFile?: boolean | undefined;
/**
* Disable all other means of retrieving source maps and use only the provided
* `retrieveSourceMap` handler.
*/
overrideRetrieveSourceMap?: boolean | undefined;
/**
* Allow sources to be found by methods other than reading the files
* directly from disk.
*/
retrieveFile?(path: string): string | null;
/**
* This module loads source maps from the filesystem by default. You can provide alternate
* loading behavior through a callback as shown below. For example, [Meteor](https://github.com/meteor)
* keeps all source maps cached in memory to avoid disk access.
*
* @example
* import { install } from 'source-map-support';
*
* install({
* retrieveSourceMap(source) {
* if (source === 'compiled.js') {
* return {
* url: 'original.js',
* map: fs.readFileSync('compiled.js.map', 'utf8')
* };
* }
* return null;
* }
* });
*/
retrieveSourceMap?(source: string): UrlAndMap | null;
}
export interface Position {
source: string;
line: number;
column: number;
}
export interface State {
nextPosition: Position | null;
curPosition: Position | null;
}
export interface CallSite {
/**
* Value of "this"
*/
getThis(): any;
/**
* Type of "this" as a string.
* This is the name of the function stored in the constructor field of
* "this", if available. Otherwise the object's [[Class]] internal
* property.
*/
getTypeName(): string | null;
/**
* Current function
*/
getFunction(): ((...args: unknown[]) => any) | undefined;
/**
* Name of the current function, typically its name property.
* If a name property is not available an attempt will be made to try
* to infer a name from the function's context.
*/
getFunctionName(): string | null;
/**
* Name of the property [of "this" or one of its prototypes] that holds
* the current function
*/
getMethodName(): string | null;
/**
* Name of the script [if this function was defined in a script]
*/
getFileName(): string | null;
/**
* Current line number [if this function was defined in a script]
*/
getLineNumber(): number | null;
/**
* Current column number [if this function was defined in a script]
*/
getColumnNumber(): number | null;
/**
* A call site object representing the location where eval was called
* [if this function was created using a call to eval]
*/
getEvalOrigin(): string | undefined;
/**
* Is this a toplevel invocation, that is, is "this" the global object?
*/
isToplevel(): boolean;
/**
* Does this call take place in code defined by a call to eval?
*/
isEval(): boolean;
/**
* Is this call in native V8 code?
*/
isNative(): boolean;
/**
* Is this a constructor call?
*/
isConstructor(): boolean;
getScriptNameOrSourceURL?(): string;
}
export function wrapCallSite(frame: CallSite, state?: State): CallSite;
export function getErrorSource(error: Error): string | null;
export function mapSourcePosition(position: Position): Position;
export function retrieveSourceMap(source: string): UrlAndMap | null;
export function resetRetrieveHandlers(): void;
/**
* Install SourceMap support.
*/
export function install(options?: Options): void;