UNPKG

@clerk/clerk-react

Version:

Clerk.dev React library

45 lines 1.74 kB
"use strict"; 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