UNPKG

@pundle/chunk-generator-js

Version:
75 lines (62 loc) 2.13 kB
"use strict"; 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]); }); } }); }