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.
		
		
		
		
		
			
		
			
				
					176 lines
				
				6.2 KiB
			
		
		
			
		
	
	
					176 lines
				
				6.2 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								(function (global, factory) {
							 | 
						||
| 
								 | 
							
								    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
							 | 
						||
| 
								 | 
							
								    typeof define === 'function' && define.amd ? define(['exports'], factory) :
							 | 
						||
| 
								 | 
							
								    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.sourcemapCodec = {}));
							 | 
						||
| 
								 | 
							
								})(this, (function (exports) { 'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const comma = ','.charCodeAt(0);
							 | 
						||
| 
								 | 
							
								    const semicolon = ';'.charCodeAt(0);
							 | 
						||
| 
								 | 
							
								    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
							 | 
						||
| 
								 | 
							
								    const intToChar = new Uint8Array(64); // 64 possible chars.
							 | 
						||
| 
								 | 
							
								    const charToInt = new Uint8Array(128); // z is 122 in ASCII
							 | 
						||
| 
								 | 
							
								    for (let i = 0; i < chars.length; i++) {
							 | 
						||
| 
								 | 
							
								        const c = chars.charCodeAt(i);
							 | 
						||
| 
								 | 
							
								        intToChar[i] = c;
							 | 
						||
| 
								 | 
							
								        charToInt[c] = i;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    // Provide a fallback for older environments.
							 | 
						||
| 
								 | 
							
								    const td = typeof TextDecoder !== 'undefined'
							 | 
						||
| 
								 | 
							
								        ? /* #__PURE__ */ new TextDecoder()
							 | 
						||
| 
								 | 
							
								        : typeof Buffer !== 'undefined'
							 | 
						||
| 
								 | 
							
								            ? {
							 | 
						||
| 
								 | 
							
								                decode(buf) {
							 | 
						||
| 
								 | 
							
								                    const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
							 | 
						||
| 
								 | 
							
								                    return out.toString();
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            : {
							 | 
						||
| 
								 | 
							
								                decode(buf) {
							 | 
						||
| 
								 | 
							
								                    let out = '';
							 | 
						||
| 
								 | 
							
								                    for (let i = 0; i < buf.length; i++) {
							 | 
						||
| 
								 | 
							
								                        out += String.fromCharCode(buf[i]);
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                    return out;
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								            };
							 | 
						||
| 
								 | 
							
								    function decode(mappings) {
							 | 
						||
| 
								 | 
							
								        const state = new Int32Array(5);
							 | 
						||
| 
								 | 
							
								        const decoded = [];
							 | 
						||
| 
								 | 
							
								        let index = 0;
							 | 
						||
| 
								 | 
							
								        do {
							 | 
						||
| 
								 | 
							
								            const semi = indexOf(mappings, index);
							 | 
						||
| 
								 | 
							
								            const line = [];
							 | 
						||
| 
								 | 
							
								            let sorted = true;
							 | 
						||
| 
								 | 
							
								            let lastCol = 0;
							 | 
						||
| 
								 | 
							
								            state[0] = 0;
							 | 
						||
| 
								 | 
							
								            for (let i = index; i < semi; i++) {
							 | 
						||
| 
								 | 
							
								                let seg;
							 | 
						||
| 
								 | 
							
								                i = decodeInteger(mappings, i, state, 0); // genColumn
							 | 
						||
| 
								 | 
							
								                const col = state[0];
							 | 
						||
| 
								 | 
							
								                if (col < lastCol)
							 | 
						||
| 
								 | 
							
								                    sorted = false;
							 | 
						||
| 
								 | 
							
								                lastCol = col;
							 | 
						||
| 
								 | 
							
								                if (hasMoreVlq(mappings, i, semi)) {
							 | 
						||
| 
								 | 
							
								                    i = decodeInteger(mappings, i, state, 1); // sourcesIndex
							 | 
						||
| 
								 | 
							
								                    i = decodeInteger(mappings, i, state, 2); // sourceLine
							 | 
						||
| 
								 | 
							
								                    i = decodeInteger(mappings, i, state, 3); // sourceColumn
							 | 
						||
| 
								 | 
							
								                    if (hasMoreVlq(mappings, i, semi)) {
							 | 
						||
| 
								 | 
							
								                        i = decodeInteger(mappings, i, state, 4); // namesIndex
							 | 
						||
| 
								 | 
							
								                        seg = [col, state[1], state[2], state[3], state[4]];
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                    else {
							 | 
						||
| 
								 | 
							
								                        seg = [col, state[1], state[2], state[3]];
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                else {
							 | 
						||
| 
								 | 
							
								                    seg = [col];
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                line.push(seg);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            if (!sorted)
							 | 
						||
| 
								 | 
							
								                sort(line);
							 | 
						||
| 
								 | 
							
								            decoded.push(line);
							 | 
						||
| 
								 | 
							
								            index = semi + 1;
							 | 
						||
| 
								 | 
							
								        } while (index <= mappings.length);
							 | 
						||
| 
								 | 
							
								        return decoded;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    function indexOf(mappings, index) {
							 | 
						||
| 
								 | 
							
								        const idx = mappings.indexOf(';', index);
							 | 
						||
| 
								 | 
							
								        return idx === -1 ? mappings.length : idx;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    function decodeInteger(mappings, pos, state, j) {
							 | 
						||
| 
								 | 
							
								        let value = 0;
							 | 
						||
| 
								 | 
							
								        let shift = 0;
							 | 
						||
| 
								 | 
							
								        let integer = 0;
							 | 
						||
| 
								 | 
							
								        do {
							 | 
						||
| 
								 | 
							
								            const c = mappings.charCodeAt(pos++);
							 | 
						||
| 
								 | 
							
								            integer = charToInt[c];
							 | 
						||
| 
								 | 
							
								            value |= (integer & 31) << shift;
							 | 
						||
| 
								 | 
							
								            shift += 5;
							 | 
						||
| 
								 | 
							
								        } while (integer & 32);
							 | 
						||
| 
								 | 
							
								        const shouldNegate = value & 1;
							 | 
						||
| 
								 | 
							
								        value >>>= 1;
							 | 
						||
| 
								 | 
							
								        if (shouldNegate) {
							 | 
						||
| 
								 | 
							
								            value = -0x80000000 | -value;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        state[j] += value;
							 | 
						||
| 
								 | 
							
								        return pos;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    function hasMoreVlq(mappings, i, length) {
							 | 
						||
| 
								 | 
							
								        if (i >= length)
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        return mappings.charCodeAt(i) !== comma;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    function sort(line) {
							 | 
						||
| 
								 | 
							
								        line.sort(sortComparator);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    function sortComparator(a, b) {
							 | 
						||
| 
								 | 
							
								        return a[0] - b[0];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    function encode(decoded) {
							 | 
						||
| 
								 | 
							
								        const state = new Int32Array(5);
							 | 
						||
| 
								 | 
							
								        const bufLength = 1024 * 16;
							 | 
						||
| 
								 | 
							
								        const subLength = bufLength - 36;
							 | 
						||
| 
								 | 
							
								        const buf = new Uint8Array(bufLength);
							 | 
						||
| 
								 | 
							
								        const sub = buf.subarray(0, subLength);
							 | 
						||
| 
								 | 
							
								        let pos = 0;
							 | 
						||
| 
								 | 
							
								        let out = '';
							 | 
						||
| 
								 | 
							
								        for (let i = 0; i < decoded.length; i++) {
							 | 
						||
| 
								 | 
							
								            const line = decoded[i];
							 | 
						||
| 
								 | 
							
								            if (i > 0) {
							 | 
						||
| 
								 | 
							
								                if (pos === bufLength) {
							 | 
						||
| 
								 | 
							
								                    out += td.decode(buf);
							 | 
						||
| 
								 | 
							
								                    pos = 0;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                buf[pos++] = semicolon;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            if (line.length === 0)
							 | 
						||
| 
								 | 
							
								                continue;
							 | 
						||
| 
								 | 
							
								            state[0] = 0;
							 | 
						||
| 
								 | 
							
								            for (let j = 0; j < line.length; j++) {
							 | 
						||
| 
								 | 
							
								                const segment = line[j];
							 | 
						||
| 
								 | 
							
								                // We can push up to 5 ints, each int can take at most 7 chars, and we
							 | 
						||
| 
								 | 
							
								                // may push a comma.
							 | 
						||
| 
								 | 
							
								                if (pos > subLength) {
							 | 
						||
| 
								 | 
							
								                    out += td.decode(sub);
							 | 
						||
| 
								 | 
							
								                    buf.copyWithin(0, subLength, pos);
							 | 
						||
| 
								 | 
							
								                    pos -= subLength;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if (j > 0)
							 | 
						||
| 
								 | 
							
								                    buf[pos++] = comma;
							 | 
						||
| 
								 | 
							
								                pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
							 | 
						||
| 
								 | 
							
								                if (segment.length === 1)
							 | 
						||
| 
								 | 
							
								                    continue;
							 | 
						||
| 
								 | 
							
								                pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
							 | 
						||
| 
								 | 
							
								                pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
							 | 
						||
| 
								 | 
							
								                pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
							 | 
						||
| 
								 | 
							
								                if (segment.length === 4)
							 | 
						||
| 
								 | 
							
								                    continue;
							 | 
						||
| 
								 | 
							
								                pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return out + td.decode(buf.subarray(0, pos));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    function encodeInteger(buf, pos, state, segment, j) {
							 | 
						||
| 
								 | 
							
								        const next = segment[j];
							 | 
						||
| 
								 | 
							
								        let num = next - state[j];
							 | 
						||
| 
								 | 
							
								        state[j] = next;
							 | 
						||
| 
								 | 
							
								        num = num < 0 ? (-num << 1) | 1 : num << 1;
							 | 
						||
| 
								 | 
							
								        do {
							 | 
						||
| 
								 | 
							
								            let clamped = num & 0b011111;
							 | 
						||
| 
								 | 
							
								            num >>>= 5;
							 | 
						||
| 
								 | 
							
								            if (num > 0)
							 | 
						||
| 
								 | 
							
								                clamped |= 0b100000;
							 | 
						||
| 
								 | 
							
								            buf[pos++] = intToChar[clamped];
							 | 
						||
| 
								 | 
							
								        } while (num > 0);
							 | 
						||
| 
								 | 
							
								        return pos;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    exports.decode = decode;
							 | 
						||
| 
								 | 
							
								    exports.encode = encode;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Object.defineProperty(exports, '__esModule', { value: true });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}));
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=sourcemap-codec.umd.js.map
							 |