UNPKG

1.04 kBJavaScriptView Raw
1import { has } from '../utils/object';
2import { getName, quoteId } from '../utils/map-helpers';
3
4export default function amd ( bundle, magicString, exportMode, options ) {
5 let deps = bundle.externalModules.map( quoteId );
6 let args = bundle.externalModules.map( getName );
7
8 if ( exportMode === 'named' ) {
9 args.unshift( `exports` );
10 deps.unshift( `'exports'` );
11 }
12
13 const params =
14 ( has( options, 'moduleId' ) ? `['${options.moduleId}'], ` : `` ) +
15 ( deps.length ? `[${deps.join( ', ' )}], ` : `` );
16
17 const intro = `define(${params}function (${args.join( ', ' )}) { 'use strict';\n\n`;
18
19 const exports = bundle.entryModule.exports;
20
21 let exportBlock;
22
23 if ( exportMode === 'default' ) {
24 exportBlock = `return ${bundle.entryModule.getCanonicalName('default')};`;
25 } else {
26 exportBlock = '\n\n' + Object.keys( exports ).map( name => {
27 return `exports.${name} = ${exports[name].localName};`;
28 }).join( '\n' );
29 }
30
31 return magicString
32 .append( exportBlock )
33 .trim()
34 .indent()
35 .append( '\n\n});' )
36 .prepend( intro );
37}