constructor({
		compiler,
		fs,
		context,
		cacheLocation,
		version,
		logger,
		snapshot,
		maxAge,
		profile,
		allowCollectingMemory,
		compression,
		readonly
	}) {
		/** @type {import("../serialization/Serializer")<PackContainer, null, {}>} */
		this.fileSerializer = createFileSerializer(
			fs,
			/** @type {string | Hash} */
			(compiler.options.output.hashFunction)
		);
		this.fileSystemInfo = new FileSystemInfo(fs, {
			managedPaths: snapshot.managedPaths,
			immutablePaths: snapshot.immutablePaths,
			logger: logger.getChildLogger("webpack.FileSystemInfo"),
			hashFunction: compiler.options.output.hashFunction
		});
		this.compiler = compiler;
		this.context = context;
		this.cacheLocation = cacheLocation;
		this.version = version;
		this.logger = logger;
		this.maxAge = maxAge;
		this.profile = profile;
		this.readonly = readonly;
		this.allowCollectingMemory = allowCollectingMemory;
		this.compression = compression;
		this._extension =
			compression === "brotli"
				? ".pack.br"
				: compression === "gzip"
					? ".pack.gz"
					: ".pack";
		this.snapshot = snapshot;
		/** @type {BuildDependencies} */
		this.buildDependencies = new Set();
		/** @type {LazySet<string>} */
		this.newBuildDependencies = new LazySet();
		/** @type {Snapshot | undefined} */
		this.resolveBuildDependenciesSnapshot = undefined;
		/** @type {ResolveResults | undefined} */
		this.resolveResults = undefined;
		/** @type {Snapshot | undefined} */
		this.buildSnapshot = undefined;
		/** @type {Promise<Pack> | undefined} */
		this.packPromise = this._openPack();
		this.storePromise = Promise.resolve();
	}
@param {object} options options
@param {Compiler} options.compiler the compiler
@param {IntermediateFileSystem} options.fs the filesystem
@param {string} options.context the context directory
@param {string} options.cacheLocation the location of the cache data
@param {string} options.version version identifier
@param {Logger} options.logger a logger
@param {SnapshotOptions} options.snapshot options regarding snapshotting
@param {number} options.maxAge max age of cache items
@param {boolean | undefined} options.profile track and log detailed timing information for individual cache items
@param {boolean | undefined} options.allowCollectingMemory allow to collect unused memory created during deserialization
@param {false | "gzip" | "brotli" | undefined} options.compression compression used
@param {boolean | undefined} options.readonly disable storing cache into filesystem