/* MIT License http://www.opensource.org/licenses/mit-license.php */ "use strict"; const RuntimeGlobals = require("../RuntimeGlobals"); const RuntimeModule = require("../RuntimeModule"); const Template = require("../Template"); /** @import Compilation from "../Compilation" */ /** * Fires `` / `` for every asset * referenced from this chunk via `new URL(..., import.meta.url)` carrying * `webpackPrefetch` / `webpackPreload`, at chunk startup. Runs before any * user module evaluates, so by the time user code reaches the * corresponding `new URL(...)` (or hands the URL to ``, `fetch`, * `new Worker`, etc.), the browser already has the response in flight. * * The calls themselves are rendered by `ResourceHintPlugin`, while runtime * requirements are still open — see `collectStartupAssetHintLines`. */ class StartupAssetHintRuntimeModule extends RuntimeModule { /** * @param {string[]} lines the `` calls this chunk fires at startup */ constructor(lines) { super("startup asset hints", RuntimeModule.STAGE_TRIGGER); this._lines = lines; } /** * Generates runtime code for this runtime module. * @returns {string | null} runtime code */ generate() { const compilation = /** @type {Compilation} */ (this.compilation); const lines = this._lines; if (lines.length === 0) return null; // `__webpack_nonce__` set inside the entry module is too late — the // entry hasn't run yet. Read the nonce off the `