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