|
|
"use strict"; |
|
|
var __defProp = Object.defineProperty; |
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; |
|
|
var __getOwnPropNames = Object.getOwnPropertyNames; |
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty; |
|
|
var __export = (target, all) => { |
|
|
for (var name in all) |
|
|
__defProp(target, name, { get: all[name], enumerable: true }); |
|
|
}; |
|
|
var __copyProps = (to, from, except, desc) => { |
|
|
if (from && typeof from === "object" || typeof from === "function") { |
|
|
for (let key of __getOwnPropNames(from)) |
|
|
if (!__hasOwnProp.call(to, key) && key !== except) |
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); |
|
|
} |
|
|
return to; |
|
|
}; |
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); |
|
|
|
|
|
|
|
|
var apiUrlFromPublishableKey_exports = {}; |
|
|
__export(apiUrlFromPublishableKey_exports, { |
|
|
apiUrlFromPublishableKey: () => apiUrlFromPublishableKey |
|
|
}); |
|
|
module.exports = __toCommonJS(apiUrlFromPublishableKey_exports); |
|
|
|
|
|
|
|
|
var LEGACY_DEV_INSTANCE_SUFFIXES = [".lcl.dev", ".lclstage.dev", ".lclclerk.com"]; |
|
|
var LOCAL_ENV_SUFFIXES = [".lcl.dev", "lclstage.dev", ".lclclerk.com", ".accounts.lclclerk.com"]; |
|
|
var STAGING_ENV_SUFFIXES = [".accountsstage.dev"]; |
|
|
var LOCAL_API_URL = "https://api.lclclerk.com"; |
|
|
var STAGING_API_URL = "https://api.clerkstage.dev"; |
|
|
var PROD_API_URL = "https://api.clerk.com"; |
|
|
|
|
|
|
|
|
var isomorphicAtob = (data) => { |
|
|
if (typeof atob !== "undefined" && typeof atob === "function") { |
|
|
return atob(data); |
|
|
} else if (typeof global !== "undefined" && global.Buffer) { |
|
|
return new global.Buffer(data, "base64").toString(); |
|
|
} |
|
|
return data; |
|
|
}; |
|
|
|
|
|
|
|
|
var PUBLISHABLE_KEY_LIVE_PREFIX = "pk_live_"; |
|
|
var PUBLISHABLE_KEY_TEST_PREFIX = "pk_test_"; |
|
|
function isValidDecodedPublishableKey(decoded) { |
|
|
if (!decoded.endsWith("$")) { |
|
|
return false; |
|
|
} |
|
|
const withoutTrailing = decoded.slice(0, -1); |
|
|
if (withoutTrailing.includes("$")) { |
|
|
return false; |
|
|
} |
|
|
return withoutTrailing.includes("."); |
|
|
} |
|
|
function parsePublishableKey(key, options = {}) { |
|
|
key = key || ""; |
|
|
if (!key || !isPublishableKey(key)) { |
|
|
if (options.fatal && !key) { |
|
|
throw new Error( |
|
|
"Publishable key is missing. Ensure that your publishable key is correctly configured. Double-check your environment configuration for your keys, or access them here: https://dashboard.clerk.com/last-active?path=api-keys" |
|
|
); |
|
|
} |
|
|
if (options.fatal && !isPublishableKey(key)) { |
|
|
throw new Error("Publishable key not valid."); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
const instanceType = key.startsWith(PUBLISHABLE_KEY_LIVE_PREFIX) ? "production" : "development"; |
|
|
let decodedFrontendApi; |
|
|
try { |
|
|
decodedFrontendApi = isomorphicAtob(key.split("_")[2]); |
|
|
} catch { |
|
|
if (options.fatal) { |
|
|
throw new Error("Publishable key not valid: Failed to decode key."); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
if (!isValidDecodedPublishableKey(decodedFrontendApi)) { |
|
|
if (options.fatal) { |
|
|
throw new Error("Publishable key not valid: Decoded key has invalid format."); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
let frontendApi = decodedFrontendApi.slice(0, -1); |
|
|
if (options.proxyUrl) { |
|
|
frontendApi = options.proxyUrl; |
|
|
} else if (instanceType !== "development" && options.domain && options.isSatellite) { |
|
|
frontendApi = `clerk.${options.domain}`; |
|
|
} |
|
|
return { |
|
|
instanceType, |
|
|
frontendApi |
|
|
}; |
|
|
} |
|
|
function isPublishableKey(key = "") { |
|
|
try { |
|
|
const hasValidPrefix = key.startsWith(PUBLISHABLE_KEY_LIVE_PREFIX) || key.startsWith(PUBLISHABLE_KEY_TEST_PREFIX); |
|
|
if (!hasValidPrefix) { |
|
|
return false; |
|
|
} |
|
|
const parts = key.split("_"); |
|
|
if (parts.length !== 3) { |
|
|
return false; |
|
|
} |
|
|
const encodedPart = parts[2]; |
|
|
if (!encodedPart) { |
|
|
return false; |
|
|
} |
|
|
const decoded = isomorphicAtob(encodedPart); |
|
|
return isValidDecodedPublishableKey(decoded); |
|
|
} catch { |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var apiUrlFromPublishableKey = (publishableKey) => { |
|
|
const frontendApi = parsePublishableKey(publishableKey)?.frontendApi; |
|
|
if (frontendApi?.startsWith("clerk.") && LEGACY_DEV_INSTANCE_SUFFIXES.some((suffix) => frontendApi?.endsWith(suffix))) { |
|
|
return PROD_API_URL; |
|
|
} |
|
|
if (LOCAL_ENV_SUFFIXES.some((suffix) => frontendApi?.endsWith(suffix))) { |
|
|
return LOCAL_API_URL; |
|
|
} |
|
|
if (STAGING_ENV_SUFFIXES.some((suffix) => frontendApi?.endsWith(suffix))) { |
|
|
return STAGING_API_URL; |
|
|
} |
|
|
return PROD_API_URL; |
|
|
}; |
|
|
|
|
|
0 && (module.exports = { |
|
|
apiUrlFromPublishableKey |
|
|
}); |
|
|
|