Files
immich/server/src/dtos/json-schema.dto.ts
T
Jason Rasmussen 3d075f2bf8 feat: workflows & plugins (#26727)
feat: plugins

chore: better types

feat: plugins
2026-05-18 11:09:33 -04:00

33 lines
1.2 KiB
TypeScript

import { createZodDto } from 'nestjs-zod';
import z from 'zod';
export const JsonSchemaTypeSchema = z
.enum(['string', 'number', 'integer', 'boolean', 'object'])
.meta({ id: 'JsonSchemaType' });
const JsonSchemaPropertySchema = z
.object({
type: JsonSchemaTypeSchema.optional().default('object').describe('Type'),
title: z.string().describe('Title'),
description: z.string().describe('Description'),
default: z.any().optional().describe('Default value'),
enum: z.array(z.string()).optional().describe('Valid choices for enum types'),
array: z.boolean().optional().describe('Type is an array type'),
required: z.array(z.string()).optional().describe('A list of required properties'),
uiHint: z.string().optional(),
get properties() {
return z.record(z.string(), JsonSchemaPropertySchema).optional();
},
})
.meta({ id: 'JsonSchemaPropertyDto' });
export const JsonSchemaSchema = z
.object({
...JsonSchemaPropertySchema.shape,
title: z.string().optional().describe('Title'),
description: z.string().optional().describe('Description'),
})
.meta({ id: 'JsonSchemaDto' });
export class JsonSchemaDto extends createZodDto(JsonSchemaSchema) {}