1- import { type Clerk , isClerkRuntimeError } from '@clerk/clerk-js' ;
1+ import { type Clerk } from '@clerk/clerk-js' ;
22import type { BrowserClerk , HeadlessBrowserClerk } from '@clerk/react' ;
3- import { is4xxError } from '@clerk/shared/error' ;
3+ import { is4xxError , isClerkRuntimeError } from '@clerk/shared/error' ;
44import type {
55 ClientJSONSnapshot ,
66 EnvironmentJSONSnapshot ,
@@ -62,7 +62,7 @@ export function createClerkInstance(ClerkClass: typeof Clerk) {
6262
6363 const getToken = tokenCache . getToken ;
6464 const saveToken = tokenCache . saveToken ;
65- __internal_clerk = new ClerkClass ( publishableKey ) ;
65+ __internal_clerk = new ClerkClass ( publishableKey ) as unknown as BrowserClerk ;
6666
6767 if ( Platform . OS === 'ios' || Platform . OS === 'android' ) {
6868 // @ts -expect-error - This is an internal API
@@ -104,11 +104,13 @@ export function createClerkInstance(ClerkClass: typeof Clerk) {
104104 } ;
105105
106106 if ( createResourceCache ) {
107+ const isClerkNetworkError = ( err : unknown ) : boolean =>
108+ isClerkRuntimeError ( err ) && err . code === 'network_error' ;
109+
107110 const retryInitilizeResourcesFromFAPI = async ( ) => {
108- const isClerkNetworkError = ( err : unknown ) => isClerkRuntimeError ( err ) && err . code === 'network_error' ;
109111 try {
110112 await __internal_clerk ?. __internal_reloadInitialResources ( ) ;
111- } catch ( err ) {
113+ } catch ( err : unknown ) {
112114 // Retry after 3 seconds if the error is a network error or a 5xx error
113115 if ( isClerkNetworkError ( err ) || ! is4xxError ( err ) ) {
114116 // Retry after 2 seconds if the error is a network error
@@ -123,9 +125,12 @@ export function createClerkInstance(ClerkClass: typeof Clerk) {
123125 ClientResourceCache . init ( { publishableKey, storage : createResourceCache } ) ;
124126 SessionJWTCache . init ( { publishableKey, storage : createResourceCache } ) ;
125127
126- __internal_clerk . addListener ( ( { client } ) => {
128+ // At this point __internal_clerk is guaranteed to be defined (just created above)
129+
130+ const clerk = __internal_clerk ;
131+ clerk . addListener ( ( { client } ) => {
127132 // @ts -expect-error - This is an internal API
128- const environment = __internal_clerk ?. __internal_environment as EnvironmentResource ;
133+ const environment = clerk ?. __internal_environment as EnvironmentResource ;
129134 if ( environment ) {
130135 void EnvironmentResourceCache . save ( environment . __internal_toSnapshot ( ) ) ;
131136 }
@@ -144,7 +149,7 @@ export function createClerkInstance(ClerkClass: typeof Clerk) {
144149 }
145150 } ) ;
146151
147- __internal_clerk . __internal_getCachedResources = async ( ) : Promise < {
152+ clerk . __internal_getCachedResources = async ( ) : Promise < {
148153 client : ClientJSONSnapshot | null ;
149154 environment : EnvironmentJSONSnapshot | null ;
150155 } > => {
0 commit comments