@@ -9,7 +9,7 @@ const sander = require('sander');
9
9
const plugin = require ( '..' ) ;
10
10
11
11
const context = {
12
- resolve : ( ) => 'resolved'
12
+ resolve : ( ) => 'resolved' ,
13
13
} ;
14
14
15
15
test ( 'resolves using pkg.svelte' , async ( ) => {
@@ -22,15 +22,14 @@ test('resolves using pkg.svelte', async () => {
22
22
23
23
test ( 'ignores built-in modules' , async ( ) => {
24
24
const p = plugin ( ) ;
25
- assert . is (
26
- await p . resolveId . call ( context , 'path' , path . resolve ( 'test/foo/main.js' ) ) , undefined
27
- ) ;
25
+ assert . is ( await p . resolveId . call ( context , 'path' , path . resolve ( 'test/foo/main.js' ) ) , undefined ) ;
28
26
} ) ;
29
27
30
28
test ( 'ignores esm modules that do not export package.json' , async ( ) => {
31
29
const p = plugin ( ) ;
32
30
assert . is (
33
- await p . resolveId . call ( context , 'esm-no-pkg-export' , path . resolve ( 'test/foo/main.js' ) ) , undefined
31
+ await p . resolveId . call ( context , 'esm-no-pkg-export' , path . resolve ( 'test/foo/main.js' ) ) ,
32
+ undefined
34
33
) ;
35
34
} ) ;
36
35
@@ -45,7 +44,8 @@ test('resolves esm module that exports package.json', async () => {
45
44
test ( 'ignores virtual modules' , async ( ) => {
46
45
const p = plugin ( ) ;
47
46
assert . is (
48
- await p . resolveId . call ( context , 'path' , path . resolve ( '\0some-plugin-generated-module' ) ) , undefined
47
+ await p . resolveId . call ( context , 'path' , path . resolve ( '\0some-plugin-generated-module' ) ) ,
48
+ undefined
49
49
) ;
50
50
} ) ;
51
51
@@ -72,8 +72,8 @@ test('respects `sourcemapExcludeSources` Rollup option', async () => {
72
72
73
73
const bundle = await rollup ( {
74
74
input : 'test/sourcemap-test/src/main.js' ,
75
- plugins : [ plugin ( { emitCss : false } ) ] ,
76
- external : [ 'svelte/internal' ]
75
+ plugins : [ plugin ( { emitCss : false } ) ] ,
76
+ external : [ 'svelte/internal' ] ,
77
77
} ) ;
78
78
79
79
const { output } = await bundle . generate ( {
@@ -98,43 +98,48 @@ test('respects `sourcemapExcludeSources` Rollup option', async () => {
98
98
99
99
test ( 'squelches "unused CSS" warnings if `emitCss: false`' , ( ) => {
100
100
const p = plugin ( {
101
- emitCss : false
101
+ emitCss : false ,
102
102
} ) ;
103
103
104
- p . transform . call ( {
105
- warn : warning => {
106
- throw new Error ( warning . message ) ;
107
- }
108
- } , `
104
+ p . transform . call (
105
+ {
106
+ warn : ( warning ) => {
107
+ throw new Error ( warning . message ) ;
108
+ } ,
109
+ } ,
110
+ `
109
111
<div></div>
110
112
<style>
111
113
.unused {
112
114
color: red;
113
115
}
114
116
</style>
115
- ` , 'test.svelte' ) ;
117
+ ` ,
118
+ 'test.svelte'
119
+ ) ;
116
120
} ) ;
117
121
118
122
test ( 'preprocesses components' , async ( ) => {
119
123
const p = plugin ( {
120
124
preprocess : {
121
125
markup : ( { content, filename } ) => {
122
126
return {
123
- code : content
124
- . replace ( '__REPLACEME__' , 'replaced' )
125
- . replace ( '__FILENAME__' , filename ) ,
127
+ code : content . replace ( '__REPLACEME__' , 'replaced' ) . replace ( '__FILENAME__' , filename ) ,
126
128
dependencies : [ 'foo' ] ,
127
129
} ;
128
130
} ,
129
131
style : ( ) => null ,
130
- }
132
+ } ,
131
133
} ) ;
132
134
133
- const { code, dependencies } = await p . transform ( `
135
+ const { code, dependencies } = await p . transform (
136
+ `
134
137
<h1>Hello __REPLACEME__!</h1>
135
138
<h2>file: __FILENAME__</h2>
136
139
<style>h1 { color: red; }</style>
137
- ` , 'test.svelte' ) ;
140
+ ` ,
141
+ 'test.svelte'
142
+ ) ;
138
143
139
144
assert . is ( code . indexOf ( '__REPLACEME__' ) , - 1 , 'content not modified' ) ;
140
145
assert . is . not ( code . indexOf ( 'file: test.svelte' ) , - 1 , 'filename not replaced' ) ;
@@ -144,13 +149,16 @@ test('preprocesses components', async () => {
144
149
test ( 'emits a CSS file' , async ( ) => {
145
150
const p = plugin ( ) ;
146
151
147
- const transformed = await p . transform ( `<h1>Hello!</h1>
152
+ const transformed = await p . transform (
153
+ `<h1>Hello!</h1>
148
154
149
155
<style>
150
156
h1 {
151
157
color: red;
152
158
}
153
- </style>` , `path/to/Input.svelte` ) ;
159
+ </style>` ,
160
+ `path/to/Input.svelte`
161
+ ) ;
154
162
155
163
assert . ok ( transformed . code . indexOf ( `import "path/to/Input.css";` ) !== - 1 ) ;
156
164
@@ -160,7 +168,7 @@ test('emits a CSS file', async () => {
160
168
161
169
const loc = smc . originalPositionFor ( {
162
170
line : 1 ,
163
- column : 0
171
+ column : 0 ,
164
172
} ) ;
165
173
166
174
assert . is ( loc . source , 'Input.svelte' ) ;
@@ -171,13 +179,16 @@ test('emits a CSS file', async () => {
171
179
test ( 'properly escapes CSS paths' , async ( ) => {
172
180
const p = plugin ( ) ;
173
181
174
- const transformed = await p . transform ( `<h1>Hello!</h1>
182
+ const transformed = await p . transform (
183
+ `<h1>Hello!</h1>
175
184
176
185
<style>
177
186
h1 {
178
187
color: red;
179
188
}
180
- </style>` , `path\\t'o\\Input.svelte` ) ;
189
+ </style>` ,
190
+ `path\\t'o\\Input.svelte`
191
+ ) ;
181
192
182
193
assert . ok ( transformed . code . indexOf ( `import "path\\\\t'o\\\\Input.css";` ) !== - 1 ) ;
183
194
@@ -187,7 +198,7 @@ test('properly escapes CSS paths', async () => {
187
198
188
199
const loc = smc . originalPositionFor ( {
189
200
line : 1 ,
190
- column : 0
201
+ column : 0 ,
191
202
} ) ;
192
203
193
204
assert . is ( loc . source , 'Input.svelte' ) ;
@@ -206,20 +217,30 @@ test('intercepts warnings', async () => {
206
217
if ( warning . code === 'a11y-hidden' ) {
207
218
handler ( warning ) ;
208
219
}
209
- }
220
+ } ,
210
221
} ) ;
211
222
212
- await p . transform . call ( {
213
- warn : warning => {
214
- handled . push ( warning ) ;
215
- }
216
- } , `
223
+ await p . transform . call (
224
+ {
225
+ warn : ( warning ) => {
226
+ handled . push ( warning ) ;
227
+ } ,
228
+ } ,
229
+ `
217
230
<h1 aria-hidden>Hello world!</h1>
218
231
<marquee>wheee!!!</marquee>
219
- ` , 'test.svelte' ) ;
232
+ ` ,
233
+ 'test.svelte'
234
+ ) ;
220
235
221
- assert . equal ( warnings . map ( w => w . code ) , [ 'a11y-hidden' , 'a11y-distracting-elements' ] ) ;
222
- assert . equal ( handled . map ( w => w . code ) , [ 'a11y-hidden' ] ) ;
236
+ assert . equal (
237
+ warnings . map ( ( w ) => w . code ) ,
238
+ [ 'a11y-hidden' , 'a11y-distracting-elements' ]
239
+ ) ;
240
+ assert . equal (
241
+ handled . map ( ( w ) => w . code ) ,
242
+ [ 'a11y-hidden' ]
243
+ ) ;
223
244
} ) ;
224
245
225
246
test ( 'handles filenames that happen to contain ".svelte"' , async ( ) => {
@@ -233,12 +254,12 @@ test('handles filenames that happen to contain ".svelte"', async () => {
233
254
{
234
255
async resolveId ( id ) {
235
256
if ( / A \. s v e l t e / . test ( id ) ) {
236
- await new Promise ( f => setTimeout ( f , 50 ) ) ;
257
+ await new Promise ( ( f ) => setTimeout ( f , 50 ) ) ;
237
258
}
238
- }
259
+ } ,
239
260
} ,
240
261
plugin ( {
241
- emitCss : true
262
+ emitCss : true ,
242
263
} ) ,
243
264
{
244
265
transform ( code , id ) {
@@ -250,10 +271,10 @@ test('handles filenames that happen to contain ".svelte"', async () => {
250
271
} ) ;
251
272
return '' ;
252
273
}
253
- }
254
- }
274
+ } ,
275
+ } ,
255
276
] ,
256
- external : [ 'svelte/internal' ]
277
+ external : [ 'svelte/internal' ] ,
257
278
} ) ;
258
279
259
280
await bundle . write ( {
@@ -274,6 +295,33 @@ test('handles filenames that happen to contain ".svelte"', async () => {
274
295
) ;
275
296
} ) ;
276
297
298
+ // Needs Svelte 5
299
+ test . skip ( 'handles ".svelte.ts/js" files' , async ( ) => {
300
+ sander . rimrafSync ( 'test/filename-test2/dist' ) ;
301
+ sander . mkdirSync ( 'test/filename-test2/dist' ) ;
302
+
303
+ try {
304
+ const bundle = await rollup ( {
305
+ input : 'test/filename-test2/src/main.js' ,
306
+ plugins : [ plugin ( { } ) ] ,
307
+ external : [ 'svelte/internal' ] ,
308
+ } ) ;
309
+
310
+ await bundle . write ( {
311
+ format : 'iife' ,
312
+ file : 'test/filename-test2/dist/bundle.js' ,
313
+ globals : { 'svelte/internal' : 'svelte' } ,
314
+ assetFileNames : '[name].[ext]' ,
315
+ sourcemap : true ,
316
+ } ) ;
317
+ } catch ( err ) {
318
+ console . log ( err ) ;
319
+ throw err ;
320
+ }
321
+
322
+ assert . not ( fs . readFileSync ( 'test/filename-test2/dist/bundle.js' , 'utf8' ) . includes ( '$state' ) ) ;
323
+ } ) ;
324
+
277
325
test ( 'ignores ".html" extension by default' , async ( ) => {
278
326
sander . rimrafSync ( 'test/node_modules/widget/dist' ) ;
279
327
sander . mkdirSync ( 'test/node_modules/widget/dist' ) ;
@@ -282,7 +330,7 @@ test('ignores ".html" extension by default', async () => {
282
330
const bundle = await rollup ( {
283
331
input : 'test/node_modules/widget/index.js' ,
284
332
external : [ 'svelte/internal' ] ,
285
- plugins : [ plugin ( ) ]
333
+ plugins : [ plugin ( ) ] ,
286
334
} ) ;
287
335
288
336
await bundle . write ( {
@@ -311,9 +359,9 @@ test('allows ".html" extension if configured', async () => {
311
359
external : [ 'svelte/internal' ] ,
312
360
plugins : [
313
361
plugin ( {
314
- extensions : [ '.html' ]
315
- } )
316
- ]
362
+ extensions : [ '.html' ] ,
363
+ } ) ,
364
+ ] ,
317
365
} ) ;
318
366
319
367
await bundle . write ( {
0 commit comments