UNPKG

fuse-box

Version:

Fuse-Box a bundler that does it right

31 lines (24 loc) 1.02 kB
import { File } from "./File"; import * as acorn from "acorn"; import * as SourceMap from "source-map"; export class SourceMapGenerator { public static generate(file: File, tokens: any[]) { const fileContent = file.contents; const filePath = file.info.fuseBoxPath; const smGenerator = new SourceMap.SourceMapGenerator({ file: `packages/${file.collection.name}/${filePath}` }); tokens.some(token => { if (token.type.label === "eof") return true; const lineInfo = acorn.getLineInfo(fileContent, token.start); const mapping = { original: lineInfo, generated: lineInfo, source: filePath, name: false, }; if (token.type.label === "name") mapping.name = token.value; smGenerator.addMapping(mapping); }); smGenerator.setSourceContent(filePath, fileContent); file.sourceMap = JSON.stringify(smGenerator.toJSON()); } }