@@ -12,7 +12,7 @@ module.exports = class RuntimeTemplate {
12
12
this . requestShortener = requestShortener ;
13
13
}
14
14
15
- comment ( { request, chunkName, chunkReason, message } ) {
15
+ comment ( { request, chunkName, chunkReason, message, exportName } ) {
16
16
let content ;
17
17
if ( this . outputOptions . pathinfo ) {
18
18
content = [ message , request , chunkName , chunkReason ] . filter ( Boolean ) . map ( item => this . requestShortener . shorten ( item ) ) . join ( " | " ) ;
@@ -36,6 +36,10 @@ module.exports = class RuntimeTemplate {
36
36
return `!(${ this . throwMissingModuleErrorFunction ( { request } ) } ())` ;
37
37
}
38
38
39
+ missingModuleStatement ( { request } ) {
40
+ return `${ this . missingModule ( { request } ) } ;\n` ;
41
+ }
42
+
39
43
missingModulePromise ( { request } ) {
40
44
return `Promise.resolve().then(${ this . throwMissingModuleErrorFunction ( { request } ) } )` ;
41
45
}
@@ -45,20 +49,23 @@ module.exports = class RuntimeTemplate {
45
49
return `${ this . comment ( { request } ) } ${ JSON . stringify ( module . id ) } ` ;
46
50
}
47
51
48
- moduleExports ( { module, request } ) {
52
+ moduleRaw ( { module, request } ) {
49
53
if ( ! module ) return this . missingModule ( { request } ) ;
50
54
return `__webpack_require__(${ this . moduleId ( { module, request } ) } )` ;
51
55
}
52
56
57
+ moduleExports ( { module, request } ) {
58
+ return this . moduleRaw ( { module, request } ) ;
59
+ }
60
+
53
61
moduleNamespace ( { module, request, strict } ) {
54
- const stringifiedId = JSON . stringify ( module . id ) ;
55
- const comment = this . comment ( { request } ) ;
62
+ const rawModule = this . moduleRaw ( { module, request } ) ;
56
63
if ( module . buildMeta && module . buildMeta . harmonyModule ) {
57
- return `__webpack_require__( ${ comment } ${ stringifiedId } )` ;
64
+ return rawModule ;
58
65
} else if ( strict ) {
59
- return `Object({ /* fake namespace object */ "default": __webpack_require__( ${ comment } ${ stringifiedId } ) })` ;
66
+ return `Object({ /* fake namespace object */ "default": ${ rawModule } })` ;
60
67
} 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 }; }())` ;
62
69
}
63
70
}
64
71
@@ -80,21 +87,77 @@ module.exports = class RuntimeTemplate {
80
87
}
81
88
header += `if(!__webpack_require__.m[${ idExpr } ]) { var e = new Error("Module '" + ${ idExpr } + "' is not available (weak dependency)"); e.code = 'MODULE_NOT_FOUND'; throw e; } ` ;
82
89
}
90
+ const rawModule = this . moduleRaw ( { module, request } ) ;
83
91
if ( module . buildMeta && module . buildMeta . harmonyModule ) {
84
92
if ( header ) {
85
- getModuleFunction = `function() { ${ header } return __webpack_require__( ${ comment } ${ idExpr } ) ; }` ;
93
+ getModuleFunction = `function() { ${ header } return ${ rawModule } ; }` ;
86
94
} else {
87
95
getModuleFunction = `__webpack_require__.bind(null, ${ comment } ${ idExpr } )` ;
88
96
}
89
97
} 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 } }; }` ;
91
99
} 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 }; }` ;
93
101
}
94
102
95
103
return `${ promise || "Promise.resolve()" } .then(${ getModuleFunction } )` ;
96
104
}
97
105
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
+
98
161
blockPromise ( { block, message } ) {
99
162
if ( ! block || ! block . chunks ) {
100
163
const comment = this . comment ( { message } ) ;
0 commit comments