Skip to content

Commit 843ac1c

Browse files
committed
add defaults to classes instead
1 parent 8d87d26 commit 843ac1c

File tree

7 files changed

+50
-47
lines changed

7 files changed

+50
-47
lines changed

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

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import {
2-
type ActiveSessionResource,
3-
type ClientJSON,
4-
type ClientJSONSnapshot,
5-
type ClientResource,
6-
type SignedInSessionResource,
7-
type SignInResource,
8-
type SignUpResource,
1+
import type {
2+
ActiveSessionResource,
3+
ClientJSON,
4+
ClientJSONSnapshot,
5+
ClientResource,
6+
SignedInSessionResource,
7+
SignInResource,
8+
SignUpResource,
99
} from '@clerk/types';
1010

1111
import { unixEpochToDate } from '../../utils/date';
@@ -127,11 +127,11 @@ export class Client extends BaseResource implements ClientResource {
127127
this.sessions = (data.sessions || []).map(s => new Session(s));
128128
this.signUp = new SignUp(data.sign_up);
129129
this.signIn = new SignIn(data.sign_in);
130-
this.lastActiveSessionId = data.last_active_session_id;
130+
this.lastActiveSessionId = data.last_active_session_id ?? null;
131131
this.captchaBypass = data.captcha_bypass || false;
132132
this.cookieExpiresAt = data.cookie_expires_at ? unixEpochToDate(data.cookie_expires_at) : null;
133-
this.createdAt = unixEpochToDate(data.created_at || undefined);
134-
this.updatedAt = unixEpochToDate(data.updated_at || undefined);
133+
this.createdAt = unixEpochToDate(data.created_at ?? undefined);
134+
this.updatedAt = unixEpochToDate(data.updated_at ?? undefined);
135135
}
136136

137137
return this;

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

+10-10
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ export class Organization extends BaseResource implements OrganizationResource {
4141
slug!: string;
4242
imageUrl!: string;
4343
hasImage!: boolean;
44-
publicMetadata: OrganizationPublicMetadata = {};
44+
publicMetadata!: OrganizationPublicMetadata;
4545
adminDeleteEnabled!: boolean;
4646
createdAt!: Date;
4747
updatedAt!: Date;
48-
membersCount = 0;
49-
pendingInvitationsCount = 0;
48+
membersCount!: number;
49+
pendingInvitationsCount!: number;
5050
maxAllowedMemberships!: number;
5151

5252
constructor(data: OrganizationJSON | OrganizationJSONSnapshot) {
@@ -269,13 +269,13 @@ export class Organization extends BaseResource implements OrganizationResource {
269269
this.id = data.id;
270270
this.name = data.name;
271271
this.slug = data.slug;
272-
this.imageUrl = data.image_url;
273-
this.hasImage = data.has_image;
274-
this.publicMetadata = data.public_metadata;
275-
this.membersCount = data.members_count;
276-
this.pendingInvitationsCount = data.pending_invitations_count;
277-
this.maxAllowedMemberships = data.max_allowed_memberships;
278-
this.adminDeleteEnabled = data.admin_delete_enabled;
272+
this.imageUrl = data.image_url ?? '';
273+
this.hasImage = data.has_image ?? false;
274+
this.publicMetadata = data.public_metadata ?? {};
275+
this.membersCount = data.members_count ?? 0;
276+
this.pendingInvitationsCount = data.pending_invitations_count ?? 0;
277+
this.maxAllowedMemberships = data.max_allowed_memberships ?? 0;
278+
this.adminDeleteEnabled = data.admin_delete_enabled ?? false;
279279
this.createdAt = unixEpochToDate(data.created_at);
280280
this.updatedAt = unixEpochToDate(data.updated_at);
281281
return this;

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export class OrganizationMembership extends BaseResource implements Organization
6969

7070
this.id = data.id;
7171
this.organization = new Organization(data.organization);
72-
this.publicMetadata = data.public_metadata;
72+
this.publicMetadata = data.public_metadata ?? {};
7373
if (data.public_user_data) {
7474
this.publicUserData = new PublicUserData(data.public_user_data);
7575
}

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

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ export class PublicUserData implements IPublicUserData {
1414

1515
protected fromJSON(data: PublicUserDataJSON | PublicUserDataJSONSnapshot | null): this {
1616
if (data) {
17-
this.firstName = data.first_name;
18-
this.lastName = data.last_name;
19-
this.imageUrl = data.image_url;
20-
this.hasImage = data.has_image;
21-
this.identifier = data.identifier;
17+
this.firstName = data.first_name ?? null;
18+
this.lastName = data.last_name ?? null;
19+
this.imageUrl = data.image_url ?? '';
20+
this.hasImage = data.has_image ?? false;
21+
this.identifier = data.identifier ?? '';
2222
this.userId = data.user_id;
2323
}
2424

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -282,11 +282,11 @@ export class Session extends BaseResource implements SessionResource {
282282
this.factorVerificationAge = data.factor_verification_age;
283283
this.lastActiveAt = unixEpochToDate(data.last_active_at || undefined);
284284
this.lastActiveOrganizationId = data.last_active_organization_id;
285-
this.actor = data.actor;
285+
this.actor = data.actor ?? null;
286286
this.createdAt = unixEpochToDate(data.created_at);
287287
this.updatedAt = unixEpochToDate(data.updated_at);
288288
this.user = new User(data.user);
289-
this.tasks = data.tasks;
289+
this.tasks = data.tasks ?? null;
290290

291291
if (data.public_user_data) {
292292
this.publicUserData = new PublicUserData(data.public_user_data);

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

+18-18
Original file line numberDiff line numberDiff line change
@@ -316,32 +316,32 @@ export class User extends BaseResource implements UserResource {
316316
}
317317

318318
this.id = data.id;
319-
this.externalId = data.external_id;
320-
this.firstName = data.first_name;
321-
this.lastName = data.last_name;
319+
this.externalId = data.external_id ?? null;
320+
this.firstName = data.first_name ?? null;
321+
this.lastName = data.last_name ?? null;
322322
if (this.firstName || this.lastName) {
323323
this.fullName = getFullName({ firstName: this.firstName, lastName: this.lastName });
324324
}
325325

326-
this.imageUrl = data.image_url;
327-
this.hasImage = data.has_image;
328-
this.username = data.username;
329-
this.passwordEnabled = data.password_enabled;
326+
this.imageUrl = data.image_url || '';
327+
this.hasImage = data.has_image || false;
328+
this.username = data.username ?? null;
329+
this.passwordEnabled = data.password_enabled ?? false;
330330
this.emailAddresses = (data.email_addresses || []).map(
331331
ea => new EmailAddress(ea, this.path() + '/email_addresses'),
332332
);
333333

334-
this.primaryEmailAddressId = data.primary_email_address_id;
334+
this.primaryEmailAddressId = data.primary_email_address_id ?? null;
335335
this.primaryEmailAddress = this.emailAddresses.find(({ id }) => id === this.primaryEmailAddressId) || null;
336336

337337
this.phoneNumbers = (data.phone_numbers || []).map(ph => new PhoneNumber(ph, this.path() + '/phone_numbers'));
338338

339-
this.primaryPhoneNumberId = data.primary_phone_number_id;
339+
this.primaryPhoneNumberId = data.primary_phone_number_id ?? null;
340340
this.primaryPhoneNumber = this.phoneNumbers.find(({ id }) => id === this.primaryPhoneNumberId) || null;
341341

342342
this.web3Wallets = (data.web3_wallets || []).map(ph => new Web3Wallet(ph, this.path() + '/web3_wallets'));
343343

344-
this.primaryWeb3WalletId = data.primary_web3_wallet_id;
344+
this.primaryWeb3WalletId = data.primary_web3_wallet_id ?? null;
345345
this.primaryWeb3Wallet = this.web3Wallets.find(({ id }) => id === this.primaryWeb3WalletId) || null;
346346

347347
this.externalAccounts = (data.external_accounts || []).map(
@@ -358,16 +358,16 @@ export class User extends BaseResource implements UserResource {
358358
ea => new EnterpriseAccount(ea, this.path() + '/enterprise_accounts'),
359359
);
360360

361-
this.publicMetadata = data.public_metadata;
362-
this.unsafeMetadata = data.unsafe_metadata;
361+
this.publicMetadata = data.public_metadata ?? {};
362+
this.unsafeMetadata = data.unsafe_metadata ?? {};
363363

364-
this.totpEnabled = data.totp_enabled;
365-
this.backupCodeEnabled = data.backup_code_enabled;
366-
this.twoFactorEnabled = data.two_factor_enabled;
364+
this.totpEnabled = data.totp_enabled ?? false;
365+
this.backupCodeEnabled = data.backup_code_enabled ?? false;
366+
this.twoFactorEnabled = data.two_factor_enabled ?? false;
367367

368-
this.createOrganizationEnabled = data.create_organization_enabled;
369-
this.createOrganizationsLimit = data.create_organizations_limit;
370-
this.deleteSelfEnabled = data.delete_self_enabled;
368+
this.createOrganizationEnabled = data.create_organization_enabled ?? false;
369+
this.createOrganizationsLimit = data.create_organizations_limit ?? null;
370+
this.deleteSelfEnabled = data.delete_self_enabled ?? false;
371371

372372
if (data.last_sign_in_at) {
373373
this.lastSignInAt = unixEpochToDate(data.last_sign_in_at);

packages/types/src/json.ts

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ export interface ClerkResourceJSON {
2828
object: string;
2929
}
3030

31+
export type PartialWithClerkResource<T extends ClerkResourceJSON> = Omit<Partial<T>, 'id' | 'object'> &
32+
Pick<T, 'id' | 'object'>;
33+
3134
export interface DisplayThemeJSON {
3235
general: {
3336
color: HexColor;

0 commit comments

Comments
 (0)