123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- var CodeNode = require("./CodeNode");
- var SourceNode = require("./SourceNode");
- var MappingsContext = require("./MappingsContext");
- function SourceListMap(generatedCode, source, originalSource) {
- if(Array.isArray(generatedCode)) {
- this.children = generatedCode;
- } else {
- this.children = [];
- if(generatedCode || source)
- this.add(generatedCode, source, originalSource);
- }
- }
- module.exports = SourceListMap;
- SourceListMap.prototype.add = function(generatedCode, source, originalSource) {
- if(typeof generatedCode === "string") {
- if(source) {
- this.children.push(new SourceNode(generatedCode, source, originalSource));
- } else if(this.children.length > 0 && this.children[this.children.length - 1].addGeneratedCode) {
- this.children[this.children.length - 1].addGeneratedCode(generatedCode);
- } else {
- this.children.push(new CodeNode(generatedCode));
- }
- } else if(generatedCode.getMappings && generatedCode.getGeneratedCode) {
- this.children.push(generatedCode);
- } else if(generatedCode.children) {
- generatedCode.children.forEach(function(sln) {
- this.children.push(sln);
- }, this);
- } else {
- throw new Error("Invalid arguments to SourceListMap.prototype.add: Expected string, Node or SourceListMap");
- }
- };
- SourceListMap.prototype.preprend = function(source) {
- if(typeof generatedCode === "string") {
- if(source) {
- this.children.unshift(new SourceNode(generatedCode, source, originalSource));
- } else if(this.children.length > 0 && this.children[this.children.length - 1].preprendGeneratedCode) {
- this.children[this.children.length - 1].preprendGeneratedCode(generatedCode);
- } else {
- this.children.unshift(new CodeNode(generatedCode));
- }
- } else if(generatedCode.getMappings && generatedCode.getGeneratedCode) {
- this.children.unshift(generatedCode);
- } else if(generatedCode.children) {
- generatedCode.children.slice().reverse().forEach(function(sln) {
- this.children.unshift(sln);
- }, this);
- } else {
- throw new Error("Invalid arguments to SourceListMap.prototype.prerend: Expected string, Node or SourceListMap");
- }
- };
- SourceListMap.prototype.mapGeneratedCode = function(fn) {
- this.children.forEach(function(sln) {
- sln.mapGeneratedCode(fn);
- });
- };
- SourceListMap.prototype.toString = function() {
- return this.children.map(function(sln) {
- return sln.getGeneratedCode();
- }).join("");
- };
- SourceListMap.prototype.toStringWithSourceMap = function(options) {
- var mappingsContext = new MappingsContext();
- var source = this.children.map(function(sln) {
- return sln.generatedCode;
- }).join("");
- var mappings = this.children.map(function(sln) {
- return sln.getMappings(mappingsContext);
- }).join("");
- return {
- source: source,
- map: {
- version: 3,
- file: options && options.file,
- sources: mappingsContext.sources,
- sourcesContent: mappingsContext.hasSourceContent ? mappingsContext.sourcesContent : undefined,
- mappings: mappings
- }
- };
- }
|