@clerk/expo 3.4.3-snapshot.v20260613035952 → 3.4.3

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/app.plugin.js CHANGED
@@ -20,7 +20,7 @@ const path = require('path');
20
20
  const fs = require('fs');
21
21
 
22
22
  const CLERK_IOS_REPO = 'https://github.com/clerk/clerk-ios.git';
23
- const CLERK_IOS_VERSION = '1.2.3';
23
+ const CLERK_IOS_VERSION = '1.2.4';
24
24
 
25
25
  const CLERK_MIN_IOS_VERSION = '17.0';
26
26
 
@@ -6,6 +6,19 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
8
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
9
+ var __exportAll = (all, no_symbols) => {
10
+ let target = {};
11
+ for (var name in all) {
12
+ __defProp(target, name, {
13
+ get: all[name],
14
+ enumerable: true
15
+ });
16
+ }
17
+ if (!no_symbols) {
18
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
19
+ }
20
+ return target;
21
+ };
9
22
  var __copyProps = (to, from, except, desc) => {
10
23
  if (from && typeof from === "object" || typeof from === "function") {
11
24
  for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
@@ -20,6 +33,7 @@ var __copyProps = (to, from, except, desc) => {
20
33
  }
21
34
  return to;
22
35
  };
36
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
23
37
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
24
38
  value: mod,
25
39
  enumerable: true
@@ -28,4 +42,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
42
  //#endregion
29
43
 
30
44
  exports.__commonJSMin = __commonJSMin;
45
+ exports.__exportAll = __exportAll;
46
+ exports.__reExport = __reExport;
31
47
  exports.__toESM = __toESM;
@@ -1,4 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_hooks_useSignInWithApple = require('../hooks/useSignInWithApple.js');
2
+ let ___hooks_useSignInWithApple = require("../hooks/useSignInWithApple");
3
3
 
4
- exports.useSignInWithApple = require_hooks_useSignInWithApple.useSignInWithApple;
4
+ Object.defineProperty(exports, 'useSignInWithApple', {
5
+ enumerable: true,
6
+ get: function () {
7
+ return ___hooks_useSignInWithApple.useSignInWithApple;
8
+ }
9
+ });
@@ -1,4 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_hooks_useSignInWithGoogle = require('../hooks/useSignInWithGoogle.js');
2
+ let ___hooks_useSignInWithGoogle = require("../hooks/useSignInWithGoogle");
3
3
 
4
- exports.useSignInWithGoogle = require_hooks_useSignInWithGoogle.useSignInWithGoogle;
4
+ Object.defineProperty(exports, 'useSignInWithGoogle', {
5
+ enumerable: true,
6
+ get: function () {
7
+ return ___hooks_useSignInWithGoogle.useSignInWithGoogle;
8
+ }
9
+ });
@@ -1,10 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_specs_NativeClerkGoogleSignIn = require('../specs/NativeClerkGoogleSignIn.js');
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
3
+ let ___specs_NativeClerkGoogleSignIn = require("../specs/NativeClerkGoogleSignIn");
4
+ ___specs_NativeClerkGoogleSignIn = require_runtime.__toESM(___specs_NativeClerkGoogleSignIn);
3
5
 
4
6
  //#region src/google-one-tap/ClerkGoogleOneTapSignIn.ts
5
7
  function getNativeModule() {
6
- if (!require_specs_NativeClerkGoogleSignIn) throw new Error("ClerkGoogleSignIn native module is not available. Ensure the @clerk/expo plugin is added to your app.json and you have run a development build.");
7
- return require_specs_NativeClerkGoogleSignIn;
8
+ if (!___specs_NativeClerkGoogleSignIn.default) throw new Error("ClerkGoogleSignIn native module is not available. Ensure the @clerk/expo plugin is added to your app.json and you have run a development build.");
9
+ return ___specs_NativeClerkGoogleSignIn.default;
8
10
  }
9
11
  /**
10
12
  * Check if a response indicates the user cancelled the sign-in flow.
@@ -1 +1 @@
1
- {"version":3,"file":"ClerkGoogleOneTapSignIn.js","names":["NativeClerkGoogleSignIn"],"sources":["../../src/google-one-tap/ClerkGoogleOneTapSignIn.ts"],"sourcesContent":["import NativeClerkGoogleSignIn from '../specs/NativeClerkGoogleSignIn';\nimport type {\n CancelledResponse,\n ConfigureParams,\n CreateAccountParams,\n ExplicitSignInParams,\n NoSavedCredentialFound,\n OneTapResponse,\n OneTapSuccessResponse,\n SignInParams,\n} from './types';\n\nfunction getNativeModule(): NonNullable<typeof NativeClerkGoogleSignIn> {\n if (!NativeClerkGoogleSignIn) {\n throw new Error(\n 'ClerkGoogleSignIn native module is not available. ' +\n 'Ensure the @clerk/expo plugin is added to your app.json and you have run a development build.',\n );\n }\n return NativeClerkGoogleSignIn;\n}\n\n/**\n * Check if a response indicates the user cancelled the sign-in flow.\n */\nexport function isCancelledResponse(response: OneTapResponse): response is CancelledResponse {\n return response.type === 'cancelled';\n}\n\n/**\n * Check if a response indicates no saved credential was found.\n */\nexport function isNoSavedCredentialFoundResponse(response: OneTapResponse): response is NoSavedCredentialFound {\n return response.type === 'noSavedCredentialFound';\n}\n\n/**\n * Check if a response is a successful sign-in.\n */\nexport function isSuccessResponse(response: OneTapResponse): response is OneTapSuccessResponse {\n return response.type === 'success';\n}\n\n/**\n * Check if an error has code and message properties (Google Sign-In error).\n */\nexport function isErrorWithCode(error: unknown): error is { code: string; message: string } {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n typeof (error as { code: unknown }).code === 'string' &&\n 'message' in error &&\n typeof (error as { message: unknown }).message === 'string'\n );\n}\n\n/**\n * Internal Google One Tap Sign-In module.\n *\n * This module provides native Google Sign-In functionality using Google's\n * Credential Manager API with full nonce support for replay attack protection.\n *\n * @internal This is an internal module. Use the `useSignInWithGoogle` hook instead.\n * @platform Android, iOS\n */\nexport const ClerkGoogleOneTapSignIn = {\n /**\n * Configure Google Sign-In. Must be called before any sign-in methods.\n *\n * @param params - Configuration parameters\n * @param params.webClientId - The web client ID from Google Cloud Console (required)\n * @param params.hostedDomain - Optional domain restriction\n * @param params.autoSelectEnabled - Auto-select for single credential (default: false)\n */\n configure(params: ConfigureParams): void {\n getNativeModule().configure(params as any);\n },\n\n /**\n * Attempt to sign in with saved credentials (One Tap).\n *\n * This method will show the One Tap UI if there are saved credentials,\n * or return a \"noSavedCredentialFound\" response if there are none.\n *\n * @param params - Sign-in parameters\n * @param params.nonce - Cryptographic nonce for replay protection\n * @param params.filterByAuthorizedAccounts - Only show previously authorized accounts (default: true)\n *\n * @returns Promise resolving to OneTapResponse\n */\n async signIn(params?: SignInParams): Promise<OneTapResponse> {\n try {\n return (await getNativeModule().signIn((params as any) ?? null)) as unknown as OneTapResponse;\n } catch (error) {\n if (isErrorWithCode(error)) {\n if (error.code === 'SIGN_IN_CANCELLED') {\n return { type: 'cancelled', data: null };\n }\n if (error.code === 'NO_SAVED_CREDENTIAL_FOUND') {\n return { type: 'noSavedCredentialFound', data: null };\n }\n }\n throw error;\n }\n },\n\n /**\n * Create a new account (shows all Google accounts).\n *\n * This method shows the account picker with all available Google accounts,\n * not just previously authorized ones.\n *\n * @param params - Create account parameters\n * @param params.nonce - Cryptographic nonce for replay protection\n *\n * @returns Promise resolving to OneTapResponse\n */\n async createAccount(params?: CreateAccountParams): Promise<OneTapResponse> {\n try {\n return (await getNativeModule().createAccount((params as any) ?? null)) as unknown as OneTapResponse;\n } catch (error) {\n if (isErrorWithCode(error)) {\n if (error.code === 'SIGN_IN_CANCELLED') {\n return { type: 'cancelled', data: null };\n }\n if (error.code === 'NO_SAVED_CREDENTIAL_FOUND') {\n return { type: 'noSavedCredentialFound', data: null };\n }\n }\n throw error;\n }\n },\n\n /**\n * Present explicit sign-in UI (Google Sign-In button flow).\n *\n * This shows the full Google Sign-In UI, similar to clicking a\n * \"Sign in with Google\" button.\n *\n * @param params - Explicit sign-in parameters\n * @param params.nonce - Cryptographic nonce for replay protection\n *\n * @returns Promise resolving to OneTapResponse\n */\n async presentExplicitSignIn(params?: ExplicitSignInParams): Promise<OneTapResponse> {\n try {\n return (await getNativeModule().presentExplicitSignIn((params as any) ?? null)) as unknown as OneTapResponse;\n } catch (error) {\n if (isErrorWithCode(error)) {\n if (error.code === 'SIGN_IN_CANCELLED') {\n return { type: 'cancelled', data: null };\n }\n }\n throw error;\n }\n },\n\n /**\n * Sign out and clear credential state.\n *\n * This disables automatic sign-in until the user signs in again.\n */\n async signOut(): Promise<void> {\n await getNativeModule().signOut();\n },\n};\n\nexport type {\n ConfigureParams,\n SignInParams,\n CreateAccountParams,\n ExplicitSignInParams,\n OneTapResponse,\n OneTapSuccessResponse,\n CancelledResponse,\n NoSavedCredentialFound,\n GoogleUser,\n} from './types';\n"],"mappings":";;;;AAYA,SAAS,kBAA+D;CACtE,IAAI,CAACA,uCACH,MAAM,IAAI,MACR,iJAEF;CAEF,OAAOA;AACT;;;;AAKA,SAAgB,oBAAoB,UAAyD;CAC3F,OAAO,SAAS,SAAS;AAC3B;;;;AAKA,SAAgB,iCAAiC,UAA8D;CAC7G,OAAO,SAAS,SAAS;AAC3B;;;;AAKA,SAAgB,kBAAkB,UAA6D;CAC7F,OAAO,SAAS,SAAS;AAC3B;;;;AAKA,SAAgB,gBAAgB,OAA4D;CAC1F,OACE,UAAU,QACV,OAAO,UAAU,YACjB,UAAU,SACV,OAAQ,MAA4B,SAAS,YAC7C,aAAa,SACb,OAAQ,MAA+B,YAAY;AAEvD;;;;;;;;;;AAWA,MAAa,0BAA0B;;;;;;;;;CASrC,UAAU,QAA+B;EACvC,gBAAgB,CAAC,CAAC,UAAU,MAAa;CAC3C;;;;;;;;;;;;;CAcA,MAAM,OAAO,QAAgD;EAC3D,IAAI;GACF,OAAQ,MAAM,gBAAgB,CAAC,CAAC,OAAQ,UAAkB,IAAI;EAChE,SAAS,OAAO;GACd,IAAI,gBAAgB,KAAK,GAAG;IAC1B,IAAI,MAAM,SAAS,qBACjB,OAAO;KAAE,MAAM;KAAa,MAAM;IAAK;IAEzC,IAAI,MAAM,SAAS,6BACjB,OAAO;KAAE,MAAM;KAA0B,MAAM;IAAK;GAExD;GACA,MAAM;EACR;CACF;;;;;;;;;;;;CAaA,MAAM,cAAc,QAAuD;EACzE,IAAI;GACF,OAAQ,MAAM,gBAAgB,CAAC,CAAC,cAAe,UAAkB,IAAI;EACvE,SAAS,OAAO;GACd,IAAI,gBAAgB,KAAK,GAAG;IAC1B,IAAI,MAAM,SAAS,qBACjB,OAAO;KAAE,MAAM;KAAa,MAAM;IAAK;IAEzC,IAAI,MAAM,SAAS,6BACjB,OAAO;KAAE,MAAM;KAA0B,MAAM;IAAK;GAExD;GACA,MAAM;EACR;CACF;;;;;;;;;;;;CAaA,MAAM,sBAAsB,QAAwD;EAClF,IAAI;GACF,OAAQ,MAAM,gBAAgB,CAAC,CAAC,sBAAuB,UAAkB,IAAI;EAC/E,SAAS,OAAO;GACd,IAAI,gBAAgB,KAAK,GACvB;QAAI,MAAM,SAAS,qBACjB,OAAO;KAAE,MAAM;KAAa,MAAM;IAAK;GACzC;GAEF,MAAM;EACR;CACF;;;;;;CAOA,MAAM,UAAyB;EAC7B,MAAM,gBAAgB,CAAC,CAAC,QAAQ;CAClC;AACF"}
1
+ {"version":3,"file":"ClerkGoogleOneTapSignIn.js","names":["NativeClerkGoogleSignIn"],"sources":["../../src/google-one-tap/ClerkGoogleOneTapSignIn.ts"],"sourcesContent":["import NativeClerkGoogleSignIn from '../specs/NativeClerkGoogleSignIn';\nimport type {\n CancelledResponse,\n ConfigureParams,\n CreateAccountParams,\n ExplicitSignInParams,\n NoSavedCredentialFound,\n OneTapResponse,\n OneTapSuccessResponse,\n SignInParams,\n} from './types';\n\nfunction getNativeModule(): NonNullable<typeof NativeClerkGoogleSignIn> {\n if (!NativeClerkGoogleSignIn) {\n throw new Error(\n 'ClerkGoogleSignIn native module is not available. ' +\n 'Ensure the @clerk/expo plugin is added to your app.json and you have run a development build.',\n );\n }\n return NativeClerkGoogleSignIn;\n}\n\n/**\n * Check if a response indicates the user cancelled the sign-in flow.\n */\nexport function isCancelledResponse(response: OneTapResponse): response is CancelledResponse {\n return response.type === 'cancelled';\n}\n\n/**\n * Check if a response indicates no saved credential was found.\n */\nexport function isNoSavedCredentialFoundResponse(response: OneTapResponse): response is NoSavedCredentialFound {\n return response.type === 'noSavedCredentialFound';\n}\n\n/**\n * Check if a response is a successful sign-in.\n */\nexport function isSuccessResponse(response: OneTapResponse): response is OneTapSuccessResponse {\n return response.type === 'success';\n}\n\n/**\n * Check if an error has code and message properties (Google Sign-In error).\n */\nexport function isErrorWithCode(error: unknown): error is { code: string; message: string } {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'code' in error &&\n typeof (error as { code: unknown }).code === 'string' &&\n 'message' in error &&\n typeof (error as { message: unknown }).message === 'string'\n );\n}\n\n/**\n * Internal Google One Tap Sign-In module.\n *\n * This module provides native Google Sign-In functionality using Google's\n * Credential Manager API with full nonce support for replay attack protection.\n *\n * @internal This is an internal module. Use the `useSignInWithGoogle` hook instead.\n * @platform Android, iOS\n */\nexport const ClerkGoogleOneTapSignIn = {\n /**\n * Configure Google Sign-In. Must be called before any sign-in methods.\n *\n * @param params - Configuration parameters\n * @param params.webClientId - The web client ID from Google Cloud Console (required)\n * @param params.hostedDomain - Optional domain restriction\n * @param params.autoSelectEnabled - Auto-select for single credential (default: false)\n */\n configure(params: ConfigureParams): void {\n getNativeModule().configure(params as any);\n },\n\n /**\n * Attempt to sign in with saved credentials (One Tap).\n *\n * This method will show the One Tap UI if there are saved credentials,\n * or return a \"noSavedCredentialFound\" response if there are none.\n *\n * @param params - Sign-in parameters\n * @param params.nonce - Cryptographic nonce for replay protection\n * @param params.filterByAuthorizedAccounts - Only show previously authorized accounts (default: true)\n *\n * @returns Promise resolving to OneTapResponse\n */\n async signIn(params?: SignInParams): Promise<OneTapResponse> {\n try {\n return (await getNativeModule().signIn((params as any) ?? null)) as unknown as OneTapResponse;\n } catch (error) {\n if (isErrorWithCode(error)) {\n if (error.code === 'SIGN_IN_CANCELLED') {\n return { type: 'cancelled', data: null };\n }\n if (error.code === 'NO_SAVED_CREDENTIAL_FOUND') {\n return { type: 'noSavedCredentialFound', data: null };\n }\n }\n throw error;\n }\n },\n\n /**\n * Create a new account (shows all Google accounts).\n *\n * This method shows the account picker with all available Google accounts,\n * not just previously authorized ones.\n *\n * @param params - Create account parameters\n * @param params.nonce - Cryptographic nonce for replay protection\n *\n * @returns Promise resolving to OneTapResponse\n */\n async createAccount(params?: CreateAccountParams): Promise<OneTapResponse> {\n try {\n return (await getNativeModule().createAccount((params as any) ?? null)) as unknown as OneTapResponse;\n } catch (error) {\n if (isErrorWithCode(error)) {\n if (error.code === 'SIGN_IN_CANCELLED') {\n return { type: 'cancelled', data: null };\n }\n if (error.code === 'NO_SAVED_CREDENTIAL_FOUND') {\n return { type: 'noSavedCredentialFound', data: null };\n }\n }\n throw error;\n }\n },\n\n /**\n * Present explicit sign-in UI (Google Sign-In button flow).\n *\n * This shows the full Google Sign-In UI, similar to clicking a\n * \"Sign in with Google\" button.\n *\n * @param params - Explicit sign-in parameters\n * @param params.nonce - Cryptographic nonce for replay protection\n *\n * @returns Promise resolving to OneTapResponse\n */\n async presentExplicitSignIn(params?: ExplicitSignInParams): Promise<OneTapResponse> {\n try {\n return (await getNativeModule().presentExplicitSignIn((params as any) ?? null)) as unknown as OneTapResponse;\n } catch (error) {\n if (isErrorWithCode(error)) {\n if (error.code === 'SIGN_IN_CANCELLED') {\n return { type: 'cancelled', data: null };\n }\n }\n throw error;\n }\n },\n\n /**\n * Sign out and clear credential state.\n *\n * This disables automatic sign-in until the user signs in again.\n */\n async signOut(): Promise<void> {\n await getNativeModule().signOut();\n },\n};\n\nexport type {\n ConfigureParams,\n SignInParams,\n CreateAccountParams,\n ExplicitSignInParams,\n OneTapResponse,\n OneTapSuccessResponse,\n CancelledResponse,\n NoSavedCredentialFound,\n GoogleUser,\n} from './types';\n"],"mappings":";;;;;;AAYA,SAAS,kBAA+D;CACtE,IAAI,CAACA,0CACH,MAAM,IAAI,MACR,iJAEF;CAEF,OAAOA;AACT;;;;AAKA,SAAgB,oBAAoB,UAAyD;CAC3F,OAAO,SAAS,SAAS;AAC3B;;;;AAKA,SAAgB,iCAAiC,UAA8D;CAC7G,OAAO,SAAS,SAAS;AAC3B;;;;AAKA,SAAgB,kBAAkB,UAA6D;CAC7F,OAAO,SAAS,SAAS;AAC3B;;;;AAKA,SAAgB,gBAAgB,OAA4D;CAC1F,OACE,UAAU,QACV,OAAO,UAAU,YACjB,UAAU,SACV,OAAQ,MAA4B,SAAS,YAC7C,aAAa,SACb,OAAQ,MAA+B,YAAY;AAEvD;;;;;;;;;;AAWA,MAAa,0BAA0B;;;;;;;;;CASrC,UAAU,QAA+B;EACvC,gBAAgB,CAAC,CAAC,UAAU,MAAa;CAC3C;;;;;;;;;;;;;CAcA,MAAM,OAAO,QAAgD;EAC3D,IAAI;GACF,OAAQ,MAAM,gBAAgB,CAAC,CAAC,OAAQ,UAAkB,IAAI;EAChE,SAAS,OAAO;GACd,IAAI,gBAAgB,KAAK,GAAG;IAC1B,IAAI,MAAM,SAAS,qBACjB,OAAO;KAAE,MAAM;KAAa,MAAM;IAAK;IAEzC,IAAI,MAAM,SAAS,6BACjB,OAAO;KAAE,MAAM;KAA0B,MAAM;IAAK;GAExD;GACA,MAAM;EACR;CACF;;;;;;;;;;;;CAaA,MAAM,cAAc,QAAuD;EACzE,IAAI;GACF,OAAQ,MAAM,gBAAgB,CAAC,CAAC,cAAe,UAAkB,IAAI;EACvE,SAAS,OAAO;GACd,IAAI,gBAAgB,KAAK,GAAG;IAC1B,IAAI,MAAM,SAAS,qBACjB,OAAO;KAAE,MAAM;KAAa,MAAM;IAAK;IAEzC,IAAI,MAAM,SAAS,6BACjB,OAAO;KAAE,MAAM;KAA0B,MAAM;IAAK;GAExD;GACA,MAAM;EACR;CACF;;;;;;;;;;;;CAaA,MAAM,sBAAsB,QAAwD;EAClF,IAAI;GACF,OAAQ,MAAM,gBAAgB,CAAC,CAAC,sBAAuB,UAAkB,IAAI;EAC/E,SAAS,OAAO;GACd,IAAI,gBAAgB,KAAK,GACvB;QAAI,MAAM,SAAS,qBACjB,OAAO;KAAE,MAAM;KAAa,MAAM;IAAK;GACzC;GAEF,MAAM;EACR;CACF;;;;;;CAOA,MAAM,UAAyB;EAC7B,MAAM,gBAAgB,CAAC,CAAC,QAAQ;CAClC;AACF"}
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_provider_singleton_singleton = require('./provider/singleton/singleton.js');
3
- require('./provider/singleton/index.js');
2
+ const require_provider_singleton_index = require('./provider/singleton/index.js');
4
3
  const require_provider_ClerkProvider = require('./provider/ClerkProvider.js');
5
4
  const require_hooks_useSSO = require('./hooks/useSSO.js');
6
5
  const require_hooks_useOAuth = require('./hooks/useOAuth.js');
@@ -41,7 +40,12 @@ Object.defineProperty(exports, 'Show', {
41
40
  return _clerk_react.Show;
42
41
  }
43
42
  });
44
- exports.getClerkInstance = require_provider_singleton_singleton.getClerkInstance;
43
+ Object.defineProperty(exports, 'getClerkInstance', {
44
+ enumerable: true,
45
+ get: function () {
46
+ return singleton_exports.getClerkInstance;
47
+ }
48
+ });
45
49
  Object.defineProperty(exports, 'isClerkAPIResponseError', {
46
50
  enumerable: true,
47
51
  get: function () {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { setErrorThrowerOptions } from '@clerk/react/internal';\n\nexport {\n isClerkAPIResponseError,\n isEmailLinkError,\n isKnownError,\n isMetamaskError,\n isClerkRuntimeError,\n} from '@clerk/react/errors';\n\nexport { getClerkInstance } from './provider/singleton';\n\nexport * from './provider/ClerkProvider';\nexport * from './hooks';\nexport * from './components';\n\n// Override Clerk React error thrower to show that errors come from @clerk/expo\nsetErrorThrowerOptions({ packageName: PACKAGE_NAME });\n\nexport type { TokenCache } from './cache/types';\n"],"mappings":";;;;;;;;;;;;;;;kDAiBuB,EAAE,2BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { setErrorThrowerOptions } from '@clerk/react/internal';\n\nexport {\n isClerkAPIResponseError,\n isEmailLinkError,\n isKnownError,\n isMetamaskError,\n isClerkRuntimeError,\n} from '@clerk/react/errors';\n\nexport { getClerkInstance } from './provider/singleton';\n\nexport * from './provider/ClerkProvider';\nexport * from './hooks';\nexport * from './components';\n\n// Override Clerk React error thrower to show that errors come from @clerk/expo\nsetErrorThrowerOptions({ packageName: PACKAGE_NAME });\n\nexport type { TokenCache } from './cache/types';\n"],"mappings":";;;;;;;;;;;;;;kDAiBuB,EAAE,2BAA0B,CAAC"}
@@ -1,5 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_local_credentials_useLocalCredentials_useLocalCredentials = require('./useLocalCredentials/useLocalCredentials.js');
3
2
  require('./useLocalCredentials/index.js');
3
+ let __useLocalCredentials = require("./useLocalCredentials");
4
4
 
5
- exports.useLocalCredentials = require_local_credentials_useLocalCredentials_useLocalCredentials.useLocalCredentials;
5
+ Object.defineProperty(exports, 'useLocalCredentials', {
6
+ enumerable: true,
7
+ get: function () {
8
+ return __useLocalCredentials.useLocalCredentials;
9
+ }
10
+ });
@@ -1,4 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_local_credentials_useLocalCredentials_useLocalCredentials = require('./useLocalCredentials.js');
2
+ let __useLocalCredentials = require("./useLocalCredentials");
3
3
 
4
- exports.useLocalCredentials = require_local_credentials_useLocalCredentials_useLocalCredentials.useLocalCredentials;
4
+ Object.defineProperty(exports, 'useLocalCredentials', {
5
+ enumerable: true,
6
+ get: function () {
7
+ return __useLocalCredentials.useLocalCredentials;
8
+ }
9
+ });
@@ -1,9 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
2
3
  const require_utils_native_module = require('../utils/native-module.js');
3
- const require_specs_NativeClerkAuthView = require('../specs/NativeClerkAuthView.js');
4
4
  let react_native = require("react-native");
5
5
  let react = require("react");
6
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
+ let ___specs_NativeClerkAuthView = require("../specs/NativeClerkAuthView");
8
+ ___specs_NativeClerkAuthView = require_runtime.__toESM(___specs_NativeClerkAuthView);
7
9
 
8
10
  //#region src/native/AuthView.tsx
9
11
  /**
@@ -39,7 +41,7 @@ function AuthView({ mode = "signInOrUp", isDismissible = true, onDismiss }) {
39
41
  const handleAuthEvent = (0, react.useCallback)((event) => {
40
42
  if (event.nativeEvent.type === "dismissed") onDismiss?.();
41
43
  }, [onDismiss]);
42
- if (!require_utils_native_module.isNativeSupported || !require_specs_NativeClerkAuthView) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.View, {
44
+ if (!require_utils_native_module.isNativeSupported || !___specs_NativeClerkAuthView.default) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.View, {
43
45
  style: {
44
46
  flex: 1,
45
47
  justifyContent: "center",
@@ -53,7 +55,7 @@ function AuthView({ mode = "signInOrUp", isDismissible = true, onDismiss }) {
53
55
  children: !require_utils_native_module.isNativeSupported ? "Native AuthView is only available on iOS and Android" : "Native AuthView requires the @clerk/expo plugin. Add \"@clerk/expo\" to your app.json plugins array."
54
56
  })
55
57
  });
56
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_specs_NativeClerkAuthView, {
58
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___specs_NativeClerkAuthView.default, {
57
59
  style: { flex: 1 },
58
60
  mode,
59
61
  isDismissible,
@@ -1 +1 @@
1
- {"version":3,"file":"AuthView.js","names":["isNativeSupported","NativeClerkAuthView","View","Text"],"sources":["../../src/native/AuthView.tsx"],"sourcesContent":["import { type ComponentProps, type ReactElement, useCallback } from 'react';\nimport { Text, View } from 'react-native';\n\nimport NativeClerkAuthView from '../specs/NativeClerkAuthView';\nimport { isNativeSupported } from '../utils/native-module';\nimport type { AuthViewProps } from './AuthView.types';\n\ntype AuthNativeEvent = Parameters<NonNullable<ComponentProps<typeof NativeClerkAuthView>['onAuthEvent']>>[0];\n\n/**\n * A pre-built native authentication component that handles sign-in and sign-up flows.\n *\n * `AuthView` renders inline within your React Native view hierarchy, powered by:\n * - **iOS**: clerk-ios (SwiftUI) - https://github.com/clerk/clerk-ios\n * - **Android**: clerk-android (Jetpack Compose) - https://github.com/clerk/clerk-android\n *\n * After authentication completes, the session is automatically synced with the JS SDK.\n * Use `useAuth()`, `useUser()`, or `useSession()` to react to authentication\n * state changes.\n *\n * @example\n * ```tsx\n * import { AuthView } from '@clerk/expo/native';\n * import { useAuth } from '@clerk/expo';\n *\n * export default function SignInScreen() {\n * const { isSignedIn } = useAuth();\n *\n * useEffect(() => {\n * if (isSignedIn) router.replace('/home');\n * }, [isSignedIn]);\n *\n * return <AuthView />;\n * }\n * ```\n *\n * @see {@link https://clerk.com/docs/components/authentication/sign-in} Clerk Sign-In Documentation\n */\nexport function AuthView({ mode = 'signInOrUp', isDismissible = true, onDismiss }: AuthViewProps): ReactElement {\n const handleAuthEvent = useCallback(\n (event: AuthNativeEvent) => {\n if (event.nativeEvent.type === 'dismissed') {\n onDismiss?.();\n }\n },\n [onDismiss],\n );\n\n if (!isNativeSupported || !NativeClerkAuthView) {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <Text style={{ fontSize: 16, color: '#666' }}>\n {!isNativeSupported\n ? 'Native AuthView is only available on iOS and Android'\n : 'Native AuthView requires the @clerk/expo plugin. Add \"@clerk/expo\" to your app.json plugins array.'}\n </Text>\n </View>\n );\n }\n\n return (\n <NativeClerkAuthView\n style={{ flex: 1 }}\n mode={mode}\n isDismissible={isDismissible}\n onAuthEvent={handleAuthEvent}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgB,SAAS,EAAE,OAAO,cAAc,gBAAgB,MAAM,aAA0C;CAC9G,MAAM,0CACH,UAA2B;EAC1B,IAAI,MAAM,YAAY,SAAS,aAC7B,YAAY;CAEhB,GACA,CAAC,SAAS,CACZ;CAEA,IAAI,CAACA,iDAAqB,CAACC,mCACzB,OACE,2CAACC,mBAAD;EAAM,OAAO;GAAE,MAAM;GAAG,gBAAgB;GAAU,YAAY;EAAS;YACrE,2CAACC,mBAAD;GAAM,OAAO;IAAE,UAAU;IAAI,OAAO;GAAO;aACxC,CAACH,gDACE,yDACA;EACA;CACF;CAIV,OACE,2CAACC,mCAAD;EACE,OAAO,EAAE,MAAM,EAAE;EACX;EACS;EACf,aAAa;CACd;AAEL"}
1
+ {"version":3,"file":"AuthView.js","names":["isNativeSupported","NativeClerkAuthView","View","Text"],"sources":["../../src/native/AuthView.tsx"],"sourcesContent":["import { type ComponentProps, type ReactElement, useCallback } from 'react';\nimport { Text, View } from 'react-native';\n\nimport NativeClerkAuthView from '../specs/NativeClerkAuthView';\nimport { isNativeSupported } from '../utils/native-module';\nimport type { AuthViewProps } from './AuthView.types';\n\ntype AuthNativeEvent = Parameters<NonNullable<ComponentProps<typeof NativeClerkAuthView>['onAuthEvent']>>[0];\n\n/**\n * A pre-built native authentication component that handles sign-in and sign-up flows.\n *\n * `AuthView` renders inline within your React Native view hierarchy, powered by:\n * - **iOS**: clerk-ios (SwiftUI) - https://github.com/clerk/clerk-ios\n * - **Android**: clerk-android (Jetpack Compose) - https://github.com/clerk/clerk-android\n *\n * After authentication completes, the session is automatically synced with the JS SDK.\n * Use `useAuth()`, `useUser()`, or `useSession()` to react to authentication\n * state changes.\n *\n * @example\n * ```tsx\n * import { AuthView } from '@clerk/expo/native';\n * import { useAuth } from '@clerk/expo';\n *\n * export default function SignInScreen() {\n * const { isSignedIn } = useAuth();\n *\n * useEffect(() => {\n * if (isSignedIn) router.replace('/home');\n * }, [isSignedIn]);\n *\n * return <AuthView />;\n * }\n * ```\n *\n * @see {@link https://clerk.com/docs/components/authentication/sign-in} Clerk Sign-In Documentation\n */\nexport function AuthView({ mode = 'signInOrUp', isDismissible = true, onDismiss }: AuthViewProps): ReactElement {\n const handleAuthEvent = useCallback(\n (event: AuthNativeEvent) => {\n if (event.nativeEvent.type === 'dismissed') {\n onDismiss?.();\n }\n },\n [onDismiss],\n );\n\n if (!isNativeSupported || !NativeClerkAuthView) {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <Text style={{ fontSize: 16, color: '#666' }}>\n {!isNativeSupported\n ? 'Native AuthView is only available on iOS and Android'\n : 'Native AuthView requires the @clerk/expo plugin. Add \"@clerk/expo\" to your app.json plugins array.'}\n </Text>\n </View>\n );\n }\n\n return (\n <NativeClerkAuthView\n style={{ flex: 1 }}\n mode={mode}\n isDismissible={isDismissible}\n onAuthEvent={handleAuthEvent}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgB,SAAS,EAAE,OAAO,cAAc,gBAAgB,MAAM,aAA0C;CAC9G,MAAM,0CACH,UAA2B;EAC1B,IAAI,MAAM,YAAY,SAAS,aAC7B,YAAY;CAEhB,GACA,CAAC,SAAS,CACZ;CAEA,IAAI,CAACA,iDAAqB,CAACC,sCACzB,OACE,2CAACC,mBAAD;EAAM,OAAO;GAAE,MAAM;GAAG,gBAAgB;GAAU,YAAY;EAAS;YACrE,2CAACC,mBAAD;GAAM,OAAO;IAAE,UAAU;IAAI,OAAO;GAAO;aACxC,CAACH,gDACE,yDACA;EACA;CACF;CAIV,OACE,2CAACC,sCAAD;EACE,OAAO,EAAE,MAAM,EAAE;EACX;EACS;EACf,aAAa;CACd;AAEL"}
@@ -1,8 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
2
3
  const require_utils_native_module = require('../utils/native-module.js');
3
- const require_specs_NativeClerkUserButtonView = require('../specs/NativeClerkUserButtonView.js');
4
4
  let react_native = require("react-native");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
+ let ___specs_NativeClerkUserButtonView = require("../specs/NativeClerkUserButtonView");
7
+ ___specs_NativeClerkUserButtonView = require_runtime.__toESM(___specs_NativeClerkUserButtonView);
6
8
 
7
9
  //#region src/native/UserButton.tsx
8
10
  /**
@@ -24,8 +26,8 @@ let react_jsx_runtime = require("react/jsx-runtime");
24
26
  * @see {@link https://clerk.com/docs/components/user/user-button} Clerk UserButton Documentation
25
27
  */
26
28
  function UserButton() {
27
- if (!require_utils_native_module.isNativeSupported || !require_specs_NativeClerkUserButtonView) return null;
28
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_specs_NativeClerkUserButtonView, { style: styles.host });
29
+ if (!require_utils_native_module.isNativeSupported || !___specs_NativeClerkUserButtonView.default) return null;
30
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___specs_NativeClerkUserButtonView.default, { style: styles.host });
29
31
  }
30
32
  const styles = react_native.StyleSheet.create({ host: {
31
33
  width: 36,
@@ -1 +1 @@
1
- {"version":3,"file":"UserButton.js","names":["isNativeSupported","NativeClerkUserButtonView","StyleSheet"],"sources":["../../src/native/UserButton.tsx"],"sourcesContent":["import { StyleSheet } from 'react-native';\n\nimport NativeClerkUserButtonView from '../specs/NativeClerkUserButtonView';\nimport { isNativeSupported } from '../utils/native-module';\n\n/**\n * A pre-built button component that displays the user's avatar.\n *\n * `UserButton` renders the platform-native Clerk user button. Tapping it opens\n * the native user profile surface, matching Clerk's iOS and Android SDKs.\n *\n * @example\n * ```tsx\n * import { UserButton } from '@clerk/expo/native';\n *\n * export default function Home() {\n * return <UserButton />;\n * }\n * ```\n *\n * @see {@link UserProfileView} The profile view to render in your own presentation surface\n * @see {@link https://clerk.com/docs/components/user/user-button} Clerk UserButton Documentation\n */\nexport function UserButton() {\n if (!isNativeSupported || !NativeClerkUserButtonView) {\n return null;\n }\n\n return <NativeClerkUserButtonView style={styles.host} />;\n}\n\nconst styles = StyleSheet.create({\n // React Native/Yoga does not infer the intrinsic size of this native host view.\n host: {\n width: 36,\n height: 36,\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,SAAgB,aAAa;CAC3B,IAAI,CAACA,iDAAqB,CAACC,yCACzB,OAAO;CAGT,OAAO,2CAACA,yCAAD,EAA2B,OAAO,OAAO,KAAO;AACzD;AAEA,MAAM,SAASC,wBAAW,OAAO,EAE/B,MAAM;CACJ,OAAO;CACP,QAAQ;AACV,EACF,CAAC"}
1
+ {"version":3,"file":"UserButton.js","names":["isNativeSupported","NativeClerkUserButtonView","StyleSheet"],"sources":["../../src/native/UserButton.tsx"],"sourcesContent":["import { StyleSheet } from 'react-native';\n\nimport NativeClerkUserButtonView from '../specs/NativeClerkUserButtonView';\nimport { isNativeSupported } from '../utils/native-module';\n\n/**\n * A pre-built button component that displays the user's avatar.\n *\n * `UserButton` renders the platform-native Clerk user button. Tapping it opens\n * the native user profile surface, matching Clerk's iOS and Android SDKs.\n *\n * @example\n * ```tsx\n * import { UserButton } from '@clerk/expo/native';\n *\n * export default function Home() {\n * return <UserButton />;\n * }\n * ```\n *\n * @see {@link UserProfileView} The profile view to render in your own presentation surface\n * @see {@link https://clerk.com/docs/components/user/user-button} Clerk UserButton Documentation\n */\nexport function UserButton() {\n if (!isNativeSupported || !NativeClerkUserButtonView) {\n return null;\n }\n\n return <NativeClerkUserButtonView style={styles.host} />;\n}\n\nconst styles = StyleSheet.create({\n // React Native/Yoga does not infer the intrinsic size of this native host view.\n host: {\n width: 36,\n height: 36,\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,SAAgB,aAAa;CAC3B,IAAI,CAACA,iDAAqB,CAACC,4CACzB,OAAO;CAGT,OAAO,2CAACA,4CAAD,EAA2B,OAAO,OAAO,KAAO;AACzD;AAEA,MAAM,SAASC,wBAAW,OAAO,EAE/B,MAAM;CACJ,OAAO;CACP,QAAQ;AACV,EACF,CAAC"}
@@ -1,9 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
2
3
  const require_utils_native_module = require('../utils/native-module.js');
3
- const require_specs_NativeClerkUserProfileView = require('../specs/NativeClerkUserProfileView.js');
4
4
  let react_native = require("react-native");
5
5
  let react = require("react");
6
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
+ let ___specs_NativeClerkUserProfileView = require("../specs/NativeClerkUserProfileView");
8
+ ___specs_NativeClerkUserProfileView = require_runtime.__toESM(___specs_NativeClerkUserProfileView);
7
9
 
8
10
  //#region src/native/UserProfileView.tsx
9
11
  /**
@@ -40,14 +42,14 @@ function UserProfileView({ isDismissible = true, style, onDismiss }) {
40
42
  const handleProfileEvent = (0, react.useCallback)((event) => {
41
43
  if (event.nativeEvent.type === "dismissed") onDismiss?.();
42
44
  }, [onDismiss]);
43
- if (!require_utils_native_module.isNativeSupported || !require_specs_NativeClerkUserProfileView) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.View, {
45
+ if (!require_utils_native_module.isNativeSupported || !___specs_NativeClerkUserProfileView.default) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.View, {
44
46
  style: [styles.container, style],
45
47
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native.Text, {
46
48
  style: styles.text,
47
49
  children: !require_utils_native_module.isNativeSupported ? "Native UserProfileView is only available on iOS and Android" : "Native UserProfileView requires the @clerk/expo plugin. Add \"@clerk/expo\" to your app.json plugins array."
48
50
  })
49
51
  });
50
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_specs_NativeClerkUserProfileView, {
52
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(___specs_NativeClerkUserProfileView.default, {
51
53
  style: [styles.container, style],
52
54
  isDismissible,
53
55
  onProfileEvent: handleProfileEvent
@@ -1 +1 @@
1
- {"version":3,"file":"UserProfileView.js","names":["isNativeSupported","NativeClerkUserProfileView","View","Text","StyleSheet"],"sources":["../../src/native/UserProfileView.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport NativeClerkUserProfileView from '../specs/NativeClerkUserProfileView';\nimport { isNativeSupported } from '../utils/native-module';\n\n/**\n * Props for the UserProfileView component.\n */\nexport interface UserProfileViewProps {\n /**\n * Whether the inline profile view shows a dismiss button.\n *\n * This controls the native view's built-in dismiss button. It does not present\n * a modal; render `UserProfileView` inside your own `Modal`, sheet, or route.\n *\n * @default true\n */\n isDismissible?: boolean;\n\n /**\n * Style applied to the container view.\n */\n style?: StyleProp<ViewStyle>;\n\n /**\n * Called when the user dismisses the native profile view.\n */\n onDismiss?: () => void;\n}\n\n/**\n * A pre-built native component for managing the user's profile and account settings.\n *\n * `UserProfileView` renders inline within your React Native view hierarchy, powered by:\n * - **iOS**: clerk-ios (SwiftUI) - https://github.com/clerk/clerk-ios\n * - **Android**: clerk-android (Jetpack Compose) - https://github.com/clerk/clerk-android\n *\n * To present the profile, render it inside your own `Modal`, sheet, or route.\n *\n * Sign-out is detected automatically and synced with the JS SDK. Use `useAuth()` in a\n * `useEffect` to react to sign-out.\n *\n * @example\n * ```tsx\n * import { UserProfileView } from '@clerk/expo/native';\n * import { useAuth } from '@clerk/expo';\n *\n * export default function ProfileScreen() {\n * const { isSignedIn } = useAuth();\n *\n * useEffect(() => {\n * if (!isSignedIn) router.replace('/sign-in');\n * }, [isSignedIn]);\n *\n * return <UserProfileView style={{ flex: 1 }} />;\n * }\n * ```\n *\n * @see {@link https://clerk.com/docs/components/user/user-profile} Clerk UserProfile Documentation\n */\nexport function UserProfileView({ isDismissible = true, style, onDismiss }: UserProfileViewProps) {\n const handleProfileEvent = useCallback(\n (event: { nativeEvent: { type: string } }) => {\n if (event.nativeEvent.type === 'dismissed') {\n onDismiss?.();\n }\n },\n [onDismiss],\n );\n\n if (!isNativeSupported || !NativeClerkUserProfileView) {\n return (\n <View style={[styles.container, style]}>\n <Text style={styles.text}>\n {!isNativeSupported\n ? 'Native UserProfileView is only available on iOS and Android'\n : 'Native UserProfileView requires the @clerk/expo plugin. Add \"@clerk/expo\" to your app.json plugins array.'}\n </Text>\n </View>\n );\n }\n\n return (\n <NativeClerkUserProfileView\n style={[styles.container, style]}\n isDismissible={isDismissible}\n onProfileEvent={handleProfileEvent}\n />\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n text: {\n fontSize: 16,\n color: '#666',\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,SAAgB,gBAAgB,EAAE,gBAAgB,MAAM,OAAO,aAAmC;CAChG,MAAM,6CACH,UAA6C;EAC5C,IAAI,MAAM,YAAY,SAAS,aAC7B,YAAY;CAEhB,GACA,CAAC,SAAS,CACZ;CAEA,IAAI,CAACA,iDAAqB,CAACC,0CACzB,OACE,2CAACC,mBAAD;EAAM,OAAO,CAAC,OAAO,WAAW,KAAK;YACnC,2CAACC,mBAAD;GAAM,OAAO,OAAO;aACjB,CAACH,gDACE,gEACA;EACA;CACF;CAIV,OACE,2CAACC,0CAAD;EACE,OAAO,CAAC,OAAO,WAAW,KAAK;EAChB;EACf,gBAAgB;CACjB;AAEL;AAEA,MAAM,SAASG,wBAAW,OAAO;CAC/B,WAAW;EACT,MAAM;EACN,gBAAgB;EAChB,YAAY;CACd;CACA,MAAM;EACJ,UAAU;EACV,OAAO;CACT;AACF,CAAC"}
1
+ {"version":3,"file":"UserProfileView.js","names":["isNativeSupported","NativeClerkUserProfileView","View","Text","StyleSheet"],"sources":["../../src/native/UserProfileView.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport type { StyleProp, ViewStyle } from 'react-native';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport NativeClerkUserProfileView from '../specs/NativeClerkUserProfileView';\nimport { isNativeSupported } from '../utils/native-module';\n\n/**\n * Props for the UserProfileView component.\n */\nexport interface UserProfileViewProps {\n /**\n * Whether the inline profile view shows a dismiss button.\n *\n * This controls the native view's built-in dismiss button. It does not present\n * a modal; render `UserProfileView` inside your own `Modal`, sheet, or route.\n *\n * @default true\n */\n isDismissible?: boolean;\n\n /**\n * Style applied to the container view.\n */\n style?: StyleProp<ViewStyle>;\n\n /**\n * Called when the user dismisses the native profile view.\n */\n onDismiss?: () => void;\n}\n\n/**\n * A pre-built native component for managing the user's profile and account settings.\n *\n * `UserProfileView` renders inline within your React Native view hierarchy, powered by:\n * - **iOS**: clerk-ios (SwiftUI) - https://github.com/clerk/clerk-ios\n * - **Android**: clerk-android (Jetpack Compose) - https://github.com/clerk/clerk-android\n *\n * To present the profile, render it inside your own `Modal`, sheet, or route.\n *\n * Sign-out is detected automatically and synced with the JS SDK. Use `useAuth()` in a\n * `useEffect` to react to sign-out.\n *\n * @example\n * ```tsx\n * import { UserProfileView } from '@clerk/expo/native';\n * import { useAuth } from '@clerk/expo';\n *\n * export default function ProfileScreen() {\n * const { isSignedIn } = useAuth();\n *\n * useEffect(() => {\n * if (!isSignedIn) router.replace('/sign-in');\n * }, [isSignedIn]);\n *\n * return <UserProfileView style={{ flex: 1 }} />;\n * }\n * ```\n *\n * @see {@link https://clerk.com/docs/components/user/user-profile} Clerk UserProfile Documentation\n */\nexport function UserProfileView({ isDismissible = true, style, onDismiss }: UserProfileViewProps) {\n const handleProfileEvent = useCallback(\n (event: { nativeEvent: { type: string } }) => {\n if (event.nativeEvent.type === 'dismissed') {\n onDismiss?.();\n }\n },\n [onDismiss],\n );\n\n if (!isNativeSupported || !NativeClerkUserProfileView) {\n return (\n <View style={[styles.container, style]}>\n <Text style={styles.text}>\n {!isNativeSupported\n ? 'Native UserProfileView is only available on iOS and Android'\n : 'Native UserProfileView requires the @clerk/expo plugin. Add \"@clerk/expo\" to your app.json plugins array.'}\n </Text>\n </View>\n );\n }\n\n return (\n <NativeClerkUserProfileView\n style={[styles.container, style]}\n isDismissible={isDismissible}\n onProfileEvent={handleProfileEvent}\n />\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n text: {\n fontSize: 16,\n color: '#666',\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,SAAgB,gBAAgB,EAAE,gBAAgB,MAAM,OAAO,aAAmC;CAChG,MAAM,6CACH,UAA6C;EAC5C,IAAI,MAAM,YAAY,SAAS,aAC7B,YAAY;CAEhB,GACA,CAAC,SAAS,CACZ;CAEA,IAAI,CAACA,iDAAqB,CAACC,6CACzB,OACE,2CAACC,mBAAD;EAAM,OAAO,CAAC,OAAO,WAAW,KAAK;YACnC,2CAACC,mBAAD;GAAM,OAAO,OAAO;aACjB,CAACH,gDACE,gEACA;EACA;CACF;CAIV,OACE,2CAACC,6CAAD;EACE,OAAO,CAAC,OAAO,WAAW,KAAK;EAChB;EACf,gBAAgB;CACjB;AAEL;AAEA,MAAM,SAASG,wBAAW,OAAO;CAC/B,WAAW;EACT,MAAM;EACN,gBAAgB;EAChB,YAAY;CACd;CACA,MAAM;EACJ,UAAU;EACV,OAAO;CACT;AACF,CAAC"}
@@ -1,7 +1,7 @@
1
1
 
2
2
  //#region package.json
3
3
  var name = "@clerk/expo";
4
- var version = "3.4.3-snapshot.v20260613035952";
4
+ var version = "3.4.3";
5
5
 
6
6
  //#endregion
7
7
  Object.defineProperty(exports, 'name', {
@@ -1,5 +1,5 @@
1
- const require_package = require('../packages/expo/package.js');
2
1
  const require_index = require('../node_modules/.pnpm/@expo_config-plugins@54.0.4/node_modules/@expo/config-plugins/build/index.js');
2
+ const require_package = require('../packages/expo/package.js');
3
3
 
4
4
  //#region src/plugin/withClerkExpo.ts
5
5
  var import_build = require_index.default;
@@ -1,25 +1,26 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
2
3
  const require_constants = require('../constants.js');
4
+ const require_provider_singleton_index = require('./singleton/index.js');
3
5
  const require_utils_runtime = require('../utils/runtime.js');
4
- const require_specs_NativeClerkModule = require('../specs/NativeClerkModule.js');
5
- const require_provider_singleton_singleton = require('./singleton/singleton.js');
6
- require('./singleton/index.js');
7
6
  require('../polyfills/index.js');
8
7
  const require_hooks_useNativeClientEvents = require('../hooks/useNativeClientEvents.js');
9
8
  const require_token_cache_index = require('../token-cache/index.js');
10
- const require_provider_maybeCompleteAuthSession = require('./maybeCompleteAuthSession.js');
11
9
  let _clerk_react_internal = require("@clerk/react/internal");
12
10
  let react_native = require("react-native");
11
+ let ___specs_NativeClerkModule = require("../specs/NativeClerkModule");
12
+ ___specs_NativeClerkModule = require_runtime.__toESM(___specs_NativeClerkModule);
13
13
  let react = require("react");
14
+ let __maybeCompleteAuthSession = require("./maybeCompleteAuthSession");
14
15
  let react_jsx_runtime = require("react/jsx-runtime");
15
16
 
16
17
  //#region src/provider/ClerkProvider.tsx
17
18
  const SDK_METADATA = {
18
19
  name: "@clerk/expo",
19
- version: "3.4.3-snapshot.v20260613035952"
20
+ version: "3.4.3"
20
21
  };
21
22
  async function waitForNativeClientToken() {
22
- const ClerkExpo = require_specs_NativeClerkModule;
23
+ const ClerkExpo = ___specs_NativeClerkModule.default;
23
24
  if (!ClerkExpo?.getClientToken) return null;
24
25
  const maxAttempts = 30;
25
26
  const intervalMs = 100;
@@ -58,7 +59,7 @@ function NativeClientSync({ clerkInstance, isSyncingNativeClientToJsRef, publish
58
59
  if (isSyncingNativeClientToJsRef.current || isRefreshingNativeFromJsRef.current) return;
59
60
  isRefreshingNativeFromJsRef.current = true;
60
61
  const refreshNativeFromJsClient = async () => {
61
- const ClerkExpo = require_specs_NativeClerkModule;
62
+ const ClerkExpo = ___specs_NativeClerkModule.default;
62
63
  if (!ClerkExpo) return;
63
64
  const bearerToken = await effectiveTokenCache?.getToken("__clerk_client_jwt") ?? null;
64
65
  if (bearerToken) await ClerkExpo.configure(publishableKey, bearerToken);
@@ -90,7 +91,7 @@ function useNativeSessionBootstrap({ isSyncingNativeClientToJsRef, publishableKe
90
91
  initStartedRef.current = true;
91
92
  const configureNativeClerk = async () => {
92
93
  try {
93
- const ClerkExpo = require_specs_NativeClerkModule;
94
+ const ClerkExpo = ___specs_NativeClerkModule.default;
94
95
  if (ClerkExpo?.configure) {
95
96
  const effectiveTokenCache = tokenCache$3 ?? require_token_cache_index.tokenCache;
96
97
  let bearerToken = null;
@@ -143,7 +144,7 @@ function useNativeSessionBootstrap({ isSyncingNativeClientToJsRef, publishableKe
143
144
  function ClerkProvider(props) {
144
145
  const { children, tokenCache, publishableKey, proxyUrl, domain, __experimental_passkeys, experimental, __experimental_resourceCache, ...rest } = props;
145
146
  const pk = publishableKey;
146
- const clerkInstance = require_utils_runtime.isNative() ? require_provider_singleton_singleton.getClerkInstance({
147
+ const clerkInstance = require_utils_runtime.isNative() ? (0, require_provider_singleton_index.singleton_exports.getClerkInstance)({
147
148
  publishableKey: pk,
148
149
  tokenCache,
149
150
  proxyUrl,
@@ -182,7 +183,7 @@ function ClerkProvider(props) {
182
183
  tokenCache,
183
184
  isMountedRef
184
185
  ]);
185
- if (require_utils_runtime.isWeb()) /* @__PURE__ */ require_provider_maybeCompleteAuthSession.maybeCompleteAuthSession();
186
+ if (require_utils_runtime.isWeb()) (0, __maybeCompleteAuthSession.maybeCompleteAuthSession)();
186
187
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_clerk_react_internal.InternalClerkProvider, {
187
188
  ...rest,
188
189
  publishableKey: pk,
@@ -1 +1 @@
1
- {"version":3,"file":"ClerkProvider.js","names":["NativeClerkModule","CLERK_CLIENT_JWT_KEY","tokenCache","defaultTokenCache","Platform","isNative","getClerkInstance","useNativeClientEvents","isWeb","ClerkReactProvider"],"sources":["../../src/provider/ClerkProvider.tsx"],"sourcesContent":["import '../polyfills';\n\nimport type { ClerkProviderProps as ReactClerkProviderProps } from '@clerk/react';\nimport { InternalClerkProvider as ClerkReactProvider, type Ui } from '@clerk/react/internal';\nimport { type MutableRefObject, useEffect, useRef } from 'react';\nimport { Platform } from 'react-native';\n\nimport type { TokenCache } from '../cache/types';\nimport { CLERK_CLIENT_JWT_KEY } from '../constants';\nimport { useNativeClientEvents } from '../hooks/useNativeClientEvents';\nimport NativeClerkModule from '../specs/NativeClerkModule';\nimport { tokenCache as defaultTokenCache } from '../token-cache';\nimport { isNative, isWeb } from '../utils/runtime';\nimport { maybeCompleteAuthSession } from './maybeCompleteAuthSession';\nimport { getClerkInstance } from './singleton';\nimport type { BuildClerkOptions } from './singleton/types';\n\nexport type ClerkProviderProps<TUi extends Ui = Ui> = Omit<ReactClerkProviderProps<TUi>, 'publishableKey'> & {\n /**\n * Your Clerk publishable key, available in the Clerk Dashboard.\n * This is required for React Native / Expo apps. Environment variables inside node_modules\n * are not inlined during production builds, so the key must be passed explicitly.\n *\n * @example\n * ```tsx\n * const publishableKey = process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY!;\n * <ClerkProvider publishableKey={publishableKey}>\n * ```\n */\n publishableKey: string;\n /**\n * The token cache is used to persist the active user's session token. Clerk stores this token in memory by default, however it is recommended to use a token cache for production applications.\n * @see https://clerk.com/docs/quickstarts/expo#configure-the-token-cache-with-expo\n */\n tokenCache?: TokenCache;\n /**\n * Note: Passkey support in Expo is currently in a limited rollout phase.\n * If you're interested in using this feature, please contact us for early access or additional details.\n *\n * @experimental This API is experimental and may change at any moment.\n */\n __experimental_passkeys?: BuildClerkOptions['__experimental_passkeys'];\n /**\n * This cache is used to store the resources that Clerk fetches from the server when the network is offline.\n *\n * @experimental This API is experimental and may change at any moment.\n */\n __experimental_resourceCache?: BuildClerkOptions['__experimental_resourceCache'];\n};\n\nconst SDK_METADATA = {\n name: PACKAGE_NAME,\n version: PACKAGE_VERSION,\n};\n\ntype SyncableClerkInstance = {\n addListener?: (listener: (payload?: unknown) => void, options?: { skipInitialEmit?: boolean }) => () => void;\n addOnLoaded?: (listener: () => void) => void;\n client?: { lastActiveSessionId?: string | null } | null;\n loaded?: boolean;\n session?: { id?: string | null } | null;\n setActive?: (params: { session: string }) => void | Promise<void>;\n __internal_reloadInitialResources?: () => void | Promise<void>;\n};\n\nasync function waitForNativeClientToken(): Promise<string | null> {\n const ClerkExpo = NativeClerkModule;\n if (!ClerkExpo?.getClientToken) {\n return null;\n }\n\n const maxAttempts = 30;\n const intervalMs = 100;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const nativeClientToken = await ClerkExpo.getClientToken();\n if (nativeClientToken) {\n return nativeClientToken;\n }\n await new Promise(resolve => setTimeout(resolve, intervalMs));\n }\n\n return null;\n}\n\nasync function syncClientTokenToCache(tokenCache: TokenCache | undefined, clientToken: string | null): Promise<void> {\n if (clientToken) {\n await tokenCache?.saveToken(CLERK_CLIENT_JWT_KEY, clientToken);\n } else {\n await tokenCache?.clearToken?.(CLERK_CLIENT_JWT_KEY);\n }\n}\n\nasync function syncNativeClientToJs({\n clerkInstance,\n tokenCache,\n}: {\n clerkInstance: SyncableClerkInstance;\n tokenCache: TokenCache | undefined;\n}): Promise<void> {\n const nativeClientToken = await waitForNativeClientToken();\n const effectiveTokenCache = tokenCache ?? defaultTokenCache;\n\n await syncClientTokenToCache(effectiveTokenCache, nativeClientToken);\n if (typeof clerkInstance.__internal_reloadInitialResources === 'function') {\n await clerkInstance.__internal_reloadInitialResources();\n }\n\n const nativeActiveSessionId = clerkInstance.client?.lastActiveSessionId;\n const jsActiveSessionId = clerkInstance.session?.id;\n\n if (\n nativeActiveSessionId &&\n nativeActiveSessionId !== jsActiveSessionId &&\n typeof clerkInstance.setActive === 'function'\n ) {\n await clerkInstance.setActive({ session: nativeActiveSessionId });\n }\n}\n\n/**\n * Syncs JS SDK client changes to the native Clerk SDK so native components\n * (UserButton, UserProfileView) stay in sync after JS-owned resource changes.\n *\n * Must be rendered inside `ClerkReactProvider` so the Clerk instance has loaded\n * resources to emit.\n */\nfunction NativeClientSync({\n clerkInstance,\n isSyncingNativeClientToJsRef,\n publishableKey,\n tokenCache,\n}: {\n clerkInstance: SyncableClerkInstance | null | undefined;\n isSyncingNativeClientToJsRef: MutableRefObject<boolean>;\n publishableKey: string;\n tokenCache: TokenCache | undefined;\n}): null {\n const isRefreshingNativeFromJsRef = useRef(false);\n // Use the provided tokenCache, falling back to the default SecureStore cache\n const effectiveTokenCache = tokenCache ?? defaultTokenCache;\n\n useEffect(() => {\n if (!clerkInstance || typeof clerkInstance.addListener !== 'function') {\n return;\n }\n\n return clerkInstance.addListener(\n () => {\n if (isSyncingNativeClientToJsRef.current || isRefreshingNativeFromJsRef.current) {\n return;\n }\n\n isRefreshingNativeFromJsRef.current = true;\n\n const refreshNativeFromJsClient = async (): Promise<void> => {\n const ClerkExpo = NativeClerkModule;\n if (!ClerkExpo) {\n return;\n }\n\n const bearerToken = (await effectiveTokenCache?.getToken(CLERK_CLIENT_JWT_KEY)) ?? null;\n if (bearerToken) {\n // configure writes the token and refreshes native client state.\n await ClerkExpo.configure(publishableKey, bearerToken);\n } else {\n // No token to push; ask native to reload its current client.\n await ClerkExpo.refreshClient();\n }\n };\n\n void refreshNativeFromJsClient()\n .catch((error: unknown) => {\n if (__DEV__) {\n console.warn('[NativeClientSync] Failed to refresh native client from JS client change:', error);\n }\n })\n .finally(() => {\n isRefreshingNativeFromJsRef.current = false;\n });\n },\n { skipInitialEmit: true },\n );\n }, [clerkInstance, effectiveTokenCache, isSyncingNativeClientToJsRef, publishableKey]);\n\n return null;\n}\n\nfunction useNativeSessionBootstrap({\n isSyncingNativeClientToJsRef,\n publishableKey,\n tokenCache,\n clerkInstance,\n}: {\n isSyncingNativeClientToJsRef: MutableRefObject<boolean>;\n publishableKey: string;\n tokenCache: TokenCache | undefined;\n clerkInstance: SyncableClerkInstance | null | undefined;\n}) {\n const initStartedRef = useRef(false);\n const sessionSyncedRef = useRef(false);\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n initStartedRef.current = false;\n sessionSyncedRef.current = false;\n }, [publishableKey]);\n\n useEffect(() => {\n isMountedRef.current = true;\n\n if ((Platform.OS === 'ios' || Platform.OS === 'android') && publishableKey && !initStartedRef.current) {\n initStartedRef.current = true;\n\n const configureNativeClerk = async () => {\n try {\n const ClerkExpo = NativeClerkModule;\n\n if (ClerkExpo?.configure) {\n const effectiveTokenCache = tokenCache ?? defaultTokenCache;\n let bearerToken: string | null = null;\n try {\n bearerToken = (await effectiveTokenCache?.getToken(CLERK_CLIENT_JWT_KEY)) ?? null;\n } catch (e) {\n if (__DEV__) {\n console.warn('[ClerkProvider] Token cache read failed:', e);\n }\n }\n\n await ClerkExpo.configure(publishableKey, bearerToken);\n\n if (!isMountedRef.current) {\n return;\n }\n\n if (clerkInstance) {\n const waitForLoad = (): Promise<void> => {\n return new Promise(resolve => {\n if (clerkInstance.loaded) {\n resolve();\n } else if (typeof clerkInstance.addOnLoaded === 'function') {\n clerkInstance.addOnLoaded(() => resolve());\n } else {\n if (__DEV__) {\n console.warn('[ClerkProvider] Clerk instance has no loaded property or addOnLoaded method');\n }\n resolve();\n }\n });\n };\n\n await waitForLoad();\n\n if (!isMountedRef.current) {\n return;\n }\n\n if (!sessionSyncedRef.current) {\n sessionSyncedRef.current = true;\n isSyncingNativeClientToJsRef.current = true;\n try {\n await syncNativeClientToJs({\n clerkInstance,\n tokenCache,\n });\n } finally {\n isSyncingNativeClientToJsRef.current = false;\n }\n }\n }\n }\n } catch (error) {\n const isNativeModuleNotFound =\n error instanceof Error &&\n (error.message.includes('Cannot find native module') ||\n error.message.includes(\"TurboModuleRegistry.getEnforcing(...): 'ClerkExpo'\"));\n if (isNativeModuleNotFound) {\n if (__DEV__) {\n console.debug(\n `[ClerkProvider] Native Clerk module not available. ` +\n `To enable native features, add \"@clerk/expo\" to your app.json plugins array.`,\n );\n }\n } else if (__DEV__) {\n console.error(`[ClerkProvider] Failed to configure Clerk ${Platform.OS}:`, error);\n }\n }\n };\n void configureNativeClerk();\n }\n\n return () => {\n isMountedRef.current = false;\n };\n }, [publishableKey, tokenCache, clerkInstance, isSyncingNativeClientToJsRef]);\n\n return isMountedRef;\n}\n\nexport function ClerkProvider<TUi extends Ui = Ui>(props: ClerkProviderProps<TUi>): JSX.Element {\n const {\n children,\n tokenCache,\n publishableKey,\n proxyUrl,\n domain,\n __experimental_passkeys,\n experimental,\n __experimental_resourceCache,\n ...rest\n } = props;\n const pk = publishableKey;\n\n const clerkInstance = isNative()\n ? getClerkInstance({\n publishableKey: pk,\n tokenCache,\n proxyUrl,\n domain,\n __experimental_passkeys,\n __experimental_resourceCache,\n })\n : null;\n\n const isSyncingNativeClientToJsRef = useRef(false);\n const isMountedRef = useNativeSessionBootstrap({\n isSyncingNativeClientToJsRef,\n publishableKey: pk,\n tokenCache,\n clerkInstance,\n });\n\n // Listen for native client events and reload JS from the client source of truth.\n const { nativeClientEvent } = useNativeClientEvents();\n\n useEffect(() => {\n if (!nativeClientEvent || !clerkInstance) {\n return;\n }\n\n const syncNativeClientStateToJs = async () => {\n try {\n if (!isMountedRef.current) {\n return;\n }\n isSyncingNativeClientToJsRef.current = true;\n try {\n await syncNativeClientToJs({\n clerkInstance,\n tokenCache,\n });\n } finally {\n isSyncingNativeClientToJsRef.current = false;\n }\n } catch (error) {\n if (__DEV__) {\n console.error(`[ClerkProvider] Failed to sync native client state:`, error);\n }\n }\n };\n\n void syncNativeClientStateToJs();\n }, [nativeClientEvent, clerkInstance, tokenCache, isMountedRef]);\n\n // Needed for `useOAuth` / `useSSO` to work correctly on web — must stay synchronous during render\n // so the redirect URL is caught before children mount. Resolves to a no-op on native via the\n // sibling `maybeCompleteAuthSession.ts`, which keeps Metro from statically bundling\n // `expo-web-browser` (an optional peer) for native consumers.\n if (isWeb()) {\n maybeCompleteAuthSession();\n }\n\n return (\n <ClerkReactProvider\n // Force reset the state when the provided key changes, this ensures that the provider does not retain stale state.\n // See JS-598 for additional context.\n key={pk}\n {...rest}\n publishableKey={pk}\n proxyUrl={proxyUrl}\n domain={domain}\n sdkMetadata={SDK_METADATA}\n Clerk={clerkInstance}\n standardBrowser={!isNative()}\n experimental={{\n ...experimental,\n // force the rethrowOfflineNetworkErrors flag to true if the asyncStorage is provided\n rethrowOfflineNetworkErrors: !!__experimental_resourceCache || experimental?.rethrowOfflineNetworkErrors,\n ...(isNative() && { runtimeEnvironment: 'headless' as const }),\n }}\n >\n {isNative() && (\n <NativeClientSync\n clerkInstance={clerkInstance}\n isSyncingNativeClientToJsRef={isSyncingNativeClientToJsRef}\n publishableKey={pk}\n tokenCache={tokenCache}\n />\n )}\n {children}\n </ClerkReactProvider>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ClerkProvider.js","names":["NativeClerkModule","CLERK_CLIENT_JWT_KEY","tokenCache","defaultTokenCache","Platform","isNative","useNativeClientEvents","isWeb","ClerkReactProvider"],"sources":["../../src/provider/ClerkProvider.tsx"],"sourcesContent":["import '../polyfills';\n\nimport type { ClerkProviderProps as ReactClerkProviderProps } from '@clerk/react';\nimport { InternalClerkProvider as ClerkReactProvider, type Ui } from '@clerk/react/internal';\nimport { type MutableRefObject, useEffect, useRef } from 'react';\nimport { Platform } from 'react-native';\n\nimport type { TokenCache } from '../cache/types';\nimport { CLERK_CLIENT_JWT_KEY } from '../constants';\nimport { useNativeClientEvents } from '../hooks/useNativeClientEvents';\nimport NativeClerkModule from '../specs/NativeClerkModule';\nimport { tokenCache as defaultTokenCache } from '../token-cache';\nimport { isNative, isWeb } from '../utils/runtime';\nimport { maybeCompleteAuthSession } from './maybeCompleteAuthSession';\nimport { getClerkInstance } from './singleton';\nimport type { BuildClerkOptions } from './singleton/types';\n\nexport type ClerkProviderProps<TUi extends Ui = Ui> = Omit<ReactClerkProviderProps<TUi>, 'publishableKey'> & {\n /**\n * Your Clerk publishable key, available in the Clerk Dashboard.\n * This is required for React Native / Expo apps. Environment variables inside node_modules\n * are not inlined during production builds, so the key must be passed explicitly.\n *\n * @example\n * ```tsx\n * const publishableKey = process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY!;\n * <ClerkProvider publishableKey={publishableKey}>\n * ```\n */\n publishableKey: string;\n /**\n * The token cache is used to persist the active user's session token. Clerk stores this token in memory by default, however it is recommended to use a token cache for production applications.\n * @see https://clerk.com/docs/quickstarts/expo#configure-the-token-cache-with-expo\n */\n tokenCache?: TokenCache;\n /**\n * Note: Passkey support in Expo is currently in a limited rollout phase.\n * If you're interested in using this feature, please contact us for early access or additional details.\n *\n * @experimental This API is experimental and may change at any moment.\n */\n __experimental_passkeys?: BuildClerkOptions['__experimental_passkeys'];\n /**\n * This cache is used to store the resources that Clerk fetches from the server when the network is offline.\n *\n * @experimental This API is experimental and may change at any moment.\n */\n __experimental_resourceCache?: BuildClerkOptions['__experimental_resourceCache'];\n};\n\nconst SDK_METADATA = {\n name: PACKAGE_NAME,\n version: PACKAGE_VERSION,\n};\n\ntype SyncableClerkInstance = {\n addListener?: (listener: (payload?: unknown) => void, options?: { skipInitialEmit?: boolean }) => () => void;\n addOnLoaded?: (listener: () => void) => void;\n client?: { lastActiveSessionId?: string | null } | null;\n loaded?: boolean;\n session?: { id?: string | null } | null;\n setActive?: (params: { session: string }) => void | Promise<void>;\n __internal_reloadInitialResources?: () => void | Promise<void>;\n};\n\nasync function waitForNativeClientToken(): Promise<string | null> {\n const ClerkExpo = NativeClerkModule;\n if (!ClerkExpo?.getClientToken) {\n return null;\n }\n\n const maxAttempts = 30;\n const intervalMs = 100;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const nativeClientToken = await ClerkExpo.getClientToken();\n if (nativeClientToken) {\n return nativeClientToken;\n }\n await new Promise(resolve => setTimeout(resolve, intervalMs));\n }\n\n return null;\n}\n\nasync function syncClientTokenToCache(tokenCache: TokenCache | undefined, clientToken: string | null): Promise<void> {\n if (clientToken) {\n await tokenCache?.saveToken(CLERK_CLIENT_JWT_KEY, clientToken);\n } else {\n await tokenCache?.clearToken?.(CLERK_CLIENT_JWT_KEY);\n }\n}\n\nasync function syncNativeClientToJs({\n clerkInstance,\n tokenCache,\n}: {\n clerkInstance: SyncableClerkInstance;\n tokenCache: TokenCache | undefined;\n}): Promise<void> {\n const nativeClientToken = await waitForNativeClientToken();\n const effectiveTokenCache = tokenCache ?? defaultTokenCache;\n\n await syncClientTokenToCache(effectiveTokenCache, nativeClientToken);\n if (typeof clerkInstance.__internal_reloadInitialResources === 'function') {\n await clerkInstance.__internal_reloadInitialResources();\n }\n\n const nativeActiveSessionId = clerkInstance.client?.lastActiveSessionId;\n const jsActiveSessionId = clerkInstance.session?.id;\n\n if (\n nativeActiveSessionId &&\n nativeActiveSessionId !== jsActiveSessionId &&\n typeof clerkInstance.setActive === 'function'\n ) {\n await clerkInstance.setActive({ session: nativeActiveSessionId });\n }\n}\n\n/**\n * Syncs JS SDK client changes to the native Clerk SDK so native components\n * (UserButton, UserProfileView) stay in sync after JS-owned resource changes.\n *\n * Must be rendered inside `ClerkReactProvider` so the Clerk instance has loaded\n * resources to emit.\n */\nfunction NativeClientSync({\n clerkInstance,\n isSyncingNativeClientToJsRef,\n publishableKey,\n tokenCache,\n}: {\n clerkInstance: SyncableClerkInstance | null | undefined;\n isSyncingNativeClientToJsRef: MutableRefObject<boolean>;\n publishableKey: string;\n tokenCache: TokenCache | undefined;\n}): null {\n const isRefreshingNativeFromJsRef = useRef(false);\n // Use the provided tokenCache, falling back to the default SecureStore cache\n const effectiveTokenCache = tokenCache ?? defaultTokenCache;\n\n useEffect(() => {\n if (!clerkInstance || typeof clerkInstance.addListener !== 'function') {\n return;\n }\n\n return clerkInstance.addListener(\n () => {\n if (isSyncingNativeClientToJsRef.current || isRefreshingNativeFromJsRef.current) {\n return;\n }\n\n isRefreshingNativeFromJsRef.current = true;\n\n const refreshNativeFromJsClient = async (): Promise<void> => {\n const ClerkExpo = NativeClerkModule;\n if (!ClerkExpo) {\n return;\n }\n\n const bearerToken = (await effectiveTokenCache?.getToken(CLERK_CLIENT_JWT_KEY)) ?? null;\n if (bearerToken) {\n // configure writes the token and refreshes native client state.\n await ClerkExpo.configure(publishableKey, bearerToken);\n } else {\n // No token to push; ask native to reload its current client.\n await ClerkExpo.refreshClient();\n }\n };\n\n void refreshNativeFromJsClient()\n .catch((error: unknown) => {\n if (__DEV__) {\n console.warn('[NativeClientSync] Failed to refresh native client from JS client change:', error);\n }\n })\n .finally(() => {\n isRefreshingNativeFromJsRef.current = false;\n });\n },\n { skipInitialEmit: true },\n );\n }, [clerkInstance, effectiveTokenCache, isSyncingNativeClientToJsRef, publishableKey]);\n\n return null;\n}\n\nfunction useNativeSessionBootstrap({\n isSyncingNativeClientToJsRef,\n publishableKey,\n tokenCache,\n clerkInstance,\n}: {\n isSyncingNativeClientToJsRef: MutableRefObject<boolean>;\n publishableKey: string;\n tokenCache: TokenCache | undefined;\n clerkInstance: SyncableClerkInstance | null | undefined;\n}) {\n const initStartedRef = useRef(false);\n const sessionSyncedRef = useRef(false);\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n initStartedRef.current = false;\n sessionSyncedRef.current = false;\n }, [publishableKey]);\n\n useEffect(() => {\n isMountedRef.current = true;\n\n if ((Platform.OS === 'ios' || Platform.OS === 'android') && publishableKey && !initStartedRef.current) {\n initStartedRef.current = true;\n\n const configureNativeClerk = async () => {\n try {\n const ClerkExpo = NativeClerkModule;\n\n if (ClerkExpo?.configure) {\n const effectiveTokenCache = tokenCache ?? defaultTokenCache;\n let bearerToken: string | null = null;\n try {\n bearerToken = (await effectiveTokenCache?.getToken(CLERK_CLIENT_JWT_KEY)) ?? null;\n } catch (e) {\n if (__DEV__) {\n console.warn('[ClerkProvider] Token cache read failed:', e);\n }\n }\n\n await ClerkExpo.configure(publishableKey, bearerToken);\n\n if (!isMountedRef.current) {\n return;\n }\n\n if (clerkInstance) {\n const waitForLoad = (): Promise<void> => {\n return new Promise(resolve => {\n if (clerkInstance.loaded) {\n resolve();\n } else if (typeof clerkInstance.addOnLoaded === 'function') {\n clerkInstance.addOnLoaded(() => resolve());\n } else {\n if (__DEV__) {\n console.warn('[ClerkProvider] Clerk instance has no loaded property or addOnLoaded method');\n }\n resolve();\n }\n });\n };\n\n await waitForLoad();\n\n if (!isMountedRef.current) {\n return;\n }\n\n if (!sessionSyncedRef.current) {\n sessionSyncedRef.current = true;\n isSyncingNativeClientToJsRef.current = true;\n try {\n await syncNativeClientToJs({\n clerkInstance,\n tokenCache,\n });\n } finally {\n isSyncingNativeClientToJsRef.current = false;\n }\n }\n }\n }\n } catch (error) {\n const isNativeModuleNotFound =\n error instanceof Error &&\n (error.message.includes('Cannot find native module') ||\n error.message.includes(\"TurboModuleRegistry.getEnforcing(...): 'ClerkExpo'\"));\n if (isNativeModuleNotFound) {\n if (__DEV__) {\n console.debug(\n `[ClerkProvider] Native Clerk module not available. ` +\n `To enable native features, add \"@clerk/expo\" to your app.json plugins array.`,\n );\n }\n } else if (__DEV__) {\n console.error(`[ClerkProvider] Failed to configure Clerk ${Platform.OS}:`, error);\n }\n }\n };\n void configureNativeClerk();\n }\n\n return () => {\n isMountedRef.current = false;\n };\n }, [publishableKey, tokenCache, clerkInstance, isSyncingNativeClientToJsRef]);\n\n return isMountedRef;\n}\n\nexport function ClerkProvider<TUi extends Ui = Ui>(props: ClerkProviderProps<TUi>): JSX.Element {\n const {\n children,\n tokenCache,\n publishableKey,\n proxyUrl,\n domain,\n __experimental_passkeys,\n experimental,\n __experimental_resourceCache,\n ...rest\n } = props;\n const pk = publishableKey;\n\n const clerkInstance = isNative()\n ? getClerkInstance({\n publishableKey: pk,\n tokenCache,\n proxyUrl,\n domain,\n __experimental_passkeys,\n __experimental_resourceCache,\n })\n : null;\n\n const isSyncingNativeClientToJsRef = useRef(false);\n const isMountedRef = useNativeSessionBootstrap({\n isSyncingNativeClientToJsRef,\n publishableKey: pk,\n tokenCache,\n clerkInstance,\n });\n\n // Listen for native client events and reload JS from the client source of truth.\n const { nativeClientEvent } = useNativeClientEvents();\n\n useEffect(() => {\n if (!nativeClientEvent || !clerkInstance) {\n return;\n }\n\n const syncNativeClientStateToJs = async () => {\n try {\n if (!isMountedRef.current) {\n return;\n }\n isSyncingNativeClientToJsRef.current = true;\n try {\n await syncNativeClientToJs({\n clerkInstance,\n tokenCache,\n });\n } finally {\n isSyncingNativeClientToJsRef.current = false;\n }\n } catch (error) {\n if (__DEV__) {\n console.error(`[ClerkProvider] Failed to sync native client state:`, error);\n }\n }\n };\n\n void syncNativeClientStateToJs();\n }, [nativeClientEvent, clerkInstance, tokenCache, isMountedRef]);\n\n // Needed for `useOAuth` / `useSSO` to work correctly on web — must stay synchronous during render\n // so the redirect URL is caught before children mount. Resolves to a no-op on native via the\n // sibling `maybeCompleteAuthSession.ts`, which keeps Metro from statically bundling\n // `expo-web-browser` (an optional peer) for native consumers.\n if (isWeb()) {\n maybeCompleteAuthSession();\n }\n\n return (\n <ClerkReactProvider\n // Force reset the state when the provided key changes, this ensures that the provider does not retain stale state.\n // See JS-598 for additional context.\n key={pk}\n {...rest}\n publishableKey={pk}\n proxyUrl={proxyUrl}\n domain={domain}\n sdkMetadata={SDK_METADATA}\n Clerk={clerkInstance}\n standardBrowser={!isNative()}\n experimental={{\n ...experimental,\n // force the rethrowOfflineNetworkErrors flag to true if the asyncStorage is provided\n rethrowOfflineNetworkErrors: !!__experimental_resourceCache || experimental?.rethrowOfflineNetworkErrors,\n ...(isNative() && { runtimeEnvironment: 'headless' as const }),\n }}\n >\n {isNative() && (\n <NativeClientSync\n clerkInstance={clerkInstance}\n isSyncingNativeClientToJsRef={isSyncingNativeClientToJsRef}\n publishableKey={pk}\n tokenCache={tokenCache}\n />\n )}\n {children}\n </ClerkReactProvider>\n );\n}\n"],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_constants = require('../../constants.js');
3
3
  const require_errorThrower = require('../../errorThrower.js');
4
- const require_package = require('../../packages/expo/package.js');
4
+ const require_utils_runtime = require('../../utils/runtime.js');
5
+ const require_utils_errors = require('../../utils/errors.js');
6
+ require('../../utils/index.js');
5
7
  const require_cache_MemoryTokenCache = require('../../cache/MemoryTokenCache.js');
6
8
  const require_cache_ResourceCache = require('../../cache/ResourceCache.js');
7
9
  const require_cache_dummy_data_client_resource = require('../../cache/dummy-data/client-resource.js');
8
10
  const require_cache_dummy_data_environment_resource = require('../../cache/dummy-data/environment-resource.js');
9
11
  require('../../cache/index.js');
10
- const require_utils_runtime = require('../../utils/runtime.js');
11
- const require_utils_errors = require('../../utils/errors.js');
12
- require('../../utils/index.js');
12
+ const require_package = require('../../packages/expo/package.js');
13
13
  let _clerk_shared_error = require("@clerk/shared/error");
14
14
  let react_native = require("react-native");
15
15
 
@@ -1,4 +1,23 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_provider_singleton_singleton = require('./singleton.js');
2
+ const require_runtime = require('../../_virtual/_rolldown/runtime.js');
3
3
 
4
- exports.getClerkInstance = require_provider_singleton_singleton.getClerkInstance;
4
+ //#region src/provider/singleton/index.ts
5
+ var singleton_exports = /* @__PURE__ */ require_runtime.__exportAll({});
6
+ require_runtime.__reExport(singleton_exports, require("./singleton"));
7
+
8
+ //#endregion
9
+ Object.defineProperty(exports, 'singleton_exports', {
10
+ enumerable: true,
11
+ get: function () {
12
+ return singleton_exports;
13
+ }
14
+ });
15
+ var __singleton = require("./singleton");
16
+ Object.keys(__singleton).forEach(function (k) {
17
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
18
+ enumerable: true,
19
+ get: function () { return __singleton[k]; }
20
+ });
21
+ });
22
+
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/provider/singleton/index.ts"],"sourcesContent":["export * from './singleton';\n"],"mappings":""}
@@ -1,13 +1,15 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_specs_NativeClerkModule = require('../specs/NativeClerkModule.js');
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.js');
3
3
  let react_native = require("react-native");
4
+ let ___specs_NativeClerkModule = require("../specs/NativeClerkModule");
5
+ ___specs_NativeClerkModule = require_runtime.__toESM(___specs_NativeClerkModule);
4
6
 
5
7
  //#region src/utils/native-module.ts
6
8
  const isNativeSupported = react_native.Platform.OS === "ios" || react_native.Platform.OS === "android";
7
9
  function loadNativeModule() {
8
10
  if (!isNativeSupported) return null;
9
11
  try {
10
- return require_specs_NativeClerkModule;
12
+ return ___specs_NativeClerkModule.default;
11
13
  } catch (e) {
12
14
  return null;
13
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"native-module.js","names":["Platform","NativeClerkModule"],"sources":["../../src/utils/native-module.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nimport NativeClerkModule from '../specs/NativeClerkModule';\n\nexport const isNativeSupported = Platform.OS === 'ios' || Platform.OS === 'android';\n\nfunction loadNativeModule(): typeof NativeClerkModule | null {\n if (!isNativeSupported) {\n return null;\n }\n try {\n return NativeClerkModule;\n } catch (e) {\n if (__DEV__) {\n console.warn('[ClerkExpo] Native module not available:', e);\n }\n return null;\n }\n}\n\nexport const ClerkExpoModule = loadNativeModule();\n"],"mappings":";;;;;AAIA,MAAa,oBAAoBA,sBAAS,OAAO,SAASA,sBAAS,OAAO;AAE1E,SAAS,mBAAoD;CAC3D,IAAI,CAAC,mBACH,OAAO;CAET,IAAI;EACF,OAAOC;CACT,SAAS,GAAG;EAIV,OAAO;CACT;AACF;AAEA,MAAa,kBAAkB,iBAAiB"}
1
+ {"version":3,"file":"native-module.js","names":["Platform","NativeClerkModule"],"sources":["../../src/utils/native-module.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nimport NativeClerkModule from '../specs/NativeClerkModule';\n\nexport const isNativeSupported = Platform.OS === 'ios' || Platform.OS === 'android';\n\nfunction loadNativeModule(): typeof NativeClerkModule | null {\n if (!isNativeSupported) {\n return null;\n }\n try {\n return NativeClerkModule;\n } catch (e) {\n if (__DEV__) {\n console.warn('[ClerkExpo] Native module not available:', e);\n }\n return null;\n }\n}\n\nexport const ClerkExpoModule = loadNativeModule();\n"],"mappings":";;;;;;;AAIA,MAAa,oBAAoBA,sBAAS,OAAO,SAASA,sBAAS,OAAO;AAE1E,SAAS,mBAAoD;CAC3D,IAAI,CAAC,mBACH,OAAO;CAET,IAAI;EACF,OAAOC;CACT,SAAS,GAAG;EAIV,OAAO;CACT;AACF;AAEA,MAAa,kBAAkB,iBAAiB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clerk/expo",
3
- "version": "3.4.3-snapshot.v20260613035952",
3
+ "version": "3.4.3",
4
4
  "description": "Clerk React Native/Expo library",
5
5
  "keywords": [
6
6
  "react",
@@ -104,9 +104,9 @@
104
104
  "base-64": "^1.0.0",
105
105
  "react-native-url-polyfill": "2.0.0",
106
106
  "tslib": "2.8.1",
107
- "@clerk/clerk-js": "6.17.0-snapshot.v20260613035952",
108
- "@clerk/react": "6.10.0-snapshot.v20260613035952",
109
- "@clerk/shared": "4.18.0-snapshot.v20260613035952"
107
+ "@clerk/clerk-js": "^6.17.0",
108
+ "@clerk/react": "^6.10.0",
109
+ "@clerk/shared": "^4.18.0"
110
110
  },
111
111
  "devDependencies": {
112
112
  "@expo/config-plugins": "^54.0.4",
@@ -120,10 +120,10 @@
120
120
  "expo-secure-store": "^12.8.1",
121
121
  "expo-web-browser": "^12.8.2",
122
122
  "react-native": "^0.85.2",
123
- "@clerk/expo-passkeys": "1.1.5-snapshot.v20260613035952"
123
+ "@clerk/expo-passkeys": "1.1.5"
124
124
  },
125
125
  "peerDependencies": {
126
- "@clerk/expo-passkeys": "1.1.5-snapshot.v20260613035952",
126
+ "@clerk/expo-passkeys": ">=0.0.6",
127
127
  "expo": ">=53 <57",
128
128
  "expo-apple-authentication": ">=7.0.0",
129
129
  "expo-auth-session": ">=5",