Skip to content

Commit 38f4ce4

Browse files
committed
fix decode, dont fix missing map.sources
1 parent cf600f7 commit 38f4ce4

File tree

4 files changed

+34
-37
lines changed

4 files changed

+34
-37
lines changed

src/compiler/preprocess/index.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ function get_replacement(
103103
let processed_map_shifted;
104104
if (processed.map) {
105105
const decoded_map = typeof processed.map === "string" ? JSON.parse(processed.map) : processed.map;
106-
decoded_map.mappings = sourcemap_decode(decoded_map.mappings);
106+
if (typeof(decoded_map.mappings) === 'string')
107+
decoded_map.mappings = sourcemap_decode(decoded_map.mappings);
107108
const processed_offset = get_location(offset + prefix.length);
108109
processed_map_shifted = sourcemap_add_offset(decoded_map, processed_offset);
109110
}
@@ -132,7 +133,7 @@ export default async function preprocess(
132133
// sourcemap_list is sorted in reverse order from last map (index 0) to first map (index -1)
133134
// so we use sourcemap_list.unshift() to add new maps
134135
// https://github.com/ampproject/remapping#multiple-transformations-of-a-file
135-
let sourcemap_list: Array<Processed['map']> = [];
136+
const sourcemap_list: Array<Processed['map']> = [];
136137

137138
for (const fn of markup) {
138139

@@ -215,14 +216,7 @@ export default async function preprocess(
215216

216217
// remapper can throw error
217218
// `Transformation map ${i} must have exactly one source file.`
218-
sourcemap_list = sourcemap_list
219-
.map(sourcemap => {
220-
if ((sourcemap as any).sources.filter(Boolean).length == 0)
221-
// fix missing source file
222-
(sourcemap as any).sources = [filename];
223-
return sourcemap;
224-
});
225-
219+
// for 0 <= i <= (sourcemap_list.length - 2)
226220
const map: ReturnType<typeof remapper> =
227221
sourcemap_list.length == 0
228222
? null

test/sourcemaps/index.js

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ describe("sourcemaps", () => {
2222
}
2323

2424
(solo ? it.only : skip ? it.skip : it)(dir, async () => {
25+
const { test } = require(`./samples/${dir}/test.js`);
2526
const inputFile = path.resolve(`${__dirname}/samples/${dir}/input.svelte`);
26-
const outputBase = path.resolve(`${__dirname}/samples/${dir}/_actual`);
27+
const outputName = '_actual';
28+
const outputBase = path.resolve(`${__dirname}/samples/${dir}/${outputName}`);
2729

2830
const input = {};
2931
input.code = fs.readFileSync(inputFile, "utf-8");
@@ -37,20 +39,18 @@ describe("sourcemaps", () => {
3739
filename: "input.svelte"
3840
});
3941
} catch (error) {
40-
preprocessed = {
41-
error,
42-
code: '',
43-
map: null
44-
};
42+
preprocessed = { error };
43+
// run test without js, css
44+
return test({ assert, input, preprocessed });
4545
}
4646

4747
const { js, css } = svelte.compile(
4848
preprocessed.code, {
4949
filename: "input.svelte",
5050
sourcemap: preprocessed.map,
5151
// filenames for sourcemaps
52-
outputFilename: "output.js",
53-
cssOutputFilename: "output.css",
52+
outputFilename: `${outputName}.js`,
53+
cssOutputFilename: `${outputName}.css`,
5454
});
5555

5656
js.code = js.code.replace(
@@ -64,7 +64,7 @@ describe("sourcemaps", () => {
6464
}
6565
fs.writeFileSync(
6666
`${outputBase}.js`,
67-
`${js.code}\n//# sourceMappingURL=output.js.map`
67+
`${js.code}\n//# sourceMappingURL=${outputName}.js.map`
6868
);
6969
fs.writeFileSync(
7070
`${outputBase}.js.map`,
@@ -73,7 +73,7 @@ describe("sourcemaps", () => {
7373
if (css.code) {
7474
fs.writeFileSync(
7575
`${outputBase}.css`,
76-
`${css.code}\n/*# sourceMappingURL=output.css.map */`
76+
`${css.code}\n/*# sourceMappingURL=${outputName}.css.map */`
7777
);
7878
fs.writeFileSync(
7979
`${outputBase}.css.map`,
@@ -84,8 +84,6 @@ describe("sourcemaps", () => {
8484
assert.deepEqual(js.map.sources, ["input.svelte"]);
8585
if (css.map) assert.deepEqual(css.map.sources, ["input.svelte"]);
8686

87-
const { test } = require(`./samples/${dir}/test.js`);
88-
8987
preprocessed.mapConsumer = preprocessed.map && await new SourceMapConsumer(preprocessed.map);
9088
preprocessed.locate = getLocator(preprocessed.code);
9189

@@ -96,7 +94,6 @@ describe("sourcemaps", () => {
9694
css.locate = getLocator(css.code || "");
9795

9896
test({ assert, input, preprocessed, js, css });
99-
10097
});
10198
});
10299
});

test/sourcemaps/samples/sourcemap-names/test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export function test({ assert, input, preprocessed, js, css }) {
88
['baritone', '--bazitone', 'old_name_1', 'old_name_2'].sort()
99
);
1010

11+
// TODO move fn test_name to test/sourcemaps/index.js and use in samples/*/test.js
1112
function test_name(old_name, new_name, where) {
1213

1314
let loc = { character: -1 };

test/sourcemaps/samples/sourcemap-sources/_config.js

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
import MagicString from 'magic-string';
2+
// eslint warning: import/no-named-as-default-member
3+
4+
//import MagicString, { Bundle } from 'magic-string';
5+
// TODO why does this break mocha?
6+
// SyntaxError: Cannot use import statement outside a module
27

38
function add(bundle, filename, source) {
4-
bundle.addSource({
5-
filename: filename,
6-
content: new MagicString(source)
7-
});
9+
bundle.addSource({
10+
filename,
11+
content: new MagicString(source)
12+
});
813
}
914

1015
function result(bundle, filename) {
11-
return {
12-
code: bundle.toString(),
13-
map: bundle.generateMap({
14-
file: filename,
15-
includeContent: true,
16-
hires: true
17-
})
18-
};
16+
return {
17+
code: bundle.toString(),
18+
map: bundle.generateMap({
19+
file: filename,
20+
includeContent: true,
21+
hires: true
22+
})
23+
};
1924
}
2025

2126
export default {
@@ -28,7 +33,7 @@ export default {
2833
add(bundle, 'foo.js', 'var answer = 42;');
2934
add(bundle, 'bar.js', 'console.log(answer);');
3035

31-
return result(bundle, filename);
36+
return result(bundle, filename);
3237
}
3338
},
3439
{
@@ -39,7 +44,7 @@ export default {
3944
add(bundle, 'foo2.js', 'var answer2 = 84;');
4045
add(bundle, 'bar2.js', 'console.log(answer2);');
4146

42-
return result(bundle, filename);
47+
return result(bundle, filename);
4348
}
4449
}
4550
]

0 commit comments

Comments
 (0)