Son CV dans un terminal web en Javascript! https://terminal-cv.gregandev.fr
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.3 KiB

// @flow
import type { ParsedMap, VLQMap, SourceMapStringifyOptions, IndexedMapping, GenerateEmptyMapOptions } from './types';
import path from 'path';
import SourceMap from './SourceMap';
import * as bindings from './wasm-bindings';
export const init: Promise<void> = typeof bindings.init === 'function' ? bindings.init() : Promise.resolve();
export default class WasmSourceMap extends SourceMap {
constructor(projectRoot: string = '/', buffer?: Buffer) {
super(projectRoot, buffer);
this.sourceMapInstance = new bindings.SourceMap(projectRoot, buffer);
this.projectRoot = this.sourceMapInstance.getProjectRoot();
}
addVLQMap(map: VLQMap, lineOffset: number = 0, columnOffset: number = 0): SourceMap {
let { sourcesContent, sources = [], mappings, names = [] } = map;
if (!sourcesContent) {
sourcesContent = sources.map(() => '');
} else {
sourcesContent = sourcesContent.map((content) => (content ? content : ''));
}
this.sourceMapInstance.addVLQMap(
mappings,
sources,
sourcesContent.map((content) => (content ? content : '')),
names,
lineOffset,
columnOffset
);
return this;
}
addSourceMap(sourcemap: SourceMap, lineOffset: number = 0): SourceMap {
if (!(sourcemap.sourceMapInstance instanceof bindings.SourceMap)) {
throw new Error('The sourcemap provided to addSourceMap is not a valid sourcemap instance');
}
this.sourceMapInstance.addSourceMap(sourcemap.sourceMapInstance, lineOffset);
return this;
}
addBuffer(buffer: Buffer, lineOffset: number = 0): SourceMap {
let previousMap = new WasmSourceMap(this.projectRoot, buffer);
return this.addSourceMap(previousMap, lineOffset);
}
extends(input: Buffer | SourceMap): SourceMap {
// $FlowFixMe
let inputSourceMap: SourceMap = input instanceof Uint8Array ? new WasmSourceMap(this.projectRoot, input) : input;
this.sourceMapInstance.extends(inputSourceMap.sourceMapInstance);
return this;
}
delete() {
this.sourceMapInstance.free();
}
static generateEmptyMap({
projectRoot,
sourceName,
sourceContent,
lineOffset = 0,
}: GenerateEmptyMapOptions): WasmSourceMap {
let map = new WasmSourceMap(projectRoot);
map.addEmptyMap(sourceName, sourceContent, lineOffset);
return map;
}
}