quicktype icon indicating copy to clipboard operation
quicktype copied to clipboard

[BUG]: additionalProperties values from json-schema should not be set on zod types

Open marr opened this issue 8 months ago • 0 comments

When generating typescript-zod output from json-schema, quicktype includes additionalProperties values in the generated typescript.

Issue Type

quicktype io

Context (Environment, Version, Language)

mac osx/cli

Input Format: JSON Schema Output Language: TypeScript Zod

using the npm cli

CLI, npm, or app.quicktype.io: Version: quicktype version 23.0.171

Description

I am trying to output a zod schema from a json-schema file. My source includes additionalProperties which end up in the output zod schema. I'm not sure if that is valid output, as additionalProperties is a reserved word in json schema.

additionalProperties docs from JSON-Schema spec

Input Data

{
  "$id": "http://myapp.com/mything/",
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "additionalProperties": true,
  "metamodel_version": "1.7.0",
  "title": "mything",
  "type": "object",
  "version": null
}

Expected Behaviour / Output

import * as z from "zod";

export const MyThingSchema = z.object({
    "$id": z.string(),
    "$schema": z.string(),
    "metamodel_version": z.string(),
    "title": z.string(),
    "type": z.string(),
    "version": z.null(),
});
export type MyThing = z.infer<typeof MyThingSchema>;

Current Behaviour / Output

import * as z from "zod";

export const MyThingSchema = z.object({
    "$id": z.string(),
    "$schema": z.string(),
    "additionalProperties": z.boolean(),
    "metamodel_version": z.string(),
    "title": z.string(),
    "type": z.string(),
    "version": z.null(),
});
export type MyThing = z.infer<typeof MyThingSchema>;

Steps to Reproduce

quicktype schema.json --lang typescript-zod -o MyThing.ts

Possible Solution

I don't know what should actually be output in this situation, my use case is to send the generated zod to an instance of autoform, and I wasn't expecting to see additionalProperties part of the form.

marr avatar Jan 31 '25 16:01 marr