@@ -302,9 +302,15 @@ export default function dom ( parsed, source, options, names ) {
302
302
builders . main . addBlock ( `${ name } .prototype = template.methods;` ) ;
303
303
}
304
304
305
- const standalone = options . standalone !== false ;
305
+ const sharedPath = options . shared === true ? 'svelte/shared.js' : options . shared ;
306
306
307
- builders . main . addBlock ( standalone ?
307
+ builders . main . addBlock ( sharedPath ?
308
+ deindent `
309
+ ${ name } .prototype.get = get;
310
+ ${ name } .prototype.fire = fire;
311
+ ${ name } .prototype.observe = observe;
312
+ ${ name } .prototype.on = on;
313
+ ` :
308
314
deindent `
309
315
${ name } .prototype.get = ${ shared . get } ;
310
316
@@ -313,12 +319,6 @@ export default function dom ( parsed, source, options, names ) {
313
319
${ name } .prototype.observe = ${ shared . observe } ;
314
320
315
321
${ name } .prototype.on = ${ shared . on } ;
316
- ` :
317
- deindent `
318
- ${ name } .prototype.get = get;
319
- ${ name } .prototype.fire = fire;
320
- ${ name } .prototype.observe = observe;
321
- ${ name } .prototype.on = on;
322
322
` ) ;
323
323
324
324
builders . main . addBlock ( deindent `
@@ -336,22 +336,22 @@ export default function dom ( parsed, source, options, names ) {
336
336
};
337
337
` ) ;
338
338
339
- if ( standalone ) {
340
- builders . main . addBlock ( shared . dispatchObservers . toString ( ) ) ;
341
-
342
- Object . keys ( generator . uses ) . forEach ( key => {
343
- const fn = shared [ key ] ; // eslint-disable-line import/namespace
344
- builders . main . addBlock ( fn . toString ( ) ) ;
345
- } ) ;
346
- } else {
339
+ if ( sharedPath ) {
347
340
if ( format !== 'es' ) {
348
- throw new Error ( `Non-standalone components must be compiled to ES2015 modules (format: 'es')` ) ;
341
+ throw new Error ( `Components with shared helpers must be compiled to ES2015 modules (format: 'es')` ) ;
349
342
}
350
343
351
344
const names = [ 'get' , 'fire' , 'observe' , 'on' , 'dispatchObservers' ] . concat ( Object . keys ( generator . uses ) ) ;
352
345
builders . main . addLineAtStart (
353
- `import { ${ names . join ( ', ' ) } } from 'svelte/shared.js '`
346
+ `import { ${ names . join ( ', ' ) } } from '${ sharedPath } '`
354
347
) ;
348
+ } else {
349
+ builders . main . addBlock ( shared . dispatchObservers . toString ( ) ) ;
350
+
351
+ Object . keys ( generator . uses ) . forEach ( key => {
352
+ const fn = shared [ key ] ; // eslint-disable-line import/namespace
353
+ builders . main . addBlock ( fn . toString ( ) ) ;
354
+ } ) ;
355
355
}
356
356
357
357
return generator . generate ( builders . main . toString ( ) , options , { name, format } ) ;
0 commit comments