123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- "use strict";
-
- const DependenciesBlock = require("./DependenciesBlock");
-
- /** @typedef {import("./ChunkGroup")} ChunkGroup */
- /** @typedef {import("./Module")} Module */
- /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
- /** @typedef {import("./util/createHash").Hash} Hash */
- /** @typedef {TODO} GroupOptions */
-
- module.exports = class AsyncDependenciesBlock extends DependenciesBlock {
- /**
- * @param {GroupOptions} groupOptions options for the group
- * @param {Module} module the Module object
- * @param {DependencyLocation=} loc the line of code
- * @param {TODO=} request the request
- */
- constructor(groupOptions, module, loc, request) {
- super();
- if (typeof groupOptions === "string") {
- groupOptions = { name: groupOptions };
- } else if (!groupOptions) {
- groupOptions = { name: undefined };
- }
- this.groupOptions = groupOptions;
- /** @type {ChunkGroup=} */
- this.chunkGroup = undefined;
- this.module = module;
- this.loc = loc;
- this.request = request;
- /** @type {DependenciesBlock} */
- this.parent = undefined;
- }
-
- /**
- * @returns {string} The name of the chunk
- */
- get chunkName() {
- return this.groupOptions.name;
- }
-
- /**
- * @param {string} value The new chunk name
- * @returns {void}
- */
- set chunkName(value) {
- this.groupOptions.name = value;
- }
-
- /**
- * @returns {never} this throws and should never be called
- */
- get chunks() {
- throw new Error("Moved to AsyncDependenciesBlock.chunkGroup");
- }
-
- /**
- * @param {never} value setter value
- * @returns {never} this is going to throw therefore we should throw type
- * assertions by returning never
- */
- set chunks(value) {
- throw new Error("Moved to AsyncDependenciesBlock.chunkGroup");
- }
-
- /**
- * @param {Hash} hash the hash used to track block changes, from "crypto" module
- * @returns {void}
- */
- updateHash(hash) {
- hash.update(JSON.stringify(this.groupOptions));
- hash.update(
- (this.chunkGroup &&
- this.chunkGroup.chunks
- .map(chunk => {
- return chunk.id !== null ? chunk.id : "";
- })
- .join(",")) ||
- ""
- );
- super.updateHash(hash);
- }
-
- /**
- * @returns {void}
- */
- disconnect() {
- this.chunkGroup = undefined;
- super.disconnect();
- }
-
- /**
- * @returns {void}
- */
- unseal() {
- this.chunkGroup = undefined;
- super.unseal();
- }
-
- /**
- * @returns {void}
- */
- sortItems() {
- super.sortItems();
- }
- };
|