From bd1b3b51adae75e5639a4f2884ddec35c5df7c71 Mon Sep 17 00:00:00 2001 From: Yotam Ishak Date: Mon, 9 Dec 2024 18:14:10 +0200 Subject: [PATCH 1/4] add time and duration string types --- src/transformers/string.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/transformers/string.ts b/src/transformers/string.ts index 9bc22c9..8de5641 100644 --- a/src/transformers/string.ts +++ b/src/transformers/string.ts @@ -40,6 +40,8 @@ export class StringTransformer { if (zodString.isULID) return 'ulid'; if (zodString.isIP) return 'ip'; if (zodString.isEmoji) return 'emoji'; + if (zodString.isTime) return 'time'; + if (zodString.isDuration) return 'duration'; return undefined; } From 7c1d94d69d2c91409eb3f53fcd282d8d37c31a32 Mon Sep 17 00:00:00 2001 From: Yotam Ishak Date: Mon, 9 Dec 2024 18:39:21 +0200 Subject: [PATCH 2/4] update docs + types --- README.md | 2 ++ spec/types/string.spec.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index ed549ee..ca0dd9a 100644 --- a/README.md +++ b/README.md @@ -560,6 +560,8 @@ The list of all supported types as of now is: - `.uuid()` - `.email()` - `.url()` + - `.duration()` + - `.time()` - adding `pattern` for `.regex()` is also supported diff --git a/spec/types/string.spec.ts b/spec/types/string.spec.ts index 83af082..daca33c 100644 --- a/spec/types/string.spec.ts +++ b/spec/types/string.spec.ts @@ -51,6 +51,8 @@ describe('string', () => { ${'url'} | ${z.string().url()} | ${'uri'} ${'date'} | ${z.string().date()} | ${'date'} ${'datetime'} | ${z.string().datetime()} | ${'date-time'} + ${'duration'} | ${z.string().duration()} | ${'duration'} + ${'time'} | ${z.string().time()} | ${'time'} `( 'maps a ZodString $format to $expected format', ({ zodString, expected }: { zodString: ZodString; expected: string }) => { From 9fd49d56d2c450b54e99e25c7a57ed6198f0eab6 Mon Sep 17 00:00:00 2001 From: Yotam Ishak Date: Tue, 10 Dec 2024 10:55:23 +0200 Subject: [PATCH 3/4] add regex --- spec/types/string.spec.ts | 2 +- src/transformers/string.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/types/string.spec.ts b/spec/types/string.spec.ts index daca33c..1747271 100644 --- a/spec/types/string.spec.ts +++ b/spec/types/string.spec.ts @@ -71,7 +71,7 @@ describe('string', () => { .openapi('RegexString'), ], { - RegexString: { type: 'string', pattern: '^hello world' }, + RegexString: { type: 'string', pattern: '^hello world', format: 'regex' }, } ); }); diff --git a/src/transformers/string.ts b/src/transformers/string.ts index 8de5641..66e897a 100644 --- a/src/transformers/string.ts +++ b/src/transformers/string.ts @@ -42,6 +42,7 @@ export class StringTransformer { if (zodString.isEmoji) return 'emoji'; if (zodString.isTime) return 'time'; if (zodString.isDuration) return 'duration'; + if (this.getZodStringCheck(zodString, 'regex')) return 'regex'; return undefined; } From 4b06a652be54ec103d432557bf92132d60c9cb84 Mon Sep 17 00:00:00 2001 From: Yotam Ishak Date: Tue, 10 Dec 2024 10:58:24 +0200 Subject: [PATCH 4/4] prettier --- spec/types/string.spec.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spec/types/string.spec.ts b/spec/types/string.spec.ts index 1747271..c54ffee 100644 --- a/spec/types/string.spec.ts +++ b/spec/types/string.spec.ts @@ -71,7 +71,11 @@ describe('string', () => { .openapi('RegexString'), ], { - RegexString: { type: 'string', pattern: '^hello world', format: 'regex' }, + RegexString: { + type: 'string', + pattern: '^hello world', + format: 'regex', + }, } ); });