tinybase 4.4.0-beta.0 → 4.4.0-beta.1

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 (347) hide show
  1. package/lib/checkpoints.js +1 -1
  2. package/lib/checkpoints.js.gz +0 -0
  3. package/lib/cjs/checkpoints.cjs +1 -1
  4. package/lib/cjs/checkpoints.cjs.gz +0 -0
  5. package/lib/cjs/indexes.cjs +1 -1
  6. package/lib/cjs/indexes.cjs.gz +0 -0
  7. package/lib/cjs/metrics.cjs +1 -1
  8. package/lib/cjs/metrics.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  10. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  12. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  14. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  16. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-file.cjs +1 -1
  18. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  20. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  22. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  24. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  26. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  28. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  30. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  32. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  33. package/lib/cjs/persisters.cjs +1 -1
  34. package/lib/cjs/persisters.cjs.gz +0 -0
  35. package/lib/cjs/queries.cjs +1 -1
  36. package/lib/cjs/queries.cjs.gz +0 -0
  37. package/lib/cjs/relationships.cjs +1 -1
  38. package/lib/cjs/relationships.cjs.gz +0 -0
  39. package/lib/cjs/store.cjs +1 -1
  40. package/lib/cjs/store.cjs.gz +0 -0
  41. package/lib/cjs/tinybase.cjs +1 -1
  42. package/lib/cjs/tinybase.cjs.gz +0 -0
  43. package/lib/cjs/tools.cjs +1 -1
  44. package/lib/cjs/tools.cjs.gz +0 -0
  45. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  46. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  47. package/lib/cjs/ui-react-dom.cjs +1 -1
  48. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  49. package/lib/cjs/ui-react.cjs +1 -1
  50. package/lib/cjs/ui-react.cjs.gz +0 -0
  51. package/lib/cjs-es6/checkpoints.cjs +1 -1
  52. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  53. package/lib/cjs-es6/indexes.cjs +1 -1
  54. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  55. package/lib/cjs-es6/metrics.cjs +1 -1
  56. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  57. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  58. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  59. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  60. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  61. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  62. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  63. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  64. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  65. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  66. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  70. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  72. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  73. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  74. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  75. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  76. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters.cjs +1 -1
  82. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  83. package/lib/cjs-es6/queries.cjs +1 -1
  84. package/lib/cjs-es6/queries.cjs.gz +0 -0
  85. package/lib/cjs-es6/relationships.cjs +1 -1
  86. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  87. package/lib/cjs-es6/store.cjs +1 -1
  88. package/lib/cjs-es6/store.cjs.gz +0 -0
  89. package/lib/cjs-es6/tinybase.cjs +1 -1
  90. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  91. package/lib/cjs-es6/tools.cjs +1 -1
  92. package/lib/cjs-es6/tools.cjs.gz +0 -0
  93. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  94. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  95. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  96. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  97. package/lib/cjs-es6/ui-react.cjs +1 -1
  98. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  99. package/lib/debug/checkpoints.js +12 -12
  100. package/lib/debug/indexes.js +9 -9
  101. package/lib/debug/metrics.js +9 -9
  102. package/lib/debug/persisters/persister-automerge.js +21 -8
  103. package/lib/debug/persisters/persister-browser.js +17 -3
  104. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +27 -12
  105. package/lib/debug/persisters/persister-expo-sqlite.js +27 -12
  106. package/lib/debug/persisters/persister-file.js +17 -3
  107. package/lib/debug/persisters/persister-indexed-db.js +21 -8
  108. package/lib/debug/persisters/persister-partykit-client.js +54 -20
  109. package/lib/debug/persisters/persister-partykit-server.js +173 -77
  110. package/lib/debug/persisters/persister-remote.js +17 -3
  111. package/lib/debug/persisters/persister-sqlite-wasm.js +27 -12
  112. package/lib/debug/persisters/persister-sqlite3.js +28 -13
  113. package/lib/debug/persisters/persister-yjs.js +23 -10
  114. package/lib/debug/persisters.js +16 -4
  115. package/lib/debug/queries.js +16 -15
  116. package/lib/debug/relationships.js +9 -9
  117. package/lib/debug/store.js +130 -35
  118. package/lib/debug/tinybase.js +142 -41
  119. package/lib/debug/tools.js +17 -9
  120. package/lib/debug/ui-react-dom.js +262 -150
  121. package/lib/debug/ui-react.js +26 -18
  122. package/lib/es6/checkpoints.js +1 -1
  123. package/lib/es6/checkpoints.js.gz +0 -0
  124. package/lib/es6/indexes.js +1 -1
  125. package/lib/es6/indexes.js.gz +0 -0
  126. package/lib/es6/metrics.js +1 -1
  127. package/lib/es6/metrics.js.gz +0 -0
  128. package/lib/es6/persisters/persister-automerge.js +1 -1
  129. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  130. package/lib/es6/persisters/persister-browser.js +1 -1
  131. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  132. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  133. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  134. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  135. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  136. package/lib/es6/persisters/persister-file.js +1 -1
  137. package/lib/es6/persisters/persister-file.js.gz +0 -0
  138. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  139. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  140. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  141. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  142. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  143. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  144. package/lib/es6/persisters/persister-remote.js +1 -1
  145. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  146. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  147. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  148. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  149. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  150. package/lib/es6/persisters/persister-yjs.js +1 -1
  151. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  152. package/lib/es6/persisters.js +1 -1
  153. package/lib/es6/persisters.js.gz +0 -0
  154. package/lib/es6/queries.js +1 -1
  155. package/lib/es6/queries.js.gz +0 -0
  156. package/lib/es6/relationships.js +1 -1
  157. package/lib/es6/relationships.js.gz +0 -0
  158. package/lib/es6/store.js +1 -1
  159. package/lib/es6/store.js.gz +0 -0
  160. package/lib/es6/tinybase.js +1 -1
  161. package/lib/es6/tinybase.js.gz +0 -0
  162. package/lib/es6/tools.js +1 -1
  163. package/lib/es6/tools.js.gz +0 -0
  164. package/lib/es6/ui-react-dom-debug.js +1 -1
  165. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  166. package/lib/es6/ui-react-dom.js +1 -1
  167. package/lib/es6/ui-react-dom.js.gz +0 -0
  168. package/lib/es6/ui-react.js +1 -1
  169. package/lib/es6/ui-react.js.gz +0 -0
  170. package/lib/indexes.js +1 -1
  171. package/lib/indexes.js.gz +0 -0
  172. package/lib/metrics.js +1 -1
  173. package/lib/metrics.js.gz +0 -0
  174. package/lib/persisters/persister-automerge.js +1 -1
  175. package/lib/persisters/persister-automerge.js.gz +0 -0
  176. package/lib/persisters/persister-browser.js +1 -1
  177. package/lib/persisters/persister-browser.js.gz +0 -0
  178. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  179. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  180. package/lib/persisters/persister-expo-sqlite.js +1 -1
  181. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  182. package/lib/persisters/persister-file.js +1 -1
  183. package/lib/persisters/persister-file.js.gz +0 -0
  184. package/lib/persisters/persister-indexed-db.js +1 -1
  185. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  186. package/lib/persisters/persister-partykit-client.js +1 -1
  187. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  188. package/lib/persisters/persister-partykit-server.js +1 -1
  189. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  190. package/lib/persisters/persister-remote.js +1 -1
  191. package/lib/persisters/persister-remote.js.gz +0 -0
  192. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  193. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  194. package/lib/persisters/persister-sqlite3.js +1 -1
  195. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  196. package/lib/persisters/persister-yjs.js +1 -1
  197. package/lib/persisters/persister-yjs.js.gz +0 -0
  198. package/lib/persisters.js +1 -1
  199. package/lib/persisters.js.gz +0 -0
  200. package/lib/queries.js +1 -1
  201. package/lib/queries.js.gz +0 -0
  202. package/lib/relationships.js +1 -1
  203. package/lib/relationships.js.gz +0 -0
  204. package/lib/store.js +1 -1
  205. package/lib/store.js.gz +0 -0
  206. package/lib/tinybase.js +1 -1
  207. package/lib/tinybase.js.gz +0 -0
  208. package/lib/tools.js +1 -1
  209. package/lib/tools.js.gz +0 -0
  210. package/lib/types/persisters/persister-automerge.d.ts +36 -3
  211. package/lib/types/persisters/persister-browser.d.ts +71 -8
  212. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +42 -8
  213. package/lib/types/persisters/persister-expo-sqlite.d.ts +40 -7
  214. package/lib/types/persisters/persister-file.d.ts +34 -3
  215. package/lib/types/persisters/persister-indexed-db.d.ts +40 -9
  216. package/lib/types/persisters/persister-partykit-client.d.ts +99 -13
  217. package/lib/types/persisters/persister-partykit-server.d.ts +414 -9
  218. package/lib/types/persisters/persister-remote.d.ts +40 -4
  219. package/lib/types/persisters/persister-sqlite-wasm.d.ts +46 -7
  220. package/lib/types/persisters/persister-sqlite3.d.ts +40 -7
  221. package/lib/types/persisters/persister-yjs.d.ts +37 -5
  222. package/lib/types/persisters.d.ts +10 -10
  223. package/lib/types/queries.d.ts +24 -0
  224. package/lib/types/store.d.ts +911 -31
  225. package/lib/types/tools.d.ts +4 -6
  226. package/lib/types/ui-react-dom.d.ts +13 -2
  227. package/lib/types/ui-react.d.ts +27 -6
  228. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +38 -4
  229. package/lib/types/with-schemas/persisters/persister-browser.d.ts +75 -10
  230. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +44 -9
  231. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +42 -8
  232. package/lib/types/with-schemas/persisters/persister-file.d.ts +36 -4
  233. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +42 -10
  234. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +102 -15
  235. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +447 -9
  236. package/lib/types/with-schemas/persisters/persister-remote.d.ts +42 -5
  237. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +48 -8
  238. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +41 -7
  239. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +39 -6
  240. package/lib/types/with-schemas/persisters.d.ts +10 -10
  241. package/lib/types/with-schemas/queries.d.ts +24 -0
  242. package/lib/types/with-schemas/store.d.ts +1179 -35
  243. package/lib/types/with-schemas/tools.d.ts +4 -6
  244. package/lib/types/with-schemas/ui-react-dom.d.ts +21 -4
  245. package/lib/types/with-schemas/ui-react.d.ts +29 -6
  246. package/lib/ui-react-dom.js +1 -1
  247. package/lib/ui-react-dom.js.gz +0 -0
  248. package/lib/ui-react.js +1 -1
  249. package/lib/ui-react.js.gz +0 -0
  250. package/lib/umd/checkpoints.js +1 -1
  251. package/lib/umd/checkpoints.js.gz +0 -0
  252. package/lib/umd/indexes.js +1 -1
  253. package/lib/umd/indexes.js.gz +0 -0
  254. package/lib/umd/metrics.js +1 -1
  255. package/lib/umd/metrics.js.gz +0 -0
  256. package/lib/umd/persisters/persister-automerge.js +1 -1
  257. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  258. package/lib/umd/persisters/persister-browser.js +1 -1
  259. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  260. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  261. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  262. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  263. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  264. package/lib/umd/persisters/persister-file.js +1 -1
  265. package/lib/umd/persisters/persister-file.js.gz +0 -0
  266. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  267. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  268. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  269. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  270. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  271. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  272. package/lib/umd/persisters/persister-remote.js +1 -1
  273. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  274. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  275. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  276. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  277. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  278. package/lib/umd/persisters/persister-yjs.js +1 -1
  279. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  280. package/lib/umd/persisters.js +1 -1
  281. package/lib/umd/persisters.js.gz +0 -0
  282. package/lib/umd/queries.js +1 -1
  283. package/lib/umd/queries.js.gz +0 -0
  284. package/lib/umd/relationships.js +1 -1
  285. package/lib/umd/relationships.js.gz +0 -0
  286. package/lib/umd/store.js +1 -1
  287. package/lib/umd/store.js.gz +0 -0
  288. package/lib/umd/tinybase.js +1 -1
  289. package/lib/umd/tinybase.js.gz +0 -0
  290. package/lib/umd/tools.js +1 -1
  291. package/lib/umd/tools.js.gz +0 -0
  292. package/lib/umd/ui-react-dom-debug.js +1 -1
  293. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  294. package/lib/umd/ui-react-dom.js +1 -1
  295. package/lib/umd/ui-react-dom.js.gz +0 -0
  296. package/lib/umd/ui-react.js +1 -1
  297. package/lib/umd/ui-react.js.gz +0 -0
  298. package/lib/umd-es6/checkpoints.js +1 -1
  299. package/lib/umd-es6/checkpoints.js.gz +0 -0
  300. package/lib/umd-es6/indexes.js +1 -1
  301. package/lib/umd-es6/indexes.js.gz +0 -0
  302. package/lib/umd-es6/metrics.js +1 -1
  303. package/lib/umd-es6/metrics.js.gz +0 -0
  304. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  305. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  306. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  307. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  308. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  309. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  310. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  311. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  312. package/lib/umd-es6/persisters/persister-file.js +1 -1
  313. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  314. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  315. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  316. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  317. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  318. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  319. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  320. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  321. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  322. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  323. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  324. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  325. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  326. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  327. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  328. package/lib/umd-es6/persisters.js +1 -1
  329. package/lib/umd-es6/persisters.js.gz +0 -0
  330. package/lib/umd-es6/queries.js +1 -1
  331. package/lib/umd-es6/queries.js.gz +0 -0
  332. package/lib/umd-es6/relationships.js +1 -1
  333. package/lib/umd-es6/relationships.js.gz +0 -0
  334. package/lib/umd-es6/store.js +1 -1
  335. package/lib/umd-es6/store.js.gz +0 -0
  336. package/lib/umd-es6/tinybase.js +1 -1
  337. package/lib/umd-es6/tinybase.js.gz +0 -0
  338. package/lib/umd-es6/tools.js +1 -1
  339. package/lib/umd-es6/tools.js.gz +0 -0
  340. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  341. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  342. package/lib/umd-es6/ui-react-dom.js +1 -1
  343. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  344. package/lib/umd-es6/ui-react.js +1 -1
  345. package/lib/umd-es6/ui-react.js.gz +0 -0
  346. package/package.json +42 -40
  347. package/readme.md +2 -2
@@ -27,6 +27,7 @@ const CELL_IDS = CELL + IDS;
27
27
  const VALUE = 'Value';
28
28
  const VALUES = VALUE + 's';
29
29
  const VALUE_IDS = VALUE + IDS;
30
+ const HAS = 'Has';
30
31
  const id = (key) => EMPTY_STRING + key;
31
32
 
32
33
  const mathMax = Math.max;
@@ -41,13 +42,14 @@ const isString = (thing) => getTypeOf(thing) == STRING;
41
42
  const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
42
43
  const isArray = (thing) => Array.isArray(thing);
43
44
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
45
+ const size = (arrayOrString) => arrayOrString.length;
44
46
  const test = (regex, subject) => regex.test(subject);
45
47
  const getUndefined = () => void 0;
46
48
 
47
49
  const arrayHas = (array, value) => array.includes(value);
48
50
  const arrayEvery = (array, cb) => array.every(cb);
49
51
  const arrayIsEqual = (array1, array2) =>
50
- arrayLength(array1) === arrayLength(array2) &&
52
+ size(array1) === size(array2) &&
51
53
  arrayEvery(array1, (value1, index) => array2[index] === value1);
52
54
  const arrayIsSorted = (array, sorter) =>
53
55
  arrayEvery(
@@ -58,8 +60,7 @@ const arraySort = (array, sorter) => array.sort(sorter);
58
60
  const arrayForEach = (array, cb) => array.forEach(cb);
59
61
  const arrayMap = (array, cb) => array.map(cb);
60
62
  const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
61
- const arrayLength = (array) => array.length;
62
- const arrayIsEmpty = (array) => arrayLength(array) == 0;
63
+ const arrayIsEmpty = (array) => size(array) == 0;
63
64
  const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
64
65
  const arrayClear = (array, to) => array.splice(0, to);
65
66
  const arrayPush = (array, ...values) => array.push(...values);
@@ -68,11 +69,19 @@ const arrayUnshift = (array, ...values) => array.unshift(...values);
68
69
  const arrayShift = (array) => array.shift();
69
70
 
70
71
  const object = Object;
72
+ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
71
73
  const objIds = object.keys;
72
74
  const objFrozen = object.isFrozen;
73
75
  const objFreeze = object.freeze;
74
76
  const isObject = (obj) =>
75
- isInstanceOf(obj, object) && obj.constructor == object;
77
+ !isUndefined(obj) &&
78
+ ifNotUndefined(
79
+ getPrototypeOf(obj),
80
+ (objPrototype) =>
81
+ objPrototype == object.prototype ||
82
+ isUndefined(getPrototypeOf(objPrototype)),
83
+ () => true,
84
+ );
76
85
  const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
77
86
  const objHas = (obj, id) => !isUndefined(objGet(obj, id));
78
87
  const objDel = (obj, id) => {
@@ -81,7 +90,7 @@ const objDel = (obj, id) => {
81
90
  };
82
91
  const objMap = (obj, cb) =>
83
92
  arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
84
- const objSize = (obj) => arrayLength(objIds(obj));
93
+ const objSize = (obj) => size(objIds(obj));
85
94
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
86
95
 
87
96
  const collSizeN = (collSizer) => (coll) =>
@@ -149,10 +158,10 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
149
158
  (ensureLeaf ? mapEnsure : mapGet)(
150
159
  node,
151
160
  path[p],
152
- p > arrayLength(path) - 2 ? ensureLeaf : mapNew,
161
+ p > size(path) - 2 ? ensureLeaf : mapNew,
153
162
  ),
154
163
  (nodeOrLeaf) => {
155
- if (p > arrayLength(path) - 2) {
164
+ if (p > size(path) - 2) {
156
165
  if (pruneLeaf?.(nodeOrLeaf)) {
157
166
  mapSet(node, path[p]);
158
167
  }
@@ -364,7 +373,7 @@ const getPoolFunctions = () => {
364
373
  return [
365
374
  (reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
366
375
  (id) => {
367
- if (test(INTEGER, id) && arrayLength(pool) < 1e3) {
376
+ if (test(INTEGER, id) && size(pool) < 1e3) {
368
377
  arrayPush(pool, id);
369
378
  }
370
379
  },
@@ -374,7 +383,7 @@ const getPoolFunctions = () => {
374
383
  const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
375
384
  const leaves = [];
376
385
  const deep = (node, p) =>
377
- p == arrayLength(path)
386
+ p == size(path)
378
387
  ? arrayPush(leaves, node)
379
388
  : path[p] === null
380
389
  ? collForEach(node, (node2) => deep(node2, p + 1))
@@ -426,8 +435,8 @@ const getListenerFunctions = (getThing) => {
426
435
  mapGet(allListeners, id),
427
436
  ([listener, , path = [], pathGetters, extraArgsGetter]) => {
428
437
  const callWithIds = (...ids) => {
429
- const index = arrayLength(ids);
430
- index == arrayLength(path)
438
+ const index = size(ids);
439
+ index == size(path)
431
440
  ? listener(thing, ...ids, ...extraArgsGetter(ids))
432
441
  : isUndefined(path[index])
433
442
  ? arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
@@ -482,11 +491,11 @@ const createCheckpoints = getCreateFunction((store) => {
482
491
  };
483
492
  const clearCheckpointIds = (checkpointIds, to) =>
484
493
  arrayForEach(
485
- arrayClear(checkpointIds, to ?? arrayLength(checkpointIds)),
494
+ arrayClear(checkpointIds, to ?? size(checkpointIds)),
486
495
  clearCheckpointId,
487
496
  );
488
497
  const trimBackwardsIds = () =>
489
- clearCheckpointIds(backwardIds, arrayLength(backwardIds) - backwardIdsSize);
498
+ clearCheckpointIds(backwardIds, size(backwardIds) - backwardIdsSize);
490
499
  const storeChanged = () =>
491
500
  ifNotUndefined(currentId, () => {
492
501
  arrayPush(backwardIds, currentId);
@@ -575,8 +584,8 @@ const createCheckpoints = getCreateFunction((store) => {
575
584
  checkpointsChanged = 0;
576
585
  }
577
586
  };
578
- const setSize = (size) => {
579
- backwardIdsSize = size;
587
+ const setSize = (size2) => {
588
+ backwardIdsSize = size2;
580
589
  trimBackwardsIds();
581
590
  return checkpoints;
582
591
  };
@@ -1050,6 +1059,7 @@ const createCustomPersister = (
1050
1059
  addPersisterListener,
1051
1060
  delPersisterListener,
1052
1061
  onIgnoredError,
1062
+ [getThing, thing] = [],
1053
1063
  scheduleId = [],
1054
1064
  ) => {
1055
1065
  let listenerId;
@@ -1166,6 +1176,7 @@ const createCustomPersister = (
1166
1176
  },
1167
1177
  stopAutoSave: () => {
1168
1178
  ifNotUndefined(listenerId, store.delListener);
1179
+ listenerId = void 0;
1169
1180
  return persister;
1170
1181
  },
1171
1182
  schedule: async (...actions) => {
@@ -1177,6 +1188,9 @@ const createCustomPersister = (
1177
1188
  destroy: () => persister.stopAutoLoad().stopAutoSave(),
1178
1189
  getStats: () => ({loads, saves}),
1179
1190
  };
1191
+ if (getThing) {
1192
+ persister[getThing] = () => thing;
1193
+ }
1180
1194
  return objFreeze(persister);
1181
1195
  };
1182
1196
 
@@ -1256,7 +1270,7 @@ const createQueries = getCreateFunction((store) => {
1256
1270
  const havings = [];
1257
1271
  const select = (arg1, arg2) => {
1258
1272
  const selectEntry = isFunction(arg1)
1259
- ? [arrayLength(selectEntries) + EMPTY_STRING, arg1]
1273
+ ? [size(selectEntries) + EMPTY_STRING, arg1]
1260
1274
  : [
1261
1275
  isUndefined(arg2) ? arg1 : arg2,
1262
1276
  (getTableCell) => getTableCell(arg1, arg2),
@@ -1630,6 +1644,7 @@ const createQueries = getCreateFunction((store) => {
1630
1644
  ...slice(args, 0, argumentCount),
1631
1645
  (_store, ...listenerArgs) =>
1632
1646
  args[argumentCount](queries, ...listenerArgs),
1647
+ true,
1633
1648
  );
1634
1649
  },
1635
1650
  );
@@ -1862,6 +1877,8 @@ const createStore = () => {
1862
1877
  let hasValuesSchema;
1863
1878
  let cellsTouched = false;
1864
1879
  let valuesTouched = false;
1880
+ let hadTables = false;
1881
+ let hadValues = false;
1865
1882
  let transactions = 0;
1866
1883
  const changedTableIds = mapNew();
1867
1884
  const changedTableCellIds = mapNew();
@@ -1882,20 +1899,27 @@ const createStore = () => {
1882
1899
  const tableCellIds = mapNew();
1883
1900
  const tablesMap = mapNew();
1884
1901
  const valuesMap = mapNew();
1902
+ const hasTablesListeners = pairNewMap();
1885
1903
  const tablesListeners = pairNewMap();
1886
1904
  const tableIdsListeners = pairNewMap();
1905
+ const hasTableListeners = pairNewMap();
1887
1906
  const tableListeners = pairNewMap();
1888
1907
  const tableCellIdsListeners = pairNewMap();
1908
+ const hasTableCellListeners = pairNewMap();
1889
1909
  const rowCountListeners = pairNewMap();
1890
1910
  const rowIdsListeners = pairNewMap();
1891
1911
  const sortedRowIdsListeners = pairNewMap();
1912
+ const hasRowListeners = pairNewMap();
1892
1913
  const rowListeners = pairNewMap();
1893
1914
  const cellIdsListeners = pairNewMap();
1915
+ const hasCellListeners = pairNewMap();
1894
1916
  const cellListeners = pairNewMap();
1895
1917
  const invalidCellListeners = pairNewMap();
1896
1918
  const invalidValueListeners = pairNewMap();
1919
+ const hasValuesListeners = pairNewMap();
1897
1920
  const valuesListeners = pairNewMap();
1898
1921
  const valueIdsListeners = pairNewMap();
1922
+ const hasValueListeners = pairNewMap();
1899
1923
  const valueListeners = pairNewMap();
1900
1924
  const startTransactionListeners = mapNew();
1901
1925
  const finishTransactionListeners = pairNewMap();
@@ -2290,29 +2314,45 @@ const createStore = () => {
2290
2314
  ),
2291
2315
  )
2292
2316
  : 0;
2293
- const callIdsListenersIfChanged = (listeners, changedIds, ids) => {
2317
+ const callIdsAndHasListenersIfChanged = (
2318
+ changedIds,
2319
+ idListeners,
2320
+ hasListeners,
2321
+ ids,
2322
+ ) => {
2294
2323
  if (!collIsEmpty(changedIds)) {
2295
- callListeners(listeners, ids, () => mapToObj(changedIds));
2324
+ callListeners(idListeners, ids, () => mapToObj(changedIds));
2325
+ mapForEach(changedIds, (changedId, changed) =>
2326
+ callListeners(hasListeners, [...(ids ?? []), changedId], changed == 1),
2327
+ );
2296
2328
  return 1;
2297
2329
  }
2298
2330
  };
2299
2331
  const callTabularListenersForChanges = (mutator) => {
2332
+ const hasTablesNow = hasTables();
2333
+ if (hasTablesNow != hadTables) {
2334
+ callListeners(hasTablesListeners[mutator], void 0, hasTablesNow);
2335
+ }
2300
2336
  const emptySortedRowIdListeners = collIsEmpty(
2301
2337
  sortedRowIdsListeners[mutator],
2302
2338
  );
2303
- const emptyIdListeners =
2339
+ const emptyIdAndHasListeners =
2304
2340
  collIsEmpty(cellIdsListeners[mutator]) &&
2341
+ collIsEmpty(hasCellListeners[mutator]) &&
2342
+ collIsEmpty(rowIdsListeners[mutator]) &&
2343
+ collIsEmpty(hasRowListeners[mutator]) &&
2305
2344
  collIsEmpty(tableCellIdsListeners[mutator]) &&
2345
+ collIsEmpty(hasTableCellListeners[mutator]) &&
2306
2346
  collIsEmpty(rowCountListeners[mutator]) &&
2307
- collIsEmpty(rowIdsListeners[mutator]) &&
2308
2347
  emptySortedRowIdListeners &&
2309
- collIsEmpty(tableIdsListeners[mutator]);
2348
+ collIsEmpty(tableIdsListeners[mutator]) &&
2349
+ collIsEmpty(hasTableListeners[mutator]);
2310
2350
  const emptyOtherListeners =
2311
2351
  collIsEmpty(cellListeners[mutator]) &&
2312
2352
  collIsEmpty(rowListeners[mutator]) &&
2313
2353
  collIsEmpty(tableListeners[mutator]) &&
2314
2354
  collIsEmpty(tablesListeners[mutator]);
2315
- if (!emptyIdListeners || !emptyOtherListeners) {
2355
+ if (!emptyIdAndHasListeners || !emptyOtherListeners) {
2316
2356
  const changes = mutator
2317
2357
  ? [
2318
2358
  mapClone(changedTableIds),
@@ -2330,12 +2370,17 @@ const createStore = () => {
2330
2370
  changedCellIds,
2331
2371
  changedCells,
2332
2372
  ];
2333
- if (!emptyIdListeners) {
2334
- callIdsListenersIfChanged(tableIdsListeners[mutator], changes[0]);
2373
+ if (!emptyIdAndHasListeners) {
2374
+ callIdsAndHasListenersIfChanged(
2375
+ changes[0],
2376
+ tableIdsListeners[mutator],
2377
+ hasTableListeners[mutator],
2378
+ );
2335
2379
  collForEach(changes[1], (changedIds, tableId) =>
2336
- callIdsListenersIfChanged(
2337
- tableCellIdsListeners[mutator],
2380
+ callIdsAndHasListenersIfChanged(
2338
2381
  changedIds,
2382
+ tableCellIdsListeners[mutator],
2383
+ hasTableCellListeners[mutator],
2339
2384
  [tableId],
2340
2385
  ),
2341
2386
  );
@@ -2351,9 +2396,12 @@ const createStore = () => {
2351
2396
  const calledSortableTableIds = setNew();
2352
2397
  collForEach(changes[3], (changedIds, tableId) => {
2353
2398
  if (
2354
- callIdsListenersIfChanged(rowIdsListeners[mutator], changedIds, [
2355
- tableId,
2356
- ]) &&
2399
+ callIdsAndHasListenersIfChanged(
2400
+ changedIds,
2401
+ rowIdsListeners[mutator],
2402
+ hasRowListeners[mutator],
2403
+ [tableId],
2404
+ ) &&
2357
2405
  !emptySortedRowIdListeners
2358
2406
  ) {
2359
2407
  callListeners(sortedRowIdsListeners[mutator], [tableId, null]);
@@ -2382,10 +2430,12 @@ const createStore = () => {
2382
2430
  }
2383
2431
  collForEach(changes[4], (rowCellIds, tableId) =>
2384
2432
  collForEach(rowCellIds, (changedIds, rowId) =>
2385
- callIdsListenersIfChanged(cellIdsListeners[mutator], changedIds, [
2386
- tableId,
2387
- rowId,
2388
- ]),
2433
+ callIdsAndHasListenersIfChanged(
2434
+ changedIds,
2435
+ cellIdsListeners[mutator],
2436
+ hasCellListeners[mutator],
2437
+ [tableId, rowId],
2438
+ ),
2389
2439
  ),
2390
2440
  );
2391
2441
  }
@@ -2425,17 +2475,27 @@ const createStore = () => {
2425
2475
  }
2426
2476
  }
2427
2477
  };
2428
- const callKeyedValuesListenersForChanges = (mutator) => {
2429
- const emptyIdListeners = collIsEmpty(valueIdsListeners[mutator]);
2478
+ const callValuesListenersForChanges = (mutator) => {
2479
+ const hasValuesNow = hasValues();
2480
+ if (hasValuesNow != hadValues) {
2481
+ callListeners(hasValuesListeners[mutator], void 0, hasValuesNow);
2482
+ }
2483
+ const emptyIdAndHasListeners =
2484
+ collIsEmpty(valueIdsListeners[mutator]) &&
2485
+ collIsEmpty(hasValueListeners[mutator]);
2430
2486
  const emptyOtherListeners =
2431
2487
  collIsEmpty(valueListeners[mutator]) &&
2432
2488
  collIsEmpty(valuesListeners[mutator]);
2433
- if (!emptyIdListeners || !emptyOtherListeners) {
2489
+ if (!emptyIdAndHasListeners || !emptyOtherListeners) {
2434
2490
  const changes = mutator
2435
2491
  ? [mapClone(changedValueIds), mapClone(changedValues)]
2436
2492
  : [changedValueIds, changedValues];
2437
- if (!emptyIdListeners) {
2438
- callIdsListenersIfChanged(valueIdsListeners[mutator], changes[0]);
2493
+ if (!emptyIdAndHasListeners) {
2494
+ callIdsAndHasListenersIfChanged(
2495
+ changes[0],
2496
+ valueIdsListeners[mutator],
2497
+ hasValueListeners[mutator],
2498
+ );
2439
2499
  }
2440
2500
  if (!emptyOtherListeners) {
2441
2501
  let valuesChanged;
@@ -2808,7 +2868,7 @@ const createStore = () => {
2808
2868
  }
2809
2869
  callInvalidValueListeners(1);
2810
2870
  if (valuesTouched) {
2811
- callKeyedValuesListenersForChanges(1);
2871
+ callValuesListenersForChanges(1);
2812
2872
  }
2813
2873
  if (doRollback?.(getTransactionChanges, getTransactionLog)) {
2814
2874
  collForEach(changedCells, (table, tableId) =>
@@ -2836,7 +2896,7 @@ const createStore = () => {
2836
2896
  }
2837
2897
  callInvalidValueListeners(0);
2838
2898
  if (valuesTouched) {
2839
- callKeyedValuesListenersForChanges(0);
2899
+ callValuesListenersForChanges(0);
2840
2900
  }
2841
2901
  callListeners(
2842
2902
  finishTransactionListeners[1],
@@ -2846,6 +2906,8 @@ const createStore = () => {
2846
2906
  );
2847
2907
  transactions = 0;
2848
2908
  cellsTouched = valuesTouched = false;
2909
+ hadTables = hasTables();
2910
+ hadValues = hasValues();
2849
2911
  arrayForEach(
2850
2912
  [
2851
2913
  changedTableIds,
@@ -2942,19 +3004,26 @@ const createStore = () => {
2942
3004
  return store;
2943
3005
  };
2944
3006
  const getListenerStats = () => ({
3007
+ hasTables: pairCollSize2(hasTablesListeners),
2945
3008
  tables: pairCollSize2(tablesListeners),
2946
3009
  tableIds: pairCollSize2(tableIdsListeners),
2947
- tableCellIds: pairCollSize2(tableCellIdsListeners),
3010
+ hasTable: pairCollSize2(hasTableListeners),
2948
3011
  table: pairCollSize2(tableListeners),
3012
+ tableCellIds: pairCollSize2(tableCellIdsListeners),
3013
+ hasTableCell: pairCollSize2(hasTableCellListeners, collSize3),
2949
3014
  rowCount: pairCollSize2(rowCountListeners),
2950
3015
  rowIds: pairCollSize2(rowIdsListeners),
2951
3016
  sortedRowIds: pairCollSize2(sortedRowIdsListeners),
3017
+ hasRow: pairCollSize2(hasRowListeners, collSize3),
2952
3018
  row: pairCollSize2(rowListeners, collSize3),
2953
3019
  cellIds: pairCollSize2(cellIdsListeners, collSize3),
3020
+ hasCell: pairCollSize2(hasCellListeners, collSize4),
2954
3021
  cell: pairCollSize2(cellListeners, collSize4),
2955
3022
  invalidCell: pairCollSize2(invalidCellListeners, collSize4),
3023
+ hasValues: pairCollSize2(hasValuesListeners),
2956
3024
  values: pairCollSize2(valuesListeners),
2957
3025
  valueIds: pairCollSize2(valueIdsListeners),
3026
+ hasValue: pairCollSize2(hasValueListeners),
2958
3027
  value: pairCollSize2(valueListeners),
2959
3028
  invalidValue: pairCollSize2(invalidValueListeners),
2960
3029
  transaction:
@@ -3039,14 +3108,39 @@ const createStore = () => {
3039
3108
  };
3040
3109
  objMap(
3041
3110
  {
3111
+ [HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],
3042
3112
  [TABLES]: [0, tablesListeners],
3043
3113
  [TABLE_IDS]: [0, tableIdsListeners],
3114
+ [HAS + TABLE]: [
3115
+ 1,
3116
+ hasTableListeners,
3117
+ [getTableIds],
3118
+ (ids) => [hasTable(...ids)],
3119
+ ],
3044
3120
  [TABLE]: [1, tableListeners, [getTableIds]],
3045
3121
  [TABLE + CELL_IDS]: [1, tableCellIdsListeners, [getTableIds]],
3122
+ [HAS + TABLE + CELL]: [
3123
+ 2,
3124
+ hasTableCellListeners,
3125
+ [getTableIds, getTableCellIds],
3126
+ (ids) => [hasTableCell(...ids)],
3127
+ ],
3046
3128
  [ROW_COUNT]: [1, rowCountListeners, [getTableIds]],
3047
3129
  [ROW_IDS]: [1, rowIdsListeners, [getTableIds]],
3130
+ [HAS + ROW]: [
3131
+ 2,
3132
+ hasRowListeners,
3133
+ [getTableIds, getRowIds],
3134
+ (ids) => [hasRow(...ids)],
3135
+ ],
3048
3136
  [ROW]: [2, rowListeners, [getTableIds, getRowIds]],
3049
3137
  [CELL_IDS]: [2, cellIdsListeners, [getTableIds, getRowIds]],
3138
+ [HAS + CELL]: [
3139
+ 3,
3140
+ hasCellListeners,
3141
+ [getTableIds, getRowIds, getCellIds],
3142
+ (ids) => [hasCell(...ids)],
3143
+ ],
3050
3144
  [CELL]: [
3051
3145
  3,
3052
3146
  cellListeners,
@@ -3054,8 +3148,15 @@ const createStore = () => {
3054
3148
  (ids) => pairNew(getCell(...ids)),
3055
3149
  ],
3056
3150
  InvalidCell: [3, invalidCellListeners],
3151
+ [HAS + VALUES]: [0, hasValuesListeners, [], () => [hasValues()]],
3057
3152
  [VALUES]: [0, valuesListeners],
3058
3153
  [VALUE_IDS]: [0, valueIdsListeners],
3154
+ [HAS + VALUE]: [
3155
+ 1,
3156
+ hasValueListeners,
3157
+ [getValueIds],
3158
+ (ids) => [hasValue(...ids)],
3159
+ ],
3059
3160
  [VALUE]: [
3060
3161
  1,
3061
3162
  valueListeners,
@@ -25,12 +25,14 @@ const VALUE_IDS = VALUE + IDS;
25
25
 
26
26
  const promise = Promise;
27
27
  const isFiniteNumber = isFinite;
28
- const isInstanceOf = (thing, cls) => thing instanceof cls;
29
28
  const isUndefined = (thing) => thing == void 0;
29
+ const ifNotUndefined = (value, then, otherwise) =>
30
+ isUndefined(value) ? otherwise?.() : then(value);
30
31
  const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
31
32
  const isString = (thing) => getTypeOf(thing) == STRING;
32
33
  const isArray = (thing) => Array.isArray(thing);
33
34
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
35
+ const size = (arrayOrString) => arrayOrString.length;
34
36
  const promiseAll = async (promises) => promise.all(promises);
35
37
 
36
38
  const getCellOrValueType = (cell) => {
@@ -45,7 +47,6 @@ const arraySort = (array, sorter) => array.sort(sorter);
45
47
  const arrayForEach = (array, cb) => array.forEach(cb);
46
48
  const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
47
49
  const arrayMap = (array, cb) => array.map(cb);
48
- const arrayLength = (array) => array.length;
49
50
  const arrayFilter = (array, cb) => array.filter(cb);
50
51
  const arrayPush = (array, ...values) => array.push(...values);
51
52
  const arrayPop = (array) => array.pop();
@@ -53,13 +54,21 @@ const arrayUnshift = (array, ...values) => array.unshift(...values);
53
54
  const arrayShift = (array) => array.shift();
54
55
 
55
56
  const object = Object;
57
+ const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
56
58
  const objIds = object.keys;
57
59
  const objFreeze = object.freeze;
58
60
  const isObject = (obj) =>
59
- isInstanceOf(obj, object) && obj.constructor == object;
61
+ !isUndefined(obj) &&
62
+ ifNotUndefined(
63
+ getPrototypeOf(obj),
64
+ (objPrototype) =>
65
+ objPrototype == object.prototype ||
66
+ isUndefined(getPrototypeOf(objPrototype)),
67
+ () => true,
68
+ );
60
69
  const objMap = (obj, cb) =>
61
70
  arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
62
- const objSize = (obj) => arrayLength(objIds(obj));
71
+ const objSize = (obj) => size(objIds(obj));
63
72
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
64
73
 
65
74
  const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
@@ -250,7 +259,7 @@ const mapUnique = (map, id, value, index = 1) => {
250
259
  };
251
260
  const formatJsDoc = (file) =>
252
261
  file.replace(JSDOC, (_, indent, text) => {
253
- const lineLength = 77 - length(indent);
262
+ const lineLength = 77 - size(indent);
254
263
  return `${indent}/**
255
264
  ${text.replace(
256
265
  new RegExp(`([^\\n]{1,${lineLength}})(\\s|$)`, 'g'),
@@ -258,7 +267,6 @@ ${text.replace(
258
267
  `,
259
268
  )}${indent} */`;
260
269
  });
261
- const length = (str) => str.length;
262
270
  const flat = (array) => array.flat(1e3);
263
271
  const camel = (str, firstCap = 0) =>
264
272
  arrayJoin(
@@ -2872,8 +2880,8 @@ const createTools = getCreateFunction((store) => {
2872
2880
  totalTables,
2873
2881
  totalRows,
2874
2882
  totalCells,
2875
- totalValues: arrayLength(store.getValueIds()),
2876
- jsonLength: length(store.getJson()),
2883
+ totalValues: size(store.getValueIds()),
2884
+ jsonLength: size(store.getJson()),
2877
2885
  ...(detail ? {detail: {tables}} : {}),
2878
2886
  };
2879
2887
  };
@@ -2909,7 +2917,7 @@ const createTools = getCreateFunction((store) => {
2909
2917
  collForEach(cellsMeta, ([type, , [, maxValue], count], cellId) => {
2910
2918
  tablesSchema[tableId][cellId] = {
2911
2919
  [TYPE]: type,
2912
- ...(count == arrayLength(rowIds) ? {[DEFAULT]: maxValue} : {}),
2920
+ ...(count == size(rowIds) ? {[DEFAULT]: maxValue} : {}),
2913
2921
  };
2914
2922
  });
2915
2923
  return 1;