Skip to content

Feature Request: Surface the underlying object #21

@joshribakoff-sm

Description

@joshribakoff-sm
export function UpdateUserRequestSchema(): z.ZodSchema<UpdateUserRequest> {
  return z.object({
    email: z.string().nullish(),
    enabled: z.boolean().nullish(),
    first_name: z.string().nullish(),
    last_name: z.string().nullish(),
    role: RoleSchema.nullish(),
    team_id: z.number().nullish(),
  });
}

This cannot be extended, instead my idea is to have an option so it outputs this:

const updateUserRequestFields = {
    email: z.string().nullish(),
    enabled: z.boolean().nullish(),
    first_name: z.string().nullish(),
    last_name: z.string().nullish(),
    role: RoleSchema.nullish(),
    team_id: z.number().nullish(),
 }

export function UpdateUserRequestSchema(): z.ZodSchema<UpdateUserRequest> {
  return z.object(updateUserRequestFields);
}

I could then import updateUserRequestFields and extend it prior to passing it to z.object() in the consuming code

export function MyCustomSchema(): z.ZodSchema<UpdateUserRequest> {
  const fields = updateUserRequestFields
  fields.email.min(1) // extending the validations :)
  return z.object(fields);
}

It could also optionally append:

export function UpdateUserRequestSchema(): z.ZodSchema<UpdateUserRequest> {
  return z.object(updateUserRequestFields);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions