@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
27 lines (26 loc) • 1.29 kB
JavaScript
//#region src/versionSelector.ts
/**
* This version selector is a bit complicated, so here is the flow:
* 1. Use the clerkJSVersion prop on the provider
* 2. Use the exact `@clerk/clerk-js` version if it is a `@snapshot` prerelease
* 3. Use the prerelease tag of `@clerk/clerk-js` or the packageVersion provided
* 4. Fallback to the major version of `@clerk/clerk-js` or the packageVersion provided
*
* @param clerkJSVersion - The optional clerkJSVersion prop on the provider
* @param packageVersion - The version of `@clerk/clerk-js` that will be used if an explicit version is not provided
* @returns The npm tag, version or major version to use
*/
const versionSelector = (clerkJSVersion, packageVersion = "6.25.6") => {
if (clerkJSVersion) return clerkJSVersion;
const prereleaseTag = getPrereleaseTag(packageVersion);
if (prereleaseTag) {
if (prereleaseTag === "snapshot") return packageVersion;
return prereleaseTag;
}
return getMajorVersion(packageVersion);
};
const getPrereleaseTag = (packageVersion) => packageVersion.trim().replace(/^v/, "").match(/-(.+?)(\.|$)/)?.[1];
const getMajorVersion = (packageVersion) => packageVersion.trim().replace(/^v/, "").split(".")[0];
//#endregion
export { getMajorVersion, versionSelector };
//# sourceMappingURL=versionSelector.mjs.map