@@ -91,25 +91,32 @@ function getExportAllFrom (namespace) {
9191}
9292
9393/**
94- * @param {string } source
94+ * @param {NollupInternalModuleImport } externalImport
9595 * @return {string }
9696 */
97- function getIIFEName ( source ) {
98- return source . replace ( / \- ( [ \w ] ) / g, ( m ) => m [ 1 ] . toUpperCase ( ) ) . replace ( / [ ^ a - z A - Z 0 - 9 $ _ ] / g, '_' ) ;
97+ function getIIFEName ( externalImport ) {
98+ let hasDefaultSpec = externalImport . specifiers . find ( s => s . imported === 'default' && s . local !== 'default' ) ;
99+
100+ if ( hasDefaultSpec && hasDefaultSpec . local ) {
101+ return hasDefaultSpec . local ;
102+ }
103+
104+ return externalImport . source . replace ( / \- ( [ \w ] ) / g, ( m ) => m [ 1 ] . toUpperCase ( ) ) . replace ( / [ ^ a - z A - Z 0 - 9 $ _ ] / g, '_' ) ;
99105}
100106
101107/**
102108 * @param {RollupRenderedChunk } chunk
103109 * @param {RollupOutputOptions } outputOptions
110+ * @param {Array<NollupInternalModuleImport> } externalImports
104111 * @return {string }
105112 */
106- function createExternalImports ( chunk , outputOptions ) {
113+ function createExternalImports ( chunk , outputOptions , externalImports ) {
107114 let output = '' ;
108115 let { format, globals } = outputOptions ;
109116
110- output += chunk . imports . map ( source => {
111- let name = source . replace ( / [ \W ] / g, '_' ) ;
112- let specifiers = chunk . importedBindings [ source ] ;
117+ output += externalImports . map ( ei => {
118+ let name = ei . source . replace ( / [ \W ] / g, '_' ) ;
119+ let { source , specifiers } = ei ;
113120
114121 // Bare external import
115122 if ( specifiers . length === 0 ) {
@@ -119,10 +126,12 @@ function createExternalImports (chunk, outputOptions) {
119126 return `require('${ source } ');`
120127 }
121128
129+
130+ let iifeName = format === 'iife' ? ( globals [ source ] || getIIFEName ( ei ) ) : '' ;
131+
122132 return specifiers . map ( s => {
123- let iifeName = format === 'iife' ? ( globals [ source ] || getIIFEName ( source ) ) : '' ;
124133
125- if ( s === '*' ) {
134+ if ( s . imported === '*' ) {
126135 if ( format === 'es' )
127136 return `import * as __nollup__external__${ name } __ from '${ source } ';` ;
128137 if ( format === 'cjs' || format === 'amd' )
@@ -131,7 +140,7 @@ function createExternalImports (chunk, outputOptions) {
131140 return `var __nollup__external__${ name } __ = self.${ iifeName } ;`
132141 }
133142
134- if ( s === 'default' ) {
143+ if ( s . imported === 'default' ) {
135144 if ( format === 'es' )
136145 return `import __nollup__external__${ name } __default__ from '${ source } ';` ;
137146 if ( format === 'cjs' || format === 'amd' )
@@ -141,11 +150,11 @@ function createExternalImports (chunk, outputOptions) {
141150 }
142151
143152 if ( format === 'es' )
144- return `import { ${ s } as __nollup__external__${ name } __${ s } __ } from '${ source } ';` ;
153+ return `import { ${ s . imported } as __nollup__external__${ name } __${ s . imported } __ } from '${ source } ';` ;
145154 if ( format === 'cjs' || format === 'amd' )
146- return `var __nollup__external__${ name } __${ s } __ = require('${ source } ').${ s } ;`
155+ return `var __nollup__external__${ name } __${ s . imported } __ = require('${ source } ').${ s . imported } ;`
147156 if ( format === 'iife' )
148- return `var __nollup__external__${ name } __${ s } __ = self.${ iifeName } .${ s } ;`
157+ return `var __nollup__external__${ name } __${ s . imported } __ = self.${ iifeName } .${ s . imported } ;`
149158 } ) . join ( '\n' ) ;
150159 } ) . join ( '\n' ) ;
151160
@@ -549,9 +558,10 @@ class NollupCodeGenerator {
549558 * @param {RollupOutputChunk } chunk
550559 * @param {RollupOutputOptions } outputOptions
551560 * @param {RollupConfigContainer } config
561+ * @param {Array<NollupInternalModuleImport> } externalImports
552562 * @return {string }
553563 */
554- onGenerateChunk ( modules , chunk , outputOptions , config ) {
564+ onGenerateChunk ( modules , chunk , outputOptions , config , externalImports ) {
555565 let files = Object . keys ( chunk . modules ) . map ( filePath => {
556566 let file = modules [ filePath ] ;
557567 return file . index + ':' + file . code ;
@@ -564,7 +574,7 @@ class NollupCodeGenerator {
564574 if ( chunk . isDynamicEntry ) {
565575 return `
566576 ${ format === 'amd' ? 'define(function (require, exports) {' : '' }
567- ${ createExternalImports ( chunk , outputOptions ) }
577+ ${ createExternalImports ( chunk , outputOptions , externalImports ) }
568578 (function (global) {
569579 global.__nollup_dynamic_require_callback("${ chunk . fileName } ", ${ entryIndex } , {${ files } });
570580 })(typeof globalThis !== 'undefined'? globalThis : (
@@ -575,7 +585,7 @@ class NollupCodeGenerator {
575585 } else {
576586 return [
577587 format === 'amd' ? 'define(function (require, exports) {' : '' ,
578- createExternalImports ( chunk , outputOptions ) ,
588+ createExternalImports ( chunk , outputOptions , externalImports ) ,
579589 ` ${ ( chunk . exports . length > 0 && ( format === 'es' || format === 'amd' ) ) ? 'var __nollup_entry_exports = ' : '' }
580590 (function (modules, __nollup__global__) {
581591
0 commit comments