source: imaps-frontend/node_modules/@ampproject/remapping/dist/remapping.umd.js@ d565449

main
Last change on this file since d565449 was d565449, checked in by stefan toskovski <stefantoska84@…>, 4 weeks ago

Update repo after prototype presentation

  • Property mode set to 100644
File size: 9.5 KB
RevLine 
[d565449]1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@jridgewell/trace-mapping'), require('@jridgewell/gen-mapping')) :
3 typeof define === 'function' && define.amd ? define(['@jridgewell/trace-mapping', '@jridgewell/gen-mapping'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.remapping = factory(global.traceMapping, global.genMapping));
5})(this, (function (traceMapping, genMapping) { 'use strict';
6
7 const SOURCELESS_MAPPING = /* #__PURE__ */ SegmentObject('', -1, -1, '', null, false);
8 const EMPTY_SOURCES = [];
9 function SegmentObject(source, line, column, name, content, ignore) {
10 return { source, line, column, name, content, ignore };
11 }
12 function Source(map, sources, source, content, ignore) {
13 return {
14 map,
15 sources,
16 source,
17 content,
18 ignore,
19 };
20 }
21 /**
22 * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes
23 * (which may themselves be SourceMapTrees).
24 */
25 function MapSource(map, sources) {
26 return Source(map, sources, '', null, false);
27 }
28 /**
29 * A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive
30 * segment tracing ends at the `OriginalSource`.
31 */
32 function OriginalSource(source, content, ignore) {
33 return Source(null, EMPTY_SOURCES, source, content, ignore);
34 }
35 /**
36 * traceMappings is only called on the root level SourceMapTree, and begins the process of
37 * resolving each mapping in terms of the original source files.
38 */
39 function traceMappings(tree) {
40 // TODO: Eventually support sourceRoot, which has to be removed because the sources are already
41 // fully resolved. We'll need to make sources relative to the sourceRoot before adding them.
42 const gen = new genMapping.GenMapping({ file: tree.map.file });
43 const { sources: rootSources, map } = tree;
44 const rootNames = map.names;
45 const rootMappings = traceMapping.decodedMappings(map);
46 for (let i = 0; i < rootMappings.length; i++) {
47 const segments = rootMappings[i];
48 for (let j = 0; j < segments.length; j++) {
49 const segment = segments[j];
50 const genCol = segment[0];
51 let traced = SOURCELESS_MAPPING;
52 // 1-length segments only move the current generated column, there's no source information
53 // to gather from it.
54 if (segment.length !== 1) {
55 const source = rootSources[segment[1]];
56 traced = originalPositionFor(source, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : '');
57 // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a
58 // respective segment into an original source.
59 if (traced == null)
60 continue;
61 }
62 const { column, line, name, content, source, ignore } = traced;
63 genMapping.maybeAddSegment(gen, i, genCol, source, line, column, name);
64 if (source && content != null)
65 genMapping.setSourceContent(gen, source, content);
66 if (ignore)
67 genMapping.setIgnore(gen, source, true);
68 }
69 }
70 return gen;
71 }
72 /**
73 * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own
74 * child SourceMapTrees, until we find the original source map.
75 */
76 function originalPositionFor(source, line, column, name) {
77 if (!source.map) {
78 return SegmentObject(source.source, line, column, name, source.content, source.ignore);
79 }
80 const segment = traceMapping.traceSegment(source.map, line, column);
81 // If we couldn't find a segment, then this doesn't exist in the sourcemap.
82 if (segment == null)
83 return null;
84 // 1-length segments only move the current generated column, there's no source information
85 // to gather from it.
86 if (segment.length === 1)
87 return SOURCELESS_MAPPING;
88 return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name);
89 }
90
91 function asArray(value) {
92 if (Array.isArray(value))
93 return value;
94 return [value];
95 }
96 /**
97 * Recursively builds a tree structure out of sourcemap files, with each node
98 * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of
99 * `OriginalSource`s and `SourceMapTree`s.
100 *
101 * Every sourcemap is composed of a collection of source files and mappings
102 * into locations of those source files. When we generate a `SourceMapTree` for
103 * the sourcemap, we attempt to load each source file's own sourcemap. If it
104 * does not have an associated sourcemap, it is considered an original,
105 * unmodified source file.
106 */
107 function buildSourceMapTree(input, loader) {
108 const maps = asArray(input).map((m) => new traceMapping.TraceMap(m, ''));
109 const map = maps.pop();
110 for (let i = 0; i < maps.length; i++) {
111 if (maps[i].sources.length > 1) {
112 throw new Error(`Transformation map ${i} must have exactly one source file.\n` +
113 'Did you specify these with the most recent transformation maps first?');
114 }
115 }
116 let tree = build(map, loader, '', 0);
117 for (let i = maps.length - 1; i >= 0; i--) {
118 tree = MapSource(maps[i], [tree]);
119 }
120 return tree;
121 }
122 function build(map, loader, importer, importerDepth) {
123 const { resolvedSources, sourcesContent, ignoreList } = map;
124 const depth = importerDepth + 1;
125 const children = resolvedSources.map((sourceFile, i) => {
126 // The loading context gives the loader more information about why this file is being loaded
127 // (eg, from which importer). It also allows the loader to override the location of the loaded
128 // sourcemap/original source, or to override the content in the sourcesContent field if it's
129 // an unmodified source file.
130 const ctx = {
131 importer,
132 depth,
133 source: sourceFile || '',
134 content: undefined,
135 ignore: undefined,
136 };
137 // Use the provided loader callback to retrieve the file's sourcemap.
138 // TODO: We should eventually support async loading of sourcemap files.
139 const sourceMap = loader(ctx.source, ctx);
140 const { source, content, ignore } = ctx;
141 // If there is a sourcemap, then we need to recurse into it to load its source files.
142 if (sourceMap)
143 return build(new traceMapping.TraceMap(sourceMap, source), loader, source, depth);
144 // Else, it's an unmodified source file.
145 // The contents of this unmodified source file can be overridden via the loader context,
146 // allowing it to be explicitly null or a string. If it remains undefined, we fall back to
147 // the importing sourcemap's `sourcesContent` field.
148 const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;
149 const ignored = ignore !== undefined ? ignore : ignoreList ? ignoreList.includes(i) : false;
150 return OriginalSource(source, sourceContent, ignored);
151 });
152 return MapSource(map, children);
153 }
154
155 /**
156 * A SourceMap v3 compatible sourcemap, which only includes fields that were
157 * provided to it.
158 */
159 class SourceMap {
160 constructor(map, options) {
161 const out = options.decodedMappings ? genMapping.toDecodedMap(map) : genMapping.toEncodedMap(map);
162 this.version = out.version; // SourceMap spec says this should be first.
163 this.file = out.file;
164 this.mappings = out.mappings;
165 this.names = out.names;
166 this.ignoreList = out.ignoreList;
167 this.sourceRoot = out.sourceRoot;
168 this.sources = out.sources;
169 if (!options.excludeContent) {
170 this.sourcesContent = out.sourcesContent;
171 }
172 }
173 toString() {
174 return JSON.stringify(this);
175 }
176 }
177
178 /**
179 * Traces through all the mappings in the root sourcemap, through the sources
180 * (and their sourcemaps), all the way back to the original source location.
181 *
182 * `loader` will be called every time we encounter a source file. If it returns
183 * a sourcemap, we will recurse into that sourcemap to continue the trace. If
184 * it returns a falsey value, that source file is treated as an original,
185 * unmodified source file.
186 *
187 * Pass `excludeContent` to exclude any self-containing source file content
188 * from the output sourcemap.
189 *
190 * Pass `decodedMappings` to receive a SourceMap with decoded (instead of
191 * VLQ encoded) mappings.
192 */
193 function remapping(input, loader, options) {
194 const opts = typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };
195 const tree = buildSourceMapTree(input, loader);
196 return new SourceMap(traceMappings(tree), opts);
197 }
198
199 return remapping;
200
201}));
202//# sourceMappingURL=remapping.umd.js.map
Note: See TracBrowser for help on using the repository browser.