From 0550abba1c7a13a0ecb0c4aa453fa08b1f77d60d Mon Sep 17 00:00:00 2001 From: "Ben Scholzen (DASPRiD)" Date: Tue, 26 Mar 2024 12:44:40 +0100 Subject: [PATCH] feat(request): add clientResourceIdentifierSchema to allow for client created relations --- src/index.ts | 1 + src/request.ts | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 9ae1c75..07523e3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,6 +14,7 @@ export { parseListQuery, relationship, resourceIdentifierSchema, + clientResourceIdentifierSchema, type Sort, ZodValidationError, } from "./request.js"; diff --git a/src/request.ts b/src/request.ts index 4a41bba..3f69aac 100644 --- a/src/request.ts +++ b/src/request.ts @@ -129,10 +129,26 @@ export const resourceIdentifierSchema = ( id: z.string(), }); +type ClientResourceIdentifierSchema = z.ZodObject<{ + type: z.ZodType; + lid: z.ZodString; +}>; + +export const clientResourceIdentifierSchema = ( + type: TType, +): ClientResourceIdentifierSchema => + z.object({ + type: fixedTypeSchema(type), + lid: z.string(), + }); + type RelationshipDataSchema = | ResourceIdentifierSchema | z.ZodArray> - | z.ZodNullable>; + | z.ZodNullable> + | ClientResourceIdentifierSchema + | z.ZodArray> + | z.ZodNullable>; type RelationshipSchema = z.ZodObject<{ data: TData;