/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const createMappingsSerializer = require("./createMappingsSerializer"); exports.getSourceAndMap = (inputSource, options) => { let code = ""; let mappings = ""; let sources = []; let sourcesContent = []; let names = []; const addMapping = createMappingsSerializer(options); const { source } = inputSource.streamChunks( Object.assign({}, options, { finalSource: true }), ( chunk, generatedLine, generatedColumn, sourceIndex, originalLine, originalColumn, nameIndex ) => { if (chunk !== undefined) code += chunk; mappings += addMapping( generatedLine, generatedColumn, sourceIndex, originalLine, originalColumn, nameIndex ); }, (sourceIndex, source, sourceContent) => { while (sources.length < sourceIndex) { sources.push(null); } sources[sourceIndex] = source; if (sourceContent !== undefined) { while (sourcesContent.length < sourceIndex) { sourcesContent.push(null); } sourcesContent[sourceIndex] = sourceContent; } }, (nameIndex, name) => { while (names.length < nameIndex) { names.push(null); } names[nameIndex] = name; } ); return { source: source !== undefined ? source : code, map: mappings.length > 0 ? { version: 3, file: "x", mappings, sources, sourcesContent: sourcesContent.length > 0 ? sourcesContent : undefined, names } : null }; }; exports.getMap = (source, options) => { let mappings = ""; let sources = []; let sourcesContent = []; let names = []; const addMapping = createMappingsSerializer(options); source.streamChunks( Object.assign({}, options, { source: false, finalSource: true }), ( chunk, generatedLine, generatedColumn, sourceIndex, originalLine, originalColumn, nameIndex ) => { mappings += addMapping( generatedLine, generatedColumn, sourceIndex, originalLine, originalColumn, nameIndex ); }, (sourceIndex, source, sourceContent) => { while (sources.length < sourceIndex) { sources.push(null); } sources[sourceIndex] = source; if (sourceContent !== undefined) { while (sourcesContent.length < sourceIndex) { sourcesContent.push(null); } sourcesContent[sourceIndex] = sourceContent; } }, (nameIndex, name) => { while (names.length < nameIndex) { names.push(null); } names[nameIndex] = name; } ); return mappings.length > 0 ? { version: 3, file: "x", mappings, sources, sourcesContent: sourcesContent.length > 0 ? sourcesContent : undefined, names } : null; };