aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/AsyncDependenciesBlock.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/AsyncDependenciesBlock.js')
-rw-r--r--node_modules/webpack/lib/AsyncDependenciesBlock.js153
1 files changed, 110 insertions, 43 deletions
diff --git a/node_modules/webpack/lib/AsyncDependenciesBlock.js b/node_modules/webpack/lib/AsyncDependenciesBlock.js
index 27d5988b6..a7e029131 100644
--- a/node_modules/webpack/lib/AsyncDependenciesBlock.js
+++ b/node_modules/webpack/lib/AsyncDependenciesBlock.js
@@ -1,43 +1,110 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-"use strict";
-const DependenciesBlock = require("./DependenciesBlock");
-
-module.exports = class AsyncDependenciesBlock extends DependenciesBlock {
- constructor(name, module, loc) {
- super();
- this.chunkName = name;
- this.chunks = null;
- this.module = module;
- this.loc = loc;
- }
- get chunk() {
- throw new Error("`chunk` was been renamed to `chunks` and is now an array");
- }
- set chunk(chunk) {
- throw new Error("`chunk` was been renamed to `chunks` and is now an array");
- }
- updateHash(hash) {
- hash.update(this.chunkName || "");
- hash.update(this.chunks && this.chunks.map((chunk) => {
- return chunk.id !== null ? chunk.id : "";
- }).join(",") || "");
- super.updateHash(hash);
- }
- disconnect() {
- this.chunks = null;
- super.disconnect();
- }
- unseal() {
- this.chunks = null;
- super.unseal();
- }
- sortItems() {
- super.sortItems();
- if(this.chunks) {
- this.chunks.sort((a, b) => a.compareTo(b));
- }
- }
-};
+/*
+ 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();
+ }
+};