@eriche/webpack 4.47.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.
- package/LICENSE +20 -0
- package/README.md +784 -0
- package/SECURITY.md +9 -0
- package/bin/webpack.js +171 -0
- package/buildin/amd-define.js +3 -0
- package/buildin/amd-options.js +2 -0
- package/buildin/global.js +20 -0
- package/buildin/harmony-module.js +24 -0
- package/buildin/module.js +22 -0
- package/buildin/system.js +7 -0
- package/declarations/WebpackOptions.d.ts +1466 -0
- package/declarations/plugins/BannerPlugin.d.ts +49 -0
- package/declarations/plugins/DllPlugin.d.ts +32 -0
- package/declarations/plugins/DllReferencePlugin.d.ts +126 -0
- package/declarations/plugins/HashedModuleIdsPlugin.d.ts +24 -0
- package/declarations/plugins/IgnorePlugin.d.ts +27 -0
- package/declarations/plugins/LoaderOptionsPlugin.d.ts +27 -0
- package/declarations/plugins/ProgressPlugin.d.ts +42 -0
- package/declarations/plugins/SourceMapDevToolPlugin.d.ts +94 -0
- package/declarations/plugins/WatchIgnorePlugin.d.ts +10 -0
- package/declarations/plugins/debug/ProfilingPlugin.d.ts +12 -0
- package/declarations/plugins/optimize/AggressiveSplittingPlugin.d.ts +24 -0
- package/declarations/plugins/optimize/LimitChunkCountPlugin.d.ts +16 -0
- package/declarations/plugins/optimize/MinChunkSizePlugin.d.ts +12 -0
- package/declarations/plugins/optimize/OccurrenceOrderChunkIdsPlugin.d.ts +12 -0
- package/declarations/plugins/optimize/OccurrenceOrderModuleIdsPlugin.d.ts +12 -0
- package/hot/dev-server.js +61 -0
- package/hot/emitter.js +2 -0
- package/hot/log-apply-result.js +44 -0
- package/hot/log.js +59 -0
- package/hot/only-dev-server.js +102 -0
- package/hot/poll.js +37 -0
- package/hot/signal.js +62 -0
- package/lib/APIPlugin.js +84 -0
- package/lib/AbstractMethodError.js +43 -0
- package/lib/AmdMainTemplatePlugin.js +106 -0
- package/lib/AsyncDependenciesBlock.js +110 -0
- package/lib/AsyncDependencyToInitialChunkError.js +31 -0
- package/lib/AutomaticPrefetchPlugin.js +57 -0
- package/lib/BannerPlugin.js +122 -0
- package/lib/BasicEvaluatedExpression.js +248 -0
- package/lib/CachePlugin.js +100 -0
- package/lib/CaseSensitiveModulesWarning.js +67 -0
- package/lib/Chunk.js +875 -0
- package/lib/ChunkGroup.js +513 -0
- package/lib/ChunkRenderError.js +32 -0
- package/lib/ChunkTemplate.js +87 -0
- package/lib/CommentCompilationWarning.js +32 -0
- package/lib/CommonJsStuffPlugin.js +116 -0
- package/lib/CompatibilityPlugin.js +70 -0
- package/lib/Compilation.js +2327 -0
- package/lib/Compiler.js +735 -0
- package/lib/ConcurrentCompilationError.js +19 -0
- package/lib/ConstPlugin.js +348 -0
- package/lib/ContextExclusionPlugin.js +28 -0
- package/lib/ContextModule.js +872 -0
- package/lib/ContextModuleFactory.js +262 -0
- package/lib/ContextReplacementPlugin.js +133 -0
- package/lib/DefinePlugin.js +289 -0
- package/lib/DelegatedModule.js +114 -0
- package/lib/DelegatedModuleFactoryPlugin.js +95 -0
- package/lib/DelegatedPlugin.js +39 -0
- package/lib/DependenciesBlock.js +124 -0
- package/lib/DependenciesBlockVariable.js +72 -0
- package/lib/Dependency.js +89 -0
- package/lib/DllEntryPlugin.js +54 -0
- package/lib/DllModule.js +60 -0
- package/lib/DllModuleFactory.js +29 -0
- package/lib/DllPlugin.js +49 -0
- package/lib/DllReferencePlugin.js +156 -0
- package/lib/DynamicEntryPlugin.js +94 -0
- package/lib/EntryModuleNotFoundError.js +21 -0
- package/lib/EntryOptionPlugin.js +46 -0
- package/lib/Entrypoint.js +64 -0
- package/lib/EnvironmentPlugin.js +72 -0
- package/lib/ErrorHelpers.js +60 -0
- package/lib/EvalDevToolModulePlugin.js +27 -0
- package/lib/EvalDevToolModuleTemplatePlugin.js +61 -0
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +120 -0
- package/lib/EvalSourceMapDevToolPlugin.js +41 -0
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -0
- package/lib/ExtendedAPIPlugin.js +88 -0
- package/lib/ExternalModule.js +179 -0
- package/lib/ExternalModuleFactoryPlugin.js +110 -0
- package/lib/ExternalsPlugin.js +23 -0
- package/lib/FlagAllModulesAsUsedPlugin.js +38 -0
- package/lib/FlagDependencyExportsPlugin.js +174 -0
- package/lib/FlagDependencyUsagePlugin.js +116 -0
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -0
- package/lib/FunctionModulePlugin.js +19 -0
- package/lib/FunctionModuleTemplatePlugin.js +102 -0
- package/lib/Generator.js +60 -0
- package/lib/GraphHelpers.js +65 -0
- package/lib/HarmonyLinkingError.js +17 -0
- package/lib/HashedModuleIdsPlugin.js +63 -0
- package/lib/HotModuleReplacement.runtime.js +721 -0
- package/lib/HotModuleReplacementPlugin.js +425 -0
- package/lib/HotUpdateChunk.js +17 -0
- package/lib/HotUpdateChunkTemplate.js +78 -0
- package/lib/IgnorePlugin.js +91 -0
- package/lib/JavascriptGenerator.js +229 -0
- package/lib/JavascriptModulesPlugin.js +185 -0
- package/lib/JsonGenerator.js +57 -0
- package/lib/JsonModulesPlugin.js +30 -0
- package/lib/JsonParser.js +27 -0
- package/lib/LibManifestPlugin.js +90 -0
- package/lib/LibraryTemplatePlugin.js +186 -0
- package/lib/LoaderOptionsPlugin.js +58 -0
- package/lib/LoaderTargetPlugin.js +24 -0
- package/lib/MainTemplate.js +568 -0
- package/lib/MemoryOutputFileSystem.js +5 -0
- package/lib/Module.js +435 -0
- package/lib/ModuleBuildError.js +52 -0
- package/lib/ModuleDependencyError.js +35 -0
- package/lib/ModuleDependencyWarning.js +25 -0
- package/lib/ModuleError.js +36 -0
- package/lib/ModuleFilenameHelpers.js +179 -0
- package/lib/ModuleNotFoundError.js +23 -0
- package/lib/ModuleParseError.js +67 -0
- package/lib/ModuleReason.js +48 -0
- package/lib/ModuleTemplate.js +93 -0
- package/lib/ModuleWarning.js +36 -0
- package/lib/MultiCompiler.js +290 -0
- package/lib/MultiEntryPlugin.js +80 -0
- package/lib/MultiModule.js +87 -0
- package/lib/MultiModuleFactory.js +23 -0
- package/lib/MultiStats.js +92 -0
- package/lib/MultiWatching.js +50 -0
- package/lib/NamedChunksPlugin.js +29 -0
- package/lib/NamedModulesPlugin.js +58 -0
- package/lib/NoEmitOnErrorsPlugin.js +20 -0
- package/lib/NoModeWarning.js +23 -0
- package/lib/NodeStuffPlugin.js +118 -0
- package/lib/NormalModule.js +582 -0
- package/lib/NormalModuleFactory.js +528 -0
- package/lib/NormalModuleReplacementPlugin.js +51 -0
- package/lib/NullFactory.js +12 -0
- package/lib/OptionsApply.js +10 -0
- package/lib/OptionsDefaulter.js +141 -0
- package/lib/Parser.js +2454 -0
- package/lib/ParserHelpers.js +103 -0
- package/lib/PrefetchPlugin.js +37 -0
- package/lib/ProgressPlugin.js +307 -0
- package/lib/ProvidePlugin.js +86 -0
- package/lib/RawModule.js +56 -0
- package/lib/RecordIdsPlugin.js +236 -0
- package/lib/RemovedPluginError.js +11 -0
- package/lib/RequestShortener.js +83 -0
- package/lib/RequireJsStuffPlugin.js +66 -0
- package/lib/ResolverFactory.js +74 -0
- package/lib/RuleSet.js +567 -0
- package/lib/RuntimeTemplate.js +336 -0
- package/lib/SetVarMainTemplatePlugin.js +69 -0
- package/lib/SingleEntryPlugin.js +63 -0
- package/lib/SizeFormatHelpers.js +24 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -0
- package/lib/SourceMapDevToolPlugin.js +418 -0
- package/lib/Stats.js +1685 -0
- package/lib/SystemMainTemplatePlugin.js +137 -0
- package/lib/Template.js +291 -0
- package/lib/TemplatedPathPlugin.js +188 -0
- package/lib/UmdMainTemplatePlugin.js +305 -0
- package/lib/UnsupportedFeatureWarning.js +30 -0
- package/lib/UseStrictPlugin.js +54 -0
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -0
- package/lib/WarnNoModeSetPlugin.js +17 -0
- package/lib/WatchIgnorePlugin.js +106 -0
- package/lib/Watching.js +211 -0
- package/lib/WebpackError.js +31 -0
- package/lib/WebpackOptionsApply.js +546 -0
- package/lib/WebpackOptionsDefaulter.js +391 -0
- package/lib/WebpackOptionsValidationError.js +390 -0
- package/lib/buildChunkGraph.js +712 -0
- package/lib/compareLocations.js +52 -0
- package/lib/debug/ProfilingPlugin.js +442 -0
- package/lib/dependencies/AMDDefineDependency.js +137 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +336 -0
- package/lib/dependencies/AMDPlugin.js +249 -0
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -0
- package/lib/dependencies/AMDRequireContextDependency.js +20 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +47 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +274 -0
- package/lib/dependencies/AMDRequireDependency.js +135 -0
- package/lib/dependencies/AMDRequireItemDependency.js +22 -0
- package/lib/dependencies/CommonJsPlugin.js +158 -0
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -0
- package/lib/dependencies/CommonJsRequireDependency.js +22 -0
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +138 -0
- package/lib/dependencies/ConstDependency.js +33 -0
- package/lib/dependencies/ContextDependency.js +68 -0
- package/lib/dependencies/ContextDependencyHelpers.js +232 -0
- package/lib/dependencies/ContextDependencyTemplateAsId.js +43 -0
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +39 -0
- package/lib/dependencies/ContextElementDependency.js +21 -0
- package/lib/dependencies/CriticalDependencyWarning.js +20 -0
- package/lib/dependencies/DelegatedExportsDependency.js +33 -0
- package/lib/dependencies/DelegatedSourceDependency.js +18 -0
- package/lib/dependencies/DependencyReference.js +64 -0
- package/lib/dependencies/DllEntryDependency.js +20 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +48 -0
- package/lib/dependencies/HarmonyAcceptImportDependency.js +23 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +96 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +154 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +58 -0
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +659 -0
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +54 -0
- package/lib/dependencies/HarmonyImportDependency.js +109 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +222 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +163 -0
- package/lib/dependencies/HarmonyInitDependency.js +60 -0
- package/lib/dependencies/HarmonyModulesPlugin.js +143 -0
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +26 -0
- package/lib/dependencies/ImportContextDependency.js +23 -0
- package/lib/dependencies/ImportDependenciesBlock.js +18 -0
- package/lib/dependencies/ImportDependency.js +34 -0
- package/lib/dependencies/ImportEagerDependency.js +32 -0
- package/lib/dependencies/ImportParserPlugin.js +248 -0
- package/lib/dependencies/ImportPlugin.js +79 -0
- package/lib/dependencies/ImportWeakDependency.js +34 -0
- package/lib/dependencies/JsonExportsDependency.js +26 -0
- package/lib/dependencies/LoaderDependency.js +21 -0
- package/lib/dependencies/LoaderPlugin.js +115 -0
- package/lib/dependencies/LocalModule.js +23 -0
- package/lib/dependencies/LocalModuleDependency.js +28 -0
- package/lib/dependencies/LocalModulesHelpers.js +52 -0
- package/lib/dependencies/ModuleDependency.js +23 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -0
- package/lib/dependencies/MultiEntryDependency.js +25 -0
- package/lib/dependencies/NullDependency.js +20 -0
- package/lib/dependencies/PrefetchDependency.js +18 -0
- package/lib/dependencies/RequireContextDependency.js +22 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -0
- package/lib/dependencies/RequireContextPlugin.js +143 -0
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -0
- package/lib/dependencies/RequireEnsureDependency.js +58 -0
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -0
- package/lib/dependencies/RequireEnsurePlugin.js +74 -0
- package/lib/dependencies/RequireHeaderDependency.js +26 -0
- package/lib/dependencies/RequireIncludeDependency.js +39 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -0
- package/lib/dependencies/RequireIncludePlugin.js +61 -0
- package/lib/dependencies/RequireResolveContextDependency.js +23 -0
- package/lib/dependencies/RequireResolveDependency.js +22 -0
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +86 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -0
- package/lib/dependencies/SingleEntryDependency.js +21 -0
- package/lib/dependencies/SystemPlugin.js +122 -0
- package/lib/dependencies/UnsupportedDependency.js +27 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +31 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +54 -0
- package/lib/dependencies/WebpackMissingModule.js +20 -0
- package/lib/dependencies/getFunctionExpression.js +52 -0
- package/lib/formatLocation.js +75 -0
- package/lib/logging/Logger.js +128 -0
- package/lib/logging/createConsoleLogger.js +210 -0
- package/lib/logging/runtime.js +36 -0
- package/lib/logging/truncateArgs.js +76 -0
- package/lib/node/NodeChunkTemplatePlugin.js +31 -0
- package/lib/node/NodeEnvironmentPlugin.js +44 -0
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +36 -0
- package/lib/node/NodeMainTemplate.runtime.js +32 -0
- package/lib/node/NodeMainTemplateAsync.runtime.js +50 -0
- package/lib/node/NodeMainTemplatePlugin.js +321 -0
- package/lib/node/NodeOutputFileSystem.js +22 -0
- package/lib/node/NodeSourcePlugin.js +141 -0
- package/lib/node/NodeTargetPlugin.js +19 -0
- package/lib/node/NodeTemplatePlugin.js +31 -0
- package/lib/node/NodeWatchFileSystem.js +109 -0
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +61 -0
- package/lib/node/nodeConsole.js +135 -0
- package/lib/optimize/AggressiveMergingPlugin.js +87 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +294 -0
- package/lib/optimize/ChunkModuleIdRangePlugin.js +66 -0
- package/lib/optimize/ConcatenatedModule.js +1477 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +70 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +99 -0
- package/lib/optimize/LimitChunkCountPlugin.js +231 -0
- package/lib/optimize/MergeDuplicateChunksPlugin.js +78 -0
- package/lib/optimize/MinChunkSizePlugin.js +82 -0
- package/lib/optimize/MinMaxSizeWarning.js +29 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +485 -0
- package/lib/optimize/NaturalChunkOrderPlugin.js +41 -0
- package/lib/optimize/OccurrenceChunkOrderPlugin.js +66 -0
- package/lib/optimize/OccurrenceModuleOrderPlugin.js +112 -0
- package/lib/optimize/OccurrenceOrderPlugin.js +135 -0
- package/lib/optimize/RemoveEmptyChunksPlugin.js +42 -0
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -0
- package/lib/optimize/RuntimeChunkPlugin.js +41 -0
- package/lib/optimize/SideEffectsFlagPlugin.js +352 -0
- package/lib/optimize/SplitChunksPlugin.js +971 -0
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +30 -0
- package/lib/performance/NoAsyncChunksWarning.js +21 -0
- package/lib/performance/SizeLimitsPlugin.js +125 -0
- package/lib/util/LazyBucketSortedSet.js +235 -0
- package/lib/util/Queue.js +46 -0
- package/lib/util/Semaphore.js +53 -0
- package/lib/util/SetHelpers.js +48 -0
- package/lib/util/SortableSet.js +140 -0
- package/lib/util/StackedSetMap.js +142 -0
- package/lib/util/TrackingSet.js +35 -0
- package/lib/util/cachedMerge.js +35 -0
- package/lib/util/cleverMerge.js +77 -0
- package/lib/util/createHash.js +174 -0
- package/lib/util/deterministicGrouping.js +274 -0
- package/lib/util/hash/BatchedHash.js +71 -0
- package/lib/util/hash/md4.js +25 -0
- package/lib/util/hash/wasm-hash.js +174 -0
- package/lib/util/identifier.js +127 -0
- package/lib/util/objectToMap.js +16 -0
- package/lib/validateSchema.js +67 -0
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +17 -0
- package/lib/wasm/WasmFinalizeExportsPlugin.js +69 -0
- package/lib/wasm/WasmMainTemplatePlugin.js +341 -0
- package/lib/wasm/WebAssemblyGenerator.js +458 -0
- package/lib/wasm/WebAssemblyInInitialChunkError.js +88 -0
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +152 -0
- package/lib/wasm/WebAssemblyModulesPlugin.js +128 -0
- package/lib/wasm/WebAssemblyParser.js +175 -0
- package/lib/wasm/WebAssemblyUtils.js +59 -0
- package/lib/web/FetchCompileWasmTemplatePlugin.js +37 -0
- package/lib/web/JsonpChunkTemplatePlugin.js +71 -0
- package/lib/web/JsonpExportMainTemplatePlugin.js +50 -0
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -0
- package/lib/web/JsonpMainTemplate.runtime.js +71 -0
- package/lib/web/JsonpMainTemplatePlugin.js +615 -0
- package/lib/web/JsonpTemplatePlugin.js +23 -0
- package/lib/web/WebEnvironmentPlugin.js +18 -0
- package/lib/webpack.js +206 -0
- package/lib/webpack.web.js +31 -0
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -0
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -0
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +73 -0
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +192 -0
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -0
- package/package.json +211 -0
- package/schemas/WebpackOptions.json +2285 -0
- package/schemas/ajv.absolutePath.js +57 -0
- package/schemas/plugins/BannerPlugin.json +101 -0
- package/schemas/plugins/DllPlugin.json +36 -0
- package/schemas/plugins/DllReferencePlugin.json +205 -0
- package/schemas/plugins/HashedModuleIdsPlugin.json +26 -0
- package/schemas/plugins/IgnorePlugin.json +37 -0
- package/schemas/plugins/LoaderOptionsPlugin.json +27 -0
- package/schemas/plugins/ProgressPlugin.json +52 -0
- package/schemas/plugins/SourceMapDevToolPlugin.json +185 -0
- package/schemas/plugins/WatchIgnorePlugin.json +18 -0
- package/schemas/plugins/debug/ProfilingPlugin.json +13 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +23 -0
- package/schemas/plugins/optimize/LimitChunkCountPlugin.json +16 -0
- package/schemas/plugins/optimize/MinChunkSizePlugin.json +12 -0
- package/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json +11 -0
- package/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json +11 -0
- package/web_modules/node-libs-browser.js +0 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency");
|
|
7
|
+
const HarmonyInitDependency = require("./HarmonyInitDependency");
|
|
8
|
+
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
|
|
9
|
+
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
|
10
|
+
const HarmonyExportHeaderDependency = require("./HarmonyExportHeaderDependency");
|
|
11
|
+
const HarmonyExportExpressionDependency = require("./HarmonyExportExpressionDependency");
|
|
12
|
+
const HarmonyExportSpecifierDependency = require("./HarmonyExportSpecifierDependency");
|
|
13
|
+
const HarmonyExportImportedSpecifierDependency = require("./HarmonyExportImportedSpecifierDependency");
|
|
14
|
+
const HarmonyAcceptDependency = require("./HarmonyAcceptDependency");
|
|
15
|
+
const HarmonyAcceptImportDependency = require("./HarmonyAcceptImportDependency");
|
|
16
|
+
|
|
17
|
+
const NullFactory = require("../NullFactory");
|
|
18
|
+
|
|
19
|
+
const HarmonyDetectionParserPlugin = require("./HarmonyDetectionParserPlugin");
|
|
20
|
+
const HarmonyImportDependencyParserPlugin = require("./HarmonyImportDependencyParserPlugin");
|
|
21
|
+
const HarmonyExportDependencyParserPlugin = require("./HarmonyExportDependencyParserPlugin");
|
|
22
|
+
const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin");
|
|
23
|
+
|
|
24
|
+
class HarmonyModulesPlugin {
|
|
25
|
+
constructor(options) {
|
|
26
|
+
this.options = options;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
apply(compiler) {
|
|
30
|
+
compiler.hooks.compilation.tap(
|
|
31
|
+
"HarmonyModulesPlugin",
|
|
32
|
+
(compilation, { normalModuleFactory }) => {
|
|
33
|
+
compilation.dependencyFactories.set(
|
|
34
|
+
HarmonyCompatibilityDependency,
|
|
35
|
+
new NullFactory()
|
|
36
|
+
);
|
|
37
|
+
compilation.dependencyTemplates.set(
|
|
38
|
+
HarmonyCompatibilityDependency,
|
|
39
|
+
new HarmonyCompatibilityDependency.Template()
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
compilation.dependencyFactories.set(
|
|
43
|
+
HarmonyInitDependency,
|
|
44
|
+
new NullFactory()
|
|
45
|
+
);
|
|
46
|
+
compilation.dependencyTemplates.set(
|
|
47
|
+
HarmonyInitDependency,
|
|
48
|
+
new HarmonyInitDependency.Template()
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
compilation.dependencyFactories.set(
|
|
52
|
+
HarmonyImportSideEffectDependency,
|
|
53
|
+
normalModuleFactory
|
|
54
|
+
);
|
|
55
|
+
compilation.dependencyTemplates.set(
|
|
56
|
+
HarmonyImportSideEffectDependency,
|
|
57
|
+
new HarmonyImportSideEffectDependency.Template()
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
compilation.dependencyFactories.set(
|
|
61
|
+
HarmonyImportSpecifierDependency,
|
|
62
|
+
normalModuleFactory
|
|
63
|
+
);
|
|
64
|
+
compilation.dependencyTemplates.set(
|
|
65
|
+
HarmonyImportSpecifierDependency,
|
|
66
|
+
new HarmonyImportSpecifierDependency.Template()
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
compilation.dependencyFactories.set(
|
|
70
|
+
HarmonyExportHeaderDependency,
|
|
71
|
+
new NullFactory()
|
|
72
|
+
);
|
|
73
|
+
compilation.dependencyTemplates.set(
|
|
74
|
+
HarmonyExportHeaderDependency,
|
|
75
|
+
new HarmonyExportHeaderDependency.Template()
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
compilation.dependencyFactories.set(
|
|
79
|
+
HarmonyExportExpressionDependency,
|
|
80
|
+
new NullFactory()
|
|
81
|
+
);
|
|
82
|
+
compilation.dependencyTemplates.set(
|
|
83
|
+
HarmonyExportExpressionDependency,
|
|
84
|
+
new HarmonyExportExpressionDependency.Template()
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
compilation.dependencyFactories.set(
|
|
88
|
+
HarmonyExportSpecifierDependency,
|
|
89
|
+
new NullFactory()
|
|
90
|
+
);
|
|
91
|
+
compilation.dependencyTemplates.set(
|
|
92
|
+
HarmonyExportSpecifierDependency,
|
|
93
|
+
new HarmonyExportSpecifierDependency.Template()
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
compilation.dependencyFactories.set(
|
|
97
|
+
HarmonyExportImportedSpecifierDependency,
|
|
98
|
+
normalModuleFactory
|
|
99
|
+
);
|
|
100
|
+
compilation.dependencyTemplates.set(
|
|
101
|
+
HarmonyExportImportedSpecifierDependency,
|
|
102
|
+
new HarmonyExportImportedSpecifierDependency.Template()
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
compilation.dependencyFactories.set(
|
|
106
|
+
HarmonyAcceptDependency,
|
|
107
|
+
new NullFactory()
|
|
108
|
+
);
|
|
109
|
+
compilation.dependencyTemplates.set(
|
|
110
|
+
HarmonyAcceptDependency,
|
|
111
|
+
new HarmonyAcceptDependency.Template()
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
compilation.dependencyFactories.set(
|
|
115
|
+
HarmonyAcceptImportDependency,
|
|
116
|
+
normalModuleFactory
|
|
117
|
+
);
|
|
118
|
+
compilation.dependencyTemplates.set(
|
|
119
|
+
HarmonyAcceptImportDependency,
|
|
120
|
+
new HarmonyAcceptImportDependency.Template()
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
const handler = (parser, parserOptions) => {
|
|
124
|
+
if (parserOptions.harmony !== undefined && !parserOptions.harmony)
|
|
125
|
+
return;
|
|
126
|
+
|
|
127
|
+
new HarmonyDetectionParserPlugin().apply(parser);
|
|
128
|
+
new HarmonyImportDependencyParserPlugin(this.options).apply(parser);
|
|
129
|
+
new HarmonyExportDependencyParserPlugin(this.options).apply(parser);
|
|
130
|
+
new HarmonyTopLevelThisParserPlugin().apply(parser);
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
normalModuleFactory.hooks.parser
|
|
134
|
+
.for("javascript/auto")
|
|
135
|
+
.tap("HarmonyModulesPlugin", handler);
|
|
136
|
+
normalModuleFactory.hooks.parser
|
|
137
|
+
.for("javascript/esm")
|
|
138
|
+
.tap("HarmonyModulesPlugin", handler);
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
module.exports = HarmonyModulesPlugin;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Florent Cailhol @ooflorent
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const ConstDependency = require("./ConstDependency");
|
|
8
|
+
|
|
9
|
+
class HarmonyTopLevelThisParserPlugin {
|
|
10
|
+
apply(parser) {
|
|
11
|
+
parser.hooks.expression
|
|
12
|
+
.for("this")
|
|
13
|
+
.tap("HarmonyTopLevelThisParserPlugin", node => {
|
|
14
|
+
if (!parser.scope.topLevelScope) return;
|
|
15
|
+
const module = parser.state.module;
|
|
16
|
+
const isHarmony = !!(module.buildMeta && module.buildMeta.exportsType);
|
|
17
|
+
if (isHarmony) {
|
|
18
|
+
const dep = new ConstDependency("undefined", node.range, false);
|
|
19
|
+
dep.loc = node.loc;
|
|
20
|
+
parser.state.current.addDependency(dep);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = HarmonyTopLevelThisParserPlugin;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
const ContextDependency = require("./ContextDependency");
|
|
7
|
+
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
|
8
|
+
|
|
9
|
+
class ImportContextDependency extends ContextDependency {
|
|
10
|
+
constructor(options, range, valueRange) {
|
|
11
|
+
super(options);
|
|
12
|
+
this.range = range;
|
|
13
|
+
this.valueRange = valueRange;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
get type() {
|
|
17
|
+
return `import() context ${this.options.mode}`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
ImportContextDependency.Template = ContextDependencyTemplateAsRequireCall;
|
|
22
|
+
|
|
23
|
+
module.exports = ImportContextDependency;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
|
7
|
+
const ImportDependency = require("./ImportDependency");
|
|
8
|
+
|
|
9
|
+
module.exports = class ImportDependenciesBlock extends AsyncDependenciesBlock {
|
|
10
|
+
// TODO webpack 5 reorganize arguments
|
|
11
|
+
constructor(request, range, groupOptions, module, loc, originModule) {
|
|
12
|
+
super(groupOptions, module, loc, request);
|
|
13
|
+
this.range = range;
|
|
14
|
+
const dep = new ImportDependency(request, originModule, this);
|
|
15
|
+
dep.loc = loc;
|
|
16
|
+
this.addDependency(dep);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
const ModuleDependency = require("./ModuleDependency");
|
|
7
|
+
|
|
8
|
+
class ImportDependency extends ModuleDependency {
|
|
9
|
+
constructor(request, originModule, block) {
|
|
10
|
+
super(request);
|
|
11
|
+
this.originModule = originModule;
|
|
12
|
+
this.block = block;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
get type() {
|
|
16
|
+
return "import()";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
ImportDependency.Template = class ImportDependencyTemplate {
|
|
21
|
+
apply(dep, source, runtime) {
|
|
22
|
+
const content = runtime.moduleNamespacePromise({
|
|
23
|
+
block: dep.block,
|
|
24
|
+
module: dep.module,
|
|
25
|
+
request: dep.request,
|
|
26
|
+
strict: dep.originModule.buildMeta.strictHarmonyModule,
|
|
27
|
+
message: "import()"
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
source.replace(dep.block.range[0], dep.block.range[1] - 1, content);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
module.exports = ImportDependency;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
const ModuleDependency = require("./ModuleDependency");
|
|
7
|
+
|
|
8
|
+
class ImportEagerDependency extends ModuleDependency {
|
|
9
|
+
constructor(request, originModule, range) {
|
|
10
|
+
super(request);
|
|
11
|
+
this.originModule = originModule;
|
|
12
|
+
this.range = range;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
get type() {
|
|
16
|
+
return "import() eager";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
ImportEagerDependency.Template = class ImportEagerDependencyTemplate {
|
|
21
|
+
apply(dep, source, runtime) {
|
|
22
|
+
const content = runtime.moduleNamespacePromise({
|
|
23
|
+
module: dep.module,
|
|
24
|
+
request: dep.request,
|
|
25
|
+
strict: dep.originModule.buildMeta.strictHarmonyModule,
|
|
26
|
+
message: "import() eager"
|
|
27
|
+
});
|
|
28
|
+
source.replace(dep.range[0], dep.range[1] - 1, content);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
module.exports = ImportEagerDependency;
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const ImportContextDependency = require("./ImportContextDependency");
|
|
8
|
+
const ImportWeakDependency = require("./ImportWeakDependency");
|
|
9
|
+
const ImportDependenciesBlock = require("./ImportDependenciesBlock");
|
|
10
|
+
const ImportEagerDependency = require("./ImportEagerDependency");
|
|
11
|
+
const ContextDependencyHelpers = require("./ContextDependencyHelpers");
|
|
12
|
+
const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
|
13
|
+
const CommentCompilationWarning = require("../CommentCompilationWarning");
|
|
14
|
+
|
|
15
|
+
class ImportParserPlugin {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
apply(parser) {
|
|
21
|
+
parser.hooks.importCall.tap("ImportParserPlugin", expr => {
|
|
22
|
+
if (expr.arguments.length !== 1) {
|
|
23
|
+
throw new Error(
|
|
24
|
+
"Incorrect number of arguments provided to 'import(module: string) -> Promise'."
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const param = parser.evaluateExpression(expr.arguments[0]);
|
|
29
|
+
|
|
30
|
+
let chunkName = null;
|
|
31
|
+
let mode = "lazy";
|
|
32
|
+
let include = null;
|
|
33
|
+
let exclude = null;
|
|
34
|
+
const groupOptions = {};
|
|
35
|
+
|
|
36
|
+
const {
|
|
37
|
+
options: importOptions,
|
|
38
|
+
errors: commentErrors
|
|
39
|
+
} = parser.parseCommentOptions(expr.range);
|
|
40
|
+
|
|
41
|
+
if (commentErrors) {
|
|
42
|
+
for (const e of commentErrors) {
|
|
43
|
+
const { comment } = e;
|
|
44
|
+
parser.state.module.warnings.push(
|
|
45
|
+
new CommentCompilationWarning(
|
|
46
|
+
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
|
47
|
+
parser.state.module,
|
|
48
|
+
comment.loc
|
|
49
|
+
)
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (importOptions) {
|
|
55
|
+
if (importOptions.webpackIgnore !== undefined) {
|
|
56
|
+
if (typeof importOptions.webpackIgnore !== "boolean") {
|
|
57
|
+
parser.state.module.warnings.push(
|
|
58
|
+
new UnsupportedFeatureWarning(
|
|
59
|
+
parser.state.module,
|
|
60
|
+
`\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
|
|
61
|
+
expr.loc
|
|
62
|
+
)
|
|
63
|
+
);
|
|
64
|
+
} else {
|
|
65
|
+
// Do not instrument `import()` if `webpackIgnore` is `true`
|
|
66
|
+
if (importOptions.webpackIgnore) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (importOptions.webpackChunkName !== undefined) {
|
|
72
|
+
if (typeof importOptions.webpackChunkName !== "string") {
|
|
73
|
+
parser.state.module.warnings.push(
|
|
74
|
+
new UnsupportedFeatureWarning(
|
|
75
|
+
parser.state.module,
|
|
76
|
+
`\`webpackChunkName\` expected a string, but received: ${importOptions.webpackChunkName}.`,
|
|
77
|
+
expr.loc
|
|
78
|
+
)
|
|
79
|
+
);
|
|
80
|
+
} else {
|
|
81
|
+
chunkName = importOptions.webpackChunkName;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (importOptions.webpackMode !== undefined) {
|
|
85
|
+
if (typeof importOptions.webpackMode !== "string") {
|
|
86
|
+
parser.state.module.warnings.push(
|
|
87
|
+
new UnsupportedFeatureWarning(
|
|
88
|
+
parser.state.module,
|
|
89
|
+
`\`webpackMode\` expected a string, but received: ${importOptions.webpackMode}.`,
|
|
90
|
+
expr.loc
|
|
91
|
+
)
|
|
92
|
+
);
|
|
93
|
+
} else {
|
|
94
|
+
mode = importOptions.webpackMode;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (importOptions.webpackPrefetch !== undefined) {
|
|
98
|
+
if (importOptions.webpackPrefetch === true) {
|
|
99
|
+
groupOptions.prefetchOrder = 0;
|
|
100
|
+
} else if (typeof importOptions.webpackPrefetch === "number") {
|
|
101
|
+
groupOptions.prefetchOrder = importOptions.webpackPrefetch;
|
|
102
|
+
} else {
|
|
103
|
+
parser.state.module.warnings.push(
|
|
104
|
+
new UnsupportedFeatureWarning(
|
|
105
|
+
parser.state.module,
|
|
106
|
+
`\`webpackPrefetch\` expected true or a number, but received: ${importOptions.webpackPrefetch}.`,
|
|
107
|
+
expr.loc
|
|
108
|
+
)
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (importOptions.webpackPreload !== undefined) {
|
|
113
|
+
if (importOptions.webpackPreload === true) {
|
|
114
|
+
groupOptions.preloadOrder = 0;
|
|
115
|
+
} else if (typeof importOptions.webpackPreload === "number") {
|
|
116
|
+
groupOptions.preloadOrder = importOptions.webpackPreload;
|
|
117
|
+
} else {
|
|
118
|
+
parser.state.module.warnings.push(
|
|
119
|
+
new UnsupportedFeatureWarning(
|
|
120
|
+
parser.state.module,
|
|
121
|
+
`\`webpackPreload\` expected true or a number, but received: ${importOptions.webpackPreload}.`,
|
|
122
|
+
expr.loc
|
|
123
|
+
)
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (importOptions.webpackInclude !== undefined) {
|
|
128
|
+
if (
|
|
129
|
+
!importOptions.webpackInclude ||
|
|
130
|
+
importOptions.webpackInclude.constructor.name !== "RegExp"
|
|
131
|
+
) {
|
|
132
|
+
parser.state.module.warnings.push(
|
|
133
|
+
new UnsupportedFeatureWarning(
|
|
134
|
+
parser.state.module,
|
|
135
|
+
`\`webpackInclude\` expected a regular expression, but received: ${importOptions.webpackInclude}.`,
|
|
136
|
+
expr.loc
|
|
137
|
+
)
|
|
138
|
+
);
|
|
139
|
+
} else {
|
|
140
|
+
include = new RegExp(importOptions.webpackInclude);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (importOptions.webpackExclude !== undefined) {
|
|
144
|
+
if (
|
|
145
|
+
!importOptions.webpackExclude ||
|
|
146
|
+
importOptions.webpackExclude.constructor.name !== "RegExp"
|
|
147
|
+
) {
|
|
148
|
+
parser.state.module.warnings.push(
|
|
149
|
+
new UnsupportedFeatureWarning(
|
|
150
|
+
parser.state.module,
|
|
151
|
+
`\`webpackExclude\` expected a regular expression, but received: ${importOptions.webpackExclude}.`,
|
|
152
|
+
expr.loc
|
|
153
|
+
)
|
|
154
|
+
);
|
|
155
|
+
} else {
|
|
156
|
+
exclude = new RegExp(importOptions.webpackExclude);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (param.isString()) {
|
|
162
|
+
if (mode !== "lazy" && mode !== "eager" && mode !== "weak") {
|
|
163
|
+
parser.state.module.warnings.push(
|
|
164
|
+
new UnsupportedFeatureWarning(
|
|
165
|
+
parser.state.module,
|
|
166
|
+
`\`webpackMode\` expected 'lazy', 'eager' or 'weak', but received: ${mode}.`,
|
|
167
|
+
expr.loc
|
|
168
|
+
)
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (mode === "eager") {
|
|
173
|
+
const dep = new ImportEagerDependency(
|
|
174
|
+
param.string,
|
|
175
|
+
parser.state.module,
|
|
176
|
+
expr.range
|
|
177
|
+
);
|
|
178
|
+
parser.state.current.addDependency(dep);
|
|
179
|
+
} else if (mode === "weak") {
|
|
180
|
+
const dep = new ImportWeakDependency(
|
|
181
|
+
param.string,
|
|
182
|
+
parser.state.module,
|
|
183
|
+
expr.range
|
|
184
|
+
);
|
|
185
|
+
parser.state.current.addDependency(dep);
|
|
186
|
+
} else {
|
|
187
|
+
const depBlock = new ImportDependenciesBlock(
|
|
188
|
+
param.string,
|
|
189
|
+
expr.range,
|
|
190
|
+
Object.assign(groupOptions, {
|
|
191
|
+
name: chunkName
|
|
192
|
+
}),
|
|
193
|
+
parser.state.module,
|
|
194
|
+
expr.loc,
|
|
195
|
+
parser.state.module
|
|
196
|
+
);
|
|
197
|
+
parser.state.current.addBlock(depBlock);
|
|
198
|
+
}
|
|
199
|
+
return true;
|
|
200
|
+
} else {
|
|
201
|
+
if (
|
|
202
|
+
mode !== "lazy" &&
|
|
203
|
+
mode !== "lazy-once" &&
|
|
204
|
+
mode !== "eager" &&
|
|
205
|
+
mode !== "weak"
|
|
206
|
+
) {
|
|
207
|
+
parser.state.module.warnings.push(
|
|
208
|
+
new UnsupportedFeatureWarning(
|
|
209
|
+
parser.state.module,
|
|
210
|
+
`\`webpackMode\` expected 'lazy', 'lazy-once', 'eager' or 'weak', but received: ${mode}.`,
|
|
211
|
+
expr.loc
|
|
212
|
+
)
|
|
213
|
+
);
|
|
214
|
+
mode = "lazy";
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (mode === "weak") {
|
|
218
|
+
mode = "async-weak";
|
|
219
|
+
}
|
|
220
|
+
const dep = ContextDependencyHelpers.create(
|
|
221
|
+
ImportContextDependency,
|
|
222
|
+
expr.range,
|
|
223
|
+
param,
|
|
224
|
+
expr,
|
|
225
|
+
this.options,
|
|
226
|
+
{
|
|
227
|
+
chunkName,
|
|
228
|
+
groupOptions,
|
|
229
|
+
include,
|
|
230
|
+
exclude,
|
|
231
|
+
mode,
|
|
232
|
+
namespaceObject: parser.state.module.buildMeta.strictHarmonyModule
|
|
233
|
+
? "strict"
|
|
234
|
+
: true
|
|
235
|
+
},
|
|
236
|
+
parser
|
|
237
|
+
);
|
|
238
|
+
if (!dep) return;
|
|
239
|
+
dep.loc = expr.loc;
|
|
240
|
+
dep.optional = !!parser.scope.inTry;
|
|
241
|
+
parser.state.current.addDependency(dep);
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
module.exports = ImportParserPlugin;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const ImportDependency = require("./ImportDependency");
|
|
8
|
+
const ImportEagerDependency = require("./ImportEagerDependency");
|
|
9
|
+
const ImportWeakDependency = require("./ImportWeakDependency");
|
|
10
|
+
const ImportContextDependency = require("./ImportContextDependency");
|
|
11
|
+
const ImportParserPlugin = require("./ImportParserPlugin");
|
|
12
|
+
|
|
13
|
+
class ImportPlugin {
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
apply(compiler) {
|
|
19
|
+
const options = this.options;
|
|
20
|
+
compiler.hooks.compilation.tap(
|
|
21
|
+
"ImportPlugin",
|
|
22
|
+
(compilation, { contextModuleFactory, normalModuleFactory }) => {
|
|
23
|
+
compilation.dependencyFactories.set(
|
|
24
|
+
ImportDependency,
|
|
25
|
+
normalModuleFactory
|
|
26
|
+
);
|
|
27
|
+
compilation.dependencyTemplates.set(
|
|
28
|
+
ImportDependency,
|
|
29
|
+
new ImportDependency.Template()
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
compilation.dependencyFactories.set(
|
|
33
|
+
ImportEagerDependency,
|
|
34
|
+
normalModuleFactory
|
|
35
|
+
);
|
|
36
|
+
compilation.dependencyTemplates.set(
|
|
37
|
+
ImportEagerDependency,
|
|
38
|
+
new ImportEagerDependency.Template()
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
compilation.dependencyFactories.set(
|
|
42
|
+
ImportWeakDependency,
|
|
43
|
+
normalModuleFactory
|
|
44
|
+
);
|
|
45
|
+
compilation.dependencyTemplates.set(
|
|
46
|
+
ImportWeakDependency,
|
|
47
|
+
new ImportWeakDependency.Template()
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
compilation.dependencyFactories.set(
|
|
51
|
+
ImportContextDependency,
|
|
52
|
+
contextModuleFactory
|
|
53
|
+
);
|
|
54
|
+
compilation.dependencyTemplates.set(
|
|
55
|
+
ImportContextDependency,
|
|
56
|
+
new ImportContextDependency.Template()
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const handler = (parser, parserOptions) => {
|
|
60
|
+
if (parserOptions.import !== undefined && !parserOptions.import)
|
|
61
|
+
return;
|
|
62
|
+
|
|
63
|
+
new ImportParserPlugin(options).apply(parser);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
normalModuleFactory.hooks.parser
|
|
67
|
+
.for("javascript/auto")
|
|
68
|
+
.tap("ImportPlugin", handler);
|
|
69
|
+
normalModuleFactory.hooks.parser
|
|
70
|
+
.for("javascript/dynamic")
|
|
71
|
+
.tap("ImportPlugin", handler);
|
|
72
|
+
normalModuleFactory.hooks.parser
|
|
73
|
+
.for("javascript/esm")
|
|
74
|
+
.tap("ImportPlugin", handler);
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
module.exports = ImportPlugin;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
const ModuleDependency = require("./ModuleDependency");
|
|
7
|
+
|
|
8
|
+
class ImportWeakDependency extends ModuleDependency {
|
|
9
|
+
constructor(request, originModule, range) {
|
|
10
|
+
super(request);
|
|
11
|
+
this.originModule = originModule;
|
|
12
|
+
this.range = range;
|
|
13
|
+
this.weak = true;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
get type() {
|
|
17
|
+
return "import() weak";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
ImportWeakDependency.Template = class ImportDependencyTemplate {
|
|
22
|
+
apply(dep, source, runtime) {
|
|
23
|
+
const content = runtime.moduleNamespacePromise({
|
|
24
|
+
module: dep.module,
|
|
25
|
+
request: dep.request,
|
|
26
|
+
strict: dep.originModule.buildMeta.strictHarmonyModule,
|
|
27
|
+
message: "import() weak",
|
|
28
|
+
weak: true
|
|
29
|
+
});
|
|
30
|
+
source.replace(dep.range[0], dep.range[1] - 1, content);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
module.exports = ImportWeakDependency;
|
|
@@ -0,0 +1,26 @@
|
|
|
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 JsonExportsDependency extends NullDependency {
|
|
9
|
+
constructor(exports) {
|
|
10
|
+
super();
|
|
11
|
+
this.exports = exports;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
get type() {
|
|
15
|
+
return "json exports";
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
getExports() {
|
|
19
|
+
return {
|
|
20
|
+
exports: this.exports,
|
|
21
|
+
dependencies: undefined
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = JsonExportsDependency;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
const ModuleDependency = require("./ModuleDependency");
|
|
7
|
+
|
|
8
|
+
class LoaderDependency extends ModuleDependency {
|
|
9
|
+
/**
|
|
10
|
+
* @param {string} request request string
|
|
11
|
+
*/
|
|
12
|
+
constructor(request) {
|
|
13
|
+
super(request);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
get type() {
|
|
17
|
+
return "loader";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
module.exports = LoaderDependency;
|