UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

74 lines (69 loc) • 2.54 kB
const require_keySetupGuidance = require('./keySetupGuidance.js'); //#region src/errors/errorThrower.ts const DefaultMessages = Object.freeze({ InvalidProxyUrlErrorMessage: `The proxyUrl passed to Clerk is invalid. The expected value for proxyUrl is an absolute URL or a relative path with a leading '/'. (key={{url}})`, InvalidPublishableKeyErrorMessage: `The publishableKey passed to Clerk is invalid (key={{key}}, expected format: pk_test_... or pk_live_...). ${require_keySetupGuidance.keySetupGuidance}`, MissingPublishableKeyErrorMessage: `Clerk keys are missing from your environment. ${require_keySetupGuidance.keySetupGuidance}`, MissingSecretKeyErrorMessage: `Missing secretKey. ${require_keySetupGuidance.existingAppKeyGuidance}`, MissingClerkProvider: `{{source}} can only be used within the <ClerkProvider /> component. Learn more: https://clerk.com/docs/components/clerk-provider` }); /** * Builds an error thrower. * * @internal */ function buildErrorThrower({ packageName, customMessages }) { let pkg = packageName; /** * Builds a message from a raw message and replacements. * * @internal */ function buildMessage(rawMessage, replacements) { if (!replacements) return `${pkg}: ${rawMessage}`; let msg = rawMessage; const matches = rawMessage.matchAll(/{{([a-zA-Z0-9-_]+)}}/g); for (const match of matches) { const replacement = (replacements[match[1]] || "").toString(); msg = msg.replace(`{{${match[1]}}}`, replacement); } return `${pkg}: ${msg}`; } const messages = { ...DefaultMessages, ...customMessages }; return { setPackageName({ packageName }) { if (typeof packageName === "string") pkg = packageName; return this; }, setMessages({ customMessages }) { Object.assign(messages, customMessages || {}); return this; }, throwInvalidPublishableKeyError(params) { throw new Error(buildMessage(messages.InvalidPublishableKeyErrorMessage, params)); }, throwInvalidProxyUrl(params) { throw new Error(buildMessage(messages.InvalidProxyUrlErrorMessage, params)); }, throwMissingPublishableKeyError() { throw new Error(buildMessage(messages.MissingPublishableKeyErrorMessage)); }, throwMissingSecretKeyError() { throw new Error(buildMessage(messages.MissingSecretKeyErrorMessage)); }, throwMissingClerkProviderError(params) { throw new Error(buildMessage(messages.MissingClerkProvider, params)); }, throw(message) { throw new Error(buildMessage(message)); } }; } //#endregion exports.buildErrorThrower = buildErrorThrower;