tinybase 5.0.0-beta.1 → 5.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/lib/cjs/mergeable-store.cjs +1 -0
  2. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  4. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  6. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  8. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  10. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  12. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  14. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-file.cjs +1 -1
  16. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  18. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  20. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  22. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  24. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  26. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  28. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  30. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  31. package/lib/cjs/persisters.cjs +1 -1
  32. package/lib/cjs/persisters.cjs.gz +0 -0
  33. package/lib/cjs/store.cjs +1 -1
  34. package/lib/cjs/store.cjs.gz +0 -0
  35. package/lib/cjs/tinybase.cjs +1 -1
  36. package/lib/cjs/tinybase.cjs.gz +0 -0
  37. package/lib/cjs/tools.cjs +1 -1
  38. package/lib/cjs/tools.cjs.gz +0 -0
  39. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  40. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  41. package/lib/cjs/ui-react-dom.cjs +1 -1
  42. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  43. package/lib/cjs-es6/mergeable-store.cjs +1 -0
  44. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  45. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  46. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  47. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  48. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  49. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  50. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  51. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  52. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  53. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  54. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  55. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  56. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  57. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  58. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  59. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  60. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  61. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  62. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  63. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  64. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  65. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  66. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  70. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  72. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  73. package/lib/cjs-es6/persisters.cjs +1 -1
  74. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  75. package/lib/cjs-es6/store.cjs +1 -1
  76. package/lib/cjs-es6/store.cjs.gz +0 -0
  77. package/lib/cjs-es6/tinybase.cjs +1 -1
  78. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  79. package/lib/cjs-es6/tools.cjs +1 -1
  80. package/lib/cjs-es6/tools.cjs.gz +0 -0
  81. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  82. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  83. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  84. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  85. package/lib/debug/mergeable-store.js +1863 -0
  86. package/lib/debug/persisters/persister-automerge.js +54 -53
  87. package/lib/debug/persisters/persister-browser.js +28 -18
  88. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +80 -57
  89. package/lib/debug/persisters/persister-electric-sql.js +80 -57
  90. package/lib/debug/persisters/persister-expo-sqlite-next.js +80 -57
  91. package/lib/debug/persisters/persister-expo-sqlite.js +80 -57
  92. package/lib/debug/persisters/persister-file.js +27 -18
  93. package/lib/debug/persisters/persister-indexed-db.js +34 -23
  94. package/lib/debug/persisters/persister-partykit-client.js +26 -23
  95. package/lib/debug/persisters/persister-partykit-server.js +11 -21
  96. package/lib/debug/persisters/persister-remote.js +28 -18
  97. package/lib/debug/persisters/persister-sqlite-wasm.js +80 -57
  98. package/lib/debug/persisters/persister-sqlite3.js +80 -57
  99. package/lib/debug/persisters/persister-yjs.js +50 -48
  100. package/lib/debug/persisters.js +27 -18
  101. package/lib/debug/queries.js +2 -2
  102. package/lib/debug/store.js +63 -71
  103. package/lib/debug/tinybase.js +354 -90
  104. package/lib/debug/tools.js +13 -15
  105. package/lib/debug/ui-react-dom.js +115 -119
  106. package/lib/es6/mergeable-store.js +1 -0
  107. package/lib/es6/mergeable-store.js.gz +0 -0
  108. package/lib/es6/persisters/persister-automerge.js +1 -1
  109. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  110. package/lib/es6/persisters/persister-browser.js +1 -1
  111. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  112. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  113. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  114. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  115. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  116. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  117. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  118. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  119. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  120. package/lib/es6/persisters/persister-file.js +1 -1
  121. package/lib/es6/persisters/persister-file.js.gz +0 -0
  122. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  123. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  124. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  125. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  126. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  127. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  128. package/lib/es6/persisters/persister-remote.js +1 -1
  129. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  130. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  131. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  132. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  133. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  134. package/lib/es6/persisters/persister-yjs.js +1 -1
  135. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  136. package/lib/es6/persisters.js +1 -1
  137. package/lib/es6/persisters.js.gz +0 -0
  138. package/lib/es6/store.js +1 -1
  139. package/lib/es6/store.js.gz +0 -0
  140. package/lib/es6/tinybase.js +1 -1
  141. package/lib/es6/tinybase.js.gz +0 -0
  142. package/lib/es6/tools.js +1 -1
  143. package/lib/es6/tools.js.gz +0 -0
  144. package/lib/es6/ui-react-dom-debug.js +1 -1
  145. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  146. package/lib/es6/ui-react-dom.js +1 -1
  147. package/lib/es6/ui-react-dom.js.gz +0 -0
  148. package/lib/mergeable-store.js +1 -0
  149. package/lib/mergeable-store.js.gz +0 -0
  150. package/lib/persisters/persister-automerge.js +1 -1
  151. package/lib/persisters/persister-automerge.js.gz +0 -0
  152. package/lib/persisters/persister-browser.js +1 -1
  153. package/lib/persisters/persister-browser.js.gz +0 -0
  154. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  155. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  156. package/lib/persisters/persister-electric-sql.js +1 -1
  157. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  158. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  159. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  160. package/lib/persisters/persister-expo-sqlite.js +1 -1
  161. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  162. package/lib/persisters/persister-file.js +1 -1
  163. package/lib/persisters/persister-file.js.gz +0 -0
  164. package/lib/persisters/persister-indexed-db.js +1 -1
  165. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  166. package/lib/persisters/persister-partykit-client.js +1 -1
  167. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  168. package/lib/persisters/persister-partykit-server.js +1 -1
  169. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  170. package/lib/persisters/persister-remote.js +1 -1
  171. package/lib/persisters/persister-remote.js.gz +0 -0
  172. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  173. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  174. package/lib/persisters/persister-sqlite3.js +1 -1
  175. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  176. package/lib/persisters/persister-yjs.js +1 -1
  177. package/lib/persisters/persister-yjs.js.gz +0 -0
  178. package/lib/persisters.js +1 -1
  179. package/lib/persisters.js.gz +0 -0
  180. package/lib/store.js +1 -1
  181. package/lib/store.js.gz +0 -0
  182. package/lib/tinybase.js +1 -1
  183. package/lib/tinybase.js.gz +0 -0
  184. package/lib/tools.js +1 -1
  185. package/lib/tools.js.gz +0 -0
  186. package/lib/types/mergeable-store.d.ts +79 -0
  187. package/lib/types/persisters/persister-automerge.d.ts +8 -7
  188. package/lib/types/persisters/persister-browser.d.ts +2 -0
  189. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +1 -0
  190. package/lib/types/persisters/persister-electric-sql.d.ts +1 -0
  191. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +1 -0
  192. package/lib/types/persisters/persister-expo-sqlite.d.ts +1 -0
  193. package/lib/types/persisters/persister-file.d.ts +1 -0
  194. package/lib/types/persisters/persister-indexed-db.d.ts +1 -0
  195. package/lib/types/persisters/persister-partykit-client.d.ts +1 -0
  196. package/lib/types/persisters/persister-partykit-server.d.ts +12 -8
  197. package/lib/types/persisters/persister-remote.d.ts +1 -0
  198. package/lib/types/persisters/persister-sqlite-wasm.d.ts +1 -0
  199. package/lib/types/persisters/persister-sqlite3.d.ts +1 -0
  200. package/lib/types/persisters/persister-yjs.d.ts +1 -0
  201. package/lib/types/persisters.d.ts +50 -30
  202. package/lib/types/store.d.ts +241 -186
  203. package/lib/types/tinybase.d.ts +1 -0
  204. package/lib/types/tools.d.ts +2 -2
  205. package/lib/types/ui-react.d.ts +1 -0
  206. package/lib/types/with-schemas/internal/store.d.ts +4 -0
  207. package/lib/types/with-schemas/mergeable-store.d.ts +112 -0
  208. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +8 -7
  209. package/lib/types/with-schemas/persisters/persister-browser.d.ts +2 -0
  210. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +1 -0
  211. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +1 -0
  212. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +1 -0
  213. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +1 -0
  214. package/lib/types/with-schemas/persisters/persister-file.d.ts +1 -0
  215. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +1 -0
  216. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +1 -0
  217. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +15 -11
  218. package/lib/types/with-schemas/persisters/persister-remote.d.ts +1 -0
  219. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +1 -0
  220. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +1 -0
  221. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +1 -0
  222. package/lib/types/with-schemas/persisters.d.ts +81 -45
  223. package/lib/types/with-schemas/store.d.ts +364 -273
  224. package/lib/types/with-schemas/tinybase.d.ts +1 -0
  225. package/lib/types/with-schemas/tools.d.ts +2 -2
  226. package/lib/ui-react-dom.js +1 -1
  227. package/lib/ui-react-dom.js.gz +0 -0
  228. package/lib/umd/mergeable-store.js +1 -0
  229. package/lib/umd/mergeable-store.js.gz +0 -0
  230. package/lib/umd/persisters/persister-automerge.js +1 -1
  231. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  232. package/lib/umd/persisters/persister-browser.js +1 -1
  233. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  234. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  235. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  236. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  237. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  238. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  239. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  240. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  241. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  242. package/lib/umd/persisters/persister-file.js +1 -1
  243. package/lib/umd/persisters/persister-file.js.gz +0 -0
  244. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  245. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  246. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  247. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  248. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  249. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  250. package/lib/umd/persisters/persister-remote.js +1 -1
  251. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  252. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  253. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  254. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  255. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  256. package/lib/umd/persisters/persister-yjs.js +1 -1
  257. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  258. package/lib/umd/persisters.js +1 -1
  259. package/lib/umd/persisters.js.gz +0 -0
  260. package/lib/umd/store.js +1 -1
  261. package/lib/umd/store.js.gz +0 -0
  262. package/lib/umd/tinybase.js +1 -1
  263. package/lib/umd/tinybase.js.gz +0 -0
  264. package/lib/umd/tools.js +1 -1
  265. package/lib/umd/tools.js.gz +0 -0
  266. package/lib/umd/ui-react-dom-debug.js +1 -1
  267. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  268. package/lib/umd/ui-react-dom.js +1 -1
  269. package/lib/umd/ui-react-dom.js.gz +0 -0
  270. package/lib/umd-es6/mergeable-store.js +1 -0
  271. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  272. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  273. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  274. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  275. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  276. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  277. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  278. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  279. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  280. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  281. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  282. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  283. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  284. package/lib/umd-es6/persisters/persister-file.js +1 -1
  285. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  286. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  287. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  288. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  289. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  290. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  291. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  292. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  293. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  294. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  295. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  296. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  297. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  298. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  299. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  300. package/lib/umd-es6/persisters.js +1 -1
  301. package/lib/umd-es6/persisters.js.gz +0 -0
  302. package/lib/umd-es6/store.js +1 -1
  303. package/lib/umd-es6/store.js.gz +0 -0
  304. package/lib/umd-es6/tinybase.js +1 -1
  305. package/lib/umd-es6/tinybase.js.gz +0 -0
  306. package/lib/umd-es6/tools.js +1 -1
  307. package/lib/umd-es6/tools.js.gz +0 -0
  308. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  309. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  310. package/lib/umd-es6/ui-react-dom.js +1 -1
  311. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  312. package/package.json +39 -35
  313. package/readme.md +2 -2
@@ -63,13 +63,12 @@ const isObject = (obj) =>
63
63
  /* istanbul ignore next */
64
64
  () => true,
65
65
  );
66
- const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
67
- const objHas = (obj, id) => !isUndefined(objGet(obj, id));
66
+ const objHas = (obj, id) => id in obj;
68
67
  const objDel = (obj, id) => {
69
68
  delete obj[id];
70
69
  return obj;
71
70
  };
72
- const objMap = (obj, cb) =>
71
+ const objToArray = (obj, cb) =>
73
72
  arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
74
73
  const objSize = (obj) => size(objIds(obj));
75
74
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
@@ -103,7 +102,7 @@ const mapEnsure = (map, key, getDefaultValue) => {
103
102
  return mapGet(map, key);
104
103
  };
105
104
  const mapMatch = (map, obj, set, del = mapSet) => {
106
- objMap(obj, (value, id) => set(map, id, value));
105
+ objToArray(obj, (value, id) => set(map, id, value));
107
106
  mapForEach(map, (id) => (objHas(obj, id) ? 0 : del(map, id)));
108
107
  return map;
109
108
  };
@@ -281,7 +280,7 @@ const validate = (obj, validateChild, onInvalidObj) => {
281
280
  onInvalidObj?.();
282
281
  return false;
283
282
  }
284
- objMap(obj, (child, id2) => {
283
+ objToArray(obj, (child, id2) => {
285
284
  if (!validateChild(child, id2)) {
286
285
  objDel(obj, id2);
287
286
  }
@@ -302,6 +301,7 @@ const createStore = () => {
302
301
  let hadTables = false;
303
302
  let hadValues = false;
304
303
  let transactions = 0;
304
+ let postTransactionListener;
305
305
  const changedTableIds = mapNew();
306
306
  const changedTableCellIds = mapNew();
307
307
  const changedRowCount = mapNew();
@@ -943,44 +943,6 @@ const createStore = () => {
943
943
  transaction(() => actions(...arrayMap(args, id)));
944
944
  return store;
945
945
  };
946
- const getTransactionChanges = () => [
947
- mapToObj(
948
- changedCells,
949
- (table, tableId) =>
950
- mapGet(changedTableIds, tableId) === -1
951
- ? null
952
- : mapToObj(
953
- table,
954
- (row, rowId) =>
955
- mapGet(mapGet(changedRowIds, tableId), rowId) === -1
956
- ? null
957
- : mapToObj(
958
- row,
959
- ([, newCell]) => newCell ?? null,
960
- (_, changedCell) => pairIsEqual(changedCell),
961
- ),
962
- objIsEmpty,
963
- ),
964
- objIsEmpty,
965
- ),
966
- mapToObj(
967
- changedValues,
968
- ([, newValue]) => newValue ?? null,
969
- (_, changedValue) => pairIsEqual(changedValue),
970
- ),
971
- ];
972
- const getTransactionLog = () => ({
973
- cellsTouched,
974
- valuesTouched,
975
- changedCells: mapToObj3(changedCells, pairClone, pairIsEqual),
976
- invalidCells: mapToObj3(invalidCells),
977
- changedValues: mapToObj(changedValues, pairClone, pairIsEqual),
978
- invalidValues: mapToObj(invalidValues),
979
- changedTableIds: mapToObj(changedTableIds),
980
- changedRowIds: mapToObj2(changedRowIds),
981
- changedCellIds: mapToObj3(changedCellIds),
982
- changedValueIds: mapToObj(changedValueIds),
983
- });
984
946
  const getContent = () => [getTables(), getValues()];
985
947
  const getTables = () => mapToObj3(tablesMap);
986
948
  const getTableIds = () => mapKeys(tablesMap);
@@ -1073,7 +1035,7 @@ const createStore = () => {
1073
1035
  (tableId2, rowId2) => {
1074
1036
  if (validateRow(tableId2, rowId2, partialRow, 1)) {
1075
1037
  const table = getOrCreateTable(tableId2);
1076
- objMap(partialRow, (cell, cellId) =>
1038
+ objToArray(partialRow, (cell, cellId) =>
1077
1039
  setCellIntoDefaultRow(tableId2, table, rowId2, cellId, cell),
1078
1040
  );
1079
1041
  }
@@ -1111,7 +1073,7 @@ const createStore = () => {
1111
1073
  const setPartialValues = (partialValues) =>
1112
1074
  fluentTransaction(() =>
1113
1075
  validateValues(partialValues, 1)
1114
- ? objMap(partialValues, (value, valueId) =>
1076
+ ? objToArray(partialValues, (value, valueId) =>
1115
1077
  setValidValue(valueId, value),
1116
1078
  )
1117
1079
  : 0,
@@ -1128,20 +1090,20 @@ const createStore = () => {
1128
1090
  ),
1129
1091
  valueId,
1130
1092
  );
1131
- const setTransactionChanges = (transactionChanges) =>
1093
+ const applyChanges = (changes) =>
1132
1094
  fluentTransaction(() => {
1133
- objMap(transactionChanges[0], (table, tableId) =>
1095
+ objToArray(changes[0], (table, tableId) =>
1134
1096
  isUndefined(table)
1135
1097
  ? delTable(tableId)
1136
- : objMap(table, (row, rowId) =>
1098
+ : objToArray(table, (row, rowId) =>
1137
1099
  isUndefined(row)
1138
1100
  ? delRow(tableId, rowId)
1139
- : objMap(row, (cell, cellId) =>
1101
+ : objToArray(row, (cell, cellId) =>
1140
1102
  setOrDelCell(store, tableId, rowId, cellId, cell),
1141
1103
  ),
1142
1104
  ),
1143
1105
  );
1144
- objMap(transactionChanges[1], (value, valueId) =>
1106
+ objToArray(changes[1], (value, valueId) =>
1145
1107
  setOrDelValue(store, valueId, value),
1146
1108
  );
1147
1109
  });
@@ -1268,15 +1230,48 @@ const createStore = () => {
1268
1230
  transactions++;
1269
1231
  }
1270
1232
  if (transactions == 1) {
1271
- callListeners(
1272
- startTransactionListeners,
1273
- void 0,
1274
- getTransactionChanges,
1275
- getTransactionLog,
1276
- );
1233
+ callListeners(startTransactionListeners, void 0);
1277
1234
  }
1278
1235
  return store;
1279
1236
  };
1237
+ const getTransactionChanges = () => [
1238
+ mapToObj(
1239
+ changedCells,
1240
+ (table, tableId) =>
1241
+ mapGet(changedTableIds, tableId) === -1
1242
+ ? void 0
1243
+ : mapToObj(
1244
+ table,
1245
+ (row, rowId) =>
1246
+ mapGet(mapGet(changedRowIds, tableId), rowId) === -1
1247
+ ? void 0
1248
+ : mapToObj(
1249
+ row,
1250
+ ([, newCell]) => newCell,
1251
+ (_, changedCell) => pairIsEqual(changedCell),
1252
+ ),
1253
+ objIsEmpty,
1254
+ ),
1255
+ objIsEmpty,
1256
+ ),
1257
+ mapToObj(
1258
+ changedValues,
1259
+ ([, newValue]) => newValue,
1260
+ (_, changedValue) => pairIsEqual(changedValue),
1261
+ ),
1262
+ ];
1263
+ const getTransactionLog = () => [
1264
+ cellsTouched,
1265
+ valuesTouched,
1266
+ mapToObj3(changedCells, pairClone, pairIsEqual),
1267
+ mapToObj3(invalidCells),
1268
+ mapToObj(changedValues, pairClone, pairIsEqual),
1269
+ mapToObj(invalidValues),
1270
+ mapToObj(changedTableIds),
1271
+ mapToObj2(changedRowIds),
1272
+ mapToObj3(changedCellIds),
1273
+ mapToObj(changedValueIds),
1274
+ ];
1280
1275
  const finishTransaction = (doRollback) => {
1281
1276
  if (transactions > 0) {
1282
1277
  transactions--;
@@ -1292,7 +1287,7 @@ const createStore = () => {
1292
1287
  if (valuesTouched) {
1293
1288
  callValuesListenersForChanges(1);
1294
1289
  }
1295
- if (doRollback?.(getTransactionChanges, getTransactionLog)) {
1290
+ if (doRollback?.(store)) {
1296
1291
  collForEach(changedCells, (table, tableId) =>
1297
1292
  collForEach(table, (row, rowId) =>
1298
1293
  collForEach(row, ([oldCell], cellId) =>
@@ -1305,12 +1300,7 @@ const createStore = () => {
1305
1300
  );
1306
1301
  cellsTouched = valuesTouched = false;
1307
1302
  }
1308
- callListeners(
1309
- finishTransactionListeners[0],
1310
- void 0,
1311
- getTransactionChanges,
1312
- getTransactionLog,
1313
- );
1303
+ callListeners(finishTransactionListeners[0], void 0);
1314
1304
  transactions = -1;
1315
1305
  callInvalidCellListeners(0);
1316
1306
  if (cellsTouched) {
@@ -1320,12 +1310,8 @@ const createStore = () => {
1320
1310
  if (valuesTouched) {
1321
1311
  callValuesListenersForChanges(0);
1322
1312
  }
1323
- callListeners(
1324
- finishTransactionListeners[1],
1325
- void 0,
1326
- getTransactionChanges,
1327
- getTransactionLog,
1328
- );
1313
+ postTransactionListener?.(store);
1314
+ callListeners(finishTransactionListeners[1], void 0);
1329
1315
  transactions = 0;
1330
1316
  cellsTouched = valuesTouched = false;
1331
1317
  hadTables = hasTables();
@@ -1452,6 +1438,9 @@ const createStore = () => {
1452
1438
  collSize2(startTransactionListeners) +
1453
1439
  pairCollSize2(finishTransactionListeners),
1454
1440
  });
1441
+ const addPostTransactionListener = (listener) => {
1442
+ postTransactionListener = listener;
1443
+ };
1455
1444
  const store = {
1456
1445
  getContent,
1457
1446
  getTables,
@@ -1492,7 +1481,7 @@ const createStore = () => {
1492
1481
  setValues,
1493
1482
  setPartialValues,
1494
1483
  setValue,
1495
- setTransactionChanges,
1484
+ applyChanges,
1496
1485
  setTablesJson,
1497
1486
  setValuesJson,
1498
1487
  setJson,
@@ -1510,6 +1499,8 @@ const createStore = () => {
1510
1499
  delSchema,
1511
1500
  transaction,
1512
1501
  startTransaction,
1502
+ getTransactionChanges,
1503
+ getTransactionLog,
1513
1504
  finishTransaction,
1514
1505
  forEachTable,
1515
1506
  forEachTableCell,
@@ -1527,8 +1518,9 @@ const createStore = () => {
1527
1518
  createStore,
1528
1519
  addListener,
1529
1520
  callListeners,
1521
+ addPostTransactionListener,
1530
1522
  };
1531
- objMap(
1523
+ objToArray(
1532
1524
  {
1533
1525
  [HAS + TABLES]: [0, hasTablesListeners, [], () => [hasTables()]],
1534
1526
  [TABLES]: [0, tablesListeners],