decodeMappings
A source map's mappings, decoded: per generated line, segments of [column, source, line, column] (absolute).
import { B64 } from "#codebase/tcmts/core/program"; export function decodeMappings(mappings: string): number[][][] { const state = [0, 0, 0, 0]; return mappings.split(";").map((line) => { state[0] = 0; return line .split(",") .filter(Boolean) .map((seg) => { const values: number[] = []; for (let i = 0, shift = 0, v = 0; i < seg.length; i++) { const d = B64.indexOf(seg[i]!); v += (d & 31) << shift; if (d & 32) shift += 5; else { values.push(v & 1 ? -(v >>> 1) : v >>> 1); v = 0; shift = 0; } } for (let k = 0; k < values.length; k++) state[k]! += values[k]!; return state.slice(0, values.length); }); }); }