/*
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 `