Skip to content

Commit d190eff

Browse files
committed
chore(clerk-js): Refactor Clerk.#environment modifier to protected to use type assert
1 parent f6a5158 commit d190eff

File tree

1 file changed

+33
-32
lines changed

1 file changed

+33
-32
lines changed

packages/clerk-js/src/core/clerk.ts

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -153,14 +153,15 @@ export class Clerk implements ClerkInterface {
153153
public telemetry: TelemetryCollector | undefined;
154154

155155
protected internal_last_error: ClerkAPIError | null = null;
156+
// converted to protected environment to support `updateEnvironment` type assertion
157+
protected environment?: EnvironmentResource | null;
156158

157159
#publishableKey: string = '';
158160
#domain: DomainOrProxyUrl['domain'];
159161
#proxyUrl: DomainOrProxyUrl['proxyUrl'];
160162
#authService: SessionCookieService | null = null;
161163
#broadcastChannel: LocalStorageBroadcastChannel<ClerkCoreBroadcastChannelEvent> | null = null;
162164
#componentControls?: ReturnType<MountComponentRenderer> | null;
163-
#environment?: EnvironmentResource | null;
164165
//@ts-expect-error with being undefined even though it's not possible - related to issue with ts and error thrower
165166
#fapiClient: FapiClient;
166167
#instanceType?: InstanceType;
@@ -331,7 +332,7 @@ export class Clerk implements ClerkInterface {
331332

332333
public openSignIn = (props?: SignInProps): void => {
333334
this.assertComponentsReady(this.#componentControls);
334-
if (sessionExistsAndSingleSessionModeEnabled(this, this.#environment)) {
335+
if (sessionExistsAndSingleSessionModeEnabled(this, this.environment)) {
335336
if (this.#instanceType === 'development') {
336337
throw new ClerkRuntimeError(warnings.cannotOpenSignInOrSignUp, {
337338
code: 'cannot_render_single_session_enabled',
@@ -351,7 +352,7 @@ export class Clerk implements ClerkInterface {
351352

352353
public openSignUp = (props?: SignUpProps): void => {
353354
this.assertComponentsReady(this.#componentControls);
354-
if (sessionExistsAndSingleSessionModeEnabled(this, this.#environment)) {
355+
if (sessionExistsAndSingleSessionModeEnabled(this, this.environment)) {
355356
if (this.#instanceType === 'development') {
356357
throw new ClerkRuntimeError(warnings.cannotOpenSignInOrSignUp, {
357358
code: 'cannot_render_single_session_enabled',
@@ -391,7 +392,7 @@ export class Clerk implements ClerkInterface {
391392

392393
public openOrganizationProfile = (props?: OrganizationProfileProps): void => {
393394
this.assertComponentsReady(this.#componentControls);
394-
if (disabledOrganizationsFeature(this, this.#environment)) {
395+
if (disabledOrganizationsFeature(this, this.environment)) {
395396
if (this.#instanceType === 'development') {
396397
throw new ClerkRuntimeError(warnings.cannotRenderAnyOrganizationComponent('OrganizationProfile'), {
397398
code: 'cannot_render_organizations_disabled',
@@ -419,7 +420,7 @@ export class Clerk implements ClerkInterface {
419420

420421
public openCreateOrganization = (props?: CreateOrganizationProps): void => {
421422
this.assertComponentsReady(this.#componentControls);
422-
if (disabledOrganizationsFeature(this, this.#environment)) {
423+
if (disabledOrganizationsFeature(this, this.environment)) {
423424
if (this.#instanceType === 'development') {
424425
throw new ClerkRuntimeError(warnings.cannotRenderAnyOrganizationComponent('CreateOrganization'), {
425426
code: 'cannot_render_organizations_disabled',
@@ -538,7 +539,7 @@ export class Clerk implements ClerkInterface {
538539

539540
public mountOrganizationProfile = (node: HTMLDivElement, props?: OrganizationProfileProps) => {
540541
this.assertComponentsReady(this.#componentControls);
541-
if (disabledOrganizationsFeature(this, this.#environment)) {
542+
if (disabledOrganizationsFeature(this, this.environment)) {
542543
if (this.#instanceType === 'development') {
543544
throw new ClerkRuntimeError(warnings.cannotRenderAnyOrganizationComponent('OrganizationProfile'), {
544545
code: 'cannot_render_organizations_disabled',
@@ -578,7 +579,7 @@ export class Clerk implements ClerkInterface {
578579

579580
public mountCreateOrganization = (node: HTMLDivElement, props?: CreateOrganizationProps) => {
580581
this.assertComponentsReady(this.#componentControls);
581-
if (disabledOrganizationsFeature(this, this.#environment)) {
582+
if (disabledOrganizationsFeature(this, this.environment)) {
582583
if (this.#instanceType === 'development') {
583584
throw new ClerkRuntimeError(warnings.cannotRenderAnyOrganizationComponent('CreateOrganization'), {
584585
code: 'cannot_render_organizations_disabled',
@@ -609,7 +610,7 @@ export class Clerk implements ClerkInterface {
609610

610611
public mountOrganizationSwitcher = (node: HTMLDivElement, props?: OrganizationSwitcherProps) => {
611612
this.assertComponentsReady(this.#componentControls);
612-
if (disabledOrganizationsFeature(this, this.#environment)) {
613+
if (disabledOrganizationsFeature(this, this.environment)) {
613614
if (this.#instanceType === 'development') {
614615
throw new ClerkRuntimeError(warnings.cannotRenderAnyOrganizationComponent('OrganizationSwitcher'), {
615616
code: 'cannot_render_organizations_disabled',
@@ -636,7 +637,7 @@ export class Clerk implements ClerkInterface {
636637

637638
public mountOrganizationList = (node: HTMLDivElement, props?: OrganizationListProps) => {
638639
this.assertComponentsReady(this.#componentControls);
639-
if (disabledOrganizationsFeature(this, this.#environment)) {
640+
if (disabledOrganizationsFeature(this, this.environment)) {
640641
if (this.#instanceType === 'development') {
641642
throw new ClerkRuntimeError(warnings.cannotRenderAnyOrganizationComponent('OrganizationList'), {
642643
code: 'cannot_render_organizations_disabled',
@@ -846,17 +847,17 @@ export class Clerk implements ClerkInterface {
846847
}
847848

848849
public buildUserProfileUrl(): string {
849-
if (!this.#environment || !this.#environment.displayConfig) {
850+
if (!this.environment || !this.environment.displayConfig) {
850851
return '';
851852
}
852-
return this.buildUrlWithAuth(this.#environment.displayConfig.userProfileUrl);
853+
return this.buildUrlWithAuth(this.environment.displayConfig.userProfileUrl);
853854
}
854855

855856
public buildHomeUrl(): string {
856-
if (!this.#environment || !this.#environment.displayConfig) {
857+
if (!this.environment || !this.environment.displayConfig) {
857858
return '';
858859
}
859-
return this.buildUrlWithAuth(this.#environment.displayConfig.homeUrl);
860+
return this.buildUrlWithAuth(this.environment.displayConfig.homeUrl);
860861
}
861862

862863
public buildAfterSignInUrl(): string {
@@ -876,17 +877,17 @@ export class Clerk implements ClerkInterface {
876877
}
877878

878879
public buildCreateOrganizationUrl(): string {
879-
if (!this.#environment || !this.#environment.displayConfig) {
880+
if (!this.environment || !this.environment.displayConfig) {
880881
return '';
881882
}
882-
return this.buildUrlWithAuth(this.#environment.displayConfig.createOrganizationUrl);
883+
return this.buildUrlWithAuth(this.environment.displayConfig.createOrganizationUrl);
883884
}
884885

885886
public buildOrganizationProfileUrl(): string {
886-
if (!this.#environment || !this.#environment.displayConfig) {
887+
if (!this.environment || !this.environment.displayConfig) {
887888
return '';
888889
}
889-
return this.buildUrlWithAuth(this.#environment.displayConfig.organizationProfileUrl);
890+
return this.buildUrlWithAuth(this.environment.displayConfig.organizationProfileUrl);
890891
}
891892

892893
#redirectToSatellite = async (): Promise<unknown> => {
@@ -1022,7 +1023,7 @@ export class Clerk implements ClerkInterface {
10221023
params: HandleOAuthCallbackParams,
10231024
customNavigate?: (to: string) => Promise<unknown>,
10241025
): Promise<unknown> => {
1025-
if (!this.loaded || !this.#environment || !this.client) {
1026+
if (!this.loaded || !this.environment || !this.client) {
10261027
return;
10271028
}
10281029
const { signIn: _signIn, signUp: _signUp } = this.client;
@@ -1054,11 +1055,11 @@ export class Clerk implements ClerkInterface {
10541055
navigate: (to: string) => Promise<unknown>;
10551056
},
10561057
): Promise<unknown> => {
1057-
if (!this.loaded || !this.#environment || !this.client) {
1058+
if (!this.loaded || !this.environment || !this.client) {
10581059
return;
10591060
}
10601061

1061-
const { displayConfig } = this.#environment;
1062+
const { displayConfig } = this.environment;
10621063
const { firstFactorVerification } = signIn;
10631064
const { externalAccount } = signUp.verifications;
10641065
const su = {
@@ -1247,7 +1248,7 @@ export class Clerk implements ClerkInterface {
12471248
params: HandleOAuthCallbackParams = {},
12481249
customNavigate?: (to: string) => Promise<unknown>,
12491250
): Promise<unknown> => {
1250-
if (!this.loaded || !this.#environment || !this.client) {
1251+
if (!this.loaded || !this.environment || !this.client) {
12511252
return;
12521253
}
12531254
const { signIn, signUp } = this.client;
@@ -1306,7 +1307,7 @@ export class Clerk implements ClerkInterface {
13061307
customNavigate,
13071308
unsafeMetadata,
13081309
}: AuthenticateWithMetamaskParams = {}): Promise<void> => {
1309-
if (!this.client || !this.#environment) {
1310+
if (!this.client || !this.environment) {
13101311
return;
13111312
}
13121313

@@ -1353,7 +1354,7 @@ export class Clerk implements ClerkInterface {
13531354
Organization.get(organizationId);
13541355

13551356
public updateEnvironment(environment: EnvironmentResource): asserts this is { environment: EnvironmentResource } {
1356-
this.#environment = environment;
1357+
this.environment = environment;
13571358
this.#authService?.setEnvironment(environment);
13581359
}
13591360

@@ -1393,16 +1394,16 @@ export class Clerk implements ClerkInterface {
13931394
};
13941395

13951396
get __unstable__environment(): EnvironmentResource | null | undefined {
1396-
return this.#environment;
1397+
return this.environment;
13971398
}
13981399

13991400
// TODO: Fix this properly
14001401
// eslint-disable-next-line @typescript-eslint/require-await
14011402
__unstable__setEnvironment = async (env: EnvironmentJSON) => {
1402-
this.#environment = new Environment(env);
1403+
this.environment = new Environment(env);
14031404

14041405
if (Clerk.mountComponentRenderer) {
1405-
this.#componentControls = Clerk.mountComponentRenderer(this, this.#environment, this.#options);
1406+
this.#componentControls = Clerk.mountComponentRenderer(this, this.environment, this.#options);
14061407
}
14071408
};
14081409

@@ -1586,7 +1587,7 @@ export class Clerk implements ClerkInterface {
15861587
}
15871588

15881589
if (Clerk.mountComponentRenderer) {
1589-
this.#componentControls = Clerk.mountComponentRenderer(this, this.#environment as Environment, this.#options);
1590+
this.#componentControls = Clerk.mountComponentRenderer(this, this.environment as Environment, this.#options);
15901591
}
15911592

15921593
break;
@@ -1624,7 +1625,7 @@ export class Clerk implements ClerkInterface {
16241625
// TODO: Add an auth service also for non standard browsers that will poll for the __session JWT but won't use cookies
16251626

16261627
if (Clerk.mountComponentRenderer) {
1627-
this.#componentControls = Clerk.mountComponentRenderer(this, this.#environment, this.#options);
1628+
this.#componentControls = Clerk.mountComponentRenderer(this, this.environment, this.#options);
16281629
}
16291630

16301631
return true;
@@ -1737,10 +1738,10 @@ export class Clerk implements ClerkInterface {
17371738
options: RedirectOptions,
17381739
_initValues?: Record<string, string>,
17391740
): string => {
1740-
if (!key || !this.loaded || !this.#environment || !this.#environment.displayConfig) {
1741+
if (!key || !this.loaded || !this.environment || !this.environment.displayConfig) {
17411742
return '';
17421743
}
1743-
const signInOrUpUrl = this.#options[key] || this.#environment.displayConfig[key];
1744+
const signInOrUpUrl = this.#options[key] || this.environment.displayConfig[key];
17441745
const redirectUrls = new RedirectUrls(this.#options, options).toSearchParams();
17451746
const initValues = new URLSearchParams(_initValues || {});
17461747
const url = buildURL({ base: signInOrUpUrl, hashSearchParams: [initValues, redirectUrls] }, { stringify: true });
@@ -1766,9 +1767,9 @@ export class Clerk implements ClerkInterface {
17661767
}
17671768

17681769
const userSignedIn = this.session;
1769-
const signInUrl = this.#options.signInUrl || this.#environment?.displayConfig.signInUrl;
1770+
const signInUrl = this.#options.signInUrl || this.environment?.displayConfig.signInUrl;
17701771
const referrerIsSignInUrl = signInUrl && window.location.href.startsWith(signInUrl);
1771-
const signUpUrl = this.#options.signUpUrl || this.#environment?.displayConfig.signUpUrl;
1772+
const signUpUrl = this.#options.signUpUrl || this.environment?.displayConfig.signUpUrl;
17721773
const referrerIsSignUpUrl = signUpUrl && window.location.href.startsWith(signUpUrl);
17731774

17741775
// don't redirect if user is not signed in and referrer is sign in/up url

0 commit comments

Comments
 (0)