UNPKG

1.89 kBJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5"use strict";
6
7const { SourceNode, SourceMapConsumer } = require("source-map");
8const { SourceListMap, fromStringWithSourceMap } = require("source-list-map");
9
10exports.getSourceAndMap = (inputSource, options) => {
11 let source;
12 let map;
13 if (options && options.columns === false) {
14 const res = inputSource.listMap(options).toStringWithSourceMap({
15 file: "x"
16 });
17 source = res.source;
18 map = res.map;
19 } else {
20 const res = inputSource.node(options).toStringWithSourceMap({
21 file: "x"
22 });
23 source = res.code;
24 map = res.map.toJSON();
25 }
26 if (!map || !map.sources || map.sources.length === 0) map = null;
27
28 return {
29 source,
30 map
31 };
32};
33
34exports.getMap = (source, options) => {
35 let map;
36 if (options && options.columns === false) {
37 map = source.listMap(options).toStringWithSourceMap({
38 file: "x"
39 }).map;
40 } else {
41 map = source
42 .node(options)
43 .toStringWithSourceMap({
44 file: "x"
45 })
46 .map.toJSON();
47 }
48 if (!map || !map.sources || map.sources.length === 0) return null;
49 return map;
50};
51
52exports.getNode = (source, options) => {
53 if (typeof source.node === "function") {
54 return source.node(options);
55 } else {
56 const sourceAndMap = source.sourceAndMap(options);
57 if (sourceAndMap.map) {
58 return SourceNode.fromStringWithSourceMap(
59 sourceAndMap.source,
60 new SourceMapConsumer(sourceAndMap.map)
61 );
62 } else {
63 return new SourceNode(null, null, null, sourceAndMap.source);
64 }
65 }
66};
67
68exports.getListMap = (source, options) => {
69 if (typeof source.listMap === "function") {
70 return source.listMap(options);
71 } else {
72 const sourceAndMap = source.sourceAndMap(options);
73 if (sourceAndMap.map) {
74 return fromStringWithSourceMap(sourceAndMap.source, sourceAndMap.map);
75 } else {
76 return new SourceListMap(sourceAndMap.source);
77 }
78 }
79};