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
@@ -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;
@@ -13,14 +13,18 @@ const strReplace = (str, searchValue, replaceValue) =>
13
13
  str.replace(searchValue, replaceValue);
14
14
 
15
15
  const promise = Promise;
16
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
17
+ predicate(value) ? otherwise?.() : then(value);
16
18
  const THOUSAND = 1e3;
17
19
  const startInterval = (callback, sec, immediate) => {
18
20
  return setInterval(callback, sec * THOUSAND);
19
21
  };
20
22
  const stopInterval = clearInterval;
21
- const isUndefined = (thing) => thing == void 0;
22
- const ifNotUndefined = (value, then, otherwise) =>
23
- isUndefined(value) ? otherwise?.() : then(value);
23
+ const isNullish = (thing) => thing == null;
24
+ const isUndefined = (thing) => thing === void 0;
25
+ const isNull = (thing) => thing === null;
26
+ const ifNotNullish = getIfNotFunction(isNullish);
27
+ const ifNotUndefined = getIfNotFunction(isUndefined);
24
28
  const isString = (thing) => getTypeOf(thing) == STRING;
25
29
  const isArray = (thing) => Array.isArray(thing);
26
30
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -53,12 +57,12 @@ const object = Object;
53
57
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
54
58
  const objEntries = object.entries;
55
59
  const isObject = (obj) =>
56
- !isUndefined(obj) &&
57
- ifNotUndefined(
60
+ !isNullish(obj) &&
61
+ ifNotNullish(
58
62
  getPrototypeOf(obj),
59
63
  (objPrototype) =>
60
64
  objPrototype == object.prototype ||
61
- isUndefined(getPrototypeOf(objPrototype)),
65
+ isNullish(getPrototypeOf(objPrototype)),
62
66
 
63
67
  /* istanbul ignore next */
64
68
  () => true,
@@ -110,7 +114,7 @@ const mapForEach = (map, cb) =>
110
114
  const mapMap = (coll, cb) =>
111
115
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
112
116
  const mapSet = (map, key, value) =>
113
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
117
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
114
118
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
115
119
  if (!collHas(map, key)) {
116
120
  mapSet(map, key, getDefaultValue());
@@ -229,7 +233,7 @@ const getListenerFunctions = (getThing) => {
229
233
  const index = size(ids);
230
234
  if (index == size(path)) {
231
235
  listener(thing, ...ids, ...extraArgsGetter(ids));
232
- } else if (isUndefined(path[index])) {
236
+ } else if (isNull(path[index])) {
233
237
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
234
238
  callWithIds(...ids, id2),
235
239
  );
@@ -571,7 +575,7 @@ const getDefaultedTabularConfigMap = (
571
575
  0,
572
576
  objSize(defaultObj),
573
577
  );
574
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
578
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
575
579
  then(id, defaultedConfig[0]);
576
580
  mapSet(configMap, id, defaultedConfig);
577
581
  }
@@ -1134,7 +1138,7 @@ const createCustomSqlitePersister = (
1134
1138
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1135
1139
  );
1136
1140
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1137
- if (dataVersion != null) {
1141
+ if (!isNullish(dataVersion)) {
1138
1142
  listener();
1139
1143
  }
1140
1144
  dataVersion = d;
@@ -13,14 +13,18 @@ const strReplace = (str, searchValue, replaceValue) =>
13
13
  str.replace(searchValue, replaceValue);
14
14
 
15
15
  const promise = Promise;
16
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
17
+ predicate(value) ? otherwise?.() : then(value);
16
18
  const THOUSAND = 1e3;
17
19
  const startInterval = (callback, sec, immediate) => {
18
20
  return setInterval(callback, sec * THOUSAND);
19
21
  };
20
22
  const stopInterval = clearInterval;
21
- const isUndefined = (thing) => thing == void 0;
22
- const ifNotUndefined = (value, then, otherwise) =>
23
- isUndefined(value) ? otherwise?.() : then(value);
23
+ const isNullish = (thing) => thing == null;
24
+ const isUndefined = (thing) => thing === void 0;
25
+ const isNull = (thing) => thing === null;
26
+ const ifNotNullish = getIfNotFunction(isNullish);
27
+ const ifNotUndefined = getIfNotFunction(isUndefined);
24
28
  const isString = (thing) => getTypeOf(thing) == STRING;
25
29
  const isArray = (thing) => Array.isArray(thing);
26
30
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -53,12 +57,12 @@ const object = Object;
53
57
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
54
58
  const objEntries = object.entries;
55
59
  const isObject = (obj) =>
56
- !isUndefined(obj) &&
57
- ifNotUndefined(
60
+ !isNullish(obj) &&
61
+ ifNotNullish(
58
62
  getPrototypeOf(obj),
59
63
  (objPrototype) =>
60
64
  objPrototype == object.prototype ||
61
- isUndefined(getPrototypeOf(objPrototype)),
65
+ isNullish(getPrototypeOf(objPrototype)),
62
66
 
63
67
  /* istanbul ignore next */
64
68
  () => true,
@@ -110,7 +114,7 @@ const mapForEach = (map, cb) =>
110
114
  const mapMap = (coll, cb) =>
111
115
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
112
116
  const mapSet = (map, key, value) =>
113
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
117
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
114
118
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
115
119
  if (!collHas(map, key)) {
116
120
  mapSet(map, key, getDefaultValue());
@@ -229,7 +233,7 @@ const getListenerFunctions = (getThing) => {
229
233
  const index = size(ids);
230
234
  if (index == size(path)) {
231
235
  listener(thing, ...ids, ...extraArgsGetter(ids));
232
- } else if (isUndefined(path[index])) {
236
+ } else if (isNull(path[index])) {
233
237
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
234
238
  callWithIds(...ids, id2),
235
239
  );
@@ -571,7 +575,7 @@ const getDefaultedTabularConfigMap = (
571
575
  0,
572
576
  objSize(defaultObj),
573
577
  );
574
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
578
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
575
579
  then(id, defaultedConfig[0]);
576
580
  mapSet(configMap, id, defaultedConfig);
577
581
  }
@@ -1134,7 +1138,7 @@ const createCustomSqlitePersister = (
1134
1138
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1135
1139
  );
1136
1140
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1137
- if (dataVersion != null) {
1141
+ if (!isNullish(dataVersion)) {
1138
1142
  listener();
1139
1143
  }
1140
1144
  dataVersion = d;
@@ -4,9 +4,13 @@ const V = 'v';
4
4
  const UNDEFINED = '\uFFFC';
5
5
  const strStartsWith = (str, prefix) => str.startsWith(prefix);
6
6
 
7
- const isUndefined = (thing) => thing == void 0;
8
- const ifNotUndefined = (value, then, otherwise) =>
9
- isUndefined(value) ? otherwise?.() : then(value);
7
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
8
+ predicate(value) ? otherwise?.() : then(value);
9
+ const isNullish = (thing) => thing == null;
10
+ const isUndefined = (thing) => thing === void 0;
11
+ const isNull = (thing) => thing === null;
12
+ const ifNotNullish = getIfNotFunction(isNullish);
13
+ const ifNotUndefined = getIfNotFunction(isUndefined);
10
14
  const isArray = (thing) => Array.isArray(thing);
11
15
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
12
16
  const size = (arrayOrString) => arrayOrString.length;
@@ -33,12 +37,12 @@ const object = Object;
33
37
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
34
38
  const objEntries = object.entries;
35
39
  const isObject = (obj) =>
36
- !isUndefined(obj) &&
37
- ifNotUndefined(
40
+ !isNullish(obj) &&
41
+ ifNotNullish(
38
42
  getPrototypeOf(obj),
39
43
  (objPrototype) =>
40
44
  objPrototype == object.prototype ||
41
- isUndefined(getPrototypeOf(objPrototype)),
45
+ isNullish(getPrototypeOf(objPrototype)),
42
46
 
43
47
  /* istanbul ignore next */
44
48
  () => true,
@@ -70,7 +74,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
70
74
  const mapNew = (entries) => new Map(entries);
71
75
  const mapGet = (map, key) => map?.get(key);
72
76
  const mapSet = (map, key, value) =>
73
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
77
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
74
78
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
75
79
  if (!collHas(map, key)) {
76
80
  mapSet(map, key, getDefaultValue());
@@ -201,7 +205,7 @@ const getListenerFunctions = (getThing) => {
201
205
  const index = size(ids);
202
206
  if (index == size(path)) {
203
207
  listener(thing, ...ids, ...extraArgsGetter(ids));
204
- } else if (isUndefined(path[index])) {
208
+ } else if (isNull(path[index])) {
205
209
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
206
210
  callWithIds(...ids, id2),
207
211
  );
@@ -4,9 +4,13 @@ const V = 'v';
4
4
  const UNDEFINED = '\uFFFC';
5
5
  const strStartsWith = (str, prefix) => str.startsWith(prefix);
6
6
 
7
- const isUndefined = (thing) => thing == void 0;
8
- const ifNotUndefined = (value, then, otherwise) =>
9
- isUndefined(value) ? otherwise?.() : then(value);
7
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
8
+ predicate(value) ? otherwise?.() : then(value);
9
+ const isNullish = (thing) => thing == null;
10
+ const isUndefined = (thing) => thing === void 0;
11
+ const isNull = (thing) => thing === null;
12
+ const ifNotNullish = getIfNotFunction(isNullish);
13
+ const ifNotUndefined = getIfNotFunction(isUndefined);
10
14
  const isArray = (thing) => Array.isArray(thing);
11
15
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
12
16
  const size = (arrayOrString) => arrayOrString.length;
@@ -33,12 +37,12 @@ const object = Object;
33
37
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
34
38
  const objEntries = object.entries;
35
39
  const isObject = (obj) =>
36
- !isUndefined(obj) &&
37
- ifNotUndefined(
40
+ !isNullish(obj) &&
41
+ ifNotNullish(
38
42
  getPrototypeOf(obj),
39
43
  (objPrototype) =>
40
44
  objPrototype == object.prototype ||
41
- isUndefined(getPrototypeOf(objPrototype)),
45
+ isNullish(getPrototypeOf(objPrototype)),
42
46
 
43
47
  /* istanbul ignore next */
44
48
  () => true,
@@ -70,7 +74,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
70
74
  const mapNew = (entries) => new Map(entries);
71
75
  const mapGet = (map, key) => map?.get(key);
72
76
  const mapSet = (map, key, value) =>
73
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
77
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
74
78
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
75
79
  if (!collHas(map, key)) {
76
80
  mapSet(map, key, getDefaultValue());
@@ -201,7 +205,7 @@ const getListenerFunctions = (getThing) => {
201
205
  const index = size(ids);
202
206
  if (index == size(path)) {
203
207
  listener(thing, ...ids, ...extraArgsGetter(ids));
204
- } else if (isUndefined(path[index])) {
208
+ } else if (isNull(path[index])) {
205
209
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
206
210
  callWithIds(...ids, id2),
207
211
  );
@@ -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;
@@ -14,14 +14,18 @@ const strReplace = (str, searchValue, replaceValue) =>
14
14
  str.replace(searchValue, replaceValue);
15
15
 
16
16
  const promise = Promise;
17
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
18
+ predicate(value) ? otherwise?.() : then(value);
17
19
  const THOUSAND = 1e3;
18
20
  const startInterval = (callback, sec, immediate) => {
19
21
  return setInterval(callback, sec * THOUSAND);
20
22
  };
21
23
  const stopInterval = clearInterval;
22
- const isUndefined = (thing) => thing == void 0;
23
- const ifNotUndefined = (value, then, otherwise) =>
24
- 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);
25
29
  const isString = (thing) => getTypeOf(thing) == STRING;
26
30
  const isArray = (thing) => Array.isArray(thing);
27
31
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
@@ -104,12 +108,12 @@ const object = Object;
104
108
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
105
109
  const objEntries = object.entries;
106
110
  const isObject = (obj) =>
107
- !isUndefined(obj) &&
108
- ifNotUndefined(
111
+ !isNullish(obj) &&
112
+ ifNotNullish(
109
113
  getPrototypeOf(obj),
110
114
  (objPrototype) =>
111
115
  objPrototype == object.prototype ||
112
- isUndefined(getPrototypeOf(objPrototype)),
116
+ isNullish(getPrototypeOf(objPrototype)),
113
117
 
114
118
  /* istanbul ignore next */
115
119
  () => true,
@@ -138,7 +142,7 @@ const mapForEach = (map, cb) =>
138
142
  const mapMap = (coll, cb) =>
139
143
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
140
144
  const mapSet = (map, key, value) =>
141
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
145
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
142
146
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
143
147
  if (!collHas(map, key)) {
144
148
  mapSet(map, key, getDefaultValue());
@@ -225,7 +229,7 @@ const getDefaultedTabularConfigMap = (
225
229
  0,
226
230
  objSize(defaultObj),
227
231
  );
228
- if (!isUndefined(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
232
+ if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
229
233
  then(id, defaultedConfig[0]);
230
234
  mapSet(configMap, id, defaultedConfig);
231
235
  }
@@ -374,7 +378,7 @@ const getListenerFunctions = (getThing) => {
374
378
  const index = size(ids);
375
379
  if (index == size(path)) {
376
380
  listener(thing, ...ids, ...extraArgsGetter(ids));
377
- } else if (isUndefined(path[index])) {
381
+ } else if (isNull(path[index])) {
378
382
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
379
383
  callWithIds(...ids, id2),
380
384
  );
@@ -1119,7 +1123,7 @@ const createCustomSqlitePersister = (
1119
1123
  ` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
1120
1124
  );
1121
1125
  if (d != dataVersion || s != schemaVersion || c != totalChanges) {
1122
- if (dataVersion != null) {
1126
+ if (!isNullish(dataVersion)) {
1123
1127
  listener();
1124
1128
  }
1125
1129
  dataVersion = d;