simple-squiggle

A restricted subset of Squiggle
Log | Files | Refs | README

index.js (16600B)


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