@clerk/backend 3.0.0-snapshot.v20260113135251 → 3.0.0-snapshot.v20260114095952

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  createAuthenticateRequest,
3
3
  createBackendApiClient,
4
4
  verifyToken
5
- } from "./chunk-LJ7TIBGO.mjs";
5
+ } from "./chunk-DSCJUJ44.mjs";
6
6
  import "./chunk-YBVFDYDR.mjs";
7
7
  import {
8
8
  withLegacyReturn
package/dist/internal.js CHANGED
@@ -228,7 +228,7 @@ module.exports = __toCommonJS(internal_exports);
228
228
  // src/constants.ts
229
229
  var API_URL = "https://api.clerk.com";
230
230
  var API_VERSION = "v1";
231
- var USER_AGENT = `${"@clerk/backend"}@${"3.0.0-snapshot.v20260113135251"}`;
231
+ var USER_AGENT = `${"@clerk/backend"}@${"3.0.0-snapshot.v20260114095952"}`;
232
232
  var MAX_CACHE_LAST_UPDATED_AT_SECONDS = 5 * 60;
233
233
  var SUPPORTED_BAPI_VERSION = "2025-11-10";
234
234
  var Attributes = {
@@ -249,7 +249,9 @@ var Cookies = {
249
249
  HandshakeNonce: "__clerk_handshake_nonce"
250
250
  };
251
251
  var QueryParameters = {
252
+ /** @deprecated Use ClerkSync with ClerkSyncStatus instead */
252
253
  ClerkSynced: "__clerk_synced",
254
+ ClerkSync: "__clerk_sync",
253
255
  SuffixedCookies: "suffixed_cookies",
254
256
  ClerkRedirectUrl: "__clerk_redirect_url",
255
257
  // use the reference to Cookies to indicate that it's the same value
@@ -295,12 +297,19 @@ var Headers2 = {
295
297
  var ContentTypes = {
296
298
  Json: "application/json"
297
299
  };
300
+ var ClerkSyncStatus = {
301
+ /** Trigger sync - satellite needs to handshake after returning from primary sign-in */
302
+ NeedsSync: "1",
303
+ /** Sync completed - prevents re-sync loop after handshake completes */
304
+ Completed: "2"
305
+ };
298
306
  var constants = {
299
307
  Attributes,
300
308
  Cookies,
301
309
  Headers: Headers2,
302
310
  ContentTypes,
303
- QueryParameters
311
+ QueryParameters,
312
+ ClerkSyncStatus
304
313
  };
305
314
 
306
315
  // src/createRedirect.ts
@@ -5991,17 +6000,46 @@ var authenticateRequest = (async (request, options) => {
5991
6000
  }
5992
6001
  }
5993
6002
  const isRequestEligibleForMultiDomainSync = authenticateContext.isSatellite && authenticateContext.secFetchDest === "document";
5994
- if (authenticateContext.instanceType === "production" && isRequestEligibleForMultiDomainSync) {
5995
- return handleMaybeHandshakeStatus(authenticateContext, AuthErrorReason.SatelliteCookieNeedsSyncing, "");
5996
- }
5997
- if (authenticateContext.instanceType === "development" && isRequestEligibleForMultiDomainSync && !authenticateContext.clerkUrl.searchParams.has(constants.QueryParameters.ClerkSynced)) {
5998
- const redirectURL = new URL(authenticateContext.signInUrl);
5999
- redirectURL.searchParams.append(
6000
- constants.QueryParameters.ClerkRedirectUrl,
6001
- authenticateContext.clerkUrl.toString()
6002
- );
6003
- const headers = new Headers({ [constants.Headers.Location]: redirectURL.toString() });
6004
- return handleMaybeHandshakeStatus(authenticateContext, AuthErrorReason.SatelliteCookieNeedsSyncing, "", headers);
6003
+ const syncStatus = authenticateContext.clerkUrl.searchParams.get(constants.QueryParameters.ClerkSync);
6004
+ const needsSync = syncStatus === constants.ClerkSyncStatus.NeedsSync;
6005
+ const legacySynced = authenticateContext.clerkUrl.searchParams.get(constants.QueryParameters.ClerkSynced) === "true";
6006
+ const syncCompleted = syncStatus === constants.ClerkSyncStatus.Completed || legacySynced;
6007
+ const hasCookies = hasSessionToken || hasActiveClient;
6008
+ const shouldSkipSatelliteHandshake = authenticateContext.satelliteAutoSync === false && !hasCookies && !needsSync;
6009
+ if (authenticateContext.instanceType === "production" && isRequestEligibleForMultiDomainSync && !syncCompleted) {
6010
+ if (shouldSkipSatelliteHandshake) {
6011
+ return signedOut({
6012
+ tokenType: TokenType.SessionToken,
6013
+ authenticateContext,
6014
+ reason: AuthErrorReason.SessionTokenAndUATMissing
6015
+ });
6016
+ }
6017
+ if (!hasCookies || needsSync) {
6018
+ return handleMaybeHandshakeStatus(authenticateContext, AuthErrorReason.SatelliteCookieNeedsSyncing, "");
6019
+ }
6020
+ }
6021
+ if (authenticateContext.instanceType === "development" && isRequestEligibleForMultiDomainSync && !syncCompleted) {
6022
+ if (shouldSkipSatelliteHandshake) {
6023
+ return signedOut({
6024
+ tokenType: TokenType.SessionToken,
6025
+ authenticateContext,
6026
+ reason: AuthErrorReason.SessionTokenAndUATMissing
6027
+ });
6028
+ }
6029
+ if (!hasCookies || needsSync) {
6030
+ const redirectURL = new URL(authenticateContext.signInUrl);
6031
+ redirectURL.searchParams.append(
6032
+ constants.QueryParameters.ClerkRedirectUrl,
6033
+ authenticateContext.clerkUrl.toString()
6034
+ );
6035
+ const headers = new Headers({ [constants.Headers.Location]: redirectURL.toString() });
6036
+ return handleMaybeHandshakeStatus(
6037
+ authenticateContext,
6038
+ AuthErrorReason.SatelliteCookieNeedsSyncing,
6039
+ "",
6040
+ headers
6041
+ );
6042
+ }
6005
6043
  }
6006
6044
  const redirectUrl = new URL(authenticateContext.clerkUrl).searchParams.get(
6007
6045
  constants.QueryParameters.ClerkRedirectUrl
@@ -6014,7 +6052,10 @@ var authenticateRequest = (async (request, options) => {
6014
6052
  authenticateContext.devBrowserToken
6015
6053
  );
6016
6054
  }
6017
- redirectBackToSatelliteUrl.searchParams.append(constants.QueryParameters.ClerkSynced, "true");
6055
+ redirectBackToSatelliteUrl.searchParams.set(
6056
+ constants.QueryParameters.ClerkSync,
6057
+ constants.ClerkSyncStatus.Completed
6058
+ );
6018
6059
  const headers = new Headers({ [constants.Headers.Location]: redirectBackToSatelliteUrl.toString() });
6019
6060
  return handleMaybeHandshakeStatus(authenticateContext, AuthErrorReason.PrimaryRespondsToSyncing, "", headers);
6020
6061
  }