Skip to content

Commit 9641e6f

Browse files
committed
fix(effect-schema): validate date-time strings
1 parent fc5fc2b commit 9641e6f

3 files changed

Lines changed: 10 additions & 0 deletions

File tree

packages/quicktype-core/src/language/TypeScriptEffectSchema/TypeScriptEffectSchemaRenderer.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,12 @@ export class TypeScriptEffectSchemaRenderer extends ConvenienceRenderer {
168168
},
169169
(_transformedStringType) => {
170170
if (_transformedStringType.kind === "uuid") return "S.UUID";
171+
if (_transformedStringType.kind === "date")
172+
return "S.String.pipe(S.pattern(/^\\d{4}-\\d{2}-\\d{2}$/))";
173+
if (_transformedStringType.kind === "time")
174+
return "S.String.pipe(S.pattern(/^\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$/))";
175+
if (_transformedStringType.kind === "date-time")
176+
return "S.String.pipe(S.pattern(/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$/))";
171177
return "S.String";
172178
},
173179
);

packages/quicktype-core/src/language/TypeScriptEffectSchema/language.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ export class TypeScriptEffectSchemaTargetLanguage extends TargetLanguage<
3737
PrimitiveStringTypeKind
3838
>();
3939
mapping.set("uuid", "uuid");
40+
mapping.set("date", "date");
41+
mapping.set("time", "time");
42+
mapping.set("date-time", "date-time");
4043
return mapping;
4144
}
4245

test/languages.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1739,6 +1739,7 @@ export const TypeScriptEffectSchemaLanguage: Language = {
17391739
"strict-optional",
17401740
"minmaxitems",
17411741
"uuid",
1742+
"date-time",
17421743
],
17431744
output: "TopLevel.ts",
17441745
topLevel: "TopLevel",

0 commit comments

Comments
 (0)