Code-Hex / graphql-codegen-typescript-validation-schema

GraphQL Code Generator plugin to generate form validation schema from your GraphQL schema
MIT License
315 stars 42 forks source link

TypeError for default values when using enums #640

Closed sutt0n closed 3 months ago

sutt0n commented 6 months ago

The latest of this wonderful plugin has unfortunately broken default values for us regarding the default stringified values. I'm unsure if others are having this issue as it's very new, and this could very well be an edge-case.

Related PR: #529

The Problem

For example, if one were to have the following enum:

export enum GuyFieriQuotes {
  DinersDriveInsAndDives = "DINERS_DRIVEINS_AND_DIVES",
  Funkalicious = "FUNKALICIOUS",
  WelcomeToFlavortown = "WELCOME_TO_FLAVORTOWN"
}

export const GuyFieriQuotesSchema = z.nativeEnum(GuyFieriQuotes);

We then have the generated schema:

export function FlavortownInputSchema(): z.ZodObject<Properties<FlavortownInput>> {
  return {
    quote: GuyFieriQuotesSchema.default("WELCOME_TO_FLAVORTOWN"),
  };
}

This would throw the following type errors:

Argument of type '"WELCOME_TO_FLAVORTOWN"' is not assignable to parameter of type 'GuyFieriQuotesSchema'.

Output of Solution

Adding this fix/feature generates this output:

export function FlavortownInputSchema(): z.ZodObject<Properties<FlavortownInput>> {
  return {
    quote: GuyFieriQuotesSchema.default(GuyFieriQuotes.WelcomeToFlavortown),
  };
}

I think having a flag to specify enum types' respective paths as their default values as well as a naming convention (since that can be changed) configuration, we should be able to address it.

sutt0n commented 6 months ago

I've opened a PR for this issue: #636

AndKiel commented 4 months ago

This is not an edge case. I'm stuck with version 0.12.1 because the default values generation for zod is broken.

sutt0n commented 4 months ago

@AndKiel Glad to know we're not the only one! 🙂

DarlonHenrique commented 4 months ago

same thing here

Code-Hex commented 3 months ago

I merged the contents of PR #636, will release it as soon as the README is fixed

Code-Hex commented 3 months ago

I just published v0.16.0 which is included this fix.

sutt0n commented 1 month ago

For those on this thread, I noticed that this effort introduced a bug with underscore transformation. Since then, I've opened #828