/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const util = require("util"); const asyncLib = require("neo-async"); const { AsyncParallelHook, AsyncSeriesBailHook, AsyncSeriesHook, AsyncSeriesWaterfallHook, HookMap, SyncBailHook, SyncHook, SyncWaterfallHook } = require("tapable"); const { CachedSource } = require("webpack-sources"); const { MultiItemCache } = require("./CacheFacade"); const Chunk = require("./Chunk"); const ChunkGraph = require("./ChunkGraph"); const ChunkGroup = require("./ChunkGroup"); const ChunkTemplate = require("./ChunkTemplate"); const CodeGenerationResults = require("./CodeGenerationResults"); const Dependency = require("./Dependency"); const DependencyTemplates = require("./DependencyTemplates"); const Entrypoint = require("./Entrypoint"); const ErrorHelpers = require("./ErrorHelpers"); const FileSystemInfo = require("./FileSystemInfo"); const LazyBarrelController = require("./LazyBarrel"); const MainTemplate = require("./MainTemplate"); const Module = require("./Module"); const ModuleGraph = require("./ModuleGraph"); const ModuleProfile = require("./ModuleProfile"); const ModuleTemplate = require("./ModuleTemplate"); const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants"); const RuntimeGlobals = require("./RuntimeGlobals"); const RuntimeTemplate = require("./RuntimeTemplate"); const Stats = require("./Stats"); const buildChunkGraph = require("./buildChunkGraph"); const { makeWebpackError, tryRunOrWebpackError } = require("./errors/HookWebpackError"); const WebpackError = require("./errors/WebpackError"); const { LogType, Logger } = require("./logging/Logger"); const StatsFactory = require("./stats/StatsFactory"); const StatsPrinter = require("./stats/StatsPrinter"); const { equals: arrayEquals } = require("./util/ArrayHelpers"); const AsyncQueue = require("./util/AsyncQueue"); const LazySet = require("./util/LazySet"); const { getOrInsert } = require("./util/MapHelpers"); const WeakTupleMap = require("./util/WeakTupleMap"); const { cachedCleverMerge } = require("./util/cleverMerge"); const { compareErrors, compareIds, compareModulesByIdentifier, compareSelect, concatComparators } = require("./util/comparators"); const createHash = require("./util/createHash"); const { arrayToSetDeprecation, createFakeHook, soonFrozenObjectDeprecation } = require("./util/deprecation"); const memoize = require("./util/memoize"); const processAsyncTree = require("./util/processAsyncTree"); const { getRuntimeKey } = require("./util/runtime"); const { isSourceEqual } = require("./util/source"); const getModuleStoreError = memoize(() => require("./errors/ModuleStoreError")); const getModuleRestoreError = memoize(() => require("./errors/ModuleRestoreError") ); const getModuleNotFoundError = memoize(() => require("./errors/ModuleNotFoundError") ); const getModuleHashingError = memoize(() => require("./errors/ModuleHashingError") ); const getModuleDependencyWarning = memoize(() => require("./errors/ModuleDependencyWarning") ); const getModuleDependencyError = memoize(() => require("./errors/ModuleDependencyError") ); const getCodeGenerationError = memoize(() => require("./errors/CodeGenerationError") ); const getChunkRenderError = memoize(() => require("./errors/ChunkRenderError")); const getBuildCycleError = memoize(() => require("./errors/BuildCycleError")); /** @import { Source } from "webpack-sources" */ /** * @import { * OutputNormalized as OutputOptions, * HashFunction, * HashDigest, * HashDigestLength, * StatsOptions, * Plugins, * ResolveOptions * } from "../declarations/WebpackOptions" */ /** * @import { * WebpackOptionsNormalizedWithDefaults as WebpackOptions, * OutputNormalizedWithDefaults as OutputOptionsWithDefaults * } from "./config/defaults" */ /** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */ /** @import Cache from "./Cache" */ /** @import CacheFacade from "./CacheFacade" */ /** @import { ChunkName, ChunkId } from "./Chunk" */ /** @import { ChunkGroupOptions } from "./ChunkGroup" */ /** * @import Compiler, { * CompilationParams, * MemCache, * WeakReferences, * ModuleMemCachesItem, * Records * } from "./Compiler" */ /** @import DependenciesBlock from "./DependenciesBlock" */ /** @import { DependencyLocation, ReferencedExports } from "./Dependency" */ /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */ /** * @import { * NameForCondition, * BuildInfo, * ValueCacheVersions, * RuntimeRequirements, * SourceTypes, * SourceType, * FactoryMeta, * CodeGenerationResult * } from "./Module" */ /** * @import NormalModule, { * NormalModuleCompilationHooks, * AnyLoaderContext, * ParserOptions, * GeneratorOptions * } from "./NormalModule" */ /** * @import ModuleFactory, { * ModuleFactoryCreateDataContextInfo, * ModuleFactoryResult * } from "./ModuleFactory" */ /** @import { ModuleId } from "./ChunkGraph" */ /** @import ModuleGraphConnection from "./ModuleGraphConnection" */ /** @import RequestShortener from "./RequestShortener" */ /** @import RuntimeModule from "./RuntimeModule" */ /** @import { RenderManifestEntry, RenderManifestOptions } from "./Template" */ /** * One language's source embedded in another's output. * @typedef {object} EmbeddedSourceInfo * @property {SourceType} type the embedded source's type, e.g. `"css"` / `"html"` * @property {SourceType} hostType the type of the source it is embedded in, e.g. `"javascript"` * @property {Module} module the module being generated * @property {string=} as which of that language's productions this is, where more than one can be embedded — a `style=""` holds `"block-contents"`, an inline `