FRE-600: Fix code review blockers

- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-25 00:08:01 -04:00
parent 65b552bb08
commit 7c684a42cc
48450 changed files with 5679671 additions and 383 deletions

21
node_modules/@clerk/shared/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2022 Clerk Inc
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

3
node_modules/@clerk/shared/README.md generated vendored Normal file
View File

@@ -0,0 +1,3 @@
# @clerk/shared
Utilities used in `@clerk` packages

View File

@@ -0,0 +1,9 @@
import { pd as PhoneCodeChannelData } from "./index-B4_BYgBX.mjs";
import "./moduleManager-BsmFyRrH.mjs";
//#region src/alternativePhoneCode.d.ts
declare const ALTERNATIVE_PHONE_CODE_PROVIDERS: PhoneCodeChannelData[];
declare const getAlternativePhoneCodeProviderData: (channel?: string) => PhoneCodeChannelData | null;
//#endregion
export { ALTERNATIVE_PHONE_CODE_PROVIDERS, getAlternativePhoneCodeProviderData };
//# sourceMappingURL=alternativePhoneCode.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"alternativePhoneCode.d.mts","names":[],"sources":["../../src/alternativePhoneCode.ts"],"sourcesContent":[],"mappings":";;;;cAEa,kCAAkC;cAOlC,2DAA0D"}

View File

@@ -0,0 +1,9 @@
import { pd as PhoneCodeChannelData } from "./index-gwPUTb24.js";
import "./moduleManager-WB15hU3T.js";
//#region src/alternativePhoneCode.d.ts
declare const ALTERNATIVE_PHONE_CODE_PROVIDERS: PhoneCodeChannelData[];
declare const getAlternativePhoneCodeProviderData: (channel?: string) => PhoneCodeChannelData | null;
//#endregion
export { ALTERNATIVE_PHONE_CODE_PROVIDERS, getAlternativePhoneCodeProviderData };
//# sourceMappingURL=alternativePhoneCode.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"alternativePhoneCode.d.ts","names":[],"sources":["../../src/alternativePhoneCode.ts"],"sourcesContent":[],"mappings":";;;;cAEa,kCAAkC;cAOlC,2DAA0D"}

View File

@@ -0,0 +1,15 @@
//#region src/alternativePhoneCode.ts
const ALTERNATIVE_PHONE_CODE_PROVIDERS = [{
channel: "whatsapp",
name: "WhatsApp"
}];
const getAlternativePhoneCodeProviderData = (channel) => {
if (!channel) return null;
return ALTERNATIVE_PHONE_CODE_PROVIDERS.find((p) => p.channel === channel) || null;
};
//#endregion
exports.ALTERNATIVE_PHONE_CODE_PROVIDERS = ALTERNATIVE_PHONE_CODE_PROVIDERS;
exports.getAlternativePhoneCodeProviderData = getAlternativePhoneCodeProviderData;
//# sourceMappingURL=alternativePhoneCode.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"alternativePhoneCode.js","names":["ALTERNATIVE_PHONE_CODE_PROVIDERS: PhoneCodeChannelData[]"],"sources":["../../src/alternativePhoneCode.ts"],"sourcesContent":["import type { PhoneCodeChannelData } from './types';\n\nexport const ALTERNATIVE_PHONE_CODE_PROVIDERS: PhoneCodeChannelData[] = [\n {\n channel: 'whatsapp',\n name: 'WhatsApp',\n },\n];\n\nexport const getAlternativePhoneCodeProviderData = (channel?: string): PhoneCodeChannelData | null => {\n if (!channel) {\n return null;\n }\n return ALTERNATIVE_PHONE_CODE_PROVIDERS.find(p => p.channel === channel) || null;\n};\n"],"mappings":";;AAEA,MAAaA,mCAA2D,CACtE;CACE,SAAS;CACT,MAAM;CACP,CACF;AAED,MAAa,uCAAuC,YAAkD;AACpG,KAAI,CAAC,QACH,QAAO;AAET,QAAO,iCAAiC,MAAK,MAAK,EAAE,YAAY,QAAQ,IAAI"}

View File

@@ -0,0 +1,13 @@
//#region src/alternativePhoneCode.ts
const ALTERNATIVE_PHONE_CODE_PROVIDERS = [{
channel: "whatsapp",
name: "WhatsApp"
}];
const getAlternativePhoneCodeProviderData = (channel) => {
if (!channel) return null;
return ALTERNATIVE_PHONE_CODE_PROVIDERS.find((p) => p.channel === channel) || null;
};
//#endregion
export { ALTERNATIVE_PHONE_CODE_PROVIDERS, getAlternativePhoneCodeProviderData };
//# sourceMappingURL=alternativePhoneCode.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"alternativePhoneCode.mjs","names":["ALTERNATIVE_PHONE_CODE_PROVIDERS: PhoneCodeChannelData[]"],"sources":["../../src/alternativePhoneCode.ts"],"sourcesContent":["import type { PhoneCodeChannelData } from './types';\n\nexport const ALTERNATIVE_PHONE_CODE_PROVIDERS: PhoneCodeChannelData[] = [\n {\n channel: 'whatsapp',\n name: 'WhatsApp',\n },\n];\n\nexport const getAlternativePhoneCodeProviderData = (channel?: string): PhoneCodeChannelData | null => {\n if (!channel) {\n return null;\n }\n return ALTERNATIVE_PHONE_CODE_PROVIDERS.find(p => p.channel === channel) || null;\n};\n"],"mappings":";AAEA,MAAaA,mCAA2D,CACtE;CACE,SAAS;CACT,MAAM;CACP,CACF;AAED,MAAa,uCAAuC,YAAkD;AACpG,KAAI,CAAC,QACH,QAAO;AAET,QAAO,iCAAiC,MAAK,MAAK,EAAE,YAAY,QAAQ,IAAI"}

View File

@@ -0,0 +1,11 @@
//#region src/apiUrlFromPublishableKey.d.ts
/**
* Get the correct API url based on the publishable key.
*
* @param publishableKey - The publishable key to parse.
* @returns One of Clerk's API URLs.
*/
declare const apiUrlFromPublishableKey: (publishableKey: string) => "https://api.clerk.com" | "https://api.lclclerk.com" | "https://api.clerkstage.dev";
//#endregion
export { apiUrlFromPublishableKey };
//# sourceMappingURL=apiUrlFromPublishableKey.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"apiUrlFromPublishableKey.d.mts","names":[],"sources":["../../src/apiUrlFromPublishableKey.ts"],"sourcesContent":[],"mappings":";;AAgBA;;;;;cAAa"}

View File

@@ -0,0 +1,11 @@
//#region src/apiUrlFromPublishableKey.d.ts
/**
* Get the correct API url based on the publishable key.
*
* @param publishableKey - The publishable key to parse.
* @returns One of Clerk's API URLs.
*/
declare const apiUrlFromPublishableKey: (publishableKey: string) => "https://api.clerk.com" | "https://api.lclclerk.com" | "https://api.clerkstage.dev";
//#endregion
export { apiUrlFromPublishableKey };
//# sourceMappingURL=apiUrlFromPublishableKey.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"apiUrlFromPublishableKey.d.ts","names":[],"sources":["../../src/apiUrlFromPublishableKey.ts"],"sourcesContent":[],"mappings":";;AAgBA;;;;;cAAa"}

View File

@@ -0,0 +1,23 @@
const require_constants = require('./constants-WYhx_umW.js');
require('./isomorphicAtob-Hkpnx2p8.js');
require('./isomorphicBtoa-_pSA92Q9.js');
const require_keys = require('./keys-BI9hmfja.js');
//#region src/apiUrlFromPublishableKey.ts
/**
* Get the correct API url based on the publishable key.
*
* @param publishableKey - The publishable key to parse.
* @returns One of Clerk's API URLs.
*/
const apiUrlFromPublishableKey = (publishableKey) => {
const frontendApi = require_keys.parsePublishableKey(publishableKey)?.frontendApi;
if (frontendApi?.startsWith("clerk.") && require_constants.LEGACY_DEV_INSTANCE_SUFFIXES.some((suffix) => frontendApi?.endsWith(suffix))) return require_constants.PROD_API_URL;
if (require_constants.LOCAL_ENV_SUFFIXES.some((suffix) => frontendApi?.endsWith(suffix))) return require_constants.LOCAL_API_URL;
if (require_constants.STAGING_ENV_SUFFIXES.some((suffix) => frontendApi?.endsWith(suffix))) return require_constants.STAGING_API_URL;
return require_constants.PROD_API_URL;
};
//#endregion
exports.apiUrlFromPublishableKey = apiUrlFromPublishableKey;
//# sourceMappingURL=apiUrlFromPublishableKey.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"apiUrlFromPublishableKey.js","names":["parsePublishableKey","LEGACY_DEV_INSTANCE_SUFFIXES","PROD_API_URL","LOCAL_ENV_SUFFIXES","LOCAL_API_URL","STAGING_ENV_SUFFIXES","STAGING_API_URL"],"sources":["../../src/apiUrlFromPublishableKey.ts"],"sourcesContent":["import {\n LEGACY_DEV_INSTANCE_SUFFIXES,\n LOCAL_API_URL,\n LOCAL_ENV_SUFFIXES,\n PROD_API_URL,\n STAGING_API_URL,\n STAGING_ENV_SUFFIXES,\n} from './constants';\nimport { parsePublishableKey } from './keys';\n\n/**\n * Get the correct API url based on the publishable key.\n *\n * @param publishableKey - The publishable key to parse.\n * @returns One of Clerk's API URLs.\n */\nexport const apiUrlFromPublishableKey = (publishableKey: string) => {\n const frontendApi = parsePublishableKey(publishableKey)?.frontendApi;\n\n if (frontendApi?.startsWith('clerk.') && LEGACY_DEV_INSTANCE_SUFFIXES.some(suffix => frontendApi?.endsWith(suffix))) {\n return PROD_API_URL;\n }\n\n if (LOCAL_ENV_SUFFIXES.some(suffix => frontendApi?.endsWith(suffix))) {\n return LOCAL_API_URL;\n }\n if (STAGING_ENV_SUFFIXES.some(suffix => frontendApi?.endsWith(suffix))) {\n return STAGING_API_URL;\n }\n return PROD_API_URL;\n};\n"],"mappings":";;;;;;;;;;;;AAgBA,MAAa,4BAA4B,mBAA2B;CAClE,MAAM,cAAcA,iCAAoB,eAAe,EAAE;AAEzD,KAAI,aAAa,WAAW,SAAS,IAAIC,+CAA6B,MAAK,WAAU,aAAa,SAAS,OAAO,CAAC,CACjH,QAAOC;AAGT,KAAIC,qCAAmB,MAAK,WAAU,aAAa,SAAS,OAAO,CAAC,CAClE,QAAOC;AAET,KAAIC,uCAAqB,MAAK,WAAU,aAAa,SAAS,OAAO,CAAC,CACpE,QAAOC;AAET,QAAOJ"}

View File

@@ -0,0 +1,23 @@
import { a as LOCAL_API_URL, c as PROD_API_URL, d as STAGING_ENV_SUFFIXES, i as LEGACY_DEV_INSTANCE_SUFFIXES, o as LOCAL_ENV_SUFFIXES, u as STAGING_API_URL } from "./constants-Bta24VLk.mjs";
import "./isomorphicAtob-CoF80qYz.mjs";
import "./isomorphicBtoa-DWmLcIHi.mjs";
import { u as parsePublishableKey } from "./keys-DuxzP8MU.mjs";
//#region src/apiUrlFromPublishableKey.ts
/**
* Get the correct API url based on the publishable key.
*
* @param publishableKey - The publishable key to parse.
* @returns One of Clerk's API URLs.
*/
const 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;
};
//#endregion
export { apiUrlFromPublishableKey };
//# sourceMappingURL=apiUrlFromPublishableKey.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"apiUrlFromPublishableKey.mjs","names":[],"sources":["../../src/apiUrlFromPublishableKey.ts"],"sourcesContent":["import {\n LEGACY_DEV_INSTANCE_SUFFIXES,\n LOCAL_API_URL,\n LOCAL_ENV_SUFFIXES,\n PROD_API_URL,\n STAGING_API_URL,\n STAGING_ENV_SUFFIXES,\n} from './constants';\nimport { parsePublishableKey } from './keys';\n\n/**\n * Get the correct API url based on the publishable key.\n *\n * @param publishableKey - The publishable key to parse.\n * @returns One of Clerk's API URLs.\n */\nexport const apiUrlFromPublishableKey = (publishableKey: string) => {\n const frontendApi = parsePublishableKey(publishableKey)?.frontendApi;\n\n if (frontendApi?.startsWith('clerk.') && LEGACY_DEV_INSTANCE_SUFFIXES.some(suffix => frontendApi?.endsWith(suffix))) {\n return PROD_API_URL;\n }\n\n if (LOCAL_ENV_SUFFIXES.some(suffix => frontendApi?.endsWith(suffix))) {\n return LOCAL_API_URL;\n }\n if (STAGING_ENV_SUFFIXES.some(suffix => frontendApi?.endsWith(suffix))) {\n return STAGING_API_URL;\n }\n return PROD_API_URL;\n};\n"],"mappings":";;;;;;;;;;;;AAgBA,MAAa,4BAA4B,mBAA2B;CAClE,MAAM,cAAc,oBAAoB,eAAe,EAAE;AAEzD,KAAI,aAAa,WAAW,SAAS,IAAI,6BAA6B,MAAK,WAAU,aAAa,SAAS,OAAO,CAAC,CACjH,QAAO;AAGT,KAAI,mBAAmB,MAAK,WAAU,aAAa,SAAS,OAAO,CAAC,CAClE,QAAO;AAET,KAAI,qBAAqB,MAAK,WAAU,aAAa,SAAS,OAAO,CAAC,CACpE,QAAO;AAET,QAAO"}

View File

@@ -0,0 +1,269 @@
//#region src/authorization.ts
const TYPES_TO_OBJECTS = {
strict_mfa: {
afterMinutes: 10,
level: "multi_factor"
},
strict: {
afterMinutes: 10,
level: "second_factor"
},
moderate: {
afterMinutes: 60,
level: "second_factor"
},
lax: {
afterMinutes: 1440,
level: "second_factor"
}
};
const ALLOWED_LEVELS = new Set([
"first_factor",
"second_factor",
"multi_factor"
]);
const ALLOWED_TYPES = new Set([
"strict_mfa",
"strict",
"moderate",
"lax"
]);
const ORG_SCOPES = new Set([
"o",
"org",
"organization"
]);
const USER_SCOPES = new Set(["u", "user"]);
const isValidMaxAge = (maxAge) => typeof maxAge === "number" && maxAge > 0;
const isValidLevel = (level) => ALLOWED_LEVELS.has(level);
const isValidVerificationType = (type) => ALLOWED_TYPES.has(type);
const isValidFactorAge = (x) => typeof x === "number" && Number.isFinite(x) && (x === -1 || x >= 0);
const prefixWithOrg = (value) => value.replace(/^(org:)*/, "org:");
/**
* Checks if a user has the required organization-level authorization.
* If both role and permission are provided, both must match (AND).
*/
const checkOrgAuthorization = (params, options) => {
const { orgId, orgRole, orgPermissions } = options;
const roleAsked = params.role !== void 0;
const permissionAsked = params.permission !== void 0;
if (!roleAsked && !permissionAsked) return "skip";
if (roleAsked && typeof params.role !== "string") return "fail";
if (permissionAsked && typeof params.permission !== "string") return "fail";
if (!orgId) return "fail";
if (roleAsked) {
if (typeof orgRole !== "string" || !orgRole) return "fail";
if (prefixWithOrg(orgRole) !== prefixWithOrg(params.role)) return "fail";
}
if (permissionAsked) {
if (!Array.isArray(orgPermissions)) return "fail";
if (!orgPermissions.includes(prefixWithOrg(params.permission))) return "fail";
}
return "pass";
};
const checkForFeatureOrPlan = (claim, featureOrPlan) => {
const { org: orgFeatures, user: userFeatures } = splitByScope(claim);
const [rawScope, rawId] = featureOrPlan.split(":");
const hasExplicitScope = rawId !== void 0;
const scope = rawScope;
const id = rawId || rawScope;
if (hasExplicitScope && !ORG_SCOPES.has(scope) && !USER_SCOPES.has(scope)) throw new Error(`Invalid scope: ${scope}`);
if (hasExplicitScope) {
if (ORG_SCOPES.has(scope)) return orgFeatures.includes(id);
if (USER_SCOPES.has(scope)) return userFeatures.includes(id);
}
return [...orgFeatures, ...userFeatures].includes(id);
};
/**
* Checks if a user is entitled to the requested feature or plan.
* If both feature and plan are provided, both must match (AND).
*/
const checkBillingAuthorization = (params, options) => {
const { features, plans } = options;
const featureAsked = params.feature !== void 0;
const planAsked = params.plan !== void 0;
if (!featureAsked && !planAsked) return "skip";
if (featureAsked && typeof params.feature !== "string") return "fail";
if (planAsked && typeof params.plan !== "string") return "fail";
if (featureAsked) {
if (typeof features !== "string" || !features) return "fail";
try {
if (!checkForFeatureOrPlan(features, params.feature)) return "fail";
} catch {
return "fail";
}
}
if (planAsked) {
if (typeof plans !== "string" || !plans) return "fail";
try {
if (!checkForFeatureOrPlan(plans, params.plan)) return "fail";
} catch {
return "fail";
}
}
return "pass";
};
const splitByScope = (fea) => {
const org = [];
const user = [];
if (!fea) return {
org,
user
};
const parts = fea.split(",");
for (let i = 0; i < parts.length; i++) {
const part = parts[i].trim();
const colonIndex = part.indexOf(":");
if (colonIndex === -1) throw new Error(`Invalid claim element (missing colon): ${part}`);
const scope = part.slice(0, colonIndex);
const value = part.slice(colonIndex + 1);
if (scope === "o") org.push(value);
else if (scope === "u") user.push(value);
else if (scope === "ou" || scope === "uo") {
org.push(value);
user.push(value);
}
}
return {
org,
user
};
};
const validateReverificationConfig = (config) => {
if (!config) return false;
const convertConfigToObject = (config$1) => {
if (typeof config$1 === "string") return TYPES_TO_OBJECTS[config$1];
return config$1;
};
const isValidStringValue = typeof config === "string" && isValidVerificationType(config);
const isValidObjectValue = typeof config === "object" && isValidLevel(config.level) && isValidMaxAge(config.afterMinutes);
if (isValidStringValue || isValidObjectValue) return convertConfigToObject.bind(null, config);
return false;
};
/**
* Evaluates if the user meets re-verification authentication requirements.
* Handles different verification levels (first factor, second factor, multi-factor).
*/
const checkReverificationAuthorization = (params, { factorVerificationAge }) => {
if (params.reverification === void 0) return "skip";
if (!factorVerificationAge) return "fail";
if (!Array.isArray(factorVerificationAge) || factorVerificationAge.length !== 2 || !isValidFactorAge(factorVerificationAge[0]) || !isValidFactorAge(factorVerificationAge[1])) return "fail";
const getConfig = validateReverificationConfig(params.reverification);
if (!getConfig) return "fail";
const { level, afterMinutes } = getConfig();
const [factor1Age, factor2Age] = factorVerificationAge;
if (factor1Age === -1 && factor2Age === -1) return "fail";
const factor1FreshEnough = factor1Age !== -1 && afterMinutes > factor1Age;
const factor2FreshEnough = factor2Age !== -1 && afterMinutes > factor2Age;
switch (level) {
case "first_factor": return factor1FreshEnough ? "pass" : "fail";
case "second_factor":
if (factor2Age === -1) return factor1FreshEnough ? "pass" : "fail";
if (factor1Age === -1) return factor2FreshEnough ? "pass" : "fail";
return factor2FreshEnough ? "pass" : "fail";
case "multi_factor":
if (factor2Age === -1) return factor1FreshEnough ? "pass" : "fail";
if (factor1Age === -1) return "fail";
return factor1FreshEnough && factor2FreshEnough ? "pass" : "fail";
}
};
const combine = (results) => results.some((r) => r === "pass") && results.every((r) => r === "pass" || r === "skip");
/**
* Creates a function for comprehensive user authorization checks.
* Combines organization, billing, and reverification checks. The returned function
* authorizes only when every requested dimension passes; any requested dimension
* that cannot be satisfied (including missing or malformed session data) denies
* the request. Fails if `userId` is missing.
*/
const createCheckAuthorization = (options) => {
return (params) => {
if (!options.userId) return false;
return combine([
checkOrgAuthorization(params, options),
checkBillingAuthorization(params, options),
checkReverificationAuthorization(params, options)
]);
};
};
/**
* Shared utility function that centralizes auth state resolution logic,
* preventing duplication across different packages.
*
* @internal
*/
const resolveAuthState = ({ authObject: { sessionId, sessionStatus, userId, actor, orgId, orgRole, orgSlug, signOut, getToken, has, sessionClaims }, options: { treatPendingAsSignedOut = true } }) => {
if (sessionId === void 0 && userId === void 0) return {
actor: void 0,
getToken,
has: () => false,
isLoaded: false,
isSignedIn: void 0,
orgId: void 0,
orgRole: void 0,
orgSlug: void 0,
sessionClaims: void 0,
sessionId,
signOut,
userId
};
if (sessionId === null && userId === null) return {
actor: null,
getToken,
has: () => false,
isLoaded: true,
isSignedIn: false,
orgId: null,
orgRole: null,
orgSlug: null,
sessionClaims: null,
sessionId,
signOut,
userId
};
if (treatPendingAsSignedOut && sessionStatus === "pending") return {
actor: null,
getToken,
has: () => false,
isLoaded: true,
isSignedIn: false,
orgId: null,
orgRole: null,
orgSlug: null,
sessionClaims: null,
sessionId: null,
signOut,
userId: null
};
if (!!sessionId && !!sessionClaims && !!userId && !!orgId && !!orgRole) return {
actor: actor || null,
getToken,
has,
isLoaded: true,
isSignedIn: true,
orgId,
orgRole,
orgSlug: orgSlug || null,
sessionClaims,
sessionId,
signOut,
userId
};
if (!!sessionId && !!sessionClaims && !!userId && !orgId) return {
actor: actor || null,
getToken,
has,
isLoaded: true,
isSignedIn: true,
orgId: null,
orgRole: null,
orgSlug: null,
sessionClaims,
sessionId,
signOut,
userId
};
};
//#endregion
export { validateReverificationConfig as i, resolveAuthState as n, splitByScope as r, createCheckAuthorization as t };
//# sourceMappingURL=authorization-Bayl2soX.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,293 @@
//#region src/authorization.ts
const TYPES_TO_OBJECTS = {
strict_mfa: {
afterMinutes: 10,
level: "multi_factor"
},
strict: {
afterMinutes: 10,
level: "second_factor"
},
moderate: {
afterMinutes: 60,
level: "second_factor"
},
lax: {
afterMinutes: 1440,
level: "second_factor"
}
};
const ALLOWED_LEVELS = new Set([
"first_factor",
"second_factor",
"multi_factor"
]);
const ALLOWED_TYPES = new Set([
"strict_mfa",
"strict",
"moderate",
"lax"
]);
const ORG_SCOPES = new Set([
"o",
"org",
"organization"
]);
const USER_SCOPES = new Set(["u", "user"]);
const isValidMaxAge = (maxAge) => typeof maxAge === "number" && maxAge > 0;
const isValidLevel = (level) => ALLOWED_LEVELS.has(level);
const isValidVerificationType = (type) => ALLOWED_TYPES.has(type);
const isValidFactorAge = (x) => typeof x === "number" && Number.isFinite(x) && (x === -1 || x >= 0);
const prefixWithOrg = (value) => value.replace(/^(org:)*/, "org:");
/**
* Checks if a user has the required organization-level authorization.
* If both role and permission are provided, both must match (AND).
*/
const checkOrgAuthorization = (params, options) => {
const { orgId, orgRole, orgPermissions } = options;
const roleAsked = params.role !== void 0;
const permissionAsked = params.permission !== void 0;
if (!roleAsked && !permissionAsked) return "skip";
if (roleAsked && typeof params.role !== "string") return "fail";
if (permissionAsked && typeof params.permission !== "string") return "fail";
if (!orgId) return "fail";
if (roleAsked) {
if (typeof orgRole !== "string" || !orgRole) return "fail";
if (prefixWithOrg(orgRole) !== prefixWithOrg(params.role)) return "fail";
}
if (permissionAsked) {
if (!Array.isArray(orgPermissions)) return "fail";
if (!orgPermissions.includes(prefixWithOrg(params.permission))) return "fail";
}
return "pass";
};
const checkForFeatureOrPlan = (claim, featureOrPlan) => {
const { org: orgFeatures, user: userFeatures } = splitByScope(claim);
const [rawScope, rawId] = featureOrPlan.split(":");
const hasExplicitScope = rawId !== void 0;
const scope = rawScope;
const id = rawId || rawScope;
if (hasExplicitScope && !ORG_SCOPES.has(scope) && !USER_SCOPES.has(scope)) throw new Error(`Invalid scope: ${scope}`);
if (hasExplicitScope) {
if (ORG_SCOPES.has(scope)) return orgFeatures.includes(id);
if (USER_SCOPES.has(scope)) return userFeatures.includes(id);
}
return [...orgFeatures, ...userFeatures].includes(id);
};
/**
* Checks if a user is entitled to the requested feature or plan.
* If both feature and plan are provided, both must match (AND).
*/
const checkBillingAuthorization = (params, options) => {
const { features, plans } = options;
const featureAsked = params.feature !== void 0;
const planAsked = params.plan !== void 0;
if (!featureAsked && !planAsked) return "skip";
if (featureAsked && typeof params.feature !== "string") return "fail";
if (planAsked && typeof params.plan !== "string") return "fail";
if (featureAsked) {
if (typeof features !== "string" || !features) return "fail";
try {
if (!checkForFeatureOrPlan(features, params.feature)) return "fail";
} catch {
return "fail";
}
}
if (planAsked) {
if (typeof plans !== "string" || !plans) return "fail";
try {
if (!checkForFeatureOrPlan(plans, params.plan)) return "fail";
} catch {
return "fail";
}
}
return "pass";
};
const splitByScope = (fea) => {
const org = [];
const user = [];
if (!fea) return {
org,
user
};
const parts = fea.split(",");
for (let i = 0; i < parts.length; i++) {
const part = parts[i].trim();
const colonIndex = part.indexOf(":");
if (colonIndex === -1) throw new Error(`Invalid claim element (missing colon): ${part}`);
const scope = part.slice(0, colonIndex);
const value = part.slice(colonIndex + 1);
if (scope === "o") org.push(value);
else if (scope === "u") user.push(value);
else if (scope === "ou" || scope === "uo") {
org.push(value);
user.push(value);
}
}
return {
org,
user
};
};
const validateReverificationConfig = (config) => {
if (!config) return false;
const convertConfigToObject = (config$1) => {
if (typeof config$1 === "string") return TYPES_TO_OBJECTS[config$1];
return config$1;
};
const isValidStringValue = typeof config === "string" && isValidVerificationType(config);
const isValidObjectValue = typeof config === "object" && isValidLevel(config.level) && isValidMaxAge(config.afterMinutes);
if (isValidStringValue || isValidObjectValue) return convertConfigToObject.bind(null, config);
return false;
};
/**
* Evaluates if the user meets re-verification authentication requirements.
* Handles different verification levels (first factor, second factor, multi-factor).
*/
const checkReverificationAuthorization = (params, { factorVerificationAge }) => {
if (params.reverification === void 0) return "skip";
if (!factorVerificationAge) return "fail";
if (!Array.isArray(factorVerificationAge) || factorVerificationAge.length !== 2 || !isValidFactorAge(factorVerificationAge[0]) || !isValidFactorAge(factorVerificationAge[1])) return "fail";
const getConfig = validateReverificationConfig(params.reverification);
if (!getConfig) return "fail";
const { level, afterMinutes } = getConfig();
const [factor1Age, factor2Age] = factorVerificationAge;
if (factor1Age === -1 && factor2Age === -1) return "fail";
const factor1FreshEnough = factor1Age !== -1 && afterMinutes > factor1Age;
const factor2FreshEnough = factor2Age !== -1 && afterMinutes > factor2Age;
switch (level) {
case "first_factor": return factor1FreshEnough ? "pass" : "fail";
case "second_factor":
if (factor2Age === -1) return factor1FreshEnough ? "pass" : "fail";
if (factor1Age === -1) return factor2FreshEnough ? "pass" : "fail";
return factor2FreshEnough ? "pass" : "fail";
case "multi_factor":
if (factor2Age === -1) return factor1FreshEnough ? "pass" : "fail";
if (factor1Age === -1) return "fail";
return factor1FreshEnough && factor2FreshEnough ? "pass" : "fail";
}
};
const combine = (results) => results.some((r) => r === "pass") && results.every((r) => r === "pass" || r === "skip");
/**
* Creates a function for comprehensive user authorization checks.
* Combines organization, billing, and reverification checks. The returned function
* authorizes only when every requested dimension passes; any requested dimension
* that cannot be satisfied (including missing or malformed session data) denies
* the request. Fails if `userId` is missing.
*/
const createCheckAuthorization = (options) => {
return (params) => {
if (!options.userId) return false;
return combine([
checkOrgAuthorization(params, options),
checkBillingAuthorization(params, options),
checkReverificationAuthorization(params, options)
]);
};
};
/**
* Shared utility function that centralizes auth state resolution logic,
* preventing duplication across different packages.
*
* @internal
*/
const resolveAuthState = ({ authObject: { sessionId, sessionStatus, userId, actor, orgId, orgRole, orgSlug, signOut, getToken, has, sessionClaims }, options: { treatPendingAsSignedOut = true } }) => {
if (sessionId === void 0 && userId === void 0) return {
actor: void 0,
getToken,
has: () => false,
isLoaded: false,
isSignedIn: void 0,
orgId: void 0,
orgRole: void 0,
orgSlug: void 0,
sessionClaims: void 0,
sessionId,
signOut,
userId
};
if (sessionId === null && userId === null) return {
actor: null,
getToken,
has: () => false,
isLoaded: true,
isSignedIn: false,
orgId: null,
orgRole: null,
orgSlug: null,
sessionClaims: null,
sessionId,
signOut,
userId
};
if (treatPendingAsSignedOut && sessionStatus === "pending") return {
actor: null,
getToken,
has: () => false,
isLoaded: true,
isSignedIn: false,
orgId: null,
orgRole: null,
orgSlug: null,
sessionClaims: null,
sessionId: null,
signOut,
userId: null
};
if (!!sessionId && !!sessionClaims && !!userId && !!orgId && !!orgRole) return {
actor: actor || null,
getToken,
has,
isLoaded: true,
isSignedIn: true,
orgId,
orgRole,
orgSlug: orgSlug || null,
sessionClaims,
sessionId,
signOut,
userId
};
if (!!sessionId && !!sessionClaims && !!userId && !orgId) return {
actor: actor || null,
getToken,
has,
isLoaded: true,
isSignedIn: true,
orgId: null,
orgRole: null,
orgSlug: null,
sessionClaims,
sessionId,
signOut,
userId
};
};
//#endregion
Object.defineProperty(exports, 'createCheckAuthorization', {
enumerable: true,
get: function () {
return createCheckAuthorization;
}
});
Object.defineProperty(exports, 'resolveAuthState', {
enumerable: true,
get: function () {
return resolveAuthState;
}
});
Object.defineProperty(exports, 'splitByScope', {
enumerable: true,
get: function () {
return splitByScope;
}
});
Object.defineProperty(exports, 'validateReverificationConfig', {
enumerable: true,
get: function () {
return validateReverificationConfig;
}
});
//# sourceMappingURL=authorization-Dj1hHJtO.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,33 @@
//#region src/authorization-errors.ts
const REVERIFICATION_REASON = "reverification-error";
const reverificationError = (missingConfig) => ({ clerk_error: {
type: "forbidden",
reason: REVERIFICATION_REASON,
metadata: { reverification: missingConfig }
} });
const reverificationErrorResponse = (...args) => new Response(JSON.stringify(reverificationError(...args)), { status: 403 });
const isReverificationHint = (result) => {
return result && typeof result === "object" && "clerk_error" in result && result.clerk_error?.type === "forbidden" && result.clerk_error?.reason === REVERIFICATION_REASON;
};
//#endregion
Object.defineProperty(exports, 'isReverificationHint', {
enumerable: true,
get: function () {
return isReverificationHint;
}
});
Object.defineProperty(exports, 'reverificationError', {
enumerable: true,
get: function () {
return reverificationError;
}
});
Object.defineProperty(exports, 'reverificationErrorResponse', {
enumerable: true,
get: function () {
return reverificationErrorResponse;
}
});
//# sourceMappingURL=authorization-errors-B7aH39AU.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"authorization-errors-B7aH39AU.js","names":[],"sources":["../../src/authorization-errors.ts"],"sourcesContent":["import type { ReverificationConfig } from './types';\n\ntype ClerkError<T> = {\n clerk_error: T;\n};\n\nconst REVERIFICATION_REASON = 'reverification-error';\n\ntype ReverificationError<M extends { metadata?: any } = { metadata: unknown }> = ClerkError<\n {\n type: 'forbidden';\n reason: typeof REVERIFICATION_REASON;\n } & M\n>;\n\nconst reverificationError = <MC extends ReverificationConfig>(\n missingConfig?: MC,\n): ReverificationError<{\n metadata?: {\n reverification?: MC;\n };\n}> => ({\n clerk_error: {\n type: 'forbidden',\n reason: REVERIFICATION_REASON,\n metadata: {\n reverification: missingConfig,\n },\n },\n});\n\nconst reverificationErrorResponse = (...args: Parameters<typeof reverificationError>) =>\n new Response(JSON.stringify(reverificationError(...args)), {\n status: 403,\n });\n\nconst isReverificationHint = (result: any): result is ReturnType<typeof reverificationError> => {\n return (\n result &&\n typeof result === 'object' &&\n 'clerk_error' in result &&\n result.clerk_error?.type === 'forbidden' &&\n result.clerk_error?.reason === REVERIFICATION_REASON\n );\n};\n\nexport { isReverificationHint, reverificationError, reverificationErrorResponse };\n"],"mappings":";;AAMA,MAAM,wBAAwB;AAS9B,MAAM,uBACJ,mBAKK,EACL,aAAa;CACX,MAAM;CACN,QAAQ;CACR,UAAU,EACR,gBAAgB,eACjB;CACF,EACF;AAED,MAAM,+BAA+B,GAAG,SACtC,IAAI,SAAS,KAAK,UAAU,oBAAoB,GAAG,KAAK,CAAC,EAAE,EACzD,QAAQ,KACT,CAAC;AAEJ,MAAM,wBAAwB,WAAkE;AAC9F,QACE,UACA,OAAO,WAAW,YAClB,iBAAiB,UACjB,OAAO,aAAa,SAAS,eAC7B,OAAO,aAAa,WAAW"}

View File

@@ -0,0 +1,15 @@
//#region src/authorization-errors.ts
const REVERIFICATION_REASON = "reverification-error";
const reverificationError = (missingConfig) => ({ clerk_error: {
type: "forbidden",
reason: REVERIFICATION_REASON,
metadata: { reverification: missingConfig }
} });
const reverificationErrorResponse = (...args) => new Response(JSON.stringify(reverificationError(...args)), { status: 403 });
const isReverificationHint = (result) => {
return result && typeof result === "object" && "clerk_error" in result && result.clerk_error?.type === "forbidden" && result.clerk_error?.reason === REVERIFICATION_REASON;
};
//#endregion
export { reverificationError as n, reverificationErrorResponse as r, isReverificationHint as t };
//# sourceMappingURL=authorization-errors-CBHAr6Ld.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"authorization-errors-CBHAr6Ld.mjs","names":[],"sources":["../../src/authorization-errors.ts"],"sourcesContent":["import type { ReverificationConfig } from './types';\n\ntype ClerkError<T> = {\n clerk_error: T;\n};\n\nconst REVERIFICATION_REASON = 'reverification-error';\n\ntype ReverificationError<M extends { metadata?: any } = { metadata: unknown }> = ClerkError<\n {\n type: 'forbidden';\n reason: typeof REVERIFICATION_REASON;\n } & M\n>;\n\nconst reverificationError = <MC extends ReverificationConfig>(\n missingConfig?: MC,\n): ReverificationError<{\n metadata?: {\n reverification?: MC;\n };\n}> => ({\n clerk_error: {\n type: 'forbidden',\n reason: REVERIFICATION_REASON,\n metadata: {\n reverification: missingConfig,\n },\n },\n});\n\nconst reverificationErrorResponse = (...args: Parameters<typeof reverificationError>) =>\n new Response(JSON.stringify(reverificationError(...args)), {\n status: 403,\n });\n\nconst isReverificationHint = (result: any): result is ReturnType<typeof reverificationError> => {\n return (\n result &&\n typeof result === 'object' &&\n 'clerk_error' in result &&\n result.clerk_error?.type === 'forbidden' &&\n result.clerk_error?.reason === REVERIFICATION_REASON\n );\n};\n\nexport { isReverificationHint, reverificationError, reverificationErrorResponse };\n"],"mappings":";AAMA,MAAM,wBAAwB;AAS9B,MAAM,uBACJ,mBAKK,EACL,aAAa;CACX,MAAM;CACN,QAAQ;CACR,UAAU,EACR,gBAAgB,eACjB;CACF,EACF;AAED,MAAM,+BAA+B,GAAG,SACtC,IAAI,SAAS,KAAK,UAAU,oBAAoB,GAAG,KAAK,CAAC,EAAE,EACzD,QAAQ,KACT,CAAC;AAEJ,MAAM,wBAAwB,WAAkE;AAC9F,QACE,UACA,OAAO,WAAW,YAClB,iBAAiB,UACjB,OAAO,aAAa,SAAS,eAC7B,OAAO,aAAa,WAAW"}

View File

@@ -0,0 +1,26 @@
import { Hs as ReverificationConfig } from "./index-B4_BYgBX.mjs";
import "./moduleManager-BsmFyRrH.mjs";
//#region src/authorization-errors.d.ts
type ClerkError<T> = {
clerk_error: T;
};
declare const REVERIFICATION_REASON = "reverification-error";
type ReverificationError<M extends {
metadata?: any;
} = {
metadata: unknown;
}> = ClerkError<{
type: 'forbidden';
reason: typeof REVERIFICATION_REASON;
} & M>;
declare const reverificationError: <MC extends ReverificationConfig>(missingConfig?: MC) => ReverificationError<{
metadata?: {
reverification?: MC;
};
}>;
declare const reverificationErrorResponse: (...args: Parameters<typeof reverificationError>) => Response;
declare const isReverificationHint: (result: any) => result is ReturnType<typeof reverificationError>;
//#endregion
export { isReverificationHint, reverificationError, reverificationErrorResponse };
//# sourceMappingURL=authorization-errors.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"authorization-errors.d.mts","names":[],"sources":["../../src/authorization-errors.ts"],"sourcesContent":[],"mappings":";;;;KAEK;eACU;;AAHqC,cAM9C,qBAAA,GAHU,sBAAA;AAAA,KAKX,mBAFC,CAAA,UAAqB;EAEtB,QAAA,CAAA,EAAA,GAAA;CAGc,GAAA;EACb,QAAA,EAAA,OAAA;CAJ2E,CAAA,GAAA,UAAA,CAAA;EAAU,IAAA,EAAA,WAAA;EAOrF,MAAA,EAAA,OAJa,qBAkBjB;CAdsC,GAHlC,CAGkC,CAAA;cAAlC,mBACY,EAAA,CAAA,WADsB,oBACtB,CAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,GACf,mBADe,CAAA;EAGG,QAAA,CAAA,EAAA;IAFlB,cAAA,CAAA,EAEkB,EAFlB;EAAmB,CAAA;AAAA,CAAA,CAAA;cAchB,2BAA0D,EAAA,CAAA,GAAA,IAAA,EAAlB,UAAkB,CAAA,OAAA,mBAAA,CAAA,EAAA,GAAoB,QAApB;cAK1D,oBALwC,EAAA,CAAA,MAAA,EAAA,GAAA,EAAA,GAAA,MAAA,IAKQ,UALR,CAAA,OAK0B,mBAL1B,CAAA"}

View File

@@ -0,0 +1,26 @@
import { Hs as ReverificationConfig } from "./index-gwPUTb24.js";
import "./moduleManager-WB15hU3T.js";
//#region src/authorization-errors.d.ts
type ClerkError<T> = {
clerk_error: T;
};
declare const REVERIFICATION_REASON = "reverification-error";
type ReverificationError<M extends {
metadata?: any;
} = {
metadata: unknown;
}> = ClerkError<{
type: 'forbidden';
reason: typeof REVERIFICATION_REASON;
} & M>;
declare const reverificationError: <MC extends ReverificationConfig>(missingConfig?: MC) => ReverificationError<{
metadata?: {
reverification?: MC;
};
}>;
declare const reverificationErrorResponse: (...args: Parameters<typeof reverificationError>) => Response;
declare const isReverificationHint: (result: any) => result is ReturnType<typeof reverificationError>;
//#endregion
export { isReverificationHint, reverificationError, reverificationErrorResponse };
//# sourceMappingURL=authorization-errors.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"authorization-errors.d.ts","names":[],"sources":["../../src/authorization-errors.ts"],"sourcesContent":[],"mappings":";;;;KAEK;eACU;;AAHqC,cAM9C,qBAAA,GAHU,sBAAA;AAAA,KAKX,mBAFC,CAAA,UAAqB;EAEtB,QAAA,CAAA,EAAA,GAAA;CAGc,GAAA;EACb,QAAA,EAAA,OAAA;CAJ2E,CAAA,GAAA,UAAA,CAAA;EAAU,IAAA,EAAA,WAAA;EAOrF,MAAA,EAAA,OAJa,qBAkBjB;CAdsC,GAHlC,CAGkC,CAAA;cAAlC,mBACY,EAAA,CAAA,WADsB,oBACtB,CAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,GACf,mBADe,CAAA;EAGG,QAAA,CAAA,EAAA;IAFlB,cAAA,CAAA,EAEkB,EAFlB;EAAmB,CAAA;AAAA,CAAA,CAAA;cAchB,2BAA0D,EAAA,CAAA,GAAA,IAAA,EAAlB,UAAkB,CAAA,OAAA,mBAAA,CAAA,EAAA,GAAoB,QAApB;cAK1D,oBALwC,EAAA,CAAA,MAAA,EAAA,GAAA,EAAA,GAAA,MAAA,IAKQ,UALR,CAAA,OAK0B,mBAL1B,CAAA"}

View File

@@ -0,0 +1,5 @@
const require_authorization_errors = require('./authorization-errors-B7aH39AU.js');
exports.isReverificationHint = require_authorization_errors.isReverificationHint;
exports.reverificationError = require_authorization_errors.reverificationError;
exports.reverificationErrorResponse = require_authorization_errors.reverificationErrorResponse;

View File

@@ -0,0 +1,3 @@
import { n as reverificationError, r as reverificationErrorResponse, t as isReverificationHint } from "./authorization-errors-CBHAr6Ld.mjs";
export { isReverificationHint, reverificationError, reverificationErrorResponse };

View File

@@ -0,0 +1,73 @@
import { $a as SessionStatusClaim, Gs as SessionVerificationLevel, Hs as ReverificationConfig, Mo as GetToken, Po as PendingSessionOptions, Pt as SignOut, Qa as JwtPayload, Us as SessionVerificationAfterMinutes, g as UseAuthReturn, jo as CheckAuthorizationWithCustomPermissions, no as OrganizationCustomRoleKey, qa as ActClaim, to as OrganizationCustomPermissionKey } from "./index-B4_BYgBX.mjs";
import "./moduleManager-BsmFyRrH.mjs";
//#region src/authorization.d.ts
type AuthorizationOptions = {
userId: string | null | undefined;
orgId: string | null | undefined;
orgRole: string | null | undefined;
orgPermissions: string[] | null | undefined;
factorVerificationAge: [number, number] | null;
features: string | null | undefined;
plans: string | null | undefined;
};
declare const splitByScope: (fea: string | null | undefined) => {
org: string[];
user: string[];
};
declare const validateReverificationConfig: (config: ReverificationConfig | undefined | null) => false | (() => {
level: SessionVerificationLevel;
afterMinutes: SessionVerificationAfterMinutes;
});
/**
* Creates a function for comprehensive user authorization checks.
* Combines organization, billing, and reverification checks. The returned function
* authorizes only when every requested dimension passes; any requested dimension
* that cannot be satisfied (including missing or malformed session data) denies
* the request. Fails if `userId` is missing.
*/
declare const createCheckAuthorization: (options: AuthorizationOptions) => CheckAuthorizationWithCustomPermissions;
type AuthStateOptions = {
authObject: {
userId?: string | null;
sessionId?: string | null;
sessionStatus?: SessionStatusClaim | null;
sessionClaims?: JwtPayload | null;
actor?: ActClaim | null;
orgId?: string | null;
orgRole?: OrganizationCustomRoleKey | null;
orgSlug?: string | null;
orgPermissions?: OrganizationCustomPermissionKey[] | null;
getToken: GetToken;
signOut: SignOut;
has: (params: Parameters<CheckAuthorizationWithCustomPermissions>[0]) => boolean;
};
options: PendingSessionOptions;
};
/**
* Shared utility function that centralizes auth state resolution logic,
* preventing duplication across different packages.
*
* @internal
*/
declare const resolveAuthState: ({
authObject: {
sessionId,
sessionStatus,
userId,
actor,
orgId,
orgRole,
orgSlug,
signOut,
getToken,
has,
sessionClaims
},
options: {
treatPendingAsSignedOut
}
}: AuthStateOptions) => UseAuthReturn | undefined;
//#endregion
export { createCheckAuthorization, resolveAuthState, splitByScope, validateReverificationConfig };
//# sourceMappingURL=authorization.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"authorization.d.mts","names":[],"sources":["../../src/authorization.ts"],"sourcesContent":[],"mappings":";;;;KAiBK,oBAAA;;;EAAA,OAAA,EAAA,MAAA,GAAA,IAAA,GAAoB,SAAA;EA6LnB,cAAA,EA6BL,MAAA,EAAA,GAAA,IAAA,GAAA,SAAA;EAEK,qBAAA,EAAA,CAAA,MAAA,EAqBL,MAAA,CAAA,GAAA,IAAA;EArB6C,QAAA,EAAA,MAAA,GAAA,IAAA,GAAA,SAAA;;;cA/BxC;EAyIA,GAAA,EAAA,MAAA,EAAA;EAcD,IAAA,EAAA,MAAA,EAAA;CAIe;cA5Hd,4BA6Hc,EAAA,CAAA,MAAA,EA7H0B,oBA6H1B,GAAA,SAAA,GAAA,IAAA,EAAA,GAAA,KAAA,GAAA,CAAA,GAAA,GAAA;EACR,KAAA,0BAAA;EAEE,YAAA,iCAAA;CAEO,CAAA;;;;;;;AAKW;cA7B1B,wBAsCoB,EAAA,CAAA,OAAA,EAtCiB,oBAsCjB,EAAA,GAtCwC,uCAsCxC;KAxBrB,gBAAA,GAwBqB;EAAA,UAAA,EAAA;IAAA,MAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAAA,SAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAAA,aAAA,CAAA,EApBN,kBAoBM,GAAA,IAAA;IAAA,aAAA,CAAA,EAnBN,UAmBM,GAAA,IAAA;IAAA,KAAA,CAAA,EAlBd,QAkBc,GAAA,IAAA;IAAA,KAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAAA,OAAA,CAAA,EAhBZ,yBAgBY,GAAA,IAAA;IAAA,OAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAAA,cAAA,CAAA,EAdL,+BAcK,EAAA,GAAA,IAAA;IAevB,QAAA,EA5BW,QA4BX;IAAmB,OAAA,EA3BT,OA2BS;IAAa,GAAA,EAAA,CAAA,MAAA,EA1BjB,UA0BiB,CA1BN,uCA0BM,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,OAAA;;WAxBxB;;;;;;;;cASL;;;;;;;;;;;;;;;;;GAeH,qBAAmB"}

View File

@@ -0,0 +1,73 @@
import { $a as SessionStatusClaim, Gs as SessionVerificationLevel, Hs as ReverificationConfig, Mo as GetToken, Po as PendingSessionOptions, Pt as SignOut, Qa as JwtPayload, Us as SessionVerificationAfterMinutes, g as UseAuthReturn, jo as CheckAuthorizationWithCustomPermissions, no as OrganizationCustomRoleKey, qa as ActClaim, to as OrganizationCustomPermissionKey } from "./index-gwPUTb24.js";
import "./moduleManager-WB15hU3T.js";
//#region src/authorization.d.ts
type AuthorizationOptions = {
userId: string | null | undefined;
orgId: string | null | undefined;
orgRole: string | null | undefined;
orgPermissions: string[] | null | undefined;
factorVerificationAge: [number, number] | null;
features: string | null | undefined;
plans: string | null | undefined;
};
declare const splitByScope: (fea: string | null | undefined) => {
org: string[];
user: string[];
};
declare const validateReverificationConfig: (config: ReverificationConfig | undefined | null) => false | (() => {
level: SessionVerificationLevel;
afterMinutes: SessionVerificationAfterMinutes;
});
/**
* Creates a function for comprehensive user authorization checks.
* Combines organization, billing, and reverification checks. The returned function
* authorizes only when every requested dimension passes; any requested dimension
* that cannot be satisfied (including missing or malformed session data) denies
* the request. Fails if `userId` is missing.
*/
declare const createCheckAuthorization: (options: AuthorizationOptions) => CheckAuthorizationWithCustomPermissions;
type AuthStateOptions = {
authObject: {
userId?: string | null;
sessionId?: string | null;
sessionStatus?: SessionStatusClaim | null;
sessionClaims?: JwtPayload | null;
actor?: ActClaim | null;
orgId?: string | null;
orgRole?: OrganizationCustomRoleKey | null;
orgSlug?: string | null;
orgPermissions?: OrganizationCustomPermissionKey[] | null;
getToken: GetToken;
signOut: SignOut;
has: (params: Parameters<CheckAuthorizationWithCustomPermissions>[0]) => boolean;
};
options: PendingSessionOptions;
};
/**
* Shared utility function that centralizes auth state resolution logic,
* preventing duplication across different packages.
*
* @internal
*/
declare const resolveAuthState: ({
authObject: {
sessionId,
sessionStatus,
userId,
actor,
orgId,
orgRole,
orgSlug,
signOut,
getToken,
has,
sessionClaims
},
options: {
treatPendingAsSignedOut
}
}: AuthStateOptions) => UseAuthReturn | undefined;
//#endregion
export { createCheckAuthorization, resolveAuthState, splitByScope, validateReverificationConfig };
//# sourceMappingURL=authorization.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"authorization.d.ts","names":[],"sources":["../../src/authorization.ts"],"sourcesContent":[],"mappings":";;;;KAiBK,oBAAA;;;EAAA,OAAA,EAAA,MAAA,GAAA,IAAA,GAAoB,SAAA;EA6LnB,cAAA,EA6BL,MAAA,EAAA,GAAA,IAAA,GAAA,SAAA;EAEK,qBAAA,EAAA,CAAA,MAAA,EAqBL,MAAA,CAAA,GAAA,IAAA;EArB6C,QAAA,EAAA,MAAA,GAAA,IAAA,GAAA,SAAA;;;cA/BxC;EAyIA,GAAA,EAAA,MAAA,EAAA;EAcD,IAAA,EAAA,MAAA,EAAA;CAIe;cA5Hd,4BA6Hc,EAAA,CAAA,MAAA,EA7H0B,oBA6H1B,GAAA,SAAA,GAAA,IAAA,EAAA,GAAA,KAAA,GAAA,CAAA,GAAA,GAAA;EACR,KAAA,0BAAA;EAEE,YAAA,iCAAA;CAEO,CAAA;;;;;;;AAKW;cA7B1B,wBAsCoB,EAAA,CAAA,OAAA,EAtCiB,oBAsCjB,EAAA,GAtCwC,uCAsCxC;KAxBrB,gBAAA,GAwBqB;EAAA,UAAA,EAAA;IAAA,MAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAAA,SAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAAA,aAAA,CAAA,EApBN,kBAoBM,GAAA,IAAA;IAAA,aAAA,CAAA,EAnBN,UAmBM,GAAA,IAAA;IAAA,KAAA,CAAA,EAlBd,QAkBc,GAAA,IAAA;IAAA,KAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAAA,OAAA,CAAA,EAhBZ,yBAgBY,GAAA,IAAA;IAAA,OAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAAA,cAAA,CAAA,EAdL,+BAcK,EAAA,GAAA,IAAA;IAevB,QAAA,EA5BW,QA4BX;IAAmB,OAAA,EA3BT,OA2BS;IAAa,GAAA,EAAA,CAAA,MAAA,EA1BjB,UA0BiB,CA1BN,uCA0BM,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,OAAA;;WAxBxB;;;;;;;;cASL;;;;;;;;;;;;;;;;;GAeH,qBAAmB"}

View File

@@ -0,0 +1,6 @@
const require_authorization = require('./authorization-Dj1hHJtO.js');
exports.createCheckAuthorization = require_authorization.createCheckAuthorization;
exports.resolveAuthState = require_authorization.resolveAuthState;
exports.splitByScope = require_authorization.splitByScope;
exports.validateReverificationConfig = require_authorization.validateReverificationConfig;

View File

@@ -0,0 +1,3 @@
import { i as validateReverificationConfig, n as resolveAuthState, r as splitByScope, t as createCheckAuthorization } from "./authorization-Bayl2soX.mjs";
export { createCheckAuthorization, resolveAuthState, splitByScope, validateReverificationConfig };

View File

@@ -0,0 +1,81 @@
//#region src/browser.ts
/**
* Checks if the window object is defined. You can also use this to check if something is happening on the client side.
*
* @returns
*/
function inBrowser() {
return typeof window !== "undefined";
}
const botAgentRegex = new RegExp([
"bot",
"spider",
"crawl",
"APIs-Google",
"AdsBot",
"Googlebot",
"mediapartners",
"Google Favicon",
"FeedFetcher",
"Google-Read-Aloud",
"DuplexWeb-Google",
"googleweblight",
"bing",
"yandex",
"baidu",
"duckduck",
"yahoo",
"ecosia",
"ia_archiver",
"facebook",
"instagram",
"pinterest",
"reddit",
"slack",
"twitter",
"whatsapp",
"youtube",
"semrush"
].join("|"), "i");
/**
* Checks if the user agent is a bot.
*
* @param userAgent - Any user agent string
* @returns
*/
function userAgentIsRobot(userAgent) {
return !userAgent ? false : botAgentRegex.test(userAgent);
}
/**
* Checks if the current environment is a browser and the user agent is not a bot.
*
* @returns
*/
function isValidBrowser() {
const navigator = inBrowser() ? window?.navigator : null;
if (!navigator) return false;
return !userAgentIsRobot(navigator?.userAgent) && !navigator?.webdriver;
}
/**
* Checks if the current environment is a browser and if the navigator is online.
*
* @returns
*/
function isBrowserOnline() {
const navigator = inBrowser() ? window?.navigator : null;
if (!navigator) return false;
if (typeof navigator.onLine !== "boolean") return true;
return !!navigator.onLine;
}
/**
* Runs `isBrowserOnline` and `isValidBrowser` to check if the current environment is a valid browser and if the navigator is online.
*
* @returns
*/
function isValidBrowserOnline() {
return isBrowserOnline() && isValidBrowser();
}
//#endregion
export { userAgentIsRobot as a, isValidBrowserOnline as i, isBrowserOnline as n, isValidBrowser as r, inBrowser as t };
//# sourceMappingURL=browser-CMFCxUv7.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"browser-CMFCxUv7.mjs","names":[],"sources":["../../src/browser.ts"],"sourcesContent":["/**\n * Checks if the window object is defined. You can also use this to check if something is happening on the client side.\n *\n * @returns\n */\nexport function inBrowser(): boolean {\n return typeof window !== 'undefined';\n}\n\nconst botAgents = [\n 'bot',\n 'spider',\n 'crawl',\n 'APIs-Google',\n 'AdsBot',\n 'Googlebot',\n 'mediapartners',\n 'Google Favicon',\n 'FeedFetcher',\n 'Google-Read-Aloud',\n 'DuplexWeb-Google',\n 'googleweblight',\n 'bing',\n 'yandex',\n 'baidu',\n 'duckduck',\n 'yahoo',\n 'ecosia',\n 'ia_archiver',\n 'facebook',\n 'instagram',\n 'pinterest',\n 'reddit',\n 'slack',\n 'twitter',\n 'whatsapp',\n 'youtube',\n 'semrush',\n];\nconst botAgentRegex = new RegExp(botAgents.join('|'), 'i');\n\n/**\n * Checks if the user agent is a bot.\n *\n * @param userAgent - Any user agent string\n * @returns\n */\nexport function userAgentIsRobot(userAgent: string): boolean {\n return !userAgent ? false : botAgentRegex.test(userAgent);\n}\n\n/**\n * Checks if the current environment is a browser and the user agent is not a bot.\n *\n * @returns\n */\nexport function isValidBrowser(): boolean {\n const navigator = inBrowser() ? window?.navigator : null;\n if (!navigator) {\n return false;\n }\n return !userAgentIsRobot(navigator?.userAgent) && !navigator?.webdriver;\n}\n\n/**\n * Checks if the current environment is a browser and if the navigator is online.\n *\n * @returns\n */\nexport function isBrowserOnline(): boolean {\n const navigator = inBrowser() ? window?.navigator : null;\n if (!navigator) {\n return false;\n }\n\n // Some environments (e.g. React Native) define a Navigator object but do not\n // implement navigator.onLine as a boolean. Default to online in those cases.\n if (typeof navigator.onLine !== 'boolean') {\n return true;\n }\n\n // navigator.onLine is the standard API and is reliable for detecting\n // complete disconnection (airplane mode, WiFi off, etc.).\n // The experimental navigator.connection API (rtt/downlink) was previously\n // used as a secondary signal, but it reports zero values in headless browsers\n // and CI environments even when connected, causing false offline detection.\n return !!navigator.onLine;\n}\n\n/**\n * Runs `isBrowserOnline` and `isValidBrowser` to check if the current environment is a valid browser and if the navigator is online.\n *\n * @returns\n */\nexport function isValidBrowserOnline(): boolean {\n return isBrowserOnline() && isValidBrowser();\n}\n"],"mappings":";;;;;;AAKA,SAAgB,YAAqB;AACnC,QAAO,OAAO,WAAW;;AAiC3B,MAAM,gBAAgB,IAAI,OA9BR;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC0C,KAAK,IAAI,EAAE,IAAI;;;;;;;AAQ1D,SAAgB,iBAAiB,WAA4B;AAC3D,QAAO,CAAC,YAAY,QAAQ,cAAc,KAAK,UAAU;;;;;;;AAQ3D,SAAgB,iBAA0B;CACxC,MAAM,YAAY,WAAW,GAAG,QAAQ,YAAY;AACpD,KAAI,CAAC,UACH,QAAO;AAET,QAAO,CAAC,iBAAiB,WAAW,UAAU,IAAI,CAAC,WAAW;;;;;;;AAQhE,SAAgB,kBAA2B;CACzC,MAAM,YAAY,WAAW,GAAG,QAAQ,YAAY;AACpD,KAAI,CAAC,UACH,QAAO;AAKT,KAAI,OAAO,UAAU,WAAW,UAC9B,QAAO;AAQT,QAAO,CAAC,CAAC,UAAU;;;;;;;AAQrB,SAAgB,uBAAgC;AAC9C,QAAO,iBAAiB,IAAI,gBAAgB"}

View File

@@ -0,0 +1,111 @@
//#region src/browser.ts
/**
* Checks if the window object is defined. You can also use this to check if something is happening on the client side.
*
* @returns
*/
function inBrowser() {
return typeof window !== "undefined";
}
const botAgentRegex = new RegExp([
"bot",
"spider",
"crawl",
"APIs-Google",
"AdsBot",
"Googlebot",
"mediapartners",
"Google Favicon",
"FeedFetcher",
"Google-Read-Aloud",
"DuplexWeb-Google",
"googleweblight",
"bing",
"yandex",
"baidu",
"duckduck",
"yahoo",
"ecosia",
"ia_archiver",
"facebook",
"instagram",
"pinterest",
"reddit",
"slack",
"twitter",
"whatsapp",
"youtube",
"semrush"
].join("|"), "i");
/**
* Checks if the user agent is a bot.
*
* @param userAgent - Any user agent string
* @returns
*/
function userAgentIsRobot(userAgent) {
return !userAgent ? false : botAgentRegex.test(userAgent);
}
/**
* Checks if the current environment is a browser and the user agent is not a bot.
*
* @returns
*/
function isValidBrowser() {
const navigator = inBrowser() ? window?.navigator : null;
if (!navigator) return false;
return !userAgentIsRobot(navigator?.userAgent) && !navigator?.webdriver;
}
/**
* Checks if the current environment is a browser and if the navigator is online.
*
* @returns
*/
function isBrowserOnline() {
const navigator = inBrowser() ? window?.navigator : null;
if (!navigator) return false;
if (typeof navigator.onLine !== "boolean") return true;
return !!navigator.onLine;
}
/**
* Runs `isBrowserOnline` and `isValidBrowser` to check if the current environment is a valid browser and if the navigator is online.
*
* @returns
*/
function isValidBrowserOnline() {
return isBrowserOnline() && isValidBrowser();
}
//#endregion
Object.defineProperty(exports, 'inBrowser', {
enumerable: true,
get: function () {
return inBrowser;
}
});
Object.defineProperty(exports, 'isBrowserOnline', {
enumerable: true,
get: function () {
return isBrowserOnline;
}
});
Object.defineProperty(exports, 'isValidBrowser', {
enumerable: true,
get: function () {
return isValidBrowser;
}
});
Object.defineProperty(exports, 'isValidBrowserOnline', {
enumerable: true,
get: function () {
return isValidBrowserOnline;
}
});
Object.defineProperty(exports, 'userAgentIsRobot', {
enumerable: true,
get: function () {
return userAgentIsRobot;
}
});
//# sourceMappingURL=browser-CaHqvEp1.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"browser-CaHqvEp1.js","names":[],"sources":["../../src/browser.ts"],"sourcesContent":["/**\n * Checks if the window object is defined. You can also use this to check if something is happening on the client side.\n *\n * @returns\n */\nexport function inBrowser(): boolean {\n return typeof window !== 'undefined';\n}\n\nconst botAgents = [\n 'bot',\n 'spider',\n 'crawl',\n 'APIs-Google',\n 'AdsBot',\n 'Googlebot',\n 'mediapartners',\n 'Google Favicon',\n 'FeedFetcher',\n 'Google-Read-Aloud',\n 'DuplexWeb-Google',\n 'googleweblight',\n 'bing',\n 'yandex',\n 'baidu',\n 'duckduck',\n 'yahoo',\n 'ecosia',\n 'ia_archiver',\n 'facebook',\n 'instagram',\n 'pinterest',\n 'reddit',\n 'slack',\n 'twitter',\n 'whatsapp',\n 'youtube',\n 'semrush',\n];\nconst botAgentRegex = new RegExp(botAgents.join('|'), 'i');\n\n/**\n * Checks if the user agent is a bot.\n *\n * @param userAgent - Any user agent string\n * @returns\n */\nexport function userAgentIsRobot(userAgent: string): boolean {\n return !userAgent ? false : botAgentRegex.test(userAgent);\n}\n\n/**\n * Checks if the current environment is a browser and the user agent is not a bot.\n *\n * @returns\n */\nexport function isValidBrowser(): boolean {\n const navigator = inBrowser() ? window?.navigator : null;\n if (!navigator) {\n return false;\n }\n return !userAgentIsRobot(navigator?.userAgent) && !navigator?.webdriver;\n}\n\n/**\n * Checks if the current environment is a browser and if the navigator is online.\n *\n * @returns\n */\nexport function isBrowserOnline(): boolean {\n const navigator = inBrowser() ? window?.navigator : null;\n if (!navigator) {\n return false;\n }\n\n // Some environments (e.g. React Native) define a Navigator object but do not\n // implement navigator.onLine as a boolean. Default to online in those cases.\n if (typeof navigator.onLine !== 'boolean') {\n return true;\n }\n\n // navigator.onLine is the standard API and is reliable for detecting\n // complete disconnection (airplane mode, WiFi off, etc.).\n // The experimental navigator.connection API (rtt/downlink) was previously\n // used as a secondary signal, but it reports zero values in headless browsers\n // and CI environments even when connected, causing false offline detection.\n return !!navigator.onLine;\n}\n\n/**\n * Runs `isBrowserOnline` and `isValidBrowser` to check if the current environment is a valid browser and if the navigator is online.\n *\n * @returns\n */\nexport function isValidBrowserOnline(): boolean {\n return isBrowserOnline() && isValidBrowser();\n}\n"],"mappings":";;;;;;;AAKA,SAAgB,YAAqB;AACnC,QAAO,OAAO,WAAW;;AAiC3B,MAAM,gBAAgB,IAAI,OA9BR;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC0C,KAAK,IAAI,EAAE,IAAI;;;;;;;AAQ1D,SAAgB,iBAAiB,WAA4B;AAC3D,QAAO,CAAC,YAAY,QAAQ,cAAc,KAAK,UAAU;;;;;;;AAQ3D,SAAgB,iBAA0B;CACxC,MAAM,YAAY,WAAW,GAAG,QAAQ,YAAY;AACpD,KAAI,CAAC,UACH,QAAO;AAET,QAAO,CAAC,iBAAiB,WAAW,UAAU,IAAI,CAAC,WAAW;;;;;;;AAQhE,SAAgB,kBAA2B;CACzC,MAAM,YAAY,WAAW,GAAG,QAAQ,YAAY;AACpD,KAAI,CAAC,UACH,QAAO;AAKT,KAAI,OAAO,UAAU,WAAW,UAC9B,QAAO;AAQT,QAAO,CAAC,CAAC,UAAU;;;;;;;AAQrB,SAAgB,uBAAgC;AAC9C,QAAO,iBAAiB,IAAI,gBAAgB"}

35
node_modules/@clerk/shared/dist/runtime/browser.d.mts generated vendored Normal file
View File

@@ -0,0 +1,35 @@
//#region src/browser.d.ts
/**
* Checks if the window object is defined. You can also use this to check if something is happening on the client side.
*
* @returns
*/
declare function inBrowser(): boolean;
/**
* Checks if the user agent is a bot.
*
* @param userAgent - Any user agent string
* @returns
*/
declare function userAgentIsRobot(userAgent: string): boolean;
/**
* Checks if the current environment is a browser and the user agent is not a bot.
*
* @returns
*/
declare function isValidBrowser(): boolean;
/**
* Checks if the current environment is a browser and if the navigator is online.
*
* @returns
*/
declare function isBrowserOnline(): boolean;
/**
* Runs `isBrowserOnline` and `isValidBrowser` to check if the current environment is a valid browser and if the navigator is online.
*
* @returns
*/
declare function isValidBrowserOnline(): boolean;
//#endregion
export { inBrowser, isBrowserOnline, isValidBrowser, isValidBrowserOnline, userAgentIsRobot };
//# sourceMappingURL=browser.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"browser.d.mts","names":[],"sources":["../../src/browser.ts"],"sourcesContent":[],"mappings":";;AAKA;AA0CA;AASA;AAaA;AAyBgB,iBAzFA,SAAA,CAAA,CAyFoB,EAAA,OAAA;;;;;;;iBA/CpB,gBAAA;;;;;;iBASA,cAAA,CAAA;;;;;;iBAaA,eAAA,CAAA;;;;;;iBAyBA,oBAAA,CAAA"}

35
node_modules/@clerk/shared/dist/runtime/browser.d.ts generated vendored Normal file
View File

@@ -0,0 +1,35 @@
//#region src/browser.d.ts
/**
* Checks if the window object is defined. You can also use this to check if something is happening on the client side.
*
* @returns
*/
declare function inBrowser(): boolean;
/**
* Checks if the user agent is a bot.
*
* @param userAgent - Any user agent string
* @returns
*/
declare function userAgentIsRobot(userAgent: string): boolean;
/**
* Checks if the current environment is a browser and the user agent is not a bot.
*
* @returns
*/
declare function isValidBrowser(): boolean;
/**
* Checks if the current environment is a browser and if the navigator is online.
*
* @returns
*/
declare function isBrowserOnline(): boolean;
/**
* Runs `isBrowserOnline` and `isValidBrowser` to check if the current environment is a valid browser and if the navigator is online.
*
* @returns
*/
declare function isValidBrowserOnline(): boolean;
//#endregion
export { inBrowser, isBrowserOnline, isValidBrowser, isValidBrowserOnline, userAgentIsRobot };
//# sourceMappingURL=browser.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"browser.d.ts","names":[],"sources":["../../src/browser.ts"],"sourcesContent":[],"mappings":";;AAKA;AA0CA;AASA;AAaA;AAyBgB,iBAzFA,SAAA,CAAA,CAyFoB,EAAA,OAAA;;;;;;;iBA/CpB,gBAAA;;;;;;iBASA,cAAA,CAAA;;;;;;iBAaA,eAAA,CAAA;;;;;;iBAyBA,oBAAA,CAAA"}

7
node_modules/@clerk/shared/dist/runtime/browser.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
const require_browser = require('./browser-CaHqvEp1.js');
exports.inBrowser = require_browser.inBrowser;
exports.isBrowserOnline = require_browser.isBrowserOnline;
exports.isValidBrowser = require_browser.isValidBrowser;
exports.isValidBrowserOnline = require_browser.isValidBrowserOnline;
exports.userAgentIsRobot = require_browser.userAgentIsRobot;

3
node_modules/@clerk/shared/dist/runtime/browser.mjs generated vendored Normal file
View File

@@ -0,0 +1,3 @@
import { a as userAgentIsRobot, i as isValidBrowserOnline, n as isBrowserOnline, r as isValidBrowser, t as inBrowser } from "./browser-CMFCxUv7.mjs";
export { inBrowser, isBrowserOnline, isValidBrowser, isValidBrowserOnline, userAgentIsRobot };

View File

@@ -0,0 +1,8 @@
//#region src/buildAccountsBaseUrl.d.ts
/**
* Builds a full origin string pointing to the Account Portal for the given frontend API.
*/
declare function buildAccountsBaseUrl(frontendApi?: string): string;
//#endregion
export { buildAccountsBaseUrl };
//# sourceMappingURL=buildAccountsBaseUrl.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"buildAccountsBaseUrl.d.mts","names":[],"sources":["../../src/buildAccountsBaseUrl.ts"],"sourcesContent":[],"mappings":";;AAGA;;iBAAgB,oBAAA"}

View File

@@ -0,0 +1,8 @@
//#region src/buildAccountsBaseUrl.d.ts
/**
* Builds a full origin string pointing to the Account Portal for the given frontend API.
*/
declare function buildAccountsBaseUrl(frontendApi?: string): string;
//#endregion
export { buildAccountsBaseUrl };
//# sourceMappingURL=buildAccountsBaseUrl.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"buildAccountsBaseUrl.d.ts","names":[],"sources":["../../src/buildAccountsBaseUrl.ts"],"sourcesContent":[],"mappings":";;AAGA;;iBAAgB,oBAAA"}

View File

@@ -0,0 +1,13 @@
//#region src/buildAccountsBaseUrl.ts
/**
* Builds a full origin string pointing to the Account Portal for the given frontend API.
*/
function buildAccountsBaseUrl(frontendApi) {
if (!frontendApi) return "";
return `https://${frontendApi.replace(/clerk\.accountsstage\./, "accountsstage.").replace(/clerk\.accounts\.|clerk\./, "accounts.")}`;
}
//#endregion
exports.buildAccountsBaseUrl = buildAccountsBaseUrl;
//# sourceMappingURL=buildAccountsBaseUrl.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"buildAccountsBaseUrl.js","names":[],"sources":["../../src/buildAccountsBaseUrl.ts"],"sourcesContent":["/**\n * Builds a full origin string pointing to the Account Portal for the given frontend API.\n */\nexport function buildAccountsBaseUrl(frontendApi?: string): string {\n if (!frontendApi) {\n return '';\n }\n\n // convert url from FAPI to accounts for Kima and legacy (prod & dev) instances\n const accountsBaseUrl = frontendApi\n // staging accounts\n .replace(/clerk\\.accountsstage\\./, 'accountsstage.')\n .replace(/clerk\\.accounts\\.|clerk\\./, 'accounts.');\n return `https://${accountsBaseUrl}`;\n}\n"],"mappings":";;;;;AAGA,SAAgB,qBAAqB,aAA8B;AACjE,KAAI,CAAC,YACH,QAAO;AAQT,QAAO,WAJiB,YAErB,QAAQ,0BAA0B,iBAAiB,CACnD,QAAQ,6BAA6B,YAAY"}

View File

@@ -0,0 +1,12 @@
//#region src/buildAccountsBaseUrl.ts
/**
* Builds a full origin string pointing to the Account Portal for the given frontend API.
*/
function buildAccountsBaseUrl(frontendApi) {
if (!frontendApi) return "";
return `https://${frontendApi.replace(/clerk\.accountsstage\./, "accountsstage.").replace(/clerk\.accounts\.|clerk\./, "accounts.")}`;
}
//#endregion
export { buildAccountsBaseUrl };
//# sourceMappingURL=buildAccountsBaseUrl.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"buildAccountsBaseUrl.mjs","names":[],"sources":["../../src/buildAccountsBaseUrl.ts"],"sourcesContent":["/**\n * Builds a full origin string pointing to the Account Portal for the given frontend API.\n */\nexport function buildAccountsBaseUrl(frontendApi?: string): string {\n if (!frontendApi) {\n return '';\n }\n\n // convert url from FAPI to accounts for Kima and legacy (prod & dev) instances\n const accountsBaseUrl = frontendApi\n // staging accounts\n .replace(/clerk\\.accountsstage\\./, 'accountsstage.')\n .replace(/clerk\\.accounts\\.|clerk\\./, 'accounts.');\n return `https://${accountsBaseUrl}`;\n}\n"],"mappings":";;;;AAGA,SAAgB,qBAAqB,aAA8B;AACjE,KAAI,CAAC,YACH,QAAO;AAQT,QAAO,WAJiB,YAErB,QAAQ,0BAA0B,iBAAiB,CACnD,QAAQ,6BAA6B,YAAY"}

View File

@@ -0,0 +1,30 @@
//#region rolldown:runtime
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
key = keys[i];
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: ((k) => from[k]).bind(null, key),
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
//#endregion
Object.defineProperty(exports, '__toESM', {
enumerable: true,
get: function () {
return __toESM;
}
});

View File

@@ -0,0 +1,22 @@
import { W as ClerkEventPayload } from "./index-B4_BYgBX.mjs";
import "./moduleManager-BsmFyRrH.mjs";
//#region src/clerkEventBus.d.ts
declare const clerkEvents: {
Status: "status";
};
declare const createClerkEventBus: () => {
on: <Event extends "status">(event: Event, handler: (payload: ClerkEventPayload[Event]) => void, opts?: {
notify?: boolean;
}) => void;
prioritizedOn: <Event extends "status">(event: Event, handler: (payload: ClerkEventPayload[Event]) => void) => void;
emit: <Event extends "status">(event: Event, payload: ClerkEventPayload[Event]) => void;
off: <Event extends "status">(event: Event, handler?: ((payload: ClerkEventPayload[Event]) => void) | undefined) => void;
prioritizedOff: <Event extends "status">(event: Event, handler?: ((payload: ClerkEventPayload[Event]) => void) | undefined) => void;
internal: {
retrieveListeners: <Event extends "status">(event: Event) => Array<(...args: any[]) => void>;
};
};
//#endregion
export { clerkEvents, createClerkEventBus };
//# sourceMappingURL=clerkEventBus.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"clerkEventBus.d.mts","names":[],"sources":["../../src/clerkEventBus.ts"],"sourcesContent":[],"mappings":";;;;cAGa;;;AAAA,cAIA,mBAFsC,EAAA,GAAA,GAAA;EAEtC,EAAA,EAAA,CAAA,cAAA,QAEZ,CAAA,CAAA,KAAA,OAAA,EAAA,OAAA,EAAA,CAAA,OAAA,mBAAA,MAAA,CAAA,EAAA,GAAA,IAAA,EAAA,KAAA,EAAA"}

View File

@@ -0,0 +1,22 @@
import { W as ClerkEventPayload } from "./index-gwPUTb24.js";
import "./moduleManager-WB15hU3T.js";
//#region src/clerkEventBus.d.ts
declare const clerkEvents: {
Status: "status";
};
declare const createClerkEventBus: () => {
on: <Event extends "status">(event: Event, handler: (payload: ClerkEventPayload[Event]) => void, opts?: {
notify?: boolean;
}) => void;
prioritizedOn: <Event extends "status">(event: Event, handler: (payload: ClerkEventPayload[Event]) => void) => void;
emit: <Event extends "status">(event: Event, payload: ClerkEventPayload[Event]) => void;
off: <Event extends "status">(event: Event, handler?: ((payload: ClerkEventPayload[Event]) => void) | undefined) => void;
prioritizedOff: <Event extends "status">(event: Event, handler?: ((payload: ClerkEventPayload[Event]) => void) | undefined) => void;
internal: {
retrieveListeners: <Event extends "status">(event: Event) => Array<(...args: any[]) => void>;
};
};
//#endregion
export { clerkEvents, createClerkEventBus };
//# sourceMappingURL=clerkEventBus.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"clerkEventBus.d.ts","names":[],"sources":["../../src/clerkEventBus.ts"],"sourcesContent":[],"mappings":";;;;cAGa;;;AAAA,cAIA,mBAFsC,EAAA,GAAA,GAAA;EAEtC,EAAA,EAAA,CAAA,cAAA,QAEZ,CAAA,CAAA,KAAA,OAAA,EAAA,OAAA,EAAA,CAAA,OAAA,mBAAA,MAAA,CAAA,EAAA,GAAA,IAAA,EAAA,KAAA,EAAA"}

View File

@@ -0,0 +1,12 @@
const require_eventBus = require('./eventBus-mLhN9dkg.js');
//#region src/clerkEventBus.ts
const clerkEvents = { Status: "status" };
const createClerkEventBus = () => {
return require_eventBus.createEventBus();
};
//#endregion
exports.clerkEvents = clerkEvents;
exports.createClerkEventBus = createClerkEventBus;
//# sourceMappingURL=clerkEventBus.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"clerkEventBus.js","names":["createEventBus"],"sources":["../../src/clerkEventBus.ts"],"sourcesContent":["import { createEventBus } from './eventBus';\nimport type { ClerkEventPayload } from './types';\n\nexport const clerkEvents = {\n Status: 'status',\n} satisfies Record<string, keyof ClerkEventPayload>;\n\nexport const createClerkEventBus = () => {\n return createEventBus<ClerkEventPayload>();\n};\n"],"mappings":";;;AAGA,MAAa,cAAc,EACzB,QAAQ,UACT;AAED,MAAa,4BAA4B;AACvC,QAAOA,iCAAmC"}

View File

@@ -0,0 +1,11 @@
import { t as createEventBus } from "./eventBus-TFTcHo0F.mjs";
//#region src/clerkEventBus.ts
const clerkEvents = { Status: "status" };
const createClerkEventBus = () => {
return createEventBus();
};
//#endregion
export { clerkEvents, createClerkEventBus };
//# sourceMappingURL=clerkEventBus.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"clerkEventBus.mjs","names":[],"sources":["../../src/clerkEventBus.ts"],"sourcesContent":["import { createEventBus } from './eventBus';\nimport type { ClerkEventPayload } from './types';\n\nexport const clerkEvents = {\n Status: 'status',\n} satisfies Record<string, keyof ClerkEventPayload>;\n\nexport const createClerkEventBus = () => {\n return createEventBus<ClerkEventPayload>();\n};\n"],"mappings":";;;AAGA,MAAa,cAAc,EACzB,QAAQ,UACT;AAED,MAAa,4BAA4B;AACvC,QAAO,gBAAmC"}

View File

@@ -0,0 +1,138 @@
//#region src/errors/createErrorTypeGuard.ts
/**
* Creates a type guard function for any error class.
* The returned function can be called as a standalone function or as a method on an error object.
*
* @example
* ```typescript
* class MyError extends Error {}
* const isMyError = createErrorTypeGuard(MyError);
*
* // As a standalone function
* if (isMyError(error)) { ... }
*
* // As a method (when attached to error object)
* if (error.isMyError()) { ... }
* ```
*/
function createErrorTypeGuard(ErrorClass) {
function typeGuard(error) {
const target = error ?? this;
if (!target) throw new TypeError(`${ErrorClass.kind || ErrorClass.name} type guard requires an error object`);
if (ErrorClass.kind && typeof target === "object" && target !== null && "constructor" in target) {
if (target.constructor?.kind === ErrorClass.kind) return true;
}
return target instanceof ErrorClass;
}
return typeGuard;
}
//#endregion
//#region src/errors/clerkError.ts
var ClerkError = class ClerkError extends Error {
static kind = "ClerkError";
clerkError = true;
code;
longMessage;
docsUrl;
cause;
get name() {
return this.constructor.name;
}
constructor(opts) {
super(new.target.formatMessage(new.target.kind, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });
Object.setPrototypeOf(this, ClerkError.prototype);
this.code = opts.code;
this.docsUrl = opts.docsUrl;
this.longMessage = opts.longMessage;
this.cause = opts.cause;
}
toString() {
return `[${this.name}]\nMessage:${this.message}`;
}
static formatMessage(name, msg, code, docsUrl) {
const prefix = "Clerk:";
const regex = new RegExp(prefix.replace(" ", "\\s*"), "i");
msg = msg.replace(regex, "");
msg = `${prefix} ${msg.trim()}\n\n(code="${code}")\n\n`;
if (docsUrl) msg += `\n\nDocs: ${docsUrl}`;
return msg;
}
};
/**
* Type guard to check if a value is a ClerkError instance.
*/
function isClerkError(val) {
return createErrorTypeGuard(ClerkError)(val) || !!val && typeof val === "object" && "clerkError" in val && val.clerkError === true;
}
//#endregion
//#region src/errors/clerkRuntimeError.ts
/**
* Custom error class for representing Clerk runtime errors.
*
* @class ClerkRuntimeError
*
* @example
* throw new ClerkRuntimeError('An error occurred', { code: 'password_invalid' });
*/
var ClerkRuntimeError = class ClerkRuntimeError extends ClerkError {
static kind = "ClerkRuntimeError";
/**
* @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.
*/
clerkRuntimeError = true;
constructor(message, options) {
super({
...options,
message
});
Object.setPrototypeOf(this, ClerkRuntimeError.prototype);
}
};
/**
* Type guard to check if an error is a ClerkRuntimeError.
* Can be called as a standalone function or as a method on an error object.
*
* @example
* // As a standalone function
* if (isClerkRuntimeError(error)) { ... }
*
* // As a method (when attached to error object)
* if (error.isClerkRuntimeError()) { ... }
*/
const isClerkRuntimeError = createErrorTypeGuard(ClerkRuntimeError);
//#endregion
Object.defineProperty(exports, 'ClerkError', {
enumerable: true,
get: function () {
return ClerkError;
}
});
Object.defineProperty(exports, 'ClerkRuntimeError', {
enumerable: true,
get: function () {
return ClerkRuntimeError;
}
});
Object.defineProperty(exports, 'createErrorTypeGuard', {
enumerable: true,
get: function () {
return createErrorTypeGuard;
}
});
Object.defineProperty(exports, 'isClerkError', {
enumerable: true,
get: function () {
return isClerkError;
}
});
Object.defineProperty(exports, 'isClerkRuntimeError', {
enumerable: true,
get: function () {
return isClerkRuntimeError;
}
});
//# sourceMappingURL=clerkRuntimeError-CaS4sM5w.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,108 @@
//#region src/errors/createErrorTypeGuard.ts
/**
* Creates a type guard function for any error class.
* The returned function can be called as a standalone function or as a method on an error object.
*
* @example
* ```typescript
* class MyError extends Error {}
* const isMyError = createErrorTypeGuard(MyError);
*
* // As a standalone function
* if (isMyError(error)) { ... }
*
* // As a method (when attached to error object)
* if (error.isMyError()) { ... }
* ```
*/
function createErrorTypeGuard(ErrorClass) {
function typeGuard(error) {
const target = error ?? this;
if (!target) throw new TypeError(`${ErrorClass.kind || ErrorClass.name} type guard requires an error object`);
if (ErrorClass.kind && typeof target === "object" && target !== null && "constructor" in target) {
if (target.constructor?.kind === ErrorClass.kind) return true;
}
return target instanceof ErrorClass;
}
return typeGuard;
}
//#endregion
//#region src/errors/clerkError.ts
var ClerkError = class ClerkError extends Error {
static kind = "ClerkError";
clerkError = true;
code;
longMessage;
docsUrl;
cause;
get name() {
return this.constructor.name;
}
constructor(opts) {
super(new.target.formatMessage(new.target.kind, opts.message, opts.code, opts.docsUrl), { cause: opts.cause });
Object.setPrototypeOf(this, ClerkError.prototype);
this.code = opts.code;
this.docsUrl = opts.docsUrl;
this.longMessage = opts.longMessage;
this.cause = opts.cause;
}
toString() {
return `[${this.name}]\nMessage:${this.message}`;
}
static formatMessage(name, msg, code, docsUrl) {
const prefix = "Clerk:";
const regex = new RegExp(prefix.replace(" ", "\\s*"), "i");
msg = msg.replace(regex, "");
msg = `${prefix} ${msg.trim()}\n\n(code="${code}")\n\n`;
if (docsUrl) msg += `\n\nDocs: ${docsUrl}`;
return msg;
}
};
/**
* Type guard to check if a value is a ClerkError instance.
*/
function isClerkError(val) {
return createErrorTypeGuard(ClerkError)(val) || !!val && typeof val === "object" && "clerkError" in val && val.clerkError === true;
}
//#endregion
//#region src/errors/clerkRuntimeError.ts
/**
* Custom error class for representing Clerk runtime errors.
*
* @class ClerkRuntimeError
*
* @example
* throw new ClerkRuntimeError('An error occurred', { code: 'password_invalid' });
*/
var ClerkRuntimeError = class ClerkRuntimeError extends ClerkError {
static kind = "ClerkRuntimeError";
/**
* @deprecated Use `clerkError` property instead. This property is maintained for backward compatibility.
*/
clerkRuntimeError = true;
constructor(message, options) {
super({
...options,
message
});
Object.setPrototypeOf(this, ClerkRuntimeError.prototype);
}
};
/**
* Type guard to check if an error is a ClerkRuntimeError.
* Can be called as a standalone function or as a method on an error object.
*
* @example
* // As a standalone function
* if (isClerkRuntimeError(error)) { ... }
*
* // As a method (when attached to error object)
* if (error.isClerkRuntimeError()) { ... }
*/
const isClerkRuntimeError = createErrorTypeGuard(ClerkRuntimeError);
//#endregion
export { createErrorTypeGuard as a, isClerkError as i, isClerkRuntimeError as n, ClerkError as r, ClerkRuntimeError as t };
//# sourceMappingURL=clerkRuntimeError-DqAmLuLY.mjs.map

File diff suppressed because one or more lines are too long

18
node_modules/@clerk/shared/dist/runtime/color.d.mts generated vendored Normal file
View File

@@ -0,0 +1,18 @@
import { Ea as RgbaColor, Oa as TransparentColor, va as Color, wa as HslaColor } from "./index-B4_BYgBX.mjs";
import "./moduleManager-BsmFyRrH.mjs";
//#region src/color.d.ts
declare const isValidHexString: (s: string) => boolean;
declare const isValidRgbaString: (s: string) => boolean;
declare const isValidHslaString: (s: string) => boolean;
declare const isRGBColor: (c: Color) => c is RgbaColor;
declare const isHSLColor: (c: Color) => c is HslaColor;
declare const isTransparent: (c: Color) => c is TransparentColor;
declare const hasAlpha: (color: Color) => boolean;
declare const stringToHslaColor: (value: string) => HslaColor | null;
declare const stringToSameTypeColor: (value: string) => Color;
declare const colorToSameTypeString: (color: Color) => string | TransparentColor;
declare const hexStringToRgbaColor: (hex: string) => RgbaColor;
//#endregion
export { colorToSameTypeString, hasAlpha, hexStringToRgbaColor, isHSLColor, isRGBColor, isTransparent, isValidHexString, isValidHslaString, isValidRgbaString, stringToHslaColor, stringToSameTypeColor };
//# sourceMappingURL=color.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"color.d.mts","names":[],"sources":["../../src/color.ts"],"sourcesContent":[],"mappings":";;;;cAUa;cAIA;cAIA;AARA,cAYA,UAVZ,EAAA,CAAA,CAAA,EAU6B,KAV7B,EAAA,GAAA,CAAA,IAU0C,SAV1C;AAEY,cAYA,UAVZ,EAAA,CAAA,CAAA,EAU6B,KAV7B,EAAA,GAAA,CAAA,IAU0C,SAV1C;AAEY,cAYA,aAVZ,EAAA,CAAA,CAAA,EAUgC,KAVhC,EAAA,GAAA,CAAA,IAU6C,gBAV7C;AAEY,cAYA,QAVZ,EAF6B,CAAA,KAAa,EAYX,KAZW,EAAA,GAE1C,OAAA;AAEY,cAeA,iBAf8B,EAAA,CAAA,KAAA,EAE1C,MAAA,EAAA,GAaiD,SAbjD,GAAA,IAAA;AAEY,cA+BA,qBA/BiC,EAAA,CAAA,KAAA,EAAA,MAE7C,EAAA,GA6BqD,KA7BrD;AAEY,cA+CA,qBA/CwB,EAAA,CAAA,KAAA,EA+CQ,KA/CR,EAAA,GAAA,MAAA,GA+CyB,gBA/CzB;AAOxB,cAwDA,oBAxDqC,EAAA,CAAA,GAAS,EAAA,MAAA,EAAA,GAwDR,SAxDQ"}

18
node_modules/@clerk/shared/dist/runtime/color.d.ts generated vendored Normal file
View File

@@ -0,0 +1,18 @@
import { Ea as RgbaColor, Oa as TransparentColor, va as Color, wa as HslaColor } from "./index-gwPUTb24.js";
import "./moduleManager-WB15hU3T.js";
//#region src/color.d.ts
declare const isValidHexString: (s: string) => boolean;
declare const isValidRgbaString: (s: string) => boolean;
declare const isValidHslaString: (s: string) => boolean;
declare const isRGBColor: (c: Color) => c is RgbaColor;
declare const isHSLColor: (c: Color) => c is HslaColor;
declare const isTransparent: (c: Color) => c is TransparentColor;
declare const hasAlpha: (color: Color) => boolean;
declare const stringToHslaColor: (value: string) => HslaColor | null;
declare const stringToSameTypeColor: (value: string) => Color;
declare const colorToSameTypeString: (color: Color) => string | TransparentColor;
declare const hexStringToRgbaColor: (hex: string) => RgbaColor;
//#endregion
export { colorToSameTypeString, hasAlpha, hexStringToRgbaColor, isHSLColor, isRGBColor, isTransparent, isValidHexString, isValidHslaString, isValidRgbaString, stringToHslaColor, stringToSameTypeColor };
//# sourceMappingURL=color.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"color.d.ts","names":[],"sources":["../../src/color.ts"],"sourcesContent":[],"mappings":";;;;cAUa;cAIA;cAIA;AARA,cAYA,UAVZ,EAAA,CAAA,CAAA,EAU6B,KAV7B,EAAA,GAAA,CAAA,IAU0C,SAV1C;AAEY,cAYA,UAVZ,EAAA,CAAA,CAAA,EAU6B,KAV7B,EAAA,GAAA,CAAA,IAU0C,SAV1C;AAEY,cAYA,aAVZ,EAAA,CAAA,CAAA,EAUgC,KAVhC,EAAA,GAAA,CAAA,IAU6C,gBAV7C;AAEY,cAYA,QAZiB,EAAA,CAAA,KAAa,EAYX,KAZW,EAE1C,GAAA,OAAA;AAEY,cAeA,iBAf8B,EAAA,CAAA,KAE1C,EAAA,MAAA,EAAA,GAaiD,SAbjD,GAAA,IAAA;AAEY,cA+BA,qBA/BiC,EAAA,CAAA,KAAA,EAAA,MAE7C,EAAA,GA6BqD,KA7BrD;AAEY,cA+CA,qBA/CwB,EAAA,CAAA,KAAA,EA+CQ,KA/CR,EAAA,GAAA,MAAA,GA+CyB,gBA/CzB;AAOxB,cAwDA,oBAxDqC,EAAA,CAAA,GAAS,EAAA,MAAA,EAAA,GAwDR,SAxDQ"}

142
node_modules/@clerk/shared/dist/runtime/color.js generated vendored Normal file
View File

@@ -0,0 +1,142 @@
//#region src/color.ts
const IS_HEX_COLOR_REGEX = /^#?([A-F0-9]{6}|[A-F0-9]{3})$/i;
const IS_RGB_COLOR_REGEX = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/i;
const IS_RGBA_COLOR_REGEX = /^rgba\((\d+),\s*(\d+),\s*(\d+)(,\s*\d+(\.\d+)?)\)$/i;
const IS_HSL_COLOR_REGEX = /^hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)$/i;
const IS_HSLA_COLOR_REGEX = /^hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%(,\s*\d+(\.\d+)?)*\)$/i;
const isValidHexString = (s) => {
return !!s.match(IS_HEX_COLOR_REGEX);
};
const isValidRgbaString = (s) => {
return !!(s.match(IS_RGB_COLOR_REGEX) || s.match(IS_RGBA_COLOR_REGEX));
};
const isValidHslaString = (s) => {
return !!s.match(IS_HSL_COLOR_REGEX) || !!s.match(IS_HSLA_COLOR_REGEX);
};
const isRGBColor = (c) => {
return typeof c !== "string" && "r" in c;
};
const isHSLColor = (c) => {
return typeof c !== "string" && "h" in c;
};
const isTransparent = (c) => {
return c === "transparent";
};
const hasAlpha = (color) => {
return typeof color !== "string" && color.a != void 0 && color.a < 1;
};
const CLEAN_HSLA_REGEX = /[hsla()]/g;
const CLEAN_RGBA_REGEX = /[rgba()]/g;
const stringToHslaColor = (value) => {
if (value === "transparent") return {
h: 0,
s: 0,
l: 0,
a: 0
};
if (isValidHexString(value)) return hexStringToHslaColor(value);
if (isValidHslaString(value)) return parseHslaString(value);
if (isValidRgbaString(value)) return rgbaStringToHslaColor(value);
return null;
};
const stringToSameTypeColor = (value) => {
value = value.trim();
if (isValidHexString(value)) return value.startsWith("#") ? value : `#${value}`;
if (isValidRgbaString(value)) return parseRgbaString(value);
if (isValidHslaString(value)) return parseHslaString(value);
if (isTransparent(value)) return value;
return "";
};
const colorToSameTypeString = (color) => {
if (typeof color === "string" && (isValidHexString(color) || isTransparent(color))) return color;
if (isRGBColor(color)) return rgbaColorToRgbaString(color);
if (isHSLColor(color)) return hslaColorToHslaString(color);
return "";
};
const hexStringToRgbaColor = (hex) => {
hex = hex.replace("#", "");
return {
r: parseInt(hex.substring(0, 2), 16),
g: parseInt(hex.substring(2, 4), 16),
b: parseInt(hex.substring(4, 6), 16)
};
};
const rgbaColorToRgbaString = (color) => {
const { a, b, g, r } = color;
return color.a === 0 ? "transparent" : color.a != void 0 ? `rgba(${r},${g},${b},${a})` : `rgb(${r},${g},${b})`;
};
const hslaColorToHslaString = (color) => {
const { h, s, l, a } = color;
const sPerc = Math.round(s * 100);
const lPerc = Math.round(l * 100);
return color.a === 0 ? "transparent" : color.a != void 0 ? `hsla(${h},${sPerc}%,${lPerc}%,${a})` : `hsl(${h},${sPerc}%,${lPerc}%)`;
};
const hexStringToHslaColor = (hex) => {
return rgbaStringToHslaColor(colorToSameTypeString(hexStringToRgbaColor(hex)));
};
const rgbaStringToHslaColor = (rgba) => {
const rgbaColor = parseRgbaString(rgba);
const r = rgbaColor.r / 255;
const g = rgbaColor.g / 255;
const b = rgbaColor.b / 255;
const max = Math.max(r, g, b), min = Math.min(r, g, b);
let h, s;
const l = (max + min) / 2;
if (max == min) h = s = 0;
else {
const d = max - min;
s = l >= .5 ? d / (2 - (max + min)) : d / (max + min);
switch (max) {
case r:
h = (g - b) / d * 60;
break;
case g:
h = ((b - r) / d + 2) * 60;
break;
default:
h = ((r - g) / d + 4) * 60;
break;
}
}
const res = {
h: Math.round(h),
s,
l
};
const a = rgbaColor.a;
if (a != void 0) res.a = a;
return res;
};
const parseRgbaString = (str) => {
const [r, g, b, a] = str.replace(CLEAN_RGBA_REGEX, "").split(",").map((c) => Number.parseFloat(c));
return {
r,
g,
b,
a
};
};
const parseHslaString = (str) => {
const [h, s, l, a] = str.replace(CLEAN_HSLA_REGEX, "").split(",").map((c) => Number.parseFloat(c));
return {
h,
s: s / 100,
l: l / 100,
a
};
};
//#endregion
exports.colorToSameTypeString = colorToSameTypeString;
exports.hasAlpha = hasAlpha;
exports.hexStringToRgbaColor = hexStringToRgbaColor;
exports.isHSLColor = isHSLColor;
exports.isRGBColor = isRGBColor;
exports.isTransparent = isTransparent;
exports.isValidHexString = isValidHexString;
exports.isValidHslaString = isValidHslaString;
exports.isValidRgbaString = isValidRgbaString;
exports.stringToHslaColor = stringToHslaColor;
exports.stringToSameTypeColor = stringToSameTypeColor;
//# sourceMappingURL=color.js.map

1
node_modules/@clerk/shared/dist/runtime/color.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

131
node_modules/@clerk/shared/dist/runtime/color.mjs generated vendored Normal file
View File

@@ -0,0 +1,131 @@
//#region src/color.ts
const IS_HEX_COLOR_REGEX = /^#?([A-F0-9]{6}|[A-F0-9]{3})$/i;
const IS_RGB_COLOR_REGEX = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/i;
const IS_RGBA_COLOR_REGEX = /^rgba\((\d+),\s*(\d+),\s*(\d+)(,\s*\d+(\.\d+)?)\)$/i;
const IS_HSL_COLOR_REGEX = /^hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)$/i;
const IS_HSLA_COLOR_REGEX = /^hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%(,\s*\d+(\.\d+)?)*\)$/i;
const isValidHexString = (s) => {
return !!s.match(IS_HEX_COLOR_REGEX);
};
const isValidRgbaString = (s) => {
return !!(s.match(IS_RGB_COLOR_REGEX) || s.match(IS_RGBA_COLOR_REGEX));
};
const isValidHslaString = (s) => {
return !!s.match(IS_HSL_COLOR_REGEX) || !!s.match(IS_HSLA_COLOR_REGEX);
};
const isRGBColor = (c) => {
return typeof c !== "string" && "r" in c;
};
const isHSLColor = (c) => {
return typeof c !== "string" && "h" in c;
};
const isTransparent = (c) => {
return c === "transparent";
};
const hasAlpha = (color) => {
return typeof color !== "string" && color.a != void 0 && color.a < 1;
};
const CLEAN_HSLA_REGEX = /[hsla()]/g;
const CLEAN_RGBA_REGEX = /[rgba()]/g;
const stringToHslaColor = (value) => {
if (value === "transparent") return {
h: 0,
s: 0,
l: 0,
a: 0
};
if (isValidHexString(value)) return hexStringToHslaColor(value);
if (isValidHslaString(value)) return parseHslaString(value);
if (isValidRgbaString(value)) return rgbaStringToHslaColor(value);
return null;
};
const stringToSameTypeColor = (value) => {
value = value.trim();
if (isValidHexString(value)) return value.startsWith("#") ? value : `#${value}`;
if (isValidRgbaString(value)) return parseRgbaString(value);
if (isValidHslaString(value)) return parseHslaString(value);
if (isTransparent(value)) return value;
return "";
};
const colorToSameTypeString = (color) => {
if (typeof color === "string" && (isValidHexString(color) || isTransparent(color))) return color;
if (isRGBColor(color)) return rgbaColorToRgbaString(color);
if (isHSLColor(color)) return hslaColorToHslaString(color);
return "";
};
const hexStringToRgbaColor = (hex) => {
hex = hex.replace("#", "");
return {
r: parseInt(hex.substring(0, 2), 16),
g: parseInt(hex.substring(2, 4), 16),
b: parseInt(hex.substring(4, 6), 16)
};
};
const rgbaColorToRgbaString = (color) => {
const { a, b, g, r } = color;
return color.a === 0 ? "transparent" : color.a != void 0 ? `rgba(${r},${g},${b},${a})` : `rgb(${r},${g},${b})`;
};
const hslaColorToHslaString = (color) => {
const { h, s, l, a } = color;
const sPerc = Math.round(s * 100);
const lPerc = Math.round(l * 100);
return color.a === 0 ? "transparent" : color.a != void 0 ? `hsla(${h},${sPerc}%,${lPerc}%,${a})` : `hsl(${h},${sPerc}%,${lPerc}%)`;
};
const hexStringToHslaColor = (hex) => {
return rgbaStringToHslaColor(colorToSameTypeString(hexStringToRgbaColor(hex)));
};
const rgbaStringToHslaColor = (rgba) => {
const rgbaColor = parseRgbaString(rgba);
const r = rgbaColor.r / 255;
const g = rgbaColor.g / 255;
const b = rgbaColor.b / 255;
const max = Math.max(r, g, b), min = Math.min(r, g, b);
let h, s;
const l = (max + min) / 2;
if (max == min) h = s = 0;
else {
const d = max - min;
s = l >= .5 ? d / (2 - (max + min)) : d / (max + min);
switch (max) {
case r:
h = (g - b) / d * 60;
break;
case g:
h = ((b - r) / d + 2) * 60;
break;
default:
h = ((r - g) / d + 4) * 60;
break;
}
}
const res = {
h: Math.round(h),
s,
l
};
const a = rgbaColor.a;
if (a != void 0) res.a = a;
return res;
};
const parseRgbaString = (str) => {
const [r, g, b, a] = str.replace(CLEAN_RGBA_REGEX, "").split(",").map((c) => Number.parseFloat(c));
return {
r,
g,
b,
a
};
};
const parseHslaString = (str) => {
const [h, s, l, a] = str.replace(CLEAN_HSLA_REGEX, "").split(",").map((c) => Number.parseFloat(c));
return {
h,
s: s / 100,
l: l / 100,
a
};
};
//#endregion
export { colorToSameTypeString, hasAlpha, hexStringToRgbaColor, isHSLColor, isRGBColor, isTransparent, isValidHexString, isValidHslaString, isValidRgbaString, stringToHslaColor, stringToSameTypeColor };
//# sourceMappingURL=color.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,60 @@
//#region src/internal/clerk-js/passwords/complexity.ts
const createTestComplexityCases = (config) => {
let specialCharsRegex;
if (config.allowed_special_characters) {
let escaped = config.allowed_special_characters.replace("[", "\\[");
escaped = escaped.replace("]", "\\]");
specialCharsRegex = /* @__PURE__ */ new RegExp(`[${escaped}]`);
} else specialCharsRegex = /[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/;
return (password, { minLength, maxLength }) => {
return {
max_length: password.length < maxLength,
min_length: password.length >= minLength,
require_numbers: /\d/.test(password),
require_lowercase: /[a-z]/.test(password),
require_uppercase: /[A-Z]/.test(password),
require_special_char: specialCharsRegex.test(password)
};
};
};
const validate = (password, config) => {
const { max_length, min_length, require_special_char, require_lowercase, require_numbers, require_uppercase } = config;
const testCases = createTestComplexityCases(config)(password, {
maxLength: config.max_length,
minLength: config.min_length
});
const keys = {
max_length,
min_length,
require_special_char,
require_lowercase,
require_numbers,
require_uppercase
};
const _validationsFailedMap = /* @__PURE__ */ new Map();
for (const k in keys) {
const key = k;
if (!keys[key]) continue;
if (!testCases[key]) _validationsFailedMap.set(key, true);
}
return Object.freeze(Object.fromEntries(_validationsFailedMap));
};
const createValidateComplexity = (config) => {
return (password) => validate(password, config);
};
//#endregion
Object.defineProperty(exports, 'createValidateComplexity', {
enumerable: true,
get: function () {
return createValidateComplexity;
}
});
Object.defineProperty(exports, 'validate', {
enumerable: true,
get: function () {
return validate;
}
});
//# sourceMappingURL=complexity-DEun2UD2.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"complexity-DEun2UD2.js","names":["specialCharsRegex: RegExp"],"sources":["../../src/internal/clerk-js/passwords/complexity.ts"],"sourcesContent":["import type { PasswordSettingsData } from '@/types';\n\nexport type ComplexityErrors = {\n [key in keyof Partial<Omit<PasswordSettingsData, 'disable_hibp' | 'min_zxcvbn_strength' | 'show_zxcvbn'>>]?: boolean;\n};\n\nexport type UsePasswordComplexityConfig = Omit<\n PasswordSettingsData,\n 'disable_hibp' | 'min_zxcvbn_strength' | 'show_zxcvbn'\n>;\n\nconst createTestComplexityCases = (config: Pick<UsePasswordComplexityConfig, 'allowed_special_characters'>) => {\n let specialCharsRegex: RegExp;\n if (config.allowed_special_characters) {\n // Avoid a nested group by escaping the `[]` characters\n let escaped = config.allowed_special_characters.replace('[', '\\\\[');\n escaped = escaped.replace(']', '\\\\]');\n specialCharsRegex = new RegExp(`[${escaped}]`);\n } else {\n specialCharsRegex = /[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]/;\n }\n\n return (\n password: string,\n {\n minLength,\n maxLength,\n }: {\n minLength: number;\n maxLength: number;\n },\n ) => {\n return {\n max_length: password.length < maxLength,\n min_length: password.length >= minLength,\n require_numbers: /\\d/.test(password),\n require_lowercase: /[a-z]/.test(password),\n require_uppercase: /[A-Z]/.test(password),\n require_special_char: specialCharsRegex.test(password),\n };\n };\n};\n\nexport const validate = (password: string, config: UsePasswordComplexityConfig): ComplexityErrors => {\n const { max_length, min_length, require_special_char, require_lowercase, require_numbers, require_uppercase } =\n config;\n const testComplexityCases = createTestComplexityCases(config);\n const testCases = testComplexityCases(password, {\n maxLength: config.max_length,\n minLength: config.min_length,\n });\n\n const keys = {\n max_length,\n min_length,\n require_special_char,\n require_lowercase,\n require_numbers,\n require_uppercase,\n };\n\n const _validationsFailedMap = new Map();\n for (const k in keys) {\n const key = k as keyof typeof keys;\n\n if (!keys[key]) {\n continue;\n }\n\n if (!testCases[key]) {\n _validationsFailedMap.set(key, true);\n }\n }\n\n return Object.freeze(Object.fromEntries(_validationsFailedMap));\n};\n\nexport const createValidateComplexity = (config: UsePasswordComplexityConfig) => {\n return (password: string) => validate(password, config);\n};\n"],"mappings":";;AAWA,MAAM,6BAA6B,WAA4E;CAC7G,IAAIA;AACJ,KAAI,OAAO,4BAA4B;EAErC,IAAI,UAAU,OAAO,2BAA2B,QAAQ,KAAK,MAAM;AACnE,YAAU,QAAQ,QAAQ,KAAK,MAAM;AACrC,sCAAoB,IAAI,OAAO,IAAI,QAAQ,GAAG;OAE9C,qBAAoB;AAGtB,SACE,UACA,EACE,WACA,gBAKC;AACH,SAAO;GACL,YAAY,SAAS,SAAS;GAC9B,YAAY,SAAS,UAAU;GAC/B,iBAAiB,KAAK,KAAK,SAAS;GACpC,mBAAmB,QAAQ,KAAK,SAAS;GACzC,mBAAmB,QAAQ,KAAK,SAAS;GACzC,sBAAsB,kBAAkB,KAAK,SAAS;GACvD;;;AAIL,MAAa,YAAY,UAAkB,WAA0D;CACnG,MAAM,EAAE,YAAY,YAAY,sBAAsB,mBAAmB,iBAAiB,sBACxF;CAEF,MAAM,YADsB,0BAA0B,OAAO,CACvB,UAAU;EAC9C,WAAW,OAAO;EAClB,WAAW,OAAO;EACnB,CAAC;CAEF,MAAM,OAAO;EACX;EACA;EACA;EACA;EACA;EACA;EACD;CAED,MAAM,wCAAwB,IAAI,KAAK;AACvC,MAAK,MAAM,KAAK,MAAM;EACpB,MAAM,MAAM;AAEZ,MAAI,CAAC,KAAK,KACR;AAGF,MAAI,CAAC,UAAU,KACb,uBAAsB,IAAI,KAAK,KAAK;;AAIxC,QAAO,OAAO,OAAO,OAAO,YAAY,sBAAsB,CAAC;;AAGjE,MAAa,4BAA4B,WAAwC;AAC/E,SAAQ,aAAqB,SAAS,UAAU,OAAO"}

View File

@@ -0,0 +1,48 @@
//#region src/internal/clerk-js/passwords/complexity.ts
const createTestComplexityCases = (config) => {
let specialCharsRegex;
if (config.allowed_special_characters) {
let escaped = config.allowed_special_characters.replace("[", "\\[");
escaped = escaped.replace("]", "\\]");
specialCharsRegex = /* @__PURE__ */ new RegExp(`[${escaped}]`);
} else specialCharsRegex = /[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/;
return (password, { minLength, maxLength }) => {
return {
max_length: password.length < maxLength,
min_length: password.length >= minLength,
require_numbers: /\d/.test(password),
require_lowercase: /[a-z]/.test(password),
require_uppercase: /[A-Z]/.test(password),
require_special_char: specialCharsRegex.test(password)
};
};
};
const validate = (password, config) => {
const { max_length, min_length, require_special_char, require_lowercase, require_numbers, require_uppercase } = config;
const testCases = createTestComplexityCases(config)(password, {
maxLength: config.max_length,
minLength: config.min_length
});
const keys = {
max_length,
min_length,
require_special_char,
require_lowercase,
require_numbers,
require_uppercase
};
const _validationsFailedMap = /* @__PURE__ */ new Map();
for (const k in keys) {
const key = k;
if (!keys[key]) continue;
if (!testCases[key]) _validationsFailedMap.set(key, true);
}
return Object.freeze(Object.fromEntries(_validationsFailedMap));
};
const createValidateComplexity = (config) => {
return (password) => validate(password, config);
};
//#endregion
export { validate as n, createValidateComplexity as t };
//# sourceMappingURL=complexity-DydNJOmy.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"complexity-DydNJOmy.mjs","names":["specialCharsRegex: RegExp"],"sources":["../../src/internal/clerk-js/passwords/complexity.ts"],"sourcesContent":["import type { PasswordSettingsData } from '@/types';\n\nexport type ComplexityErrors = {\n [key in keyof Partial<Omit<PasswordSettingsData, 'disable_hibp' | 'min_zxcvbn_strength' | 'show_zxcvbn'>>]?: boolean;\n};\n\nexport type UsePasswordComplexityConfig = Omit<\n PasswordSettingsData,\n 'disable_hibp' | 'min_zxcvbn_strength' | 'show_zxcvbn'\n>;\n\nconst createTestComplexityCases = (config: Pick<UsePasswordComplexityConfig, 'allowed_special_characters'>) => {\n let specialCharsRegex: RegExp;\n if (config.allowed_special_characters) {\n // Avoid a nested group by escaping the `[]` characters\n let escaped = config.allowed_special_characters.replace('[', '\\\\[');\n escaped = escaped.replace(']', '\\\\]');\n specialCharsRegex = new RegExp(`[${escaped}]`);\n } else {\n specialCharsRegex = /[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]/;\n }\n\n return (\n password: string,\n {\n minLength,\n maxLength,\n }: {\n minLength: number;\n maxLength: number;\n },\n ) => {\n return {\n max_length: password.length < maxLength,\n min_length: password.length >= minLength,\n require_numbers: /\\d/.test(password),\n require_lowercase: /[a-z]/.test(password),\n require_uppercase: /[A-Z]/.test(password),\n require_special_char: specialCharsRegex.test(password),\n };\n };\n};\n\nexport const validate = (password: string, config: UsePasswordComplexityConfig): ComplexityErrors => {\n const { max_length, min_length, require_special_char, require_lowercase, require_numbers, require_uppercase } =\n config;\n const testComplexityCases = createTestComplexityCases(config);\n const testCases = testComplexityCases(password, {\n maxLength: config.max_length,\n minLength: config.min_length,\n });\n\n const keys = {\n max_length,\n min_length,\n require_special_char,\n require_lowercase,\n require_numbers,\n require_uppercase,\n };\n\n const _validationsFailedMap = new Map();\n for (const k in keys) {\n const key = k as keyof typeof keys;\n\n if (!keys[key]) {\n continue;\n }\n\n if (!testCases[key]) {\n _validationsFailedMap.set(key, true);\n }\n }\n\n return Object.freeze(Object.fromEntries(_validationsFailedMap));\n};\n\nexport const createValidateComplexity = (config: UsePasswordComplexityConfig) => {\n return (password: string) => validate(password, config);\n};\n"],"mappings":";AAWA,MAAM,6BAA6B,WAA4E;CAC7G,IAAIA;AACJ,KAAI,OAAO,4BAA4B;EAErC,IAAI,UAAU,OAAO,2BAA2B,QAAQ,KAAK,MAAM;AACnE,YAAU,QAAQ,QAAQ,KAAK,MAAM;AACrC,sCAAoB,IAAI,OAAO,IAAI,QAAQ,GAAG;OAE9C,qBAAoB;AAGtB,SACE,UACA,EACE,WACA,gBAKC;AACH,SAAO;GACL,YAAY,SAAS,SAAS;GAC9B,YAAY,SAAS,UAAU;GAC/B,iBAAiB,KAAK,KAAK,SAAS;GACpC,mBAAmB,QAAQ,KAAK,SAAS;GACzC,mBAAmB,QAAQ,KAAK,SAAS;GACzC,sBAAsB,kBAAkB,KAAK,SAAS;GACvD;;;AAIL,MAAa,YAAY,UAAkB,WAA0D;CACnG,MAAM,EAAE,YAAY,YAAY,sBAAsB,mBAAmB,iBAAiB,sBACxF;CAEF,MAAM,YADsB,0BAA0B,OAAO,CACvB,UAAU;EAC9C,WAAW,OAAO;EAClB,WAAW,OAAO;EACnB,CAAC;CAEF,MAAM,OAAO;EACX;EACA;EACA;EACA;EACA;EACA;EACD;CAED,MAAM,wCAAwB,IAAI,KAAK;AACvC,MAAK,MAAM,KAAK,MAAM;EACpB,MAAM,MAAM;AAEZ,MAAI,CAAC,KAAK,KACR;AAGF,MAAI,CAAC,UAAU,KACb,uBAAsB,IAAI,KAAK,KAAK;;AAIxC,QAAO,OAAO,OAAO,OAAO,YAAY,sBAAsB,CAAC;;AAGjE,MAAa,4BAA4B,WAAwC;AAC/E,SAAQ,aAAqB,SAAS,UAAU,OAAO"}

View File

@@ -0,0 +1,155 @@
//#region src/internal/clerk-js/constants.ts
const PRESERVED_QUERYSTRING_PARAMS = [
"redirect_url",
"after_sign_in_url",
"after_sign_up_url",
"sign_in_force_redirect_url",
"sign_in_fallback_redirect_url",
"sign_up_force_redirect_url",
"sign_up_fallback_redirect_url"
];
const CLERK_MODAL_STATE = "__clerk_modal_state";
const CLERK_SYNCED = "__clerk_synced";
const CLERK_SYNCED_STATUS = {
NeedsSync: "false",
Completed: "true"
};
const CLERK_SUFFIXED_COOKIES = "suffixed_cookies";
const CLERK_SATELLITE_URL = "__clerk_satellite_url";
const ERROR_CODES = {
FORM_IDENTIFIER_NOT_FOUND: "form_identifier_not_found",
FORM_PASSWORD_INCORRECT: "form_password_incorrect",
FORM_PASSWORD_PWNED: "form_password_pwned",
INVALID_STRATEGY_FOR_USER: "strategy_for_user_invalid",
NOT_ALLOWED_TO_SIGN_UP: "not_allowed_to_sign_up",
OAUTH_ACCESS_DENIED: "oauth_access_denied",
OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: "oauth_email_domain_reserved_by_saml",
NOT_ALLOWED_ACCESS: "not_allowed_access",
SAML_USER_ATTRIBUTE_MISSING: "saml_user_attribute_missing",
USER_LOCKED: "user_locked",
EXTERNAL_ACCOUNT_NOT_FOUND: "external_account_not_found",
SESSION_EXISTS: "session_exists",
SIGN_UP_MODE_RESTRICTED: "sign_up_mode_restricted",
SIGN_UP_MODE_RESTRICTED_WAITLIST: "sign_up_restricted_waitlist",
ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: "enterprise_sso_user_attribute_missing",
ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: "enterprise_sso_email_address_domain_mismatch",
ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: "enterprise_sso_hosted_domain_mismatch",
SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: "saml_email_address_domain_mismatch",
INVITATION_ACCOUNT_NOT_EXISTS: "invitation_account_not_exists",
ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO: "organization_membership_quota_exceeded_for_sso",
CAPTCHA_INVALID: "captcha_invalid",
FRAUD_DEVICE_BLOCKED: "device_blocked",
FRAUD_ACTION_BLOCKED: "action_blocked",
SIGNUP_RATE_LIMIT_EXCEEDED: "signup_rate_limit_exceeded",
USER_BANNED: "user_banned",
USER_DEACTIVATED: "user_deactivated"
};
const SIGN_IN_INITIAL_VALUE_KEYS = [
"email_address",
"phone_number",
"username"
];
const SIGN_UP_INITIAL_VALUE_KEYS = [
"email_address",
"phone_number",
"username",
"first_name",
"last_name"
];
const DEBOUNCE_MS = 350;
const SIGN_UP_MODES = {
PUBLIC: "public",
RESTRICTED: "restricted",
WAITLIST: "waitlist"
};
const SUPPORTED_FAPI_VERSION = "2025-11-10";
const CAPTCHA_ELEMENT_ID = "clerk-captcha";
const CAPTCHA_INVISIBLE_CLASSNAME = "clerk-invisible-captcha";
//#endregion
Object.defineProperty(exports, 'CAPTCHA_ELEMENT_ID', {
enumerable: true,
get: function () {
return CAPTCHA_ELEMENT_ID;
}
});
Object.defineProperty(exports, 'CAPTCHA_INVISIBLE_CLASSNAME', {
enumerable: true,
get: function () {
return CAPTCHA_INVISIBLE_CLASSNAME;
}
});
Object.defineProperty(exports, 'CLERK_MODAL_STATE', {
enumerable: true,
get: function () {
return CLERK_MODAL_STATE;
}
});
Object.defineProperty(exports, 'CLERK_SATELLITE_URL', {
enumerable: true,
get: function () {
return CLERK_SATELLITE_URL;
}
});
Object.defineProperty(exports, 'CLERK_SUFFIXED_COOKIES', {
enumerable: true,
get: function () {
return CLERK_SUFFIXED_COOKIES;
}
});
Object.defineProperty(exports, 'CLERK_SYNCED', {
enumerable: true,
get: function () {
return CLERK_SYNCED;
}
});
Object.defineProperty(exports, 'CLERK_SYNCED_STATUS', {
enumerable: true,
get: function () {
return CLERK_SYNCED_STATUS;
}
});
Object.defineProperty(exports, 'DEBOUNCE_MS', {
enumerable: true,
get: function () {
return DEBOUNCE_MS;
}
});
Object.defineProperty(exports, 'ERROR_CODES', {
enumerable: true,
get: function () {
return ERROR_CODES;
}
});
Object.defineProperty(exports, 'PRESERVED_QUERYSTRING_PARAMS', {
enumerable: true,
get: function () {
return PRESERVED_QUERYSTRING_PARAMS;
}
});
Object.defineProperty(exports, 'SIGN_IN_INITIAL_VALUE_KEYS', {
enumerable: true,
get: function () {
return SIGN_IN_INITIAL_VALUE_KEYS;
}
});
Object.defineProperty(exports, 'SIGN_UP_INITIAL_VALUE_KEYS', {
enumerable: true,
get: function () {
return SIGN_UP_INITIAL_VALUE_KEYS;
}
});
Object.defineProperty(exports, 'SIGN_UP_MODES', {
enumerable: true,
get: function () {
return SIGN_UP_MODES;
}
});
Object.defineProperty(exports, 'SUPPORTED_FAPI_VERSION', {
enumerable: true,
get: function () {
return SUPPORTED_FAPI_VERSION;
}
});
//# sourceMappingURL=constants-BUzkV8jh.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"constants-BUzkV8jh.js","names":[],"sources":["../../src/internal/clerk-js/constants.ts"],"sourcesContent":["import type { SignUpModes } from '../../types';\n\n// TODO: Do we still have a use for this or can we simply preserve all params?\nexport const PRESERVED_QUERYSTRING_PARAMS = [\n 'redirect_url',\n 'after_sign_in_url',\n 'after_sign_up_url',\n 'sign_in_force_redirect_url',\n 'sign_in_fallback_redirect_url',\n 'sign_up_force_redirect_url',\n 'sign_up_fallback_redirect_url',\n];\n\nexport const CLERK_MODAL_STATE = '__clerk_modal_state';\nexport const CLERK_SYNCED = '__clerk_synced';\nexport const CLERK_SYNCED_STATUS = {\n /** Not synced - satellite needs handshake after returning from primary sign-in */\n NeedsSync: 'false',\n /** Sync completed - prevents re-sync loop after handshake completes */\n Completed: 'true',\n} as const;\nexport const CLERK_SUFFIXED_COOKIES = 'suffixed_cookies';\nexport const CLERK_SATELLITE_URL = '__clerk_satellite_url';\nexport const ERROR_CODES = {\n FORM_IDENTIFIER_NOT_FOUND: 'form_identifier_not_found',\n FORM_PASSWORD_INCORRECT: 'form_password_incorrect',\n FORM_PASSWORD_PWNED: 'form_password_pwned',\n INVALID_STRATEGY_FOR_USER: 'strategy_for_user_invalid',\n NOT_ALLOWED_TO_SIGN_UP: 'not_allowed_to_sign_up',\n OAUTH_ACCESS_DENIED: 'oauth_access_denied',\n OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: 'oauth_email_domain_reserved_by_saml',\n NOT_ALLOWED_ACCESS: 'not_allowed_access',\n SAML_USER_ATTRIBUTE_MISSING: 'saml_user_attribute_missing',\n USER_LOCKED: 'user_locked',\n EXTERNAL_ACCOUNT_NOT_FOUND: 'external_account_not_found',\n SESSION_EXISTS: 'session_exists',\n SIGN_UP_MODE_RESTRICTED: 'sign_up_mode_restricted',\n SIGN_UP_MODE_RESTRICTED_WAITLIST: 'sign_up_restricted_waitlist',\n ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: 'enterprise_sso_user_attribute_missing',\n ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'enterprise_sso_email_address_domain_mismatch',\n ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: 'enterprise_sso_hosted_domain_mismatch',\n SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'saml_email_address_domain_mismatch',\n INVITATION_ACCOUNT_NOT_EXISTS: 'invitation_account_not_exists',\n ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO: 'organization_membership_quota_exceeded_for_sso',\n CAPTCHA_INVALID: 'captcha_invalid',\n FRAUD_DEVICE_BLOCKED: 'device_blocked',\n FRAUD_ACTION_BLOCKED: 'action_blocked',\n SIGNUP_RATE_LIMIT_EXCEEDED: 'signup_rate_limit_exceeded',\n USER_BANNED: 'user_banned',\n USER_DEACTIVATED: 'user_deactivated',\n} as const;\n\nexport const SIGN_IN_INITIAL_VALUE_KEYS = ['email_address', 'phone_number', 'username'];\nexport const SIGN_UP_INITIAL_VALUE_KEYS = ['email_address', 'phone_number', 'username', 'first_name', 'last_name'];\n\nexport const DEBOUNCE_MS = 350;\n\nexport const SIGN_UP_MODES = {\n PUBLIC: 'public',\n RESTRICTED: 'restricted',\n WAITLIST: 'waitlist',\n} satisfies Record<string, SignUpModes>;\n\n// This is the currently supported version of the Frontend API\nexport const SUPPORTED_FAPI_VERSION = '2025-11-10';\n\nexport const CAPTCHA_ELEMENT_ID = 'clerk-captcha';\nexport const CAPTCHA_INVISIBLE_CLASSNAME = 'clerk-invisible-captcha';\n"],"mappings":";;AAGA,MAAa,+BAA+B;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,oBAAoB;AACjC,MAAa,eAAe;AAC5B,MAAa,sBAAsB;CAEjC,WAAW;CAEX,WAAW;CACZ;AACD,MAAa,yBAAyB;AACtC,MAAa,sBAAsB;AACnC,MAAa,cAAc;CACzB,2BAA2B;CAC3B,yBAAyB;CACzB,qBAAqB;CACrB,2BAA2B;CAC3B,wBAAwB;CACxB,qBAAqB;CACrB,qCAAqC;CACrC,oBAAoB;CACpB,6BAA6B;CAC7B,aAAa;CACb,4BAA4B;CAC5B,gBAAgB;CAChB,yBAAyB;CACzB,kCAAkC;CAClC,uCAAuC;CACvC,8CAA8C;CAC9C,uCAAuC;CACvC,oCAAoC;CACpC,+BAA+B;CAC/B,gDAAgD;CAChD,iBAAiB;CACjB,sBAAsB;CACtB,sBAAsB;CACtB,4BAA4B;CAC5B,aAAa;CACb,kBAAkB;CACnB;AAED,MAAa,6BAA6B;CAAC;CAAiB;CAAgB;CAAW;AACvF,MAAa,6BAA6B;CAAC;CAAiB;CAAgB;CAAY;CAAc;CAAY;AAElH,MAAa,cAAc;AAE3B,MAAa,gBAAgB;CAC3B,QAAQ;CACR,YAAY;CACZ,UAAU;CACX;AAGD,MAAa,yBAAyB;AAEtC,MAAa,qBAAqB;AAClC,MAAa,8BAA8B"}

View File

@@ -0,0 +1,47 @@
//#region src/constants.ts
const LEGACY_DEV_INSTANCE_SUFFIXES = [
".lcl.dev",
".lclstage.dev",
".lclclerk.com"
];
const CURRENT_DEV_INSTANCE_SUFFIXES = [
".accounts.dev",
".accountsstage.dev",
".accounts.lclclerk.com"
];
const DEV_OR_STAGING_SUFFIXES = [
".lcl.dev",
".stg.dev",
".lclstage.dev",
".stgstage.dev",
".dev.lclclerk.com",
".stg.lclclerk.com",
".accounts.lclclerk.com",
"accountsstage.dev",
"accounts.dev"
];
const LOCAL_ENV_SUFFIXES = [
".lcl.dev",
"lclstage.dev",
".lclclerk.com",
".accounts.lclclerk.com"
];
const STAGING_ENV_SUFFIXES = [".accountsstage.dev"];
const LOCAL_API_URL = "https://api.lclclerk.com";
const STAGING_API_URL = "https://api.clerkstage.dev";
const PROD_API_URL = "https://api.clerk.com";
const LOCAL_FAPI_URL = "https://frontend-api.lclclerk.com";
const STAGING_FAPI_URL = "https://frontend-api.clerkstage.dev";
const PROD_FAPI_URL = "https://frontend-api.clerk.dev";
const DEFAULT_PROXY_PATH = "/__clerk";
/**
* Returns the URL for a static image
* using the new img.clerk.com service
*/
function iconImageUrl(id, format = "svg") {
return `https://img.clerk.com/static/${id}.${format}`;
}
//#endregion
export { LOCAL_API_URL as a, PROD_API_URL as c, STAGING_ENV_SUFFIXES as d, STAGING_FAPI_URL as f, LEGACY_DEV_INSTANCE_SUFFIXES as i, PROD_FAPI_URL as l, DEFAULT_PROXY_PATH as n, LOCAL_ENV_SUFFIXES as o, iconImageUrl as p, DEV_OR_STAGING_SUFFIXES as r, LOCAL_FAPI_URL as s, CURRENT_DEV_INSTANCE_SUFFIXES as t, STAGING_API_URL as u };
//# sourceMappingURL=constants-Bta24VLk.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"constants-Bta24VLk.mjs","names":[],"sources":["../../src/constants.ts"],"sourcesContent":["export const LEGACY_DEV_INSTANCE_SUFFIXES = ['.lcl.dev', '.lclstage.dev', '.lclclerk.com'];\nexport const CURRENT_DEV_INSTANCE_SUFFIXES = ['.accounts.dev', '.accountsstage.dev', '.accounts.lclclerk.com'];\nexport const DEV_OR_STAGING_SUFFIXES = [\n '.lcl.dev',\n '.stg.dev',\n '.lclstage.dev',\n '.stgstage.dev',\n '.dev.lclclerk.com',\n '.stg.lclclerk.com',\n '.accounts.lclclerk.com',\n 'accountsstage.dev',\n 'accounts.dev',\n];\nexport const LOCAL_ENV_SUFFIXES = ['.lcl.dev', 'lclstage.dev', '.lclclerk.com', '.accounts.lclclerk.com'];\nexport const STAGING_ENV_SUFFIXES = ['.accountsstage.dev'];\nexport const LOCAL_API_URL = 'https://api.lclclerk.com';\nexport const STAGING_API_URL = 'https://api.clerkstage.dev';\nexport const PROD_API_URL = 'https://api.clerk.com';\n\nexport const LOCAL_FAPI_URL = 'https://frontend-api.lclclerk.com';\nexport const STAGING_FAPI_URL = 'https://frontend-api.clerkstage.dev';\nexport const PROD_FAPI_URL = 'https://frontend-api.clerk.dev';\n\nexport const DEFAULT_PROXY_PATH = '/__clerk';\n\n/**\n * Returns the URL for a static image\n * using the new img.clerk.com service\n */\nexport function iconImageUrl(id: string, format: 'svg' | 'jpeg' = 'svg'): string {\n return `https://img.clerk.com/static/${id}.${format}`;\n}\n"],"mappings":";AAAA,MAAa,+BAA+B;CAAC;CAAY;CAAiB;CAAgB;AAC1F,MAAa,gCAAgC;CAAC;CAAiB;CAAsB;CAAyB;AAC9G,MAAa,0BAA0B;CACrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AACD,MAAa,qBAAqB;CAAC;CAAY;CAAgB;CAAiB;CAAyB;AACzG,MAAa,uBAAuB,CAAC,qBAAqB;AAC1D,MAAa,gBAAgB;AAC7B,MAAa,kBAAkB;AAC/B,MAAa,eAAe;AAE5B,MAAa,iBAAiB;AAC9B,MAAa,mBAAmB;AAChC,MAAa,gBAAgB;AAE7B,MAAa,qBAAqB;;;;;AAMlC,SAAgB,aAAa,IAAY,SAAyB,OAAe;AAC/E,QAAO,gCAAgC,GAAG,GAAG"}

View File

@@ -0,0 +1,71 @@
//#region src/internal/clerk-js/constants.ts
const PRESERVED_QUERYSTRING_PARAMS = [
"redirect_url",
"after_sign_in_url",
"after_sign_up_url",
"sign_in_force_redirect_url",
"sign_in_fallback_redirect_url",
"sign_up_force_redirect_url",
"sign_up_fallback_redirect_url"
];
const CLERK_MODAL_STATE = "__clerk_modal_state";
const CLERK_SYNCED = "__clerk_synced";
const CLERK_SYNCED_STATUS = {
NeedsSync: "false",
Completed: "true"
};
const CLERK_SUFFIXED_COOKIES = "suffixed_cookies";
const CLERK_SATELLITE_URL = "__clerk_satellite_url";
const ERROR_CODES = {
FORM_IDENTIFIER_NOT_FOUND: "form_identifier_not_found",
FORM_PASSWORD_INCORRECT: "form_password_incorrect",
FORM_PASSWORD_PWNED: "form_password_pwned",
INVALID_STRATEGY_FOR_USER: "strategy_for_user_invalid",
NOT_ALLOWED_TO_SIGN_UP: "not_allowed_to_sign_up",
OAUTH_ACCESS_DENIED: "oauth_access_denied",
OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: "oauth_email_domain_reserved_by_saml",
NOT_ALLOWED_ACCESS: "not_allowed_access",
SAML_USER_ATTRIBUTE_MISSING: "saml_user_attribute_missing",
USER_LOCKED: "user_locked",
EXTERNAL_ACCOUNT_NOT_FOUND: "external_account_not_found",
SESSION_EXISTS: "session_exists",
SIGN_UP_MODE_RESTRICTED: "sign_up_mode_restricted",
SIGN_UP_MODE_RESTRICTED_WAITLIST: "sign_up_restricted_waitlist",
ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: "enterprise_sso_user_attribute_missing",
ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: "enterprise_sso_email_address_domain_mismatch",
ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: "enterprise_sso_hosted_domain_mismatch",
SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: "saml_email_address_domain_mismatch",
INVITATION_ACCOUNT_NOT_EXISTS: "invitation_account_not_exists",
ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO: "organization_membership_quota_exceeded_for_sso",
CAPTCHA_INVALID: "captcha_invalid",
FRAUD_DEVICE_BLOCKED: "device_blocked",
FRAUD_ACTION_BLOCKED: "action_blocked",
SIGNUP_RATE_LIMIT_EXCEEDED: "signup_rate_limit_exceeded",
USER_BANNED: "user_banned",
USER_DEACTIVATED: "user_deactivated"
};
const SIGN_IN_INITIAL_VALUE_KEYS = [
"email_address",
"phone_number",
"username"
];
const SIGN_UP_INITIAL_VALUE_KEYS = [
"email_address",
"phone_number",
"username",
"first_name",
"last_name"
];
const DEBOUNCE_MS = 350;
const SIGN_UP_MODES = {
PUBLIC: "public",
RESTRICTED: "restricted",
WAITLIST: "waitlist"
};
const SUPPORTED_FAPI_VERSION = "2025-11-10";
const CAPTCHA_ELEMENT_ID = "clerk-captcha";
const CAPTCHA_INVISIBLE_CLASSNAME = "clerk-invisible-captcha";
//#endregion
export { CLERK_SUFFIXED_COOKIES as a, DEBOUNCE_MS as c, SIGN_IN_INITIAL_VALUE_KEYS as d, SIGN_UP_INITIAL_VALUE_KEYS as f, CLERK_SATELLITE_URL as i, ERROR_CODES as l, SUPPORTED_FAPI_VERSION as m, CAPTCHA_INVISIBLE_CLASSNAME as n, CLERK_SYNCED as o, SIGN_UP_MODES as p, CLERK_MODAL_STATE as r, CLERK_SYNCED_STATUS as s, CAPTCHA_ELEMENT_ID as t, PRESERVED_QUERYSTRING_PARAMS as u };
//# sourceMappingURL=constants-BulbbNR9.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"constants-BulbbNR9.mjs","names":[],"sources":["../../src/internal/clerk-js/constants.ts"],"sourcesContent":["import type { SignUpModes } from '../../types';\n\n// TODO: Do we still have a use for this or can we simply preserve all params?\nexport const PRESERVED_QUERYSTRING_PARAMS = [\n 'redirect_url',\n 'after_sign_in_url',\n 'after_sign_up_url',\n 'sign_in_force_redirect_url',\n 'sign_in_fallback_redirect_url',\n 'sign_up_force_redirect_url',\n 'sign_up_fallback_redirect_url',\n];\n\nexport const CLERK_MODAL_STATE = '__clerk_modal_state';\nexport const CLERK_SYNCED = '__clerk_synced';\nexport const CLERK_SYNCED_STATUS = {\n /** Not synced - satellite needs handshake after returning from primary sign-in */\n NeedsSync: 'false',\n /** Sync completed - prevents re-sync loop after handshake completes */\n Completed: 'true',\n} as const;\nexport const CLERK_SUFFIXED_COOKIES = 'suffixed_cookies';\nexport const CLERK_SATELLITE_URL = '__clerk_satellite_url';\nexport const ERROR_CODES = {\n FORM_IDENTIFIER_NOT_FOUND: 'form_identifier_not_found',\n FORM_PASSWORD_INCORRECT: 'form_password_incorrect',\n FORM_PASSWORD_PWNED: 'form_password_pwned',\n INVALID_STRATEGY_FOR_USER: 'strategy_for_user_invalid',\n NOT_ALLOWED_TO_SIGN_UP: 'not_allowed_to_sign_up',\n OAUTH_ACCESS_DENIED: 'oauth_access_denied',\n OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: 'oauth_email_domain_reserved_by_saml',\n NOT_ALLOWED_ACCESS: 'not_allowed_access',\n SAML_USER_ATTRIBUTE_MISSING: 'saml_user_attribute_missing',\n USER_LOCKED: 'user_locked',\n EXTERNAL_ACCOUNT_NOT_FOUND: 'external_account_not_found',\n SESSION_EXISTS: 'session_exists',\n SIGN_UP_MODE_RESTRICTED: 'sign_up_mode_restricted',\n SIGN_UP_MODE_RESTRICTED_WAITLIST: 'sign_up_restricted_waitlist',\n ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: 'enterprise_sso_user_attribute_missing',\n ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'enterprise_sso_email_address_domain_mismatch',\n ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: 'enterprise_sso_hosted_domain_mismatch',\n SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'saml_email_address_domain_mismatch',\n INVITATION_ACCOUNT_NOT_EXISTS: 'invitation_account_not_exists',\n ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO: 'organization_membership_quota_exceeded_for_sso',\n CAPTCHA_INVALID: 'captcha_invalid',\n FRAUD_DEVICE_BLOCKED: 'device_blocked',\n FRAUD_ACTION_BLOCKED: 'action_blocked',\n SIGNUP_RATE_LIMIT_EXCEEDED: 'signup_rate_limit_exceeded',\n USER_BANNED: 'user_banned',\n USER_DEACTIVATED: 'user_deactivated',\n} as const;\n\nexport const SIGN_IN_INITIAL_VALUE_KEYS = ['email_address', 'phone_number', 'username'];\nexport const SIGN_UP_INITIAL_VALUE_KEYS = ['email_address', 'phone_number', 'username', 'first_name', 'last_name'];\n\nexport const DEBOUNCE_MS = 350;\n\nexport const SIGN_UP_MODES = {\n PUBLIC: 'public',\n RESTRICTED: 'restricted',\n WAITLIST: 'waitlist',\n} satisfies Record<string, SignUpModes>;\n\n// This is the currently supported version of the Frontend API\nexport const SUPPORTED_FAPI_VERSION = '2025-11-10';\n\nexport const CAPTCHA_ELEMENT_ID = 'clerk-captcha';\nexport const CAPTCHA_INVISIBLE_CLASSNAME = 'clerk-invisible-captcha';\n"],"mappings":";AAGA,MAAa,+BAA+B;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,oBAAoB;AACjC,MAAa,eAAe;AAC5B,MAAa,sBAAsB;CAEjC,WAAW;CAEX,WAAW;CACZ;AACD,MAAa,yBAAyB;AACtC,MAAa,sBAAsB;AACnC,MAAa,cAAc;CACzB,2BAA2B;CAC3B,yBAAyB;CACzB,qBAAqB;CACrB,2BAA2B;CAC3B,wBAAwB;CACxB,qBAAqB;CACrB,qCAAqC;CACrC,oBAAoB;CACpB,6BAA6B;CAC7B,aAAa;CACb,4BAA4B;CAC5B,gBAAgB;CAChB,yBAAyB;CACzB,kCAAkC;CAClC,uCAAuC;CACvC,8CAA8C;CAC9C,uCAAuC;CACvC,oCAAoC;CACpC,+BAA+B;CAC/B,gDAAgD;CAChD,iBAAiB;CACjB,sBAAsB;CACtB,sBAAsB;CACtB,4BAA4B;CAC5B,aAAa;CACb,kBAAkB;CACnB;AAED,MAAa,6BAA6B;CAAC;CAAiB;CAAgB;CAAW;AACvF,MAAa,6BAA6B;CAAC;CAAiB;CAAgB;CAAY;CAAc;CAAY;AAElH,MAAa,cAAc;AAE3B,MAAa,gBAAgB;CAC3B,QAAQ;CACR,YAAY;CACZ,UAAU;CACX;AAGD,MAAa,yBAAyB;AAEtC,MAAa,qBAAqB;AAClC,MAAa,8BAA8B"}

View File

@@ -0,0 +1,125 @@
//#region src/constants.ts
const LEGACY_DEV_INSTANCE_SUFFIXES = [
".lcl.dev",
".lclstage.dev",
".lclclerk.com"
];
const CURRENT_DEV_INSTANCE_SUFFIXES = [
".accounts.dev",
".accountsstage.dev",
".accounts.lclclerk.com"
];
const DEV_OR_STAGING_SUFFIXES = [
".lcl.dev",
".stg.dev",
".lclstage.dev",
".stgstage.dev",
".dev.lclclerk.com",
".stg.lclclerk.com",
".accounts.lclclerk.com",
"accountsstage.dev",
"accounts.dev"
];
const LOCAL_ENV_SUFFIXES = [
".lcl.dev",
"lclstage.dev",
".lclclerk.com",
".accounts.lclclerk.com"
];
const STAGING_ENV_SUFFIXES = [".accountsstage.dev"];
const LOCAL_API_URL = "https://api.lclclerk.com";
const STAGING_API_URL = "https://api.clerkstage.dev";
const PROD_API_URL = "https://api.clerk.com";
const LOCAL_FAPI_URL = "https://frontend-api.lclclerk.com";
const STAGING_FAPI_URL = "https://frontend-api.clerkstage.dev";
const PROD_FAPI_URL = "https://frontend-api.clerk.dev";
const DEFAULT_PROXY_PATH = "/__clerk";
/**
* Returns the URL for a static image
* using the new img.clerk.com service
*/
function iconImageUrl(id, format = "svg") {
return `https://img.clerk.com/static/${id}.${format}`;
}
//#endregion
Object.defineProperty(exports, 'CURRENT_DEV_INSTANCE_SUFFIXES', {
enumerable: true,
get: function () {
return CURRENT_DEV_INSTANCE_SUFFIXES;
}
});
Object.defineProperty(exports, 'DEFAULT_PROXY_PATH', {
enumerable: true,
get: function () {
return DEFAULT_PROXY_PATH;
}
});
Object.defineProperty(exports, 'DEV_OR_STAGING_SUFFIXES', {
enumerable: true,
get: function () {
return DEV_OR_STAGING_SUFFIXES;
}
});
Object.defineProperty(exports, 'LEGACY_DEV_INSTANCE_SUFFIXES', {
enumerable: true,
get: function () {
return LEGACY_DEV_INSTANCE_SUFFIXES;
}
});
Object.defineProperty(exports, 'LOCAL_API_URL', {
enumerable: true,
get: function () {
return LOCAL_API_URL;
}
});
Object.defineProperty(exports, 'LOCAL_ENV_SUFFIXES', {
enumerable: true,
get: function () {
return LOCAL_ENV_SUFFIXES;
}
});
Object.defineProperty(exports, 'LOCAL_FAPI_URL', {
enumerable: true,
get: function () {
return LOCAL_FAPI_URL;
}
});
Object.defineProperty(exports, 'PROD_API_URL', {
enumerable: true,
get: function () {
return PROD_API_URL;
}
});
Object.defineProperty(exports, 'PROD_FAPI_URL', {
enumerable: true,
get: function () {
return PROD_FAPI_URL;
}
});
Object.defineProperty(exports, 'STAGING_API_URL', {
enumerable: true,
get: function () {
return STAGING_API_URL;
}
});
Object.defineProperty(exports, 'STAGING_ENV_SUFFIXES', {
enumerable: true,
get: function () {
return STAGING_ENV_SUFFIXES;
}
});
Object.defineProperty(exports, 'STAGING_FAPI_URL', {
enumerable: true,
get: function () {
return STAGING_FAPI_URL;
}
});
Object.defineProperty(exports, 'iconImageUrl', {
enumerable: true,
get: function () {
return iconImageUrl;
}
});
//# sourceMappingURL=constants-WYhx_umW.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"constants-WYhx_umW.js","names":[],"sources":["../../src/constants.ts"],"sourcesContent":["export const LEGACY_DEV_INSTANCE_SUFFIXES = ['.lcl.dev', '.lclstage.dev', '.lclclerk.com'];\nexport const CURRENT_DEV_INSTANCE_SUFFIXES = ['.accounts.dev', '.accountsstage.dev', '.accounts.lclclerk.com'];\nexport const DEV_OR_STAGING_SUFFIXES = [\n '.lcl.dev',\n '.stg.dev',\n '.lclstage.dev',\n '.stgstage.dev',\n '.dev.lclclerk.com',\n '.stg.lclclerk.com',\n '.accounts.lclclerk.com',\n 'accountsstage.dev',\n 'accounts.dev',\n];\nexport const LOCAL_ENV_SUFFIXES = ['.lcl.dev', 'lclstage.dev', '.lclclerk.com', '.accounts.lclclerk.com'];\nexport const STAGING_ENV_SUFFIXES = ['.accountsstage.dev'];\nexport const LOCAL_API_URL = 'https://api.lclclerk.com';\nexport const STAGING_API_URL = 'https://api.clerkstage.dev';\nexport const PROD_API_URL = 'https://api.clerk.com';\n\nexport const LOCAL_FAPI_URL = 'https://frontend-api.lclclerk.com';\nexport const STAGING_FAPI_URL = 'https://frontend-api.clerkstage.dev';\nexport const PROD_FAPI_URL = 'https://frontend-api.clerk.dev';\n\nexport const DEFAULT_PROXY_PATH = '/__clerk';\n\n/**\n * Returns the URL for a static image\n * using the new img.clerk.com service\n */\nexport function iconImageUrl(id: string, format: 'svg' | 'jpeg' = 'svg'): string {\n return `https://img.clerk.com/static/${id}.${format}`;\n}\n"],"mappings":";;AAAA,MAAa,+BAA+B;CAAC;CAAY;CAAiB;CAAgB;AAC1F,MAAa,gCAAgC;CAAC;CAAiB;CAAsB;CAAyB;AAC9G,MAAa,0BAA0B;CACrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AACD,MAAa,qBAAqB;CAAC;CAAY;CAAgB;CAAiB;CAAyB;AACzG,MAAa,uBAAuB,CAAC,qBAAqB;AAC1D,MAAa,gBAAgB;AAC7B,MAAa,kBAAkB;AAC/B,MAAa,eAAe;AAE5B,MAAa,iBAAiB;AAC9B,MAAa,mBAAmB;AAChC,MAAa,gBAAgB;AAE7B,MAAa,qBAAqB;;;;;AAMlC,SAAgB,aAAa,IAAY,SAAyB,OAAe;AAC/E,QAAO,gCAAgC,GAAG,GAAG"}

View File

@@ -0,0 +1,21 @@
//#region src/constants.d.ts
declare const LEGACY_DEV_INSTANCE_SUFFIXES: string[];
declare const CURRENT_DEV_INSTANCE_SUFFIXES: string[];
declare const DEV_OR_STAGING_SUFFIXES: string[];
declare const LOCAL_ENV_SUFFIXES: string[];
declare const STAGING_ENV_SUFFIXES: string[];
declare const LOCAL_API_URL = "https://api.lclclerk.com";
declare const STAGING_API_URL = "https://api.clerkstage.dev";
declare const PROD_API_URL = "https://api.clerk.com";
declare const LOCAL_FAPI_URL = "https://frontend-api.lclclerk.com";
declare const STAGING_FAPI_URL = "https://frontend-api.clerkstage.dev";
declare const PROD_FAPI_URL = "https://frontend-api.clerk.dev";
declare const DEFAULT_PROXY_PATH = "/__clerk";
/**
* Returns the URL for a static image
* using the new img.clerk.com service
*/
declare function iconImageUrl(id: string, format?: 'svg' | 'jpeg'): string;
//#endregion
export { CURRENT_DEV_INSTANCE_SUFFIXES, DEFAULT_PROXY_PATH, DEV_OR_STAGING_SUFFIXES, LEGACY_DEV_INSTANCE_SUFFIXES, LOCAL_API_URL, LOCAL_ENV_SUFFIXES, LOCAL_FAPI_URL, PROD_API_URL, PROD_FAPI_URL, STAGING_API_URL, STAGING_ENV_SUFFIXES, STAGING_FAPI_URL, iconImageUrl };
//# sourceMappingURL=constants.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"constants.d.mts","names":[],"sources":["../../src/constants.ts"],"sourcesContent":[],"mappings":";cAAa;AAAA,cACA,6BAD6E,EAAA,MAAA,EAAA;AAC7E,cACA,uBADiG,EAAA,MAAA,EAAA;AACjG,cAWA,kBADZ,EAAA,MAAA,EAAA;AACY,cACA,oBAD4F,EAAA,MAAA,EAAA;AAC5F,cACA,aAAA,GAD6C,0BAAA;AAC7C,cACA,eAAA,GADa,4BAAA;AACb,cACA,YAAA,GADe,uBAAA;AACf,cAEA,cAAA,GAFY,mCAAA;AAEZ,cACA,gBAAA,GADc,qCAAA;AACd,cACA,aAAA,GADgB,gCAAA;AAChB,cAEA,kBAAA,GAFa,UAAA;AAE1B;AAMA;;;iBAAgB,YAAA"}

21
node_modules/@clerk/shared/dist/runtime/constants.d.ts generated vendored Normal file
View File

@@ -0,0 +1,21 @@
//#region src/constants.d.ts
declare const LEGACY_DEV_INSTANCE_SUFFIXES: string[];
declare const CURRENT_DEV_INSTANCE_SUFFIXES: string[];
declare const DEV_OR_STAGING_SUFFIXES: string[];
declare const LOCAL_ENV_SUFFIXES: string[];
declare const STAGING_ENV_SUFFIXES: string[];
declare const LOCAL_API_URL = "https://api.lclclerk.com";
declare const STAGING_API_URL = "https://api.clerkstage.dev";
declare const PROD_API_URL = "https://api.clerk.com";
declare const LOCAL_FAPI_URL = "https://frontend-api.lclclerk.com";
declare const STAGING_FAPI_URL = "https://frontend-api.clerkstage.dev";
declare const PROD_FAPI_URL = "https://frontend-api.clerk.dev";
declare const DEFAULT_PROXY_PATH = "/__clerk";
/**
* Returns the URL for a static image
* using the new img.clerk.com service
*/
declare function iconImageUrl(id: string, format?: 'svg' | 'jpeg'): string;
//#endregion
export { CURRENT_DEV_INSTANCE_SUFFIXES, DEFAULT_PROXY_PATH, DEV_OR_STAGING_SUFFIXES, LEGACY_DEV_INSTANCE_SUFFIXES, LOCAL_API_URL, LOCAL_ENV_SUFFIXES, LOCAL_FAPI_URL, PROD_API_URL, PROD_FAPI_URL, STAGING_API_URL, STAGING_ENV_SUFFIXES, STAGING_FAPI_URL, iconImageUrl };
//# sourceMappingURL=constants.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"constants.d.ts","names":[],"sources":["../../src/constants.ts"],"sourcesContent":[],"mappings":";cAAa;AAAA,cACA,6BAD6E,EAAA,MAAA,EAAA;AAC7E,cACA,uBADiG,EAAA,MAAA,EAAA;AACjG,cAWA,kBADZ,EAAA,MAAA,EAAA;AACY,cACA,oBAD4F,EAAA,MAAA,EAAA;AAC5F,cACA,aAAA,GAD6C,0BAAA;AAC7C,cACA,eAAA,GADa,4BAAA;AACb,cACA,YAAA,GADe,uBAAA;AACf,cAEA,cAAA,GAFY,mCAAA;AAEZ,cACA,gBAAA,GADc,qCAAA;AACd,cACA,aAAA,GADgB,gCAAA;AAChB,cAEA,kBAAA,GAFa,UAAA;AAE1B;AAMA;;;iBAAgB,YAAA"}

15
node_modules/@clerk/shared/dist/runtime/constants.js generated vendored Normal file
View File

@@ -0,0 +1,15 @@
const require_constants = require('./constants-WYhx_umW.js');
exports.CURRENT_DEV_INSTANCE_SUFFIXES = require_constants.CURRENT_DEV_INSTANCE_SUFFIXES;
exports.DEFAULT_PROXY_PATH = require_constants.DEFAULT_PROXY_PATH;
exports.DEV_OR_STAGING_SUFFIXES = require_constants.DEV_OR_STAGING_SUFFIXES;
exports.LEGACY_DEV_INSTANCE_SUFFIXES = require_constants.LEGACY_DEV_INSTANCE_SUFFIXES;
exports.LOCAL_API_URL = require_constants.LOCAL_API_URL;
exports.LOCAL_ENV_SUFFIXES = require_constants.LOCAL_ENV_SUFFIXES;
exports.LOCAL_FAPI_URL = require_constants.LOCAL_FAPI_URL;
exports.PROD_API_URL = require_constants.PROD_API_URL;
exports.PROD_FAPI_URL = require_constants.PROD_FAPI_URL;
exports.STAGING_API_URL = require_constants.STAGING_API_URL;
exports.STAGING_ENV_SUFFIXES = require_constants.STAGING_ENV_SUFFIXES;
exports.STAGING_FAPI_URL = require_constants.STAGING_FAPI_URL;
exports.iconImageUrl = require_constants.iconImageUrl;

View File

@@ -0,0 +1,3 @@
import { a as LOCAL_API_URL, c as PROD_API_URL, d as STAGING_ENV_SUFFIXES, f as STAGING_FAPI_URL, i as LEGACY_DEV_INSTANCE_SUFFIXES, l as PROD_FAPI_URL, n as DEFAULT_PROXY_PATH, o as LOCAL_ENV_SUFFIXES, p as iconImageUrl, r as DEV_OR_STAGING_SUFFIXES, s as LOCAL_FAPI_URL, t as CURRENT_DEV_INSTANCE_SUFFIXES, u as STAGING_API_URL } from "./constants-Bta24VLk.mjs";
export { CURRENT_DEV_INSTANCE_SUFFIXES, DEFAULT_PROXY_PATH, DEV_OR_STAGING_SUFFIXES, LEGACY_DEV_INSTANCE_SUFFIXES, LOCAL_API_URL, LOCAL_ENV_SUFFIXES, LOCAL_FAPI_URL, PROD_API_URL, PROD_FAPI_URL, STAGING_API_URL, STAGING_ENV_SUFFIXES, STAGING_FAPI_URL, iconImageUrl };

30
node_modules/@clerk/shared/dist/runtime/cookie.d.mts generated vendored Normal file
View File

@@ -0,0 +1,30 @@
//#region src/cookie.d.ts
/**
* Creates helper methods for dealing with a specific cookie.
*
* @example
* ```ts
* const cookie = createCookieHandler('my_cookie')
*
* cookie.set('my_value');
* cookie.get() // 'my_value';
* cookie.remove()
* ```
*/
declare function createCookieHandler(cookieName: string): {
get(): string | undefined;
/**
* Setting a cookie will use some defaults such as path being set to "/".
*/
set(newValue: string, options?: Cookies.CookieAttributes): void;
/**
* On removing a cookie, you have to pass the exact same path/domain attributes used to set it initially
* > IMPORTANT! When deleting a cookie and you're not relying on the default attributes, you must pass the exact same path, domain, secure and sameSite attributes that were used to set the cookie.
*
* @see https://github.com/js-cookie/js-cookie#basic-usage
*/
remove(cookieAttributes?: Cookies.CookieAttributes): void;
};
//#endregion
export { createCookieHandler };
//# sourceMappingURL=cookie.d.mts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"cookie.d.mts","names":[],"sources":["../../src/cookie.ts"],"sourcesContent":[],"mappings":";;AAcA;;;;;;;;;;;iBAAgB,mBAAA;;;;;kCAQmB,OAAA,CAAQ;;;;;;;4BASb,OAAA,CAAQ"}

30
node_modules/@clerk/shared/dist/runtime/cookie.d.ts generated vendored Normal file
View File

@@ -0,0 +1,30 @@
//#region src/cookie.d.ts
/**
* Creates helper methods for dealing with a specific cookie.
*
* @example
* ```ts
* const cookie = createCookieHandler('my_cookie')
*
* cookie.set('my_value');
* cookie.get() // 'my_value';
* cookie.remove()
* ```
*/
declare function createCookieHandler(cookieName: string): {
get(): string | undefined;
/**
* Setting a cookie will use some defaults such as path being set to "/".
*/
set(newValue: string, options?: Cookies.CookieAttributes): void;
/**
* On removing a cookie, you have to pass the exact same path/domain attributes used to set it initially
* > IMPORTANT! When deleting a cookie and you're not relying on the default attributes, you must pass the exact same path, domain, secure and sameSite attributes that were used to set the cookie.
*
* @see https://github.com/js-cookie/js-cookie#basic-usage
*/
remove(cookieAttributes?: Cookies.CookieAttributes): void;
};
//#endregion
export { createCookieHandler };
//# sourceMappingURL=cookie.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"cookie.d.ts","names":[],"sources":["../../src/cookie.ts"],"sourcesContent":[],"mappings":";;AAcA;;;;;;;;;;;iBAAgB,mBAAA;;;;;kCAQmB,OAAA,CAAQ;;;;;;;4BASb,OAAA,CAAQ"}

34
node_modules/@clerk/shared/dist/runtime/cookie.js generated vendored Normal file
View File

@@ -0,0 +1,34 @@
const require_chunk = require('./chunk-nOFOJqeH.js');
let js_cookie = require("js-cookie");
js_cookie = require_chunk.__toESM(js_cookie);
//#region src/cookie.ts
/**
* Creates helper methods for dealing with a specific cookie.
*
* @example
* ```ts
* const cookie = createCookieHandler('my_cookie')
*
* cookie.set('my_value');
* cookie.get() // 'my_value';
* cookie.remove()
* ```
*/
function createCookieHandler(cookieName) {
return {
get() {
return js_cookie.default.get(cookieName);
},
set(newValue, options = {}) {
js_cookie.default.set(cookieName, newValue, options);
},
remove(cookieAttributes) {
js_cookie.default.remove(cookieName, cookieAttributes);
}
};
}
//#endregion
exports.createCookieHandler = createCookieHandler;
//# sourceMappingURL=cookie.js.map

Some files were not shown because too many files have changed in this diff Show More