10
0

index.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Tobias Koppers @sokra
  4. */
  5. "use strict";
  6. const util = require("util");
  7. const memoize = require("./util/memoize");
  8. /** @typedef {import("../declarations/WebpackOptions").Entry} Entry */
  9. /** @typedef {import("../declarations/WebpackOptions").EntryNormalized} EntryNormalized */
  10. /** @typedef {import("../declarations/WebpackOptions").EntryObject} EntryObject */
  11. /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionData} ExternalItemFunctionData */
  12. /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectKnown} ExternalItemObjectKnown */
  13. /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectUnknown} ExternalItemObjectUnknown */
  14. /** @typedef {import("../declarations/WebpackOptions").ExternalItemValue} ExternalItemValue */
  15. /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
  16. /** @typedef {import("../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
  17. /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
  18. /** @typedef {import("../declarations/WebpackOptions").MemoryCacheOptions} MemoryCacheOptions */
  19. /** @typedef {import("../declarations/WebpackOptions").ModuleOptions} ModuleOptions */
  20. /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
  21. /** @typedef {import("../declarations/WebpackOptions").RuleSetCondition} RuleSetCondition */
  22. /** @typedef {import("../declarations/WebpackOptions").RuleSetConditionAbsolute} RuleSetConditionAbsolute */
  23. /** @typedef {import("../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
  24. /** @typedef {import("../declarations/WebpackOptions").RuleSetUse} RuleSetUse */
  25. /** @typedef {import("../declarations/WebpackOptions").RuleSetUseItem} RuleSetUseItem */
  26. /** @typedef {import("../declarations/WebpackOptions").StatsOptions} StatsOptions */
  27. /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} Configuration */
  28. /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
  29. /** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
  30. /** @typedef {import("../declarations/WebpackOptions").WebpackPluginInstance} WebpackPluginInstance */
  31. /** @typedef {import("./ChunkGroup")} ChunkGroup */
  32. /** @typedef {import("./Compilation").Asset} Asset */
  33. /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
  34. /** @typedef {import("./Compilation").EntryOptions} EntryOptions */
  35. /** @typedef {import("./Compilation").PathData} PathData */
  36. /** @typedef {import("./Compiler").AssetEmittedInfo} AssetEmittedInfo */
  37. /** @typedef {import("./MultiCompiler").MultiCompilerOptions} MultiCompilerOptions */
  38. /** @typedef {import("./MultiStats")} MultiStats */
  39. /** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
  40. /** @typedef {import("./Parser").ParserState} ParserState */
  41. /** @typedef {import("./ResolverFactory").ResolvePluginInstance} ResolvePluginInstance */
  42. /** @typedef {import("./ResolverFactory").Resolver} Resolver */
  43. /** @typedef {import("./Watching")} Watching */
  44. /** @typedef {import("./cli").Argument} Argument */
  45. /** @typedef {import("./cli").Problem} Problem */
  46. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsAsset} StatsAsset */
  47. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsChunk} StatsChunk */
  48. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsChunkGroup} StatsChunkGroup */
  49. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsChunkOrigin} StatsChunkOrigin */
  50. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsCompilation} StatsCompilation */
  51. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsError} StatsError */
  52. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsLogging} StatsLogging */
  53. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsLoggingEntry} StatsLoggingEntry */
  54. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModule} StatsModule */
  55. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleIssuer} StatsModuleIssuer */
  56. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleReason} StatsModuleReason */
  57. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleTraceDependency} StatsModuleTraceDependency */
  58. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleTraceItem} StatsModuleTraceItem */
  59. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
  60. /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
  61. /** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
  62. /**
  63. * @template {Function} T
  64. * @param {function(): T} factory factory function
  65. * @returns {T} function
  66. */
  67. const lazyFunction = factory => {
  68. const fac = memoize(factory);
  69. const f = /** @type {any} */ (
  70. /**
  71. * @param {...any} args args
  72. * @returns {T} result
  73. */
  74. (...args) => fac()(...args)
  75. );
  76. return /** @type {T} */ (f);
  77. };
  78. /**
  79. * @template A
  80. * @template B
  81. * @param {A} obj input a
  82. * @param {B} exports input b
  83. * @returns {A & B} merged
  84. */
  85. const mergeExports = (obj, exports) => {
  86. const descriptors = Object.getOwnPropertyDescriptors(exports);
  87. for (const name of Object.keys(descriptors)) {
  88. const descriptor = descriptors[name];
  89. if (descriptor.get) {
  90. const fn = descriptor.get;
  91. Object.defineProperty(obj, name, {
  92. configurable: false,
  93. enumerable: true,
  94. get: memoize(fn)
  95. });
  96. } else if (typeof descriptor.value === "object") {
  97. Object.defineProperty(obj, name, {
  98. configurable: false,
  99. enumerable: true,
  100. writable: false,
  101. value: mergeExports({}, descriptor.value)
  102. });
  103. } else {
  104. throw new Error(
  105. "Exposed values must be either a getter or an nested object"
  106. );
  107. }
  108. }
  109. return /** @type {A & B} */ (Object.freeze(obj));
  110. };
  111. const fn = lazyFunction(() => require("./webpack"));
  112. module.exports = mergeExports(fn, {
  113. get webpack() {
  114. return require("./webpack");
  115. },
  116. /**
  117. * @returns {function(Configuration | Configuration[]): void} validate fn
  118. */
  119. get validate() {
  120. const webpackOptionsSchemaCheck = require("../schemas/WebpackOptions.check.js");
  121. const getRealValidate = memoize(
  122. /**
  123. * @returns {function(Configuration | Configuration[]): void} validate fn
  124. */
  125. () => {
  126. const validateSchema = require("./validateSchema");
  127. const webpackOptionsSchema = require("../schemas/WebpackOptions.json");
  128. return options => validateSchema(webpackOptionsSchema, options);
  129. }
  130. );
  131. return options => {
  132. if (!webpackOptionsSchemaCheck(/** @type {TODO} */ (options)))
  133. getRealValidate()(options);
  134. };
  135. },
  136. get validateSchema() {
  137. const validateSchema = require("./validateSchema");
  138. return validateSchema;
  139. },
  140. get version() {
  141. return /** @type {string} */ (require("../package.json").version);
  142. },
  143. get cli() {
  144. return require("./cli");
  145. },
  146. get AutomaticPrefetchPlugin() {
  147. return require("./AutomaticPrefetchPlugin");
  148. },
  149. get AsyncDependenciesBlock() {
  150. return require("./AsyncDependenciesBlock");
  151. },
  152. get BannerPlugin() {
  153. return require("./BannerPlugin");
  154. },
  155. get Cache() {
  156. return require("./Cache");
  157. },
  158. get Chunk() {
  159. return require("./Chunk");
  160. },
  161. get ChunkGraph() {
  162. return require("./ChunkGraph");
  163. },
  164. get CleanPlugin() {
  165. return require("./CleanPlugin");
  166. },
  167. get Compilation() {
  168. return require("./Compilation");
  169. },
  170. get Compiler() {
  171. return require("./Compiler");
  172. },
  173. get ConcatenationScope() {
  174. return require("./ConcatenationScope");
  175. },
  176. get ContextExclusionPlugin() {
  177. return require("./ContextExclusionPlugin");
  178. },
  179. get ContextReplacementPlugin() {
  180. return require("./ContextReplacementPlugin");
  181. },
  182. get DefinePlugin() {
  183. return require("./DefinePlugin");
  184. },
  185. get DelegatedPlugin() {
  186. return require("./DelegatedPlugin");
  187. },
  188. get Dependency() {
  189. return require("./Dependency");
  190. },
  191. get DllPlugin() {
  192. return require("./DllPlugin");
  193. },
  194. get DllReferencePlugin() {
  195. return require("./DllReferencePlugin");
  196. },
  197. get DynamicEntryPlugin() {
  198. return require("./DynamicEntryPlugin");
  199. },
  200. get EntryOptionPlugin() {
  201. return require("./EntryOptionPlugin");
  202. },
  203. get EntryPlugin() {
  204. return require("./EntryPlugin");
  205. },
  206. get EnvironmentPlugin() {
  207. return require("./EnvironmentPlugin");
  208. },
  209. get EvalDevToolModulePlugin() {
  210. return require("./EvalDevToolModulePlugin");
  211. },
  212. get EvalSourceMapDevToolPlugin() {
  213. return require("./EvalSourceMapDevToolPlugin");
  214. },
  215. get ExternalModule() {
  216. return require("./ExternalModule");
  217. },
  218. get ExternalsPlugin() {
  219. return require("./ExternalsPlugin");
  220. },
  221. get Generator() {
  222. return require("./Generator");
  223. },
  224. get HotUpdateChunk() {
  225. return require("./HotUpdateChunk");
  226. },
  227. get HotModuleReplacementPlugin() {
  228. return require("./HotModuleReplacementPlugin");
  229. },
  230. get InitFragment() {
  231. return require("./InitFragment");
  232. },
  233. get IgnorePlugin() {
  234. return require("./IgnorePlugin");
  235. },
  236. get JavascriptModulesPlugin() {
  237. return util.deprecate(
  238. () => require("./javascript/JavascriptModulesPlugin"),
  239. "webpack.JavascriptModulesPlugin has moved to webpack.javascript.JavascriptModulesPlugin",
  240. "DEP_WEBPACK_JAVASCRIPT_MODULES_PLUGIN"
  241. )();
  242. },
  243. get LibManifestPlugin() {
  244. return require("./LibManifestPlugin");
  245. },
  246. get LibraryTemplatePlugin() {
  247. return util.deprecate(
  248. () => require("./LibraryTemplatePlugin"),
  249. "webpack.LibraryTemplatePlugin is deprecated and has been replaced by compilation.outputOptions.library or compilation.addEntry + passing a library option",
  250. "DEP_WEBPACK_LIBRARY_TEMPLATE_PLUGIN"
  251. )();
  252. },
  253. get LoaderOptionsPlugin() {
  254. return require("./LoaderOptionsPlugin");
  255. },
  256. get LoaderTargetPlugin() {
  257. return require("./LoaderTargetPlugin");
  258. },
  259. get Module() {
  260. return require("./Module");
  261. },
  262. get ModuleFilenameHelpers() {
  263. return require("./ModuleFilenameHelpers");
  264. },
  265. get ModuleGraph() {
  266. return require("./ModuleGraph");
  267. },
  268. get ModuleGraphConnection() {
  269. return require("./ModuleGraphConnection");
  270. },
  271. get NoEmitOnErrorsPlugin() {
  272. return require("./NoEmitOnErrorsPlugin");
  273. },
  274. get NormalModule() {
  275. return require("./NormalModule");
  276. },
  277. get NormalModuleReplacementPlugin() {
  278. return require("./NormalModuleReplacementPlugin");
  279. },
  280. get MultiCompiler() {
  281. return require("./MultiCompiler");
  282. },
  283. get OptimizationStages() {
  284. return require("./OptimizationStages");
  285. },
  286. get Parser() {
  287. return require("./Parser");
  288. },
  289. get PlatformPlugin() {
  290. return require("./PlatformPlugin");
  291. },
  292. get PrefetchPlugin() {
  293. return require("./PrefetchPlugin");
  294. },
  295. get ProgressPlugin() {
  296. return require("./ProgressPlugin");
  297. },
  298. get ProvidePlugin() {
  299. return require("./ProvidePlugin");
  300. },
  301. get RuntimeGlobals() {
  302. return require("./RuntimeGlobals");
  303. },
  304. get RuntimeModule() {
  305. return require("./RuntimeModule");
  306. },
  307. get SingleEntryPlugin() {
  308. return util.deprecate(
  309. () => require("./EntryPlugin"),
  310. "SingleEntryPlugin was renamed to EntryPlugin",
  311. "DEP_WEBPACK_SINGLE_ENTRY_PLUGIN"
  312. )();
  313. },
  314. get SourceMapDevToolPlugin() {
  315. return require("./SourceMapDevToolPlugin");
  316. },
  317. get Stats() {
  318. return require("./Stats");
  319. },
  320. get Template() {
  321. return require("./Template");
  322. },
  323. get UsageState() {
  324. return require("./ExportsInfo").UsageState;
  325. },
  326. get WatchIgnorePlugin() {
  327. return require("./WatchIgnorePlugin");
  328. },
  329. get WebpackError() {
  330. return require("./WebpackError");
  331. },
  332. get WebpackOptionsApply() {
  333. return require("./WebpackOptionsApply");
  334. },
  335. get WebpackOptionsDefaulter() {
  336. return util.deprecate(
  337. () => require("./WebpackOptionsDefaulter"),
  338. "webpack.WebpackOptionsDefaulter is deprecated and has been replaced by webpack.config.getNormalizedWebpackOptions and webpack.config.applyWebpackOptionsDefaults",
  339. "DEP_WEBPACK_OPTIONS_DEFAULTER"
  340. )();
  341. },
  342. // TODO webpack 6 deprecate
  343. get WebpackOptionsValidationError() {
  344. return require("schema-utils").ValidationError;
  345. },
  346. get ValidationError() {
  347. return require("schema-utils").ValidationError;
  348. },
  349. cache: {
  350. get MemoryCachePlugin() {
  351. return require("./cache/MemoryCachePlugin");
  352. }
  353. },
  354. config: {
  355. get getNormalizedWebpackOptions() {
  356. return require("./config/normalization").getNormalizedWebpackOptions;
  357. },
  358. get applyWebpackOptionsDefaults() {
  359. return require("./config/defaults").applyWebpackOptionsDefaults;
  360. }
  361. },
  362. dependencies: {
  363. get ModuleDependency() {
  364. return require("./dependencies/ModuleDependency");
  365. },
  366. get HarmonyImportDependency() {
  367. return require("./dependencies/HarmonyImportDependency");
  368. },
  369. get ConstDependency() {
  370. return require("./dependencies/ConstDependency");
  371. },
  372. get NullDependency() {
  373. return require("./dependencies/NullDependency");
  374. }
  375. },
  376. ids: {
  377. get ChunkModuleIdRangePlugin() {
  378. return require("./ids/ChunkModuleIdRangePlugin");
  379. },
  380. get NaturalModuleIdsPlugin() {
  381. return require("./ids/NaturalModuleIdsPlugin");
  382. },
  383. get OccurrenceModuleIdsPlugin() {
  384. return require("./ids/OccurrenceModuleIdsPlugin");
  385. },
  386. get NamedModuleIdsPlugin() {
  387. return require("./ids/NamedModuleIdsPlugin");
  388. },
  389. get DeterministicChunkIdsPlugin() {
  390. return require("./ids/DeterministicChunkIdsPlugin");
  391. },
  392. get DeterministicModuleIdsPlugin() {
  393. return require("./ids/DeterministicModuleIdsPlugin");
  394. },
  395. get NamedChunkIdsPlugin() {
  396. return require("./ids/NamedChunkIdsPlugin");
  397. },
  398. get OccurrenceChunkIdsPlugin() {
  399. return require("./ids/OccurrenceChunkIdsPlugin");
  400. },
  401. get HashedModuleIdsPlugin() {
  402. return require("./ids/HashedModuleIdsPlugin");
  403. }
  404. },
  405. javascript: {
  406. get EnableChunkLoadingPlugin() {
  407. return require("./javascript/EnableChunkLoadingPlugin");
  408. },
  409. get JavascriptModulesPlugin() {
  410. return require("./javascript/JavascriptModulesPlugin");
  411. },
  412. get JavascriptParser() {
  413. return require("./javascript/JavascriptParser");
  414. }
  415. },
  416. optimize: {
  417. get AggressiveMergingPlugin() {
  418. return require("./optimize/AggressiveMergingPlugin");
  419. },
  420. get AggressiveSplittingPlugin() {
  421. return util.deprecate(
  422. () => require("./optimize/AggressiveSplittingPlugin"),
  423. "AggressiveSplittingPlugin is deprecated in favor of SplitChunksPlugin",
  424. "DEP_WEBPACK_AGGRESSIVE_SPLITTING_PLUGIN"
  425. )();
  426. },
  427. get InnerGraph() {
  428. return require("./optimize/InnerGraph");
  429. },
  430. get LimitChunkCountPlugin() {
  431. return require("./optimize/LimitChunkCountPlugin");
  432. },
  433. get MergeDuplicateChunksPlugin() {
  434. return require("./optimize/MergeDuplicateChunksPlugin.js");
  435. },
  436. get MinChunkSizePlugin() {
  437. return require("./optimize/MinChunkSizePlugin");
  438. },
  439. get ModuleConcatenationPlugin() {
  440. return require("./optimize/ModuleConcatenationPlugin");
  441. },
  442. get RealContentHashPlugin() {
  443. return require("./optimize/RealContentHashPlugin");
  444. },
  445. get RuntimeChunkPlugin() {
  446. return require("./optimize/RuntimeChunkPlugin");
  447. },
  448. get SideEffectsFlagPlugin() {
  449. return require("./optimize/SideEffectsFlagPlugin");
  450. },
  451. get SplitChunksPlugin() {
  452. return require("./optimize/SplitChunksPlugin");
  453. }
  454. },
  455. runtime: {
  456. get GetChunkFilenameRuntimeModule() {
  457. return require("./runtime/GetChunkFilenameRuntimeModule");
  458. },
  459. get LoadScriptRuntimeModule() {
  460. return require("./runtime/LoadScriptRuntimeModule");
  461. }
  462. },
  463. prefetch: {
  464. get ChunkPrefetchPreloadPlugin() {
  465. return require("./prefetch/ChunkPrefetchPreloadPlugin");
  466. }
  467. },
  468. web: {
  469. get FetchCompileWasmPlugin() {
  470. return require("./web/FetchCompileWasmPlugin");
  471. },
  472. get FetchCompileAsyncWasmPlugin() {
  473. return require("./web/FetchCompileAsyncWasmPlugin");
  474. },
  475. get JsonpChunkLoadingRuntimeModule() {
  476. return require("./web/JsonpChunkLoadingRuntimeModule");
  477. },
  478. get JsonpTemplatePlugin() {
  479. return require("./web/JsonpTemplatePlugin");
  480. },
  481. get CssLoadingRuntimeModule() {
  482. return require("./css/CssLoadingRuntimeModule");
  483. }
  484. },
  485. esm: {
  486. get ModuleChunkLoadingRuntimeModule() {
  487. return require("./esm/ModuleChunkLoadingRuntimeModule");
  488. }
  489. },
  490. webworker: {
  491. get WebWorkerTemplatePlugin() {
  492. return require("./webworker/WebWorkerTemplatePlugin");
  493. }
  494. },
  495. node: {
  496. get NodeEnvironmentPlugin() {
  497. return require("./node/NodeEnvironmentPlugin");
  498. },
  499. get NodeSourcePlugin() {
  500. return require("./node/NodeSourcePlugin");
  501. },
  502. get NodeTargetPlugin() {
  503. return require("./node/NodeTargetPlugin");
  504. },
  505. get NodeTemplatePlugin() {
  506. return require("./node/NodeTemplatePlugin");
  507. },
  508. get ReadFileCompileWasmPlugin() {
  509. return require("./node/ReadFileCompileWasmPlugin");
  510. },
  511. get ReadFileCompileAsyncWasmPlugin() {
  512. return require("./node/ReadFileCompileAsyncWasmPlugin");
  513. }
  514. },
  515. electron: {
  516. get ElectronTargetPlugin() {
  517. return require("./electron/ElectronTargetPlugin");
  518. }
  519. },
  520. wasm: {
  521. get AsyncWebAssemblyModulesPlugin() {
  522. return require("./wasm-async/AsyncWebAssemblyModulesPlugin");
  523. },
  524. get EnableWasmLoadingPlugin() {
  525. return require("./wasm/EnableWasmLoadingPlugin");
  526. }
  527. },
  528. css: {
  529. get CssModulesPlugin() {
  530. return require("./css/CssModulesPlugin");
  531. }
  532. },
  533. library: {
  534. get AbstractLibraryPlugin() {
  535. return require("./library/AbstractLibraryPlugin");
  536. },
  537. get EnableLibraryPlugin() {
  538. return require("./library/EnableLibraryPlugin");
  539. }
  540. },
  541. container: {
  542. get ContainerPlugin() {
  543. return require("./container/ContainerPlugin");
  544. },
  545. get ContainerReferencePlugin() {
  546. return require("./container/ContainerReferencePlugin");
  547. },
  548. get ModuleFederationPlugin() {
  549. return require("./container/ModuleFederationPlugin");
  550. },
  551. get scope() {
  552. return require("./container/options").scope;
  553. }
  554. },
  555. sharing: {
  556. get ConsumeSharedPlugin() {
  557. return require("./sharing/ConsumeSharedPlugin");
  558. },
  559. get ProvideSharedPlugin() {
  560. return require("./sharing/ProvideSharedPlugin");
  561. },
  562. get SharePlugin() {
  563. return require("./sharing/SharePlugin");
  564. },
  565. get scope() {
  566. return require("./container/options").scope;
  567. }
  568. },
  569. debug: {
  570. get ProfilingPlugin() {
  571. return require("./debug/ProfilingPlugin");
  572. }
  573. },
  574. util: {
  575. get createHash() {
  576. return require("./util/createHash");
  577. },
  578. get comparators() {
  579. return require("./util/comparators");
  580. },
  581. get runtime() {
  582. return require("./util/runtime");
  583. },
  584. get serialization() {
  585. return require("./util/serialization");
  586. },
  587. get cleverMerge() {
  588. return require("./util/cleverMerge").cachedCleverMerge;
  589. },
  590. get LazySet() {
  591. return require("./util/LazySet");
  592. },
  593. get compileBooleanMatcher() {
  594. return require("./util/compileBooleanMatcher");
  595. }
  596. },
  597. get sources() {
  598. return require("webpack-sources");
  599. },
  600. experiments: {
  601. schemes: {
  602. get HttpUriPlugin() {
  603. return require("./schemes/HttpUriPlugin");
  604. }
  605. },
  606. ids: {
  607. get SyncModuleIdsPlugin() {
  608. return require("./ids/SyncModuleIdsPlugin");
  609. }
  610. }
  611. }
  612. });