@@ -12,7 +12,7 @@ module.exports = class RuntimeTemplate {
1212 this . requestShortener = requestShortener ;
1313 }
1414
15- comment ( { request, chunkName, chunkReason, message } ) {
15+ comment ( { request, chunkName, chunkReason, message, exportName } ) {
1616 let content ;
1717 if ( this . outputOptions . pathinfo ) {
1818 content = [ message , request , chunkName , chunkReason ] . filter ( Boolean ) . map ( item => this . requestShortener . shorten ( item ) ) . join ( " | " ) ;
@@ -36,6 +36,10 @@ module.exports = class RuntimeTemplate {
3636 return `!(${ this . throwMissingModuleErrorFunction ( { request } ) } ())` ;
3737 }
3838
39+ missingModuleStatement ( { request } ) {
40+ return `${ this . missingModule ( { request } ) } ;\n` ;
41+ }
42+
3943 missingModulePromise ( { request } ) {
4044 return `Promise.resolve().then(${ this . throwMissingModuleErrorFunction ( { request } ) } )` ;
4145 }
@@ -45,20 +49,23 @@ module.exports = class RuntimeTemplate {
4549 return `${ this . comment ( { request } ) } ${ JSON . stringify ( module . id ) } ` ;
4650 }
4751
48- moduleExports ( { module, request } ) {
52+ moduleRaw ( { module, request } ) {
4953 if ( ! module ) return this . missingModule ( { request } ) ;
5054 return `__webpack_require__(${ this . moduleId ( { module, request } ) } )` ;
5155 }
5256
57+ moduleExports ( { module, request } ) {
58+ return this . moduleRaw ( { module, request } ) ;
59+ }
60+
5361 moduleNamespace ( { module, request, strict } ) {
54- const stringifiedId = JSON . stringify ( module . id ) ;
55- const comment = this . comment ( { request } ) ;
62+ const rawModule = this . moduleRaw ( { module, request } ) ;
5663 if ( module . buildMeta && module . buildMeta . harmonyModule ) {
57- return `__webpack_require__( ${ comment } ${ stringifiedId } )` ;
64+ return rawModule ;
5865 } else if ( strict ) {
59- return `Object({ /* fake namespace object */ "default": __webpack_require__( ${ comment } ${ stringifiedId } ) })` ;
66+ return `Object({ /* fake namespace object */ "default": ${ rawModule } })` ;
6067 } else {
61- return `Object(function() { var module = __webpack_require__( ${ comment } ${ stringifiedId } ) ; return typeof module === "object" && module && module.__esModule ? module : { /* fake namespace object */ "default": module }; }())` ;
68+ return `Object(function() { var module = ${ rawModule } ; return typeof module === "object" && module && module.__esModule ? module : { /* fake namespace object */ "default": module }; }())` ;
6269 }
6370 }
6471
@@ -80,21 +87,77 @@ module.exports = class RuntimeTemplate {
8087 }
8188 header += `if(!__webpack_require__.m[${ idExpr } ]) { var e = new Error("Module '" + ${ idExpr } + "' is not available (weak dependency)"); e.code = 'MODULE_NOT_FOUND'; throw e; } ` ;
8289 }
90+ const rawModule = this . moduleRaw ( { module, request } ) ;
8391 if ( module . buildMeta && module . buildMeta . harmonyModule ) {
8492 if ( header ) {
85- getModuleFunction = `function() { ${ header } return __webpack_require__( ${ comment } ${ idExpr } ) ; }` ;
93+ getModuleFunction = `function() { ${ header } return ${ rawModule } ; }` ;
8694 } else {
8795 getModuleFunction = `__webpack_require__.bind(null, ${ comment } ${ idExpr } )` ;
8896 }
8997 } else if ( strict ) {
90- getModuleFunction = `function() { ${ header } return { /* fake namespace object */ "default": __webpack_require__( ${ comment } ${ idExpr } ) }; }` ;
98+ getModuleFunction = `function() { ${ header } return { /* fake namespace object */ "default": ${ rawModule } }; }` ;
9199 } else {
92- getModuleFunction = `function() { ${ header } var module = __webpack_require__( ${ comment } ${ idExpr } ) ; return typeof module === "object" && module && module.__esModule ? module : { /* fake namespace object */ "default": module }; }` ;
100+ getModuleFunction = `function() { ${ header } var module = ${ rawModule } ; return typeof module === "object" && module && module.__esModule ? module : { /* fake namespace object */ "default": module }; }` ;
93101 }
94102
95103 return `${ promise || "Promise.resolve()" } .then(${ getModuleFunction } )` ;
96104 }
97105
106+ importStatement ( { update, module, request, importVar, originModule } ) {
107+ if ( ! module ) return this . missingModuleStatement ( { request } ) ;
108+ const comment = this . comment ( { request } ) ;
109+ const optDeclaration = update ? "" : "var " ;
110+
111+ const isHarmonyModule = module . buildMeta && module . buildMeta . harmonyModule ;
112+ const content = `/* harmony import */ ${ optDeclaration } ${ importVar } = __webpack_require__(${ comment } ${ JSON . stringify ( module . id ) } );\n` ;
113+ if ( isHarmonyModule || originModule . buildMeta . strictHarmonyModule ) {
114+ return content ;
115+ }
116+ return `${ content } /* harmony import */ ${ optDeclaration } ${ importVar } _default = /*#__PURE__*/__webpack_require__.n(${ importVar } );\n` ;
117+ }
118+
119+ exportFromImport ( { module, exportName, originModule, asiSafe, isCall, callContext, importVar } ) {
120+ const isHarmonyModule = module . buildMeta && module . buildMeta . harmonyModule ;
121+
122+ if ( ! isHarmonyModule ) {
123+ if ( exportName === "default" ) {
124+ if ( ! originModule . buildMeta . strictHarmonyModule ) {
125+ if ( isCall )
126+ return `${ importVar } _default()` ;
127+ else if ( asiSafe )
128+ return `(${ importVar } _default())` ;
129+ else
130+ return `${ importVar } _default.a` ;
131+ }
132+ } else if ( originModule . buildMeta . strictHarmonyModule ) {
133+ if ( exportName ) {
134+ return "/* non-default import from non-esm module */undefined" ;
135+ } else if ( ! exportName ) {
136+ if ( asiSafe ) {
137+ return `{ /* fake namespace object */ "default": ${ importVar } }` ;
138+ } else {
139+ return `Object({ /* fake namespace object */ "default": ${ importVar } })` ;
140+ }
141+ }
142+ }
143+ }
144+
145+ if ( exportName ) {
146+ const used = module . isUsed ( exportName ) ;
147+ const comment = used !== exportName ? Template . toNormalComment ( exportName ) + " " : "" ;
148+ const access = `${ importVar } [${ comment } ${ JSON . stringify ( used ) } ]` ;
149+ if ( isCall ) {
150+ if ( callContext === false && asiSafe )
151+ return `(0,${ access } )` ;
152+ else if ( callContext === false )
153+ return `Object(${ access } )` ;
154+ }
155+ return access ;
156+ } else {
157+ return importVar ;
158+ }
159+ }
160+
98161 blockPromise ( { block, message } ) {
99162 if ( ! block || ! block . chunks ) {
100163 const comment = this . comment ( { message } ) ;
0 commit comments