From 1d2e1f97d27c5d50e74fbef6b4210ee52190f7c9 Mon Sep 17 00:00:00 2001 From: Dmitry Zakharov <dzakh.dev@gmail.com> Date: Mon, 15 Jul 2024 12:30:28 +0400 Subject: [PATCH 1/2] Update rescript-schema up to V8 --- cases/rescript-schema.ts | 95 +++++++++++++++++----------------------- package-lock.json | 30 ++++++------- package.json | 5 +-- 3 files changed, 58 insertions(+), 72 deletions(-) diff --git a/cases/rescript-schema.ts b/cases/rescript-schema.ts index 06700e6b3..f806a4fe1 100644 --- a/cases/rescript-schema.ts +++ b/cases/rescript-schema.ts @@ -2,8 +2,24 @@ import * as S from 'rescript-schema'; import { createCase } from '../benchmarks'; -createCase('rescript-schema', 'parseSafe', () => { - const schema = S.object({ +// To bypass the "Assertions require every name in the call target to be declared with an explicit type annotation.ts(2775)" +// when using assert +type Data = { + number: number; + negNumber: number; + maxNumber: number; + string: string; + longString: string; + boolean: boolean; + deeplyNested: { + foo: string; + num: number; + bool: boolean; + }; +}; + +const makeSchema = () => + S.object({ number: S.number, negNumber: S.number, maxNumber: S.number, @@ -17,79 +33,50 @@ createCase('rescript-schema', 'parseSafe', () => { }), }); +createCase('rescript-schema', 'parseSafe', () => { + S.setGlobalConfig({ + disableNanNumberCheck: true, + }); + const schema = makeSchema(); + return data => { - return S.parseOrThrow(schema, data); + return schema.parseOrThrow(data); }; }); createCase('rescript-schema', 'parseStrict', () => { - const schema = S.Object.strict( - S.object({ - number: S.number, - negNumber: S.number, - maxNumber: S.number, - string: S.string, - longString: S.string, - boolean: S.boolean, - deeplyNested: S.Object.strict( - S.object({ - foo: S.string, - num: S.number, - bool: S.boolean, - }) - ), - }) - ); + S.setGlobalConfig({ + disableNanNumberCheck: true, + defaultUnknownKeys: 'Strict', + }); + const schema = makeSchema(); return data => { - return S.parseOrThrow(schema, data); + return schema.parseOrThrow(data); }; }); createCase('rescript-schema', 'assertLoose', () => { - const schema = S.object({ - number: S.number, - negNumber: S.number, - maxNumber: S.number, - string: S.string, - longString: S.string, - boolean: S.boolean, - deeplyNested: S.object({ - foo: S.string, - num: S.number, - bool: S.boolean, - }), + S.setGlobalConfig({ + disableNanNumberCheck: true, }); + const schema: S.Schema<Data> = makeSchema(); return data => { - S.parseOrThrow(schema, data); - + schema.assert(data); return true; }; }); createCase('rescript-schema', 'assertStrict', () => { - const schema = S.Object.strict( - S.object({ - number: S.number, - negNumber: S.number, - maxNumber: S.number, - string: S.string, - longString: S.string, - boolean: S.boolean, - deeplyNested: S.Object.strict( - S.object({ - foo: S.string, - num: S.number, - bool: S.boolean, - }) - ), - }) - ); + S.setGlobalConfig({ + disableNanNumberCheck: true, + defaultUnknownKeys: 'Strict', + }); + const schema: S.Schema<Data> = makeSchema(); return data => { - S.parseOrThrow(schema, data); - + schema.assert(data); return true; }; }); diff --git a/package-lock.json b/package-lock.json index a976a2ed7..85d1b27ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,8 +46,8 @@ "purify-ts": "2.0.3", "r-assign": "1.9.0", "reflect-metadata": "0.2.2", - "rescript": "11.0.0-rc.6", - "rescript-schema": "6.1.0", + "rescript": "11.1.2", + "rescript-schema": "8.0.0", "rulr": "8.7.6", "runtypes": "6.7.0", "serve": "14.2.3", @@ -8865,9 +8865,9 @@ } }, "node_modules/rescript": { - "version": "11.0.0-rc.6", - "resolved": "https://registry.npmjs.org/rescript/-/rescript-11.0.0-rc.6.tgz", - "integrity": "sha512-2nqdpQxLgQGNp0Rb8AFn5cM3kwRTd54zLvchqCsK3iLOe1CJwdVW5nEF7lsJbFTqihl8W6Va1y7SbFxY3FNxOQ==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/rescript/-/rescript-11.1.2.tgz", + "integrity": "sha512-sA4EgPoPbwGM/+R8xkZJzgr1gvnA1E/Gxjg6DXSG8csl8ttrSBMwHYK4FtGF0K9Ej5NRgsvIi7p/v/dtLB/cjg==", "hasInstallScript": true, "bin": { "bsc": "bsc", @@ -8879,11 +8879,11 @@ } }, "node_modules/rescript-schema": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rescript-schema/-/rescript-schema-6.1.0.tgz", - "integrity": "sha512-DGN0pDGQk9pSjJGkGSQMMnfaXHeZ8cczoqirzKTZAksQSxkufnLX696IQ4d//eBZl5Rl+qhFBERH69T7A5FBRA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/rescript-schema/-/rescript-schema-8.0.0.tgz", + "integrity": "sha512-+i/us90Q73HeRZ9Y6BXfogb0BXpfwDmmFhHI+dZkvnzGOLMQEx3kowXv78LfP2ujpedwpN85/aqEPXRb+eBtog==", "peerDependencies": { - "rescript": "11.0.x || ~11.0.0-rc" + "rescript": "11.x" } }, "node_modules/resolve": { @@ -17314,14 +17314,14 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "rescript": { - "version": "11.0.0-rc.6", - "resolved": "https://registry.npmjs.org/rescript/-/rescript-11.0.0-rc.6.tgz", - "integrity": "sha512-2nqdpQxLgQGNp0Rb8AFn5cM3kwRTd54zLvchqCsK3iLOe1CJwdVW5nEF7lsJbFTqihl8W6Va1y7SbFxY3FNxOQ==" + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/rescript/-/rescript-11.1.2.tgz", + "integrity": "sha512-sA4EgPoPbwGM/+R8xkZJzgr1gvnA1E/Gxjg6DXSG8csl8ttrSBMwHYK4FtGF0K9Ej5NRgsvIi7p/v/dtLB/cjg==" }, "rescript-schema": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rescript-schema/-/rescript-schema-6.1.0.tgz", - "integrity": "sha512-DGN0pDGQk9pSjJGkGSQMMnfaXHeZ8cczoqirzKTZAksQSxkufnLX696IQ4d//eBZl5Rl+qhFBERH69T7A5FBRA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/rescript-schema/-/rescript-schema-8.0.0.tgz", + "integrity": "sha512-+i/us90Q73HeRZ9Y6BXfogb0BXpfwDmmFhHI+dZkvnzGOLMQEx3kowXv78LfP2ujpedwpN85/aqEPXRb+eBtog==", "requires": {} }, "resolve": { diff --git a/package.json b/package.json index f8e5a25a0..b63e2f2b7 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,6 @@ "jointz": "7.0.4", "json-decoder": "1.4.1", "mol_data_all": "1.1.1123", - "@mondrian-framework/model": "2.0.43", "myzod": "1.11.0", "ok-computer": "1.0.4", "parse-dont-validate": "4.0.0", @@ -63,8 +62,8 @@ "purify-ts": "2.0.3", "r-assign": "1.9.0", "reflect-metadata": "0.2.2", - "rescript": "11.0.0-rc.6", - "rescript-schema": "6.1.0", + "rescript": "11.1.2", + "rescript-schema": "8.0.0", "rulr": "8.7.6", "runtypes": "6.7.0", "serve": "14.2.3", From 7949759d7a8c400d1ba36f74e400c5d239a12acc Mon Sep 17 00:00:00 2001 From: Dmitry Zakharov <dzakh.dev@gmail.com> Date: Mon, 15 Jul 2024 19:13:18 +0400 Subject: [PATCH 2/2] Fix ts for assertion --- cases/rescript-schema.ts | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/cases/rescript-schema.ts b/cases/rescript-schema.ts index f806a4fe1..928eab6ba 100644 --- a/cases/rescript-schema.ts +++ b/cases/rescript-schema.ts @@ -2,22 +2,6 @@ import * as S from 'rescript-schema'; import { createCase } from '../benchmarks'; -// To bypass the "Assertions require every name in the call target to be declared with an explicit type annotation.ts(2775)" -// when using assert -type Data = { - number: number; - negNumber: number; - maxNumber: number; - string: string; - longString: string; - boolean: boolean; - deeplyNested: { - foo: string; - num: number; - bool: boolean; - }; -}; - const makeSchema = () => S.object({ number: S.number, @@ -60,10 +44,10 @@ createCase('rescript-schema', 'assertLoose', () => { S.setGlobalConfig({ disableNanNumberCheck: true, }); - const schema: S.Schema<Data> = makeSchema(); + const schema = makeSchema(); return data => { - schema.assert(data); + schema.assert(data)!; return true; }; }); @@ -73,10 +57,10 @@ createCase('rescript-schema', 'assertStrict', () => { disableNanNumberCheck: true, defaultUnknownKeys: 'Strict', }); - const schema: S.Schema<Data> = makeSchema(); + const schema = makeSchema(); return data => { - schema.assert(data); + schema.assert(data)!; return true; }; });