1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _genmapping = require('@jridgewell/gen-mapping');
- var _charcodes = require('./parser/util/charcodes');
- /**
- * Generate a source map indicating that each line maps directly to the original line,
- * with the tokens in their new positions.
- */
- function computeSourceMap(
- {code: generatedCode, mappings: rawMappings},
- filePath,
- options,
- source,
- tokens,
- ) {
- const sourceColumns = computeSourceColumns(source, tokens);
- const map = new (0, _genmapping.GenMapping)({file: options.compiledFilename});
- let tokenIndex = 0;
- // currentMapping is the output source index for the current input token being
- // considered.
- let currentMapping = rawMappings[0];
- while (currentMapping === undefined && tokenIndex < rawMappings.length - 1) {
- tokenIndex++;
- currentMapping = rawMappings[tokenIndex];
- }
- let line = 0;
- let lineStart = 0;
- if (currentMapping !== lineStart) {
- _genmapping.maybeAddSegment.call(void 0, map, line, 0, filePath, line, 0);
- }
- for (let i = 0; i < generatedCode.length; i++) {
- if (i === currentMapping) {
- const genColumn = currentMapping - lineStart;
- const sourceColumn = sourceColumns[tokenIndex];
- _genmapping.maybeAddSegment.call(void 0, map, line, genColumn, filePath, line, sourceColumn);
- while (
- (currentMapping === i || currentMapping === undefined) &&
- tokenIndex < rawMappings.length - 1
- ) {
- tokenIndex++;
- currentMapping = rawMappings[tokenIndex];
- }
- }
- if (generatedCode.charCodeAt(i) === _charcodes.charCodes.lineFeed) {
- line++;
- lineStart = i + 1;
- if (currentMapping !== lineStart) {
- _genmapping.maybeAddSegment.call(void 0, map, line, 0, filePath, line, 0);
- }
- }
- }
- const {sourceRoot, sourcesContent, ...sourceMap} = _genmapping.toEncodedMap.call(void 0, map);
- return sourceMap ;
- } exports.default = computeSourceMap;
- /**
- * Create an array mapping each token index to the 0-based column of the start
- * position of the token.
- */
- function computeSourceColumns(code, tokens) {
- const sourceColumns = new Array(tokens.length);
- let tokenIndex = 0;
- let currentMapping = tokens[tokenIndex].start;
- let lineStart = 0;
- for (let i = 0; i < code.length; i++) {
- if (i === currentMapping) {
- sourceColumns[tokenIndex] = currentMapping - lineStart;
- tokenIndex++;
- currentMapping = tokens[tokenIndex].start;
- }
- if (code.charCodeAt(i) === _charcodes.charCodes.lineFeed) {
- lineStart = i + 1;
- }
- }
- return sourceColumns;
- }
|