rspack_plugin_runtime 0.7.11

rspack runtime plugin
Documentation
var hasSymbol = typeof Symbol === "function";
var rspackQueues = hasSymbol ? Symbol("rspack queues") : "__rspack_queues";
var rspackExports = <%- ASYNC_MODULE_EXPORT_SYMBOL %> = hasSymbol ? Symbol("rspack exports") : "<%- EXPORTS %>";
var rspackError = hasSymbol ? Symbol("rspack error") : "__rspack_error";
var rspackDone = hasSymbol ? Symbol("rspack done") : "__rspack_done";
var rspackDefer = <%- MAKE_DEFERRED_NAMESPACE_OBJECT_SYMBOL %> = hasSymbol ? Symbol("rspack defer") : "__rspack_defer";
var resolveQueue = <%- basicFunction("queue") %> {
  if (queue && queue.d < 1) {
    queue.d = 1;
    queue.forEach(<%- expressionFunction("fn.r--", "fn") %>);
		queue.forEach(<%- expressionFunction("fn.r-- ? fn.r++ : fn()", "fn") %>);
	}
}
var wrapDeps = <%- basicFunction("deps") %> {
	return deps.map(<%- basicFunction("dep") %> {
		if (dep !== null && typeof dep === "object") {
			if(!dep[rspackQueues] && dep[rspackDefer]) {
				var asyncDeps = dep[rspackDefer];
				var hasUnresolvedAsyncSubgraph = asyncDeps.some(<%- basicFunction("id") %> {
					var cache = <%- _module_cache %>[id];
					return !cache || cache[rspackDone] === false;
				});
				if (hasUnresolvedAsyncSubgraph) {
					var d = dep;
					dep = {
						then(callback) {
							Promise.all(asyncDeps.map(<%- REQUIRE %>)).then(<%- returningFunction("callback(d)", "") %>)
						}
					};
				} else return dep;
			}
			if (dep[rspackQueues]) return dep;
			if (dep.then) {
				var queue = [];
				queue.d = 0;
				dep.then(<%- basicFunction("r") %> {
					obj[rspackExports] = r;
					resolveQueue(queue);
				},<%- basicFunction("e") %> {
					obj[rspackError] = e;
					resolveQueue(queue);
				});
				var obj = {};
				obj[rspackDefer] = false;
				obj[rspackQueues] = <%- expressionFunction("fn(queue)", "fn") %>;
				return obj;
			}
		}
		var ret = {};
		ret[rspackQueues] = <%- emptyFunction() %>;
		ret[rspackExports] = dep;
		return ret;
	});
};
<%- ASYNC_MODULE %> = <%- basicFunction("module, body, hasAwait") %> {
	var queue;
	hasAwait && ((queue = []).d = -1);
	var depQueues = new Set();
	var exports = module.exports;
	var currentDeps;
	var outerResolve;
	var reject;
	var promise = new Promise(<%- basicFunction("resolve, rej") %> {
		reject = rej;
		outerResolve = resolve;
	});
	promise[rspackExports] = exports;
	promise[rspackQueues] = <%- basicFunction("fn") %> { queue && fn(queue), depQueues.forEach(fn), promise["catch"](<%- emptyFunction() %>); };
	module.exports = promise;
	var handle = <%- basicFunction("deps") %> {
		currentDeps = wrapDeps(deps);
		var fn;
		var getResult = <%- basicFunction("") %> {
			return currentDeps.map(<%- basicFunction("d") %> {
				if(d[rspackDefer]) return d;
				if (d[rspackError]) throw d[rspackError];
				return d[rspackExports];
			});
		}
		var promise = new Promise(<%- basicFunction("resolve") %> {
			fn = <%- expressionFunction("resolve(getResult)", "") %>;
			fn.r = 0;
			var fnQueue = <%- expressionFunction("q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn)))", "q") %>;
			currentDeps.map(<%- expressionFunction("dep[rspackDefer] || dep[rspackQueues](fnQueue)", "dep") %>);
		});
		return fn.r ? promise : getResult();
	};
	var done = <%- expressionFunction("(err ? reject(promise[rspackError] = err) : outerResolve(exports)), resolveQueue(queue), promise[rspackDone] = true", "err") %>;
	body(handle, done);
	queue && queue.d < 0 && (queue.d = 0);
};