piral-base
Version:
The base library for creating a Piral instance.
1,505 lines (1,481 loc) • 57.8 kB
JavaScript
// ../../../node_modules/systemjs/dist/system.js
(function() {
function errMsg(errCode, msg) {
return (msg || "") + " (SystemJS Error#" + errCode + " https://github.com/systemjs/systemjs/blob/main/docs/errors.md#" + errCode + ")";
}
var hasSymbol = typeof Symbol !== "undefined";
var hasSelf = typeof self !== "undefined";
var hasDocument = typeof document !== "undefined";
var envGlobal = hasSelf ? self : global;
var baseUrl;
if (hasDocument) {
var baseEl = document.querySelector("base[href]");
if (baseEl)
baseUrl = baseEl.href;
}
if (!baseUrl && typeof location !== "undefined") {
baseUrl = location.href.split("#")[0].split("?")[0];
var lastSepIndex = baseUrl.lastIndexOf("/");
if (lastSepIndex !== -1)
baseUrl = baseUrl.slice(0, lastSepIndex + 1);
}
var backslashRegEx = /\\/g;
function resolveIfNotPlainOrUrl(relUrl, parentUrl) {
if (relUrl.indexOf("\\") !== -1)
relUrl = relUrl.replace(backslashRegEx, "/");
if (relUrl[0] === "/" && relUrl[1] === "/") {
return parentUrl.slice(0, parentUrl.indexOf(":") + 1) + relUrl;
} else if (relUrl[0] === "." && (relUrl[1] === "/" || relUrl[1] === "." && (relUrl[2] === "/" || relUrl.length === 2 && (relUrl += "/")) || relUrl.length === 1 && (relUrl += "/")) || relUrl[0] === "/") {
var parentProtocol = parentUrl.slice(0, parentUrl.indexOf(":") + 1);
var pathname;
if (parentUrl[parentProtocol.length + 1] === "/") {
if (parentProtocol !== "file:") {
pathname = parentUrl.slice(parentProtocol.length + 2);
pathname = pathname.slice(pathname.indexOf("/") + 1);
} else {
pathname = parentUrl.slice(8);
}
} else {
pathname = parentUrl.slice(parentProtocol.length + (parentUrl[parentProtocol.length] === "/"));
}
if (relUrl[0] === "/")
return parentUrl.slice(0, parentUrl.length - pathname.length - 1) + relUrl;
var segmented = pathname.slice(0, pathname.lastIndexOf("/") + 1) + relUrl;
var output = [];
var segmentIndex = -1;
for (var i = 0; i < segmented.length; i++) {
if (segmentIndex !== -1) {
if (segmented[i] === "/") {
output.push(segmented.slice(segmentIndex, i + 1));
segmentIndex = -1;
}
} else if (segmented[i] === ".") {
if (segmented[i + 1] === "." && (segmented[i + 2] === "/" || i + 2 === segmented.length)) {
output.pop();
i += 2;
} else if (segmented[i + 1] === "/" || i + 1 === segmented.length) {
i += 1;
} else {
segmentIndex = i;
}
} else {
segmentIndex = i;
}
}
if (segmentIndex !== -1)
output.push(segmented.slice(segmentIndex));
return parentUrl.slice(0, parentUrl.length - pathname.length) + output.join("");
}
}
function resolveUrl(relUrl, parentUrl) {
return resolveIfNotPlainOrUrl(relUrl, parentUrl) || (relUrl.indexOf(":") !== -1 ? relUrl : resolveIfNotPlainOrUrl("./" + relUrl, parentUrl));
}
function resolveAndComposePackages(packages, outPackages, baseUrl2, parentMap, parentUrl) {
for (var p in packages) {
var resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl2) || p;
var rhs = packages[p];
if (typeof rhs !== "string")
continue;
var mapped = resolveImportMap(parentMap, resolveIfNotPlainOrUrl(rhs, baseUrl2) || rhs, parentUrl);
if (!mapped) {
targetWarning("W1", p, rhs, "bare specifier did not resolve");
} else
outPackages[resolvedLhs] = mapped;
}
}
function resolveAndComposeImportMap(json, baseUrl2, outMap) {
if (json.imports)
resolveAndComposePackages(json.imports, outMap.imports, baseUrl2, outMap, null);
var u;
for (u in json.scopes || {}) {
var resolvedScope = resolveUrl(u, baseUrl2);
resolveAndComposePackages(json.scopes[u], outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}), baseUrl2, outMap, resolvedScope);
}
for (u in json.depcache || {})
outMap.depcache[resolveUrl(u, baseUrl2)] = json.depcache[u];
for (u in json.integrity || {})
outMap.integrity[resolveUrl(u, baseUrl2)] = json.integrity[u];
}
function getMatch(path, matchObj) {
if (matchObj[path])
return path;
var sepIndex = path.length;
do {
var segment = path.slice(0, sepIndex + 1);
if (segment in matchObj)
return segment;
} while ((sepIndex = path.lastIndexOf("/", sepIndex - 1)) !== -1);
}
function applyPackages(id, packages) {
var pkgName = getMatch(id, packages);
if (pkgName) {
var pkg = packages[pkgName];
if (pkg === null) return;
if (id.length > pkgName.length && pkg[pkg.length - 1] !== "/") {
targetWarning("W2", pkgName, pkg, "should have a trailing '/'");
} else
return pkg + id.slice(pkgName.length);
}
}
function targetWarning(code, match, target, msg) {
console.warn(errMsg(code, "Package target " + msg + ", resolving target '" + target + "' for " + match));
}
function resolveImportMap(importMap2, resolvedOrPlain, parentUrl) {
var scopes = importMap2.scopes;
var scopeUrl = parentUrl && getMatch(parentUrl, scopes);
while (scopeUrl) {
var packageResolution = applyPackages(resolvedOrPlain, scopes[scopeUrl]);
if (packageResolution)
return packageResolution;
scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf("/")), scopes);
}
return applyPackages(resolvedOrPlain, importMap2.imports) || resolvedOrPlain.indexOf(":") !== -1 && resolvedOrPlain;
}
var toStringTag$1 = hasSymbol && Symbol.toStringTag;
var REGISTRY = hasSymbol ? /* @__PURE__ */ Symbol() : "@";
function SystemJS() {
this[REGISTRY] = {};
}
var systemJSPrototype = SystemJS.prototype;
systemJSPrototype.import = function(id, parentUrl, meta) {
var loader8 = this;
parentUrl && typeof parentUrl === "object" && (meta = parentUrl, parentUrl = void 0);
return Promise.resolve(loader8.prepareImport()).then(function() {
return loader8.resolve(id, parentUrl, meta);
}).then(function(id2) {
var load = getOrCreateLoad(loader8, id2, void 0, meta);
return load.C || topLevelLoad(loader8, load);
});
};
systemJSPrototype.createContext = function(parentId) {
var loader8 = this;
return {
url: parentId,
resolve: function(id, parentUrl) {
return Promise.resolve(loader8.resolve(id, parentUrl || parentId));
}
};
};
systemJSPrototype.onload = function() {
};
function loadToId(load) {
return load.id;
}
function triggerOnload(loader8, load, err, isErrSource) {
loader8.onload(err, load.id, load.d && load.d.map(loadToId), !!isErrSource);
if (err)
throw err;
}
var lastRegister;
systemJSPrototype.register = function(deps, declare, metas) {
lastRegister = [deps, declare, metas];
};
systemJSPrototype.getRegister = function() {
var _lastRegister = lastRegister;
lastRegister = void 0;
return _lastRegister;
};
function getOrCreateLoad(loader8, id, firstParentUrl, meta) {
var load = loader8[REGISTRY][id];
if (load)
return load;
var importerSetters = [];
var ns = /* @__PURE__ */ Object.create(null);
if (toStringTag$1)
Object.defineProperty(ns, toStringTag$1, { value: "Module" });
var instantiatePromise = Promise.resolve().then(function() {
return loader8.instantiate(id, firstParentUrl, meta);
}).then(function(registration) {
if (!registration)
throw Error(errMsg(2, "Module " + id + " did not instantiate"));
function _export(name, value) {
load.h = true;
var changed = false;
if (typeof name === "string") {
if (!(name in ns) || ns[name] !== value) {
ns[name] = value;
changed = true;
}
} else {
for (var p in name) {
var value = name[p];
if (!(p in ns) || ns[p] !== value) {
ns[p] = value;
changed = true;
}
}
if (name && name.__esModule) {
ns.__esModule = name.__esModule;
}
}
if (changed)
for (var i = 0; i < importerSetters.length; i++) {
var setter = importerSetters[i];
if (setter) setter(ns);
}
return value;
}
var declared = registration[1](_export, registration[1].length === 2 ? {
import: function(importId, meta2) {
return loader8.import(importId, id, meta2);
},
meta: loader8.createContext(id)
} : void 0);
load.e = declared.execute || function() {
};
return [registration[0], declared.setters || [], registration[2] || []];
}, function(err) {
load.e = null;
load.er = err;
triggerOnload(loader8, load, err, true);
throw err;
});
var linkPromise = instantiatePromise.then(function(instantiation) {
return Promise.all(instantiation[0].map(function(dep, i) {
var setter = instantiation[1][i];
var meta2 = instantiation[2][i];
return Promise.resolve(loader8.resolve(dep, id)).then(function(depId) {
var depLoad = getOrCreateLoad(loader8, depId, id, meta2);
return Promise.resolve(depLoad.I).then(function() {
if (setter) {
depLoad.i.push(setter);
if (depLoad.h || !depLoad.I)
setter(depLoad.n);
}
return depLoad;
});
});
})).then(function(depLoads) {
load.d = depLoads;
});
});
return load = loader8[REGISTRY][id] = {
id,
// importerSetters, the setters functions registered to this dependency
// we retain this to add more later
i: importerSetters,
// module namespace object
n: ns,
// extra module information for import assertion
// shape like: { assert: { type: 'xyz' } }
m: meta,
// instantiate
I: instantiatePromise,
// link
L: linkPromise,
// whether it has hoisted exports
h: false,
// On instantiate completion we have populated:
// dependency load records
d: void 0,
// execution function
e: void 0,
// On execution we have populated:
// the execution error if any
er: void 0,
// in the case of TLA, the execution promise
E: void 0,
// On execution, L, I, E cleared
// Promise for top-level completion
C: void 0,
// parent instantiator / executor
p: void 0
};
}
function instantiateAll(loader8, load, parent, loaded) {
if (!loaded[load.id]) {
loaded[load.id] = true;
return Promise.resolve(load.L).then(function() {
if (!load.p || load.p.e === null)
load.p = parent;
return Promise.all(load.d.map(function(dep) {
return instantiateAll(loader8, dep, parent, loaded);
}));
}).catch(function(err) {
if (load.er)
throw err;
load.e = null;
triggerOnload(loader8, load, err, false);
throw err;
});
}
}
function topLevelLoad(loader8, load) {
return load.C = instantiateAll(loader8, load, load, {}).then(function() {
return postOrderExec(loader8, load, {});
}).then(function() {
return load.n;
});
}
var nullContext = Object.freeze(/* @__PURE__ */ Object.create(null));
function postOrderExec(loader8, load, seen) {
if (seen[load.id])
return;
seen[load.id] = true;
if (!load.e) {
if (load.er)
throw load.er;
if (load.E)
return load.E;
return;
}
var exec = load.e;
load.e = null;
var depLoadPromises;
load.d.forEach(function(depLoad) {
try {
var depLoadPromise = postOrderExec(loader8, depLoad, seen);
if (depLoadPromise)
(depLoadPromises = depLoadPromises || []).push(depLoadPromise);
} catch (err) {
load.er = err;
triggerOnload(loader8, load, err, false);
throw err;
}
});
if (depLoadPromises)
return Promise.all(depLoadPromises).then(doExec);
return doExec();
function doExec() {
try {
var execPromise = exec.call(nullContext);
if (execPromise) {
execPromise = execPromise.then(function() {
load.C = load.n;
load.E = null;
if (true) triggerOnload(loader8, load, null, true);
}, function(err) {
load.er = err;
load.E = null;
if (true) triggerOnload(loader8, load, err, true);
throw err;
});
return load.E = execPromise;
}
load.C = load.n;
load.L = load.I = void 0;
} catch (err) {
load.er = err;
throw err;
} finally {
triggerOnload(loader8, load, load.er, true);
}
}
}
envGlobal.System = new SystemJS();
var importMapPromise = Promise.resolve();
var importMap = { imports: {}, scopes: {}, depcache: {}, integrity: {} };
var processFirst = hasDocument;
systemJSPrototype.prepareImport = function(doProcessScripts) {
if (processFirst || doProcessScripts) {
processScripts();
processFirst = false;
}
return importMapPromise;
};
systemJSPrototype.getImportMap = function() {
return JSON.parse(JSON.stringify(importMap));
};
if (hasDocument) {
processScripts();
window.addEventListener("DOMContentLoaded", processScripts);
}
systemJSPrototype.addImportMap = function(newMap, mapBase) {
resolveAndComposeImportMap(newMap, mapBase || baseUrl, importMap);
};
function processScripts() {
[].forEach.call(document.querySelectorAll("script"), function(script) {
if (script.sp)
return;
if (script.type === "systemjs-module") {
script.sp = true;
if (!script.src)
return;
System.import(script.src.slice(0, 7) === "import:" ? script.src.slice(7) : resolveUrl(script.src, baseUrl)).catch(function(e) {
if (e.message.indexOf("https://github.com/systemjs/systemjs/blob/main/docs/errors.md#3") > -1) {
var event = document.createEvent("Event");
event.initEvent("error", false, false);
script.dispatchEvent(event);
}
return Promise.reject(e);
});
} else if (script.type === "systemjs-importmap") {
script.sp = true;
var fetchPromise = script.src ? (System.fetch || fetch)(script.src, { integrity: script.integrity, priority: script.fetchPriority, passThrough: true }).then(function(res) {
if (!res.ok)
throw Error("Invalid status code: " + res.status);
return res.text();
}).catch(function(err) {
err.message = errMsg("W4", "Error fetching systemjs-import map " + script.src) + "\n" + err.message;
console.warn(err);
if (typeof script.onerror === "function") {
script.onerror();
}
return "{}";
}) : script.innerHTML;
importMapPromise = importMapPromise.then(function() {
return fetchPromise;
}).then(function(text) {
extendImportMap(importMap, text, script.src || baseUrl);
});
}
});
}
function extendImportMap(importMap2, newMapText, newMapUrl) {
var newMap = {};
try {
newMap = JSON.parse(newMapText);
} catch (err) {
console.warn(Error(errMsg("W5", "systemjs-importmap contains invalid JSON") + "\n\n" + newMapText + "\n"));
}
resolveAndComposeImportMap(newMap, newMapUrl, importMap2);
}
if (hasDocument) {
window.addEventListener("error", function(evt) {
lastWindowErrorUrl = evt.filename;
lastWindowError = evt.error;
});
var baseOrigin = location.origin;
}
systemJSPrototype.createScript = function(url) {
var script = document.createElement("script");
script.async = true;
if (url.indexOf(baseOrigin + "/"))
script.crossOrigin = "anonymous";
var integrity = importMap.integrity[url];
if (integrity)
script.integrity = integrity;
script.src = url;
return script;
};
var lastAutoImportDeps, lastAutoImportTimeout;
var autoImportCandidates = {};
var systemRegister2 = systemJSPrototype.register;
systemJSPrototype.register = function(deps, declare) {
if (hasDocument && document.readyState === "loading" && typeof deps !== "string") {
var scripts = document.querySelectorAll("script[src]");
var lastScript = scripts[scripts.length - 1];
if (lastScript) {
lastScript.src;
lastAutoImportDeps = deps;
var loader8 = this;
lastAutoImportTimeout = setTimeout(function() {
autoImportCandidates[lastScript.src] = [deps, declare];
loader8.import(lastScript.src);
});
}
} else {
lastAutoImportDeps = void 0;
}
return systemRegister2.call(this, deps, declare);
};
var lastWindowErrorUrl, lastWindowError;
systemJSPrototype.instantiate = function(url, firstParentUrl) {
var autoImportRegistration = autoImportCandidates[url];
if (autoImportRegistration) {
delete autoImportCandidates[url];
return autoImportRegistration;
}
var loader8 = this;
return Promise.resolve(systemJSPrototype.createScript(url)).then(function(script) {
return new Promise(function(resolve, reject) {
script.addEventListener("error", function() {
reject(Error(errMsg(3, "Error loading " + url + (firstParentUrl ? " from " + firstParentUrl : ""))));
});
script.addEventListener("load", function() {
document.head.removeChild(script);
if (lastWindowErrorUrl === url) {
reject(lastWindowError);
} else {
var register = loader8.getRegister(url);
if (register && register[0] === lastAutoImportDeps)
clearTimeout(lastAutoImportTimeout);
resolve(register);
}
});
document.head.appendChild(script);
});
});
};
systemJSPrototype.shouldFetch = function() {
return false;
};
if (typeof fetch !== "undefined")
systemJSPrototype.fetch = fetch;
var instantiate = systemJSPrototype.instantiate;
var jsContentTypeRegEx = /^(text|application)\/(x-)?javascript(;|$)/;
systemJSPrototype.instantiate = function(url, parent, meta) {
var loader8 = this;
if (!this.shouldFetch(url, parent, meta))
return instantiate.apply(this, arguments);
return this.fetch(url, {
credentials: "same-origin",
integrity: importMap.integrity[url],
meta
}).then(function(res) {
if (!res.ok)
throw Error(errMsg(7, res.status + " " + res.statusText + ", loading " + url + (parent ? " from " + parent : "")));
var contentType = res.headers.get("content-type");
if (!contentType || !jsContentTypeRegEx.test(contentType))
throw Error(errMsg(4, 'Unknown Content-Type "' + contentType + '", loading ' + url + (parent ? " from " + parent : "")));
return res.text().then(function(source) {
if (source.indexOf("//# sourceURL=") < 0)
source += "\n//# sourceURL=" + url;
(0, eval)(source);
return loader8.getRegister(url);
});
});
};
systemJSPrototype.resolve = function(id, parentUrl) {
parentUrl = parentUrl || false || baseUrl;
return resolveImportMap(importMap, resolveIfNotPlainOrUrl(id, parentUrl) || id, parentUrl) || throwUnresolved(id, parentUrl);
};
function throwUnresolved(id, parentUrl) {
throw Error(errMsg(8, "Unable to resolve bare specifier '" + id + (parentUrl ? "' from " + parentUrl : "'")));
}
var systemInstantiate = systemJSPrototype.instantiate;
systemJSPrototype.instantiate = function(url, firstParentUrl, meta) {
var preloads = importMap.depcache[url];
if (preloads) {
for (var i = 0; i < preloads.length; i++)
getOrCreateLoad(this, this.resolve(preloads[i], url), url);
}
return systemInstantiate.call(this, url, firstParentUrl, meta);
};
if (hasSelf && typeof importScripts === "function")
systemJSPrototype.instantiate = function(url) {
var loader8 = this;
return Promise.resolve().then(function() {
importScripts(url);
return loader8.getRegister(url);
});
};
(function(global2) {
var systemJSPrototype2 = global2.System.constructor.prototype;
var firstGlobalProp, secondGlobalProp, lastGlobalProp;
function getGlobalProp(useFirstGlobalProp) {
var cnt = 0;
var foundLastProp, result;
for (var p in global2) {
if (shouldSkipProperty(p))
continue;
if (cnt === 0 && p !== firstGlobalProp || cnt === 1 && p !== secondGlobalProp)
return p;
if (foundLastProp) {
lastGlobalProp = p;
result = useFirstGlobalProp && result || p;
} else {
foundLastProp = p === lastGlobalProp;
}
cnt++;
}
return result;
}
function noteGlobalProps() {
firstGlobalProp = secondGlobalProp = void 0;
for (var p in global2) {
if (shouldSkipProperty(p))
continue;
if (!firstGlobalProp)
firstGlobalProp = p;
else if (!secondGlobalProp)
secondGlobalProp = p;
lastGlobalProp = p;
}
return lastGlobalProp;
}
var impt = systemJSPrototype2.import;
systemJSPrototype2.import = function(id, parentUrl, meta) {
noteGlobalProps();
return impt.call(this, id, parentUrl, meta);
};
var emptyInstantiation = [[], function() {
return {};
}];
var getRegister = systemJSPrototype2.getRegister;
systemJSPrototype2.getRegister = function() {
var lastRegister2 = getRegister.call(this);
if (lastRegister2)
return lastRegister2;
var globalProp = getGlobalProp(this.firstGlobalProp);
if (!globalProp)
return emptyInstantiation;
var globalExport;
try {
globalExport = global2[globalProp];
} catch (e) {
return emptyInstantiation;
}
return [[], function(_export) {
return {
execute: function() {
_export(globalExport);
_export({ default: globalExport, __useDefault: true });
}
};
}];
};
var isIE11 = typeof navigator !== "undefined" && navigator.userAgent.indexOf("Trident") !== -1;
function shouldSkipProperty(p) {
return !global2.hasOwnProperty(p) || !isNaN(p) && p < global2.length || isIE11 && global2[p] && typeof window !== "undefined" && global2[p].parent === window;
}
})(typeof self !== "undefined" ? self : global);
(function(global2) {
var systemJSPrototype2 = global2.System.constructor.prototype;
var moduleTypesRegEx = /^[^#?]+\.(css|html|json|wasm)([?#].*)?$/;
var _shouldFetch = systemJSPrototype2.shouldFetch.bind(systemJSPrototype2);
systemJSPrototype2.shouldFetch = function(url) {
return _shouldFetch(url) || moduleTypesRegEx.test(url);
};
var jsonContentType = /^application\/json(;|$)/;
var cssContentType = /^text\/css(;|$)/;
var wasmContentType = /^application\/wasm(;|$)/;
var fetch2 = systemJSPrototype2.fetch;
systemJSPrototype2.fetch = function(url, options) {
return fetch2(url, options).then(function(res) {
if (options.passThrough)
return res;
if (!res.ok)
return res;
var contentType = res.headers.get("content-type");
if (jsonContentType.test(contentType))
return res.json().then(function(json) {
return new Response(new Blob([
'System.register([],function(e){return{execute:function(){e("default",' + JSON.stringify(json) + ")}}})"
], {
type: "application/javascript"
}));
});
if (cssContentType.test(contentType))
return res.text().then(function(source) {
source = source.replace(/url\(\s*(?:(["'])((?:\\.|[^\n\\"'])+)\1|((?:\\.|[^\s,"'()\\])+))\s*\)/g, function(match, quotes, relUrl1, relUrl2) {
return ["url(", quotes, resolveUrl(relUrl1 || relUrl2, url), quotes, ")"].join("");
});
return new Response(new Blob([
"System.register([],function(e){return{execute:function(){var s=new CSSStyleSheet();s.replaceSync(" + JSON.stringify(source) + ');e("default",s)}}})'
], {
type: "application/javascript"
}));
});
if (wasmContentType.test(contentType))
return (WebAssembly.compileStreaming ? WebAssembly.compileStreaming(res) : res.arrayBuffer().then(WebAssembly.compile)).then(function(module) {
if (!global2.System.wasmModules)
global2.System.wasmModules = /* @__PURE__ */ Object.create(null);
global2.System.wasmModules[url] = module;
var deps = [];
var setterSources = [];
if (WebAssembly.Module.imports)
WebAssembly.Module.imports(module).forEach(function(impt) {
var key = JSON.stringify(impt.module);
if (deps.indexOf(key) === -1) {
deps.push(key);
setterSources.push("function(m){i[" + key + "]=m}");
}
});
return new Response(new Blob([
"System.register([" + deps.join(",") + "],function(e){var i={};return{setters:[" + setterSources.join(",") + "],execute:function(){return WebAssembly.instantiate(System.wasmModules[" + JSON.stringify(url) + "],i).then(function(m){e(m.exports)})}}})"
], {
type: "application/javascript"
}));
});
return res;
});
};
})(typeof self !== "undefined" ? self : global);
var toStringTag = typeof Symbol !== "undefined" && Symbol.toStringTag;
systemJSPrototype.get = function(id) {
var load = this[REGISTRY][id];
if (load && load.e === null && !load.E) {
if (load.er)
return null;
return load.n;
}
};
systemJSPrototype.set = function(id, module) {
{
try {
new URL(id);
} catch (err) {
console.warn(Error(errMsg("W3", '"' + id + '" is not a valid URL to set in the module registry')));
}
}
var ns;
if (toStringTag && module[toStringTag] === "Module") {
ns = module;
} else {
ns = Object.assign(/* @__PURE__ */ Object.create(null), module);
if (toStringTag)
Object.defineProperty(ns, toStringTag, { value: "Module" });
}
var done = Promise.resolve(ns);
var load = this[REGISTRY][id] || (this[REGISTRY][id] = {
id,
i: [],
h: false,
d: [],
e: null,
er: void 0,
E: void 0
});
if (load.e || load.E)
return false;
Object.assign(load, {
n: ns,
I: void 0,
L: void 0,
C: done
});
return ns;
};
systemJSPrototype.has = function(id) {
var load = this[REGISTRY][id];
return !!load;
};
systemJSPrototype.delete = function(id) {
var registry = this[REGISTRY];
var load = registry[id];
if (!load || load.p && load.p.e !== null || load.E)
return false;
var importerSetters = load.i;
if (load.d)
load.d.forEach(function(depLoad) {
var importerIndex = depLoad.i.indexOf(load);
if (importerIndex !== -1)
depLoad.i.splice(importerIndex, 1);
});
delete registry[id];
return function() {
var load2 = registry[id];
if (!load2 || !importerSetters || load2.e !== null || load2.E)
return false;
importerSetters.forEach(function(setter) {
load2.i.push(setter);
setter(load2.n);
});
importerSetters = null;
};
};
var iterator = typeof Symbol !== "undefined" && Symbol.iterator;
systemJSPrototype.entries = function() {
var loader8 = this, keys = Object.keys(loader8[REGISTRY]);
var index = 0, ns, key;
var result = {
next: function() {
while ((key = keys[index++]) !== void 0 && (ns = loader8.get(key)) === void 0) ;
return {
done: key === void 0,
value: key !== void 0 && [key, ns]
};
}
};
result[iterator] = function() {
return this;
};
return result;
};
})();
// ../../../node_modules/systemjs/dist/extras/named-register.js
(function() {
(function(global2) {
var System2 = global2.System;
setRegisterRegistry(System2);
var systemJSPrototype = System2.constructor.prototype;
var constructor = System2.constructor;
var SystemJS = function() {
constructor.call(this);
setRegisterRegistry(this);
};
SystemJS.prototype = systemJSPrototype;
System2.constructor = SystemJS;
var firstNamedDefine, firstName;
function setRegisterRegistry(systemInstance) {
systemInstance.registerRegistry = /* @__PURE__ */ Object.create(null);
systemInstance.namedRegisterAliases = /* @__PURE__ */ Object.create(null);
}
var register = systemJSPrototype.register;
systemJSPrototype.register = function(name, deps, declare, metas) {
if (typeof name !== "string")
return register.apply(this, arguments);
var define = [deps, declare, metas];
this.registerRegistry[name] = define;
if (!firstNamedDefine) {
firstNamedDefine = define;
firstName = name;
}
Promise.resolve().then(function() {
firstNamedDefine = null;
firstName = null;
});
return register.apply(this, [deps, declare, metas]);
};
var resolve = systemJSPrototype.resolve;
systemJSPrototype.resolve = function(id, parentURL) {
try {
return resolve.call(this, id, parentURL);
} catch (err) {
if (id in this.registerRegistry) {
return this.namedRegisterAliases[id] || id;
}
throw err;
}
};
var instantiate = systemJSPrototype.instantiate;
systemJSPrototype.instantiate = function(url, firstParentUrl, meta) {
var result = this.registerRegistry[url];
if (result) {
this.registerRegistry[url] = null;
return result;
} else {
return instantiate.call(this, url, firstParentUrl, meta);
}
};
var getRegister = systemJSPrototype.getRegister;
systemJSPrototype.getRegister = function(url) {
var register2 = getRegister.call(this, url);
if (firstName && url) {
this.namedRegisterAliases[firstName] = url;
}
var result = firstNamedDefine || register2;
firstNamedDefine = null;
firstName = null;
return result;
};
})(typeof self !== "undefined" ? self : global);
})();
// src/utils/empty.ts
var emptyApp = {
setup() {
}
};
// ../../tooling/piral-cli/src/common/version.ts
var semver = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;
var acceptsAll = ["*", "x", ">=0"];
var operatorResMap = {
">": [1],
">=": [0, 1],
"=": [0],
"<=": [-1, 0],
"<": [-1]
};
function indexOrEnd(str, q) {
return str.indexOf(q) === -1 ? str.length : str.indexOf(q);
}
function splitVersion(v) {
const c = v.replace(/^v/, "").replace(/\+.*$/, "");
const patchIndex = indexOrEnd(c, "-");
const arr = c.substring(0, patchIndex).split(".");
arr.push(c.substring(patchIndex + 1));
return arr;
}
function parseSegment(v) {
const n = parseInt(v, 10);
return isNaN(n) ? v : n;
}
function validateAndParse(v) {
const match = v.match(semver);
match.shift();
return match;
}
function compareStrings(a, b) {
const ap = parseSegment(a);
const bp = parseSegment(b);
if (ap > bp) {
return 1;
} else if (ap < bp) {
return -1;
} else {
return 0;
}
}
function compareSegments(a, b) {
for (let i = 0; i < 2; i++) {
const r = compareStrings(a[i] || "0", b[i] || "0");
if (r !== 0) {
return r;
}
}
return 0;
}
function compareVersions(v1, v2) {
const s1 = splitVersion(v1);
const s2 = splitVersion(v2);
const len = Math.max(s1.length - 1, s2.length - 1);
for (let i = 0; i < len; i++) {
const m1 = s1[i] || "0";
const m2 = s2[i] || "0";
if (m2 === "x") {
return 0;
}
const n1 = parseInt(m1, 10);
const n2 = parseInt(m2, 10);
if (n1 > n2) {
return 1;
} else if (n2 > n1) {
return -1;
}
}
const sp1 = s1[s1.length - 1];
const sp2 = s2[s2.length - 1];
if (sp1 && sp2) {
const p1 = sp1.split(".").map(parseSegment);
const p2 = sp2.split(".").map(parseSegment);
const len2 = Math.max(p1.length, p2.length);
for (let i = 0; i < len2; i++) {
if (p1[i] === void 0 || typeof p2[i] === "string" && typeof p1[i] === "number") {
return -1;
} else if (p2[i] === void 0 || typeof p1[i] === "string" && typeof p2[i] === "number") {
return 1;
} else if (p1[i] > p2[i]) {
return 1;
} else if (p2[i] > p1[i]) {
return -1;
}
}
} else if (sp1 || sp2) {
return sp1 ? -1 : 1;
}
return 0;
}
function compare(v1, v2, operator) {
const res = compareVersions(v1, v2);
return operatorResMap[operator].indexOf(res) > -1;
}
function validate(version) {
return acceptsAll.includes(version) || semver.test(version);
}
function satisfies(v, r) {
if (!acceptsAll.includes(r)) {
const match = r.match(/^([<>=~^]+)/);
const op = match ? match[1] : "=";
if (op !== "^" && op !== "~") {
return compare(v, r, op);
}
const [v1, v2, v3] = validateAndParse(v);
const [m1, m2, m3] = validateAndParse(r);
if (compareStrings(v1, m1) !== 0) {
return false;
} else if (op === "^") {
return compareSegments([v2, v3], [m2, m3]) >= 0;
} else if (compareStrings(v2, m2) !== 0) {
return false;
}
return compareStrings(v3, m3) >= 0;
}
return true;
}
// src/utils/system.ts
var systemResolve = System.constructor.prototype.resolve;
var systemRegister = System.constructor.prototype.register;
function getLoadedVersions(prefix) {
return [...System.entries()].filter(([name]) => name.startsWith(prefix)).map(([name]) => name.substring(prefix.length));
}
function findMatchingPackage(id) {
const sep = id.indexOf("@", 1);
if (sep > 1) {
const available = Object.keys(System.registerRegistry);
const name = id.substring(0, sep + 1);
const versionSpec = id.substring(sep + 1);
if (validate(versionSpec)) {
const loadedVersions = getLoadedVersions(name);
const allVersions = available.filter((m) => m.startsWith(name)).map((m) => m.substring(name.length));
const availableVersions = [...loadedVersions, ...allVersions.filter((m) => !loadedVersions.includes(m))];
for (const availableVersion of availableVersions) {
if (validate(availableVersion) && satisfies(availableVersion, versionSpec)) {
return name + availableVersion;
}
}
}
}
return void 0;
}
function isPrimitiveExport(content) {
const type = typeof content;
return type === "number" || type === "boolean" || type === "symbol" || type === "string" || type === "bigint" || Array.isArray(content);
}
System.constructor.prototype.resolve = function(id, parentUrl) {
try {
return systemResolve.call(this, id, parentUrl);
} catch (ex) {
const result = findMatchingPackage(id);
if (!result) {
throw ex;
}
return result;
}
};
System.constructor.prototype.register = function(...args) {
const getContent = args.pop();
args.push((_export, ctx) => {
const exp = (...p) => {
if (p.length === 1) {
const content = p[0];
if (content instanceof Promise) {
return content.then(exp);
} else if (typeof content === "function") {
_export("__esModule", true);
Object.keys(content).forEach((prop) => {
_export(prop, content[prop]);
});
_export("default", content);
} else if (isPrimitiveExport(content)) {
_export("__esModule", true);
_export("default", content);
} else if (content) {
_export(content);
if (typeof content === "object" && !("default" in content)) {
_export("default", content);
}
}
} else {
return _export(...p);
}
};
return getContent(exp, ctx);
});
return systemRegister.apply(this, args);
};
function tryResolve(name, parent) {
try {
return System.resolve(name, parent);
} catch {
return void 0;
}
}
function handleFailure(error, link) {
console.error("Failed to load SystemJS module", link, error);
return emptyApp;
}
function loadSystemPilet(link) {
return System.import(link).catch((error) => handleFailure(error, link));
}
function registerDependencies(modules) {
const moduleNames = Object.keys(modules);
moduleNames.forEach((name) => registerModule(name, () => modules[name]));
return Promise.all(moduleNames.map((name) => System.import(name)));
}
function registerModule(name, resolve) {
System.register(name, [], (_exports) => ({
execute() {
const content = resolve();
if (content instanceof Promise) {
return content.then(_exports);
} else {
_exports(content);
}
}
}));
}
function registerDependencyUrls(dependencies) {
for (const name of Object.keys(dependencies)) {
if (!System.has(name)) {
const dependency = dependencies[name];
registerModule(name, () => System.import(dependency));
}
}
}
function unregisterModules(baseUrl, dependencies) {
[...System.entries()].map(([name]) => name).filter((name) => name.startsWith(baseUrl) && !dependencies.includes(name)).forEach((name) => System.delete(name));
}
function requireModule(name, parent) {
const moduleId = tryResolve(name, parent);
const dependency = moduleId && System.get(moduleId);
if (!dependency) {
const error = new Error(`Cannot find module '${name}'`);
error.code = "MODULE_NOT_FOUND";
throw error;
}
return dependency;
}
// src/utils/helpers.ts
function isfunc(f) {
return typeof f === "function";
}
function callfunc(f, ...args) {
isfunc(f) && f(...args);
}
function promisify(value) {
return Promise.resolve(value);
}
function getBasePath(link) {
if (link) {
const idx = link.lastIndexOf("/");
return link.substring(0, idx + 1);
}
return link;
}
// src/utils/dependency.ts
function createEvaluatedPilet(meta, mod) {
const basePath = getBasePath(meta.link);
const app = checkPiletApp(meta.name, mod);
return { ...meta, ...app, basePath };
}
function checkCreateApi(createApi) {
if (!isfunc(createApi)) {
console.warn("Invalid `createApi` function. Skipping pilet installation.");
return false;
}
return true;
}
function checkPiletApp(name, app) {
if (!app) {
console.error("Invalid module found.", name);
} else if (typeof app.setup !== "function") {
console.warn("Setup function is missing.", name);
} else {
return app;
}
return emptyApp;
}
function checkPiletAppAsync(name, app) {
return promisify(app).then((resolvedApp) => checkPiletApp(name, resolvedApp));
}
function includeScript(depName, link, integrity, crossOrigin) {
window[depName] = (moduleId) => requireModule(moduleId, link);
return includeScriptDependency(link, integrity, crossOrigin).then((s) => s.app);
}
function includeScriptDependency(link, integrity, crossOrigin) {
return new Promise((resolve, reject) => {
const s = document.createElement("script");
s.async = true;
s.src = link;
if (integrity) {
s.crossOrigin = crossOrigin || "anonymous";
s.integrity = integrity;
} else if (crossOrigin) {
s.crossOrigin = crossOrigin;
}
s.onload = () => resolve(s);
s.onerror = (e) => reject(e);
document.body.appendChild(s);
});
}
// src/utils/load.ts
var depContext = {};
function loadSharedDependencies(dependencies) {
if (dependencies) {
const names = Object.keys(dependencies);
return Promise.all(
names.map((name) => {
return depContext[name] || (depContext[name] = includeScriptDependency(dependencies[name]));
})
);
}
return promisify();
}
function handleFailure2(error, name) {
console.error("Failed to load pilet", name, error);
return emptyApp;
}
function loadFrom(meta, loadPilet) {
return loadSharedDependencies(meta.dependencies).then(loadPilet).catch((error) => handleFailure2(error, meta.name)).then((app) => createEvaluatedPilet(meta, app));
}
// src/lifecycle/cleanup.ts
var evtName = "unload-pilet";
function runCleanup(app, api, hooks) {
if (typeof document !== "undefined") {
const css = document.querySelector(`link[data-origin=${JSON.stringify(app.name)}]`);
css?.remove();
}
const url = app.basePath;
callfunc(app.teardown, api);
callfunc(hooks.cleanupPilet, app);
if ("requireRef" in app) {
const depName = app.requireRef;
delete globalThis[depName];
}
if (url) {
unregisterModules(url, Object.values(app.dependencies));
}
}
function prepareCleanup(app, api, hooks) {
const handler = (e) => {
if (e.name === app.name) {
api.off(evtName, handler);
runCleanup(app, api, hooks);
}
};
api.on(evtName, handler);
}
// src/lifecycle/setup.ts
function logError(name, e) {
console.error(`Error while setting up ${name}.`, e);
}
function withCatch(result, name) {
if (result instanceof Promise) {
return result.catch((e) => logError(name, e));
}
return promisify(result);
}
function setupSinglePilet(app, apiFactory, hooks) {
const name = app?.name;
try {
const api = apiFactory(app);
callfunc(hooks.setupPilet, app);
const result = app.setup(api);
prepareCleanup(app, api, hooks);
return withCatch(result, name);
} catch (e) {
logError(name, e);
}
return promisify();
}
function setupPiletBundle(app, apiFactory, hooks) {
const name = app?.name || "pilet bundle";
try {
callfunc(hooks.setupPilet, app);
const result = app.setup(apiFactory);
return withCatch(result, name);
} catch (e) {
logError(name, e);
}
return promisify();
}
// src/inspect.ts
function inspectPilet(meta) {
const inBrowser = typeof document !== "undefined";
if ("link" in meta && meta.spec === "v3") {
return ["v3", meta, setupSinglePilet];
} else if (inBrowser && "link" in meta && meta.spec === "mf") {
return ["mf", meta, setupSinglePilet];
} else if (inBrowser && "link" in meta && meta.spec === "v2") {
return ["v2", meta, setupSinglePilet];
} else if (inBrowser && "requireRef" in meta && meta.spec !== "v2") {
return ["v1", meta, setupSinglePilet];
} else if (inBrowser && "bundle" in meta && meta.bundle) {
return ["bundle", meta, setupPiletBundle];
} else if ("hash" in meta) {
return ["v0", meta, setupSinglePilet];
} else {
return ["unknown", meta, setupSinglePilet];
}
}
// src/aggregate.ts
function runPilets(createApi, pilets, hooks = {}) {
const promises = [];
if (Array.isArray(pilets)) {
for (const pilet of pilets) {
const [, , setupPilet] = inspectPilet(pilet);
const wait = setupPilet(pilet, createApi, hooks);
promises.push(wait);
}
}
return Promise.all(promises).then(() => pilets);
}
function runPilet(createApi, pilet, hooks = {}) {
const [, , setupPilet] = inspectPilet(pilet);
const wait = setupPilet(pilet, createApi, hooks);
return wait.then(() => pilet);
}
// src/api.ts
function initializeApi(target, events) {
return {
on: events.on,
once: events.once,
off: events.off,
emit: events.emit,
meta: Object.assign({}, target)
};
}
function mergeApis(api, extenders, target) {
const frags = extenders.map((extender) => extender(api, target));
Object.assign(api, ...frags);
return api;
}
// src/load.ts
function checkFetchPilets(fetchPilets) {
if (!isfunc(fetchPilets)) {
console.error("Could not get the pilets. Provide a valid `fetchPilets` function.");
return false;
}
return true;
}
function loadMetadata(fetchPilets) {
if (checkFetchPilets(fetchPilets)) {
return fetchPilets().then((pilets) => {
if (!Array.isArray(pilets)) {
throw new Error("The fetched pilets metadata is not an array.");
}
return pilets.map((meta) => ({ ...meta }));
});
}
return promisify([]);
}
function loadPilets(fetchPilets, loadPilet) {
return loadMetadata(fetchPilets).then((pilets) => Promise.all(pilets.map(loadPilet)));
}
// src/loaders/bundle/dependency.ts
function includeBundle(meta, crossOrigin) {
return includeScript(meta.bundle, meta.link, meta.integrity, crossOrigin);
}
// src/loaders/bundle/index.ts
function loader(entry, config) {
const { dependencies = {}, spec = "v1", name = `[bundle] ${entry.link}`, ...rest } = entry;
const meta = {
name,
version: "",
config: {},
spec,
dependencies,
...rest
};
return loadFrom(meta, () => includeBundle(entry, config.crossOrigin));
}
// src/loaders/empty/index.ts
function loader2(entry, _config) {
const { name, spec = "vx", ...rest } = entry;
const dependencies = "dependencies" in entry ? entry.dependencies : {};
const meta = {
name,
version: "",
spec,
dependencies,
config: {},
link: "",
basePath: "",
...rest
};
console.warn("Empty pilet found!", name);
return promisify({ ...meta, ...emptyApp });
}
// src/loaders/v0/fetch.ts
function fetchDependency(url) {
return fetch(url, {
method: "GET",
cache: "force-cache"
}).then((m) => m.text());
}
// src/loaders/v0/dependency.ts
function evalDependency(name, content, link = "") {
const mod = {
exports: {}
};
try {
const sourceUrl = link && `
//# sourceURL=${link}`;
const importer = new Function("module", "exports", "require", content + sourceUrl);
const parent = link || name;
const require2 = (moduleId) => requireModule(moduleId, parent);
importer(mod, mod.exports, require2);
} catch (e) {
console.error(`Error while evaluating ${name}.`, e);
}
return mod.exports;
}
// src/loaders/v0/index.ts
function loader3(entry, _config) {
const { name, config = {}, dependencies = {}, spec = "v0" } = entry;
const meta = {
name,
config,
dependencies,
spec,
link: "",
...entry
};
if ("link" in entry && entry.link) {
return loadFrom(
meta,
() => fetchDependency(entry.link).then((content) => evalDependency(name, content, entry.link))
);
} else {
const content = "content" in entry && entry.content || "";
return loadFrom(meta, () => evalDependency(name, content, void 0));
}
}
// src/loaders/v1/dependency.ts
function includeDependency(entry, crossOrigin) {
return includeScript(entry.requireRef, entry.link, entry.integrity, crossOrigin);
}
// src/loaders/v1/index.ts
function loader4(entry, config) {
const { dependencies = {}, spec = "v1", ...rest } = entry;
const meta = {
dependencies,
config: {},
spec,
...rest
};
return loadFrom(meta, () => includeDependency(entry, config.crossOrigin));
}
// src/loaders/v2/index.ts
function loader5(entry, _config) {
const { dependencies = {}, config = {}, link, ...rest } = entry;
const meta = {
dependencies,
config,
link,
...rest
};
registerDependencyUrls(dependencies);
return loadSystemPilet(link).then((app) => createEvaluatedPilet(meta, app));
}
// src/loaders/v3/index.ts
function attachStylesToDocument(pilet, url) {
if (typeof document !== "undefined") {
const link = document.createElement("link");
link.setAttribute("data-origin", pilet.name);
link.type = "text/css";
link.rel = "stylesheet";
link.href = url;
document.head.appendChild(link);
}
}
function loader6(entry, options) {
const { dependencies = {}, config = {}, link, ...rest } = entry;
const attachStyles = typeof options.attachStyles === "function" ? options.attachStyles : attachStylesToDocument;
const meta = {
dependencies,
config,
link,
...rest
};
registerDependencyUrls(dependencies);
return loadSystemPilet(link).then((app) => {
const pilet = createEvaluatedPilet(meta, app);
if (Array.isArray(app.styles)) {
for (const style of app.styles) {
const s = !style.startsWith("//") ? style.replace(/^\/+/, "") : style;
const url = new URL(s, pilet.basePath).toString();
attachStyles(pilet, url);
}
}
return pilet;
});
}
// src/loaders/mf/index.ts
var appShell = "piral";
function populateKnownDependencies(scope) {
for (const [entry] of System.entries()) {
const index = entry.lastIndexOf("@");
if (index > 0 && !entry.match(/^https?:\/\//)) {
const entryName = entry.substring(0, index);
const entryVersion = entry.substring(index + 1);
if (!(entryName in scope)) {
scope[entryName] = {};
}
scope[entryName][entryVersion] = {
from: appShell,
eager: false,
get: () => System.import(entry).then((result) => () => result)
};
}
}
}
function extractSharedDependencies(scope) {
for (const entryName of Object.keys(scope)) {
const entries = scope[entryName];
for (const entryVersion of Object.keys(entries)) {
const entry = entries[entryVersion];
if (entry.from !== appShell) {
registerModule(`${entryName}@${entryVersion}`, () => entry.get().then((factory) => factory()));
}
}
}
}
function loadMfFactory(piletName, exposedName) {
const varName = piletName.replace(/^@/, "").replace("/", "-").replace(/\-/g, "_");
const container = window[varName];
const scope = {};
container.init(scope);
populateKnownDependencies(scope);
extractSharedDepe