tinybase 5.0.0-beta.1 → 5.0.0-beta.11

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 +167 -131
  140. package/lib/debug/persisters/persister-browser.js +155 -102
  141. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +225 -152
  142. package/lib/debug/persisters/persister-electric-sql.js +225 -152
  143. package/lib/debug/persisters/persister-expo-sqlite-next.js +225 -152
  144. package/lib/debug/persisters/persister-expo-sqlite.js +225 -152
  145. package/lib/debug/persisters/persister-file.js +149 -101
  146. package/lib/debug/persisters/persister-indexed-db.js +146 -100
  147. package/lib/debug/persisters/persister-libsql.js +924 -0
  148. package/lib/debug/persisters/persister-partykit-client.js +146 -104
  149. package/lib/debug/persisters/persister-partykit-server.js +17 -25
  150. package/lib/debug/persisters/persister-powersync.js +939 -0
  151. package/lib/debug/persisters/persister-remote.js +141 -97
  152. package/lib/debug/persisters/persister-sqlite-wasm.js +225 -152
  153. package/lib/debug/persisters/persister-sqlite3.js +225 -152
  154. package/lib/debug/persisters/persister-yjs.js +164 -127
  155. package/lib/debug/persisters.js +137 -94
  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 +571 -0
  160. package/lib/debug/synchronizers/synchronizer-ws-client.js +598 -0
  161. package/lib/debug/synchronizers/synchronizer-ws-server.js +241 -0
  162. package/lib/debug/synchronizers.js +531 -0
  163. package/lib/debug/tinybase.js +1080 -215
  164. package/lib/debug/tools.js +22 -21
  165. package/lib/debug/ui-react-dom.js +336 -258
  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 +162 -59
  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 +57 -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 +193 -121
  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 +57 -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,38 @@ 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 = (supportedStoreType = 1, store) =>
75
+ supportedStoreType > 1 && 'getMergeableContent' in store
76
+ ? [
77
+ 1,
78
+ store.getMergeableContent,
79
+ store.getTransactionMergeableChanges,
80
+ ([[changedTables], [changedValues]]) =>
81
+ !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
82
+ store.setDefaultContent,
83
+ ]
84
+ : supportedStoreType != 2
85
+ ? [
86
+ 0,
87
+ store.getContent,
88
+ store.getTransactionChanges,
89
+ ([changedTables, changedValues]) =>
90
+ !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
91
+ store.setContent,
92
+ ]
93
+ : /* istanbul ignore next */
94
+ 0;
71
95
  const createCustomPersister = (
72
96
  store,
73
97
  getPersisted,
@@ -75,18 +99,25 @@ const createCustomPersister = (
75
99
  addPersisterListener,
76
100
  delPersisterListener,
77
101
  onIgnoredError,
78
- [getThing, thing] = [],
102
+ supportedStoreType,
103
+ extra = {},
79
104
  scheduleId = [],
80
105
  ) => {
81
- let listenerId;
82
106
  let loadSave = 0;
83
107
  let loads = 0;
84
108
  let saves = 0;
85
- let listening = 0;
86
109
  let action;
87
- let listeningHandle;
110
+ let autoLoadHandle;
111
+ let autoSaveListenerId;
88
112
  mapEnsure(scheduleRunning, scheduleId, () => 0);
89
113
  mapEnsure(scheduleActions, scheduleId, () => []);
114
+ const [
115
+ isMergeableStore,
116
+ getContent,
117
+ getChanges,
118
+ hasChanges,
119
+ setDefaultContent,
120
+ ] = getStoreFunctions(supportedStoreType, store);
90
121
  const run = async () => {
91
122
  /* istanbul ignore else */
92
123
  if (!mapGet(scheduleRunning, scheduleId)) {
@@ -104,109 +135,121 @@ const createCustomPersister = (
104
135
  mapSet(scheduleRunning, scheduleId, 0);
105
136
  }
106
137
  };
107
- const loadLock = async (actions) => {
138
+ const setContentOrChanges = (contentOrChanges) => {
139
+ (isMergeableStore && isArray(contentOrChanges?.[0])
140
+ ? contentOrChanges?.[2] === 1
141
+ ? store.applyMergeableChanges
142
+ : store.setMergeableContent
143
+ : contentOrChanges?.[2] === 1
144
+ ? store.applyChanges
145
+ : store.setContent)(contentOrChanges);
146
+ };
147
+ const load = async (initialContent) => {
108
148
  /* istanbul ignore else */
109
149
  if (loadSave != 2) {
110
150
  loadSave = 1;
111
151
  {
112
152
  loads++;
113
153
  }
114
- await persister.schedule(async () => {
115
- await actions();
154
+ await schedule(async () => {
155
+ try {
156
+ setContentOrChanges(await getPersisted());
157
+ } catch (error) {
158
+ onIgnoredError?.(error);
159
+ if (initialContent) {
160
+ setDefaultContent(initialContent);
161
+ }
162
+ }
116
163
  loadSave = 0;
117
164
  });
118
165
  }
119
166
  return persister;
120
167
  };
121
- const persister = {
122
- load: async (initialTables, initialValues) =>
123
- await loadLock(async () => {
124
- try {
125
- store.setContent(await getPersisted());
126
- } catch {
127
- store.setContent([initialTables, initialValues]);
128
- }
129
- }),
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
- });
168
+ const startAutoLoad = async (initialContent) => {
169
+ await stopAutoLoad().load(initialContent);
170
+ autoLoadHandle = addPersisterListener(async (content, changes) => {
171
+ if (changes || content) {
172
+ /* istanbul ignore else */
173
+ if (loadSave != 2) {
174
+ loadSave = 1;
175
+ {
176
+ loads++;
149
177
  }
150
- },
151
- );
152
- return persister;
153
- },
154
- stopAutoLoad: () => {
155
- if (listening) {
156
- delPersisterListener(listeningHandle);
157
- listeningHandle = void 0;
158
- listening = 0;
178
+ setContentOrChanges(changes ?? content);
179
+ loadSave = 0;
180
+ }
181
+ } else {
182
+ await load();
183
+ }
184
+ });
185
+ return persister;
186
+ };
187
+ const stopAutoLoad = () => {
188
+ if (autoLoadHandle) {
189
+ delPersisterListener(autoLoadHandle);
190
+ autoLoadHandle = void 0;
191
+ }
192
+ return persister;
193
+ };
194
+ const isAutoLoading = () => !isUndefined(autoLoadHandle);
195
+ const save = async (changes) => {
196
+ /* istanbul ignore else */
197
+ if (loadSave != 1) {
198
+ loadSave = 2;
199
+ {
200
+ saves++;
159
201
  }
160
- return persister;
161
- },
162
- save: async (getTransactionChanges) => {
163
- /* istanbul ignore else */
164
- if (loadSave != 1) {
165
- loadSave = 2;
166
- {
167
- saves++;
202
+ await schedule(async () => {
203
+ try {
204
+ await setPersisted(getContent, changes);
205
+ } catch (error) {
206
+ /* istanbul ignore next */
207
+ onIgnoredError?.(error);
168
208
  }
169
- await persister.schedule(async () => {
170
- try {
171
- await setPersisted(store.getContent, getTransactionChanges);
172
- } catch (error) {
173
- /* istanbul ignore next */
174
- onIgnoredError?.(error);
175
- }
176
- loadSave = 0;
177
- });
209
+ loadSave = 0;
210
+ });
211
+ }
212
+ return persister;
213
+ };
214
+ const startAutoSave = async () => {
215
+ await stopAutoSave().save();
216
+ autoSaveListenerId = store.addDidFinishTransactionListener(() => {
217
+ const changes = getChanges();
218
+ if (hasChanges(changes)) {
219
+ save(changes);
178
220
  }
179
- return persister;
180
- },
181
- startAutoSave: async () => {
182
- 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
- );
191
- return persister;
192
- },
193
- stopAutoSave: () => {
194
- ifNotUndefined(listenerId, store.delListener);
195
- listenerId = void 0;
196
- return persister;
197
- },
198
- schedule: async (...actions) => {
199
- arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
200
- await run();
201
- return persister;
202
- },
203
- getStore: () => store,
204
- destroy: () => persister.stopAutoLoad().stopAutoSave(),
205
- getStats: () => ({loads, saves}),
221
+ });
222
+ return persister;
223
+ };
224
+ const stopAutoSave = () => {
225
+ ifNotUndefined(autoSaveListenerId, store.delListener);
226
+ autoSaveListenerId = void 0;
227
+ return persister;
228
+ };
229
+ const isAutoSaving = () => !isUndefined(autoSaveListenerId);
230
+ const schedule = async (...actions) => {
231
+ arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
232
+ await run();
233
+ return persister;
234
+ };
235
+ const getStore = () => store;
236
+ const destroy = () => stopAutoLoad().stopAutoSave();
237
+ const getStats = () => ({loads, saves});
238
+ const persister = {
239
+ load,
240
+ startAutoLoad,
241
+ stopAutoLoad,
242
+ isAutoLoading,
243
+ save,
244
+ startAutoSave,
245
+ stopAutoSave,
246
+ isAutoSaving,
247
+ schedule,
248
+ getStore,
249
+ destroy,
250
+ getStats,
251
+ ...extra,
206
252
  };
207
- if (getThing) {
208
- persister[getThing] = () => thing;
209
- }
210
253
  return objFreeze(persister);
211
254
  };
212
255
 
@@ -239,17 +282,15 @@ const createPartyKitPersister = (
239
282
  const getOrSetStore = async (content) =>
240
283
  await (
241
284
  await fetch(storeUrl, {
242
- ...(content ? {method: PUT, body: jsonString(content)} : {}),
285
+ ...(content ? {method: PUT, body: jsonStringWithMap(content)} : {}),
243
286
  mode: 'cors',
244
287
  cache: 'no-store',
245
288
  })
246
289
  ).json();
247
290
  const getPersisted = async () => await getOrSetStore();
248
- const setPersisted = async (getContent, getTransactionChanges) => {
249
- if (getTransactionChanges) {
250
- connection.send(
251
- construct(messagePrefix, SET_CHANGES, getTransactionChanges()),
252
- );
291
+ const setPersisted = async (getContent, changes) => {
292
+ if (changes) {
293
+ connection.send(construct(messagePrefix, SET_CHANGES, changes));
253
294
  } else {
254
295
  await getOrSetStore(getContent());
255
296
  }
@@ -260,7 +301,7 @@ const createPartyKitPersister = (
260
301
  deconstruct(messagePrefix, event.data, 1),
261
302
  ([type, payload]) => {
262
303
  if (type == SET_CHANGES) {
263
- listener(void 0, () => payload);
304
+ listener(void 0, payload);
264
305
  }
265
306
  },
266
307
  );
@@ -277,7 +318,8 @@ const createPartyKitPersister = (
277
318
  addPersisterListener,
278
319
  delPersisterListener,
279
320
  onIgnoredError,
280
- ['getConnection', connection],
321
+ 1,
322
+ {getConnection: () => connection},
281
323
  );
282
324
  };
283
325
 
@@ -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
  };