From 1167dcfab673af6e961328f7b79b50b098cb1fd2 Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Wed, 22 Nov 2023 21:26:05 +0100 Subject: [PATCH] Improves changeset schemas and fix moved diff syntax highlighting --- httpd-client/lib/project/commit.ts | 21 ++++++++++++++++----- src/views/projects/Changeset.svelte | 7 ++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/httpd-client/lib/project/commit.ts b/httpd-client/lib/project/commit.ts index a68e51887..5fa4f1423 100644 --- a/httpd-client/lib/project/commit.ts +++ b/httpd-client/lib/project/commit.ts @@ -16,7 +16,6 @@ import { literal, number, object, - optional, record, string, union, @@ -151,19 +150,31 @@ const diffCopiedChangesetSchema = object({ const diffMovedChangesetSchema = diffCopiedChangesetSchema.merge( object({ - old: optional(diffFileSchema), - new: optional(diffFileSchema), - diff: optional(diffContentSchema), + current: diffFileSchema, }), ); +const diffMovedWithModificationsChangesetSchema = + diffCopiedChangesetSchema.merge( + object({ + old: diffFileSchema, + new: diffFileSchema, + diff: diffContentSchema, + }), + ); + type Diff = z.infer; const diffSchema = object({ added: array(diffAddedChangesetSchema), deleted: array(diffDeletedChangesetSchema), modified: array(diffModifiedChangesetSchema), - moved: array(diffMovedChangesetSchema), + moved: array( + union([ + diffMovedChangesetSchema, + diffMovedWithModificationsChangesetSchema, + ]), + ), copied: array(diffCopiedChangesetSchema), stats: object({ filesChanged: number(), diff --git a/src/views/projects/Changeset.svelte b/src/views/projects/Changeset.svelte index e350b1de0..a586179df 100644 --- a/src/views/projects/Changeset.svelte +++ b/src/views/projects/Changeset.svelte @@ -154,18 +154,19 @@ {/each} {#each diff.moved as file} - {#if file.diff} + {#if "diff" in file}
{:else}