rspack_plugin_runtime 0.7.11

rspack runtime plugin
Documentation
var inProgress = {};

<%- _unique_prefix %>
// loadScript function to load a script via script tag
<%- LOAD_SCRIPT %> = function (url, done, key, chunkId<%- _fetch_priority %>) {
	if (inProgress[url]) {
		inProgress[url].push(done);
		return;
	}
	var script, needAttach;
	if (key !== undefined) {
		var scripts = document.getElementsByTagName("script");
		for (var i = 0; i < scripts.length; i++) {
			var s = scripts[i];
			if (<% if (_unique_prefix != "") { %>s.getAttribute("src") == url || s.getAttribute("data-rspack") == uniqueName + key<% } else { %>s.getAttribute("src") == url<% } %>) {
				script = s;
				break;
			}
		}
	}
	if (!script) {
		needAttach = true;
		<%- _create_script %>
	}
	inProgress[url] = [done];
	var onScriptComplete = function (prev, event) {
		script.onerror = script.onload = null;
		clearTimeout(timeout);
		var doneFns = inProgress[url];
		delete inProgress[url];
		script.parentNode && script.parentNode.removeChild(script);
		doneFns &&
			doneFns.forEach(function (fn) {
				return fn(event);
			});
		if (prev) return prev(event);
	};
	var timeout = setTimeout(
		onScriptComplete.bind(null, undefined, {
			type: 'timeout',
			target: script
		}),
		<%- _chunk_load_timeout %>
	);
	script.onerror = onScriptComplete.bind(null, script.onerror);
	script.onload = onScriptComplete.bind(null, script.onload);
	needAttach && document.head.appendChild(script);
};