mirror of
https://github.com/immich-app/immich.git
synced 2026-05-22 15:02:32 -04:00
3d075f2bf8
feat: plugins chore: better types feat: plugins
33 lines
1.2 KiB
TypeScript
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) {}
|