webpack 3.8.1 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +721 -716
  3. package/bin/webpack.js +12 -8
  4. package/buildin/.eslintrc +7 -7
  5. package/buildin/amd-define.js +3 -3
  6. package/buildin/amd-options.js +2 -2
  7. package/buildin/global.js +21 -21
  8. package/buildin/harmony-module.js +24 -24
  9. package/buildin/module.js +22 -22
  10. package/buildin/system.js +7 -7
  11. package/hot/.eslintrc +9 -9
  12. package/hot/dev-server.js +53 -53
  13. package/hot/emitter.js +2 -2
  14. package/hot/log-apply-result.js +38 -38
  15. package/hot/log.js +44 -44
  16. package/hot/only-dev-server.js +71 -71
  17. package/hot/poll.js +34 -34
  18. package/hot/signal.js +52 -51
  19. package/lib/APIPlugin.js +45 -45
  20. package/lib/AsyncDependenciesBlock.js +43 -43
  21. package/lib/AutomaticPrefetchPlugin.js +36 -36
  22. package/lib/BannerPlugin.js +4 -2
  23. package/lib/BasicEvaluatedExpression.js +203 -203
  24. package/lib/CaseSensitiveModulesWarning.js +49 -49
  25. package/lib/Chunk.js +2 -2
  26. package/lib/ChunkRenderError.js +24 -24
  27. package/lib/ChunkTemplate.js +36 -36
  28. package/lib/CompatibilityPlugin.js +57 -57
  29. package/lib/Compilation.js +81 -92
  30. package/lib/Compiler.js +519 -523
  31. package/lib/ConstPlugin.js +60 -60
  32. package/lib/ContextModule.js +431 -431
  33. package/lib/ContextReplacementPlugin.js +111 -111
  34. package/lib/DefinePlugin.js +123 -123
  35. package/lib/DelegatedModule.js +98 -98
  36. package/lib/DelegatedModuleFactoryPlugin.js +59 -59
  37. package/lib/DelegatedPlugin.js +30 -30
  38. package/lib/DependenciesBlockVariable.js +51 -51
  39. package/lib/DllEntryPlugin.js +37 -37
  40. package/lib/DllModule.js +58 -58
  41. package/lib/DllModuleFactory.js +20 -20
  42. package/lib/DllPlugin.js +38 -38
  43. package/lib/DllReferencePlugin.js +62 -62
  44. package/lib/DynamicEntryPlugin.js +59 -59
  45. package/lib/EntryModuleNotFoundError.js +22 -22
  46. package/lib/EntryOptionPlugin.js +31 -31
  47. package/lib/EnvironmentPlugin.js +60 -50
  48. package/lib/ErrorHelpers.js +31 -31
  49. package/lib/EvalDevToolModulePlugin.js +22 -22
  50. package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
  51. package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
  52. package/lib/EvalSourceMapDevToolPlugin.js +32 -32
  53. package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
  54. package/lib/ExtendedAPIPlugin.js +47 -47
  55. package/lib/ExternalModuleFactoryPlugin.js +91 -91
  56. package/lib/ExternalsPlugin.js +21 -21
  57. package/lib/FlagDependencyExportsPlugin.js +101 -101
  58. package/lib/FlagDependencyUsagePlugin.js +1 -1
  59. package/lib/FunctionModulePlugin.js +24 -24
  60. package/lib/HashedModuleIdsPlugin.js +42 -42
  61. package/lib/HotModuleReplacementPlugin.js +5 -5
  62. package/lib/HotUpdateChunkTemplate.js +31 -31
  63. package/lib/IgnorePlugin.js +69 -69
  64. package/lib/JsonpExportMainTemplatePlugin.js +37 -37
  65. package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
  66. package/lib/JsonpMainTemplatePlugin.js +4 -3
  67. package/lib/JsonpTemplatePlugin.js +21 -21
  68. package/lib/LibManifestPlugin.js +63 -63
  69. package/lib/LibraryTemplatePlugin.js +92 -92
  70. package/lib/LoaderOptionsPlugin.js +36 -36
  71. package/lib/LoaderTargetPlugin.js +19 -19
  72. package/lib/MainTemplate.js +3 -1
  73. package/lib/MemoryOutputFileSystem.js +5 -5
  74. package/lib/ModuleBuildError.js +42 -42
  75. package/lib/ModuleDependencyError.js +22 -22
  76. package/lib/ModuleDependencyWarning.js +22 -22
  77. package/lib/ModuleError.js +24 -24
  78. package/lib/ModuleFilenameHelpers.js +162 -162
  79. package/lib/ModuleNotFoundError.js +26 -26
  80. package/lib/ModuleReason.js +50 -50
  81. package/lib/ModuleTemplate.js +23 -23
  82. package/lib/ModuleWarning.js +24 -24
  83. package/lib/MovedToPluginWarningPlugin.js +21 -21
  84. package/lib/MultiCompiler.js +164 -164
  85. package/lib/MultiEntryPlugin.js +39 -39
  86. package/lib/MultiModuleFactory.js +19 -19
  87. package/lib/MultiStats.js +79 -79
  88. package/lib/MultiWatching.js +32 -32
  89. package/lib/NamedChunksPlugin.js +30 -30
  90. package/lib/NamedModulesPlugin.js +27 -27
  91. package/lib/NewWatchingPlugin.js +15 -15
  92. package/lib/NoEmitOnErrorsPlugin.js +22 -22
  93. package/lib/NoErrorsPlugin.js +29 -29
  94. package/lib/NodeStuffPlugin.js +97 -97
  95. package/lib/NormalModuleFactory.js +3 -1
  96. package/lib/NormalModuleReplacementPlugin.js +45 -45
  97. package/lib/NullFactory.js +12 -12
  98. package/lib/OptionsApply.js +10 -10
  99. package/lib/OptionsDefaulter.js +2 -2
  100. package/lib/Parser.js +79 -0
  101. package/lib/ParserHelpers.js +85 -85
  102. package/lib/PrefetchPlugin.js +31 -31
  103. package/lib/ProgressPlugin.js +192 -192
  104. package/lib/ProvidePlugin.js +55 -55
  105. package/lib/RawModule.js +54 -54
  106. package/lib/RequestShortener.js +63 -63
  107. package/lib/RequireJsStuffPlugin.js +31 -31
  108. package/lib/RuleSet.js +444 -444
  109. package/lib/SetVarMainTemplatePlugin.js +41 -41
  110. package/lib/SingleEntryPlugin.js +35 -35
  111. package/lib/SizeFormatHelpers.js +18 -18
  112. package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
  113. package/lib/SourceMapDevToolPlugin.js +3 -3
  114. package/lib/Stats.js +4 -2
  115. package/lib/TemplatedPathPlugin.js +6 -2
  116. package/lib/UmdMainTemplatePlugin.js +1 -1
  117. package/lib/UnsupportedFeatureWarning.js +21 -21
  118. package/lib/UseStrictPlugin.js +34 -34
  119. package/lib/WarnCaseSensitiveModulesPlugin.js +31 -31
  120. package/lib/WatchIgnorePlugin.js +49 -49
  121. package/lib/WebpackError.js +11 -11
  122. package/lib/WebpackOptionsDefaulter.js +130 -129
  123. package/lib/WebpackOptionsValidationError.js +219 -196
  124. package/lib/compareLocations.js +36 -36
  125. package/lib/dependencies/AMDDefineDependency.js +142 -142
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +18 -6
  127. package/lib/dependencies/AMDPlugin.js +119 -119
  128. package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
  129. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
  130. package/lib/dependencies/AMDRequireDependency.js +67 -67
  131. package/lib/dependencies/AMDRequireItemDependency.js +22 -22
  132. package/lib/dependencies/CommonJsRequireDependency.js +22 -22
  133. package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
  134. package/lib/dependencies/ConstDependency.js +32 -32
  135. package/lib/dependencies/ContextDependencyHelpers.js +71 -71
  136. package/lib/dependencies/ContextElementDependency.js +21 -21
  137. package/lib/dependencies/CriticalDependencyWarning.js +20 -20
  138. package/lib/dependencies/DelegatedExportsDependency.js +33 -33
  139. package/lib/dependencies/DelegatedSourceDependency.js +18 -18
  140. package/lib/dependencies/DllEntryDependency.js +20 -20
  141. package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
  142. package/lib/dependencies/HarmonyDetectionParserPlugin.js +2 -2
  143. package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
  144. package/lib/dependencies/HarmonyImportDependency.js +1 -1
  145. package/lib/dependencies/ImportDependenciesBlock.js +17 -17
  146. package/lib/dependencies/ImportEagerContextDependency.js +22 -22
  147. package/lib/dependencies/ImportLazyContextDependency.js +22 -22
  148. package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
  149. package/lib/dependencies/ImportParserPlugin.js +89 -89
  150. package/lib/dependencies/ImportPlugin.js +60 -60
  151. package/lib/dependencies/ImportWeakContextDependency.js +22 -22
  152. package/lib/dependencies/LoaderDependency.js +18 -18
  153. package/lib/dependencies/LoaderPlugin.js +60 -60
  154. package/lib/dependencies/LocalModule.js +23 -23
  155. package/lib/dependencies/LocalModuleDependency.js +24 -24
  156. package/lib/dependencies/LocalModulesHelpers.js +46 -46
  157. package/lib/dependencies/ModuleDependency.js +23 -23
  158. package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
  159. package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
  160. package/lib/dependencies/MultiEntryDependency.js +20 -20
  161. package/lib/dependencies/NullDependency.js +24 -24
  162. package/lib/dependencies/PrefetchDependency.js +18 -18
  163. package/lib/dependencies/RequireContextDependency.js +26 -26
  164. package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
  165. package/lib/dependencies/RequireContextPlugin.js +96 -96
  166. package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
  167. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
  168. package/lib/dependencies/RequireEnsureDependency.js +38 -38
  169. package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
  170. package/lib/dependencies/RequireEnsurePlugin.js +40 -40
  171. package/lib/dependencies/RequireHeaderDependency.js +26 -26
  172. package/lib/dependencies/RequireIncludeDependency.js +8 -0
  173. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
  174. package/lib/dependencies/RequireIncludePlugin.js +33 -33
  175. package/lib/dependencies/RequireResolveDependency.js +22 -22
  176. package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
  177. package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
  178. package/lib/dependencies/SingleEntryDependency.js +18 -18
  179. package/lib/dependencies/SystemPlugin.js +44 -44
  180. package/lib/dependencies/UnsupportedDependency.js +23 -23
  181. package/lib/dependencies/WebpackMissingModule.js +18 -18
  182. package/lib/dependencies/getFunctionExpression.js +44 -44
  183. package/lib/formatLocation.js +54 -54
  184. package/lib/node/NodeChunkTemplatePlugin.js +27 -27
  185. package/lib/node/NodeEnvironmentPlugin.js +25 -25
  186. package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
  187. package/lib/node/NodeMainTemplate.runtime.js +24 -24
  188. package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
  189. package/lib/node/NodeOutputFileSystem.js +22 -22
  190. package/lib/node/NodeSourcePlugin.js +88 -88
  191. package/lib/node/NodeTargetPlugin.js +17 -15
  192. package/lib/node/NodeTemplatePlugin.js +27 -27
  193. package/lib/node/NodeWatchFileSystem.js +72 -72
  194. package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
  195. package/lib/optimize/ConcatenatedModule.js +17 -6
  196. package/lib/optimize/DedupePlugin.js +15 -15
  197. package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
  198. package/lib/optimize/LimitChunkCountPlugin.js +59 -59
  199. package/lib/optimize/MinChunkSizePlugin.js +65 -65
  200. package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
  201. package/lib/optimize/UglifyJsPlugin.js +9 -9
  202. package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
  203. package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
  204. package/lib/performance/NoAsyncChunksWarning.js +20 -20
  205. package/lib/performance/SizeLimitsPlugin.js +102 -102
  206. package/lib/prepareOptions.js +29 -29
  207. package/lib/removeAndDo.js +15 -15
  208. package/lib/util/Semaphore.js +32 -32
  209. package/lib/util/identifier.js +38 -38
  210. package/lib/validateSchema.js +66 -66
  211. package/lib/web/WebEnvironmentPlugin.js +18 -18
  212. package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
  213. package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
  214. package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
  215. package/lib/webworker/WebWorkerMainTemplatePlugin.js +2 -2
  216. package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
  217. package/package.json +25 -16
  218. package/schemas/ajv.absolutePath.js +29 -29
  219. package/schemas/webpackOptionsSchema.json +405 -76
@@ -1,142 +1,142 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const NullDependency = require("./NullDependency");
7
-
8
- class AMDDefineDependency extends NullDependency {
9
- constructor(range, arrayRange, functionRange, objectRange, namedModule) {
10
- super();
11
- this.range = range;
12
- this.arrayRange = arrayRange;
13
- this.functionRange = functionRange;
14
- this.objectRange = objectRange;
15
- this.namedModule = namedModule;
16
- }
17
-
18
- get type() {
19
- return "amd define";
20
- }
21
- }
22
-
23
- AMDDefineDependency.Template = class AMDDefineDependencyTemplate {
24
- get definitions() {
25
- return {
26
- f: [
27
- "var __WEBPACK_AMD_DEFINE_RESULT__;",
28
- `!(__WEBPACK_AMD_DEFINE_RESULT__ = #.call(exports, __webpack_require__, exports, module),
29
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`
30
- ],
31
- o: [
32
- "",
33
- "!(module.exports = #)"
34
- ],
35
- of: [
36
- "var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;",
37
- `!(__WEBPACK_AMD_DEFINE_FACTORY__ = (#),
38
- __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
39
- (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
40
- __WEBPACK_AMD_DEFINE_FACTORY__),
41
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`
42
- ],
43
- af: [
44
- "var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;",
45
- `!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, __WEBPACK_AMD_DEFINE_RESULT__ = #.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
46
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`
47
- ],
48
- ao: [
49
- "",
50
- "!(#, module.exports = #)"
51
- ],
52
- aof: [
53
- "var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;",
54
- `!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, __WEBPACK_AMD_DEFINE_FACTORY__ = (#),
55
- __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
56
- (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
57
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`
58
- ],
59
- lf: [
60
- "var XXX, XXXmodule;",
61
- "!(XXXmodule = { id: YYY, exports: {}, loaded: false }, XXX = #.call(XXXmodule.exports, __webpack_require__, XXXmodule.exports, XXXmodule), XXXmodule.loaded = true, XXX === undefined && (XXX = XXXmodule.exports))"
62
- ],
63
- lo: [
64
- "var XXX;",
65
- "!(XXX = #)"
66
- ],
67
- lof: [
68
- "var XXX, XXXfactory, XXXmodule;",
69
- "!(XXXfactory = (#), (XXXmodule = { id: YYY, exports: {}, loaded: false }), XXX = (typeof XXXfactory === 'function' ? (XXXfactory.call(XXXmodule.exports, __webpack_require__, XXXmodule.exports, XXXmodule)) : XXXfactory), (XXXmodule.loaded = true), XXX === undefined && (XXX = XXXmodule.exports))"
70
- ],
71
- laf: [
72
- "var __WEBPACK_AMD_DEFINE_ARRAY__, XXX;",
73
- "!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, XXX = (#.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)))"
74
- ],
75
- lao: [
76
- "var XXX;",
77
- "!(#, XXX = #)"
78
- ],
79
- laof: [
80
- "var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_FACTORY__, XXX;",
81
- `!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, __WEBPACK_AMD_DEFINE_FACTORY__ = (#),
82
- XXX = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
83
- (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__))`
84
- ]
85
- };
86
- }
87
-
88
- apply(dependency, source) {
89
- const branch = this.branch(dependency);
90
- const defAndText = this.definitions[branch];
91
- const definitions = defAndText[0];
92
- const text = defAndText[1];
93
- this.replace(dependency, source, definitions, text);
94
- }
95
-
96
- localModuleVar(dependency) {
97
- return dependency.localModule && dependency.localModule.used && dependency.localModule.variableName();
98
- }
99
-
100
- branch(dependency) {
101
- const localModuleVar = this.localModuleVar(dependency) ? "l" : "";
102
- const arrayRange = dependency.arrayRange ? "a" : "";
103
- const objectRange = dependency.objectRange ? "o" : "";
104
- const functionRange = dependency.functionRange ? "f" : "";
105
- return localModuleVar + arrayRange + objectRange + functionRange;
106
- }
107
-
108
- replace(dependency, source, definition, text) {
109
- const localModuleVar = this.localModuleVar(dependency);
110
- if(localModuleVar) {
111
- text = text.replace(/XXX/g, localModuleVar.replace(/\$/g, "$$$$"));
112
- definition = definition.replace(/XXX/g, localModuleVar.replace(/\$/g, "$$$$"));
113
- }
114
-
115
- if(dependency.namedModule) {
116
- text = text.replace(/YYY/g, JSON.stringify(dependency.namedModule));
117
- }
118
-
119
- const texts = text.split("#");
120
-
121
- if(definition) source.insert(0, definition);
122
-
123
- let current = dependency.range[0];
124
- if(dependency.arrayRange) {
125
- source.replace(current, dependency.arrayRange[0] - 1, texts.shift());
126
- current = dependency.arrayRange[1];
127
- }
128
-
129
- if(dependency.objectRange) {
130
- source.replace(current, dependency.objectRange[0] - 1, texts.shift());
131
- current = dependency.objectRange[1];
132
- } else if(dependency.functionRange) {
133
- source.replace(current, dependency.functionRange[0] - 1, texts.shift());
134
- current = dependency.functionRange[1];
135
- }
136
- source.replace(current, dependency.range[1] - 1, texts.shift());
137
- if(texts.length > 0)
138
- throw new Error("Implementation error");
139
- }
140
- };
141
-
142
- module.exports = AMDDefineDependency;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const NullDependency = require("./NullDependency");
7
+
8
+ class AMDDefineDependency extends NullDependency {
9
+ constructor(range, arrayRange, functionRange, objectRange, namedModule) {
10
+ super();
11
+ this.range = range;
12
+ this.arrayRange = arrayRange;
13
+ this.functionRange = functionRange;
14
+ this.objectRange = objectRange;
15
+ this.namedModule = namedModule;
16
+ }
17
+
18
+ get type() {
19
+ return "amd define";
20
+ }
21
+ }
22
+
23
+ AMDDefineDependency.Template = class AMDDefineDependencyTemplate {
24
+ get definitions() {
25
+ return {
26
+ f: [
27
+ "var __WEBPACK_AMD_DEFINE_RESULT__;",
28
+ `!(__WEBPACK_AMD_DEFINE_RESULT__ = (#).call(exports, __webpack_require__, exports, module),
29
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`
30
+ ],
31
+ o: [
32
+ "",
33
+ "!(module.exports = #)"
34
+ ],
35
+ of: [
36
+ "var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;",
37
+ `!(__WEBPACK_AMD_DEFINE_FACTORY__ = (#),
38
+ __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
39
+ (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
40
+ __WEBPACK_AMD_DEFINE_FACTORY__),
41
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`
42
+ ],
43
+ af: [
44
+ "var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;",
45
+ `!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, __WEBPACK_AMD_DEFINE_RESULT__ = (#).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
46
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`
47
+ ],
48
+ ao: [
49
+ "",
50
+ "!(#, module.exports = #)"
51
+ ],
52
+ aof: [
53
+ "var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;",
54
+ `!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, __WEBPACK_AMD_DEFINE_FACTORY__ = (#),
55
+ __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
56
+ (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
57
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))`
58
+ ],
59
+ lf: [
60
+ "var XXX, XXXmodule;",
61
+ "!(XXXmodule = { id: YYY, exports: {}, loaded: false }, XXX = #.call(XXXmodule.exports, __webpack_require__, XXXmodule.exports, XXXmodule), XXXmodule.loaded = true, XXX === undefined && (XXX = XXXmodule.exports))"
62
+ ],
63
+ lo: [
64
+ "var XXX;",
65
+ "!(XXX = #)"
66
+ ],
67
+ lof: [
68
+ "var XXX, XXXfactory, XXXmodule;",
69
+ "!(XXXfactory = (#), (XXXmodule = { id: YYY, exports: {}, loaded: false }), XXX = (typeof XXXfactory === 'function' ? (XXXfactory.call(XXXmodule.exports, __webpack_require__, XXXmodule.exports, XXXmodule)) : XXXfactory), (XXXmodule.loaded = true), XXX === undefined && (XXX = XXXmodule.exports))"
70
+ ],
71
+ laf: [
72
+ "var __WEBPACK_AMD_DEFINE_ARRAY__, XXX;",
73
+ "!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, XXX = ((#).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)))"
74
+ ],
75
+ lao: [
76
+ "var XXX;",
77
+ "!(#, XXX = #)"
78
+ ],
79
+ laof: [
80
+ "var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_FACTORY__, XXX;",
81
+ `!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, __WEBPACK_AMD_DEFINE_FACTORY__ = (#),
82
+ XXX = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
83
+ (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__))`
84
+ ]
85
+ };
86
+ }
87
+
88
+ apply(dependency, source) {
89
+ const branch = this.branch(dependency);
90
+ const defAndText = this.definitions[branch];
91
+ const definitions = defAndText[0];
92
+ const text = defAndText[1];
93
+ this.replace(dependency, source, definitions, text);
94
+ }
95
+
96
+ localModuleVar(dependency) {
97
+ return dependency.localModule && dependency.localModule.used && dependency.localModule.variableName();
98
+ }
99
+
100
+ branch(dependency) {
101
+ const localModuleVar = this.localModuleVar(dependency) ? "l" : "";
102
+ const arrayRange = dependency.arrayRange ? "a" : "";
103
+ const objectRange = dependency.objectRange ? "o" : "";
104
+ const functionRange = dependency.functionRange ? "f" : "";
105
+ return localModuleVar + arrayRange + objectRange + functionRange;
106
+ }
107
+
108
+ replace(dependency, source, definition, text) {
109
+ const localModuleVar = this.localModuleVar(dependency);
110
+ if(localModuleVar) {
111
+ text = text.replace(/XXX/g, localModuleVar.replace(/\$/g, "$$$$"));
112
+ definition = definition.replace(/XXX/g, localModuleVar.replace(/\$/g, "$$$$"));
113
+ }
114
+
115
+ if(dependency.namedModule) {
116
+ text = text.replace(/YYY/g, JSON.stringify(dependency.namedModule));
117
+ }
118
+
119
+ const texts = text.split("#");
120
+
121
+ if(definition) source.insert(0, definition);
122
+
123
+ let current = dependency.range[0];
124
+ if(dependency.arrayRange) {
125
+ source.replace(current, dependency.arrayRange[0] - 1, texts.shift());
126
+ current = dependency.arrayRange[1];
127
+ }
128
+
129
+ if(dependency.objectRange) {
130
+ source.replace(current, dependency.objectRange[0] - 1, texts.shift());
131
+ current = dependency.objectRange[1];
132
+ } else if(dependency.functionRange) {
133
+ source.replace(current, dependency.functionRange[0] - 1, texts.shift());
134
+ current = dependency.functionRange[1];
135
+ }
136
+ source.replace(current, dependency.range[1] - 1, texts.shift());
137
+ if(texts.length > 0)
138
+ throw new Error("Implementation error");
139
+ }
140
+ };
141
+
142
+ module.exports = AMDDefineDependency;
@@ -23,6 +23,18 @@ function isBoundFunctionExpression(expr) {
23
23
  return true;
24
24
  }
25
25
 
26
+ function isUnboundFunctionExpression(expr) {
27
+ if(expr.type === "FunctionExpression") return true;
28
+ if(expr.type === "ArrowFunctionExpression") return true;
29
+ return false;
30
+ }
31
+
32
+ function isCallable(expr) {
33
+ if(isUnboundFunctionExpression(expr)) return true;
34
+ if(isBoundFunctionExpression(expr)) return true;
35
+ return false;
36
+ }
37
+
26
38
  class AMDDefineDependencyParserPlugin {
27
39
  constructor(options) {
28
40
  this.options = options;
@@ -38,7 +50,7 @@ class AMDDefineDependencyParserPlugin {
38
50
  let array, fn, obj, namedModule;
39
51
  switch(expr.arguments.length) {
40
52
  case 1:
41
- if(expr.arguments[0].type === "FunctionExpression" || isBoundFunctionExpression(expr.arguments[0])) {
53
+ if(isCallable(expr.arguments[0])) {
42
54
  // define(f() {...})
43
55
  fn = expr.arguments[0];
44
56
  } else if(expr.arguments[0].type === "ObjectExpression") {
@@ -54,7 +66,7 @@ class AMDDefineDependencyParserPlugin {
54
66
  if(expr.arguments[0].type === "Literal") {
55
67
  namedModule = expr.arguments[0].value;
56
68
  // define("...", ...)
57
- if(expr.arguments[1].type === "FunctionExpression" || isBoundFunctionExpression(expr.arguments[1])) {
69
+ if(isCallable(expr.arguments[1])) {
58
70
  // define("...", f() {...})
59
71
  fn = expr.arguments[1];
60
72
  } else if(expr.arguments[1].type === "ObjectExpression") {
@@ -67,7 +79,7 @@ class AMDDefineDependencyParserPlugin {
67
79
  }
68
80
  } else {
69
81
  array = expr.arguments[0];
70
- if(expr.arguments[1].type === "FunctionExpression" || isBoundFunctionExpression(expr.arguments[1])) {
82
+ if(isCallable(expr.arguments[1])) {
71
83
  // define([...], f() {})
72
84
  fn = expr.arguments[1];
73
85
  } else if(expr.arguments[1].type === "ObjectExpression") {
@@ -84,7 +96,7 @@ class AMDDefineDependencyParserPlugin {
84
96
  // define("...", [...], f() {...})
85
97
  namedModule = expr.arguments[0].value;
86
98
  array = expr.arguments[1];
87
- if(expr.arguments[2].type === "FunctionExpression" || isBoundFunctionExpression(expr.arguments[2])) {
99
+ if(isCallable(expr.arguments[2])) {
88
100
  // define("...", [...], f() {})
89
101
  fn = expr.arguments[2];
90
102
  } else if(expr.arguments[2].type === "ObjectExpression") {
@@ -102,7 +114,7 @@ class AMDDefineDependencyParserPlugin {
102
114
  let fnParams = null;
103
115
  let fnParamsOffset = 0;
104
116
  if(fn) {
105
- if(fn.type === "FunctionExpression") fnParams = fn.params;
117
+ if(isUnboundFunctionExpression(fn)) fnParams = fn.params;
106
118
  else if(isBoundFunctionExpression(fn)) {
107
119
  fnParams = fn.callee.object.params;
108
120
  fnParamsOffset = fn.arguments.length - 1;
@@ -134,7 +146,7 @@ class AMDDefineDependencyParserPlugin {
134
146
  });
135
147
  }
136
148
  let inTry;
137
- if(fn && fn.type === "FunctionExpression") {
149
+ if(fn && isUnboundFunctionExpression(fn)) {
138
150
  inTry = parser.scope.inTry;
139
151
  parser.inScope(fnParams, () => {
140
152
  parser.scope.renames = fnRenames;
@@ -1,119 +1,119 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const path = require("path");
8
- const AMDRequireDependency = require("./AMDRequireDependency");
9
- const AMDRequireItemDependency = require("./AMDRequireItemDependency");
10
- const AMDRequireArrayDependency = require("./AMDRequireArrayDependency");
11
- const AMDRequireContextDependency = require("./AMDRequireContextDependency");
12
- const AMDDefineDependency = require("./AMDDefineDependency");
13
- const UnsupportedDependency = require("./UnsupportedDependency");
14
- const LocalModuleDependency = require("./LocalModuleDependency");
15
-
16
- const NullFactory = require("../NullFactory");
17
-
18
- const AMDRequireDependenciesBlockParserPlugin = require("./AMDRequireDependenciesBlockParserPlugin");
19
- const AMDDefineDependencyParserPlugin = require("./AMDDefineDependencyParserPlugin");
20
-
21
- const AliasPlugin = require("enhanced-resolve/lib/AliasPlugin");
22
-
23
- const ParserHelpers = require("../ParserHelpers");
24
-
25
- class AMDPlugin {
26
- constructor(options, amdOptions) {
27
- this.amdOptions = amdOptions;
28
- this.options = options;
29
- }
30
-
31
- apply(compiler) {
32
- const options = this.options;
33
- const amdOptions = this.amdOptions;
34
- compiler.plugin("compilation", (compilation, params) => {
35
- const normalModuleFactory = params.normalModuleFactory;
36
- const contextModuleFactory = params.contextModuleFactory;
37
-
38
- compilation.dependencyFactories.set(AMDRequireDependency, new NullFactory());
39
- compilation.dependencyTemplates.set(AMDRequireDependency, new AMDRequireDependency.Template());
40
-
41
- compilation.dependencyFactories.set(AMDRequireItemDependency, normalModuleFactory);
42
- compilation.dependencyTemplates.set(AMDRequireItemDependency, new AMDRequireItemDependency.Template());
43
-
44
- compilation.dependencyFactories.set(AMDRequireArrayDependency, new NullFactory());
45
- compilation.dependencyTemplates.set(AMDRequireArrayDependency, new AMDRequireArrayDependency.Template());
46
-
47
- compilation.dependencyFactories.set(AMDRequireContextDependency, contextModuleFactory);
48
- compilation.dependencyTemplates.set(AMDRequireContextDependency, new AMDRequireContextDependency.Template());
49
-
50
- compilation.dependencyFactories.set(AMDDefineDependency, new NullFactory());
51
- compilation.dependencyTemplates.set(AMDDefineDependency, new AMDDefineDependency.Template());
52
-
53
- compilation.dependencyFactories.set(UnsupportedDependency, new NullFactory());
54
- compilation.dependencyTemplates.set(UnsupportedDependency, new UnsupportedDependency.Template());
55
-
56
- compilation.dependencyFactories.set(LocalModuleDependency, new NullFactory());
57
- compilation.dependencyTemplates.set(LocalModuleDependency, new LocalModuleDependency.Template());
58
-
59
- params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
60
-
61
- if(typeof parserOptions.amd !== "undefined" && !parserOptions.amd)
62
- return;
63
-
64
- function setExpressionToModule(outerExpr, module) {
65
- parser.plugin("expression " + outerExpr, (expr) => {
66
- const dep = new AMDRequireItemDependency(module, expr.range);
67
- dep.userRequest = outerExpr;
68
- dep.loc = expr.loc;
69
- parser.state.current.addDependency(dep);
70
- return true;
71
- });
72
- }
73
-
74
- parser.apply(
75
- new AMDRequireDependenciesBlockParserPlugin(options),
76
- new AMDDefineDependencyParserPlugin(options)
77
- );
78
- setExpressionToModule("require.amd", "!!webpack amd options");
79
- setExpressionToModule("define.amd", "!!webpack amd options");
80
- setExpressionToModule("define", "!!webpack amd define");
81
- parser.plugin("expression __webpack_amd_options__", () =>
82
- parser.state.current.addVariable("__webpack_amd_options__", JSON.stringify(amdOptions)));
83
- parser.plugin("evaluate typeof define.amd", ParserHelpers.evaluateToString(typeof amdOptions));
84
- parser.plugin("evaluate typeof require.amd", ParserHelpers.evaluateToString(typeof amdOptions));
85
- parser.plugin("evaluate Identifier define.amd", ParserHelpers.evaluateToIdentifier("define.amd", true));
86
- parser.plugin("evaluate Identifier require.amd", ParserHelpers.evaluateToIdentifier("require.amd", true));
87
- parser.plugin("typeof define", ParserHelpers.toConstantDependency(JSON.stringify("function")));
88
- parser.plugin("evaluate typeof define", ParserHelpers.evaluateToString("function"));
89
- parser.plugin("can-rename define", ParserHelpers.approve);
90
- parser.plugin("rename define", (expr) => {
91
- const dep = new AMDRequireItemDependency("!!webpack amd define", expr.range);
92
- dep.userRequest = "define";
93
- dep.loc = expr.loc;
94
- parser.state.current.addDependency(dep);
95
- return false;
96
- });
97
- parser.plugin("typeof require", ParserHelpers.toConstantDependency(JSON.stringify("function")));
98
- parser.plugin("evaluate typeof require", ParserHelpers.evaluateToString("function"));
99
- });
100
- });
101
- compiler.plugin("after-resolvers", () => {
102
- compiler.resolvers.normal.apply(
103
- new AliasPlugin("described-resolve", {
104
- name: "amdefine",
105
- alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js")
106
- }, "resolve"),
107
- new AliasPlugin("described-resolve", {
108
- name: "webpack amd options",
109
- alias: path.join(__dirname, "..", "..", "buildin", "amd-options.js")
110
- }, "resolve"),
111
- new AliasPlugin("described-resolve", {
112
- name: "webpack amd define",
113
- alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js")
114
- }, "resolve")
115
- );
116
- });
117
- }
118
- }
119
- module.exports = AMDPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const path = require("path");
8
+ const AMDRequireDependency = require("./AMDRequireDependency");
9
+ const AMDRequireItemDependency = require("./AMDRequireItemDependency");
10
+ const AMDRequireArrayDependency = require("./AMDRequireArrayDependency");
11
+ const AMDRequireContextDependency = require("./AMDRequireContextDependency");
12
+ const AMDDefineDependency = require("./AMDDefineDependency");
13
+ const UnsupportedDependency = require("./UnsupportedDependency");
14
+ const LocalModuleDependency = require("./LocalModuleDependency");
15
+
16
+ const NullFactory = require("../NullFactory");
17
+
18
+ const AMDRequireDependenciesBlockParserPlugin = require("./AMDRequireDependenciesBlockParserPlugin");
19
+ const AMDDefineDependencyParserPlugin = require("./AMDDefineDependencyParserPlugin");
20
+
21
+ const AliasPlugin = require("enhanced-resolve/lib/AliasPlugin");
22
+
23
+ const ParserHelpers = require("../ParserHelpers");
24
+
25
+ class AMDPlugin {
26
+ constructor(options, amdOptions) {
27
+ this.amdOptions = amdOptions;
28
+ this.options = options;
29
+ }
30
+
31
+ apply(compiler) {
32
+ const options = this.options;
33
+ const amdOptions = this.amdOptions;
34
+ compiler.plugin("compilation", (compilation, params) => {
35
+ const normalModuleFactory = params.normalModuleFactory;
36
+ const contextModuleFactory = params.contextModuleFactory;
37
+
38
+ compilation.dependencyFactories.set(AMDRequireDependency, new NullFactory());
39
+ compilation.dependencyTemplates.set(AMDRequireDependency, new AMDRequireDependency.Template());
40
+
41
+ compilation.dependencyFactories.set(AMDRequireItemDependency, normalModuleFactory);
42
+ compilation.dependencyTemplates.set(AMDRequireItemDependency, new AMDRequireItemDependency.Template());
43
+
44
+ compilation.dependencyFactories.set(AMDRequireArrayDependency, new NullFactory());
45
+ compilation.dependencyTemplates.set(AMDRequireArrayDependency, new AMDRequireArrayDependency.Template());
46
+
47
+ compilation.dependencyFactories.set(AMDRequireContextDependency, contextModuleFactory);
48
+ compilation.dependencyTemplates.set(AMDRequireContextDependency, new AMDRequireContextDependency.Template());
49
+
50
+ compilation.dependencyFactories.set(AMDDefineDependency, new NullFactory());
51
+ compilation.dependencyTemplates.set(AMDDefineDependency, new AMDDefineDependency.Template());
52
+
53
+ compilation.dependencyFactories.set(UnsupportedDependency, new NullFactory());
54
+ compilation.dependencyTemplates.set(UnsupportedDependency, new UnsupportedDependency.Template());
55
+
56
+ compilation.dependencyFactories.set(LocalModuleDependency, new NullFactory());
57
+ compilation.dependencyTemplates.set(LocalModuleDependency, new LocalModuleDependency.Template());
58
+
59
+ params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
60
+
61
+ if(typeof parserOptions.amd !== "undefined" && !parserOptions.amd)
62
+ return;
63
+
64
+ function setExpressionToModule(outerExpr, module) {
65
+ parser.plugin("expression " + outerExpr, (expr) => {
66
+ const dep = new AMDRequireItemDependency(module, expr.range);
67
+ dep.userRequest = outerExpr;
68
+ dep.loc = expr.loc;
69
+ parser.state.current.addDependency(dep);
70
+ return true;
71
+ });
72
+ }
73
+
74
+ parser.apply(
75
+ new AMDRequireDependenciesBlockParserPlugin(options),
76
+ new AMDDefineDependencyParserPlugin(options)
77
+ );
78
+ setExpressionToModule("require.amd", "!!webpack amd options");
79
+ setExpressionToModule("define.amd", "!!webpack amd options");
80
+ setExpressionToModule("define", "!!webpack amd define");
81
+ parser.plugin("expression __webpack_amd_options__", () =>
82
+ parser.state.current.addVariable("__webpack_amd_options__", JSON.stringify(amdOptions)));
83
+ parser.plugin("evaluate typeof define.amd", ParserHelpers.evaluateToString(typeof amdOptions));
84
+ parser.plugin("evaluate typeof require.amd", ParserHelpers.evaluateToString(typeof amdOptions));
85
+ parser.plugin("evaluate Identifier define.amd", ParserHelpers.evaluateToIdentifier("define.amd", true));
86
+ parser.plugin("evaluate Identifier require.amd", ParserHelpers.evaluateToIdentifier("require.amd", true));
87
+ parser.plugin("typeof define", ParserHelpers.toConstantDependency(JSON.stringify("function")));
88
+ parser.plugin("evaluate typeof define", ParserHelpers.evaluateToString("function"));
89
+ parser.plugin("can-rename define", ParserHelpers.approve);
90
+ parser.plugin("rename define", (expr) => {
91
+ const dep = new AMDRequireItemDependency("!!webpack amd define", expr.range);
92
+ dep.userRequest = "define";
93
+ dep.loc = expr.loc;
94
+ parser.state.current.addDependency(dep);
95
+ return false;
96
+ });
97
+ parser.plugin("typeof require", ParserHelpers.toConstantDependency(JSON.stringify("function")));
98
+ parser.plugin("evaluate typeof require", ParserHelpers.evaluateToString("function"));
99
+ });
100
+ });
101
+ compiler.plugin("after-resolvers", () => {
102
+ compiler.resolvers.normal.apply(
103
+ new AliasPlugin("described-resolve", {
104
+ name: "amdefine",
105
+ alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js")
106
+ }, "resolve"),
107
+ new AliasPlugin("described-resolve", {
108
+ name: "webpack amd options",
109
+ alias: path.join(__dirname, "..", "..", "buildin", "amd-options.js")
110
+ }, "resolve"),
111
+ new AliasPlugin("described-resolve", {
112
+ name: "webpack amd define",
113
+ alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js")
114
+ }, "resolve")
115
+ );
116
+ });
117
+ }
118
+ }
119
+ module.exports = AMDPlugin;