-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
// First create a general "post" schema // Shared Schema export const postSchema = { $id: 'post', type: 'object', properties: { id: { type: 'number' }, title: { type: 'string' }, published: { type: 'boolean' }, content: { type: 'string' }, tags: { type: 'array', items: { type: 'string' } }, deleted: { type: 'boolean' } }, required: ['title', 'published', 'content', 'tags', 'deleted'] } as const // We don't need to create a separate "bodySchema". // But directly infer type from postSchema export type Body = FromSchema // Reply Schema // Check https://www.fastify.io/docs/latest/Reference/Validation-and-Serialization/#adding-a-shared-schema const replySchema = { type: 'object', properties: { posts: { type: 'array', items: { $ref: 'post#' } } }, additionalProperties: false } as const // Check https://github.com/ThomasAribart/json-schema-to-ts#references export type Reply = FromSchema< typeof replySchema, { references: [typeof postSchema] } > // Also make ReplyNotFound reusable for future use export const postNotFoundSchema = { $id: 'postNotFound', // add $id here type: 'object', required: ['error'], properties: { error: { type: 'string' } }, additionalProperties: false } as const export type PostNotFound = FromSchema
Related posts
-
How do you handle runtime validation / API documentation?
-
How do you navigate an api response where you don't know the exact structure?
-
Tres herramientas para desarrolladores de software 👌
-
Show HN: Universal adapter for TypeScript schema validation
-
Show HN: A tool to Convert JSON schemas into TypeScript classes