tinybase 7.0.0-beta.2 → 7.0.0

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 (292) hide show
  1. package/@types/common/index.d.ts +1 -1
  2. package/@types/mergeable-store/index.d.ts +1 -1
  3. package/@types/mergeable-store/with-schemas/index.d.ts +1 -1
  4. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +4 -0
  5. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +4 -0
  6. package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +4 -0
  7. package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +4 -0
  8. package/@types/persisters/persister-electric-sql/index.d.ts +4 -0
  9. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +4 -0
  10. package/@types/persisters/persister-expo-sqlite/index.d.ts +4 -0
  11. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +4 -0
  12. package/@types/persisters/persister-libsql/index.d.ts +4 -0
  13. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +4 -0
  14. package/@types/persisters/persister-pglite/index.d.ts +5 -1
  15. package/@types/persisters/persister-pglite/with-schemas/index.d.ts +5 -1
  16. package/@types/persisters/persister-postgres/index.d.ts +4 -0
  17. package/@types/persisters/persister-postgres/with-schemas/index.d.ts +4 -0
  18. package/@types/persisters/persister-powersync/index.d.ts +4 -0
  19. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +4 -0
  20. package/@types/persisters/persister-react-native-sqlite/index.d.ts +4 -0
  21. package/@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts +4 -0
  22. package/@types/persisters/persister-sqlite-bun/index.d.ts +4 -0
  23. package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +4 -0
  24. package/@types/persisters/persister-sqlite-wasm/index.d.ts +4 -0
  25. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +4 -0
  26. package/@types/persisters/persister-sqlite3/index.d.ts +4 -0
  27. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +4 -0
  28. package/@types/queries/index.d.ts +1 -1
  29. package/@types/store/index.d.ts +21 -19
  30. package/@types/store/with-schemas/index.d.ts +15 -13
  31. package/agents.md +62 -0
  32. package/checkpoints/index.js +8 -6
  33. package/checkpoints/with-schemas/index.js +8 -6
  34. package/common/index.js +4 -3
  35. package/common/with-schemas/index.js +4 -3
  36. package/index.js +60 -30
  37. package/indexes/index.js +7 -5
  38. package/indexes/with-schemas/index.js +7 -5
  39. package/mergeable-store/index.js +51 -21
  40. package/mergeable-store/with-schemas/index.js +51 -21
  41. package/metrics/index.js +7 -5
  42. package/metrics/with-schemas/index.js +7 -5
  43. package/min/checkpoints/index.js +1 -1
  44. package/min/checkpoints/index.js.gz +0 -0
  45. package/min/checkpoints/with-schemas/index.js +1 -1
  46. package/min/checkpoints/with-schemas/index.js.gz +0 -0
  47. package/min/common/index.js +1 -1
  48. package/min/common/index.js.gz +0 -0
  49. package/min/common/with-schemas/index.js +1 -1
  50. package/min/common/with-schemas/index.js.gz +0 -0
  51. package/min/index.js +1 -1
  52. package/min/index.js.gz +0 -0
  53. package/min/indexes/index.js +1 -1
  54. package/min/indexes/index.js.gz +0 -0
  55. package/min/indexes/with-schemas/index.js +1 -1
  56. package/min/indexes/with-schemas/index.js.gz +0 -0
  57. package/min/mergeable-store/index.js +1 -1
  58. package/min/mergeable-store/index.js.gz +0 -0
  59. package/min/mergeable-store/with-schemas/index.js +1 -1
  60. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  61. package/min/metrics/index.js +1 -1
  62. package/min/metrics/index.js.gz +0 -0
  63. package/min/metrics/with-schemas/index.js +1 -1
  64. package/min/metrics/with-schemas/index.js.gz +0 -0
  65. package/min/omni/index.js +1 -1
  66. package/min/omni/index.js.gz +0 -0
  67. package/min/omni/with-schemas/index.js +1 -1
  68. package/min/omni/with-schemas/index.js.gz +0 -0
  69. package/min/persisters/index.js +1 -1
  70. package/min/persisters/index.js.gz +0 -0
  71. package/min/persisters/persister-automerge/index.js +1 -1
  72. package/min/persisters/persister-automerge/index.js.gz +0 -0
  73. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  74. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  75. package/min/persisters/persister-browser/index.js +1 -1
  76. package/min/persisters/persister-browser/index.js.gz +0 -0
  77. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  78. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  79. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  80. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  81. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  82. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  83. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  84. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  85. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  86. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  87. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  88. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  89. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  90. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  91. package/min/persisters/persister-electric-sql/index.js +1 -1
  92. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  93. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  94. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  95. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  96. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  97. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  98. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  99. package/min/persisters/persister-file/index.js +1 -1
  100. package/min/persisters/persister-file/index.js.gz +0 -0
  101. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  102. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  103. package/min/persisters/persister-indexed-db/index.js +1 -1
  104. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  105. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  106. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  107. package/min/persisters/persister-libsql/index.js +1 -1
  108. package/min/persisters/persister-libsql/index.js.gz +0 -0
  109. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  110. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  111. package/min/persisters/persister-partykit-client/index.js +1 -1
  112. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  113. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  114. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  115. package/min/persisters/persister-partykit-server/index.js +1 -1
  116. package/min/persisters/persister-partykit-server/index.js.gz +0 -0
  117. package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
  118. package/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
  119. package/min/persisters/persister-pglite/index.js +1 -1
  120. package/min/persisters/persister-pglite/index.js.gz +0 -0
  121. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  122. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  123. package/min/persisters/persister-postgres/index.js +1 -1
  124. package/min/persisters/persister-postgres/index.js.gz +0 -0
  125. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  126. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  127. package/min/persisters/persister-powersync/index.js +1 -1
  128. package/min/persisters/persister-powersync/index.js.gz +0 -0
  129. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  130. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  131. package/min/persisters/persister-react-native-mmkv/index.js +1 -1
  132. package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
  133. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
  134. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
  135. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  136. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  137. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  138. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  139. package/min/persisters/persister-remote/index.js +1 -1
  140. package/min/persisters/persister-remote/index.js.gz +0 -0
  141. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  142. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  143. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  144. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  145. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  146. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  147. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  148. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  149. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  150. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  151. package/min/persisters/persister-sqlite3/index.js +1 -1
  152. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  153. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  154. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  155. package/min/persisters/persister-yjs/index.js +1 -1
  156. package/min/persisters/persister-yjs/index.js.gz +0 -0
  157. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  158. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  159. package/min/persisters/with-schemas/index.js +1 -1
  160. package/min/persisters/with-schemas/index.js.gz +0 -0
  161. package/min/queries/index.js +1 -1
  162. package/min/queries/index.js.gz +0 -0
  163. package/min/queries/with-schemas/index.js +1 -1
  164. package/min/queries/with-schemas/index.js.gz +0 -0
  165. package/min/relationships/index.js +1 -1
  166. package/min/relationships/index.js.gz +0 -0
  167. package/min/relationships/with-schemas/index.js +1 -1
  168. package/min/relationships/with-schemas/index.js.gz +0 -0
  169. package/min/store/index.js +1 -1
  170. package/min/store/index.js.gz +0 -0
  171. package/min/store/with-schemas/index.js +1 -1
  172. package/min/store/with-schemas/index.js.gz +0 -0
  173. package/min/synchronizers/index.js +1 -1
  174. package/min/synchronizers/index.js.gz +0 -0
  175. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  176. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  177. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  178. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  179. package/min/synchronizers/synchronizer-local/index.js +1 -1
  180. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  181. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  182. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  183. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  184. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  185. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  186. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  187. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  188. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  189. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  190. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  191. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  192. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  193. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  194. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  195. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  196. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  197. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  198. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  199. package/min/synchronizers/with-schemas/index.js +1 -1
  200. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  201. package/min/ui-react/index.js +1 -1
  202. package/min/ui-react/index.js.gz +0 -0
  203. package/min/ui-react/with-schemas/index.js +1 -1
  204. package/min/ui-react/with-schemas/index.js.gz +0 -0
  205. package/min/ui-react-dom/index.js +1 -1
  206. package/min/ui-react-dom/index.js.gz +0 -0
  207. package/min/ui-react-dom/with-schemas/index.js +1 -1
  208. package/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  209. package/min/ui-react-inspector/index.js +1 -1
  210. package/min/ui-react-inspector/index.js.gz +0 -0
  211. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  212. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  213. package/min/with-schemas/index.js +1 -1
  214. package/min/with-schemas/index.js.gz +0 -0
  215. package/omni/index.js +78 -46
  216. package/omni/with-schemas/index.js +78 -46
  217. package/package.json +3 -3
  218. package/persisters/index.js +14 -10
  219. package/persisters/persister-automerge/index.js +12 -8
  220. package/persisters/persister-automerge/with-schemas/index.js +12 -8
  221. package/persisters/persister-browser/index.js +12 -8
  222. package/persisters/persister-browser/with-schemas/index.js +12 -8
  223. package/persisters/persister-cr-sqlite-wasm/index.js +14 -10
  224. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +14 -10
  225. package/persisters/persister-durable-object-sql-storage/index.js +14 -10
  226. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +14 -10
  227. package/persisters/persister-durable-object-storage/index.js +12 -8
  228. package/persisters/persister-durable-object-storage/with-schemas/index.js +12 -8
  229. package/persisters/persister-electric-sql/index.js +14 -10
  230. package/persisters/persister-electric-sql/with-schemas/index.js +14 -10
  231. package/persisters/persister-expo-sqlite/index.js +14 -10
  232. package/persisters/persister-expo-sqlite/with-schemas/index.js +14 -10
  233. package/persisters/persister-file/index.js +12 -8
  234. package/persisters/persister-file/with-schemas/index.js +12 -8
  235. package/persisters/persister-indexed-db/index.js +12 -8
  236. package/persisters/persister-indexed-db/with-schemas/index.js +12 -8
  237. package/persisters/persister-libsql/index.js +14 -10
  238. package/persisters/persister-libsql/with-schemas/index.js +14 -10
  239. package/persisters/persister-partykit-client/index.js +12 -8
  240. package/persisters/persister-partykit-client/with-schemas/index.js +12 -8
  241. package/persisters/persister-partykit-server/index.js +4 -3
  242. package/persisters/persister-partykit-server/with-schemas/index.js +4 -3
  243. package/persisters/persister-pglite/index.js +13 -9
  244. package/persisters/persister-pglite/with-schemas/index.js +13 -9
  245. package/persisters/persister-postgres/index.js +13 -9
  246. package/persisters/persister-postgres/with-schemas/index.js +13 -9
  247. package/persisters/persister-powersync/index.js +14 -10
  248. package/persisters/persister-powersync/with-schemas/index.js +14 -10
  249. package/persisters/persister-react-native-mmkv/index.js +12 -8
  250. package/persisters/persister-react-native-mmkv/with-schemas/index.js +12 -8
  251. package/persisters/persister-react-native-sqlite/index.js +14 -10
  252. package/persisters/persister-react-native-sqlite/with-schemas/index.js +14 -10
  253. package/persisters/persister-remote/index.js +14 -10
  254. package/persisters/persister-remote/with-schemas/index.js +14 -10
  255. package/persisters/persister-sqlite-bun/index.js +14 -10
  256. package/persisters/persister-sqlite-bun/with-schemas/index.js +14 -10
  257. package/persisters/persister-sqlite-wasm/index.js +14 -10
  258. package/persisters/persister-sqlite-wasm/with-schemas/index.js +14 -10
  259. package/persisters/persister-sqlite3/index.js +14 -10
  260. package/persisters/persister-sqlite3/with-schemas/index.js +14 -10
  261. package/persisters/persister-yjs/index.js +18 -12
  262. package/persisters/persister-yjs/with-schemas/index.js +18 -12
  263. package/persisters/with-schemas/index.js +14 -10
  264. package/queries/index.js +17 -12
  265. package/queries/with-schemas/index.js +17 -12
  266. package/readme.md +2 -2
  267. package/relationships/index.js +7 -5
  268. package/relationships/with-schemas/index.js +7 -5
  269. package/releases.md +100 -12
  270. package/store/index.js +48 -18
  271. package/store/with-schemas/index.js +48 -18
  272. package/synchronizers/index.js +13 -9
  273. package/synchronizers/synchronizer-broadcast-channel/index.js +14 -10
  274. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +14 -10
  275. package/synchronizers/synchronizer-local/index.js +14 -10
  276. package/synchronizers/synchronizer-local/with-schemas/index.js +14 -10
  277. package/synchronizers/synchronizer-ws-client/index.js +13 -9
  278. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +13 -9
  279. package/synchronizers/synchronizer-ws-server/index.js +13 -9
  280. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +13 -9
  281. package/synchronizers/synchronizer-ws-server-durable-object/index.js +13 -9
  282. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +13 -9
  283. package/synchronizers/synchronizer-ws-server-simple/index.js +5 -4
  284. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +5 -4
  285. package/synchronizers/with-schemas/index.js +13 -9
  286. package/ui-react/index.js +9 -6
  287. package/ui-react/with-schemas/index.js +9 -6
  288. package/ui-react-dom/index.js +14 -7
  289. package/ui-react-dom/with-schemas/index.js +14 -7
  290. package/ui-react-inspector/index.js +53 -23
  291. package/ui-react-inspector/with-schemas/index.js +53 -23
  292. package/with-schemas/index.js +60 -30
@@ -1,14 +1,18 @@
1
1
  const EMPTY_STRING = '';
2
2
 
3
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
4
+ predicate(value) ? otherwise?.() : then(value);
3
5
  const THOUSAND = 1e3;
4
6
  const startInterval = (callback, sec, immediate) => {
5
7
  return setInterval(callback, sec * THOUSAND);
6
8
  };
7
9
  const stopInterval = clearInterval;
8
10
  const isInstanceOf = (thing, cls) => thing instanceof cls;
9
- const isUndefined = (thing) => thing == void 0;
10
- const ifNotUndefined = (value, then, otherwise) =>
11
- isUndefined(value) ? otherwise?.() : then(value);
11
+ const isNullish = (thing) => thing == null;
12
+ const isUndefined = (thing) => thing === void 0;
13
+ const isNull = (thing) => thing === null;
14
+ const ifNotNullish = getIfNotFunction(isNullish);
15
+ const ifNotUndefined = getIfNotFunction(isUndefined);
12
16
  const isArray = (thing) => Array.isArray(thing);
13
17
  const size = (arrayOrString) => arrayOrString.length;
14
18
  const test = (regex, subject) => regex.test(subject);
@@ -32,12 +36,12 @@ const arrayShift = (array) => array.shift();
32
36
  const object = Object;
33
37
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
34
38
  const isObject = (obj) =>
35
- !isUndefined(obj) &&
36
- ifNotUndefined(
39
+ !isNullish(obj) &&
40
+ ifNotNullish(
37
41
  getPrototypeOf(obj),
38
42
  (objPrototype) =>
39
43
  objPrototype == object.prototype ||
40
- isUndefined(getPrototypeOf(objPrototype)),
44
+ isNullish(getPrototypeOf(objPrototype)),
41
45
 
42
46
  /* istanbul ignore next */
43
47
  () => true,
@@ -63,7 +67,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
63
67
  const mapNew = (entries) => new Map(entries);
64
68
  const mapGet = (map, key) => map?.get(key);
65
69
  const mapSet = (map, key, value) =>
66
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
70
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
67
71
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
68
72
  if (!collHas(map, key)) {
69
73
  mapSet(map, key, getDefaultValue());
@@ -174,7 +178,7 @@ const getListenerFunctions = (getThing) => {
174
178
  const index = size(ids);
175
179
  if (index == size(path)) {
176
180
  listener(thing, ...ids, ...extraArgsGetter(ids));
177
- } else if (isUndefined(path[index])) {
181
+ } else if (isNull(path[index])) {
178
182
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
179
183
  callWithIds(...ids, id2),
180
184
  );
@@ -451,8 +455,8 @@ const createRemotePersister = (
451
455
  const response = await fetch(loadUrl, {method: 'HEAD'});
452
456
  const currentEtag = getETag(response);
453
457
  if (
454
- !isUndefined(lastEtag) &&
455
- !isUndefined(currentEtag) &&
458
+ !isNull(lastEtag) &&
459
+ !isNull(currentEtag) &&
456
460
  currentEtag != lastEtag
457
461
  ) {
458
462
  lastEtag = currentEtag;
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
16
+ predicate(value) ? otherwise?.() : then(value);
15
17
  const THOUSAND = 1e3;
16
18
  const startInterval = (callback, sec, immediate) => {
17
19
  return setInterval(callback, sec * THOUSAND);
18
20
  };
19
21
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
22
+ const isNullish = (thing) => thing == null;
23
+ const isUndefined = (thing) => thing === void 0;
24
+ const isNull = (thing) => thing === null;
25
+ const ifNotNullish = getIfNotFunction(isNullish);
26
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
27
  const isString = (thing) => getTypeOf(thing) == STRING;
24
28
  const isArray = (thing) => Array.isArray(thing);
25
29
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -102,12 +106,12 @@ const object = Object;
102
106
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
103
107
  const objEntries = object.entries;
104
108
  const isObject = (obj) =>
105
- !isUndefined(obj) &&
106
- ifNotUndefined(
109
+ !isNullish(obj) &&
110
+ ifNotNullish(
107
111
  getPrototypeOf(obj),
108
112
  (objPrototype) =>
109
113
  objPrototype == object.prototype ||
110
- isUndefined(getPrototypeOf(objPrototype)),
114
+ isNullish(getPrototypeOf(objPrototype)),
111
115
 
112
116
  /* istanbul ignore next */
113
117
  () => true,
@@ -136,7 +140,7 @@ const mapForEach = (map, cb) =>
136
140
  const mapMap = (coll, cb) =>
137
141
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
138
142
  const mapSet = (map, key, value) =>
139
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
143
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
140
144
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
141
145
  if (!collHas(map, key)) {
142
146
  mapSet(map, key, getDefaultValue());
@@ -223,7 +227,7 @@ const getDefaultedTabularConfigMap = (
223
227
  0,
224
228
  objSize(defaultObj),
225
229
  );
226
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
230
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
227
231
  then(id, defaultedConfig[0]);
228
232
  mapSet(configMap, id, defaultedConfig);
229
233
  }
@@ -372,7 +376,7 @@ const getListenerFunctions = (getThing) => {
372
376
  const index = size(ids);
373
377
  if (index == size(path)) {
374
378
  listener(thing, ...ids, ...extraArgsGetter(ids));
375
- } else if (isUndefined(path[index])) {
379
+ } else if (isNull(path[index])) {
376
380
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
377
381
  callWithIds(...ids, id2),
378
382
  );
@@ -1117,7 +1121,7 @@ const createCustomSqlitePersister = (
1117
1121
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1118
1122
  );
1119
1123
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1120
- if (dataVersion != null) {
1124
+ if (!isNullish(dataVersion)) {
1121
1125
  listener();
1122
1126
  }
1123
1127
  dataVersion = d;
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
16
+ predicate(value) ? otherwise?.() : then(value);
15
17
  const THOUSAND = 1e3;
16
18
  const startInterval = (callback, sec, immediate) => {
17
19
  return setInterval(callback, sec * THOUSAND);
18
20
  };
19
21
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
22
+ const isNullish = (thing) => thing == null;
23
+ const isUndefined = (thing) => thing === void 0;
24
+ const isNull = (thing) => thing === null;
25
+ const ifNotNullish = getIfNotFunction(isNullish);
26
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
27
  const isString = (thing) => getTypeOf(thing) == STRING;
24
28
  const isArray = (thing) => Array.isArray(thing);
25
29
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -102,12 +106,12 @@ const object = Object;
102
106
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
103
107
  const objEntries = object.entries;
104
108
  const isObject = (obj) =>
105
- !isUndefined(obj) &&
106
- ifNotUndefined(
109
+ !isNullish(obj) &&
110
+ ifNotNullish(
107
111
  getPrototypeOf(obj),
108
112
  (objPrototype) =>
109
113
  objPrototype == object.prototype ||
110
- isUndefined(getPrototypeOf(objPrototype)),
114
+ isNullish(getPrototypeOf(objPrototype)),
111
115
 
112
116
  /* istanbul ignore next */
113
117
  () => true,
@@ -136,7 +140,7 @@ const mapForEach = (map, cb) =>
136
140
  const mapMap = (coll, cb) =>
137
141
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
138
142
  const mapSet = (map, key, value) =>
139
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
143
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
140
144
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
141
145
  if (!collHas(map, key)) {
142
146
  mapSet(map, key, getDefaultValue());
@@ -223,7 +227,7 @@ const getDefaultedTabularConfigMap = (
223
227
  0,
224
228
  objSize(defaultObj),
225
229
  );
226
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
230
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
227
231
  then(id, defaultedConfig[0]);
228
232
  mapSet(configMap, id, defaultedConfig);
229
233
  }
@@ -372,7 +376,7 @@ const getListenerFunctions = (getThing) => {
372
376
  const index = size(ids);
373
377
  if (index == size(path)) {
374
378
  listener(thing, ...ids, ...extraArgsGetter(ids));
375
- } else if (isUndefined(path[index])) {
379
+ } else if (isNull(path[index])) {
376
380
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
377
381
  callWithIds(...ids, id2),
378
382
  );
@@ -1117,7 +1121,7 @@ const createCustomSqlitePersister = (
1117
1121
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1118
1122
  );
1119
1123
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1120
- if (dataVersion != null) {
1124
+ if (!isNullish(dataVersion)) {
1121
1125
  listener();
1122
1126
  }
1123
1127
  dataVersion = d;
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
16
+ predicate(value) ? otherwise?.() : then(value);
15
17
  const THOUSAND = 1e3;
16
18
  const startInterval = (callback, sec, immediate) => {
17
19
  return setInterval(callback, sec * THOUSAND);
18
20
  };
19
21
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
22
+ const isNullish = (thing) => thing == null;
23
+ const isUndefined = (thing) => thing === void 0;
24
+ const isNull = (thing) => thing === null;
25
+ const ifNotNullish = getIfNotFunction(isNullish);
26
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
27
  const isString = (thing) => getTypeOf(thing) == STRING;
24
28
  const isArray = (thing) => Array.isArray(thing);
25
29
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -102,12 +106,12 @@ const object = Object;
102
106
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
103
107
  const objEntries = object.entries;
104
108
  const isObject = (obj) =>
105
- !isUndefined(obj) &&
106
- ifNotUndefined(
109
+ !isNullish(obj) &&
110
+ ifNotNullish(
107
111
  getPrototypeOf(obj),
108
112
  (objPrototype) =>
109
113
  objPrototype == object.prototype ||
110
- isUndefined(getPrototypeOf(objPrototype)),
114
+ isNullish(getPrototypeOf(objPrototype)),
111
115
 
112
116
  /* istanbul ignore next */
113
117
  () => true,
@@ -136,7 +140,7 @@ const mapForEach = (map, cb) =>
136
140
  const mapMap = (coll, cb) =>
137
141
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
138
142
  const mapSet = (map, key, value) =>
139
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
143
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
140
144
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
141
145
  if (!collHas(map, key)) {
142
146
  mapSet(map, key, getDefaultValue());
@@ -223,7 +227,7 @@ const getDefaultedTabularConfigMap = (
223
227
  0,
224
228
  objSize(defaultObj),
225
229
  );
226
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
230
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
227
231
  then(id, defaultedConfig[0]);
228
232
  mapSet(configMap, id, defaultedConfig);
229
233
  }
@@ -372,7 +376,7 @@ const getListenerFunctions = (getThing) => {
372
376
  const index = size(ids);
373
377
  if (index == size(path)) {
374
378
  listener(thing, ...ids, ...extraArgsGetter(ids));
375
- } else if (isUndefined(path[index])) {
379
+ } else if (isNull(path[index])) {
376
380
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
377
381
  callWithIds(...ids, id2),
378
382
  );
@@ -1117,7 +1121,7 @@ const createCustomSqlitePersister = (
1117
1121
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1118
1122
  );
1119
1123
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1120
- if (dataVersion != null) {
1124
+ if (!isNullish(dataVersion)) {
1121
1125
  listener();
1122
1126
  }
1123
1127
  dataVersion = d;
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
16
+ predicate(value) ? otherwise?.() : then(value);
15
17
  const THOUSAND = 1e3;
16
18
  const startInterval = (callback, sec, immediate) => {
17
19
  return setInterval(callback, sec * THOUSAND);
18
20
  };
19
21
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
22
+ const isNullish = (thing) => thing == null;
23
+ const isUndefined = (thing) => thing === void 0;
24
+ const isNull = (thing) => thing === null;
25
+ const ifNotNullish = getIfNotFunction(isNullish);
26
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
27
  const isString = (thing) => getTypeOf(thing) == STRING;
24
28
  const isArray = (thing) => Array.isArray(thing);
25
29
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -102,12 +106,12 @@ const object = Object;
102
106
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
103
107
  const objEntries = object.entries;
104
108
  const isObject = (obj) =>
105
- !isUndefined(obj) &&
106
- ifNotUndefined(
109
+ !isNullish(obj) &&
110
+ ifNotNullish(
107
111
  getPrototypeOf(obj),
108
112
  (objPrototype) =>
109
113
  objPrototype == object.prototype ||
110
- isUndefined(getPrototypeOf(objPrototype)),
114
+ isNullish(getPrototypeOf(objPrototype)),
111
115
 
112
116
  /* istanbul ignore next */
113
117
  () => true,
@@ -136,7 +140,7 @@ const mapForEach = (map, cb) =>
136
140
  const mapMap = (coll, cb) =>
137
141
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
138
142
  const mapSet = (map, key, value) =>
139
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
143
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
140
144
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
141
145
  if (!collHas(map, key)) {
142
146
  mapSet(map, key, getDefaultValue());
@@ -223,7 +227,7 @@ const getDefaultedTabularConfigMap = (
223
227
  0,
224
228
  objSize(defaultObj),
225
229
  );
226
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
230
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
227
231
  then(id, defaultedConfig[0]);
228
232
  mapSet(configMap, id, defaultedConfig);
229
233
  }
@@ -372,7 +376,7 @@ const getListenerFunctions = (getThing) => {
372
376
  const index = size(ids);
373
377
  if (index == size(path)) {
374
378
  listener(thing, ...ids, ...extraArgsGetter(ids));
375
- } else if (isUndefined(path[index])) {
379
+ } else if (isNull(path[index])) {
376
380
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
377
381
  callWithIds(...ids, id2),
378
382
  );
@@ -1117,7 +1121,7 @@ const createCustomSqlitePersister = (
1117
1121
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1118
1122
  );
1119
1123
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1120
- if (dataVersion != null) {
1124
+ if (!isNullish(dataVersion)) {
1121
1125
  listener();
1122
1126
  }
1123
1127
  dataVersion = d;
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
16
+ predicate(value) ? otherwise?.() : then(value);
15
17
  const THOUSAND = 1e3;
16
18
  const startInterval = (callback, sec, immediate) => {
17
19
  return setInterval(callback, sec * THOUSAND);
18
20
  };
19
21
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
22
+ const isNullish = (thing) => thing == null;
23
+ const isUndefined = (thing) => thing === void 0;
24
+ const isNull = (thing) => thing === null;
25
+ const ifNotNullish = getIfNotFunction(isNullish);
26
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
27
  const isString = (thing) => getTypeOf(thing) == STRING;
24
28
  const isArray = (thing) => Array.isArray(thing);
25
29
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -103,12 +107,12 @@ const object = Object;
103
107
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
104
108
  const objEntries = object.entries;
105
109
  const isObject = (obj) =>
106
- !isUndefined(obj) &&
107
- ifNotUndefined(
110
+ !isNullish(obj) &&
111
+ ifNotNullish(
108
112
  getPrototypeOf(obj),
109
113
  (objPrototype) =>
110
114
  objPrototype == object.prototype ||
111
- isUndefined(getPrototypeOf(objPrototype)),
115
+ isNullish(getPrototypeOf(objPrototype)),
112
116
 
113
117
  /* istanbul ignore next */
114
118
  () => true,
@@ -137,7 +141,7 @@ const mapForEach = (map, cb) =>
137
141
  const mapMap = (coll, cb) =>
138
142
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
139
143
  const mapSet = (map, key, value) =>
140
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
144
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
141
145
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
142
146
  if (!collHas(map, key)) {
143
147
  mapSet(map, key, getDefaultValue());
@@ -224,7 +228,7 @@ const getDefaultedTabularConfigMap = (
224
228
  0,
225
229
  objSize(defaultObj),
226
230
  );
227
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
231
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
228
232
  then(id, defaultedConfig[0]);
229
233
  mapSet(configMap, id, defaultedConfig);
230
234
  }
@@ -373,7 +377,7 @@ const getListenerFunctions = (getThing) => {
373
377
  const index = size(ids);
374
378
  if (index == size(path)) {
375
379
  listener(thing, ...ids, ...extraArgsGetter(ids));
376
- } else if (isUndefined(path[index])) {
380
+ } else if (isNull(path[index])) {
377
381
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
378
382
  callWithIds(...ids, id2),
379
383
  );
@@ -1118,7 +1122,7 @@ const createCustomSqlitePersister = (
1118
1122
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1119
1123
  );
1120
1124
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1121
- if (dataVersion != null) {
1125
+ if (!isNullish(dataVersion)) {
1122
1126
  listener();
1123
1127
  }
1124
1128
  dataVersion = d;
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
16
+ predicate(value) ? otherwise?.() : then(value);
15
17
  const THOUSAND = 1e3;
16
18
  const startInterval = (callback, sec, immediate) => {
17
19
  return setInterval(callback, sec * THOUSAND);
18
20
  };
19
21
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
22
+ const isNullish = (thing) => thing == null;
23
+ const isUndefined = (thing) => thing === void 0;
24
+ const isNull = (thing) => thing === null;
25
+ const ifNotNullish = getIfNotFunction(isNullish);
26
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
27
  const isString = (thing) => getTypeOf(thing) == STRING;
24
28
  const isArray = (thing) => Array.isArray(thing);
25
29
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -103,12 +107,12 @@ const object = Object;
103
107
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
104
108
  const objEntries = object.entries;
105
109
  const isObject = (obj) =>
106
- !isUndefined(obj) &&
107
- ifNotUndefined(
110
+ !isNullish(obj) &&
111
+ ifNotNullish(
108
112
  getPrototypeOf(obj),
109
113
  (objPrototype) =>
110
114
  objPrototype == object.prototype ||
111
- isUndefined(getPrototypeOf(objPrototype)),
115
+ isNullish(getPrototypeOf(objPrototype)),
112
116
 
113
117
  /* istanbul ignore next */
114
118
  () => true,
@@ -137,7 +141,7 @@ const mapForEach = (map, cb) =>
137
141
  const mapMap = (coll, cb) =>
138
142
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
139
143
  const mapSet = (map, key, value) =>
140
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
144
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
141
145
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
142
146
  if (!collHas(map, key)) {
143
147
  mapSet(map, key, getDefaultValue());
@@ -224,7 +228,7 @@ const getDefaultedTabularConfigMap = (
224
228
  0,
225
229
  objSize(defaultObj),
226
230
  );
227
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
231
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
228
232
  then(id, defaultedConfig[0]);
229
233
  mapSet(configMap, id, defaultedConfig);
230
234
  }
@@ -373,7 +377,7 @@ const getListenerFunctions = (getThing) => {
373
377
  const index = size(ids);
374
378
  if (index == size(path)) {
375
379
  listener(thing, ...ids, ...extraArgsGetter(ids));
376
- } else if (isUndefined(path[index])) {
380
+ } else if (isNull(path[index])) {
377
381
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
378
382
  callWithIds(...ids, id2),
379
383
  );
@@ -1118,7 +1122,7 @@ const createCustomSqlitePersister = (
1118
1122
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1119
1123
  );
1120
1124
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1121
- if (dataVersion != null) {
1125
+ if (!isNullish(dataVersion)) {
1122
1126
  listener();
1123
1127
  }
1124
1128
  dataVersion = d;
@@ -5,9 +5,13 @@ const EMPTY_STRING = '';
5
5
  const T = 't';
6
6
  const V = 'v';
7
7
 
8
- const isUndefined = (thing) => thing == void 0;
9
- const ifNotUndefined = (value, then, otherwise) =>
10
- isUndefined(value) ? otherwise?.() : then(value);
8
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
9
+ predicate(value) ? otherwise?.() : then(value);
10
+ const isNullish = (thing) => thing == null;
11
+ const isUndefined = (thing) => thing === void 0;
12
+ const isNull = (thing) => thing === null;
13
+ const ifNotNullish = getIfNotFunction(isNullish);
14
+ const ifNotUndefined = getIfNotFunction(isUndefined);
11
15
  const isArray = (thing) => Array.isArray(thing);
12
16
  const size = (arrayOrString) => arrayOrString.length;
13
17
  const test = (regex, subject) => regex.test(subject);
@@ -40,12 +44,12 @@ const object = Object;
40
44
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
41
45
  const objEntries = object.entries;
42
46
  const isObject = (obj) =>
43
- !isUndefined(obj) &&
44
- ifNotUndefined(
47
+ !isNullish(obj) &&
48
+ ifNotNullish(
45
49
  getPrototypeOf(obj),
46
50
  (objPrototype) =>
47
51
  objPrototype == object.prototype ||
48
- isUndefined(getPrototypeOf(objPrototype)),
52
+ isNullish(getPrototypeOf(objPrototype)),
49
53
 
50
54
  /* istanbul ignore next */
51
55
  () => true,
@@ -72,7 +76,7 @@ const mapGet = (map, key) => map?.get(key);
72
76
  const mapForEach = (map, cb) =>
73
77
  collForEach(map, (value, key) => cb(key, value));
74
78
  const mapSet = (map, key, value) =>
75
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
79
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
76
80
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
77
81
  if (!collHas(map, key)) {
78
82
  mapSet(map, key, getDefaultValue());
@@ -183,7 +187,7 @@ const getListenerFunctions = (getThing) => {
183
187
  const index = size(ids);
184
188
  if (index == size(path)) {
185
189
  listener(thing, ...ids, ...extraArgsGetter(ids));
186
- } else if (isUndefined(path[index])) {
190
+ } else if (isNull(path[index])) {
187
191
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
188
192
  callWithIds(...ids, id2),
189
193
  );
@@ -459,7 +463,8 @@ const getChangesFromYDoc = (yContent, events) => {
459
463
  mapForEach(
460
464
  keys,
461
465
  (cellId, {action}) =>
462
- (row[cellId] = action == DELETE ? null : yRow.get(cellId)),
466
+ (row[cellId] =
467
+ action == DELETE ? void 0 : yRow.get(cellId)),
463
468
  );
464
469
  },
465
470
  () =>
@@ -467,7 +472,7 @@ const getChangesFromYDoc = (yContent, events) => {
467
472
  keys,
468
473
  (rowId, {action}) =>
469
474
  (table[rowId] =
470
- action == DELETE ? null : yTable.get(rowId)?.toJSON()),
475
+ action == DELETE ? void 0 : yTable.get(rowId)?.toJSON()),
471
476
  ),
472
477
  );
473
478
  },
@@ -476,13 +481,14 @@ const getChangesFromYDoc = (yContent, events) => {
476
481
  keys,
477
482
  (tableId, {action}) =>
478
483
  (tables[tableId] =
479
- action == DELETE ? null : yTables.get(tableId)?.toJSON()),
484
+ action == DELETE ? void 0 : yTables.get(tableId)?.toJSON()),
480
485
  ),
481
486
  )
482
487
  : mapForEach(
483
488
  keys,
484
489
  (valueId, {action}) =>
485
- (values[valueId] = action == DELETE ? null : yValues.get(valueId)),
490
+ (values[valueId] =
491
+ action == DELETE ? void 0 : yValues.get(valueId)),
486
492
  ),
487
493
  );
488
494
  return [tables, values, 1];