aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
authorMostafa Wahied <97263286+Mostafa-Wahied@users.noreply.github.com>2025-06-22 11:47:51 -0700
committerGitHub <noreply@github.com>2025-06-22 19:47:51 +0100
commit112aa9d942ef0f8548c3728e6218c27cc335a601 (patch)
tree9b0c545fb5b16604e9061e59ebd3d57d7033b4a7 /packages/shared
parentc70d64d4cde2bf2acc5c4164eef79c40fd58aa42 (diff)
downloadkarakeep-112aa9d942ef0f8548c3728e6218c27cc335a601.tar.zst
fix(tags): normalise leading hashes in tag names (#1317) (#1351)
* fix(tags): normalise leading hashes in tag names (#1317) * move the transformation to zod * fix openapi spec --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
Diffstat (limited to 'packages/shared')
-rw-r--r--packages/shared/types/tags.ts11
-rw-r--r--packages/shared/utils/tag.ts6
2 files changed, 15 insertions, 2 deletions
diff --git a/packages/shared/types/tags.ts b/packages/shared/types/tags.ts
index c7a0103e..efb26bfa 100644
--- a/packages/shared/types/tags.ts
+++ b/packages/shared/types/tags.ts
@@ -1,7 +1,14 @@
import { z } from "zod";
+import { normalizeTagName } from "../utils/tag";
+
+const zTagNameSchemaWithValidation = z
+ .string()
+ .transform((s) => normalizeTagName(s).trim())
+ .pipe(z.string().min(1));
+
export const zCreateTagRequestSchema = z.object({
- name: z.string().min(1),
+ name: zTagNameSchemaWithValidation,
});
export const zAttachedByEnumSchema = z.enum(["ai", "human"]);
@@ -23,7 +30,7 @@ export type ZGetTagResponse = z.infer<typeof zGetTagResponseSchema>;
export const zUpdateTagRequestSchema = z.object({
tagId: z.string(),
- name: z.string().optional(),
+ name: zTagNameSchemaWithValidation.optional(),
});
export const zTagBasicSchema = z.object({
diff --git a/packages/shared/utils/tag.ts b/packages/shared/utils/tag.ts
new file mode 100644
index 00000000..8e1bd105
--- /dev/null
+++ b/packages/shared/utils/tag.ts
@@ -0,0 +1,6 @@
+/**
+ * Ensures exactly ONE leading #
+ */
+export function normalizeTagName(raw: string): string {
+ return raw.trim().replace(/^#+/, ""); // strip every leading #
+}