Remove source guessing workaround

pull/5754/head
dmitrage 5 years ago
parent 5441835d41
commit 7ac102a805

@ -160,29 +160,6 @@ function decoded_sourcemap_from_generator(generator: any) {
return map;
}
/**
* Heuristic used to find index of component source inside source map sources.
*/
function guess_source_index(
file_basename: string,
decoded_map: DecodedSourceMap
): number {
if (!file_basename) {
return decoded_map.sources.findIndex(source => !source);
}
// different tools produce different sources
// (file name, relative path, absolute path)
const index = decoded_map.sources.findIndex(source => {
const source_basename = source && get_file_basename(source);
return source_basename === file_basename;
});
if (index !== -1) {
// also normalize it in on source map
decoded_map.sources[index] = file_basename;
}
return index;
}
/**
* Convert a preprocessor output and its leading prefix and trailing suffix into StringWithSourceMap
*/
@ -214,7 +191,7 @@ function get_replacement(
decoded_map = decoded_sourcemap_from_generator(decoded_map);
}
// offset only segments pointing at original component source
const source_index = guess_source_index(file_basename, decoded_map);
const source_index = decoded_map.sources.findIndex(source => source === file_basename);
sourcemap_add_offset(decoded_map, get_location(offset + prefix.length), source_index);
}
const processed_with_map = StringWithSourcemap.from_processed(processed.code, decoded_map);

@ -14,7 +14,7 @@ export function test({ assert, input, preprocessed }) {
line: sourceLoc.line + 1,
column: sourceLoc.column
},
`failed to locate "${code}"`
`failed to locate "${code}" in "${filename}"`
);
};

@ -1,19 +0,0 @@
import { magic_string_bundle } from '../../helpers';
export const PREPEND = 'console.log("COUNTER_START")';
export const APPEND = 'console.log("COUNTER_END")';
export default {
js_map_sources: ['input.svelte', 'src/prepend.js', 'src/append.js'],
preprocess: [
{
script: ({ content }) => {
return magic_string_bundle([
{ filename: 'src/prepend.js', code: PREPEND },
{ filename: 'src/input.svelte', code: content },
{ filename: 'src/append.js', code: APPEND }
]);
}
}
]
};

@ -1,6 +0,0 @@
<script lang="ts">
let count = 3;
</script>
<h1>Hello world!</h1>
<div>Counter value: {count}</div>

@ -1,30 +0,0 @@
import { getLocator } from 'locate-character';
import { APPEND, PREPEND } from './_config';
export function test({ assert, input, preprocessed }) {
const assertMapped = (locateInput, code, filename) => {
const sourceLoc = locateInput(code);
const transformedLoc = preprocessed.locate_1(code);
assert.deepEqual(
preprocessed.mapConsumer.originalPositionFor(transformedLoc),
{
source: filename,
name: null,
line: sourceLoc.line + 1,
column: sourceLoc.column
},
`failed to locate "${code}"`
);
};
// Transformed script, main file
assertMapped(input.locate, 'let count = 3;', 'input.svelte');
// Untouched markup, main file
assertMapped(input.locate, '<h1>Hello world!</h1>', 'input.svelte');
// External files
assertMapped(getLocator(PREPEND), '"COUNTER_START"', 'src/prepend.js');
assertMapped(getLocator(APPEND), '"COUNTER_END"', 'src/append.js');
}
Loading…
Cancel
Save