@clerk/clerk-react
Version:
Clerk.dev React library
45 lines • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadScript = void 0;
const info_1 = require("../info");
const FAILED_TO_LOAD_ERROR = 'Clerk: Failed to load Clerk';
const MISSING_PROVIDER_ERROR = 'Clerk: Missing provider';
const MISSING_BODY_ERROR = 'Clerk: Missing <body> element.';
function isStaging(frontendApi) {
return (frontendApi.endsWith('.lclstage.dev') ||
frontendApi.endsWith('.stgstage.dev') ||
frontendApi.endsWith('.clerkstage.dev'));
}
function getScriptSrc(frontendApi, localScriptSrc) {
if (localScriptSrc) {
return localScriptSrc;
}
const majorVersion = isStaging(frontendApi)
? 'staging'
: parseInt(info_1.LIB_VERSION.split('.')[0], 10);
return `https://${frontendApi}/npm/@clerk/clerk-js@${majorVersion}/dist/clerk.browser.js`;
}
function loadScript(frontendApi, localScriptSrc) {
return new Promise((resolve, reject) => {
if (global.Clerk) {
resolve(null);
}
if (!frontendApi) {
reject(MISSING_PROVIDER_ERROR);
}
const script = document.createElement('script');
const src = getScriptSrc(frontendApi, localScriptSrc);
script.setAttribute('data-clerk-frontend-api', frontendApi);
script.setAttribute('crossorigin', 'anonymous');
script.async = true;
if (!document.body) {
reject(MISSING_BODY_ERROR);
}
script.addEventListener('load', () => resolve(script));
script.addEventListener('error', () => reject(FAILED_TO_LOAD_ERROR));
script.src = src;
document.body.appendChild(script);
});
}
exports.loadScript = loadScript;
//# sourceMappingURL=scriptLoader.js.map