@pundle/chunk-generator-js
Version:
75 lines (62 loc) • 2.13 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getLinesCount = getLinesCount;
exports.getContentForOutput = getContentForOutput;
exports.mergeSourceMap = mergeSourceMap;
var _assert = _interopRequireDefault(require("assert"));
var _sourceMap = require("source-map");
var _api = require("@pundle/api");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getLinesCount(text) {
return text.split(_api.NEWLINE_REGEXP).length;
}
function getContentForOutput(chunk, job) {
const relevantFiles = new Set();
function iterateImports(fileImport) {
const file = job.files.get((0, _api.getFileKey)(fileImport));
(0, _assert.default)(file, `File referenced in chunk ('${fileImport.filePath}') not found in local cache!?`);
if (relevantFiles.has(file)) return;
relevantFiles.add(file);
if (!chunk.flat) {
file.imports.forEach(item => iterateImports(item));
}
}
if (chunk.filePath) {
iterateImports({
meta: chunk.meta,
format: chunk.format,
filePath: chunk.filePath
});
}
chunk.imports.forEach(item => iterateImports(item));
return {
files: Array.from(relevantFiles)
};
}
function mergeSourceMap(sourceMap, targetMap, offset, filePath) {
const parsedSourceMap = JSON.parse(sourceMap);
return _sourceMap.SourceMapConsumer.with(parsedSourceMap, null, function (entryMap) {
entryMap.eachMapping(function (mapping) {
targetMap.addMapping({
source: filePath,
original: {
line: mapping.originalLine,
column: mapping.originalColumn
},
generated: {
line: offset + mapping.generatedLine,
column: mapping.generatedColumn
}
});
});
const sources = (parsedSourceMap.sources || []).filter(Boolean);
const sourcesContent = (parsedSourceMap.sourcesContent || []).filter(Boolean);
if (sources.length === sourcesContent.length) {
sources.forEach((item, index) => {
targetMap.setSourceContent(item, sourcesContent[index]);
});
}
});
}
;