attached sourcemap: use regex

pull/5854/head
Milan Hauth 6 years ago
parent a5ae6b3b7e
commit dcaeb768e4

@ -293,22 +293,23 @@ export function apply_preprocessor_sourcemap(filename: string, svelte_map: Sourc
// parse attached sourcemap in processed.code // parse attached sourcemap in processed.code
export function parse_attached_sourcemap(processed: Processed, tag_name: 'script' | 'style'): void { export function parse_attached_sourcemap(processed: Processed, tag_name: 'script' | 'style'): void {
const magic_prefix = '# sourceMappingURL=data:application/json;'; const r_in = '[#@]\\s*sourceMappingURL\\s*=\\s*data:' +
const cut_index = processed.code.lastIndexOf('\n'); '(?:application|text)/json;(?:charset[:=]\\S+?;)?base64,(\\S*)';
const last_line = processed.code.slice(cut_index); const regex = (tag_name == 'script')
const line_start = last_line.slice(1, 3); // last_line[0] == '\n' ? new RegExp('(?://'+r_in+')|(?:/\\*'+r_in+'\\s*\\*/)$')
if ((line_start != '/*' && (tag_name == 'script' && line_start != '//')) || : new RegExp('/\\*'+r_in+'\\s*\\*/$');
magic_prefix != last_line.slice(3, 3 + magic_prefix.length) processed.code = processed.code.replace(regex, (_, match1, match2) => {
) return; // attachment not found if (processed.map) {
if (processed.map) { throw 'not implemented. '+
throw 'not implemented. '+ 'found sourcemap in both processed.code and processed.map. '+
'found sourcemap in both processed.code and processed.map. '+ 'please pass only one sourcemap.\n'+
'please pass only one sourcemap.\n'+ 'processed.code:\n'+
'processed.code:\n'+ processed.code.slice(0, 100)+' [....]'; // help to find preprocessor
processed.code.slice(0, 100)+' [....]'; // help to find preprocessor }
} const map64 = (tag_name == 'script')
processed.code = processed.code.slice(0, cut_index); // remove last line ? (match1 || match2)
const slice_to = (line_start == '/*') ? -2 : undefined; : match1;
const b64map = last_line.slice(last_line.indexOf('base64,')+7, slice_to).trim(); processed.map = b64dec(map64);
processed.map = b64dec(b64map); return ''; // remove from processed.code
});
} }

Loading…
Cancel
Save