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
@@ -4,15 +4,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
4
4
  str.split(separator, limit);
5
5
 
6
6
  const promise = Promise;
7
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
8
+ predicate(value) ? otherwise?.() : then(value);
7
9
  const GLOBAL = globalThis;
8
10
  const THOUSAND = 1e3;
9
11
  const startTimeout = (callback, sec = 0) =>
10
12
  setTimeout(callback, sec * THOUSAND);
11
13
  const math = Math;
12
14
  const mathFloor = math.floor;
13
- const isUndefined = (thing) => thing == void 0;
14
- const ifNotUndefined = (value, then, otherwise) =>
15
- isUndefined(value) ? otherwise?.() : then(value);
15
+ const isNullish = (thing) => thing == null;
16
+ const isUndefined = (thing) => thing === void 0;
17
+ const isNull = (thing) => thing === null;
18
+ const ifNotNullish = getIfNotFunction(isNullish);
19
+ const ifNotUndefined = getIfNotFunction(isUndefined);
16
20
  const isArray = (thing) => Array.isArray(thing);
17
21
  const size = (arrayOrString) => arrayOrString.length;
18
22
  const test = (regex, subject) => regex.test(subject);
@@ -46,12 +50,12 @@ const object = Object;
46
50
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
47
51
  const objEntries = object.entries;
48
52
  const isObject = (obj) =>
49
- !isUndefined(obj) &&
50
- ifNotUndefined(
53
+ !isNullish(obj) &&
54
+ ifNotNullish(
51
55
  getPrototypeOf(obj),
52
56
  (objPrototype) =>
53
57
  objPrototype == object.prototype ||
54
- isUndefined(getPrototypeOf(objPrototype)),
58
+ isNullish(getPrototypeOf(objPrototype)),
55
59
 
56
60
  /* istanbul ignore next */
57
61
  () => true,
@@ -74,7 +78,7 @@ const objEnsure = (obj, id, getDefaultValue) => {
74
78
  const mapNew = (entries) => new Map(entries);
75
79
  const mapGet = (map, key) => map?.get(key);
76
80
  const mapSet = (map, key, value) =>
77
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
81
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
78
82
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
79
83
  if (!collHas(map, key)) {
80
84
  mapSet(map, key, getDefaultValue());
@@ -207,7 +211,7 @@ const getListenerFunctions = (getThing) => {
207
211
  const index = size(ids);
208
212
  if (index == size(path)) {
209
213
  listener(thing, ...ids, ...extraArgsGetter(ids));
210
- } else if (isUndefined(path[index])) {
214
+ } else if (isNull(path[index])) {
211
215
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
212
216
  callWithIds(...ids, id2),
213
217
  );
@@ -634,7 +638,7 @@ const createCustomSynchronizer = (
634
638
  ifNotUndefined(
635
639
  mapGet(pendingRequests, transactionOrRequestId),
636
640
  ([toClientId, handleResponse]) =>
637
- isUndefined(toClientId) || toClientId == fromClientId
641
+ isNull(toClientId) || toClientId == fromClientId
638
642
  ? handleResponse(body, fromClientId)
639
643
  : /* istanbul ignore next */
640
644
  0,
@@ -694,7 +698,7 @@ const createBroadcastChannelSynchronizer = (
694
698
  channel.onmessage = ({
695
699
  data: [fromClientId, toClientId, requestId, message, body],
696
700
  }) =>
697
- isUndefined(toClientId) || toClientId == clientId
701
+ isNull(toClientId) || toClientId == clientId
698
702
  ? receive(fromClientId, requestId, message, body)
699
703
  : 0;
700
704
  };
@@ -4,15 +4,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
4
4
  str.split(separator, limit);
5
5
 
6
6
  const promise = Promise;
7
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
8
+ predicate(value) ? otherwise?.() : then(value);
7
9
  const GLOBAL = globalThis;
8
10
  const THOUSAND = 1e3;
9
11
  const startTimeout = (callback, sec = 0) =>
10
12
  setTimeout(callback, sec * THOUSAND);
11
13
  const math = Math;
12
14
  const mathFloor = math.floor;
13
- const isUndefined = (thing) => thing == void 0;
14
- const ifNotUndefined = (value, then, otherwise) =>
15
- isUndefined(value) ? otherwise?.() : then(value);
15
+ const isNullish = (thing) => thing == null;
16
+ const isUndefined = (thing) => thing === void 0;
17
+ const isNull = (thing) => thing === null;
18
+ const ifNotNullish = getIfNotFunction(isNullish);
19
+ const ifNotUndefined = getIfNotFunction(isUndefined);
16
20
  const isArray = (thing) => Array.isArray(thing);
17
21
  const size = (arrayOrString) => arrayOrString.length;
18
22
  const test = (regex, subject) => regex.test(subject);
@@ -46,12 +50,12 @@ const object = Object;
46
50
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
47
51
  const objEntries = object.entries;
48
52
  const isObject = (obj) =>
49
- !isUndefined(obj) &&
50
- ifNotUndefined(
53
+ !isNullish(obj) &&
54
+ ifNotNullish(
51
55
  getPrototypeOf(obj),
52
56
  (objPrototype) =>
53
57
  objPrototype == object.prototype ||
54
- isUndefined(getPrototypeOf(objPrototype)),
58
+ isNullish(getPrototypeOf(objPrototype)),
55
59
 
56
60
  /* istanbul ignore next */
57
61
  () => true,
@@ -76,7 +80,7 @@ const mapGet = (map, key) => map?.get(key);
76
80
  const mapForEach = (map, cb) =>
77
81
  collForEach(map, (value, key) => cb(key, value));
78
82
  const mapSet = (map, key, value) =>
79
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
83
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
80
84
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
81
85
  if (!collHas(map, key)) {
82
86
  mapSet(map, key, getDefaultValue());
@@ -209,7 +213,7 @@ const getListenerFunctions = (getThing) => {
209
213
  const index = size(ids);
210
214
  if (index == size(path)) {
211
215
  listener(thing, ...ids, ...extraArgsGetter(ids));
212
- } else if (isUndefined(path[index])) {
216
+ } else if (isNull(path[index])) {
213
217
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
214
218
  callWithIds(...ids, id2),
215
219
  );
@@ -636,7 +640,7 @@ const createCustomSynchronizer = (
636
640
  ifNotUndefined(
637
641
  mapGet(pendingRequests, transactionOrRequestId),
638
642
  ([toClientId, handleResponse]) =>
639
- isUndefined(toClientId) || toClientId == fromClientId
643
+ isNull(toClientId) || toClientId == fromClientId
640
644
  ? handleResponse(body, fromClientId)
641
645
  : /* istanbul ignore next */
642
646
  0,
@@ -686,7 +690,7 @@ const createLocalSynchronizer = (store, onSend, onReceive, onIgnoredError) => {
686
690
  const clientId = getUniqueId();
687
691
  const send = (toClientId, requestId, message, body) =>
688
692
  startTimeout(() =>
689
- isUndefined(toClientId)
693
+ isNull(toClientId)
690
694
  ? mapForEach(clients, (otherClientId, receive) =>
691
695
  otherClientId != clientId
692
696
  ? receive(clientId, requestId, message, body)
@@ -4,15 +4,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
4
4
  str.split(separator, limit);
5
5
 
6
6
  const promise = Promise;
7
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
8
+ predicate(value) ? otherwise?.() : then(value);
7
9
  const GLOBAL = globalThis;
8
10
  const THOUSAND = 1e3;
9
11
  const startTimeout = (callback, sec = 0) =>
10
12
  setTimeout(callback, sec * THOUSAND);
11
13
  const math = Math;
12
14
  const mathFloor = math.floor;
13
- const isUndefined = (thing) => thing == void 0;
14
- const ifNotUndefined = (value, then, otherwise) =>
15
- isUndefined(value) ? otherwise?.() : then(value);
15
+ const isNullish = (thing) => thing == null;
16
+ const isUndefined = (thing) => thing === void 0;
17
+ const isNull = (thing) => thing === null;
18
+ const ifNotNullish = getIfNotFunction(isNullish);
19
+ const ifNotUndefined = getIfNotFunction(isUndefined);
16
20
  const isArray = (thing) => Array.isArray(thing);
17
21
  const size = (arrayOrString) => arrayOrString.length;
18
22
  const test = (regex, subject) => regex.test(subject);
@@ -46,12 +50,12 @@ const object = Object;
46
50
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
47
51
  const objEntries = object.entries;
48
52
  const isObject = (obj) =>
49
- !isUndefined(obj) &&
50
- ifNotUndefined(
53
+ !isNullish(obj) &&
54
+ ifNotNullish(
51
55
  getPrototypeOf(obj),
52
56
  (objPrototype) =>
53
57
  objPrototype == object.prototype ||
54
- isUndefined(getPrototypeOf(objPrototype)),
58
+ isNullish(getPrototypeOf(objPrototype)),
55
59
 
56
60
  /* istanbul ignore next */
57
61
  () => true,
@@ -76,7 +80,7 @@ const mapGet = (map, key) => map?.get(key);
76
80
  const mapForEach = (map, cb) =>
77
81
  collForEach(map, (value, key) => cb(key, value));
78
82
  const mapSet = (map, key, value) =>
79
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
83
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
80
84
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
81
85
  if (!collHas(map, key)) {
82
86
  mapSet(map, key, getDefaultValue());
@@ -209,7 +213,7 @@ const getListenerFunctions = (getThing) => {
209
213
  const index = size(ids);
210
214
  if (index == size(path)) {
211
215
  listener(thing, ...ids, ...extraArgsGetter(ids));
212
- } else if (isUndefined(path[index])) {
216
+ } else if (isNull(path[index])) {
213
217
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
214
218
  callWithIds(...ids, id2),
215
219
  );
@@ -636,7 +640,7 @@ const createCustomSynchronizer = (
636
640
  ifNotUndefined(
637
641
  mapGet(pendingRequests, transactionOrRequestId),
638
642
  ([toClientId, handleResponse]) =>
639
- isUndefined(toClientId) || toClientId == fromClientId
643
+ isNull(toClientId) || toClientId == fromClientId
640
644
  ? handleResponse(body, fromClientId)
641
645
  : /* istanbul ignore next */
642
646
  0,
@@ -686,7 +690,7 @@ const createLocalSynchronizer = (store, onSend, onReceive, onIgnoredError) => {
686
690
  const clientId = getUniqueId();
687
691
  const send = (toClientId, requestId, message, body) =>
688
692
  startTimeout(() =>
689
- isUndefined(toClientId)
693
+ isNull(toClientId)
690
694
  ? mapForEach(clients, (otherClientId, receive) =>
691
695
  otherClientId != clientId
692
696
  ? receive(clientId, requestId, message, body)
@@ -9,15 +9,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
9
9
  str.split(separator, limit);
10
10
 
11
11
  const promise = Promise;
12
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
13
+ predicate(value) ? otherwise?.() : then(value);
12
14
  const GLOBAL = globalThis;
13
15
  const THOUSAND = 1e3;
14
16
  const startTimeout = (callback, sec = 0) =>
15
17
  setTimeout(callback, sec * THOUSAND);
16
18
  const math = Math;
17
19
  const mathFloor = math.floor;
18
- const isUndefined = (thing) => thing == void 0;
19
- const ifNotUndefined = (value, then, otherwise) =>
20
- isUndefined(value) ? otherwise?.() : then(value);
20
+ const isNullish = (thing) => thing == null;
21
+ const isUndefined = (thing) => thing === void 0;
22
+ const isNull = (thing) => thing === null;
23
+ const ifNotNullish = getIfNotFunction(isNullish);
24
+ const ifNotUndefined = getIfNotFunction(isUndefined);
21
25
  const isArray = (thing) => Array.isArray(thing);
22
26
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
23
27
  const size = (arrayOrString) => arrayOrString.length;
@@ -46,12 +50,12 @@ const object = Object;
46
50
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
47
51
  const objEntries = object.entries;
48
52
  const isObject = (obj) =>
49
- !isUndefined(obj) &&
50
- ifNotUndefined(
53
+ !isNullish(obj) &&
54
+ ifNotNullish(
51
55
  getPrototypeOf(obj),
52
56
  (objPrototype) =>
53
57
  objPrototype == object.prototype ||
54
- isUndefined(getPrototypeOf(objPrototype)),
58
+ isNullish(getPrototypeOf(objPrototype)),
55
59
 
56
60
  /* istanbul ignore next */
57
61
  () => true,
@@ -103,7 +107,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
103
107
  const mapNew = (entries) => new Map(entries);
104
108
  const mapGet = (map, key) => map?.get(key);
105
109
  const mapSet = (map, key, value) =>
106
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
110
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
107
111
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
108
112
  if (!collHas(map, key)) {
109
113
  mapSet(map, key, getDefaultValue());
@@ -236,7 +240,7 @@ const getListenerFunctions = (getThing) => {
236
240
  const index = size(ids);
237
241
  if (index == size(path)) {
238
242
  listener(thing, ...ids, ...extraArgsGetter(ids));
239
- } else if (isUndefined(path[index])) {
243
+ } else if (isNull(path[index])) {
240
244
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
241
245
  callWithIds(...ids, id2),
242
246
  );
@@ -663,7 +667,7 @@ const createCustomSynchronizer = (
663
667
  ifNotUndefined(
664
668
  mapGet(pendingRequests, transactionOrRequestId),
665
669
  ([toClientId, handleResponse]) =>
666
- isUndefined(toClientId) || toClientId == fromClientId
670
+ isNull(toClientId) || toClientId == fromClientId
667
671
  ? handleResponse(body, fromClientId)
668
672
  : /* istanbul ignore next */
669
673
  0,
@@ -9,15 +9,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
9
9
  str.split(separator, limit);
10
10
 
11
11
  const promise = Promise;
12
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
13
+ predicate(value) ? otherwise?.() : then(value);
12
14
  const GLOBAL = globalThis;
13
15
  const THOUSAND = 1e3;
14
16
  const startTimeout = (callback, sec = 0) =>
15
17
  setTimeout(callback, sec * THOUSAND);
16
18
  const math = Math;
17
19
  const mathFloor = math.floor;
18
- const isUndefined = (thing) => thing == void 0;
19
- const ifNotUndefined = (value, then, otherwise) =>
20
- isUndefined(value) ? otherwise?.() : then(value);
20
+ const isNullish = (thing) => thing == null;
21
+ const isUndefined = (thing) => thing === void 0;
22
+ const isNull = (thing) => thing === null;
23
+ const ifNotNullish = getIfNotFunction(isNullish);
24
+ const ifNotUndefined = getIfNotFunction(isUndefined);
21
25
  const isArray = (thing) => Array.isArray(thing);
22
26
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
23
27
  const size = (arrayOrString) => arrayOrString.length;
@@ -46,12 +50,12 @@ const object = Object;
46
50
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
47
51
  const objEntries = object.entries;
48
52
  const isObject = (obj) =>
49
- !isUndefined(obj) &&
50
- ifNotUndefined(
53
+ !isNullish(obj) &&
54
+ ifNotNullish(
51
55
  getPrototypeOf(obj),
52
56
  (objPrototype) =>
53
57
  objPrototype == object.prototype ||
54
- isUndefined(getPrototypeOf(objPrototype)),
58
+ isNullish(getPrototypeOf(objPrototype)),
55
59
 
56
60
  /* istanbul ignore next */
57
61
  () => true,
@@ -103,7 +107,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
103
107
  const mapNew = (entries) => new Map(entries);
104
108
  const mapGet = (map, key) => map?.get(key);
105
109
  const mapSet = (map, key, value) =>
106
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
110
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
107
111
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
108
112
  if (!collHas(map, key)) {
109
113
  mapSet(map, key, getDefaultValue());
@@ -236,7 +240,7 @@ const getListenerFunctions = (getThing) => {
236
240
  const index = size(ids);
237
241
  if (index == size(path)) {
238
242
  listener(thing, ...ids, ...extraArgsGetter(ids));
239
- } else if (isUndefined(path[index])) {
243
+ } else if (isNull(path[index])) {
240
244
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
241
245
  callWithIds(...ids, id2),
242
246
  );
@@ -663,7 +667,7 @@ const createCustomSynchronizer = (
663
667
  ifNotUndefined(
664
668
  mapGet(pendingRequests, transactionOrRequestId),
665
669
  ([toClientId, handleResponse]) =>
666
- isUndefined(toClientId) || toClientId == fromClientId
670
+ isNull(toClientId) || toClientId == fromClientId
667
671
  ? handleResponse(body, fromClientId)
668
672
  : /* istanbul ignore next */
669
673
  0,
@@ -9,15 +9,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
9
9
  str.split(separator, limit);
10
10
 
11
11
  const promise = Promise;
12
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
13
+ predicate(value) ? otherwise?.() : then(value);
12
14
  const GLOBAL = globalThis;
13
15
  const THOUSAND = 1e3;
14
16
  const startTimeout = (callback, sec = 0) =>
15
17
  setTimeout(callback, sec * THOUSAND);
16
18
  const math = Math;
17
19
  const mathFloor = math.floor;
18
- const isUndefined = (thing) => thing == void 0;
19
- const ifNotUndefined = (value, then, otherwise) =>
20
- isUndefined(value) ? otherwise?.() : then(value);
20
+ const isNullish = (thing) => thing == null;
21
+ const isUndefined = (thing) => thing === void 0;
22
+ const isNull = (thing) => thing === null;
23
+ const ifNotNullish = getIfNotFunction(isNullish);
24
+ const ifNotUndefined = getIfNotFunction(isUndefined);
21
25
  const isArray = (thing) => Array.isArray(thing);
22
26
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
23
27
  const size = (arrayOrString) => arrayOrString.length;
@@ -59,12 +63,12 @@ const object = Object;
59
63
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
60
64
  const objEntries = object.entries;
61
65
  const isObject = (obj) =>
62
- !isUndefined(obj) &&
63
- ifNotUndefined(
66
+ !isNullish(obj) &&
67
+ ifNotNullish(
64
68
  getPrototypeOf(obj),
65
69
  (objPrototype) =>
66
70
  objPrototype == object.prototype ||
67
- isUndefined(getPrototypeOf(objPrototype)),
71
+ isNullish(getPrototypeOf(objPrototype)),
68
72
 
69
73
  /* istanbul ignore next */
70
74
  () => true,
@@ -92,7 +96,7 @@ const mapForEach = (map, cb) =>
92
96
  const mapMap = (coll, cb) =>
93
97
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
94
98
  const mapSet = (map, key, value) =>
95
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
99
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
96
100
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
97
101
  if (!collHas(map, key)) {
98
102
  mapSet(map, key, getDefaultValue());
@@ -203,7 +207,7 @@ const getListenerFunctions = (getThing) => {
203
207
  const index = size(ids);
204
208
  if (index == size(path)) {
205
209
  listener(thing, ...ids, ...extraArgsGetter(ids));
206
- } else if (isUndefined(path[index])) {
210
+ } else if (isNull(path[index])) {
207
211
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
208
212
  callWithIds(...ids, id2),
209
213
  );
@@ -672,7 +676,7 @@ const createCustomSynchronizer = (
672
676
  ifNotUndefined(
673
677
  mapGet(pendingRequests, transactionOrRequestId),
674
678
  ([toClientId, handleResponse]) =>
675
- isUndefined(toClientId) || toClientId == fromClientId
679
+ isNull(toClientId) || toClientId == fromClientId
676
680
  ? handleResponse(body, fromClientId)
677
681
  : /* istanbul ignore next */
678
682
  0,
@@ -9,15 +9,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
9
9
  str.split(separator, limit);
10
10
 
11
11
  const promise = Promise;
12
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
13
+ predicate(value) ? otherwise?.() : then(value);
12
14
  const GLOBAL = globalThis;
13
15
  const THOUSAND = 1e3;
14
16
  const startTimeout = (callback, sec = 0) =>
15
17
  setTimeout(callback, sec * THOUSAND);
16
18
  const math = Math;
17
19
  const mathFloor = math.floor;
18
- const isUndefined = (thing) => thing == void 0;
19
- const ifNotUndefined = (value, then, otherwise) =>
20
- isUndefined(value) ? otherwise?.() : then(value);
20
+ const isNullish = (thing) => thing == null;
21
+ const isUndefined = (thing) => thing === void 0;
22
+ const isNull = (thing) => thing === null;
23
+ const ifNotNullish = getIfNotFunction(isNullish);
24
+ const ifNotUndefined = getIfNotFunction(isUndefined);
21
25
  const isArray = (thing) => Array.isArray(thing);
22
26
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
23
27
  const size = (arrayOrString) => arrayOrString.length;
@@ -59,12 +63,12 @@ const object = Object;
59
63
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
60
64
  const objEntries = object.entries;
61
65
  const isObject = (obj) =>
62
- !isUndefined(obj) &&
63
- ifNotUndefined(
66
+ !isNullish(obj) &&
67
+ ifNotNullish(
64
68
  getPrototypeOf(obj),
65
69
  (objPrototype) =>
66
70
  objPrototype == object.prototype ||
67
- isUndefined(getPrototypeOf(objPrototype)),
71
+ isNullish(getPrototypeOf(objPrototype)),
68
72
 
69
73
  /* istanbul ignore next */
70
74
  () => true,
@@ -92,7 +96,7 @@ const mapForEach = (map, cb) =>
92
96
  const mapMap = (coll, cb) =>
93
97
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
94
98
  const mapSet = (map, key, value) =>
95
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
99
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
96
100
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
97
101
  if (!collHas(map, key)) {
98
102
  mapSet(map, key, getDefaultValue());
@@ -203,7 +207,7 @@ const getListenerFunctions = (getThing) => {
203
207
  const index = size(ids);
204
208
  if (index == size(path)) {
205
209
  listener(thing, ...ids, ...extraArgsGetter(ids));
206
- } else if (isUndefined(path[index])) {
210
+ } else if (isNull(path[index])) {
207
211
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
208
212
  callWithIds(...ids, id2),
209
213
  );
@@ -672,7 +676,7 @@ const createCustomSynchronizer = (
672
676
  ifNotUndefined(
673
677
  mapGet(pendingRequests, transactionOrRequestId),
674
678
  ([toClientId, handleResponse]) =>
675
- isUndefined(toClientId) || toClientId == fromClientId
679
+ isNull(toClientId) || toClientId == fromClientId
676
680
  ? handleResponse(body, fromClientId)
677
681
  : /* istanbul ignore next */
678
682
  0,
@@ -8,15 +8,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
8
8
  str.split(separator, limit);
9
9
 
10
10
  const promise = Promise;
11
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
12
+ predicate(value) ? otherwise?.() : then(value);
11
13
  const GLOBAL = globalThis;
12
14
  const THOUSAND = 1e3;
13
15
  const startTimeout = (callback, sec = 0) =>
14
16
  setTimeout(callback, sec * THOUSAND);
15
17
  const math = Math;
16
18
  const mathFloor = math.floor;
17
- const isUndefined = (thing) => thing == void 0;
18
- const ifNotUndefined = (value, then, otherwise) =>
19
- isUndefined(value) ? otherwise?.() : then(value);
19
+ const isNullish = (thing) => thing == null;
20
+ const isUndefined = (thing) => thing === void 0;
21
+ const isNull = (thing) => thing === null;
22
+ const ifNotNullish = getIfNotFunction(isNullish);
23
+ const ifNotUndefined = getIfNotFunction(isUndefined);
20
24
  const isArray = (thing) => Array.isArray(thing);
21
25
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
22
26
  const size = (arrayOrString) => arrayOrString.length;
@@ -47,12 +51,12 @@ const object = Object;
47
51
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
48
52
  const objEntries = object.entries;
49
53
  const isObject = (obj) =>
50
- !isUndefined(obj) &&
51
- ifNotUndefined(
54
+ !isNullish(obj) &&
55
+ ifNotNullish(
52
56
  getPrototypeOf(obj),
53
57
  (objPrototype) =>
54
58
  objPrototype == object.prototype ||
55
- isUndefined(getPrototypeOf(objPrototype)),
59
+ isNullish(getPrototypeOf(objPrototype)),
56
60
 
57
61
  /* istanbul ignore next */
58
62
  () => true,
@@ -105,7 +109,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
105
109
  const mapNew = (entries) => new Map(entries);
106
110
  const mapGet = (map, key) => map?.get(key);
107
111
  const mapSet = (map, key, value) =>
108
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
112
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
109
113
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
110
114
  if (!collHas(map, key)) {
111
115
  mapSet(map, key, getDefaultValue());
@@ -238,7 +242,7 @@ const getListenerFunctions = (getThing) => {
238
242
  const index = size(ids);
239
243
  if (index == size(path)) {
240
244
  listener(thing, ...ids, ...extraArgsGetter(ids));
241
- } else if (isUndefined(path[index])) {
245
+ } else if (isNull(path[index])) {
242
246
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
243
247
  callWithIds(...ids, id2),
244
248
  );
@@ -662,7 +666,7 @@ const createCustomSynchronizer = (
662
666
  ifNotUndefined(
663
667
  mapGet(pendingRequests, transactionOrRequestId),
664
668
  ([toClientId, handleResponse]) =>
665
- isUndefined(toClientId) || toClientId == fromClientId
669
+ isNull(toClientId) || toClientId == fromClientId
666
670
  ? handleResponse(body, fromClientId)
667
671
  : /* istanbul ignore next */
668
672
  0,
@@ -8,15 +8,19 @@ const strSplit = (str, separator = EMPTY_STRING, limit) =>
8
8
  str.split(separator, limit);
9
9
 
10
10
  const promise = Promise;
11
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
12
+ predicate(value) ? otherwise?.() : then(value);
11
13
  const GLOBAL = globalThis;
12
14
  const THOUSAND = 1e3;
13
15
  const startTimeout = (callback, sec = 0) =>
14
16
  setTimeout(callback, sec * THOUSAND);
15
17
  const math = Math;
16
18
  const mathFloor = math.floor;
17
- const isUndefined = (thing) => thing == void 0;
18
- const ifNotUndefined = (value, then, otherwise) =>
19
- isUndefined(value) ? otherwise?.() : then(value);
19
+ const isNullish = (thing) => thing == null;
20
+ const isUndefined = (thing) => thing === void 0;
21
+ const isNull = (thing) => thing === null;
22
+ const ifNotNullish = getIfNotFunction(isNullish);
23
+ const ifNotUndefined = getIfNotFunction(isUndefined);
20
24
  const isArray = (thing) => Array.isArray(thing);
21
25
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
22
26
  const size = (arrayOrString) => arrayOrString.length;
@@ -47,12 +51,12 @@ const object = Object;
47
51
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
48
52
  const objEntries = object.entries;
49
53
  const isObject = (obj) =>
50
- !isUndefined(obj) &&
51
- ifNotUndefined(
54
+ !isNullish(obj) &&
55
+ ifNotNullish(
52
56
  getPrototypeOf(obj),
53
57
  (objPrototype) =>
54
58
  objPrototype == object.prototype ||
55
- isUndefined(getPrototypeOf(objPrototype)),
59
+ isNullish(getPrototypeOf(objPrototype)),
56
60
 
57
61
  /* istanbul ignore next */
58
62
  () => true,
@@ -105,7 +109,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
105
109
  const mapNew = (entries) => new Map(entries);
106
110
  const mapGet = (map, key) => map?.get(key);
107
111
  const mapSet = (map, key, value) =>
108
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
112
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
109
113
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
110
114
  if (!collHas(map, key)) {
111
115
  mapSet(map, key, getDefaultValue());
@@ -238,7 +242,7 @@ const getListenerFunctions = (getThing) => {
238
242
  const index = size(ids);
239
243
  if (index == size(path)) {
240
244
  listener(thing, ...ids, ...extraArgsGetter(ids));
241
- } else if (isUndefined(path[index])) {
245
+ } else if (isNull(path[index])) {
242
246
  arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
243
247
  callWithIds(...ids, id2),
244
248
  );
@@ -662,7 +666,7 @@ const createCustomSynchronizer = (
662
666
  ifNotUndefined(
663
667
  mapGet(pendingRequests, transactionOrRequestId),
664
668
  ([toClientId, handleResponse]) =>
665
- isUndefined(toClientId) || toClientId == fromClientId
669
+ isNull(toClientId) || toClientId == fromClientId
666
670
  ? handleResponse(body, fromClientId)
667
671
  : /* istanbul ignore next */
668
672
  0,
@@ -3,9 +3,10 @@ const UTF8 = 'utf8';
3
3
  const MESSAGE = 'message';
4
4
  const strMatch = (str, regex) => str?.match(regex);
5
5
 
6
- const isUndefined = (thing) => thing == void 0;
7
- const ifNotUndefined = (value, then, otherwise) =>
8
- isUndefined(value) ? otherwise?.() : then(value);
6
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
7
+ predicate(value) ? otherwise?.() : then(value);
8
+ const isUndefined = (thing) => thing === void 0;
9
+ const ifNotUndefined = getIfNotFunction(isUndefined);
9
10
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
10
11
 
11
12
  const collSize = (coll) => coll?.size ?? 0;
@@ -23,7 +24,7 @@ const mapGet = (map, key) => map?.get(key);
23
24
  const mapForEach = (map, cb) =>
24
25
  collForEach(map, (value, key) => cb(key, value));
25
26
  const mapSet = (map, key, value) =>
26
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
27
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
27
28
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
28
29
  if (!collHas(map, key)) {
29
30
  mapSet(map, key, getDefaultValue());
@@ -3,9 +3,10 @@ const UTF8 = 'utf8';
3
3
  const MESSAGE = 'message';
4
4
  const strMatch = (str, regex) => str?.match(regex);
5
5
 
6
- const isUndefined = (thing) => thing == void 0;
7
- const ifNotUndefined = (value, then, otherwise) =>
8
- isUndefined(value) ? otherwise?.() : then(value);
6
+ const getIfNotFunction = (predicate) => (value, then, otherwise) =>
7
+ predicate(value) ? otherwise?.() : then(value);
8
+ const isUndefined = (thing) => thing === void 0;
9
+ const ifNotUndefined = getIfNotFunction(isUndefined);
9
10
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
10
11
 
11
12
  const collSize = (coll) => coll?.size ?? 0;
@@ -23,7 +24,7 @@ const mapGet = (map, key) => map?.get(key);
23
24
  const mapForEach = (map, cb) =>
24
25
  collForEach(map, (value, key) => cb(key, value));
25
26
  const mapSet = (map, key, value) =>
26
- isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
27
+ value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
27
28
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
28
29
  if (!collHas(map, key)) {
29
30
  mapSet(map, key, getDefaultValue());