UNPKG

imba

Version:

Intuitive and powerful language for building webapps that fly

59 lines (55 loc) 1.88 kB
// import MagicString, { MagicStringOptions } from 'magic-string'; // import { log } from './log'; // export async function buildMagicString( // from: string, // to: string, // options?: MagicStringOptions // ): Promise<MagicString | null> { // let diff_match_patch, DIFF_DELETE: number, DIFF_INSERT: number; // try { // const dmpPkg = await import('diff-match-patch'); // diff_match_patch = dmpPkg.diff_match_patch; // DIFF_INSERT = dmpPkg.DIFF_INSERT; // DIFF_DELETE = dmpPkg.DIFF_DELETE; // } catch (e) { // log.error.once( // 'Failed to import optional dependency "diff-match-patch". Please install it to enable generated sourcemaps.' // ); // return null; // } // const dmp = new diff_match_patch(); // const diffs = dmp.diff_main(from, to); // dmp.diff_cleanupSemantic(diffs); // const m = new MagicString(from, options); // let pos = 0; // for (let i = 0; i < diffs.length; i++) { // const diff = diffs[i]; // const nextDiff = diffs[i + 1]; // if (diff[0] === DIFF_DELETE) { // if (nextDiff?.[0] === DIFF_INSERT) { // // delete followed by insert, use overwrite and skip ahead // m.overwrite(pos, pos + diff[1].length, nextDiff[1]); // i++; // } else { // m.remove(pos, pos + diff[1].length); // } // pos += diff[1].length; // } else if (diff[0] === DIFF_INSERT) { // if (nextDiff) { // m.appendRight(pos, diff[1]); // } else { // m.append(diff[1]); // } // } else { // // unchanged block, advance pos // pos += diff[1].length; // } // } // // at this point m.toString() === to // return m; // } // export async function buildSourceMap(from: string, to: string, filename?: string) { // // @ts-ignore // const m = await buildMagicString(from, to, { filename }); // return m ? m.generateDecodedMap({ source: filename, hires: true, includeContent: false }) : null; // }