// Type definitions for source-map 0.7 // Project: https://github.com/mozilla/source-map // Definitions by: Morten Houston Ludvigsen , // Ron Buckton , // John Vilk // Definitions: https://github.com/mozilla/source-map export type SourceMapUrl = string; export interface StartOfSourceMap { file?: string; sourceRoot?: string; skipValidation?: boolean; } export interface RawSourceMap { version: number; sources: string[]; names: string[]; sourceRoot?: string; sourcesContent?: string[]; mappings: string; file: string; } export interface RawIndexMap extends StartOfSourceMap { version: number; sections: RawSection[]; } export interface RawSection { offset: Position; map: RawSourceMap; } export interface Position { line: number; column: number; } export interface NullablePosition { line: number | null; column: number | null; lastColumn: number | null; } export interface MappedPosition { source: string; line: number; column: number; name?: string; } export interface NullableMappedPosition { source: string | null; line: number | null; column: number | null; name: string | null; } export interface MappingItem { source: string; generatedLine: number; generatedColumn: number; originalLine: number; originalColumn: number; name: string; } export interface Mapping { generated: Position; original: Position; source: string; name?: string; } export interface CodeWithSourceMap { code: string; map: SourceMapGenerator; } export interface SourceMapConsumer { /** * Compute the last column for each generated mapping. The last column is * inclusive. */ computeColumnSpans(): void; /** * Returns the original source, line, and column information for the generated * source's line and column positions provided. The only argument is an object * with the following properties: * * - line: The line number in the generated source. * - column: The column number in the generated source. * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the * closest element that is smaller than or greater than the one we are * searching for, respectively, if the exact element cannot be found. * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. * * and an object is returned with the following properties: * * - source: The original source file, or null. * - line: The line number in the original source, or null. * - column: The column number in the original source, or null. * - name: The original identifier, or null. */ originalPositionFor(generatedPosition: Position & { bias?: number }): NullableMappedPosition; /** * Returns the generated line and column information for the original source, * line, and column positions provided. The only argument is an object with * the following properties: * * - source: The filename of the original source. * - line: The line number in the original source. * - column: The column number in the original source. * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the * closest element that is smaller than or greater than the one we are * searching for, respectively, if the exact element cannot be found. * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. * * and an object is returned with the following properties: * * - line: The line number in the generated source, or null. * - column: The column number in the generated source, or null. */ generatedPositionFor(originalPosition: MappedPosition & { bias?: number }): NullablePosition; /** * Returns all generated line and column information for the original source, * line, and column provided. If no column is provided, returns all mappings * corresponding to a either the line we are searching for or the next * closest line that has any mappings. Otherwise, returns all mappings * corresponding to the given line and either the column we are searching for * or the next closest column that has any offsets. * * The only argument is an object with the following properties: * * - source: The filename of the original source. * - line: The line number in the original source. * - column: Optional. the column number in the original source. * * and an array of objects is returned, each with the following properties: * * - line: The line number in the generated source, or null. * - column: The column number in the generated source, or null. */ allGeneratedPositionsFor(originalPosition: MappedPosition): NullablePosition[]; /** * Return true if we have the source content for every source in the source * map, false otherwise. */ hasContentsOfAllSources(): boolean; /** * Returns the original source content. The only argument is the url of the * original source file. Returns null if no original source content is * available. */ sourceContentFor(source: string, returnNullOnMissing?: boolean): string | null; /** * Iterate over each mapping between an original source/line/column and a * generated line/column in this source map. * * @param callback * The function that is called with each mapping. * @param context * Optional. If specified, this object will be the value of `this` every * time that `aCallback` is called. * @param order * Either `SourceMapConsumer.GENERATED_ORDER` or * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to * iterate over the mappings sorted by the generated file's line/column * order or the original's source/line/column order, respectively. Defaults to * `SourceMapConsumer.GENERATED_ORDER`. */ eachMapping(callback: (mapping: MappingItem) => void, context?: any, order?: number): void; /** * Free this source map consumer's associated wasm data that is manually-managed. * Alternatively, you can use SourceMapConsumer.with to avoid needing to remember to call destroy. */ destroy(): void; } export interface SourceMapConsumerConstructor { prototype: SourceMapConsumer; GENERATED_ORDER: number; ORIGINAL_ORDER: number; GREATEST_LOWER_BOUND: number; LEAST_UPPER_BOUND: number; new (rawSourceMap: RawSourceMap, sourceMapUrl?: SourceMapUrl): Promise; new (rawSourceMap: RawIndexMap, sourceMapUrl?: SourceMapUrl): Promise; new (rawSourceMap: RawSourceMap | RawIndexMap | string, sourceMapUrl?: SourceMapUrl): Promise; /** * Create a BasicSourceMapConsumer from a SourceMapGenerator. * * @param sourceMap * The source map that will be consumed. */ fromSourceMap(sourceMap: SourceMapGenerator, sourceMapUrl?: SourceMapUrl): Promise; /** * Construct a new `SourceMapConsumer` from `rawSourceMap` and `sourceMapUrl` * (see the `SourceMapConsumer` constructor for details. Then, invoke the `async * function f(SourceMapConsumer) -> T` with the newly constructed consumer, wait * for `f` to complete, call `destroy` on the consumer, and return `f`'s return * value. * * You must not use the consumer after `f` completes! * * By using `with`, you do not have to remember to manually call `destroy` on * the consumer, since it will be called automatically once `f` completes. * * ```js * const xSquared = await SourceMapConsumer.with( * myRawSourceMap, * null, * async function (consumer) { * // Use `consumer` inside here and don't worry about remembering * // to call `destroy`. * * const x = await whatever(consumer); * return x * x; * } * ); * * // You may not use that `consumer` anymore out here; it has * // been destroyed. But you can use `xSquared`. * console.log(xSquared); * ``` */ with(rawSourceMap: RawSourceMap | RawIndexMap | string, sourceMapUrl: SourceMapUrl | null | undefined, callback: (consumer: BasicSourceMapConsumer | IndexedSourceMapConsumer) => Promise | T): Promise; } export const SourceMapConsumer: SourceMapConsumerConstructor; export interface BasicSourceMapConsumer extends SourceMapConsumer { file: string; sourceRoot: string; sources: string[]; sourcesContent: string[]; } export interface BasicSourceMapConsumerConstructor { prototype: BasicSourceMapConsumer; new (rawSourceMap: RawSourceMap | string): Promise; /** * Create a BasicSourceMapConsumer from a SourceMapGenerator. * * @param sourceMap * The source map that will be consumed. */ fromSourceMap(sourceMap: SourceMapGenerator): Promise; } export const BasicSourceMapConsumer: BasicSourceMapConsumerConstructor; export interface IndexedSourceMapConsumer extends SourceMapConsumer { sources: string[]; } export interface IndexedSourceMapConsumerConstructor { prototype: IndexedSourceMapConsumer; new (rawSourceMap: RawIndexMap | string): Promise; } export const IndexedSourceMapConsumer: IndexedSourceMapConsumerConstructor; export class SourceMapGenerator { constructor(startOfSourceMap?: StartOfSourceMap); /** * Creates a new SourceMapGenerator based on a SourceMapConsumer * * @param sourceMapConsumer The SourceMap. */ static fromSourceMap(sourceMapConsumer: SourceMapConsumer): SourceMapGenerator; /** * Add a single mapping from original source line and column to the generated * source's line and column for this source map being created. The mapping * object should have the following properties: * * - generated: An object with the generated line and column positions. * - original: An object with the original line and column positions. * - source: The original source file (relative to the sourceRoot). * - name: An optional original token name for this mapping. */ addMapping(mapping: Mapping): void; /** * Set the source content for a source file. */ setSourceContent(sourceFile: string, sourceContent: string): void; /** * Applies the mappings of a sub-source-map for a specific source file to the * source map being generated. Each mapping to the supplied source file is * rewritten using the supplied source map. Note: The resolution for the * resulting mappings is the minimium of this map and the supplied map. * * @param sourceMapConsumer The source map to be applied. * @param sourceFile Optional. The filename of the source file. * If omitted, SourceMapConsumer's file property will be used. * @param sourceMapPath Optional. The dirname of the path to the source map * to be applied. If relative, it is relative to the SourceMapConsumer. * This parameter is needed when the two source maps aren't in the same * directory, and the source map to be applied contains relative source * paths. If so, those relative source paths need to be rewritten * relative to the SourceMapGenerator. */ applySourceMap(sourceMapConsumer: SourceMapConsumer, sourceFile?: string, sourceMapPath?: string): void; toString(): string; toJSON(): RawSourceMap; } export class SourceNode { children: SourceNode[]; sourceContents: any; line: number; column: number; source: string; name: string; constructor(); constructor( line: number | null, column: number | null, source: string | null, chunks?: Array<(string | SourceNode)> | SourceNode | string, name?: string ); static fromStringWithSourceMap( code: string, sourceMapConsumer: SourceMapConsumer, relativePath?: string ): SourceNode; add(chunk: Array<(string | SourceNode)> | SourceNode | string): SourceNode; prepend(chunk: Array<(string | SourceNode)> | SourceNode | string): SourceNode; setSourceContent(sourceFile: string, sourceContent: string): void; walk(fn: (chunk: string, mapping: MappedPosition) => void): void; walkSourceContents(fn: (file: string, content: string) => void): void; join(sep: string): SourceNode; replaceRight(pattern: string, replacement: string): SourceNode; toString(): string; toStringWithSourceMap(startOfSourceMap?: StartOfSourceMap): CodeWithSourceMap; }