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;
   };
 });