1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.replaceAndUpdateSourceMap = void 0;
- const source_map_1 = require("source-map");
- async function replaceAndUpdateSourceMap({ jsFilename, originalMap, originalSource, replaceString, searchString, }) {
- const generator = new source_map_1.SourceMapGenerator({
- file: jsFilename,
- });
- const consumer = await new source_map_1.SourceMapConsumer(originalMap);
- let pos;
- let src = originalSource;
- const replacements = [];
- let lineNum = 0;
- let filePos = 0;
- const lines = src.split('\n');
- for (let line of lines) {
- lineNum++;
- let searchPos = 0;
- while ((pos = line.indexOf(searchString, searchPos)) !== -1) {
- src =
- src.substring(0, filePos + pos) +
- replaceString +
- src.substring(filePos + pos + searchString.length);
- line =
- line.substring(0, pos) +
- replaceString +
- line.substring(pos + searchString.length);
- replacements.push({ line: lineNum, column: pos });
- searchPos = pos + replaceString.length;
- }
- filePos += line.length + 1;
- }
- replacements.reverse();
- consumer.eachMapping((mapping) => {
- for (const replacement of replacements) {
- if (replacement.line === mapping.generatedLine &&
- mapping.generatedColumn > replacement.column) {
- const offset = searchString.length - replaceString.length;
- mapping.generatedColumn -= offset;
- }
- }
- if (mapping.source) {
- const newMapping = {
- generated: {
- line: mapping.generatedLine,
- column: mapping.generatedColumn,
- },
- original: {
- line: mapping.originalLine,
- column: mapping.originalColumn,
- },
- source: mapping.source,
- };
- return generator.addMapping(newMapping);
- }
- return mapping;
- });
- consumer.destroy();
-
-
- const updatedSourceMap = Object.assign(JSON.parse(generator.toString()), {
- names: originalMap.names,
- sourceRoot: originalMap.sourceRoot,
- sources: originalMap.sources,
- sourcesContent: originalMap.sourcesContent,
- });
- return {
- map: JSON.stringify(updatedSourceMap),
- source: src,
- };
- }
- exports.replaceAndUpdateSourceMap = replaceAndUpdateSourceMap;
|