tinybase 5.0.0-beta.0 → 5.0.0-beta.10

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 (493) hide show
  1. package/bin/cli.js +1 -1
  2. package/lib/checkpoints.js +1 -1
  3. package/lib/checkpoints.js.gz +0 -0
  4. package/lib/cjs/checkpoints.cjs +1 -1
  5. package/lib/cjs/checkpoints.cjs.gz +0 -0
  6. package/lib/cjs/indexes.cjs +1 -1
  7. package/lib/cjs/indexes.cjs.gz +0 -0
  8. package/lib/cjs/mergeable-store.cjs +1 -0
  9. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  10. package/lib/cjs/metrics.cjs +1 -1
  11. package/lib/cjs/metrics.cjs.gz +0 -0
  12. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  13. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  14. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  15. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  16. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  17. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  18. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  19. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  20. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  21. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  22. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  23. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  24. package/lib/cjs/persisters/persister-file.cjs +1 -1
  25. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  26. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  27. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  28. package/lib/cjs/persisters/persister-libsql.cjs +1 -0
  29. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  30. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  31. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  32. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  33. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  34. package/lib/cjs/persisters/persister-powersync.cjs +1 -0
  35. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  36. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  37. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  38. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  39. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  40. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  41. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  42. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  43. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  44. package/lib/cjs/persisters.cjs +1 -1
  45. package/lib/cjs/persisters.cjs.gz +0 -0
  46. package/lib/cjs/queries.cjs +1 -1
  47. package/lib/cjs/queries.cjs.gz +0 -0
  48. package/lib/cjs/relationships.cjs +1 -1
  49. package/lib/cjs/relationships.cjs.gz +0 -0
  50. package/lib/cjs/store.cjs +1 -1
  51. package/lib/cjs/store.cjs.gz +0 -0
  52. package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -0
  53. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  54. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -0
  55. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  56. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -0
  57. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  58. package/lib/cjs/synchronizers.cjs +1 -0
  59. package/lib/cjs/synchronizers.cjs.gz +0 -0
  60. package/lib/cjs/tinybase.cjs +1 -1
  61. package/lib/cjs/tinybase.cjs.gz +0 -0
  62. package/lib/cjs/tools.cjs +1 -1
  63. package/lib/cjs/tools.cjs.gz +0 -0
  64. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  65. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  66. package/lib/cjs/ui-react-dom.cjs +1 -1
  67. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  68. package/lib/cjs/ui-react.cjs +1 -1
  69. package/lib/cjs/ui-react.cjs.gz +0 -0
  70. package/lib/cjs-es6/checkpoints.cjs +1 -1
  71. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  72. package/lib/cjs-es6/indexes.cjs +1 -1
  73. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  74. package/lib/cjs-es6/mergeable-store.cjs +1 -0
  75. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  76. package/lib/cjs-es6/metrics.cjs +1 -1
  77. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  78. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  79. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  80. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  81. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  82. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  83. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  84. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  85. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  86. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  87. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  88. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  89. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  90. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  91. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  92. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  93. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  94. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
  95. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  96. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  97. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  98. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  99. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  100. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
  101. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  102. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  103. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  104. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  105. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  106. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  107. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  108. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  109. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  110. package/lib/cjs-es6/persisters.cjs +1 -1
  111. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  112. package/lib/cjs-es6/queries.cjs +1 -1
  113. package/lib/cjs-es6/queries.cjs.gz +0 -0
  114. package/lib/cjs-es6/relationships.cjs +1 -1
  115. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  116. package/lib/cjs-es6/store.cjs +1 -1
  117. package/lib/cjs-es6/store.cjs.gz +0 -0
  118. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -0
  119. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  120. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -0
  121. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  122. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -0
  123. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  124. package/lib/cjs-es6/synchronizers.cjs +1 -0
  125. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  126. package/lib/cjs-es6/tinybase.cjs +1 -1
  127. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  128. package/lib/cjs-es6/tools.cjs +1 -1
  129. package/lib/cjs-es6/tools.cjs.gz +0 -0
  130. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  131. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  132. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  133. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  134. package/lib/cjs-es6/ui-react.cjs +1 -1
  135. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  136. package/lib/debug/checkpoints.js +254 -235
  137. package/lib/debug/indexes.js +10 -6
  138. package/lib/debug/mergeable-store.js +2230 -0
  139. package/lib/debug/metrics.js +10 -6
  140. package/lib/debug/persisters/persister-automerge.js +113 -87
  141. package/lib/debug/persisters/persister-browser.js +95 -57
  142. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +175 -109
  143. package/lib/debug/persisters/persister-electric-sql.js +176 -109
  144. package/lib/debug/persisters/persister-expo-sqlite-next.js +176 -110
  145. package/lib/debug/persisters/persister-expo-sqlite.js +175 -109
  146. package/lib/debug/persisters/persister-file.js +94 -57
  147. package/lib/debug/persisters/persister-indexed-db.js +94 -57
  148. package/lib/debug/persisters/persister-libsql.js +913 -0
  149. package/lib/debug/persisters/persister-partykit-client.js +90 -59
  150. package/lib/debug/persisters/persister-partykit-server.js +19 -26
  151. package/lib/debug/persisters/persister-powersync.js +928 -0
  152. package/lib/debug/persisters/persister-remote.js +86 -53
  153. package/lib/debug/persisters/persister-sqlite-wasm.js +175 -109
  154. package/lib/debug/persisters/persister-sqlite3.js +175 -109
  155. package/lib/debug/persisters/persister-yjs.js +111 -84
  156. package/lib/debug/persisters.js +82 -50
  157. package/lib/debug/queries.js +18 -12
  158. package/lib/debug/relationships.js +10 -6
  159. package/lib/debug/store.js +150 -127
  160. package/lib/debug/synchronizers/synchronizer-local.js +559 -0
  161. package/lib/debug/synchronizers/synchronizer-ws-client.js +586 -0
  162. package/lib/debug/synchronizers/synchronizer-ws-server.js +96 -0
  163. package/lib/debug/synchronizers.js +519 -0
  164. package/lib/debug/tinybase.js +1281 -409
  165. package/lib/debug/tools.js +41 -64
  166. package/lib/debug/ui-react-dom.js +277 -213
  167. package/lib/debug/ui-react.js +213 -198
  168. package/lib/es6/checkpoints.js +1 -1
  169. package/lib/es6/checkpoints.js.gz +0 -0
  170. package/lib/es6/indexes.js +1 -1
  171. package/lib/es6/indexes.js.gz +0 -0
  172. package/lib/es6/mergeable-store.js +1 -0
  173. package/lib/es6/mergeable-store.js.gz +0 -0
  174. package/lib/es6/metrics.js +1 -1
  175. package/lib/es6/metrics.js.gz +0 -0
  176. package/lib/es6/persisters/persister-automerge.js +1 -1
  177. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  178. package/lib/es6/persisters/persister-browser.js +1 -1
  179. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  180. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  181. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  182. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  183. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  184. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  185. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  186. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  187. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  188. package/lib/es6/persisters/persister-file.js +1 -1
  189. package/lib/es6/persisters/persister-file.js.gz +0 -0
  190. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  191. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  192. package/lib/es6/persisters/persister-libsql.js +1 -0
  193. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  194. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  195. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  196. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  197. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  198. package/lib/es6/persisters/persister-powersync.js +1 -0
  199. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  200. package/lib/es6/persisters/persister-remote.js +1 -1
  201. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  202. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  203. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  204. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  205. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  206. package/lib/es6/persisters/persister-yjs.js +1 -1
  207. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  208. package/lib/es6/persisters.js +1 -1
  209. package/lib/es6/persisters.js.gz +0 -0
  210. package/lib/es6/queries.js +1 -1
  211. package/lib/es6/queries.js.gz +0 -0
  212. package/lib/es6/relationships.js +1 -1
  213. package/lib/es6/relationships.js.gz +0 -0
  214. package/lib/es6/store.js +1 -1
  215. package/lib/es6/store.js.gz +0 -0
  216. package/lib/es6/synchronizers/synchronizer-local.js +1 -0
  217. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  218. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -0
  219. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  220. package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -0
  221. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  222. package/lib/es6/synchronizers.js +1 -0
  223. package/lib/es6/synchronizers.js.gz +0 -0
  224. package/lib/es6/tinybase.js +1 -1
  225. package/lib/es6/tinybase.js.gz +0 -0
  226. package/lib/es6/tools.js +1 -1
  227. package/lib/es6/tools.js.gz +0 -0
  228. package/lib/es6/ui-react-dom-debug.js +1 -1
  229. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  230. package/lib/es6/ui-react-dom.js +1 -1
  231. package/lib/es6/ui-react-dom.js.gz +0 -0
  232. package/lib/es6/ui-react.js +1 -1
  233. package/lib/es6/ui-react.js.gz +0 -0
  234. package/lib/indexes.js +1 -1
  235. package/lib/indexes.js.gz +0 -0
  236. package/lib/mergeable-store.js +1 -0
  237. package/lib/mergeable-store.js.gz +0 -0
  238. package/lib/metrics.js +1 -1
  239. package/lib/metrics.js.gz +0 -0
  240. package/lib/persisters/persister-automerge.js +1 -1
  241. package/lib/persisters/persister-automerge.js.gz +0 -0
  242. package/lib/persisters/persister-browser.js +1 -1
  243. package/lib/persisters/persister-browser.js.gz +0 -0
  244. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  245. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  246. package/lib/persisters/persister-electric-sql.js +1 -1
  247. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  248. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  249. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  250. package/lib/persisters/persister-expo-sqlite.js +1 -1
  251. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  252. package/lib/persisters/persister-file.js +1 -1
  253. package/lib/persisters/persister-file.js.gz +0 -0
  254. package/lib/persisters/persister-indexed-db.js +1 -1
  255. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  256. package/lib/persisters/persister-libsql.js +1 -0
  257. package/lib/persisters/persister-libsql.js.gz +0 -0
  258. package/lib/persisters/persister-partykit-client.js +1 -1
  259. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  260. package/lib/persisters/persister-partykit-server.js +1 -1
  261. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  262. package/lib/persisters/persister-powersync.js +1 -0
  263. package/lib/persisters/persister-powersync.js.gz +0 -0
  264. package/lib/persisters/persister-remote.js +1 -1
  265. package/lib/persisters/persister-remote.js.gz +0 -0
  266. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  267. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  268. package/lib/persisters/persister-sqlite3.js +1 -1
  269. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  270. package/lib/persisters/persister-yjs.js +1 -1
  271. package/lib/persisters/persister-yjs.js.gz +0 -0
  272. package/lib/persisters.js +1 -1
  273. package/lib/persisters.js.gz +0 -0
  274. package/lib/queries.js +1 -1
  275. package/lib/queries.js.gz +0 -0
  276. package/lib/relationships.js +1 -1
  277. package/lib/relationships.js.gz +0 -0
  278. package/lib/store.js +1 -1
  279. package/lib/store.js.gz +0 -0
  280. package/lib/synchronizers/synchronizer-local.js +1 -0
  281. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  282. package/lib/synchronizers/synchronizer-ws-client.js +1 -0
  283. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  284. package/lib/synchronizers/synchronizer-ws-server.js +1 -0
  285. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  286. package/lib/synchronizers.js +1 -0
  287. package/lib/synchronizers.js.gz +0 -0
  288. package/lib/tinybase.js +1 -1
  289. package/lib/tinybase.js.gz +0 -0
  290. package/lib/tools.js +1 -1
  291. package/lib/tools.js.gz +0 -0
  292. package/lib/types/checkpoints.d.ts +2 -2
  293. package/lib/types/indexes.d.ts +2 -2
  294. package/lib/types/mergeable-store.d.ts +214 -0
  295. package/lib/types/metrics.d.ts +2 -2
  296. package/lib/types/persisters/persister-automerge.d.ts +11 -7
  297. package/lib/types/persisters/persister-browser.d.ts +13 -4
  298. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +4 -0
  299. package/lib/types/persisters/persister-electric-sql.d.ts +4 -0
  300. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +7 -3
  301. package/lib/types/persisters/persister-expo-sqlite.d.ts +4 -0
  302. package/lib/types/persisters/persister-file.d.ts +7 -2
  303. package/lib/types/persisters/persister-indexed-db.d.ts +4 -0
  304. package/lib/types/persisters/persister-libsql.d.ts +142 -0
  305. package/lib/types/persisters/persister-partykit-client.d.ts +4 -0
  306. package/lib/types/persisters/persister-partykit-server.d.ts +12 -8
  307. package/lib/types/persisters/persister-powersync.d.ts +157 -0
  308. package/lib/types/persisters/persister-remote.d.ts +4 -0
  309. package/lib/types/persisters/persister-sqlite-wasm.d.ts +4 -0
  310. package/lib/types/persisters/persister-sqlite3.d.ts +4 -0
  311. package/lib/types/persisters/persister-yjs.d.ts +6 -2
  312. package/lib/types/persisters.d.ts +125 -48
  313. package/lib/types/queries.d.ts +2 -2
  314. package/lib/types/relationships.d.ts +2 -2
  315. package/lib/types/store.d.ts +275 -187
  316. package/lib/types/synchronizers/synchronizer-local.d.ts +27 -0
  317. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +35 -0
  318. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +36 -0
  319. package/lib/types/synchronizers.d.ts +132 -0
  320. package/lib/types/tinybase.d.ts +10 -8
  321. package/lib/types/tools.d.ts +4 -4
  322. package/lib/types/ui-react.d.ts +235 -95
  323. package/lib/types/with-schemas/checkpoints.d.ts +2 -2
  324. package/lib/types/with-schemas/indexes.d.ts +2 -2
  325. package/lib/types/with-schemas/internal/queries.d.ts +4 -3
  326. package/lib/types/with-schemas/internal/store.d.ts +8 -3
  327. package/lib/types/with-schemas/mergeable-store.d.ts +492 -0
  328. package/lib/types/with-schemas/metrics.d.ts +2 -2
  329. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +12 -8
  330. package/lib/types/with-schemas/persisters/persister-browser.d.ts +17 -8
  331. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +5 -1
  332. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +5 -1
  333. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +8 -4
  334. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +5 -1
  335. package/lib/types/with-schemas/persisters/persister-file.d.ts +9 -4
  336. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +5 -1
  337. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
  338. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +5 -1
  339. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +15 -11
  340. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
  341. package/lib/types/with-schemas/persisters/persister-remote.d.ts +5 -1
  342. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +5 -1
  343. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +5 -1
  344. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +7 -3
  345. package/lib/types/with-schemas/persisters.d.ts +161 -101
  346. package/lib/types/with-schemas/queries.d.ts +3 -3
  347. package/lib/types/with-schemas/relationships.d.ts +2 -2
  348. package/lib/types/with-schemas/store.d.ts +483 -345
  349. package/lib/types/with-schemas/synchronizers/synchronizer-local.d.ts +29 -0
  350. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +41 -0
  351. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +36 -0
  352. package/lib/types/with-schemas/synchronizers.d.ts +146 -0
  353. package/lib/types/with-schemas/tinybase.d.ts +9 -8
  354. package/lib/types/with-schemas/tools.d.ts +4 -4
  355. package/lib/types/with-schemas/ui-react.d.ts +259 -102
  356. package/lib/ui-react-dom.js +1 -1
  357. package/lib/ui-react-dom.js.gz +0 -0
  358. package/lib/ui-react.js +1 -1
  359. package/lib/ui-react.js.gz +0 -0
  360. package/lib/umd/checkpoints.js +1 -1
  361. package/lib/umd/checkpoints.js.gz +0 -0
  362. package/lib/umd/indexes.js +1 -1
  363. package/lib/umd/indexes.js.gz +0 -0
  364. package/lib/umd/mergeable-store.js +1 -0
  365. package/lib/umd/mergeable-store.js.gz +0 -0
  366. package/lib/umd/metrics.js +1 -1
  367. package/lib/umd/metrics.js.gz +0 -0
  368. package/lib/umd/persisters/persister-automerge.js +1 -1
  369. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  370. package/lib/umd/persisters/persister-browser.js +1 -1
  371. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  372. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  373. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  374. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  375. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  376. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  377. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  378. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  379. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  380. package/lib/umd/persisters/persister-file.js +1 -1
  381. package/lib/umd/persisters/persister-file.js.gz +0 -0
  382. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  383. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  384. package/lib/umd/persisters/persister-libsql.js +1 -0
  385. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  386. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  387. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  388. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  389. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  390. package/lib/umd/persisters/persister-powersync.js +1 -0
  391. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  392. package/lib/umd/persisters/persister-remote.js +1 -1
  393. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  394. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  395. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  396. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  397. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  398. package/lib/umd/persisters/persister-yjs.js +1 -1
  399. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  400. package/lib/umd/persisters.js +1 -1
  401. package/lib/umd/persisters.js.gz +0 -0
  402. package/lib/umd/queries.js +1 -1
  403. package/lib/umd/queries.js.gz +0 -0
  404. package/lib/umd/relationships.js +1 -1
  405. package/lib/umd/relationships.js.gz +0 -0
  406. package/lib/umd/store.js +1 -1
  407. package/lib/umd/store.js.gz +0 -0
  408. package/lib/umd/synchronizers/synchronizer-local.js +1 -0
  409. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  410. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -0
  411. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  412. package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -0
  413. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  414. package/lib/umd/synchronizers.js +1 -0
  415. package/lib/umd/synchronizers.js.gz +0 -0
  416. package/lib/umd/tinybase.js +1 -1
  417. package/lib/umd/tinybase.js.gz +0 -0
  418. package/lib/umd/tools.js +1 -1
  419. package/lib/umd/tools.js.gz +0 -0
  420. package/lib/umd/ui-react-dom-debug.js +1 -1
  421. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  422. package/lib/umd/ui-react-dom.js +1 -1
  423. package/lib/umd/ui-react-dom.js.gz +0 -0
  424. package/lib/umd/ui-react.js +1 -1
  425. package/lib/umd/ui-react.js.gz +0 -0
  426. package/lib/umd-es6/checkpoints.js +1 -1
  427. package/lib/umd-es6/checkpoints.js.gz +0 -0
  428. package/lib/umd-es6/indexes.js +1 -1
  429. package/lib/umd-es6/indexes.js.gz +0 -0
  430. package/lib/umd-es6/mergeable-store.js +1 -0
  431. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  432. package/lib/umd-es6/metrics.js +1 -1
  433. package/lib/umd-es6/metrics.js.gz +0 -0
  434. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  435. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  436. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  437. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  438. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  439. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  440. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  441. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  442. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  443. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  444. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  445. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  446. package/lib/umd-es6/persisters/persister-file.js +1 -1
  447. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  448. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  449. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  450. package/lib/umd-es6/persisters/persister-libsql.js +1 -0
  451. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  452. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  453. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  454. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  455. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  456. package/lib/umd-es6/persisters/persister-powersync.js +1 -0
  457. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  458. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  459. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  460. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  461. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  462. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  463. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  464. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  465. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  466. package/lib/umd-es6/persisters.js +1 -1
  467. package/lib/umd-es6/persisters.js.gz +0 -0
  468. package/lib/umd-es6/queries.js +1 -1
  469. package/lib/umd-es6/queries.js.gz +0 -0
  470. package/lib/umd-es6/relationships.js +1 -1
  471. package/lib/umd-es6/relationships.js.gz +0 -0
  472. package/lib/umd-es6/store.js +1 -1
  473. package/lib/umd-es6/store.js.gz +0 -0
  474. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -0
  475. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  476. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -0
  477. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  478. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -0
  479. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  480. package/lib/umd-es6/synchronizers.js +1 -0
  481. package/lib/umd-es6/synchronizers.js.gz +0 -0
  482. package/lib/umd-es6/tinybase.js +1 -1
  483. package/lib/umd-es6/tinybase.js.gz +0 -0
  484. package/lib/umd-es6/tools.js +1 -1
  485. package/lib/umd-es6/tools.js.gz +0 -0
  486. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  487. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  488. package/lib/umd-es6/ui-react-dom.js +1 -1
  489. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  490. package/lib/umd-es6/ui-react.js +1 -1
  491. package/lib/umd-es6/ui-react.js.gz +0 -0
  492. package/package.json +68 -48
  493. package/readme.md +2 -2
@@ -8,6 +8,7 @@ const isUndefined = (thing) => thing == void 0;
8
8
  const ifNotUndefined = (value, then, otherwise) =>
9
9
  isUndefined(value) ? otherwise?.() : then(value);
10
10
  const isString = (thing) => getTypeOf(thing) == STRING;
11
+ const isArray = (thing) => Array.isArray(thing);
11
12
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
12
13
  const size = (arrayOrString) => arrayOrString.length;
13
14
 
@@ -16,8 +17,6 @@ const arrayShift = (array) => array.shift();
16
17
 
17
18
  const object = Object;
18
19
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
19
- const objIds = object.keys;
20
- const objFreeze = object.freeze;
21
20
  const isObject = (obj) =>
22
21
  !isUndefined(obj) &&
23
22
  ifNotUndefined(
@@ -25,12 +24,15 @@ const isObject = (obj) =>
25
24
  (objPrototype) =>
26
25
  objPrototype == object.prototype ||
27
26
  isUndefined(getPrototypeOf(objPrototype)),
27
+ /* istanbul ignore next */
28
28
  () => true,
29
29
  );
30
+ const objIds = object.keys;
31
+ const objFreeze = object.freeze;
30
32
  const objSize = (obj) => size(objIds(obj));
31
33
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
32
34
 
33
- const jsonString = (obj) =>
35
+ const jsonStringWithMap = (obj) =>
34
36
  JSON.stringify(obj, (_key, value) =>
35
37
  isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
36
38
  );
@@ -40,7 +42,7 @@ const SET_CHANGES = 's';
40
42
  const STORE_PATH = '/store';
41
43
  const PUT = 'PUT';
42
44
  const construct = (prefix, type, payload) =>
43
- prefix + type + (isString(payload) ? payload : jsonString(payload));
45
+ prefix + type + (isString(payload) ? payload : jsonStringWithMap(payload));
44
46
  const deconstruct = (prefix, message, stringified) => {
45
47
  const prefixSize = size(prefix);
46
48
  return strStartsWith(message, prefix)
@@ -58,15 +60,35 @@ const mapNew = (entries) => new Map(entries);
58
60
  const mapGet = (map, key) => map?.get(key);
59
61
  const mapSet = (map, key, value) =>
60
62
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
61
- const mapEnsure = (map, key, getDefaultValue) => {
63
+ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
62
64
  if (!collHas(map, key)) {
63
65
  mapSet(map, key, getDefaultValue());
66
+ } else {
67
+ hadExistingValue?.(mapGet(map, key));
64
68
  }
65
69
  return mapGet(map, key);
66
70
  };
67
71
 
68
72
  const scheduleRunning = mapNew();
69
73
  const scheduleActions = mapNew();
74
+ const getStoreFunctions = (supportsMergeableStore, store) =>
75
+ !supportsMergeableStore || isUndefined(store.getMergeableContent)
76
+ ? [
77
+ 0,
78
+ store.getContent,
79
+ store.getTransactionChanges,
80
+ ([changedTables, changedValues]) =>
81
+ !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
82
+ store.setContent,
83
+ ]
84
+ : [
85
+ 1,
86
+ store.getMergeableContent,
87
+ store.getTransactionMergeableChanges,
88
+ ([[changedTables], [changedValues]]) =>
89
+ !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
90
+ store.setDefaultContent,
91
+ ];
70
92
  const createCustomPersister = (
71
93
  store,
72
94
  getPersisted,
@@ -74,18 +96,25 @@ const createCustomPersister = (
74
96
  addPersisterListener,
75
97
  delPersisterListener,
76
98
  onIgnoredError,
77
- [getThing, thing] = [],
99
+ supportsMergeableStore,
100
+ extra = {},
78
101
  scheduleId = [],
79
102
  ) => {
80
- let listenerId;
81
103
  let loadSave = 0;
82
104
  let loads = 0;
83
105
  let saves = 0;
84
- let listening = 0;
85
106
  let action;
86
- let listeningHandle;
107
+ let autoLoadHandle;
108
+ let autoSaveListenerId;
87
109
  mapEnsure(scheduleRunning, scheduleId, () => 0);
88
110
  mapEnsure(scheduleActions, scheduleId, () => []);
111
+ const [
112
+ isMergeableStore,
113
+ getContent,
114
+ getChanges,
115
+ hasChanges,
116
+ setDefaultContent,
117
+ ] = getStoreFunctions(supportsMergeableStore, store);
89
118
  const run = async () => {
90
119
  /* istanbul ignore else */
91
120
  if (!mapGet(scheduleRunning, scheduleId)) {
@@ -117,48 +146,54 @@ const createCustomPersister = (
117
146
  }
118
147
  return persister;
119
148
  };
149
+ const setContentOrChanges = (contentOrChanges) => {
150
+ (isMergeableStore && isArray(contentOrChanges?.[0])
151
+ ? contentOrChanges?.[2] === 1
152
+ ? store.applyMergeableChanges
153
+ : store.setMergeableContent
154
+ : contentOrChanges?.[2] === 1
155
+ ? store.applyChanges
156
+ : store.setContent)(contentOrChanges);
157
+ };
120
158
  const persister = {
121
- load: async (initialTables, initialValues) =>
159
+ load: async (initialContent) =>
122
160
  await loadLock(async () => {
123
161
  try {
124
- store.setContent(await getPersisted());
125
- } catch {
126
- store.setContent([initialTables, initialValues]);
162
+ setContentOrChanges(await getPersisted());
163
+ } catch (error) {
164
+ onIgnoredError?.(error);
165
+ if (initialContent) {
166
+ setDefaultContent(initialContent);
167
+ }
127
168
  }
128
169
  }),
129
- startAutoLoad: async (initialTables = {}, initialValues = {}) => {
130
- persister.stopAutoLoad();
131
- await persister.load(initialTables, initialValues);
132
- listening = 1;
133
- listeningHandle = addPersisterListener(
134
- async (getContent, getTransactionChanges) => {
135
- if (getTransactionChanges) {
136
- const transactionChanges = getTransactionChanges();
137
- await loadLock(async () =>
138
- store.setTransactionChanges(transactionChanges),
139
- );
140
- } else {
141
- await loadLock(async () => {
142
- try {
143
- store.setContent(getContent?.() ?? (await getPersisted()));
144
- } catch (error) {
145
- onIgnoredError?.(error);
146
- }
147
- });
148
- }
170
+ startAutoLoad: async (initialContent) => {
171
+ await persister.stopAutoLoad().load(initialContent);
172
+ autoLoadHandle = addPersisterListener(
173
+ async (getContent2, getChanges2) => {
174
+ const changes = getChanges2?.();
175
+ await loadLock(async () => {
176
+ try {
177
+ setContentOrChanges(
178
+ changes ?? getContent2?.() ?? (await getPersisted()),
179
+ );
180
+ } catch (error) {
181
+ onIgnoredError?.(error);
182
+ }
183
+ });
149
184
  },
150
185
  );
151
186
  return persister;
152
187
  },
153
188
  stopAutoLoad: () => {
154
- if (listening) {
155
- delPersisterListener(listeningHandle);
156
- listeningHandle = void 0;
157
- listening = 0;
189
+ if (autoLoadHandle) {
190
+ delPersisterListener(autoLoadHandle);
191
+ autoLoadHandle = void 0;
158
192
  }
159
193
  return persister;
160
194
  },
161
- save: async (getTransactionChanges) => {
195
+ isAutoLoading: () => !isUndefined(autoLoadHandle),
196
+ save: async (getChanges2) => {
162
197
  /* istanbul ignore else */
163
198
  if (loadSave != 1) {
164
199
  loadSave = 2;
@@ -167,7 +202,7 @@ const createCustomPersister = (
167
202
  }
168
203
  await persister.schedule(async () => {
169
204
  try {
170
- await setPersisted(store.getContent, getTransactionChanges);
205
+ await setPersisted(getContent, getChanges2);
171
206
  } catch (error) {
172
207
  /* istanbul ignore next */
173
208
  onIgnoredError?.(error);
@@ -179,21 +214,20 @@ const createCustomPersister = (
179
214
  },
180
215
  startAutoSave: async () => {
181
216
  await persister.stopAutoSave().save();
182
- listenerId = store.addDidFinishTransactionListener(
183
- (_store, getTransactionChanges) => {
184
- const [tableChanges, valueChanges] = getTransactionChanges();
185
- if (!objIsEmpty(tableChanges) || !objIsEmpty(valueChanges)) {
186
- persister.save(() => [tableChanges, valueChanges]);
187
- }
188
- },
189
- );
217
+ autoSaveListenerId = store.addDidFinishTransactionListener(() => {
218
+ const changes = getChanges();
219
+ if (hasChanges(changes)) {
220
+ persister.save(() => changes);
221
+ }
222
+ });
190
223
  return persister;
191
224
  },
192
225
  stopAutoSave: () => {
193
- ifNotUndefined(listenerId, store.delListener);
194
- listenerId = void 0;
226
+ ifNotUndefined(autoSaveListenerId, store.delListener);
227
+ autoSaveListenerId = void 0;
195
228
  return persister;
196
229
  },
230
+ isAutoSaving: () => !isUndefined(autoSaveListenerId),
197
231
  schedule: async (...actions) => {
198
232
  arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
199
233
  await run();
@@ -202,10 +236,8 @@ const createCustomPersister = (
202
236
  getStore: () => store,
203
237
  destroy: () => persister.stopAutoLoad().stopAutoSave(),
204
238
  getStats: () => ({loads, saves}),
239
+ ...extra,
205
240
  };
206
- if (getThing) {
207
- persister[getThing] = () => thing;
208
- }
209
241
  return objFreeze(persister);
210
242
  };
211
243
 
@@ -238,17 +270,15 @@ const createPartyKitPersister = (
238
270
  const getOrSetStore = async (content) =>
239
271
  await (
240
272
  await fetch(storeUrl, {
241
- ...(content ? {method: PUT, body: jsonString(content)} : {}),
273
+ ...(content ? {method: PUT, body: jsonStringWithMap(content)} : {}),
242
274
  mode: 'cors',
243
275
  cache: 'no-store',
244
276
  })
245
277
  ).json();
246
278
  const getPersisted = async () => await getOrSetStore();
247
- const setPersisted = async (getContent, getTransactionChanges) => {
248
- if (getTransactionChanges) {
249
- connection.send(
250
- construct(messagePrefix, SET_CHANGES, getTransactionChanges()),
251
- );
279
+ const setPersisted = async (getContent, getChanges) => {
280
+ if (getChanges) {
281
+ connection.send(construct(messagePrefix, SET_CHANGES, getChanges()));
252
282
  } else {
253
283
  await getOrSetStore(getContent());
254
284
  }
@@ -276,7 +306,8 @@ const createPartyKitPersister = (
276
306
  addPersisterListener,
277
307
  delPersisterListener,
278
308
  onIgnoredError,
279
- ['getConnection', connection],
309
+ false,
310
+ {getConnection: () => connection},
280
311
  );
281
312
  };
282
313
 
@@ -22,11 +22,11 @@ const arrayPush = (array, ...values) => array.push(...values);
22
22
  const arrayUnshift = (array, ...values) => array.unshift(...values);
23
23
 
24
24
  const object = Object;
25
+ const objEntries = object.entries;
25
26
  const objNew = (entries = []) => object.fromEntries(entries);
26
- const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
27
- const objHas = (obj, id) => !isUndefined(objGet(obj, id));
28
- const objMap = (obj, cb) =>
29
- arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
27
+ const objHas = (obj, id) => id in obj;
28
+ const objToArray = (obj, cb) =>
29
+ arrayMap(objEntries(obj), ([id, value]) => cb(value, id));
30
30
  const objEnsure = (obj, id, getDefaultValue) => {
31
31
  if (!objHas(obj, id)) {
32
32
  obj[id] = getDefaultValue();
@@ -34,7 +34,7 @@ const objEnsure = (obj, id, getDefaultValue) => {
34
34
  return obj[id];
35
35
  };
36
36
 
37
- const jsonString = (obj) =>
37
+ const jsonStringWithMap = (obj) =>
38
38
  JSON.stringify(obj, (_key, value) =>
39
39
  isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
40
40
  );
@@ -44,7 +44,7 @@ const SET_CHANGES = 's';
44
44
  const STORE_PATH = '/store';
45
45
  const PUT = 'PUT';
46
46
  const construct = (prefix, type, payload) =>
47
- prefix + type + (isString(payload) ? payload : jsonString(payload));
47
+ prefix + type + (isString(payload) ? payload : jsonStringWithMap(payload));
48
48
  const deconstruct = (prefix, message, stringified) => {
49
49
  const prefixSize = size(prefix);
50
50
  return strStartsWith(message, prefix)
@@ -85,21 +85,12 @@ const loadStoreFromStorage = async (storage, storagePrefix = EMPTY_STRING) => {
85
85
  );
86
86
  return [tables, values];
87
87
  };
88
- const broadcastTransactionChanges = async (
89
- server,
90
- transactionChanges,
91
- without,
92
- ) =>
88
+ const broadcastChanges = async (server, changes, without) =>
93
89
  server.party.broadcast(
94
- construct(server.config.messagePrefix, SET_CHANGES, transactionChanges),
90
+ construct(server.config.messagePrefix, SET_CHANGES, changes),
95
91
  without,
96
92
  );
97
- const saveStore = async (
98
- that,
99
- transactionChanges,
100
- initialSave,
101
- requestOrConnection,
102
- ) => {
93
+ const saveStore = async (that, changes, initialSave, requestOrConnection) => {
103
94
  const storage = that.party.storage;
104
95
  const storagePrefix = that.config.storagePrefix;
105
96
  const keysToSet = {
@@ -108,7 +99,7 @@ const saveStore = async (
108
99
  const keysToDel = [];
109
100
  const keyPrefixesToDel = [];
110
101
  await promiseAll(
111
- objMap(transactionChanges[0], async (table, tableId) =>
102
+ objToArray(changes[0], async (table, tableId) =>
112
103
  isUndefined(table)
113
104
  ? !initialSave &&
114
105
  (await that.canDelTable(tableId, requestOrConnection)) &&
@@ -118,7 +109,7 @@ const saveStore = async (
118
109
  )
119
110
  : (await that.canSetTable(tableId, initialSave, requestOrConnection)) &&
120
111
  (await promiseAll(
121
- objMap(table, async (row, rowId) =>
112
+ objToArray(table, async (row, rowId) =>
122
113
  isUndefined(row)
123
114
  ? !initialSave &&
124
115
  (await that.canDelRow(tableId, rowId, requestOrConnection)) &&
@@ -133,7 +124,7 @@ const saveStore = async (
133
124
  requestOrConnection,
134
125
  )) &&
135
126
  (await promiseAll(
136
- objMap(row, async (cell, cellId) => {
127
+ objToArray(row, async (cell, cellId) => {
137
128
  const ids = [tableId, rowId, cellId];
138
129
  const key = constructStorageKey(storagePrefix, T, ...ids);
139
130
  isUndefined(cell)
@@ -157,7 +148,7 @@ const saveStore = async (
157
148
  ),
158
149
  );
159
150
  await promiseAll(
160
- objMap(transactionChanges[1], async (value, valueId) => {
151
+ objToArray(changes[1], async (value, valueId) => {
161
152
  const key = storagePrefix + V + valueId;
162
153
  isUndefined(value)
163
154
  ? !initialSave &&
@@ -186,7 +177,7 @@ const saveStore = async (
186
177
  await storage.put(keysToSet);
187
178
  };
188
179
  const constructStorageKey = (storagePrefix, type, ...ids) =>
189
- construct(storagePrefix, type, slice(jsonString(ids), 1, -1));
180
+ construct(storagePrefix, type, slice(jsonStringWithMap(ids), 1, -1));
190
181
  const createResponse = async (that, status, body = null) =>
191
182
  new Response(body, {
192
183
  status,
@@ -220,7 +211,9 @@ class TinyBasePartyKitServer {
220
211
  this,
221
212
  200,
222
213
  hasExistingStore
223
- ? jsonString(await loadStoreFromStorage(storage, storagePrefix))
214
+ ? jsonStringWithMap(
215
+ await loadStoreFromStorage(storage, storagePrefix),
216
+ )
224
217
  : EMPTY_STRING,
225
218
  );
226
219
  }
@@ -238,7 +231,7 @@ class TinyBasePartyKitServer {
238
231
  (await hasStoreInStorage(this.party.storage, storagePrefix))
239
232
  ) {
240
233
  await saveStore(this, payload, false, connection);
241
- broadcastTransactionChanges(this, payload, [connection.id]);
234
+ broadcastChanges(this, payload, [connection.id]);
242
235
  }
243
236
  },
244
237
  );
@@ -285,7 +278,7 @@ class TinyBasePartyKitServer {
285
278
 
286
279
  export {
287
280
  TinyBasePartyKitServer,
288
- broadcastTransactionChanges,
281
+ broadcastChanges,
289
282
  hasStoreInStorage,
290
283
  loadStoreFromStorage,
291
284
  };