tinybase 7.0.0-beta.1 → 7.0.0-beta.3

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 (329) hide show
  1. package/@types/common/index.d.ts +1 -1
  2. package/@types/mergeable-store/index.d.ts +2 -1
  3. package/@types/mergeable-store/with-schemas/index.d.ts +5 -3
  4. package/@types/omni/index.d.ts +2 -0
  5. package/@types/omni/with-schemas/index.d.ts +2 -0
  6. package/@types/persisters/index.d.ts +4 -0
  7. package/@types/persisters/persister-automerge/index.d.ts +4 -6
  8. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +7 -8
  9. package/@types/persisters/persister-browser/index.d.ts +97 -6
  10. package/@types/persisters/persister-browser/with-schemas/index.d.ts +113 -6
  11. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +4 -0
  12. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +7 -2
  13. package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +6 -2
  14. package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +5 -0
  15. package/@types/persisters/persister-durable-object-storage/index.d.ts +1 -2
  16. package/@types/persisters/persister-durable-object-storage/with-schemas/index.d.ts +3 -2
  17. package/@types/persisters/persister-electric-sql/index.d.ts +4 -0
  18. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +7 -2
  19. package/@types/persisters/persister-expo-sqlite/index.d.ts +5 -2
  20. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +7 -2
  21. package/@types/persisters/persister-file/index.d.ts +1 -2
  22. package/@types/persisters/persister-file/with-schemas/index.d.ts +3 -2
  23. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +3 -2
  24. package/@types/persisters/persister-libsql/index.d.ts +4 -0
  25. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +7 -2
  26. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +3 -2
  27. package/@types/persisters/persister-pglite/index.d.ts +7 -3
  28. package/@types/persisters/persister-pglite/with-schemas/index.d.ts +9 -3
  29. package/@types/persisters/persister-postgres/index.d.ts +5 -2
  30. package/@types/persisters/persister-postgres/with-schemas/index.d.ts +7 -2
  31. package/@types/persisters/persister-powersync/index.d.ts +4 -0
  32. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +7 -2
  33. package/@types/persisters/persister-react-native-mmkv/index.d.ts +117 -0
  34. package/@types/persisters/persister-react-native-mmkv/with-schemas/index.d.ts +133 -0
  35. package/@types/persisters/persister-react-native-sqlite/index.d.ts +184 -0
  36. package/@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts +207 -0
  37. package/@types/persisters/persister-remote/with-schemas/index.d.ts +3 -2
  38. package/@types/persisters/persister-sqlite-bun/index.d.ts +5 -2
  39. package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +7 -2
  40. package/@types/persisters/persister-sqlite-wasm/index.d.ts +6 -2
  41. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +8 -2
  42. package/@types/persisters/persister-sqlite3/index.d.ts +5 -2
  43. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +7 -2
  44. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +3 -2
  45. package/@types/persisters/with-schemas/index.d.ts +4 -0
  46. package/@types/queries/index.d.ts +1 -1
  47. package/@types/queries/with-schemas/index.d.ts +4 -8
  48. package/@types/store/index.d.ts +34 -19
  49. package/@types/store/with-schemas/index.d.ts +28 -13
  50. package/@types/synchronizers/index.d.ts +1 -0
  51. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -2
  52. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +3 -2
  53. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +4 -2
  54. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +1 -0
  55. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +7 -7
  56. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +7 -7
  57. package/@types/synchronizers/synchronizer-ws-server-durable-object/index.d.ts +1 -0
  58. package/@types/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.d.ts +1 -0
  59. package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +1 -1
  60. package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +1 -1
  61. package/@types/synchronizers/with-schemas/index.d.ts +4 -2
  62. package/@types/ui-react/index.d.ts +6 -1
  63. package/@types/ui-react/with-schemas/index.d.ts +6 -1
  64. package/@types/ui-react-dom/index.d.ts +153 -20
  65. package/@types/ui-react-dom/with-schemas/index.d.ts +72 -20
  66. package/@types/ui-react-inspector/index.d.ts +8 -0
  67. package/@types/ui-react-inspector/with-schemas/index.d.ts +27 -1925
  68. package/agents.md +343 -0
  69. package/checkpoints/index.js +11 -6
  70. package/checkpoints/with-schemas/index.js +11 -6
  71. package/common/index.js +8 -4
  72. package/common/with-schemas/index.js +8 -4
  73. package/index.js +63 -31
  74. package/indexes/index.js +10 -5
  75. package/indexes/with-schemas/index.js +10 -5
  76. package/mergeable-store/index.js +54 -22
  77. package/mergeable-store/with-schemas/index.js +54 -22
  78. package/metrics/index.js +10 -5
  79. package/metrics/with-schemas/index.js +10 -5
  80. package/min/checkpoints/index.js +1 -1
  81. package/min/checkpoints/index.js.gz +0 -0
  82. package/min/checkpoints/with-schemas/index.js +1 -1
  83. package/min/checkpoints/with-schemas/index.js.gz +0 -0
  84. package/min/common/index.js +1 -1
  85. package/min/common/index.js.gz +0 -0
  86. package/min/common/with-schemas/index.js +1 -1
  87. package/min/common/with-schemas/index.js.gz +0 -0
  88. package/min/index.js +1 -1
  89. package/min/index.js.gz +0 -0
  90. package/min/indexes/index.js +1 -1
  91. package/min/indexes/index.js.gz +0 -0
  92. package/min/indexes/with-schemas/index.js +1 -1
  93. package/min/indexes/with-schemas/index.js.gz +0 -0
  94. package/min/mergeable-store/index.js +1 -1
  95. package/min/mergeable-store/index.js.gz +0 -0
  96. package/min/mergeable-store/with-schemas/index.js +1 -1
  97. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  98. package/min/metrics/index.js +1 -1
  99. package/min/metrics/index.js.gz +0 -0
  100. package/min/metrics/with-schemas/index.js +1 -1
  101. package/min/metrics/with-schemas/index.js.gz +0 -0
  102. package/min/omni/index.js +1 -1
  103. package/min/omni/index.js.gz +0 -0
  104. package/min/omni/with-schemas/index.js +1 -1
  105. package/min/omni/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/index.js +1 -1
  107. package/min/persisters/index.js.gz +0 -0
  108. package/min/persisters/persister-automerge/index.js +1 -1
  109. package/min/persisters/persister-automerge/index.js.gz +0 -0
  110. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  111. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  112. package/min/persisters/persister-browser/index.js +1 -1
  113. package/min/persisters/persister-browser/index.js.gz +0 -0
  114. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  115. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  116. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  117. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  118. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  119. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  120. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  121. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  122. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  123. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  124. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  125. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  126. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  127. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  128. package/min/persisters/persister-electric-sql/index.js +1 -1
  129. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  130. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  131. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  132. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  133. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  134. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  135. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  136. package/min/persisters/persister-file/index.js +1 -1
  137. package/min/persisters/persister-file/index.js.gz +0 -0
  138. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  139. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  140. package/min/persisters/persister-indexed-db/index.js +1 -1
  141. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  142. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  143. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  144. package/min/persisters/persister-libsql/index.js +1 -1
  145. package/min/persisters/persister-libsql/index.js.gz +0 -0
  146. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  147. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  148. package/min/persisters/persister-partykit-client/index.js +1 -1
  149. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  150. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  151. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  152. package/min/persisters/persister-partykit-server/index.js +1 -1
  153. package/min/persisters/persister-partykit-server/index.js.gz +0 -0
  154. package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
  155. package/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
  156. package/min/persisters/persister-pglite/index.js +1 -1
  157. package/min/persisters/persister-pglite/index.js.gz +0 -0
  158. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  159. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  160. package/min/persisters/persister-postgres/index.js +1 -1
  161. package/min/persisters/persister-postgres/index.js.gz +0 -0
  162. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  163. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  164. package/min/persisters/persister-powersync/index.js +1 -1
  165. package/min/persisters/persister-powersync/index.js.gz +0 -0
  166. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  167. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  168. package/min/persisters/persister-react-native-mmkv/index.js +1 -0
  169. package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
  170. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -0
  171. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
  172. package/min/persisters/persister-react-native-sqlite/index.js +1 -0
  173. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  174. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -0
  175. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  176. package/min/persisters/persister-remote/index.js +1 -1
  177. package/min/persisters/persister-remote/index.js.gz +0 -0
  178. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  179. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  180. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  181. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  182. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  183. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  184. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  185. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  186. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  187. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  188. package/min/persisters/persister-sqlite3/index.js +1 -1
  189. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  190. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  191. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  192. package/min/persisters/persister-yjs/index.js +1 -1
  193. package/min/persisters/persister-yjs/index.js.gz +0 -0
  194. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  195. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  196. package/min/persisters/with-schemas/index.js +1 -1
  197. package/min/persisters/with-schemas/index.js.gz +0 -0
  198. package/min/queries/index.js +1 -1
  199. package/min/queries/index.js.gz +0 -0
  200. package/min/queries/with-schemas/index.js +1 -1
  201. package/min/queries/with-schemas/index.js.gz +0 -0
  202. package/min/relationships/index.js +1 -1
  203. package/min/relationships/index.js.gz +0 -0
  204. package/min/relationships/with-schemas/index.js +1 -1
  205. package/min/relationships/with-schemas/index.js.gz +0 -0
  206. package/min/store/index.js +1 -1
  207. package/min/store/index.js.gz +0 -0
  208. package/min/store/with-schemas/index.js +1 -1
  209. package/min/store/with-schemas/index.js.gz +0 -0
  210. package/min/synchronizers/index.js +1 -1
  211. package/min/synchronizers/index.js.gz +0 -0
  212. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  213. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  214. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  215. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  216. package/min/synchronizers/synchronizer-local/index.js +1 -1
  217. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  218. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  219. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  220. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  221. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  222. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  223. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  224. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  225. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  226. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  227. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  228. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  229. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  230. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  231. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  232. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  233. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  234. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  235. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  236. package/min/synchronizers/with-schemas/index.js +1 -1
  237. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  238. package/min/ui-react/index.js +1 -1
  239. package/min/ui-react/index.js.gz +0 -0
  240. package/min/ui-react/with-schemas/index.js +1 -1
  241. package/min/ui-react/with-schemas/index.js.gz +0 -0
  242. package/min/ui-react-dom/index.js +1 -1
  243. package/min/ui-react-dom/index.js.gz +0 -0
  244. package/min/ui-react-dom/with-schemas/index.js +1 -1
  245. package/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  246. package/min/ui-react-inspector/index.js +1 -1
  247. package/min/ui-react-inspector/index.js.gz +0 -0
  248. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  249. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  250. package/min/with-schemas/index.js +1 -1
  251. package/min/with-schemas/index.js.gz +0 -0
  252. package/omni/index.js +2178 -1203
  253. package/omni/with-schemas/index.js +2178 -1203
  254. package/package.json +91 -11
  255. package/persisters/index.js +16 -10
  256. package/persisters/persister-automerge/index.js +15 -9
  257. package/persisters/persister-automerge/with-schemas/index.js +15 -9
  258. package/persisters/persister-browser/index.js +41 -9
  259. package/persisters/persister-browser/with-schemas/index.js +41 -9
  260. package/persisters/persister-cr-sqlite-wasm/index.js +16 -10
  261. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +16 -10
  262. package/persisters/persister-durable-object-sql-storage/index.js +16 -10
  263. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +16 -10
  264. package/persisters/persister-durable-object-storage/index.js +14 -8
  265. package/persisters/persister-durable-object-storage/with-schemas/index.js +14 -8
  266. package/persisters/persister-electric-sql/index.js +16 -10
  267. package/persisters/persister-electric-sql/with-schemas/index.js +16 -10
  268. package/persisters/persister-expo-sqlite/index.js +16 -10
  269. package/persisters/persister-expo-sqlite/with-schemas/index.js +16 -10
  270. package/persisters/persister-file/index.js +14 -8
  271. package/persisters/persister-file/with-schemas/index.js +14 -8
  272. package/persisters/persister-indexed-db/index.js +14 -8
  273. package/persisters/persister-indexed-db/with-schemas/index.js +14 -8
  274. package/persisters/persister-libsql/index.js +16 -10
  275. package/persisters/persister-libsql/with-schemas/index.js +16 -10
  276. package/persisters/persister-partykit-client/index.js +14 -8
  277. package/persisters/persister-partykit-client/with-schemas/index.js +14 -8
  278. package/persisters/persister-partykit-server/index.js +7 -3
  279. package/persisters/persister-partykit-server/with-schemas/index.js +7 -3
  280. package/persisters/persister-pglite/index.js +15 -9
  281. package/persisters/persister-pglite/with-schemas/index.js +15 -9
  282. package/persisters/persister-postgres/index.js +15 -9
  283. package/persisters/persister-postgres/with-schemas/index.js +15 -9
  284. package/persisters/persister-powersync/index.js +16 -10
  285. package/persisters/persister-powersync/with-schemas/index.js +16 -10
  286. package/persisters/persister-react-native-mmkv/index.js +465 -0
  287. package/persisters/persister-react-native-mmkv/with-schemas/index.js +465 -0
  288. package/persisters/persister-react-native-sqlite/index.js +1195 -0
  289. package/persisters/persister-react-native-sqlite/with-schemas/index.js +1195 -0
  290. package/persisters/persister-remote/index.js +16 -10
  291. package/persisters/persister-remote/with-schemas/index.js +16 -10
  292. package/persisters/persister-sqlite-bun/index.js +16 -10
  293. package/persisters/persister-sqlite-bun/with-schemas/index.js +16 -10
  294. package/persisters/persister-sqlite-wasm/index.js +16 -10
  295. package/persisters/persister-sqlite-wasm/with-schemas/index.js +16 -10
  296. package/persisters/persister-sqlite3/index.js +16 -10
  297. package/persisters/persister-sqlite3/with-schemas/index.js +16 -10
  298. package/persisters/persister-yjs/index.js +20 -12
  299. package/persisters/persister-yjs/with-schemas/index.js +20 -12
  300. package/persisters/with-schemas/index.js +16 -10
  301. package/queries/index.js +20 -12
  302. package/queries/with-schemas/index.js +20 -12
  303. package/readme.md +13 -13
  304. package/relationships/index.js +10 -5
  305. package/relationships/with-schemas/index.js +10 -5
  306. package/releases.md +179 -41
  307. package/store/index.js +50 -18
  308. package/store/with-schemas/index.js +50 -18
  309. package/synchronizers/index.js +16 -10
  310. package/synchronizers/synchronizer-broadcast-channel/index.js +17 -11
  311. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +17 -11
  312. package/synchronizers/synchronizer-local/index.js +17 -11
  313. package/synchronizers/synchronizer-local/with-schemas/index.js +17 -11
  314. package/synchronizers/synchronizer-ws-client/index.js +16 -10
  315. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +16 -10
  316. package/synchronizers/synchronizer-ws-server/index.js +16 -10
  317. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +16 -10
  318. package/synchronizers/synchronizer-ws-server-durable-object/index.js +16 -10
  319. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +16 -10
  320. package/synchronizers/synchronizer-ws-server-simple/index.js +8 -4
  321. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +8 -4
  322. package/synchronizers/with-schemas/index.js +16 -10
  323. package/ui-react/index.js +408 -374
  324. package/ui-react/with-schemas/index.js +408 -374
  325. package/ui-react-dom/index.js +883 -437
  326. package/ui-react-dom/with-schemas/index.js +883 -437
  327. package/ui-react-inspector/index.js +1761 -556
  328. package/ui-react-inspector/with-schemas/index.js +1761 -556
  329. package/with-schemas/index.js +63 -31
package/store/index.js CHANGED
@@ -6,6 +6,7 @@ const NUMBER = getTypeOf(0);
6
6
  const FUNCTION = getTypeOf(getTypeOf);
7
7
  const TYPE = 'type';
8
8
  const DEFAULT = 'default';
9
+ const ALLOW_NULL = 'allowNull';
9
10
  const LISTENER = 'Listener';
10
11
  const ADD = 'add';
11
12
  const HAS = 'Has';
@@ -23,11 +24,17 @@ const VALUES = VALUE + 's';
23
24
  const VALUE_IDS = VALUE + IDS;
24
25
  const id = (key) => EMPTY_STRING + key;
25
26
 
27
+ const getIfNotFunction =
28
+ (predicate = isNullish) =>
29
+ (value, then, otherwise) =>
30
+ predicate(value) ? otherwise?.() : then(value);
26
31
  const isFiniteNumber = isFinite;
27
32
  const isInstanceOf = (thing, cls) => thing instanceof cls;
28
- const isUndefined = (thing) => thing == void 0;
29
- const ifNotUndefined = (value, then, otherwise) =>
30
- isUndefined(value) ? otherwise?.() : then(value);
33
+ const isNullish = (thing) => thing == null;
34
+ const isUndefined = (thing) => thing === void 0;
35
+ const isNull = (thing) => thing === null;
36
+ const ifNotNullish = getIfNotFunction(isNullish);
37
+ const ifNotUndefined = getIfNotFunction(isUndefined);
31
38
  const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
32
39
  const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
33
40
  const isArray = (thing) => Array.isArray(thing);
@@ -56,6 +63,9 @@ const arrayPush = (array, ...values) => array.push(...values);
56
63
  const arrayShift = (array) => array.shift();
57
64
 
58
65
  const getCellOrValueType = (cellOrValue) => {
66
+ if (isNull(cellOrValue)) {
67
+ return 'null';
68
+ }
59
69
  const type = getTypeOf(cellOrValue);
60
70
  return isTypeStringOrBoolean(type) ||
61
71
  (type == NUMBER && isFiniteNumber(cellOrValue))
@@ -87,12 +97,12 @@ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
87
97
  const objFrozen = object.isFrozen;
88
98
  const objEntries = object.entries;
89
99
  const isObject = (obj) =>
90
- !isUndefined(obj) &&
91
- ifNotUndefined(
100
+ !isNullish(obj) &&
101
+ ifNotNullish(
92
102
  getPrototypeOf(obj),
93
103
  (objPrototype) =>
94
104
  objPrototype == object.prototype ||
95
- isUndefined(getPrototypeOf(objPrototype)),
105
+ isNullish(getPrototypeOf(objPrototype)),
96
106
 
97
107
  /* istanbul ignore next */
98
108
  () => true,
@@ -115,7 +125,7 @@ const objSize = (obj) => size(objIds(obj));
115
125
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
116
126
  const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
117
127
  if (
118
- isUndefined(obj) ||
128
+ isNullish(obj) ||
119
129
  !isObject(obj) ||
120
130
  (!emptyIsValid && objIsEmpty(obj)) ||
121
131
  objFrozen(obj)
@@ -139,7 +149,7 @@ const mapForEach = (map, cb) =>
139
149
  const mapMap = (coll, cb) =>
140
150
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
141
151
  const mapSet = (map, key, value) =>
142
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
152
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
143
153
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
144
154
  if (!collHas(map, key)) {
145
155
  mapSet(map, key, getDefaultValue());
@@ -298,7 +308,7 @@ const getListenerFunctions = (getThing) => {
298
308
  const index = size(ids);
299
309
  if (index == size(path)) {
300
310
  listener(thing, ...ids, ...extraArgsGetter(ids));
301
- } else if (isUndefined(path[index])) {
311
+ } else if (isNull(path[index])) {
302
312
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
303
313
  callWithIds(...ids, id2),
304
314
  );
@@ -383,14 +393,22 @@ const createStore = () => {
383
393
  const validateValuesSchema = (valuesSchema) =>
384
394
  objValidate(valuesSchema, validateCellOrValueSchema);
385
395
  const validateCellOrValueSchema = (schema) => {
386
- if (!objValidate(schema, (_child, id2) => arrayHas([TYPE, DEFAULT], id2))) {
396
+ if (
397
+ !objValidate(schema, (_child, id2) =>
398
+ arrayHas([TYPE, DEFAULT, ALLOW_NULL], id2),
399
+ )
400
+ ) {
387
401
  return false;
388
402
  }
389
403
  const type = schema[TYPE];
390
404
  if (!isTypeStringOrBoolean(type) && type != NUMBER) {
391
405
  return false;
392
406
  }
393
- if (getCellOrValueType(schema[DEFAULT]) != type) {
407
+ const defaultValue = schema[DEFAULT];
408
+ if (isNull(defaultValue) && !schema[ALLOW_NULL]) {
409
+ return false;
410
+ }
411
+ if (!isNull(defaultValue) && getCellOrValueType(defaultValue) != type) {
394
412
  objDel(schema, DEFAULT);
395
413
  }
396
414
  return true;
@@ -427,9 +445,19 @@ const createStore = () => {
427
445
  ? ifNotUndefined(
428
446
  mapGet(mapGet(tablesSchemaMap, tableId), cellId),
429
447
  (cellSchema) =>
430
- getCellOrValueType(cell) != cellSchema[TYPE]
431
- ? cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
432
- : cell,
448
+ isNull(cell)
449
+ ? cellSchema[ALLOW_NULL]
450
+ ? cell
451
+ : cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
452
+ : getCellOrValueType(cell) == cellSchema[TYPE]
453
+ ? cell
454
+ : cellInvalid(
455
+ tableId,
456
+ rowId,
457
+ cellId,
458
+ cell,
459
+ cellSchema[DEFAULT],
460
+ ),
433
461
  () => cellInvalid(tableId, rowId, cellId, cell),
434
462
  )
435
463
  : isUndefined(getCellOrValueType(cell))
@@ -454,9 +482,13 @@ const createStore = () => {
454
482
  ? ifNotUndefined(
455
483
  mapGet(valuesSchemaMap, valueId),
456
484
  (valueSchema) =>
457
- getCellOrValueType(value) != valueSchema[TYPE]
458
- ? valueInvalid(valueId, value, valueSchema[DEFAULT])
459
- : value,
485
+ isNull(value)
486
+ ? valueSchema[ALLOW_NULL]
487
+ ? value
488
+ : valueInvalid(valueId, value, valueSchema[DEFAULT])
489
+ : getCellOrValueType(value) == valueSchema[TYPE]
490
+ ? value
491
+ : valueInvalid(valueId, value, valueSchema[DEFAULT]),
460
492
  () => valueInvalid(valueId, value),
461
493
  )
462
494
  : isUndefined(getCellOrValueType(value))
@@ -699,7 +731,7 @@ const createStore = () => {
699
731
  mapSet(
700
732
  cellIds,
701
733
  cellId,
702
- count != -addedOrRemoved ? count + addedOrRemoved : null,
734
+ count != -addedOrRemoved ? count + addedOrRemoved : void 0,
703
735
  );
704
736
  idsChanged(
705
737
  mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
@@ -6,6 +6,7 @@ const NUMBER = getTypeOf(0);
6
6
  const FUNCTION = getTypeOf(getTypeOf);
7
7
  const TYPE = 'type';
8
8
  const DEFAULT = 'default';
9
+ const ALLOW_NULL = 'allowNull';
9
10
  const LISTENER = 'Listener';
10
11
  const ADD = 'add';
11
12
  const HAS = 'Has';
@@ -23,11 +24,17 @@ const VALUES = VALUE + 's';
23
24
  const VALUE_IDS = VALUE + IDS;
24
25
  const id = (key) => EMPTY_STRING + key;
25
26
 
27
+ const getIfNotFunction =
28
+ (predicate = isNullish) =>
29
+ (value, then, otherwise) =>
30
+ predicate(value) ? otherwise?.() : then(value);
26
31
  const isFiniteNumber = isFinite;
27
32
  const isInstanceOf = (thing, cls) => thing instanceof cls;
28
- const isUndefined = (thing) => thing == void 0;
29
- const ifNotUndefined = (value, then, otherwise) =>
30
- isUndefined(value) ? otherwise?.() : then(value);
33
+ const isNullish = (thing) => thing == null;
34
+ const isUndefined = (thing) => thing === void 0;
35
+ const isNull = (thing) => thing === null;
36
+ const ifNotNullish = getIfNotFunction(isNullish);
37
+ const ifNotUndefined = getIfNotFunction(isUndefined);
31
38
  const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
32
39
  const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
33
40
  const isArray = (thing) => Array.isArray(thing);
@@ -56,6 +63,9 @@ const arrayPush = (array, ...values) => array.push(...values);
56
63
  const arrayShift = (array) => array.shift();
57
64
 
58
65
  const getCellOrValueType = (cellOrValue) => {
66
+ if (isNull(cellOrValue)) {
67
+ return 'null';
68
+ }
59
69
  const type = getTypeOf(cellOrValue);
60
70
  return isTypeStringOrBoolean(type) ||
61
71
  (type == NUMBER && isFiniteNumber(cellOrValue))
@@ -87,12 +97,12 @@ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
87
97
  const objFrozen = object.isFrozen;
88
98
  const objEntries = object.entries;
89
99
  const isObject = (obj) =>
90
- !isUndefined(obj) &&
91
- ifNotUndefined(
100
+ !isNullish(obj) &&
101
+ ifNotNullish(
92
102
  getPrototypeOf(obj),
93
103
  (objPrototype) =>
94
104
  objPrototype == object.prototype ||
95
- isUndefined(getPrototypeOf(objPrototype)),
105
+ isNullish(getPrototypeOf(objPrototype)),
96
106
 
97
107
  /* istanbul ignore next */
98
108
  () => true,
@@ -115,7 +125,7 @@ const objSize = (obj) => size(objIds(obj));
115
125
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
116
126
  const objValidate = (obj, validateChild, onInvalidObj, emptyIsValid = 0) => {
117
127
  if (
118
- isUndefined(obj) ||
128
+ isNullish(obj) ||
119
129
  !isObject(obj) ||
120
130
  (!emptyIsValid && objIsEmpty(obj)) ||
121
131
  objFrozen(obj)
@@ -139,7 +149,7 @@ const mapForEach = (map, cb) =>
139
149
  const mapMap = (coll, cb) =>
140
150
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
141
151
  const mapSet = (map, key, value) =>
142
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
152
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
143
153
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
144
154
  if (!collHas(map, key)) {
145
155
  mapSet(map, key, getDefaultValue());
@@ -298,7 +308,7 @@ const getListenerFunctions = (getThing) => {
298
308
  const index = size(ids);
299
309
  if (index == size(path)) {
300
310
  listener(thing, ...ids, ...extraArgsGetter(ids));
301
- } else if (isUndefined(path[index])) {
311
+ } else if (isNull(path[index])) {
302
312
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
303
313
  callWithIds(...ids, id2),
304
314
  );
@@ -383,14 +393,22 @@ const createStore = () => {
383
393
  const validateValuesSchema = (valuesSchema) =>
384
394
  objValidate(valuesSchema, validateCellOrValueSchema);
385
395
  const validateCellOrValueSchema = (schema) => {
386
- if (!objValidate(schema, (_child, id2) => arrayHas([TYPE, DEFAULT], id2))) {
396
+ if (
397
+ !objValidate(schema, (_child, id2) =>
398
+ arrayHas([TYPE, DEFAULT, ALLOW_NULL], id2),
399
+ )
400
+ ) {
387
401
  return false;
388
402
  }
389
403
  const type = schema[TYPE];
390
404
  if (!isTypeStringOrBoolean(type) && type != NUMBER) {
391
405
  return false;
392
406
  }
393
- if (getCellOrValueType(schema[DEFAULT]) != type) {
407
+ const defaultValue = schema[DEFAULT];
408
+ if (isNull(defaultValue) && !schema[ALLOW_NULL]) {
409
+ return false;
410
+ }
411
+ if (!isNull(defaultValue) && getCellOrValueType(defaultValue) != type) {
394
412
  objDel(schema, DEFAULT);
395
413
  }
396
414
  return true;
@@ -427,9 +445,19 @@ const createStore = () => {
427
445
  ? ifNotUndefined(
428
446
  mapGet(mapGet(tablesSchemaMap, tableId), cellId),
429
447
  (cellSchema) =>
430
- getCellOrValueType(cell) != cellSchema[TYPE]
431
- ? cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
432
- : cell,
448
+ isNull(cell)
449
+ ? cellSchema[ALLOW_NULL]
450
+ ? cell
451
+ : cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
452
+ : getCellOrValueType(cell) == cellSchema[TYPE]
453
+ ? cell
454
+ : cellInvalid(
455
+ tableId,
456
+ rowId,
457
+ cellId,
458
+ cell,
459
+ cellSchema[DEFAULT],
460
+ ),
433
461
  () => cellInvalid(tableId, rowId, cellId, cell),
434
462
  )
435
463
  : isUndefined(getCellOrValueType(cell))
@@ -454,9 +482,13 @@ const createStore = () => {
454
482
  ? ifNotUndefined(
455
483
  mapGet(valuesSchemaMap, valueId),
456
484
  (valueSchema) =>
457
- getCellOrValueType(value) != valueSchema[TYPE]
458
- ? valueInvalid(valueId, value, valueSchema[DEFAULT])
459
- : value,
485
+ isNull(value)
486
+ ? valueSchema[ALLOW_NULL]
487
+ ? value
488
+ : valueInvalid(valueId, value, valueSchema[DEFAULT])
489
+ : getCellOrValueType(value) == valueSchema[TYPE]
490
+ ? value
491
+ : valueInvalid(valueId, value, valueSchema[DEFAULT]),
460
492
  () => valueInvalid(valueId, value),
461
493
  )
462
494
  : isUndefined(getCellOrValueType(value))
@@ -699,7 +731,7 @@ const createStore = () => {
699
731
  mapSet(
700
732
  cellIds,
701
733
  cellId,
702
- count != -addedOrRemoved ? count + addedOrRemoved : null,
734
+ count != -addedOrRemoved ? count + addedOrRemoved : void 0,
703
735
  );
704
736
  idsChanged(
705
737
  mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
@@ -4,15 +4,21 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
4
4
  str.split(separator, limit);
5
5
 
6
6
  const promise = Promise;
7
+ const getIfNotFunction =
8
+ (predicate = isNullish) =>
9
+ (value, then, otherwise) =>
10
+ predicate(value) ? otherwise?.() : then(value);
7
11
  const GLOBAL = globalThis;
8
12
  const THOUSAND = 1e3;
9
13
  const startTimeout = (callback, sec = 0) =>
10
14
  setTimeout(callback, sec * THOUSAND);
11
15
  const math = Math;
12
16
  const mathFloor = math.floor;
13
- const isUndefined = (thing) => thing == void 0;
14
- const ifNotUndefined = (value, then, otherwise) =>
15
- isUndefined(value) ? otherwise?.() : then(value);
17
+ const isNullish = (thing) => thing == null;
18
+ const isUndefined = (thing) => thing === void 0;
19
+ const isNull = (thing) => thing === null;
20
+ const ifNotNullish = getIfNotFunction(isNullish);
21
+ const ifNotUndefined = getIfNotFunction(isUndefined);
16
22
  const isArray = (thing) => Array.isArray(thing);
17
23
  const size = (arrayOrString) => arrayOrString.length;
18
24
  const test = (regex, subject) => regex.test(subject);
@@ -46,12 +52,12 @@ const object = Object;
46
52
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
47
53
  const objEntries = object.entries;
48
54
  const isObject = (obj) =>
49
- !isUndefined(obj) &&
50
- ifNotUndefined(
55
+ !isNullish(obj) &&
56
+ ifNotNullish(
51
57
  getPrototypeOf(obj),
52
58
  (objPrototype) =>
53
59
  objPrototype == object.prototype ||
54
- isUndefined(getPrototypeOf(objPrototype)),
60
+ isNullish(getPrototypeOf(objPrototype)),
55
61
 
56
62
  /* istanbul ignore next */
57
63
  () => true,
@@ -74,7 +80,7 @@ const objEnsure = (obj, id, getDefaultValue) => {
74
80
  const mapNew = (entries) => new Map(entries);
75
81
  const mapGet = (map, key) => map?.get(key);
76
82
  const mapSet = (map, key, value) =>
77
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
83
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
78
84
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
79
85
  if (!collHas(map, key)) {
80
86
  mapSet(map, key, getDefaultValue());
@@ -118,7 +124,7 @@ const getUniqueId = (length = 16) =>
118
124
  arrayReduce(
119
125
  getRandomValues(new Uint8Array(length)),
120
126
  (uniqueId, number) => uniqueId + encode(number),
121
- '',
127
+ EMPTY_STRING,
122
128
  );
123
129
 
124
130
  const stampNew = (value, hlc) => (hlc ? [value, hlc] : [value]);
@@ -207,7 +213,7 @@ const getListenerFunctions = (getThing) => {
207
213
  const index = size(ids);
208
214
  if (index == size(path)) {
209
215
  listener(thing, ...ids, ...extraArgsGetter(ids));
210
- } else if (isUndefined(path[index])) {
216
+ } else if (isNull(path[index])) {
211
217
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
212
218
  callWithIds(...ids, id2),
213
219
  );
@@ -644,7 +650,7 @@ const createCustomSynchronizer = (
644
650
  ifNotUndefined(
645
651
  mapGet(pendingRequests, transactionOrRequestId),
646
652
  ([toClientId, handleResponse]) =>
647
- isUndefined(toClientId) || toClientId == fromClientId
653
+ isNull(toClientId) || toClientId == fromClientId
648
654
  ? handleResponse(body, fromClientId)
649
655
  : /* istanbul ignore next */
650
656
  0,
@@ -4,15 +4,21 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
4
4
  str.split(separator, limit);
5
5
 
6
6
  const promise = Promise;
7
+ const getIfNotFunction =
8
+ (predicate = isNullish) =>
9
+ (value, then, otherwise) =>
10
+ predicate(value) ? otherwise?.() : then(value);
7
11
  const GLOBAL = globalThis;
8
12
  const THOUSAND = 1e3;
9
13
  const startTimeout = (callback, sec = 0) =>
10
14
  setTimeout(callback, sec * THOUSAND);
11
15
  const math = Math;
12
16
  const mathFloor = math.floor;
13
- const isUndefined = (thing) => thing == void 0;
14
- const ifNotUndefined = (value, then, otherwise) =>
15
- isUndefined(value) ? otherwise?.() : then(value);
17
+ const isNullish = (thing) => thing == null;
18
+ const isUndefined = (thing) => thing === void 0;
19
+ const isNull = (thing) => thing === null;
20
+ const ifNotNullish = getIfNotFunction(isNullish);
21
+ const ifNotUndefined = getIfNotFunction(isUndefined);
16
22
  const isArray = (thing) => Array.isArray(thing);
17
23
  const size = (arrayOrString) => arrayOrString.length;
18
24
  const test = (regex, subject) => regex.test(subject);
@@ -46,12 +52,12 @@ const object = Object;
46
52
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
47
53
  const objEntries = object.entries;
48
54
  const isObject = (obj) =>
49
- !isUndefined(obj) &&
50
- ifNotUndefined(
55
+ !isNullish(obj) &&
56
+ ifNotNullish(
51
57
  getPrototypeOf(obj),
52
58
  (objPrototype) =>
53
59
  objPrototype == object.prototype ||
54
- isUndefined(getPrototypeOf(objPrototype)),
60
+ isNullish(getPrototypeOf(objPrototype)),
55
61
 
56
62
  /* istanbul ignore next */
57
63
  () => true,
@@ -74,7 +80,7 @@ const objEnsure = (obj, id, getDefaultValue) => {
74
80
  const mapNew = (entries) => new Map(entries);
75
81
  const mapGet = (map, key) => map?.get(key);
76
82
  const mapSet = (map, key, value) =>
77
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
83
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
78
84
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
79
85
  if (!collHas(map, key)) {
80
86
  mapSet(map, key, getDefaultValue());
@@ -118,7 +124,7 @@ const getUniqueId = (length = 16) =>
118
124
  arrayReduce(
119
125
  getRandomValues(new Uint8Array(length)),
120
126
  (uniqueId, number) => uniqueId + encode(number),
121
- '',
127
+ EMPTY_STRING,
122
128
  );
123
129
 
124
130
  const stampNew = (value, hlc) => (hlc ? [value, hlc] : [value]);
@@ -207,7 +213,7 @@ const getListenerFunctions = (getThing) => {
207
213
  const index = size(ids);
208
214
  if (index == size(path)) {
209
215
  listener(thing, ...ids, ...extraArgsGetter(ids));
210
- } else if (isUndefined(path[index])) {
216
+ } else if (isNull(path[index])) {
211
217
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
212
218
  callWithIds(...ids, id2),
213
219
  );
@@ -634,7 +640,7 @@ const createCustomSynchronizer = (
634
640
  ifNotUndefined(
635
641
  mapGet(pendingRequests, transactionOrRequestId),
636
642
  ([toClientId, handleResponse]) =>
637
- isUndefined(toClientId) || toClientId == fromClientId
643
+ isNull(toClientId) || toClientId == fromClientId
638
644
  ? handleResponse(body, fromClientId)
639
645
  : /* istanbul ignore next */
640
646
  0,
@@ -694,7 +700,7 @@ const createBroadcastChannelSynchronizer = (
694
700
  channel.onmessage = ({
695
701
  data: [fromClientId, toClientId, requestId, message, body],
696
702
  }) =>
697
- isUndefined(toClientId) || toClientId == clientId
703
+ isNull(toClientId) || toClientId == clientId
698
704
  ? receive(fromClientId, requestId, message, body)
699
705
  : 0;
700
706
  };
@@ -4,15 +4,21 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
4
4
  str.split(separator, limit);
5
5
 
6
6
  const promise = Promise;
7
+ const getIfNotFunction =
8
+ (predicate = isNullish) =>
9
+ (value, then, otherwise) =>
10
+ predicate(value) ? otherwise?.() : then(value);
7
11
  const GLOBAL = globalThis;
8
12
  const THOUSAND = 1e3;
9
13
  const startTimeout = (callback, sec = 0) =>
10
14
  setTimeout(callback, sec * THOUSAND);
11
15
  const math = Math;
12
16
  const mathFloor = math.floor;
13
- const isUndefined = (thing) => thing == void 0;
14
- const ifNotUndefined = (value, then, otherwise) =>
15
- isUndefined(value) ? otherwise?.() : then(value);
17
+ const isNullish = (thing) => thing == null;
18
+ const isUndefined = (thing) => thing === void 0;
19
+ const isNull = (thing) => thing === null;
20
+ const ifNotNullish = getIfNotFunction(isNullish);
21
+ const ifNotUndefined = getIfNotFunction(isUndefined);
16
22
  const isArray = (thing) => Array.isArray(thing);
17
23
  const size = (arrayOrString) => arrayOrString.length;
18
24
  const test = (regex, subject) => regex.test(subject);
@@ -46,12 +52,12 @@ const object = Object;
46
52
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
47
53
  const objEntries = object.entries;
48
54
  const isObject = (obj) =>
49
- !isUndefined(obj) &&
50
- ifNotUndefined(
55
+ !isNullish(obj) &&
56
+ ifNotNullish(
51
57
  getPrototypeOf(obj),
52
58
  (objPrototype) =>
53
59
  objPrototype == object.prototype ||
54
- isUndefined(getPrototypeOf(objPrototype)),
60
+ isNullish(getPrototypeOf(objPrototype)),
55
61
 
56
62
  /* istanbul ignore next */
57
63
  () => true,
@@ -74,7 +80,7 @@ const objEnsure = (obj, id, getDefaultValue) => {
74
80
  const mapNew = (entries) => new Map(entries);
75
81
  const mapGet = (map, key) => map?.get(key);
76
82
  const mapSet = (map, key, value) =>
77
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
83
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
78
84
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
79
85
  if (!collHas(map, key)) {
80
86
  mapSet(map, key, getDefaultValue());
@@ -118,7 +124,7 @@ const getUniqueId = (length = 16) =>
118
124
  arrayReduce(
119
125
  getRandomValues(new Uint8Array(length)),
120
126
  (uniqueId, number) => uniqueId + encode(number),
121
- '',
127
+ EMPTY_STRING,
122
128
  );
123
129
 
124
130
  const stampNew = (value, hlc) => (hlc ? [value, hlc] : [value]);
@@ -207,7 +213,7 @@ const getListenerFunctions = (getThing) => {
207
213
  const index = size(ids);
208
214
  if (index == size(path)) {
209
215
  listener(thing, ...ids, ...extraArgsGetter(ids));
210
- } else if (isUndefined(path[index])) {
216
+ } else if (isNull(path[index])) {
211
217
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
212
218
  callWithIds(...ids, id2),
213
219
  );
@@ -634,7 +640,7 @@ const createCustomSynchronizer = (
634
640
  ifNotUndefined(
635
641
  mapGet(pendingRequests, transactionOrRequestId),
636
642
  ([toClientId, handleResponse]) =>
637
- isUndefined(toClientId) || toClientId == fromClientId
643
+ isNull(toClientId) || toClientId == fromClientId
638
644
  ? handleResponse(body, fromClientId)
639
645
  : /* istanbul ignore next */
640
646
  0,
@@ -694,7 +700,7 @@ const createBroadcastChannelSynchronizer = (
694
700
  channel.onmessage = ({
695
701
  data: [fromClientId, toClientId, requestId, message, body],
696
702
  }) =>
697
- isUndefined(toClientId) || toClientId == clientId
703
+ isNull(toClientId) || toClientId == clientId
698
704
  ? receive(fromClientId, requestId, message, body)
699
705
  : 0;
700
706
  };
@@ -4,15 +4,21 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
4
4
  str.split(separator, limit);
5
5
 
6
6
  const promise = Promise;
7
+ const getIfNotFunction =
8
+ (predicate = isNullish) =>
9
+ (value, then, otherwise) =>
10
+ predicate(value) ? otherwise?.() : then(value);
7
11
  const GLOBAL = globalThis;
8
12
  const THOUSAND = 1e3;
9
13
  const startTimeout = (callback, sec = 0) =>
10
14
  setTimeout(callback, sec * THOUSAND);
11
15
  const math = Math;
12
16
  const mathFloor = math.floor;
13
- const isUndefined = (thing) => thing == void 0;
14
- const ifNotUndefined = (value, then, otherwise) =>
15
- isUndefined(value) ? otherwise?.() : then(value);
17
+ const isNullish = (thing) => thing == null;
18
+ const isUndefined = (thing) => thing === void 0;
19
+ const isNull = (thing) => thing === null;
20
+ const ifNotNullish = getIfNotFunction(isNullish);
21
+ const ifNotUndefined = getIfNotFunction(isUndefined);
16
22
  const isArray = (thing) => Array.isArray(thing);
17
23
  const size = (arrayOrString) => arrayOrString.length;
18
24
  const test = (regex, subject) => regex.test(subject);
@@ -46,12 +52,12 @@ const object = Object;
46
52
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
47
53
  const objEntries = object.entries;
48
54
  const isObject = (obj) =>
49
- !isUndefined(obj) &&
50
- ifNotUndefined(
55
+ !isNullish(obj) &&
56
+ ifNotNullish(
51
57
  getPrototypeOf(obj),
52
58
  (objPrototype) =>
53
59
  objPrototype == object.prototype ||
54
- isUndefined(getPrototypeOf(objPrototype)),
60
+ isNullish(getPrototypeOf(objPrototype)),
55
61
 
56
62
  /* istanbul ignore next */
57
63
  () => true,
@@ -76,7 +82,7 @@ const mapGet = (map, key) => map?.get(key);
76
82
  const mapForEach = (map, cb) =>
77
83
  collForEach(map, (value, key) => cb(key, value));
78
84
  const mapSet = (map, key, value) =>
79
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
85
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
80
86
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
81
87
  if (!collHas(map, key)) {
82
88
  mapSet(map, key, getDefaultValue());
@@ -120,7 +126,7 @@ const getUniqueId = (length = 16) =>
120
126
  arrayReduce(
121
127
  getRandomValues(new Uint8Array(length)),
122
128
  (uniqueId, number) => uniqueId + encode(number),
123
- '',
129
+ EMPTY_STRING,
124
130
  );
125
131
 
126
132
  const stampNew = (value, hlc) => (hlc ? [value, hlc] : [value]);
@@ -209,7 +215,7 @@ const getListenerFunctions = (getThing) => {
209
215
  const index = size(ids);
210
216
  if (index == size(path)) {
211
217
  listener(thing, ...ids, ...extraArgsGetter(ids));
212
- } else if (isUndefined(path[index])) {
218
+ } else if (isNull(path[index])) {
213
219
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
214
220
  callWithIds(...ids, id2),
215
221
  );
@@ -636,7 +642,7 @@ const createCustomSynchronizer = (
636
642
  ifNotUndefined(
637
643
  mapGet(pendingRequests, transactionOrRequestId),
638
644
  ([toClientId, handleResponse]) =>
639
- isUndefined(toClientId) || toClientId == fromClientId
645
+ isNull(toClientId) || toClientId == fromClientId
640
646
  ? handleResponse(body, fromClientId)
641
647
  : /* istanbul ignore next */
642
648
  0,
@@ -686,7 +692,7 @@ const createLocalSynchronizer = (store, onSend, onReceive, onIgnoredError) => {
686
692
  const clientId = getUniqueId();
687
693
  const send = (toClientId, requestId, message, body) =>
688
694
  startTimeout(() =>
689
- isUndefined(toClientId)
695
+ isNull(toClientId)
690
696
  ? mapForEach(clients, (otherClientId, receive) =>
691
697
  otherClientId != clientId
692
698
  ? receive(clientId, requestId, message, body)