From 1f29404579a5dec6faf3e58e962e9178d49d0f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Mon, 7 Jul 2025 13:26:03 +0200 Subject: [PATCH] pl-api: i was probably drunk while working on this MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- packages/pl-api/lib/entities/drive-folder.ts | 33 +++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/pl-api/lib/entities/drive-folder.ts b/packages/pl-api/lib/entities/drive-folder.ts index 4953904d8..81ef8d771 100644 --- a/packages/pl-api/lib/entities/drive-folder.ts +++ b/packages/pl-api/lib/entities/drive-folder.ts @@ -1,26 +1,35 @@ import * as v from 'valibot'; -import { bookmarkFolderSchema } from './bookmark-folder'; -import { driveFileSchema } from './drive-file'; +import { type DriveFile, driveFileSchema } from './drive-file'; import { filteredArray } from './utils'; -/** - * @category Schemas -*/ -const driveFolderSchema = v.pipe(v.any(), v.transform((folder) => ({ - ...folder, - parent_id: folder.parentId, -})), v.object({ +const baseDriveFolderSchema = v.object({ id: v.fallback(v.nullable(v.string()), null), name: v.fallback(v.nullable(v.string()), null), parent_id: v.fallback(v.nullable(v.string()), null), files: filteredArray(driveFileSchema), - folders: filteredArray(bookmarkFolderSchema), -})); +}); + +/** + * @category Schemas +*/ +const driveFolderSchema: v.BaseSchema> = v.pipe(v.any(), v.transform((folder) => ({ + ...folder, + parent_id: folder.parentId, +})), v.object({ + ...baseDriveFolderSchema.entries, + folders: filteredArray(v.lazy(() => driveFolderSchema)), +})) as any; /** * @category Entity types */ -type DriveFolder = v.InferOutput; +type DriveFolder = { + id: string | null; + name: string | null; + parent_id: string | null; + files: Array; + folders: Array; +} export { driveFolderSchema, type DriveFolder };