@nebula.js/stardust
Version:
Product and framework agnostic integration API for Qlik's Associative Engine
131 lines (126 loc) • 5.75 kB
JavaScript
/*
* @nebula.js/stardust v7.0.0
* Copyright (c) 2026 QlikTech International AB
* Released under the MIT license.
*/
System.register([], (function (exports) {
'use strict';
return {
execute: (function () {
exports("importRuntimeModule", importRuntimeModule);
//#region node_modules/.pnpm/@qlik+runtime-module-loader@1.4.1/node_modules/@qlik/runtime-module-loader/dist/index.js
if (!window.__qlikMainPrivateResolvers) window.__qlikMainPrivateResolvers = {};
if (!window.__qlikMainPrivateResolvers.mainUrlPromise) window.__qlikMainPrivateResolvers.mainUrlPromise = new Promise((resolve) => {
if (window.__qlikMainPrivateResolvers) window.__qlikMainPrivateResolvers.resolveMainJsUrl = (value) => {
resolve(value);
};
});
if (!window.__qlikMainPrivateResolvers.mainJsUrlAndHostConfigPromise) window.__qlikMainPrivateResolvers.mainJsUrlAndHostConfigPromise = new Promise((resolve) => {
if (window.__qlikMainPrivateResolvers) window.__qlikMainPrivateResolvers.resolveMainJsUrlAndHostConfig = (value) => {
resolve(value);
};
});
if (!window.__qlikMainPrivateResolvers.qlikMainPromise) window.__qlikMainPrivateResolvers.qlikMainPromise = (async () => {
if (window.QlikMain) return window.QlikMain;
if (!window.__qlikMainPrivateResolvers?.mainJsUrlAndHostConfigPromise || !window.__qlikMainPrivateResolvers.mainUrlPromise) throw new Error("No main url promise found, report this issue");
const noHostWarningTimer = setTimeout(() => {
console.warn("Waiting for a host parameter pointing to a Qlik runtime system");
}, 5e3);
const { url, hostConfig } = await Promise.race([window.__qlikMainPrivateResolvers.mainJsUrlAndHostConfigPromise, window.__qlikMainPrivateResolvers.mainUrlPromise.then((mainJsUrl) => ({
url: mainJsUrl,
hostConfig: window.__qlikMainPrivateResolvers?.forwardCompatibleHostConfig
}))]);
clearTimeout(noHostWarningTimer);
const useWindowsCookies = await handleWindowsAuthentication(url, hostConfig);
return new Promise((resolve) => {
if (window.QlikMain) resolve(window.QlikMain);
else {
const script = window.document.createElement("script");
if (url) script.src = url;
if (useWindowsCookies) script.crossOrigin = "use-credentials";
script.addEventListener("error", () => {
console.error(`Qlik runtime system not found: ${url}`);
});
script.addEventListener("load", () => {
if (window.QlikMain) resolve(window.QlikMain);
});
window.document.head.appendChild(script);
}
});
})();
function provideHostConfigForMainJsUrl(hostConfig) {
if (!window.__qlikMainPrivateResolvers) throw new Error("No main url resolver found");
function toMainJsUrl(hc) {
if (!window.__qlikMainPrivateResolvers) throw new Error("No main url resolver found");
let url = hc?.embedRuntimeUrl || hc?.url || hc?.host;
if (!url && hc?.authType === "noauth") url = "https://cdn.qlikcloud.com/qmfe";
if (!url) return;
let locationUrl;
if (url.toLowerCase().startsWith("https://") || url.toLowerCase().startsWith("http://")) locationUrl = url;
else locationUrl = `https://${url}`;
while (locationUrl.endsWith("/")) locationUrl = locationUrl.slice(0, -1);
return `${locationUrl}/qlik-embed/main.js`;
}
const potentialMainJsUrl = toMainJsUrl(hostConfig);
if (potentialMainJsUrl && window.__qlikMainPrivateResolvers.resolveMainJsUrlAndHostConfig) window.__qlikMainPrivateResolvers.resolveMainJsUrlAndHostConfig({
url: potentialMainJsUrl,
hostConfig
});
if (potentialMainJsUrl && window.__qlikMainPrivateResolvers.resolveMainJsUrl) {
window.__qlikMainPrivateResolvers.forwardCompatibleHostConfig = hostConfig;
window.__qlikMainPrivateResolvers.resolveMainJsUrl(potentialMainJsUrl);
}
}
async function importRuntimeModule(name, hostConfig) {
if (hostConfig?.runtimeModuleMocks?.[name]) return hostConfig.runtimeModuleMocks?.[name];
provideHostConfigForMainJsUrl(hostConfig);
return importFromCdn(name);
}
async function importFromCdn(name) {
if (!window.__qlikMainPrivateResolvers?.qlikMainPromise) throw new Error("No main url resolver found");
return (await window.__qlikMainPrivateResolvers.qlikMainPromise).import(name);
}
async function handleWindowsAuthentication(url, hostConfig) {
if (hostConfig?.authType === "windowscookie") {
if (hostConfig.getAccessToken) {
const token2 = await resolveTokenIfPresent(hostConfig.getAccessToken);
if (token2) await fetch(url, {
method: "GET",
mode: "cors",
credentials: "include",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token2}`
}
});
return true;
}
if (hostConfig.loginUri) {
if (!(await fetch(url, {
method: "GET",
mode: "cors",
credentials: "include",
redirect: "manual"
})).ok) {
window.location.replace(hostConfig.loginUri);
return new Promise(() => {});
}
}
}
return false;
}
async function resolveTokenIfPresent(getAccessToken) {
if (typeof getAccessToken === "function") return getAccessToken();
if (typeof getAccessToken === "string") {
const accessTokenFn = lookupGlobalGetAccessTokenFn(getAccessToken);
if (typeof accessTokenFn !== "function") throw new Error(`getAccessToken function "${getAccessToken}" not found on globalThis. Please make sure it is defined.`);
return accessTokenFn();
}
}
function lookupGlobalGetAccessTokenFn(getAccessToken) {
return globalThis[getAccessToken];
}
})
};
}));
//# sourceMappingURL=dist-BmJduVUG-DGGDmL2m.js.map