From f91639407f8279347f260f38beb93912d19c10d8 Mon Sep 17 00:00:00 2001 From: baki gul Date: Wed, 18 Jun 2025 19:42:29 +0300 Subject: [PATCH 1/3] fix: add ISO time and date formats to FORMATS type and update tests --- types/FluentJSONSchema.d.ts | 2 ++ types/FluentJSONSchema.test-d.ts | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/types/FluentJSONSchema.d.ts b/types/FluentJSONSchema.d.ts index 0589875..9cd1f23 100644 --- a/types/FluentJSONSchema.d.ts +++ b/types/FluentJSONSchema.d.ts @@ -51,6 +51,8 @@ type FORMATS = { TIME: 'time' DATE: 'date' DATE_TIME: 'date-time' + ISO_TIME: 'iso-time' + ISO_DATE_TIME: 'iso-date-time' } export type JSONSchema = diff --git a/types/FluentJSONSchema.test-d.ts b/types/FluentJSONSchema.test-d.ts index 9a18a1f..e105b88 100644 --- a/types/FluentJSONSchema.test-d.ts +++ b/types/FluentJSONSchema.test-d.ts @@ -197,3 +197,10 @@ const deepTestOnTypes = S.object() .valueOf() console.log('deepTestOnTypes:\n', JSON.stringify(deepTestOnTypes)) + +const tsIsoSchema = S.object() + .prop('createdAt', S.string().format('iso-time')) + .prop('updatedAt', S.string().format('iso-date-time')) + .valueOf() + +console.log('ISO schema OK:', JSON.stringify(tsIsoSchema)) From 0522562e87de5c81bc81bb3bc6e3396506c90d9b Mon Sep 17 00:00:00 2001 From: baki gul Date: Wed, 18 Jun 2025 19:42:41 +0300 Subject: [PATCH 2/3] test: add validation for FORMATS.ISO_TIME in StringSchema tests --- src/StringSchema.test.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/StringSchema.test.js b/src/StringSchema.test.js index 829ad24..30e986d 100644 --- a/src/StringSchema.test.js +++ b/src/StringSchema.test.js @@ -101,6 +101,15 @@ describe('StringSchema', () => { } ) }) + it('valid FORMATS.ISO_TIME', () => { + assert.deepStrictEqual( + StringSchema().format(FORMATS.ISO_TIME).valueOf(), + { + type: 'string', + format: 'iso-time' + } + ) + }) it('invalid', () => { assert.throws( () => StringSchema().format('invalid'), From 0af4e7f664729dc655fa4949d8647cf25e4f17ff Mon Sep 17 00:00:00 2001 From: baki gul Date: Wed, 18 Jun 2025 19:42:57 +0300 Subject: [PATCH 3/3] docs: update string format options to include DATE_TIME, ISO_TIME, and ISO_DATE_TIME --- docs/API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/API.md b/docs/API.md index 1db3872..a8270e4 100644 --- a/docs/API.md +++ b/docs/API.md @@ -311,7 +311,7 @@ The length of a string instance is defined as the number of its characters as de

reference

format(format)StringSchema
-

A string value can be RELATIVE_JSON_POINTER, JSON_POINTER, UUID, REGEX, IPV6, IPV4, HOSTNAME, EMAIL, URL, URI_TEMPLATE, URI_REFERENCE, URI, TIME, DATE,

+

A string value can be RELATIVE_JSON_POINTER, JSON_POINTER, UUID, REGEX, IPV6, IPV4, HOSTNAME, EMAIL, URL, URI_TEMPLATE, URI_REFERENCE, URI, TIME, DATE, DATE_TIME, ISO_TIME, ISO_DATE_TIME.

reference

pattern(pattern)StringSchema
@@ -1200,7 +1200,7 @@ The length of a string instance is defined as the number of its characters as de ## format(format) ⇒ [StringSchema](#StringSchema) -A string value can be RELATIVE_JSON_POINTER, JSON_POINTER, UUID, REGEX, IPV6, IPV4, HOSTNAME, EMAIL, URL, URI_TEMPLATE, URI_REFERENCE, URI, TIME, DATE, +A string value can be RELATIVE_JSON_POINTER, JSON_POINTER, UUID, REGEX, IPV6, IPV4, HOSTNAME, EMAIL, URL, URI_TEMPLATE, URI_REFERENCE, URI, TIME, DATE, DATE_TIME, ISO_TIME, ISO_DATE_TIME. [reference](https://tools.ietf.org/id/draft-handrews-json-schema-validation-01.html#rfc.section.7.3)