You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					175 lines
				
				6.8 KiB
			
		
		
			
		
	
	
					175 lines
				
				6.8 KiB
			| 
											3 years ago
										 | (function (global, factory) { | ||
|  |     typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@jridgewell/set-array'), require('@jridgewell/sourcemap-codec')) : | ||
|  |     typeof define === 'function' && define.amd ? define(['exports', '@jridgewell/set-array', '@jridgewell/sourcemap-codec'], factory) : | ||
|  |     (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.genMapping = {}, global.setArray, global.sourcemapCodec)); | ||
|  | })(this, (function (exports, setArray, sourcemapCodec) { 'use strict'; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * A low-level API to associate a generated position with an original source position. Line and | ||
|  |      * column here are 0-based, unlike `addMapping`. | ||
|  |      */ | ||
|  |     exports.addSegment = void 0; | ||
|  |     /** | ||
|  |      * A high-level API to associate a generated position with an original source position. Line is | ||
|  |      * 1-based, but column is 0-based, due to legacy behavior in `source-map` library. | ||
|  |      */ | ||
|  |     exports.addMapping = void 0; | ||
|  |     /** | ||
|  |      * Adds/removes the content of the source file to the source map. | ||
|  |      */ | ||
|  |     exports.setSourceContent = void 0; | ||
|  |     /** | ||
|  |      * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects | ||
|  |      * a sourcemap, or to JSON.stringify. | ||
|  |      */ | ||
|  |     exports.decodedMap = void 0; | ||
|  |     /** | ||
|  |      * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects | ||
|  |      * a sourcemap, or to JSON.stringify. | ||
|  |      */ | ||
|  |     exports.encodedMap = void 0; | ||
|  |     /** | ||
|  |      * Returns an array of high-level mapping objects for every recorded segment, which could then be | ||
|  |      * passed to the `source-map` library. | ||
|  |      */ | ||
|  |     exports.allMappings = void 0; | ||
|  |     /** | ||
|  |      * Provides the state to generate a sourcemap. | ||
|  |      */ | ||
|  |     class GenMapping { | ||
|  |         constructor({ file, sourceRoot } = {}) { | ||
|  |             this._names = new setArray.SetArray(); | ||
|  |             this._sources = new setArray.SetArray(); | ||
|  |             this._sourcesContent = []; | ||
|  |             this._mappings = []; | ||
|  |             this.file = file; | ||
|  |             this.sourceRoot = sourceRoot; | ||
|  |         } | ||
|  |     } | ||
|  |     (() => { | ||
|  |         exports.addSegment = (map, genLine, genColumn, source, sourceLine, sourceColumn, name) => { | ||
|  |             const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; | ||
|  |             const line = getLine(mappings, genLine); | ||
|  |             if (source == null) { | ||
|  |                 const seg = [genColumn]; | ||
|  |                 const index = getColumnIndex(line, genColumn, seg); | ||
|  |                 return insert(line, index, seg); | ||
|  |             } | ||
|  |             const sourcesIndex = setArray.put(sources, source); | ||
|  |             const seg = name | ||
|  |                 ? [genColumn, sourcesIndex, sourceLine, sourceColumn, setArray.put(names, name)] | ||
|  |                 : [genColumn, sourcesIndex, sourceLine, sourceColumn]; | ||
|  |             const index = getColumnIndex(line, genColumn, seg); | ||
|  |             if (sourcesIndex === sourcesContent.length) | ||
|  |                 sourcesContent[sourcesIndex] = null; | ||
|  |             insert(line, index, seg); | ||
|  |         }; | ||
|  |         exports.addMapping = (map, mapping) => { | ||
|  |             const { generated, source, original, name } = mapping; | ||
|  |             return exports.addSegment(map, generated.line - 1, generated.column, source, original == null ? undefined : original.line - 1, original === null || original === void 0 ? void 0 : original.column, name); | ||
|  |         }; | ||
|  |         exports.setSourceContent = (map, source, content) => { | ||
|  |             const { _sources: sources, _sourcesContent: sourcesContent } = map; | ||
|  |             sourcesContent[setArray.put(sources, source)] = content; | ||
|  |         }; | ||
|  |         exports.decodedMap = (map) => { | ||
|  |             const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; | ||
|  |             return { | ||
|  |                 version: 3, | ||
|  |                 file, | ||
|  |                 names: names.array, | ||
|  |                 sourceRoot: sourceRoot || undefined, | ||
|  |                 sources: sources.array, | ||
|  |                 sourcesContent, | ||
|  |                 mappings, | ||
|  |             }; | ||
|  |         }; | ||
|  |         exports.encodedMap = (map) => { | ||
|  |             const decoded = exports.decodedMap(map); | ||
|  |             return Object.assign(Object.assign({}, decoded), { mappings: sourcemapCodec.encode(decoded.mappings) }); | ||
|  |         }; | ||
|  |         exports.allMappings = (map) => { | ||
|  |             const out = []; | ||
|  |             const { _mappings: mappings, _sources: sources, _names: names } = map; | ||
|  |             for (let i = 0; i < mappings.length; i++) { | ||
|  |                 const line = mappings[i]; | ||
|  |                 for (let j = 0; j < line.length; j++) { | ||
|  |                     const seg = line[j]; | ||
|  |                     const generated = { line: i + 1, column: seg[0] }; | ||
|  |                     let source = undefined; | ||
|  |                     let original = undefined; | ||
|  |                     let name = undefined; | ||
|  |                     if (seg.length !== 1) { | ||
|  |                         source = sources.array[seg[1]]; | ||
|  |                         original = { line: seg[2] + 1, column: seg[3] }; | ||
|  |                         if (seg.length === 5) | ||
|  |                             name = names.array[seg[4]]; | ||
|  |                     } | ||
|  |                     out.push({ generated, source, original, name }); | ||
|  |                 } | ||
|  |             } | ||
|  |             return out; | ||
|  |         }; | ||
|  |     })(); | ||
|  |     function getLine(mappings, index) { | ||
|  |         for (let i = mappings.length; i <= index; i++) { | ||
|  |             mappings[i] = []; | ||
|  |         } | ||
|  |         return mappings[index]; | ||
|  |     } | ||
|  |     function getColumnIndex(line, column, seg) { | ||
|  |         let index = line.length; | ||
|  |         for (let i = index - 1; i >= 0; i--, index--) { | ||
|  |             const current = line[i]; | ||
|  |             const col = current[0]; | ||
|  |             if (col > column) | ||
|  |                 continue; | ||
|  |             if (col < column) | ||
|  |                 break; | ||
|  |             const cmp = compare(current, seg); | ||
|  |             if (cmp === 0) | ||
|  |                 return index; | ||
|  |             if (cmp < 0) | ||
|  |                 break; | ||
|  |         } | ||
|  |         return index; | ||
|  |     } | ||
|  |     function compare(a, b) { | ||
|  |         let cmp = compareNum(a.length, b.length); | ||
|  |         if (cmp !== 0) | ||
|  |             return cmp; | ||
|  |         // We've already checked genColumn
 | ||
|  |         if (a.length === 1) | ||
|  |             return 0; | ||
|  |         cmp = compareNum(a[1], b[1]); | ||
|  |         if (cmp !== 0) | ||
|  |             return cmp; | ||
|  |         cmp = compareNum(a[2], b[2]); | ||
|  |         if (cmp !== 0) | ||
|  |             return cmp; | ||
|  |         cmp = compareNum(a[3], b[3]); | ||
|  |         if (cmp !== 0) | ||
|  |             return cmp; | ||
|  |         if (a.length === 4) | ||
|  |             return 0; | ||
|  |         return compareNum(a[4], b[4]); | ||
|  |     } | ||
|  |     function compareNum(a, b) { | ||
|  |         return a - b; | ||
|  |     } | ||
|  |     function insert(array, index, value) { | ||
|  |         if (index === -1) | ||
|  |             return; | ||
|  |         for (let i = array.length; i > index; i--) { | ||
|  |             array[i] = array[i - 1]; | ||
|  |         } | ||
|  |         array[index] = value; | ||
|  |     } | ||
|  | 
 | ||
|  |     exports.GenMapping = GenMapping; | ||
|  | 
 | ||
|  |     Object.defineProperty(exports, '__esModule', { value: true }); | ||
|  | 
 | ||
|  | })); | ||
|  | //# sourceMappingURL=gen-mapping.umd.js.map
 |