generated from dellevin/template
1
This commit is contained in:
70
node_modules/webpack/lib/javascript/ChunkFormatHelpers.js
generated
vendored
Normal file
70
node_modules/webpack/lib/javascript/ChunkFormatHelpers.js
generated
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Natsu @xiaoxiaojx
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
const { updateHashForEntryStartup } = require("./StartupHelpers");
|
||||
|
||||
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
||||
/** @typedef {import("../Module")} Module */
|
||||
/** @typedef {import("../Chunk")} Chunk */
|
||||
/** @typedef {import("../Entrypoint")} Entrypoint */
|
||||
/** @typedef {import("../util/Hash")} Hash */
|
||||
/** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
|
||||
|
||||
/**
|
||||
* Gets information about a chunk including its entries and runtime chunk
|
||||
* @param {Chunk} chunk The chunk to get information for
|
||||
* @param {ChunkGraph} chunkGraph The chunk graph containing the chunk
|
||||
* @returns {{ entries: [Module, Entrypoint | undefined][], runtimeChunk: Chunk | null }} Object containing chunk entries and runtime chunk
|
||||
*/
|
||||
function getChunkInfo(chunk, chunkGraph) {
|
||||
const entries = [
|
||||
...chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk)
|
||||
];
|
||||
const runtimeChunk =
|
||||
entries.length > 0
|
||||
? /** @type {Entrypoint[][]} */
|
||||
(entries)[0][1].getRuntimeChunk()
|
||||
: null;
|
||||
|
||||
return {
|
||||
entries,
|
||||
runtimeChunk
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a chunk hash handler
|
||||
* @param {string} name The name of the chunk
|
||||
* @returns {(chunk: Chunk, hash: Hash, { chunkGraph }: ChunkHashContext) => void} The chunk hash handler
|
||||
*/
|
||||
function createChunkHashHandler(name) {
|
||||
/**
|
||||
* @param {Chunk} chunk The chunk to get information for
|
||||
* @param {Hash} hash The hash to update
|
||||
* @param {ChunkHashContext} chunkHashContext The chunk hash context
|
||||
* @returns {void}
|
||||
*/
|
||||
return (chunk, hash, { chunkGraph }) => {
|
||||
if (chunk.hasRuntime()) return;
|
||||
const { entries, runtimeChunk } = getChunkInfo(chunk, chunkGraph);
|
||||
hash.update(name);
|
||||
hash.update("1");
|
||||
if (runtimeChunk && runtimeChunk.hash) {
|
||||
// https://github.com/webpack/webpack/issues/19439
|
||||
// Any change to runtimeChunk should trigger a hash update,
|
||||
// we shouldn't depend on or inspect its internal implementation.
|
||||
// import __webpack_require__ from "./runtime-main.e9400aee33633a3973bd.js";
|
||||
hash.update(runtimeChunk.hash);
|
||||
}
|
||||
updateHashForEntryStartup(hash, chunkGraph, entries, chunk);
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
createChunkHashHandler,
|
||||
getChunkInfo
|
||||
};
|
||||
Reference in New Issue
Block a user