1 | import { has } from '../utils/object';
|
2 | import { getName, quoteId } from '../utils/map-helpers';
|
3 |
|
4 | export 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 | }
|