tinybase 7.1.0-beta.3 → 7.1.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/@types/schematizers/schematizer-arktype/index.d.ts +114 -0
  2. package/@types/schematizers/schematizer-arktype/with-schemas/index.d.ts +8 -0
  3. package/@types/schematizers/schematizer-effect/index.d.ts +118 -0
  4. package/@types/schematizers/schematizer-effect/with-schemas/index.d.ts +8 -0
  5. package/@types/schematizers/schematizer-yup/index.d.ts +112 -0
  6. package/@types/schematizers/schematizer-yup/with-schemas/index.d.ts +7 -0
  7. package/checkpoints/index.js +2 -2
  8. package/checkpoints/with-schemas/index.js +2 -2
  9. package/index.js +6 -4
  10. package/indexes/index.js +2 -2
  11. package/indexes/with-schemas/index.js +2 -2
  12. package/mergeable-store/index.js +2 -2
  13. package/mergeable-store/with-schemas/index.js +2 -2
  14. package/metrics/index.js +6 -4
  15. package/metrics/with-schemas/index.js +6 -4
  16. package/min/checkpoints/index.js +1 -1
  17. package/min/checkpoints/index.js.gz +0 -0
  18. package/min/checkpoints/with-schemas/index.js +1 -1
  19. package/min/checkpoints/with-schemas/index.js.gz +0 -0
  20. package/min/index.js +1 -1
  21. package/min/index.js.gz +0 -0
  22. package/min/indexes/index.js +1 -1
  23. package/min/indexes/index.js.gz +0 -0
  24. package/min/indexes/with-schemas/index.js +1 -1
  25. package/min/indexes/with-schemas/index.js.gz +0 -0
  26. package/min/mergeable-store/index.js +1 -1
  27. package/min/mergeable-store/index.js.gz +0 -0
  28. package/min/mergeable-store/with-schemas/index.js +1 -1
  29. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  30. package/min/metrics/index.js +1 -1
  31. package/min/metrics/index.js.gz +0 -0
  32. package/min/metrics/with-schemas/index.js +1 -1
  33. package/min/metrics/with-schemas/index.js.gz +0 -0
  34. package/min/omni/index.js +1 -1
  35. package/min/omni/index.js.gz +0 -0
  36. package/min/omni/with-schemas/index.js +1 -1
  37. package/min/omni/with-schemas/index.js.gz +0 -0
  38. package/min/persisters/index.js +1 -1
  39. package/min/persisters/index.js.gz +0 -0
  40. package/min/persisters/persister-automerge/index.js +1 -1
  41. package/min/persisters/persister-automerge/index.js.gz +0 -0
  42. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  43. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  44. package/min/persisters/persister-browser/index.js +1 -1
  45. package/min/persisters/persister-browser/index.js.gz +0 -0
  46. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  47. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  48. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  49. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  50. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  51. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  52. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  53. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  54. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  55. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  56. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  57. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  58. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  59. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  60. package/min/persisters/persister-electric-sql/index.js +1 -1
  61. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  62. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  63. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  64. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  65. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  66. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  67. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  68. package/min/persisters/persister-file/index.js +1 -1
  69. package/min/persisters/persister-file/index.js.gz +0 -0
  70. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  71. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  72. package/min/persisters/persister-indexed-db/index.js +1 -1
  73. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  74. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  75. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  76. package/min/persisters/persister-libsql/index.js +1 -1
  77. package/min/persisters/persister-libsql/index.js.gz +0 -0
  78. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  79. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  80. package/min/persisters/persister-partykit-client/index.js +1 -1
  81. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  82. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  83. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  84. package/min/persisters/persister-pglite/index.js +1 -1
  85. package/min/persisters/persister-pglite/index.js.gz +0 -0
  86. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  87. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  88. package/min/persisters/persister-postgres/index.js +1 -1
  89. package/min/persisters/persister-postgres/index.js.gz +0 -0
  90. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  91. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  92. package/min/persisters/persister-powersync/index.js +1 -1
  93. package/min/persisters/persister-powersync/index.js.gz +0 -0
  94. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  95. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  96. package/min/persisters/persister-react-native-mmkv/index.js +1 -1
  97. package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
  98. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
  99. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
  100. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  101. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  102. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  103. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  104. package/min/persisters/persister-remote/index.js +1 -1
  105. package/min/persisters/persister-remote/index.js.gz +0 -0
  106. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  107. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  108. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  109. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  110. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  111. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  112. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  113. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  114. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  115. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  116. package/min/persisters/persister-sqlite3/index.js +1 -1
  117. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  118. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  119. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  120. package/min/persisters/persister-yjs/index.js +1 -1
  121. package/min/persisters/persister-yjs/index.js.gz +0 -0
  122. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  123. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  124. package/min/persisters/with-schemas/index.js +1 -1
  125. package/min/persisters/with-schemas/index.js.gz +0 -0
  126. package/min/queries/index.js +1 -1
  127. package/min/queries/index.js.gz +0 -0
  128. package/min/queries/with-schemas/index.js +1 -1
  129. package/min/queries/with-schemas/index.js.gz +0 -0
  130. package/min/relationships/index.js +1 -1
  131. package/min/relationships/index.js.gz +0 -0
  132. package/min/relationships/with-schemas/index.js +1 -1
  133. package/min/relationships/with-schemas/index.js.gz +0 -0
  134. package/min/schematizers/schematizer-arktype/index.js +1 -0
  135. package/min/schematizers/schematizer-arktype/index.js.gz +0 -0
  136. package/min/schematizers/schematizer-arktype/with-schemas/index.js +1 -0
  137. package/min/schematizers/schematizer-arktype/with-schemas/index.js.gz +0 -0
  138. package/min/schematizers/schematizer-effect/index.js +1 -0
  139. package/min/schematizers/schematizer-effect/index.js.gz +0 -0
  140. package/min/schematizers/schematizer-effect/with-schemas/index.js +1 -0
  141. package/min/schematizers/schematizer-effect/with-schemas/index.js.gz +0 -0
  142. package/min/schematizers/schematizer-typebox/index.js +1 -1
  143. package/min/schematizers/schematizer-typebox/index.js.gz +0 -0
  144. package/min/schematizers/schematizer-typebox/with-schemas/index.js +1 -1
  145. package/min/schematizers/schematizer-typebox/with-schemas/index.js.gz +0 -0
  146. package/min/schematizers/schematizer-valibot/index.js +1 -1
  147. package/min/schematizers/schematizer-valibot/index.js.gz +0 -0
  148. package/min/schematizers/schematizer-valibot/with-schemas/index.js +1 -1
  149. package/min/schematizers/schematizer-valibot/with-schemas/index.js.gz +0 -0
  150. package/min/schematizers/schematizer-yup/index.js +1 -0
  151. package/min/schematizers/schematizer-yup/index.js.gz +0 -0
  152. package/min/schematizers/schematizer-yup/with-schemas/index.js +1 -0
  153. package/min/schematizers/schematizer-yup/with-schemas/index.js.gz +0 -0
  154. package/min/store/index.js +1 -1
  155. package/min/store/index.js.gz +0 -0
  156. package/min/store/with-schemas/index.js +1 -1
  157. package/min/store/with-schemas/index.js.gz +0 -0
  158. package/min/synchronizers/index.js +1 -1
  159. package/min/synchronizers/index.js.gz +0 -0
  160. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  161. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  162. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  163. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  164. package/min/synchronizers/synchronizer-local/index.js +1 -1
  165. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  166. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  167. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  168. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  169. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  170. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  171. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  172. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  173. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  174. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  175. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  176. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  177. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  178. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  179. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  180. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  181. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  182. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  183. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  184. package/min/synchronizers/with-schemas/index.js +1 -1
  185. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  186. package/min/ui-react-dom/index.js +1 -1
  187. package/min/ui-react-dom/index.js.gz +0 -0
  188. package/min/ui-react-dom/with-schemas/index.js +1 -1
  189. package/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  190. package/min/ui-react-inspector/index.js +1 -1
  191. package/min/ui-react-inspector/index.js.gz +0 -0
  192. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  193. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  194. package/min/with-schemas/index.js +1 -1
  195. package/min/with-schemas/index.js.gz +0 -0
  196. package/omni/index.js +19 -16
  197. package/omni/with-schemas/index.js +19 -16
  198. package/package.json +118 -2
  199. package/persisters/index.js +6 -4
  200. package/persisters/persister-automerge/index.js +2 -2
  201. package/persisters/persister-automerge/with-schemas/index.js +2 -2
  202. package/persisters/persister-browser/index.js +3 -3
  203. package/persisters/persister-browser/with-schemas/index.js +3 -3
  204. package/persisters/persister-cr-sqlite-wasm/index.js +6 -4
  205. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +6 -4
  206. package/persisters/persister-durable-object-sql-storage/index.js +6 -4
  207. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +6 -4
  208. package/persisters/persister-durable-object-storage/index.js +3 -3
  209. package/persisters/persister-durable-object-storage/with-schemas/index.js +3 -3
  210. package/persisters/persister-electric-sql/index.js +6 -4
  211. package/persisters/persister-electric-sql/with-schemas/index.js +6 -4
  212. package/persisters/persister-expo-sqlite/index.js +6 -4
  213. package/persisters/persister-expo-sqlite/with-schemas/index.js +6 -4
  214. package/persisters/persister-file/index.js +3 -3
  215. package/persisters/persister-file/with-schemas/index.js +3 -3
  216. package/persisters/persister-indexed-db/index.js +2 -2
  217. package/persisters/persister-indexed-db/with-schemas/index.js +2 -2
  218. package/persisters/persister-libsql/index.js +6 -4
  219. package/persisters/persister-libsql/with-schemas/index.js +6 -4
  220. package/persisters/persister-partykit-client/index.js +2 -2
  221. package/persisters/persister-partykit-client/with-schemas/index.js +2 -2
  222. package/persisters/persister-pglite/index.js +3 -3
  223. package/persisters/persister-pglite/with-schemas/index.js +3 -3
  224. package/persisters/persister-postgres/index.js +3 -3
  225. package/persisters/persister-postgres/with-schemas/index.js +3 -3
  226. package/persisters/persister-powersync/index.js +6 -4
  227. package/persisters/persister-powersync/with-schemas/index.js +6 -4
  228. package/persisters/persister-react-native-mmkv/index.js +4 -4
  229. package/persisters/persister-react-native-mmkv/with-schemas/index.js +4 -4
  230. package/persisters/persister-react-native-sqlite/index.js +6 -4
  231. package/persisters/persister-react-native-sqlite/with-schemas/index.js +6 -4
  232. package/persisters/persister-remote/index.js +2 -2
  233. package/persisters/persister-remote/with-schemas/index.js +2 -2
  234. package/persisters/persister-sqlite-bun/index.js +6 -4
  235. package/persisters/persister-sqlite-bun/with-schemas/index.js +6 -4
  236. package/persisters/persister-sqlite-wasm/index.js +6 -4
  237. package/persisters/persister-sqlite-wasm/with-schemas/index.js +6 -4
  238. package/persisters/persister-sqlite3/index.js +6 -4
  239. package/persisters/persister-sqlite3/with-schemas/index.js +6 -4
  240. package/persisters/persister-yjs/index.js +2 -2
  241. package/persisters/persister-yjs/with-schemas/index.js +2 -2
  242. package/persisters/with-schemas/index.js +6 -4
  243. package/queries/index.js +1 -1
  244. package/queries/with-schemas/index.js +1 -1
  245. package/readme.md +1 -1
  246. package/relationships/index.js +2 -2
  247. package/relationships/with-schemas/index.js +2 -2
  248. package/schematizers/schematizer-arktype/index.js +163 -0
  249. package/schematizers/schematizer-arktype/with-schemas/index.js +163 -0
  250. package/schematizers/schematizer-effect/index.js +137 -0
  251. package/schematizers/schematizer-effect/with-schemas/index.js +137 -0
  252. package/schematizers/schematizer-typebox/index.js +3 -2
  253. package/schematizers/schematizer-typebox/with-schemas/index.js +3 -2
  254. package/schematizers/schematizer-valibot/index.js +4 -4
  255. package/schematizers/schematizer-valibot/with-schemas/index.js +4 -4
  256. package/schematizers/schematizer-yup/index.js +100 -0
  257. package/schematizers/schematizer-yup/with-schemas/index.js +100 -0
  258. package/schematizers/schematizer-zod/index.js +2 -2
  259. package/schematizers/schematizer-zod/with-schemas/index.js +2 -2
  260. package/store/index.js +2 -2
  261. package/store/with-schemas/index.js +2 -2
  262. package/synchronizers/index.js +2 -2
  263. package/synchronizers/synchronizer-broadcast-channel/index.js +2 -2
  264. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +2 -2
  265. package/synchronizers/synchronizer-local/index.js +2 -2
  266. package/synchronizers/synchronizer-local/with-schemas/index.js +2 -2
  267. package/synchronizers/synchronizer-ws-client/index.js +3 -3
  268. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +3 -3
  269. package/synchronizers/synchronizer-ws-server/index.js +3 -3
  270. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +3 -3
  271. package/synchronizers/synchronizer-ws-server-durable-object/index.js +3 -3
  272. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +3 -3
  273. package/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  274. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  275. package/synchronizers/with-schemas/index.js +2 -2
  276. package/ui-react-dom/index.js +11 -8
  277. package/ui-react-dom/with-schemas/index.js +11 -8
  278. package/ui-react-inspector/index.js +14 -11
  279. package/ui-react-inspector/with-schemas/index.js +14 -11
  280. package/with-schemas/index.js +6 -4
@@ -0,0 +1,163 @@
1
+ const getTypeOf = (thing) => typeof thing;
2
+ const EMPTY_STRING = '';
3
+ const STRING = getTypeOf(EMPTY_STRING);
4
+ const BOOLEAN = getTypeOf(true);
5
+ const NUMBER = getTypeOf(0);
6
+ const TYPE = 'type';
7
+ const DEFAULT = 'default';
8
+ const ALLOW_NULL = 'allowNull';
9
+ const _VALUE = 'value';
10
+ const DOMAIN = 'domain';
11
+ const KEY = 'key';
12
+ const OPTIONAL = 'optional';
13
+ const REQUIRED = 'required';
14
+ const UNIT = 'unit';
15
+
16
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
17
+ predicate(value) ? otherwise?.() : then(value);
18
+ const isNullish = (thing) => thing == null;
19
+ const isUndefined = (thing) => thing === void 0;
20
+ const isNull = (thing) => thing === null;
21
+ const isTrue = (thing) => thing === true;
22
+ const isFalse = (thing) => thing === false;
23
+ const ifNotNullish = getIfNotFunction(isNullish);
24
+ const ifNotUndefined = getIfNotFunction(isUndefined);
25
+ const isArray = (thing) => Array.isArray(thing);
26
+ const size = (arrayOrString) => arrayOrString.length;
27
+
28
+ const arrayEvery = (array, cb) => array.every(cb);
29
+ const arrayForEach = (array, cb) => array.forEach(cb);
30
+ const arrayFind = (array, cb) => array.find(cb);
31
+
32
+ const object = Object;
33
+ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
34
+ const objEntries = object.entries;
35
+ const isObject = (obj) =>
36
+ !isNullish(obj) &&
37
+ ifNotNullish(
38
+ getPrototypeOf(obj),
39
+ (objPrototype) =>
40
+ objPrototype == object.prototype ||
41
+ isNullish(getPrototypeOf(objPrototype)),
42
+
43
+ /* istanbul ignore next */
44
+ () => true,
45
+ );
46
+ const objIds = object.keys;
47
+ const objFreeze = object.freeze;
48
+ const objNew = (entries = []) => object.fromEntries(entries);
49
+ const objForEach = (obj, cb) =>
50
+ arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
51
+ const objSize = (obj) => size(objIds(obj));
52
+ const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
53
+
54
+ const createCustomSchematizer = (unwrapSchema, getProperties) => {
55
+ const toCellOrValueSchema = (schema) => {
56
+ const [unwrapped, defaultValue, allowNull] = unwrapSchema(schema);
57
+ const type = unwrapped?.type;
58
+ if (type !== STRING && type !== NUMBER && type !== BOOLEAN) {
59
+ return void 0;
60
+ }
61
+ const cellOrValueSchema = {[TYPE]: type};
62
+ ifNotUndefined(defaultValue, (defaultValue2) => {
63
+ cellOrValueSchema[DEFAULT] = defaultValue2;
64
+ });
65
+ if (allowNull) {
66
+ cellOrValueSchema[ALLOW_NULL] = true;
67
+ }
68
+ return cellOrValueSchema;
69
+ };
70
+ const toTablesSchema = (schemas) => {
71
+ const tablesSchema = objNew();
72
+ objForEach(schemas, (schema, tableId) => {
73
+ const tableSchema = objNew();
74
+ ifNotUndefined(getProperties(schema), (properties) =>
75
+ objForEach(properties, (cellSchema, cellId) =>
76
+ ifNotUndefined(toCellOrValueSchema(cellSchema), (cellSchema2) => {
77
+ tableSchema[cellId] = cellSchema2;
78
+ }),
79
+ ),
80
+ );
81
+ if (!objIsEmpty(tableSchema)) {
82
+ tablesSchema[tableId] = tableSchema;
83
+ }
84
+ });
85
+ return tablesSchema;
86
+ };
87
+ const toValuesSchema = (schemas) => {
88
+ const valuesSchema = objNew();
89
+ objForEach(schemas, (schema, valueId) =>
90
+ ifNotUndefined(toCellOrValueSchema(schema), (valueSchema) => {
91
+ valuesSchema[valueId] = valueSchema;
92
+ }),
93
+ );
94
+ return valuesSchema;
95
+ };
96
+ return objFreeze({
97
+ toTablesSchema,
98
+ toValuesSchema,
99
+ });
100
+ };
101
+
102
+ const unwrapSchema = (schema, defaultValue, allowNull) => {
103
+ if (isArray(schema)) {
104
+ const hasNull = !arrayEvery(
105
+ schema,
106
+ (item) => !isNull(item?.[UNIT]) && !isNull(item),
107
+ );
108
+ if (
109
+ size(schema) === 2 &&
110
+ isFalse(schema[0]?.[UNIT]) &&
111
+ isTrue(schema[1]?.[UNIT])
112
+ ) {
113
+ return [{[TYPE]: BOOLEAN}, defaultValue, allowNull ?? false];
114
+ }
115
+ if (hasNull) {
116
+ const nonNullItem = arrayFind(
117
+ schema,
118
+ (item) => !isNull(item?.[UNIT]) && !isNull(item) && item !== '=',
119
+ );
120
+ if (nonNullItem) {
121
+ return unwrapSchema(nonNullItem, defaultValue, true);
122
+ }
123
+ }
124
+ }
125
+ return [
126
+ {[TYPE]: schema?.[DOMAIN] || schema},
127
+ defaultValue,
128
+ allowNull ?? false,
129
+ ];
130
+ };
131
+ const getProperties = (schema) => {
132
+ const properties = objNew();
133
+ const schemaData = schema?.json ?? schema;
134
+ if (schemaData?.[REQUIRED]) {
135
+ arrayForEach(schemaData[REQUIRED], (field) => {
136
+ properties[field[KEY]] = field[_VALUE];
137
+ });
138
+ }
139
+ if (schemaData?.[OPTIONAL]) {
140
+ arrayForEach(schemaData[OPTIONAL], (field) => {
141
+ const value = field[_VALUE];
142
+ const defaultVal = field[DEFAULT];
143
+ properties[field[KEY]] = !isUndefined(defaultVal)
144
+ ? {[_VALUE]: value, [DEFAULT]: defaultVal}
145
+ : value;
146
+ });
147
+ }
148
+ return objIsEmpty(properties) ? void 0 : properties;
149
+ };
150
+ const unwrapSchemaWithDefaults = (schema, defaultValue, allowNull) => {
151
+ if (isArray(schema) && size(schema) === 3 && schema[1] === '=') {
152
+ const schemaValue = schema[0]?.json ?? schema[0];
153
+ return unwrapSchema(schemaValue, schema[2], allowNull);
154
+ }
155
+ if (schema?.[_VALUE] && !isUndefined(schema?.[DEFAULT])) {
156
+ return unwrapSchema(schema[_VALUE], schema[DEFAULT], allowNull);
157
+ }
158
+ return unwrapSchema(schema, defaultValue, allowNull);
159
+ };
160
+ const createArkTypeSchematizer = () =>
161
+ createCustomSchematizer(unwrapSchemaWithDefaults, getProperties);
162
+
163
+ export {createArkTypeSchematizer};
@@ -0,0 +1,137 @@
1
+ const getTypeOf = (thing) => typeof thing;
2
+ const EMPTY_STRING = '';
3
+ const STRING = getTypeOf(EMPTY_STRING);
4
+ const BOOLEAN = getTypeOf(true);
5
+ const NUMBER = getTypeOf(0);
6
+ const TYPE = 'type';
7
+ const DEFAULT = 'default';
8
+ const ALLOW_NULL = 'allowNull';
9
+ const LITERAL = 'Literal';
10
+ const PROPERTY_SIGNATURES = 'propertySignatures';
11
+ const STRING_KEYWORD = 'StringKeyword';
12
+ const NUMBER_KEYWORD = 'NumberKeyword';
13
+ const BOOLEAN_KEYWORD = 'BooleanKeyword';
14
+ const TYPE_LITERAL = 'TypeLiteral';
15
+ const UNION = 'Union';
16
+
17
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
19
+ const isNullish = (thing) => thing == null;
20
+ const isUndefined = (thing) => thing === void 0;
21
+ const isNull = (thing) => thing === null;
22
+ const ifNotNullish = getIfNotFunction(isNullish);
23
+ const ifNotUndefined = getIfNotFunction(isUndefined);
24
+ const size = (arrayOrString) => arrayOrString.length;
25
+
26
+ const arrayForEach = (array, cb) => array.forEach(cb);
27
+ const arrayFind = (array, cb) => array.find(cb);
28
+
29
+ const object = Object;
30
+ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
31
+ const objEntries = object.entries;
32
+ const isObject = (obj) =>
33
+ !isNullish(obj) &&
34
+ ifNotNullish(
35
+ getPrototypeOf(obj),
36
+ (objPrototype) =>
37
+ objPrototype == object.prototype ||
38
+ isNullish(getPrototypeOf(objPrototype)),
39
+
40
+ /* istanbul ignore next */
41
+ () => true,
42
+ );
43
+ const objIds = object.keys;
44
+ const objFreeze = object.freeze;
45
+ const objNew = (entries = []) => object.fromEntries(entries);
46
+ const objForEach = (obj, cb) =>
47
+ arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
48
+ const objSize = (obj) => size(objIds(obj));
49
+ const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
50
+
51
+ const createCustomSchematizer = (unwrapSchema, getProperties) => {
52
+ const toCellOrValueSchema = (schema) => {
53
+ const [unwrapped, defaultValue, allowNull] = unwrapSchema(schema);
54
+ const type = unwrapped?.type;
55
+ if (type !== STRING && type !== NUMBER && type !== BOOLEAN) {
56
+ return void 0;
57
+ }
58
+ const cellOrValueSchema = {[TYPE]: type};
59
+ ifNotUndefined(defaultValue, (defaultValue2) => {
60
+ cellOrValueSchema[DEFAULT] = defaultValue2;
61
+ });
62
+ if (allowNull) {
63
+ cellOrValueSchema[ALLOW_NULL] = true;
64
+ }
65
+ return cellOrValueSchema;
66
+ };
67
+ const toTablesSchema = (schemas) => {
68
+ const tablesSchema = objNew();
69
+ objForEach(schemas, (schema, tableId) => {
70
+ const tableSchema = objNew();
71
+ ifNotUndefined(getProperties(schema), (properties) =>
72
+ objForEach(properties, (cellSchema, cellId) =>
73
+ ifNotUndefined(toCellOrValueSchema(cellSchema), (cellSchema2) => {
74
+ tableSchema[cellId] = cellSchema2;
75
+ }),
76
+ ),
77
+ );
78
+ if (!objIsEmpty(tableSchema)) {
79
+ tablesSchema[tableId] = tableSchema;
80
+ }
81
+ });
82
+ return tablesSchema;
83
+ };
84
+ const toValuesSchema = (schemas) => {
85
+ const valuesSchema = objNew();
86
+ objForEach(schemas, (schema, valueId) =>
87
+ ifNotUndefined(toCellOrValueSchema(schema), (valueSchema) => {
88
+ valuesSchema[valueId] = valueSchema;
89
+ }),
90
+ );
91
+ return valuesSchema;
92
+ };
93
+ return objFreeze({
94
+ toTablesSchema,
95
+ toValuesSchema,
96
+ });
97
+ };
98
+
99
+ const unwrapSchema = (schema, defaultValue, allowNull) => {
100
+ const ast = schema.ast || schema;
101
+ const type = ast._tag;
102
+ if (type === UNION) {
103
+ const types = ast.types;
104
+ return [
105
+ {[TYPE]: getSimpleType(types[0]._tag)},
106
+ defaultValue,
107
+ allowNull ||
108
+ !!arrayFind(types, (t) => t._tag === LITERAL && isNull(t.literal)),
109
+ ];
110
+ }
111
+ return [{[TYPE]: getSimpleType(type)}, defaultValue, allowNull || false];
112
+ };
113
+ const getSimpleType = (tag) =>
114
+ tag === STRING_KEYWORD
115
+ ? STRING
116
+ : tag === NUMBER_KEYWORD
117
+ ? NUMBER
118
+ : tag === BOOLEAN_KEYWORD
119
+ ? BOOLEAN
120
+ : EMPTY_STRING;
121
+ const getProperties = (schema) => {
122
+ const ast = schema.ast;
123
+ if (ast._tag === TYPE_LITERAL) {
124
+ const signatures = ast[PROPERTY_SIGNATURES];
125
+ if (signatures) {
126
+ const properties = {};
127
+ signatures.forEach((sig) => {
128
+ properties[sig.name] = sig.type;
129
+ });
130
+ return properties;
131
+ }
132
+ }
133
+ };
134
+ const createEffectSchematizer = () =>
135
+ createCustomSchematizer(unwrapSchema, getProperties);
136
+
137
+ export {createEffectSchematizer};
@@ -0,0 +1,137 @@
1
+ const getTypeOf = (thing) => typeof thing;
2
+ const EMPTY_STRING = '';
3
+ const STRING = getTypeOf(EMPTY_STRING);
4
+ const BOOLEAN = getTypeOf(true);
5
+ const NUMBER = getTypeOf(0);
6
+ const TYPE = 'type';
7
+ const DEFAULT = 'default';
8
+ const ALLOW_NULL = 'allowNull';
9
+ const LITERAL = 'Literal';
10
+ const PROPERTY_SIGNATURES = 'propertySignatures';
11
+ const STRING_KEYWORD = 'StringKeyword';
12
+ const NUMBER_KEYWORD = 'NumberKeyword';
13
+ const BOOLEAN_KEYWORD = 'BooleanKeyword';
14
+ const TYPE_LITERAL = 'TypeLiteral';
15
+ const UNION = 'Union';
16
+
17
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
19
+ const isNullish = (thing) => thing == null;
20
+ const isUndefined = (thing) => thing === void 0;
21
+ const isNull = (thing) => thing === null;
22
+ const ifNotNullish = getIfNotFunction(isNullish);
23
+ const ifNotUndefined = getIfNotFunction(isUndefined);
24
+ const size = (arrayOrString) => arrayOrString.length;
25
+
26
+ const arrayForEach = (array, cb) => array.forEach(cb);
27
+ const arrayFind = (array, cb) => array.find(cb);
28
+
29
+ const object = Object;
30
+ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
31
+ const objEntries = object.entries;
32
+ const isObject = (obj) =>
33
+ !isNullish(obj) &&
34
+ ifNotNullish(
35
+ getPrototypeOf(obj),
36
+ (objPrototype) =>
37
+ objPrototype == object.prototype ||
38
+ isNullish(getPrototypeOf(objPrototype)),
39
+
40
+ /* istanbul ignore next */
41
+ () => true,
42
+ );
43
+ const objIds = object.keys;
44
+ const objFreeze = object.freeze;
45
+ const objNew = (entries = []) => object.fromEntries(entries);
46
+ const objForEach = (obj, cb) =>
47
+ arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
48
+ const objSize = (obj) => size(objIds(obj));
49
+ const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
50
+
51
+ const createCustomSchematizer = (unwrapSchema, getProperties) => {
52
+ const toCellOrValueSchema = (schema) => {
53
+ const [unwrapped, defaultValue, allowNull] = unwrapSchema(schema);
54
+ const type = unwrapped?.type;
55
+ if (type !== STRING && type !== NUMBER && type !== BOOLEAN) {
56
+ return void 0;
57
+ }
58
+ const cellOrValueSchema = {[TYPE]: type};
59
+ ifNotUndefined(defaultValue, (defaultValue2) => {
60
+ cellOrValueSchema[DEFAULT] = defaultValue2;
61
+ });
62
+ if (allowNull) {
63
+ cellOrValueSchema[ALLOW_NULL] = true;
64
+ }
65
+ return cellOrValueSchema;
66
+ };
67
+ const toTablesSchema = (schemas) => {
68
+ const tablesSchema = objNew();
69
+ objForEach(schemas, (schema, tableId) => {
70
+ const tableSchema = objNew();
71
+ ifNotUndefined(getProperties(schema), (properties) =>
72
+ objForEach(properties, (cellSchema, cellId) =>
73
+ ifNotUndefined(toCellOrValueSchema(cellSchema), (cellSchema2) => {
74
+ tableSchema[cellId] = cellSchema2;
75
+ }),
76
+ ),
77
+ );
78
+ if (!objIsEmpty(tableSchema)) {
79
+ tablesSchema[tableId] = tableSchema;
80
+ }
81
+ });
82
+ return tablesSchema;
83
+ };
84
+ const toValuesSchema = (schemas) => {
85
+ const valuesSchema = objNew();
86
+ objForEach(schemas, (schema, valueId) =>
87
+ ifNotUndefined(toCellOrValueSchema(schema), (valueSchema) => {
88
+ valuesSchema[valueId] = valueSchema;
89
+ }),
90
+ );
91
+ return valuesSchema;
92
+ };
93
+ return objFreeze({
94
+ toTablesSchema,
95
+ toValuesSchema,
96
+ });
97
+ };
98
+
99
+ const unwrapSchema = (schema, defaultValue, allowNull) => {
100
+ const ast = schema.ast || schema;
101
+ const type = ast._tag;
102
+ if (type === UNION) {
103
+ const types = ast.types;
104
+ return [
105
+ {[TYPE]: getSimpleType(types[0]._tag)},
106
+ defaultValue,
107
+ allowNull ||
108
+ !!arrayFind(types, (t) => t._tag === LITERAL && isNull(t.literal)),
109
+ ];
110
+ }
111
+ return [{[TYPE]: getSimpleType(type)}, defaultValue, allowNull || false];
112
+ };
113
+ const getSimpleType = (tag) =>
114
+ tag === STRING_KEYWORD
115
+ ? STRING
116
+ : tag === NUMBER_KEYWORD
117
+ ? NUMBER
118
+ : tag === BOOLEAN_KEYWORD
119
+ ? BOOLEAN
120
+ : EMPTY_STRING;
121
+ const getProperties = (schema) => {
122
+ const ast = schema.ast;
123
+ if (ast._tag === TYPE_LITERAL) {
124
+ const signatures = ast[PROPERTY_SIGNATURES];
125
+ if (signatures) {
126
+ const properties = {};
127
+ signatures.forEach((sig) => {
128
+ properties[sig.name] = sig.type;
129
+ });
130
+ return properties;
131
+ }
132
+ }
133
+ };
134
+ const createEffectSchematizer = () =>
135
+ createCustomSchematizer(unwrapSchema, getProperties);
136
+
137
+ export {createEffectSchematizer};
@@ -7,6 +7,7 @@ const TYPE = 'type';
7
7
  const DEFAULT = 'default';
8
8
  const ALLOW_NULL = 'allowNull';
9
9
  const NULL = 'null';
10
+ const ANY_OF = 'anyOf';
10
11
 
11
12
  const getIfNotFunction = (predicate) => (value, then, otherwise) =>
12
13
  predicate(value) ? otherwise?.() : then(value);
@@ -17,6 +18,7 @@ const ifNotUndefined = getIfNotFunction(isUndefined);
17
18
  const size = (arrayOrString) => arrayOrString.length;
18
19
 
19
20
  const arrayForEach = (array, cb) => array.forEach(cb);
21
+ const arrayFind = (array, cb) => array.find(cb);
20
22
 
21
23
  const object = Object;
22
24
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
@@ -88,12 +90,11 @@ const createCustomSchematizer = (unwrapSchema, getProperties) => {
88
90
  });
89
91
  };
90
92
 
91
- const ANY_OF = 'anyOf';
92
93
  const unwrapSchema = (schema, defaultValue, allowNull) => {
93
94
  if (schema?.[ANY_OF]) {
94
95
  const types = schema[ANY_OF];
95
96
  const hasNull = types.some((t) => t?.type === NULL);
96
- const nonNullType = types.find((t) => t?.type !== NULL);
97
+ const nonNullType = arrayFind(types, (t) => t?.type !== NULL);
97
98
  if (hasNull && nonNullType) {
98
99
  return unwrapSchema(nonNullType, defaultValue ?? schema?.[DEFAULT], true);
99
100
  }
@@ -7,6 +7,7 @@ const TYPE = 'type';
7
7
  const DEFAULT = 'default';
8
8
  const ALLOW_NULL = 'allowNull';
9
9
  const NULL = 'null';
10
+ const ANY_OF = 'anyOf';
10
11
 
11
12
  const getIfNotFunction = (predicate) => (value, then, otherwise) =>
12
13
  predicate(value) ? otherwise?.() : then(value);
@@ -17,6 +18,7 @@ const ifNotUndefined = getIfNotFunction(isUndefined);
17
18
  const size = (arrayOrString) => arrayOrString.length;
18
19
 
19
20
  const arrayForEach = (array, cb) => array.forEach(cb);
21
+ const arrayFind = (array, cb) => array.find(cb);
20
22
 
21
23
  const object = Object;
22
24
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
@@ -88,12 +90,11 @@ const createCustomSchematizer = (unwrapSchema, getProperties) => {
88
90
  });
89
91
  };
90
92
 
91
- const ANY_OF = 'anyOf';
92
93
  const unwrapSchema = (schema, defaultValue, allowNull) => {
93
94
  if (schema?.[ANY_OF]) {
94
95
  const types = schema[ANY_OF];
95
96
  const hasNull = types.some((t) => t?.type === NULL);
96
- const nonNullType = types.find((t) => t?.type !== NULL);
97
+ const nonNullType = arrayFind(types, (t) => t?.type !== NULL);
97
98
  if (hasNull && nonNullType) {
98
99
  return unwrapSchema(nonNullType, defaultValue ?? schema?.[DEFAULT], true);
99
100
  }
@@ -6,6 +6,10 @@ const NUMBER = getTypeOf(0);
6
6
  const TYPE = 'type';
7
7
  const DEFAULT = 'default';
8
8
  const ALLOW_NULL = 'allowNull';
9
+ const FALLBACK = 'fallback';
10
+ const NULLABLE = 'nullable';
11
+ const OPTIONAL = 'optional';
12
+ const WRAPPED = 'wrapped';
9
13
 
10
14
  const getIfNotFunction = (predicate) => (value, then, otherwise) =>
11
15
  predicate(value) ? otherwise?.() : then(value);
@@ -87,10 +91,6 @@ const createCustomSchematizer = (unwrapSchema, getProperties) => {
87
91
  });
88
92
  };
89
93
 
90
- const OPTIONAL = 'optional';
91
- const NULLABLE = 'nullable';
92
- const FALLBACK = 'fallback';
93
- const WRAPPED = 'wrapped';
94
94
  const unwrapSchema = (schema, defaultValue, allowNull) => {
95
95
  const type = schema?.type;
96
96
  return type === OPTIONAL
@@ -6,6 +6,10 @@ const NUMBER = getTypeOf(0);
6
6
  const TYPE = 'type';
7
7
  const DEFAULT = 'default';
8
8
  const ALLOW_NULL = 'allowNull';
9
+ const FALLBACK = 'fallback';
10
+ const NULLABLE = 'nullable';
11
+ const OPTIONAL = 'optional';
12
+ const WRAPPED = 'wrapped';
9
13
 
10
14
  const getIfNotFunction = (predicate) => (value, then, otherwise) =>
11
15
  predicate(value) ? otherwise?.() : then(value);
@@ -87,10 +91,6 @@ const createCustomSchematizer = (unwrapSchema, getProperties) => {
87
91
  });
88
92
  };
89
93
 
90
- const OPTIONAL = 'optional';
91
- const NULLABLE = 'nullable';
92
- const FALLBACK = 'fallback';
93
- const WRAPPED = 'wrapped';
94
94
  const unwrapSchema = (schema, defaultValue, allowNull) => {
95
95
  const type = schema?.type;
96
96
  return type === OPTIONAL
@@ -0,0 +1,100 @@
1
+ const getTypeOf = (thing) => typeof thing;
2
+ const EMPTY_STRING = '';
3
+ const STRING = getTypeOf(EMPTY_STRING);
4
+ const BOOLEAN = getTypeOf(true);
5
+ const NUMBER = getTypeOf(0);
6
+ const TYPE = 'type';
7
+ const DEFAULT = 'default';
8
+ const ALLOW_NULL = 'allowNull';
9
+ const NULLABLE = 'nullable';
10
+
11
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
12
+ predicate(value) ? otherwise?.() : then(value);
13
+ const isNullish = (thing) => thing == null;
14
+ const isUndefined = (thing) => thing === void 0;
15
+ const ifNotNullish = getIfNotFunction(isNullish);
16
+ const ifNotUndefined = getIfNotFunction(isUndefined);
17
+ const size = (arrayOrString) => arrayOrString.length;
18
+
19
+ const arrayForEach = (array, cb) => array.forEach(cb);
20
+
21
+ const object = Object;
22
+ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
23
+ const objEntries = object.entries;
24
+ const isObject = (obj) =>
25
+ !isNullish(obj) &&
26
+ ifNotNullish(
27
+ getPrototypeOf(obj),
28
+ (objPrototype) =>
29
+ objPrototype == object.prototype ||
30
+ isNullish(getPrototypeOf(objPrototype)),
31
+
32
+ /* istanbul ignore next */
33
+ () => true,
34
+ );
35
+ const objIds = object.keys;
36
+ const objFreeze = object.freeze;
37
+ const objNew = (entries = []) => object.fromEntries(entries);
38
+ const objForEach = (obj, cb) =>
39
+ arrayForEach(objEntries(obj), ([id, value]) => cb(value, id));
40
+ const objSize = (obj) => size(objIds(obj));
41
+ const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
42
+
43
+ const createCustomSchematizer = (unwrapSchema, getProperties) => {
44
+ const toCellOrValueSchema = (schema) => {
45
+ const [unwrapped, defaultValue, allowNull] = unwrapSchema(schema);
46
+ const type = unwrapped?.type;
47
+ if (type !== STRING && type !== NUMBER && type !== BOOLEAN) {
48
+ return void 0;
49
+ }
50
+ const cellOrValueSchema = {[TYPE]: type};
51
+ ifNotUndefined(defaultValue, (defaultValue2) => {
52
+ cellOrValueSchema[DEFAULT] = defaultValue2;
53
+ });
54
+ if (allowNull) {
55
+ cellOrValueSchema[ALLOW_NULL] = true;
56
+ }
57
+ return cellOrValueSchema;
58
+ };
59
+ const toTablesSchema = (schemas) => {
60
+ const tablesSchema = objNew();
61
+ objForEach(schemas, (schema, tableId) => {
62
+ const tableSchema = objNew();
63
+ ifNotUndefined(getProperties(schema), (properties) =>
64
+ objForEach(properties, (cellSchema, cellId) =>
65
+ ifNotUndefined(toCellOrValueSchema(cellSchema), (cellSchema2) => {
66
+ tableSchema[cellId] = cellSchema2;
67
+ }),
68
+ ),
69
+ );
70
+ if (!objIsEmpty(tableSchema)) {
71
+ tablesSchema[tableId] = tableSchema;
72
+ }
73
+ });
74
+ return tablesSchema;
75
+ };
76
+ const toValuesSchema = (schemas) => {
77
+ const valuesSchema = objNew();
78
+ objForEach(schemas, (schema, valueId) =>
79
+ ifNotUndefined(toCellOrValueSchema(schema), (valueSchema) => {
80
+ valuesSchema[valueId] = valueSchema;
81
+ }),
82
+ );
83
+ return valuesSchema;
84
+ };
85
+ return objFreeze({
86
+ toTablesSchema,
87
+ toValuesSchema,
88
+ });
89
+ };
90
+
91
+ const unwrapSchema = (schema, defaultValue, allowNull) => [
92
+ {[TYPE]: schema?.type},
93
+ defaultValue ?? schema?.spec?.[DEFAULT],
94
+ allowNull || schema?.spec?.[NULLABLE] || false,
95
+ ];
96
+ const getProperties = (schema) => schema?.fields;
97
+ const createYupSchematizer = () =>
98
+ createCustomSchematizer(unwrapSchema, getProperties);
99
+
100
+ export {createYupSchematizer};