tinybase 7.0.0-beta.2 → 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 (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 +11 -6
  33. package/checkpoints/with-schemas/index.js +11 -6
  34. package/common/index.js +7 -3
  35. package/common/with-schemas/index.js +7 -3
  36. package/index.js +62 -30
  37. package/indexes/index.js +10 -5
  38. package/indexes/with-schemas/index.js +10 -5
  39. package/mergeable-store/index.js +53 -21
  40. package/mergeable-store/with-schemas/index.js +53 -21
  41. package/metrics/index.js +10 -5
  42. package/metrics/with-schemas/index.js +10 -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 +80 -46
  216. package/omni/with-schemas/index.js +80 -46
  217. package/package.json +2 -2
  218. package/persisters/index.js +16 -10
  219. package/persisters/persister-automerge/index.js +14 -8
  220. package/persisters/persister-automerge/with-schemas/index.js +14 -8
  221. package/persisters/persister-browser/index.js +14 -8
  222. package/persisters/persister-browser/with-schemas/index.js +14 -8
  223. package/persisters/persister-cr-sqlite-wasm/index.js +16 -10
  224. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +16 -10
  225. package/persisters/persister-durable-object-sql-storage/index.js +16 -10
  226. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +16 -10
  227. package/persisters/persister-durable-object-storage/index.js +14 -8
  228. package/persisters/persister-durable-object-storage/with-schemas/index.js +14 -8
  229. package/persisters/persister-electric-sql/index.js +16 -10
  230. package/persisters/persister-electric-sql/with-schemas/index.js +16 -10
  231. package/persisters/persister-expo-sqlite/index.js +16 -10
  232. package/persisters/persister-expo-sqlite/with-schemas/index.js +16 -10
  233. package/persisters/persister-file/index.js +14 -8
  234. package/persisters/persister-file/with-schemas/index.js +14 -8
  235. package/persisters/persister-indexed-db/index.js +14 -8
  236. package/persisters/persister-indexed-db/with-schemas/index.js +14 -8
  237. package/persisters/persister-libsql/index.js +16 -10
  238. package/persisters/persister-libsql/with-schemas/index.js +16 -10
  239. package/persisters/persister-partykit-client/index.js +14 -8
  240. package/persisters/persister-partykit-client/with-schemas/index.js +14 -8
  241. package/persisters/persister-partykit-server/index.js +7 -3
  242. package/persisters/persister-partykit-server/with-schemas/index.js +7 -3
  243. package/persisters/persister-pglite/index.js +15 -9
  244. package/persisters/persister-pglite/with-schemas/index.js +15 -9
  245. package/persisters/persister-postgres/index.js +15 -9
  246. package/persisters/persister-postgres/with-schemas/index.js +15 -9
  247. package/persisters/persister-powersync/index.js +16 -10
  248. package/persisters/persister-powersync/with-schemas/index.js +16 -10
  249. package/persisters/persister-react-native-mmkv/index.js +14 -8
  250. package/persisters/persister-react-native-mmkv/with-schemas/index.js +14 -8
  251. package/persisters/persister-react-native-sqlite/index.js +16 -10
  252. package/persisters/persister-react-native-sqlite/with-schemas/index.js +16 -10
  253. package/persisters/persister-remote/index.js +16 -10
  254. package/persisters/persister-remote/with-schemas/index.js +16 -10
  255. package/persisters/persister-sqlite-bun/index.js +16 -10
  256. package/persisters/persister-sqlite-bun/with-schemas/index.js +16 -10
  257. package/persisters/persister-sqlite-wasm/index.js +16 -10
  258. package/persisters/persister-sqlite-wasm/with-schemas/index.js +16 -10
  259. package/persisters/persister-sqlite3/index.js +16 -10
  260. package/persisters/persister-sqlite3/with-schemas/index.js +16 -10
  261. package/persisters/persister-yjs/index.js +20 -12
  262. package/persisters/persister-yjs/with-schemas/index.js +20 -12
  263. package/persisters/with-schemas/index.js +16 -10
  264. package/queries/index.js +20 -12
  265. package/queries/with-schemas/index.js +20 -12
  266. package/readme.md +13 -13
  267. package/relationships/index.js +10 -5
  268. package/relationships/with-schemas/index.js +10 -5
  269. package/releases.md +133 -45
  270. package/store/index.js +50 -18
  271. package/store/with-schemas/index.js +50 -18
  272. package/synchronizers/index.js +15 -9
  273. package/synchronizers/synchronizer-broadcast-channel/index.js +16 -10
  274. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +16 -10
  275. package/synchronizers/synchronizer-local/index.js +16 -10
  276. package/synchronizers/synchronizer-local/with-schemas/index.js +16 -10
  277. package/synchronizers/synchronizer-ws-client/index.js +15 -9
  278. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +15 -9
  279. package/synchronizers/synchronizer-ws-server/index.js +15 -9
  280. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +15 -9
  281. package/synchronizers/synchronizer-ws-server-durable-object/index.js +15 -9
  282. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +15 -9
  283. package/synchronizers/synchronizer-ws-server-simple/index.js +8 -4
  284. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +8 -4
  285. package/synchronizers/with-schemas/index.js +15 -9
  286. package/ui-react/index.js +11 -6
  287. package/ui-react/with-schemas/index.js +11 -6
  288. package/ui-react-dom/index.js +16 -7
  289. package/ui-react-dom/with-schemas/index.js +16 -7
  290. package/ui-react-inspector/index.js +55 -23
  291. package/ui-react-inspector/with-schemas/index.js +55 -23
  292. package/with-schemas/index.js +62 -30
@@ -12,14 +12,20 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction =
16
+ (predicate = isNullish) =>
17
+ (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
15
19
  const THOUSAND = 1e3;
16
20
  const startInterval = (callback, sec, immediate) => {
17
21
  return setInterval(callback, sec * THOUSAND);
18
22
  };
19
23
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
24
+ const isNullish = (thing) => thing == null;
25
+ const isUndefined = (thing) => thing === void 0;
26
+ const isNull = (thing) => thing === null;
27
+ const ifNotNullish = getIfNotFunction(isNullish);
28
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
29
  const isString = (thing) => getTypeOf(thing) == STRING;
24
30
  const isArray = (thing) => Array.isArray(thing);
25
31
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -102,12 +108,12 @@ const object = Object;
102
108
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
103
109
  const objEntries = object.entries;
104
110
  const isObject = (obj) =>
105
- !isUndefined(obj) &&
106
- ifNotUndefined(
111
+ !isNullish(obj) &&
112
+ ifNotNullish(
107
113
  getPrototypeOf(obj),
108
114
  (objPrototype) =>
109
115
  objPrototype == object.prototype ||
110
- isUndefined(getPrototypeOf(objPrototype)),
116
+ isNullish(getPrototypeOf(objPrototype)),
111
117
 
112
118
  /* istanbul ignore next */
113
119
  () => true,
@@ -136,7 +142,7 @@ const mapForEach = (map, cb) =>
136
142
  const mapMap = (coll, cb) =>
137
143
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
138
144
  const mapSet = (map, key, value) =>
139
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
145
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
140
146
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
141
147
  if (!collHas(map, key)) {
142
148
  mapSet(map, key, getDefaultValue());
@@ -223,7 +229,7 @@ const getDefaultedTabularConfigMap = (
223
229
  0,
224
230
  objSize(defaultObj),
225
231
  );
226
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
232
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
227
233
  then(id, defaultedConfig[0]);
228
234
  mapSet(configMap, id, defaultedConfig);
229
235
  }
@@ -372,7 +378,7 @@ const getListenerFunctions = (getThing) => {
372
378
  const index = size(ids);
373
379
  if (index == size(path)) {
374
380
  listener(thing, ...ids, ...extraArgsGetter(ids));
375
- } else if (isUndefined(path[index])) {
381
+ } else if (isNull(path[index])) {
376
382
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
377
383
  callWithIds(...ids, id2),
378
384
  );
@@ -1117,7 +1123,7 @@ const createCustomSqlitePersister = (
1117
1123
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1118
1124
  );
1119
1125
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1120
- if (dataVersion != null) {
1126
+ if (!isNullish(dataVersion)) {
1121
1127
  listener();
1122
1128
  }
1123
1129
  dataVersion = d;
@@ -1,14 +1,20 @@
1
1
  const EMPTY_STRING = '';
2
2
 
3
+ const getIfNotFunction =
4
+ (predicate = isNullish) =>
5
+ (value, then, otherwise) =>
6
+ predicate(value) ? otherwise?.() : then(value);
3
7
  const THOUSAND = 1e3;
4
8
  const startInterval = (callback, sec, immediate) => {
5
9
  return setInterval(callback, sec * THOUSAND);
6
10
  };
7
11
  const stopInterval = clearInterval;
8
12
  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);
13
+ const isNullish = (thing) => thing == null;
14
+ const isUndefined = (thing) => thing === void 0;
15
+ const isNull = (thing) => thing === null;
16
+ const ifNotNullish = getIfNotFunction(isNullish);
17
+ const ifNotUndefined = getIfNotFunction(isUndefined);
12
18
  const isArray = (thing) => Array.isArray(thing);
13
19
  const size = (arrayOrString) => arrayOrString.length;
14
20
  const test = (regex, subject) => regex.test(subject);
@@ -32,12 +38,12 @@ const arrayShift = (array) => array.shift();
32
38
  const object = Object;
33
39
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
34
40
  const isObject = (obj) =>
35
- !isUndefined(obj) &&
36
- ifNotUndefined(
41
+ !isNullish(obj) &&
42
+ ifNotNullish(
37
43
  getPrototypeOf(obj),
38
44
  (objPrototype) =>
39
45
  objPrototype == object.prototype ||
40
- isUndefined(getPrototypeOf(objPrototype)),
46
+ isNullish(getPrototypeOf(objPrototype)),
41
47
 
42
48
  /* istanbul ignore next */
43
49
  () => true,
@@ -63,7 +69,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
63
69
  const mapNew = (entries) => new Map(entries);
64
70
  const mapGet = (map, key) => map?.get(key);
65
71
  const mapSet = (map, key, value) =>
66
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
72
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
67
73
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
68
74
  if (!collHas(map, key)) {
69
75
  mapSet(map, key, getDefaultValue());
@@ -174,7 +180,7 @@ const getListenerFunctions = (getThing) => {
174
180
  const index = size(ids);
175
181
  if (index == size(path)) {
176
182
  listener(thing, ...ids, ...extraArgsGetter(ids));
177
- } else if (isUndefined(path[index])) {
183
+ } else if (isNull(path[index])) {
178
184
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
179
185
  callWithIds(...ids, id2),
180
186
  );
@@ -451,8 +457,8 @@ const createRemotePersister = (
451
457
  const response = await fetch(loadUrl, {method: 'HEAD'});
452
458
  const currentEtag = getETag(response);
453
459
  if (
454
- !isUndefined(lastEtag) &&
455
- !isUndefined(currentEtag) &&
460
+ !isNull(lastEtag) &&
461
+ !isNull(currentEtag) &&
456
462
  currentEtag != lastEtag
457
463
  ) {
458
464
  lastEtag = currentEtag;
@@ -1,14 +1,20 @@
1
1
  const EMPTY_STRING = '';
2
2
 
3
+ const getIfNotFunction =
4
+ (predicate = isNullish) =>
5
+ (value, then, otherwise) =>
6
+ predicate(value) ? otherwise?.() : then(value);
3
7
  const THOUSAND = 1e3;
4
8
  const startInterval = (callback, sec, immediate) => {
5
9
  return setInterval(callback, sec * THOUSAND);
6
10
  };
7
11
  const stopInterval = clearInterval;
8
12
  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);
13
+ const isNullish = (thing) => thing == null;
14
+ const isUndefined = (thing) => thing === void 0;
15
+ const isNull = (thing) => thing === null;
16
+ const ifNotNullish = getIfNotFunction(isNullish);
17
+ const ifNotUndefined = getIfNotFunction(isUndefined);
12
18
  const isArray = (thing) => Array.isArray(thing);
13
19
  const size = (arrayOrString) => arrayOrString.length;
14
20
  const test = (regex, subject) => regex.test(subject);
@@ -32,12 +38,12 @@ const arrayShift = (array) => array.shift();
32
38
  const object = Object;
33
39
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
34
40
  const isObject = (obj) =>
35
- !isUndefined(obj) &&
36
- ifNotUndefined(
41
+ !isNullish(obj) &&
42
+ ifNotNullish(
37
43
  getPrototypeOf(obj),
38
44
  (objPrototype) =>
39
45
  objPrototype == object.prototype ||
40
- isUndefined(getPrototypeOf(objPrototype)),
46
+ isNullish(getPrototypeOf(objPrototype)),
41
47
 
42
48
  /* istanbul ignore next */
43
49
  () => true,
@@ -63,7 +69,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
63
69
  const mapNew = (entries) => new Map(entries);
64
70
  const mapGet = (map, key) => map?.get(key);
65
71
  const mapSet = (map, key, value) =>
66
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
72
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
67
73
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
68
74
  if (!collHas(map, key)) {
69
75
  mapSet(map, key, getDefaultValue());
@@ -174,7 +180,7 @@ const getListenerFunctions = (getThing) => {
174
180
  const index = size(ids);
175
181
  if (index == size(path)) {
176
182
  listener(thing, ...ids, ...extraArgsGetter(ids));
177
- } else if (isUndefined(path[index])) {
183
+ } else if (isNull(path[index])) {
178
184
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
179
185
  callWithIds(...ids, id2),
180
186
  );
@@ -451,8 +457,8 @@ const createRemotePersister = (
451
457
  const response = await fetch(loadUrl, {method: 'HEAD'});
452
458
  const currentEtag = getETag(response);
453
459
  if (
454
- !isUndefined(lastEtag) &&
455
- !isUndefined(currentEtag) &&
460
+ !isNull(lastEtag) &&
461
+ !isNull(currentEtag) &&
456
462
  currentEtag != lastEtag
457
463
  ) {
458
464
  lastEtag = currentEtag;
@@ -12,14 +12,20 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction =
16
+ (predicate = isNullish) =>
17
+ (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
15
19
  const THOUSAND = 1e3;
16
20
  const startInterval = (callback, sec, immediate) => {
17
21
  return setInterval(callback, sec * THOUSAND);
18
22
  };
19
23
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
24
+ const isNullish = (thing) => thing == null;
25
+ const isUndefined = (thing) => thing === void 0;
26
+ const isNull = (thing) => thing === null;
27
+ const ifNotNullish = getIfNotFunction(isNullish);
28
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
29
  const isString = (thing) => getTypeOf(thing) == STRING;
24
30
  const isArray = (thing) => Array.isArray(thing);
25
31
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -102,12 +108,12 @@ const object = Object;
102
108
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
103
109
  const objEntries = object.entries;
104
110
  const isObject = (obj) =>
105
- !isUndefined(obj) &&
106
- ifNotUndefined(
111
+ !isNullish(obj) &&
112
+ ifNotNullish(
107
113
  getPrototypeOf(obj),
108
114
  (objPrototype) =>
109
115
  objPrototype == object.prototype ||
110
- isUndefined(getPrototypeOf(objPrototype)),
116
+ isNullish(getPrototypeOf(objPrototype)),
111
117
 
112
118
  /* istanbul ignore next */
113
119
  () => true,
@@ -136,7 +142,7 @@ const mapForEach = (map, cb) =>
136
142
  const mapMap = (coll, cb) =>
137
143
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
138
144
  const mapSet = (map, key, value) =>
139
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
145
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
140
146
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
141
147
  if (!collHas(map, key)) {
142
148
  mapSet(map, key, getDefaultValue());
@@ -223,7 +229,7 @@ const getDefaultedTabularConfigMap = (
223
229
  0,
224
230
  objSize(defaultObj),
225
231
  );
226
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
232
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
227
233
  then(id, defaultedConfig[0]);
228
234
  mapSet(configMap, id, defaultedConfig);
229
235
  }
@@ -372,7 +378,7 @@ const getListenerFunctions = (getThing) => {
372
378
  const index = size(ids);
373
379
  if (index == size(path)) {
374
380
  listener(thing, ...ids, ...extraArgsGetter(ids));
375
- } else if (isUndefined(path[index])) {
381
+ } else if (isNull(path[index])) {
376
382
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
377
383
  callWithIds(...ids, id2),
378
384
  );
@@ -1117,7 +1123,7 @@ const createCustomSqlitePersister = (
1117
1123
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1118
1124
  );
1119
1125
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1120
- if (dataVersion != null) {
1126
+ if (!isNullish(dataVersion)) {
1121
1127
  listener();
1122
1128
  }
1123
1129
  dataVersion = d;
@@ -12,14 +12,20 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction =
16
+ (predicate = isNullish) =>
17
+ (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
15
19
  const THOUSAND = 1e3;
16
20
  const startInterval = (callback, sec, immediate) => {
17
21
  return setInterval(callback, sec * THOUSAND);
18
22
  };
19
23
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
24
+ const isNullish = (thing) => thing == null;
25
+ const isUndefined = (thing) => thing === void 0;
26
+ const isNull = (thing) => thing === null;
27
+ const ifNotNullish = getIfNotFunction(isNullish);
28
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
29
  const isString = (thing) => getTypeOf(thing) == STRING;
24
30
  const isArray = (thing) => Array.isArray(thing);
25
31
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -102,12 +108,12 @@ const object = Object;
102
108
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
103
109
  const objEntries = object.entries;
104
110
  const isObject = (obj) =>
105
- !isUndefined(obj) &&
106
- ifNotUndefined(
111
+ !isNullish(obj) &&
112
+ ifNotNullish(
107
113
  getPrototypeOf(obj),
108
114
  (objPrototype) =>
109
115
  objPrototype == object.prototype ||
110
- isUndefined(getPrototypeOf(objPrototype)),
116
+ isNullish(getPrototypeOf(objPrototype)),
111
117
 
112
118
  /* istanbul ignore next */
113
119
  () => true,
@@ -136,7 +142,7 @@ const mapForEach = (map, cb) =>
136
142
  const mapMap = (coll, cb) =>
137
143
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
138
144
  const mapSet = (map, key, value) =>
139
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
145
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
140
146
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
141
147
  if (!collHas(map, key)) {
142
148
  mapSet(map, key, getDefaultValue());
@@ -223,7 +229,7 @@ const getDefaultedTabularConfigMap = (
223
229
  0,
224
230
  objSize(defaultObj),
225
231
  );
226
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
232
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
227
233
  then(id, defaultedConfig[0]);
228
234
  mapSet(configMap, id, defaultedConfig);
229
235
  }
@@ -372,7 +378,7 @@ const getListenerFunctions = (getThing) => {
372
378
  const index = size(ids);
373
379
  if (index == size(path)) {
374
380
  listener(thing, ...ids, ...extraArgsGetter(ids));
375
- } else if (isUndefined(path[index])) {
381
+ } else if (isNull(path[index])) {
376
382
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
377
383
  callWithIds(...ids, id2),
378
384
  );
@@ -1117,7 +1123,7 @@ const createCustomSqlitePersister = (
1117
1123
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1118
1124
  );
1119
1125
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1120
- if (dataVersion != null) {
1126
+ if (!isNullish(dataVersion)) {
1121
1127
  listener();
1122
1128
  }
1123
1129
  dataVersion = d;
@@ -12,14 +12,20 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction =
16
+ (predicate = isNullish) =>
17
+ (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
15
19
  const THOUSAND = 1e3;
16
20
  const startInterval = (callback, sec, immediate) => {
17
21
  return setInterval(callback, sec * THOUSAND);
18
22
  };
19
23
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
24
+ const isNullish = (thing) => thing == null;
25
+ const isUndefined = (thing) => thing === void 0;
26
+ const isNull = (thing) => thing === null;
27
+ const ifNotNullish = getIfNotFunction(isNullish);
28
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
29
  const isString = (thing) => getTypeOf(thing) == STRING;
24
30
  const isArray = (thing) => Array.isArray(thing);
25
31
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -102,12 +108,12 @@ const object = Object;
102
108
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
103
109
  const objEntries = object.entries;
104
110
  const isObject = (obj) =>
105
- !isUndefined(obj) &&
106
- ifNotUndefined(
111
+ !isNullish(obj) &&
112
+ ifNotNullish(
107
113
  getPrototypeOf(obj),
108
114
  (objPrototype) =>
109
115
  objPrototype == object.prototype ||
110
- isUndefined(getPrototypeOf(objPrototype)),
116
+ isNullish(getPrototypeOf(objPrototype)),
111
117
 
112
118
  /* istanbul ignore next */
113
119
  () => true,
@@ -136,7 +142,7 @@ const mapForEach = (map, cb) =>
136
142
  const mapMap = (coll, cb) =>
137
143
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
138
144
  const mapSet = (map, key, value) =>
139
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
145
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
140
146
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
141
147
  if (!collHas(map, key)) {
142
148
  mapSet(map, key, getDefaultValue());
@@ -223,7 +229,7 @@ const getDefaultedTabularConfigMap = (
223
229
  0,
224
230
  objSize(defaultObj),
225
231
  );
226
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
232
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
227
233
  then(id, defaultedConfig[0]);
228
234
  mapSet(configMap, id, defaultedConfig);
229
235
  }
@@ -372,7 +378,7 @@ const getListenerFunctions = (getThing) => {
372
378
  const index = size(ids);
373
379
  if (index == size(path)) {
374
380
  listener(thing, ...ids, ...extraArgsGetter(ids));
375
- } else if (isUndefined(path[index])) {
381
+ } else if (isNull(path[index])) {
376
382
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
377
383
  callWithIds(...ids, id2),
378
384
  );
@@ -1117,7 +1123,7 @@ const createCustomSqlitePersister = (
1117
1123
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1118
1124
  );
1119
1125
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1120
- if (dataVersion != null) {
1126
+ if (!isNullish(dataVersion)) {
1121
1127
  listener();
1122
1128
  }
1123
1129
  dataVersion = d;
@@ -12,14 +12,20 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction =
16
+ (predicate = isNullish) =>
17
+ (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
15
19
  const THOUSAND = 1e3;
16
20
  const startInterval = (callback, sec, immediate) => {
17
21
  return setInterval(callback, sec * THOUSAND);
18
22
  };
19
23
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
24
+ const isNullish = (thing) => thing == null;
25
+ const isUndefined = (thing) => thing === void 0;
26
+ const isNull = (thing) => thing === null;
27
+ const ifNotNullish = getIfNotFunction(isNullish);
28
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
29
  const isString = (thing) => getTypeOf(thing) == STRING;
24
30
  const isArray = (thing) => Array.isArray(thing);
25
31
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -102,12 +108,12 @@ const object = Object;
102
108
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
103
109
  const objEntries = object.entries;
104
110
  const isObject = (obj) =>
105
- !isUndefined(obj) &&
106
- ifNotUndefined(
111
+ !isNullish(obj) &&
112
+ ifNotNullish(
107
113
  getPrototypeOf(obj),
108
114
  (objPrototype) =>
109
115
  objPrototype == object.prototype ||
110
- isUndefined(getPrototypeOf(objPrototype)),
116
+ isNullish(getPrototypeOf(objPrototype)),
111
117
 
112
118
  /* istanbul ignore next */
113
119
  () => true,
@@ -136,7 +142,7 @@ const mapForEach = (map, cb) =>
136
142
  const mapMap = (coll, cb) =>
137
143
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
138
144
  const mapSet = (map, key, value) =>
139
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
145
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
140
146
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
141
147
  if (!collHas(map, key)) {
142
148
  mapSet(map, key, getDefaultValue());
@@ -223,7 +229,7 @@ const getDefaultedTabularConfigMap = (
223
229
  0,
224
230
  objSize(defaultObj),
225
231
  );
226
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
232
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
227
233
  then(id, defaultedConfig[0]);
228
234
  mapSet(configMap, id, defaultedConfig);
229
235
  }
@@ -372,7 +378,7 @@ const getListenerFunctions = (getThing) => {
372
378
  const index = size(ids);
373
379
  if (index == size(path)) {
374
380
  listener(thing, ...ids, ...extraArgsGetter(ids));
375
- } else if (isUndefined(path[index])) {
381
+ } else if (isNull(path[index])) {
376
382
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
377
383
  callWithIds(...ids, id2),
378
384
  );
@@ -1117,7 +1123,7 @@ const createCustomSqlitePersister = (
1117
1123
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1118
1124
  );
1119
1125
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1120
- if (dataVersion != null) {
1126
+ if (!isNullish(dataVersion)) {
1121
1127
  listener();
1122
1128
  }
1123
1129
  dataVersion = d;
@@ -12,14 +12,20 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction =
16
+ (predicate = isNullish) =>
17
+ (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
15
19
  const THOUSAND = 1e3;
16
20
  const startInterval = (callback, sec, immediate) => {
17
21
  return setInterval(callback, sec * THOUSAND);
18
22
  };
19
23
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
24
+ const isNullish = (thing) => thing == null;
25
+ const isUndefined = (thing) => thing === void 0;
26
+ const isNull = (thing) => thing === null;
27
+ const ifNotNullish = getIfNotFunction(isNullish);
28
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
29
  const isString = (thing) => getTypeOf(thing) == STRING;
24
30
  const isArray = (thing) => Array.isArray(thing);
25
31
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -103,12 +109,12 @@ const object = Object;
103
109
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
104
110
  const objEntries = object.entries;
105
111
  const isObject = (obj) =>
106
- !isUndefined(obj) &&
107
- ifNotUndefined(
112
+ !isNullish(obj) &&
113
+ ifNotNullish(
108
114
  getPrototypeOf(obj),
109
115
  (objPrototype) =>
110
116
  objPrototype == object.prototype ||
111
- isUndefined(getPrototypeOf(objPrototype)),
117
+ isNullish(getPrototypeOf(objPrototype)),
112
118
 
113
119
  /* istanbul ignore next */
114
120
  () => true,
@@ -137,7 +143,7 @@ const mapForEach = (map, cb) =>
137
143
  const mapMap = (coll, cb) =>
138
144
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
139
145
  const mapSet = (map, key, value) =>
140
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
146
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
141
147
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
142
148
  if (!collHas(map, key)) {
143
149
  mapSet(map, key, getDefaultValue());
@@ -224,7 +230,7 @@ const getDefaultedTabularConfigMap = (
224
230
  0,
225
231
  objSize(defaultObj),
226
232
  );
227
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
233
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
228
234
  then(id, defaultedConfig[0]);
229
235
  mapSet(configMap, id, defaultedConfig);
230
236
  }
@@ -373,7 +379,7 @@ const getListenerFunctions = (getThing) => {
373
379
  const index = size(ids);
374
380
  if (index == size(path)) {
375
381
  listener(thing, ...ids, ...extraArgsGetter(ids));
376
- } else if (isUndefined(path[index])) {
382
+ } else if (isNull(path[index])) {
377
383
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
378
384
  callWithIds(...ids, id2),
379
385
  );
@@ -1118,7 +1124,7 @@ const createCustomSqlitePersister = (
1118
1124
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1119
1125
  );
1120
1126
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1121
- if (dataVersion != null) {
1127
+ if (!isNullish(dataVersion)) {
1122
1128
  listener();
1123
1129
  }
1124
1130
  dataVersion = d;
@@ -12,14 +12,20 @@ const strReplace = (str, searchValue, replaceValue) =>
12
12
  str.replace(searchValue, replaceValue);
13
13
 
14
14
  const promise = Promise;
15
+ const getIfNotFunction =
16
+ (predicate = isNullish) =>
17
+ (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
15
19
  const THOUSAND = 1e3;
16
20
  const startInterval = (callback, sec, immediate) => {
17
21
  return setInterval(callback, sec * THOUSAND);
18
22
  };
19
23
  const stopInterval = clearInterval;
20
- const isUndefined = (thing) => thing == void 0;
21
- const ifNotUndefined = (value, then, otherwise) =>
22
- isUndefined(value) ? otherwise?.() : then(value);
24
+ const isNullish = (thing) => thing == null;
25
+ const isUndefined = (thing) => thing === void 0;
26
+ const isNull = (thing) => thing === null;
27
+ const ifNotNullish = getIfNotFunction(isNullish);
28
+ const ifNotUndefined = getIfNotFunction(isUndefined);
23
29
  const isString = (thing) => getTypeOf(thing) == STRING;
24
30
  const isArray = (thing) => Array.isArray(thing);
25
31
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -103,12 +109,12 @@ const object = Object;
103
109
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
104
110
  const objEntries = object.entries;
105
111
  const isObject = (obj) =>
106
- !isUndefined(obj) &&
107
- ifNotUndefined(
112
+ !isNullish(obj) &&
113
+ ifNotNullish(
108
114
  getPrototypeOf(obj),
109
115
  (objPrototype) =>
110
116
  objPrototype == object.prototype ||
111
- isUndefined(getPrototypeOf(objPrototype)),
117
+ isNullish(getPrototypeOf(objPrototype)),
112
118
 
113
119
  /* istanbul ignore next */
114
120
  () => true,
@@ -137,7 +143,7 @@ const mapForEach = (map, cb) =>
137
143
  const mapMap = (coll, cb) =>
138
144
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
139
145
  const mapSet = (map, key, value) =>
140
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
146
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
141
147
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
142
148
  if (!collHas(map, key)) {
143
149
  mapSet(map, key, getDefaultValue());
@@ -224,7 +230,7 @@ const getDefaultedTabularConfigMap = (
224
230
  0,
225
231
  objSize(defaultObj),
226
232
  );
227
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
233
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
228
234
  then(id, defaultedConfig[0]);
229
235
  mapSet(configMap, id, defaultedConfig);
230
236
  }
@@ -373,7 +379,7 @@ const getListenerFunctions = (getThing) => {
373
379
  const index = size(ids);
374
380
  if (index == size(path)) {
375
381
  listener(thing, ...ids, ...extraArgsGetter(ids));
376
- } else if (isUndefined(path[index])) {
382
+ } else if (isNull(path[index])) {
377
383
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
378
384
  callWithIds(...ids, id2),
379
385
  );
@@ -1118,7 +1124,7 @@ const createCustomSqlitePersister = (
1118
1124
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1119
1125
  );
1120
1126
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1121
- if (dataVersion != null) {
1127
+ if (!isNullish(dataVersion)) {
1122
1128
  listener();
1123
1129
  }
1124
1130
  dataVersion = d;