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);
};