diff --git a/src/compiler/preprocess/index.ts b/src/compiler/preprocess/index.ts index e804aa4919..357c63603c 100644 --- a/src/compiler/preprocess/index.ts +++ b/src/compiler/preprocess/index.ts @@ -86,6 +86,33 @@ async function replace_async( return out; } +function get_replacement( + filename: string, + offset: number, + get_location: ReturnType, + original: string, + processed: Processed, + prefix: string, + suffix: string +): StringWithSourcemap { + const generated_prefix = StringWithSourcemap.from_source( + filename, prefix, get_location(offset)); + const generated_suffix = StringWithSourcemap.from_source( + filename, suffix, get_location(offset + prefix.length + original.length)); + + let generated; + if (processed.map) { + const full_map = typeof processed.map === "string" ? JSON.parse(processed.map) : processed.map; + const decoded_map = { ...full_map, mappings: sourcemap_decode(full_map.mappings) }; + const processed_offset = get_location(offset + prefix.length); + generated = StringWithSourcemap.from_generated(processed.code, sourcemap_add_offset(processed_offset, decoded_map)); + } else { + generated = StringWithSourcemap.from_generated(processed.code); + } + const map = generated_prefix.concat(generated).concat(generated_suffix); + return map; +} + export default async function preprocess( source: string, preprocessor: PreprocessorGroup | PreprocessorGroup[], @@ -108,34 +135,6 @@ export default async function preprocess( // https://github.com/ampproject/remapping#multiple-transformations-of-a-file const sourcemap_list: Array = []; - function get_replacement( - filename: string, - offset: number, - get_location: ReturnType, - original: string, - processed: Processed, - prefix: string, - suffix: string - ): StringWithSourcemap { - - const generated_prefix = StringWithSourcemap.from_source( - filename, prefix, get_location(offset)); - const generated_suffix = StringWithSourcemap.from_source( - filename, suffix, get_location(offset + prefix.length + original.length)); - - let generated; - if (processed.map) { - const full_map = typeof processed.map === "string" ? JSON.parse(processed.map) : processed.map; - const decoded_map = { ...full_map, mappings: sourcemap_decode(full_map.mappings) }; - const processed_offset = get_location(offset + prefix.length); - generated = StringWithSourcemap.from_generated(processed.code, sourcemap_add_offset(processed_offset, decoded_map)); - } else { - generated = StringWithSourcemap.from_generated(processed.code); - } - const map = generated_prefix.concat(generated).concat(generated_suffix); - return map; - } - for (const fn of markup) { // run markup preprocessor