UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

73 lines (71 loc) 2.34 kB
const require_devCache = require('./devCache.js'); //#region src/keyless/resolveKeysWithKeylessFallback.ts /** * Resolves Clerk keys, falling back to keyless mode in development if configured keys are missing. * * @param configuredPublishableKey - The publishable key from options or environment * @param configuredSecretKey - The secret key from options or environment * @param keylessService - The keyless service instance (or null if unavailable) * @param canUseKeyless - Whether keyless mode is enabled in the current environment * @returns The resolved keys (either configured or from keyless mode) */ async function resolveKeysWithKeylessFallback(configuredPublishableKey, configuredSecretKey, keylessService, canUseKeyless) { let publishableKey = configuredPublishableKey; let secretKey = configuredSecretKey; let claimUrl; let apiKeysUrl; if (!canUseKeyless) return { publishableKey, secretKey, claimUrl, apiKeysUrl }; if (!keylessService) return { publishableKey, secretKey, claimUrl, apiKeysUrl }; try { const locallyStoredKeys = keylessService.readKeys(); if (Boolean(configuredPublishableKey) && configuredPublishableKey === locallyStoredKeys?.publishableKey && locallyStoredKeys) { try { await require_devCache.clerkDevelopmentCache?.run(() => keylessService.completeOnboarding(), { cacheKey: `${locallyStoredKeys.publishableKey}_complete`, onSuccessStale: 1440 * 60 * 1e3 }); } catch {} require_devCache.clerkDevelopmentCache?.log({ cacheKey: `${locallyStoredKeys.publishableKey}_claimed`, msg: require_devCache.createConfirmationMessage() }); return { publishableKey, secretKey, claimUrl, apiKeysUrl }; } if (!publishableKey && !secretKey) { const keylessApp = await keylessService.getOrCreateKeys(); if (keylessApp) { publishableKey = keylessApp.publishableKey; secretKey = keylessApp.secretKey; claimUrl = keylessApp.claimUrl; apiKeysUrl = keylessApp.apiKeysUrl; require_devCache.clerkDevelopmentCache?.log({ cacheKey: keylessApp.publishableKey, msg: require_devCache.createKeylessModeMessage(keylessApp) }); } } } catch {} return { publishableKey, secretKey, claimUrl, apiKeysUrl }; } //#endregion exports.resolveKeysWithKeylessFallback = resolveKeysWithKeylessFallback;