Skip to content

Commit c9684b5

Browse files
gjtorikianclaude
andcommitted
fix: resolve typecheck errors in generated code
- Remove `export * from './mfa/interfaces'` in index.ts to fix duplicate Factor export clash with user-management/interfaces - Add serializeDirectoryState() to reverse-map active→linked, inactive→unlinked - Fix OrganizationMembership interface to not widen required base properties - Fix user serializer to use undefined instead of null for optional external_id Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 0a04e9f commit c9684b5

4 files changed

Lines changed: 19 additions & 7 deletions

File tree

src/directory-sync/serializers/directory.serializer.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,27 @@ export const deserializeDeletedEventDirectory = (
6767
updatedAt: directory.updated_at,
6868
});
6969

70+
export const serializeDirectoryState = (
71+
state: DirectoryState,
72+
): DirectoryStateResponse => {
73+
if (state === 'active') {
74+
return 'linked';
75+
}
76+
77+
if (state === 'inactive') {
78+
return 'unlinked';
79+
}
80+
81+
return state;
82+
};
83+
7084
export const serializeDirectory = (model: Directory): DirectoryResponse => ({
7185
object: model.object,
7286
id: model.id,
7387
organization_id: model.organizationId,
7488
external_key: model.externalKey,
7589
type: model.type,
76-
state: model.state,
90+
state: serializeDirectoryState(model.state),
7791
name: model.name,
7892
domain: model.domain!,
7993
metadata:

src/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,6 @@ export type { PostOptions } from './common/interfaces/post-options.interface';
102102

103103
export type { GetOptions } from './common/interfaces/get-options.interface';
104104

105-
export * from './mfa/interfaces';
106-
107105
export type {
108106
ChallengeAuthenticationFactor,
109107
ChallengeAuthenticationFactorResponse,

src/user-management/interfaces/organization-membership.interface.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ export interface OrganizationMembership extends BaseOrganizationMembership {
3333
/** The status of the organization membership. One of `active`, `inactive`, or `pending`. */
3434
status: OrganizationMembershipStatus;
3535
/** Whether this organization membership is managed by a directory sync connection. */
36-
directoryManaged?: boolean;
36+
directoryManaged: boolean;
3737
/** An object containing IdP-sourced attributes from the linked [Directory User](https://workos.com/docs/reference/directory-sync/directory-user) or [SSO Profile](https://workos.com/docs/reference/sso/profile). Directory User attributes take precedence when both are linked. */
38-
customAttributes?: Record<string, any>;
38+
customAttributes: Record<string, any>;
3939
/** An ISO 8601 timestamp. */
4040
createdAt: string;
4141
/** An ISO 8601 timestamp. */
@@ -66,7 +66,7 @@ export interface OrganizationMembershipResponse extends BaseOrganizationMembersh
6666
organization_id: string;
6767
status: OrganizationMembershipStatus;
6868
directory_managed?: boolean;
69-
organization_name?: string;
69+
organization_name: string;
7070
custom_attributes?: Record<string, unknown>;
7171
created_at: string;
7272
updated_at: string;

src/user-management/serializers/user.serializer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const serializeUser = (model: User): UserResponse => ({
2626
profile_picture_url: model.profilePictureUrl,
2727
email: model.email,
2828
email_verified: model.emailVerified,
29-
external_id: model.externalId ?? null,
29+
external_id: model.externalId ?? undefined,
3030
metadata: model.metadata,
3131
last_sign_in_at: model.lastSignInAt,
3232
locale: model.locale ?? null,

0 commit comments

Comments
 (0)