@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
30 lines (28 loc) • 1.41 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
//#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
exports.getMajorVersion = getMajorVersion;
exports.versionSelector = versionSelector;
//# sourceMappingURL=versionSelector.js.map