Skip to content

Commit 34a43c3

Browse files
committed
use clerk api types
1 parent 71fabb2 commit 34a43c3

12 files changed

Lines changed: 250 additions & 145 deletions

apps/sim/tools/clerk/create_organization.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { createLogger } from '@sim/logger'
22
import type {
3+
ClerkApiError,
34
ClerkCreateOrganizationParams,
45
ClerkCreateOrganizationResponse,
6+
ClerkOrganization,
57
} from '@/tools/clerk/types'
68
import type { ToolConfig } from '@/tools/types'
79

@@ -90,29 +92,32 @@ export const clerkCreateOrganizationTool: ToolConfig<
9092
},
9193

9294
transformResponse: async (response: Response) => {
93-
const data = await response.json()
95+
const data: ClerkOrganization | ClerkApiError = await response.json()
9496

9597
if (!response.ok) {
9698
logger.error('Clerk API request failed', { data, status: response.status })
97-
throw new Error(data.errors?.[0]?.message || 'Failed to create organization in Clerk')
99+
throw new Error(
100+
(data as ClerkApiError).errors?.[0]?.message || 'Failed to create organization in Clerk'
101+
)
98102
}
99103

104+
const org = data as ClerkOrganization
100105
return {
101106
success: true,
102107
output: {
103-
id: data.id,
104-
name: data.name,
105-
slug: data.slug ?? null,
106-
imageUrl: data.image_url ?? null,
107-
hasImage: data.has_image ?? false,
108-
membersCount: data.members_count ?? null,
109-
pendingInvitationsCount: data.pending_invitations_count ?? null,
110-
maxAllowedMemberships: data.max_allowed_memberships ?? 0,
111-
adminDeleteEnabled: data.admin_delete_enabled ?? false,
112-
createdBy: data.created_by ?? null,
113-
createdAt: data.created_at,
114-
updatedAt: data.updated_at,
115-
publicMetadata: data.public_metadata ?? {},
108+
id: org.id,
109+
name: org.name,
110+
slug: org.slug ?? null,
111+
imageUrl: org.image_url ?? null,
112+
hasImage: org.has_image ?? false,
113+
membersCount: org.members_count ?? null,
114+
pendingInvitationsCount: org.pending_invitations_count ?? null,
115+
maxAllowedMemberships: org.max_allowed_memberships ?? 0,
116+
adminDeleteEnabled: org.admin_delete_enabled ?? false,
117+
createdBy: org.created_by ?? null,
118+
createdAt: org.created_at,
119+
updatedAt: org.updated_at,
120+
publicMetadata: org.public_metadata ?? {},
116121
success: true,
117122
},
118123
}

apps/sim/tools/clerk/create_user.ts

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import { createLogger } from '@sim/logger'
2-
import type { ClerkCreateUserParams, ClerkCreateUserResponse } from '@/tools/clerk/types'
2+
import type {
3+
ClerkApiError,
4+
ClerkCreateUserParams,
5+
ClerkCreateUserResponse,
6+
ClerkEmailAddress,
7+
ClerkPhoneNumber,
8+
ClerkUser,
9+
} from '@/tools/clerk/types'
310
import type { ToolConfig } from '@/tools/types'
411

512
const logger = createLogger('ClerkCreateUser')
@@ -132,37 +139,40 @@ export const clerkCreateUserTool: ToolConfig<ClerkCreateUserParams, ClerkCreateU
132139
},
133140

134141
transformResponse: async (response: Response) => {
135-
const data = await response.json()
142+
const data: ClerkUser | ClerkApiError = await response.json()
136143

137144
if (!response.ok) {
138145
logger.error('Clerk API request failed', { data, status: response.status })
139-
throw new Error(data.errors?.[0]?.message || 'Failed to create user in Clerk')
146+
throw new Error(
147+
(data as ClerkApiError).errors?.[0]?.message || 'Failed to create user in Clerk'
148+
)
140149
}
141150

151+
const user = data as ClerkUser
142152
return {
143153
success: true,
144154
output: {
145-
id: data.id,
146-
username: data.username ?? null,
147-
firstName: data.first_name ?? null,
148-
lastName: data.last_name ?? null,
149-
imageUrl: data.image_url ?? null,
150-
primaryEmailAddressId: data.primary_email_address_id ?? null,
151-
primaryPhoneNumberId: data.primary_phone_number_id ?? null,
152-
emailAddresses: (data.email_addresses ?? []).map((email: any) => ({
155+
id: user.id,
156+
username: user.username ?? null,
157+
firstName: user.first_name ?? null,
158+
lastName: user.last_name ?? null,
159+
imageUrl: user.image_url ?? null,
160+
primaryEmailAddressId: user.primary_email_address_id ?? null,
161+
primaryPhoneNumberId: user.primary_phone_number_id ?? null,
162+
emailAddresses: (user.email_addresses ?? []).map((email: ClerkEmailAddress) => ({
153163
id: email.id,
154164
emailAddress: email.email_address,
155165
verified: email.verification?.status === 'verified',
156166
})),
157-
phoneNumbers: (data.phone_numbers ?? []).map((phone: any) => ({
167+
phoneNumbers: (user.phone_numbers ?? []).map((phone: ClerkPhoneNumber) => ({
158168
id: phone.id,
159169
phoneNumber: phone.phone_number,
160170
verified: phone.verification?.status === 'verified',
161171
})),
162-
externalId: data.external_id ?? null,
163-
createdAt: data.created_at,
164-
updatedAt: data.updated_at,
165-
publicMetadata: data.public_metadata ?? {},
172+
externalId: user.external_id ?? null,
173+
createdAt: user.created_at,
174+
updatedAt: user.updated_at,
175+
publicMetadata: user.public_metadata ?? {},
166176
success: true,
167177
},
168178
}

apps/sim/tools/clerk/delete_user.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import { createLogger } from '@sim/logger'
2-
import type { ClerkDeleteUserParams, ClerkDeleteUserResponse } from '@/tools/clerk/types'
2+
import type {
3+
ClerkApiError,
4+
ClerkDeleteResponse,
5+
ClerkDeleteUserParams,
6+
ClerkDeleteUserResponse,
7+
} from '@/tools/clerk/types'
38
import type { ToolConfig } from '@/tools/types'
49

510
const logger = createLogger('ClerkDeleteUser')
@@ -40,19 +45,22 @@ export const clerkDeleteUserTool: ToolConfig<ClerkDeleteUserParams, ClerkDeleteU
4045
},
4146

4247
transformResponse: async (response: Response) => {
43-
const data = await response.json()
48+
const data: ClerkDeleteResponse | ClerkApiError = await response.json()
4449

4550
if (!response.ok) {
4651
logger.error('Clerk API request failed', { data, status: response.status })
47-
throw new Error(data.errors?.[0]?.message || 'Failed to delete user from Clerk')
52+
throw new Error(
53+
(data as ClerkApiError).errors?.[0]?.message || 'Failed to delete user from Clerk'
54+
)
4855
}
4956

57+
const deleteData = data as ClerkDeleteResponse
5058
return {
5159
success: true,
5260
output: {
53-
id: data.id,
54-
object: data.object ?? 'user',
55-
deleted: data.deleted ?? true,
61+
id: deleteData.id,
62+
object: deleteData.object ?? 'user',
63+
deleted: deleteData.deleted ?? true,
5664
success: true,
5765
},
5866
}

apps/sim/tools/clerk/get_organization.ts

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import { createLogger } from '@sim/logger'
2-
import type { ClerkGetOrganizationParams, ClerkGetOrganizationResponse } from '@/tools/clerk/types'
2+
import type {
3+
ClerkApiError,
4+
ClerkGetOrganizationParams,
5+
ClerkGetOrganizationResponse,
6+
ClerkOrganization,
7+
} from '@/tools/clerk/types'
38
import type { ToolConfig } from '@/tools/types'
49

510
const logger = createLogger('ClerkGetOrganization')
@@ -43,29 +48,32 @@ export const clerkGetOrganizationTool: ToolConfig<
4348
},
4449

4550
transformResponse: async (response: Response) => {
46-
const data = await response.json()
51+
const data: ClerkOrganization | ClerkApiError = await response.json()
4752

4853
if (!response.ok) {
4954
logger.error('Clerk API request failed', { data, status: response.status })
50-
throw new Error(data.errors?.[0]?.message || 'Failed to get organization from Clerk')
55+
throw new Error(
56+
(data as ClerkApiError).errors?.[0]?.message || 'Failed to get organization from Clerk'
57+
)
5158
}
5259

60+
const org = data as ClerkOrganization
5361
return {
5462
success: true,
5563
output: {
56-
id: data.id,
57-
name: data.name,
58-
slug: data.slug ?? null,
59-
imageUrl: data.image_url ?? null,
60-
hasImage: data.has_image ?? false,
61-
membersCount: data.members_count ?? null,
62-
pendingInvitationsCount: data.pending_invitations_count ?? null,
63-
maxAllowedMemberships: data.max_allowed_memberships ?? 0,
64-
adminDeleteEnabled: data.admin_delete_enabled ?? false,
65-
createdBy: data.created_by ?? null,
66-
createdAt: data.created_at,
67-
updatedAt: data.updated_at,
68-
publicMetadata: data.public_metadata ?? {},
64+
id: org.id,
65+
name: org.name,
66+
slug: org.slug ?? null,
67+
imageUrl: org.image_url ?? null,
68+
hasImage: org.has_image ?? false,
69+
membersCount: org.members_count ?? null,
70+
pendingInvitationsCount: org.pending_invitations_count ?? null,
71+
maxAllowedMemberships: org.max_allowed_memberships ?? 0,
72+
adminDeleteEnabled: org.admin_delete_enabled ?? false,
73+
createdBy: org.created_by ?? null,
74+
createdAt: org.created_at,
75+
updatedAt: org.updated_at,
76+
publicMetadata: org.public_metadata ?? {},
6977
success: true,
7078
},
7179
}

apps/sim/tools/clerk/get_session.ts

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import { createLogger } from '@sim/logger'
2-
import type { ClerkGetSessionParams, ClerkGetSessionResponse } from '@/tools/clerk/types'
2+
import type {
3+
ClerkApiError,
4+
ClerkGetSessionParams,
5+
ClerkGetSessionResponse,
6+
ClerkSession,
7+
} from '@/tools/clerk/types'
38
import type { ToolConfig } from '@/tools/types'
49

510
const logger = createLogger('ClerkGetSession')
@@ -40,26 +45,29 @@ export const clerkGetSessionTool: ToolConfig<ClerkGetSessionParams, ClerkGetSess
4045
},
4146

4247
transformResponse: async (response: Response) => {
43-
const data = await response.json()
48+
const data: ClerkSession | ClerkApiError = await response.json()
4449

4550
if (!response.ok) {
4651
logger.error('Clerk API request failed', { data, status: response.status })
47-
throw new Error(data.errors?.[0]?.message || 'Failed to get session from Clerk')
52+
throw new Error(
53+
(data as ClerkApiError).errors?.[0]?.message || 'Failed to get session from Clerk'
54+
)
4855
}
4956

57+
const session = data as ClerkSession
5058
return {
5159
success: true,
5260
output: {
53-
id: data.id,
54-
userId: data.user_id,
55-
clientId: data.client_id,
56-
status: data.status,
57-
lastActiveAt: data.last_active_at ?? null,
58-
lastActiveOrganizationId: data.last_active_organization_id ?? null,
59-
expireAt: data.expire_at ?? null,
60-
abandonAt: data.abandon_at ?? null,
61-
createdAt: data.created_at,
62-
updatedAt: data.updated_at,
61+
id: session.id,
62+
userId: session.user_id,
63+
clientId: session.client_id,
64+
status: session.status,
65+
lastActiveAt: session.last_active_at ?? null,
66+
lastActiveOrganizationId: session.last_active_organization_id ?? null,
67+
expireAt: session.expire_at ?? null,
68+
abandonAt: session.abandon_at ?? null,
69+
createdAt: session.created_at,
70+
updatedAt: session.updated_at,
6371
success: true,
6472
},
6573
}

apps/sim/tools/clerk/get_user.ts

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import { createLogger } from '@sim/logger'
2-
import type { ClerkGetUserParams, ClerkGetUserResponse } from '@/tools/clerk/types'
2+
import type {
3+
ClerkApiError,
4+
ClerkEmailAddress,
5+
ClerkGetUserParams,
6+
ClerkGetUserResponse,
7+
ClerkPhoneNumber,
8+
ClerkUser,
9+
} from '@/tools/clerk/types'
310
import type { ToolConfig } from '@/tools/types'
411

512
const logger = createLogger('ClerkGetUser')
@@ -40,51 +47,55 @@ export const clerkGetUserTool: ToolConfig<ClerkGetUserParams, ClerkGetUserRespon
4047
},
4148

4249
transformResponse: async (response: Response) => {
43-
const data = await response.json()
50+
const data: ClerkUser | ClerkApiError = await response.json()
4451

4552
if (!response.ok) {
4653
logger.error('Clerk API request failed', { data, status: response.status })
47-
throw new Error(data.errors?.[0]?.message || 'Failed to get user from Clerk')
54+
throw new Error(
55+
(data as ClerkApiError).errors?.[0]?.message || 'Failed to get user from Clerk'
56+
)
4857
}
4958

59+
const user = data as ClerkUser
60+
5061
return {
5162
success: true,
5263
output: {
53-
id: data.id,
54-
username: data.username ?? null,
55-
firstName: data.first_name ?? null,
56-
lastName: data.last_name ?? null,
57-
imageUrl: data.image_url ?? null,
58-
hasImage: data.has_image ?? false,
59-
primaryEmailAddressId: data.primary_email_address_id ?? null,
60-
primaryPhoneNumberId: data.primary_phone_number_id ?? null,
61-
primaryWeb3WalletId: data.primary_web3_wallet_id ?? null,
62-
emailAddresses: (data.email_addresses ?? []).map((email: any) => ({
64+
id: user.id,
65+
username: user.username ?? null,
66+
firstName: user.first_name ?? null,
67+
lastName: user.last_name ?? null,
68+
imageUrl: user.image_url ?? null,
69+
hasImage: user.has_image ?? false,
70+
primaryEmailAddressId: user.primary_email_address_id ?? null,
71+
primaryPhoneNumberId: user.primary_phone_number_id ?? null,
72+
primaryWeb3WalletId: user.primary_web3_wallet_id ?? null,
73+
emailAddresses: (user.email_addresses ?? []).map((email: ClerkEmailAddress) => ({
6374
id: email.id,
6475
emailAddress: email.email_address,
6576
verified: email.verification?.status === 'verified',
6677
})),
67-
phoneNumbers: (data.phone_numbers ?? []).map((phone: any) => ({
78+
phoneNumbers: (user.phone_numbers ?? []).map((phone: ClerkPhoneNumber) => ({
6879
id: phone.id,
6980
phoneNumber: phone.phone_number,
7081
verified: phone.verification?.status === 'verified',
7182
})),
72-
externalId: data.external_id ?? null,
73-
passwordEnabled: data.password_enabled ?? false,
74-
twoFactorEnabled: data.two_factor_enabled ?? false,
75-
totpEnabled: data.totp_enabled ?? false,
76-
backupCodeEnabled: data.backup_code_enabled ?? false,
77-
banned: data.banned ?? false,
78-
locked: data.locked ?? false,
79-
deleteSelfEnabled: data.delete_self_enabled ?? false,
80-
createOrganizationEnabled: data.create_organization_enabled ?? false,
81-
lastSignInAt: data.last_sign_in_at ?? null,
82-
lastActiveAt: data.last_active_at ?? null,
83-
createdAt: data.created_at,
84-
updatedAt: data.updated_at,
85-
publicMetadata: data.public_metadata ?? {},
86-
privateMetadata: data.private_metadata ?? {},
87-
unsafeMetadata: data.unsafe_metadata ?? {},
83+
externalId: user.external_id ?? null,
84+
passwordEnabled: user.password_enabled ?? false,
85+
twoFactorEnabled: user.two_factor_enabled ?? false,
86+
totpEnabled: user.totp_enabled ?? false,
87+
backupCodeEnabled: user.backup_code_enabled ?? false,
88+
banned: user.banned ?? false,
89+
locked: user.locked ?? false,
90+
deleteSelfEnabled: user.delete_self_enabled ?? false,
91+
createOrganizationEnabled: user.create_organization_enabled ?? false,
92+
lastSignInAt: user.last_sign_in_at ?? null,
93+
lastActiveAt: user.last_active_at ?? null,
94+
createdAt: user.created_at,
95+
updatedAt: user.updated_at,
96+
publicMetadata: user.public_metadata ?? {},
97+
privateMetadata: user.private_metadata ?? {},
98+
unsafeMetadata: user.unsafe_metadata ?? {},
8899
success: true,
89100
},
90101
}

0 commit comments

Comments
 (0)