| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | var SourceMapGenerator = require('source-map').SourceMapGenerator;var all = require('./helpers').all;var isRemoteResource = require('../utils/is-remote-resource');var isWindows = process.platform == 'win32';var NIX_SEPARATOR_PATTERN = /\//g;var UNKNOWN_SOURCE = '$stdin';var WINDOWS_SEPARATOR = '\\';function store(serializeContext, element) {  var fromString = typeof element == 'string';  var value = fromString ? element : element[1];  var mappings = fromString ? null : element[2];  var wrap = serializeContext.wrap;  wrap(serializeContext, value);  track(serializeContext, value, mappings);  serializeContext.output.push(value);}function wrap(serializeContext, value) {  if (serializeContext.column + value.length > serializeContext.format.wrapAt) {    track(serializeContext, serializeContext.format.breakWith, false);    serializeContext.output.push(serializeContext.format.breakWith);  }}function track(serializeContext, value, mappings) {  var parts = value.split('\n');  if (mappings) {    trackAllMappings(serializeContext, mappings);  }  serializeContext.line += parts.length - 1;  serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length);}function trackAllMappings(serializeContext, mappings) {  for (var i = 0, l = mappings.length; i < l; i++) {    trackMapping(serializeContext, mappings[i]);  }}function trackMapping(serializeContext, mapping) {  var line = mapping[0];  var column = mapping[1];  var originalSource = mapping[2];  var source = originalSource;  var storedSource = source || UNKNOWN_SOURCE;  if (isWindows && source && !isRemoteResource(source)) {    storedSource = source.replace(NIX_SEPARATOR_PATTERN, WINDOWS_SEPARATOR);  }  serializeContext.outputMap.addMapping({    generated: {      line: serializeContext.line,      column: serializeContext.column    },    source: storedSource,    original: {      line: line,      column: column    }  });  if (serializeContext.inlineSources && (originalSource in serializeContext.sourcesContent)) {    serializeContext.outputMap.setSourceContent(storedSource, serializeContext.sourcesContent[originalSource]);  }}function serializeStylesAndSourceMap(tokens, context) {  var serializeContext = {    column: 0,    format: context.options.format,    indentBy: 0,    indentWith: '',    inlineSources: context.options.sourceMapInlineSources,    line: 1,    output: [],    outputMap: new SourceMapGenerator(),    sourcesContent: context.sourcesContent,    spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace,    store: store,    wrap: context.options.format.wrapAt ?      wrap :      function () { /* noop */  }  };  all(serializeContext, tokens);  return {    sourceMap: serializeContext.outputMap,    styles: serializeContext.output.join('')  };}module.exports = serializeStylesAndSourceMap;
 |