tinybase 5.0.0-beta.8 → 5.0.0-beta.9

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 (324) hide show
  1. package/lib/cjs/mergeable-store.cjs +1 -1
  2. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  4. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  6. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  8. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  10. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  12. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  14. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-file.cjs +1 -1
  16. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  18. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-libsql.cjs +1 -1
  20. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  22. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-powersync.cjs +1 -1
  24. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  26. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  28. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  30. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  32. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  33. package/lib/cjs/persisters.cjs +1 -1
  34. package/lib/cjs/persisters.cjs.gz +0 -0
  35. package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -1
  36. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  37. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -1
  38. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  39. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs +1 -1
  40. package/lib/cjs/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  41. package/lib/cjs/synchronizers.cjs +1 -1
  42. package/lib/cjs/synchronizers.cjs.gz +0 -0
  43. package/lib/cjs/tinybase.cjs +1 -1
  44. package/lib/cjs/tinybase.cjs.gz +0 -0
  45. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  46. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  47. package/lib/cjs/ui-react.cjs +1 -1
  48. package/lib/cjs/ui-react.cjs.gz +0 -0
  49. package/lib/cjs-es6/mergeable-store.cjs +1 -1
  50. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  51. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  52. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  53. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  54. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  55. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  56. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  57. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  58. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  59. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  60. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  61. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  62. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  63. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  64. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  65. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  66. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  70. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -1
  72. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  73. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  74. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  75. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  76. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters.cjs +1 -1
  82. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  83. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -1
  84. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  85. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -1
  86. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  87. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs +1 -1
  88. package/lib/cjs-es6/synchronizers/synchronizer-ws-server.cjs.gz +0 -0
  89. package/lib/cjs-es6/synchronizers.cjs +1 -1
  90. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  91. package/lib/cjs-es6/tinybase.cjs +1 -1
  92. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  93. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  94. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  95. package/lib/cjs-es6/ui-react.cjs +1 -1
  96. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  97. package/lib/debug/mergeable-store.js +6 -0
  98. package/lib/debug/persisters/persister-automerge.js +15 -6
  99. package/lib/debug/persisters/persister-browser.js +15 -6
  100. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +15 -6
  101. package/lib/debug/persisters/persister-electric-sql.js +15 -6
  102. package/lib/debug/persisters/persister-expo-sqlite-next.js +15 -6
  103. package/lib/debug/persisters/persister-expo-sqlite.js +15 -6
  104. package/lib/debug/persisters/persister-file.js +15 -6
  105. package/lib/debug/persisters/persister-indexed-db.js +15 -6
  106. package/lib/debug/persisters/persister-libsql.js +15 -6
  107. package/lib/debug/persisters/persister-partykit-client.js +15 -6
  108. package/lib/debug/persisters/persister-powersync.js +15 -6
  109. package/lib/debug/persisters/persister-remote.js +15 -6
  110. package/lib/debug/persisters/persister-sqlite-wasm.js +15 -6
  111. package/lib/debug/persisters/persister-sqlite3.js +15 -6
  112. package/lib/debug/persisters/persister-yjs.js +15 -6
  113. package/lib/debug/persisters.js +15 -6
  114. package/lib/debug/synchronizers/synchronizer-local.js +20 -12
  115. package/lib/debug/synchronizers/synchronizer-ws-client.js +22 -13
  116. package/lib/debug/synchronizers/synchronizer-ws-server.js +65 -26
  117. package/lib/debug/synchronizers.js +20 -12
  118. package/lib/debug/tinybase.js +26 -12
  119. package/lib/debug/ui-react-dom.js +22 -10
  120. package/lib/debug/ui-react.js +54 -5
  121. package/lib/es6/mergeable-store.js +1 -1
  122. package/lib/es6/mergeable-store.js.gz +0 -0
  123. package/lib/es6/persisters/persister-automerge.js +1 -1
  124. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  125. package/lib/es6/persisters/persister-browser.js +1 -1
  126. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  127. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  128. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  129. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  130. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  131. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  132. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  133. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  134. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  135. package/lib/es6/persisters/persister-file.js +1 -1
  136. package/lib/es6/persisters/persister-file.js.gz +0 -0
  137. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  138. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  139. package/lib/es6/persisters/persister-libsql.js +1 -1
  140. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  141. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  142. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  143. package/lib/es6/persisters/persister-powersync.js +1 -1
  144. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  145. package/lib/es6/persisters/persister-remote.js +1 -1
  146. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  147. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  148. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  149. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  150. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  151. package/lib/es6/persisters/persister-yjs.js +1 -1
  152. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  153. package/lib/es6/persisters.js +1 -1
  154. package/lib/es6/persisters.js.gz +0 -0
  155. package/lib/es6/synchronizers/synchronizer-local.js +1 -1
  156. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  157. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -1
  158. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  159. package/lib/es6/synchronizers/synchronizer-ws-server.js +1 -1
  160. package/lib/es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  161. package/lib/es6/synchronizers.js +1 -1
  162. package/lib/es6/synchronizers.js.gz +0 -0
  163. package/lib/es6/tinybase.js +1 -1
  164. package/lib/es6/tinybase.js.gz +0 -0
  165. package/lib/es6/ui-react-dom-debug.js +1 -1
  166. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  167. package/lib/es6/ui-react.js +1 -1
  168. package/lib/es6/ui-react.js.gz +0 -0
  169. package/lib/mergeable-store.js +1 -1
  170. package/lib/mergeable-store.js.gz +0 -0
  171. package/lib/persisters/persister-automerge.js +1 -1
  172. package/lib/persisters/persister-automerge.js.gz +0 -0
  173. package/lib/persisters/persister-browser.js +1 -1
  174. package/lib/persisters/persister-browser.js.gz +0 -0
  175. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  176. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  177. package/lib/persisters/persister-electric-sql.js +1 -1
  178. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  179. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  180. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  181. package/lib/persisters/persister-expo-sqlite.js +1 -1
  182. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  183. package/lib/persisters/persister-file.js +1 -1
  184. package/lib/persisters/persister-file.js.gz +0 -0
  185. package/lib/persisters/persister-indexed-db.js +1 -1
  186. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  187. package/lib/persisters/persister-libsql.js +1 -1
  188. package/lib/persisters/persister-libsql.js.gz +0 -0
  189. package/lib/persisters/persister-partykit-client.js +1 -1
  190. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  191. package/lib/persisters/persister-powersync.js +1 -1
  192. package/lib/persisters/persister-powersync.js.gz +0 -0
  193. package/lib/persisters/persister-remote.js +1 -1
  194. package/lib/persisters/persister-remote.js.gz +0 -0
  195. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  196. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  197. package/lib/persisters/persister-sqlite3.js +1 -1
  198. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  199. package/lib/persisters/persister-yjs.js +1 -1
  200. package/lib/persisters/persister-yjs.js.gz +0 -0
  201. package/lib/persisters.js +1 -1
  202. package/lib/persisters.js.gz +0 -0
  203. package/lib/synchronizers/synchronizer-local.js +1 -1
  204. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  205. package/lib/synchronizers/synchronizer-ws-client.js +1 -1
  206. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  207. package/lib/synchronizers/synchronizer-ws-server.js +1 -1
  208. package/lib/synchronizers/synchronizer-ws-server.js.gz +0 -0
  209. package/lib/synchronizers.js +1 -1
  210. package/lib/synchronizers.js.gz +0 -0
  211. package/lib/tinybase.js +1 -1
  212. package/lib/tinybase.js.gz +0 -0
  213. package/lib/types/mergeable-store.d.ts +7 -1
  214. package/lib/types/persisters.d.ts +10 -14
  215. package/lib/types/synchronizers/synchronizer-ws-client.d.ts +9 -4
  216. package/lib/types/synchronizers/synchronizer-ws-server.d.ts +12 -0
  217. package/lib/types/synchronizers.d.ts +3 -3
  218. package/lib/types/ui-react.d.ts +151 -1
  219. package/lib/types/with-schemas/mergeable-store.d.ts +7 -0
  220. package/lib/types/with-schemas/persisters.d.ts +11 -23
  221. package/lib/types/with-schemas/synchronizers/synchronizer-ws-client.d.ts +14 -5
  222. package/lib/types/with-schemas/synchronizers/synchronizer-ws-server.d.ts +12 -0
  223. package/lib/types/with-schemas/synchronizers.d.ts +4 -7
  224. package/lib/types/with-schemas/ui-react.d.ts +169 -1
  225. package/lib/ui-react.js +1 -1
  226. package/lib/ui-react.js.gz +0 -0
  227. package/lib/umd/mergeable-store.js +1 -1
  228. package/lib/umd/mergeable-store.js.gz +0 -0
  229. package/lib/umd/persisters/persister-automerge.js +1 -1
  230. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  231. package/lib/umd/persisters/persister-browser.js +1 -1
  232. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  233. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  234. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  235. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  236. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  237. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  238. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  239. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  240. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  241. package/lib/umd/persisters/persister-file.js +1 -1
  242. package/lib/umd/persisters/persister-file.js.gz +0 -0
  243. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  244. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  245. package/lib/umd/persisters/persister-libsql.js +1 -1
  246. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  247. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  248. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  249. package/lib/umd/persisters/persister-powersync.js +1 -1
  250. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  251. package/lib/umd/persisters/persister-remote.js +1 -1
  252. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  253. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  254. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  255. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  256. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  257. package/lib/umd/persisters/persister-yjs.js +1 -1
  258. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  259. package/lib/umd/persisters.js +1 -1
  260. package/lib/umd/persisters.js.gz +0 -0
  261. package/lib/umd/synchronizers/synchronizer-local.js +1 -1
  262. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  263. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -1
  264. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  265. package/lib/umd/synchronizers/synchronizer-ws-server.js +1 -1
  266. package/lib/umd/synchronizers/synchronizer-ws-server.js.gz +0 -0
  267. package/lib/umd/synchronizers.js +1 -1
  268. package/lib/umd/synchronizers.js.gz +0 -0
  269. package/lib/umd/tinybase.js +1 -1
  270. package/lib/umd/tinybase.js.gz +0 -0
  271. package/lib/umd/ui-react-dom-debug.js +1 -1
  272. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  273. package/lib/umd/ui-react.js +1 -1
  274. package/lib/umd/ui-react.js.gz +0 -0
  275. package/lib/umd-es6/mergeable-store.js +1 -1
  276. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  277. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  278. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  279. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  280. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  281. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  282. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  283. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  284. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  285. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  286. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  287. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  288. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  289. package/lib/umd-es6/persisters/persister-file.js +1 -1
  290. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  291. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  292. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  293. package/lib/umd-es6/persisters/persister-libsql.js +1 -1
  294. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  295. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  296. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  297. package/lib/umd-es6/persisters/persister-powersync.js +1 -1
  298. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  299. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  300. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  301. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  302. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  303. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  304. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  305. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  306. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  307. package/lib/umd-es6/persisters.js +1 -1
  308. package/lib/umd-es6/persisters.js.gz +0 -0
  309. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -1
  310. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  311. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -1
  312. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  313. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js +1 -1
  314. package/lib/umd-es6/synchronizers/synchronizer-ws-server.js.gz +0 -0
  315. package/lib/umd-es6/synchronizers.js +1 -1
  316. package/lib/umd-es6/synchronizers.js.gz +0 -0
  317. package/lib/umd-es6/tinybase.js +1 -1
  318. package/lib/umd-es6/tinybase.js.gz +0 -0
  319. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  320. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  321. package/lib/umd-es6/ui-react.js +1 -1
  322. package/lib/umd-es6/ui-react.js.gz +0 -0
  323. package/package.json +1 -1
  324. package/readme.md +2 -2
@@ -76,6 +76,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
76
76
  store.getTransactionChanges,
77
77
  ([changedTables, changedValues]) =>
78
78
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
79
+ store.setContent,
79
80
  ]
80
81
  : [
81
82
  1,
@@ -83,6 +84,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
83
84
  store.getTransactionMergeableChanges,
84
85
  ([, [[, changedTables], [, changedValues]]]) =>
85
86
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
87
+ store.setDefaultContent,
86
88
  ];
87
89
  const createCustomPersister = (
88
90
  store,
@@ -103,8 +105,13 @@ const createCustomPersister = (
103
105
  let autoSaveListenerId;
104
106
  mapEnsure(scheduleRunning, scheduleId, () => 0);
105
107
  mapEnsure(scheduleActions, scheduleId, () => []);
106
- const [isMergeableStore, getContent, getChanges, hasChanges] =
107
- getStoreFunctions(supportsMergeableStore, store);
108
+ const [
109
+ isMergeableStore,
110
+ getContent,
111
+ getChanges,
112
+ hasChanges,
113
+ setDefaultContent,
114
+ ] = getStoreFunctions(supportsMergeableStore, store);
108
115
  const run = async () => {
109
116
  /* istanbul ignore else */
110
117
  if (!mapGet(scheduleRunning, scheduleId)) {
@@ -146,17 +153,19 @@ const createCustomPersister = (
146
153
  : store.setContent)(contentOrChanges);
147
154
  };
148
155
  const persister = {
149
- load: async (initialTables, initialValues) =>
156
+ load: async (initialContent) =>
150
157
  await loadLock(async () => {
151
158
  try {
152
159
  setContentOrChanges(await getPersisted());
153
160
  } catch (error) {
154
161
  onIgnoredError?.(error);
155
- store.setContent([initialTables, initialValues]);
162
+ if (initialContent) {
163
+ setDefaultContent(initialContent);
164
+ }
156
165
  }
157
166
  }),
158
- startAutoLoad: async (initialTables = {}, initialValues = {}) => {
159
- await persister.stopAutoLoad().load(initialTables, initialValues);
167
+ startAutoLoad: async (initialContent) => {
168
+ await persister.stopAutoLoad().load(initialContent);
160
169
  autoLoadHandle = addPersisterListener(
161
170
  async (getContent2, getChanges2) => {
162
171
  const changes = getChanges2?.();
@@ -54,6 +54,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
54
54
  store.getTransactionChanges,
55
55
  ([changedTables, changedValues]) =>
56
56
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
57
+ store.setContent,
57
58
  ]
58
59
  : [
59
60
  1,
@@ -61,6 +62,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
61
62
  store.getTransactionMergeableChanges,
62
63
  ([, [[, changedTables], [, changedValues]]]) =>
63
64
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
65
+ store.setDefaultContent,
64
66
  ];
65
67
  const createCustomPersister = (
66
68
  store,
@@ -81,8 +83,13 @@ const createCustomPersister = (
81
83
  let autoSaveListenerId;
82
84
  mapEnsure(scheduleRunning, scheduleId, () => 0);
83
85
  mapEnsure(scheduleActions, scheduleId, () => []);
84
- const [isMergeableStore, getContent, getChanges, hasChanges] =
85
- getStoreFunctions(supportsMergeableStore, store);
86
+ const [
87
+ isMergeableStore,
88
+ getContent,
89
+ getChanges,
90
+ hasChanges,
91
+ setDefaultContent,
92
+ ] = getStoreFunctions(supportsMergeableStore, store);
86
93
  const run = async () => {
87
94
  /* istanbul ignore else */
88
95
  if (!mapGet(scheduleRunning, scheduleId)) {
@@ -124,17 +131,19 @@ const createCustomPersister = (
124
131
  : store.setContent)(contentOrChanges);
125
132
  };
126
133
  const persister = {
127
- load: async (initialTables, initialValues) =>
134
+ load: async (initialContent) =>
128
135
  await loadLock(async () => {
129
136
  try {
130
137
  setContentOrChanges(await getPersisted());
131
138
  } catch (error) {
132
139
  onIgnoredError?.(error);
133
- store.setContent([initialTables, initialValues]);
140
+ if (initialContent) {
141
+ setDefaultContent(initialContent);
142
+ }
134
143
  }
135
144
  }),
136
- startAutoLoad: async (initialTables = {}, initialValues = {}) => {
137
- await persister.stopAutoLoad().load(initialTables, initialValues);
145
+ startAutoLoad: async (initialContent) => {
146
+ await persister.stopAutoLoad().load(initialContent);
138
147
  autoLoadHandle = addPersisterListener(
139
148
  async (getContent2, getChanges2) => {
140
149
  const changes = getChanges2?.();
@@ -62,6 +62,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
62
62
  store.getTransactionChanges,
63
63
  ([changedTables, changedValues]) =>
64
64
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
65
+ store.setContent,
65
66
  ]
66
67
  : [
67
68
  1,
@@ -69,6 +70,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
69
70
  store.getTransactionMergeableChanges,
70
71
  ([, [[, changedTables], [, changedValues]]]) =>
71
72
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
73
+ store.setDefaultContent,
72
74
  ];
73
75
  const createCustomPersister = (
74
76
  store,
@@ -89,8 +91,13 @@ const createCustomPersister = (
89
91
  let autoSaveListenerId;
90
92
  mapEnsure(scheduleRunning, scheduleId, () => 0);
91
93
  mapEnsure(scheduleActions, scheduleId, () => []);
92
- const [isMergeableStore, getContent, getChanges, hasChanges] =
93
- getStoreFunctions(supportsMergeableStore, store);
94
+ const [
95
+ isMergeableStore,
96
+ getContent,
97
+ getChanges,
98
+ hasChanges,
99
+ setDefaultContent,
100
+ ] = getStoreFunctions(supportsMergeableStore, store);
94
101
  const run = async () => {
95
102
  /* istanbul ignore else */
96
103
  if (!mapGet(scheduleRunning, scheduleId)) {
@@ -132,17 +139,19 @@ const createCustomPersister = (
132
139
  : store.setContent)(contentOrChanges);
133
140
  };
134
141
  const persister = {
135
- load: async (initialTables, initialValues) =>
142
+ load: async (initialContent) =>
136
143
  await loadLock(async () => {
137
144
  try {
138
145
  setContentOrChanges(await getPersisted());
139
146
  } catch (error) {
140
147
  onIgnoredError?.(error);
141
- store.setContent([initialTables, initialValues]);
148
+ if (initialContent) {
149
+ setDefaultContent(initialContent);
150
+ }
142
151
  }
143
152
  }),
144
- startAutoLoad: async (initialTables = {}, initialValues = {}) => {
145
- await persister.stopAutoLoad().load(initialTables, initialValues);
153
+ startAutoLoad: async (initialContent) => {
154
+ await persister.stopAutoLoad().load(initialContent);
146
155
  autoLoadHandle = addPersisterListener(
147
156
  async (getContent2, getChanges2) => {
148
157
  const changes = getChanges2?.();
@@ -311,8 +320,9 @@ const createCustomSynchronizer = (
311
320
  send,
312
321
  onReceive,
313
322
  destroyImpl,
314
- requestTimeoutSeconds = 1,
323
+ requestTimeoutSeconds,
315
324
  onIgnoredError,
325
+ extra = {},
316
326
  ) => {
317
327
  let persisterListener;
318
328
  let sends = 0;
@@ -444,10 +454,8 @@ const createCustomSynchronizer = (
444
454
  };
445
455
  const addPersisterListener = (listener) => (persisterListener = listener);
446
456
  const delPersisterListener = () => (persisterListener = void 0);
447
- const startSync = async (initialTables, initialValues) =>
448
- await (
449
- await persister.startAutoLoad(initialTables, initialValues)
450
- ).startAutoSave();
457
+ const startSync = async (initialContent) =>
458
+ await (await persister.startAutoLoad(initialContent)).startAutoSave();
451
459
  const stopSync = () => persister.stopAutoLoad().stopAutoSave();
452
460
  const destroy = () => {
453
461
  destroyImpl();
@@ -462,7 +470,7 @@ const createCustomSynchronizer = (
462
470
  delPersisterListener,
463
471
  onIgnoredError,
464
472
  true,
465
- {startSync, stopSync, destroy, getSynchronizerStats},
473
+ {startSync, stopSync, destroy, getSynchronizerStats, ...extra},
466
474
  );
467
475
  return persister;
468
476
  };
@@ -70,6 +70,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
70
70
  store.getTransactionChanges,
71
71
  ([changedTables, changedValues]) =>
72
72
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
73
+ store.setContent,
73
74
  ]
74
75
  : [
75
76
  1,
@@ -77,6 +78,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
77
78
  store.getTransactionMergeableChanges,
78
79
  ([, [[, changedTables], [, changedValues]]]) =>
79
80
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
81
+ store.setDefaultContent,
80
82
  ];
81
83
  const createCustomPersister = (
82
84
  store,
@@ -97,8 +99,13 @@ const createCustomPersister = (
97
99
  let autoSaveListenerId;
98
100
  mapEnsure(scheduleRunning, scheduleId, () => 0);
99
101
  mapEnsure(scheduleActions, scheduleId, () => []);
100
- const [isMergeableStore, getContent, getChanges, hasChanges] =
101
- getStoreFunctions(supportsMergeableStore, store);
102
+ const [
103
+ isMergeableStore,
104
+ getContent,
105
+ getChanges,
106
+ hasChanges,
107
+ setDefaultContent,
108
+ ] = getStoreFunctions(supportsMergeableStore, store);
102
109
  const run = async () => {
103
110
  /* istanbul ignore else */
104
111
  if (!mapGet(scheduleRunning, scheduleId)) {
@@ -140,17 +147,19 @@ const createCustomPersister = (
140
147
  : store.setContent)(contentOrChanges);
141
148
  };
142
149
  const persister = {
143
- load: async (initialTables, initialValues) =>
150
+ load: async (initialContent) =>
144
151
  await loadLock(async () => {
145
152
  try {
146
153
  setContentOrChanges(await getPersisted());
147
154
  } catch (error) {
148
155
  onIgnoredError?.(error);
149
- store.setContent([initialTables, initialValues]);
156
+ if (initialContent) {
157
+ setDefaultContent(initialContent);
158
+ }
150
159
  }
151
160
  }),
152
- startAutoLoad: async (initialTables = {}, initialValues = {}) => {
153
- await persister.stopAutoLoad().load(initialTables, initialValues);
161
+ startAutoLoad: async (initialContent) => {
162
+ await persister.stopAutoLoad().load(initialContent);
154
163
  autoLoadHandle = addPersisterListener(
155
164
  async (getContent2, getChanges2) => {
156
165
  const changes = getChanges2?.();
@@ -319,8 +328,9 @@ const createCustomSynchronizer = (
319
328
  send,
320
329
  onReceive,
321
330
  destroyImpl,
322
- requestTimeoutSeconds = 1,
331
+ requestTimeoutSeconds,
323
332
  onIgnoredError,
333
+ extra = {},
324
334
  ) => {
325
335
  let persisterListener;
326
336
  let sends = 0;
@@ -452,10 +462,8 @@ const createCustomSynchronizer = (
452
462
  };
453
463
  const addPersisterListener = (listener) => (persisterListener = listener);
454
464
  const delPersisterListener = () => (persisterListener = void 0);
455
- const startSync = async (initialTables, initialValues) =>
456
- await (
457
- await persister.startAutoLoad(initialTables, initialValues)
458
- ).startAutoSave();
465
+ const startSync = async (initialContent) =>
466
+ await (await persister.startAutoLoad(initialContent)).startAutoSave();
459
467
  const stopSync = () => persister.stopAutoLoad().stopAutoSave();
460
468
  const destroy = () => {
461
469
  destroyImpl();
@@ -470,7 +478,7 @@ const createCustomSynchronizer = (
470
478
  delPersisterListener,
471
479
  onIgnoredError,
472
480
  true,
473
- {startSync, stopSync, destroy, getSynchronizerStats},
481
+ {startSync, stopSync, destroy, getSynchronizerStats, ...extra},
474
482
  );
475
483
  return persister;
476
484
  };
@@ -478,7 +486,7 @@ const createCustomSynchronizer = (
478
486
  const createWsSynchronizer = async (
479
487
  store,
480
488
  webSocket,
481
- requestTimeoutSeconds,
489
+ requestTimeoutSeconds = 1,
482
490
  onIgnoredError,
483
491
  ) => {
484
492
  let currentReceive;
@@ -502,6 +510,7 @@ const createWsSynchronizer = async (
502
510
  destroy,
503
511
  requestTimeoutSeconds,
504
512
  onIgnoredError,
513
+ {getWebSocket: () => webSocket},
505
514
  );
506
515
  addEventListener('message', ({data}) => {
507
516
  if (!isUndefined(currentReceive)) {
@@ -2,54 +2,93 @@ const EMPTY_STRING = '';
2
2
  const UTF8 = 'utf8';
3
3
 
4
4
  const isUndefined = (thing) => thing == void 0;
5
+ const ifNotUndefined = (value, then, otherwise) =>
6
+ isUndefined(value) ? otherwise?.() : then(value);
5
7
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
6
8
 
9
+ const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
10
+
11
+ const collSizeN = (collSizer) => (coll) =>
12
+ arrayReduce(collValues(coll), (total, coll2) => total + collSizer(coll2), 0);
13
+ const collSize = (coll) => coll?.size ?? 0;
14
+ const collSize2 = collSizeN(collSize);
15
+ const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
16
+ const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
17
+ const collValues = (coll) => [...(coll?.values() ?? [])];
7
18
  const collClear = (coll) => coll.clear();
8
19
  const collForEach = (coll, cb) => coll?.forEach(cb);
9
20
  const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
10
21
 
11
22
  const mapNew = (entries) => new Map(entries);
23
+ const mapKeys = (map) => [...(map?.keys() ?? [])];
12
24
  const mapGet = (map, key) => map?.get(key);
13
25
  const mapForEach = (map, cb) =>
14
26
  collForEach(map, (value, key) => cb(key, value));
15
27
  const mapSet = (map, key, value) =>
16
28
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
29
+ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
30
+ if (!collHas(map, key)) {
31
+ mapSet(map, key, getDefaultValue());
32
+ } else {
33
+ hadExistingValue?.(mapGet(map, key));
34
+ }
35
+ return mapGet(map, key);
36
+ };
17
37
 
18
38
  const MESSAGE_SEPARATOR = '\n';
19
39
 
40
+ const PATH_REGEX = /\/([^?]*)/;
20
41
  const createWsServer = (webSocketServer) => {
21
- const clients = mapNew();
22
- webSocketServer.on('connection', (webSocket, request) => {
23
- const clientId = request.headers['sec-websocket-key'];
24
- mapSet(clients, clientId, webSocket);
25
- webSocket.on('message', (data) => {
26
- const payload = data.toString(UTF8);
27
- const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
28
- if (splitAt !== -1) {
29
- const toClientId = slice(payload, 0, splitAt);
30
- const message = slice(payload, splitAt + 1);
31
- toClientId === EMPTY_STRING
32
- ? mapForEach(clients, (otherClientId, otherWebSocket) =>
33
- otherClientId != clientId
34
- ? otherWebSocket.send(clientId + MESSAGE_SEPARATOR + message)
35
- : 0,
36
- )
37
- : mapGet(clients, toClientId)?.send(
38
- clientId + MESSAGE_SEPARATOR + message,
39
- );
40
- }
41
- });
42
- webSocket.on('close', () => {
43
- collDel(clients, clientId);
44
- });
45
- });
42
+ const clientsByPath = mapNew();
43
+ webSocketServer.on('connection', (webSocket, request) =>
44
+ ifNotUndefined(request.url?.match(PATH_REGEX), ([path]) =>
45
+ ifNotUndefined(request.headers['sec-websocket-key'], (clientId) => {
46
+ const clients = mapEnsure(clientsByPath, path, mapNew);
47
+ mapSet(clients, clientId, webSocket);
48
+ webSocket.on('message', (data) => {
49
+ const payload = data.toString(UTF8);
50
+ const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
51
+ if (splitAt !== -1) {
52
+ const toClientId = slice(payload, 0, splitAt);
53
+ const message = slice(payload, splitAt + 1);
54
+ toClientId === EMPTY_STRING
55
+ ? mapForEach(clients, (otherClientId, otherWebSocket) =>
56
+ otherClientId != clientId
57
+ ? otherWebSocket.send(
58
+ clientId + MESSAGE_SEPARATOR + message,
59
+ )
60
+ : 0,
61
+ )
62
+ : mapGet(clients, toClientId)?.send(
63
+ clientId + MESSAGE_SEPARATOR + message,
64
+ );
65
+ }
66
+ });
67
+ webSocket.on('close', () => {
68
+ collDel(clients, clientId);
69
+ if (collIsEmpty(clients)) {
70
+ collDel(clientsByPath, path);
71
+ }
72
+ });
73
+ }),
74
+ ),
75
+ );
46
76
  const getWebSocketServer = () => webSocketServer;
77
+ const getPaths = () => mapKeys(clientsByPath);
78
+ const getClientIds = (path) => mapKeys(mapGet(clientsByPath, path));
79
+ const getStats = () => ({
80
+ paths: collSize(clientsByPath),
81
+ clients: collSize2(clientsByPath),
82
+ });
47
83
  const destroy = () => {
48
84
  webSocketServer.close();
49
- collClear(clients);
85
+ collClear(clientsByPath);
50
86
  };
51
87
  return {
52
88
  getWebSocketServer,
89
+ getPaths,
90
+ getClientIds,
91
+ getStats,
53
92
  destroy,
54
93
  };
55
94
  };
@@ -59,6 +59,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
59
59
  store.getTransactionChanges,
60
60
  ([changedTables, changedValues]) =>
61
61
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
62
+ store.setContent,
62
63
  ]
63
64
  : [
64
65
  1,
@@ -66,6 +67,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
66
67
  store.getTransactionMergeableChanges,
67
68
  ([, [[, changedTables], [, changedValues]]]) =>
68
69
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
70
+ store.setDefaultContent,
69
71
  ];
70
72
  const createCustomPersister = (
71
73
  store,
@@ -86,8 +88,13 @@ const createCustomPersister = (
86
88
  let autoSaveListenerId;
87
89
  mapEnsure(scheduleRunning, scheduleId, () => 0);
88
90
  mapEnsure(scheduleActions, scheduleId, () => []);
89
- const [isMergeableStore, getContent, getChanges, hasChanges] =
90
- getStoreFunctions(supportsMergeableStore, store);
91
+ const [
92
+ isMergeableStore,
93
+ getContent,
94
+ getChanges,
95
+ hasChanges,
96
+ setDefaultContent,
97
+ ] = getStoreFunctions(supportsMergeableStore, store);
91
98
  const run = async () => {
92
99
  /* istanbul ignore else */
93
100
  if (!mapGet(scheduleRunning, scheduleId)) {
@@ -129,17 +136,19 @@ const createCustomPersister = (
129
136
  : store.setContent)(contentOrChanges);
130
137
  };
131
138
  const persister = {
132
- load: async (initialTables, initialValues) =>
139
+ load: async (initialContent) =>
133
140
  await loadLock(async () => {
134
141
  try {
135
142
  setContentOrChanges(await getPersisted());
136
143
  } catch (error) {
137
144
  onIgnoredError?.(error);
138
- store.setContent([initialTables, initialValues]);
145
+ if (initialContent) {
146
+ setDefaultContent(initialContent);
147
+ }
139
148
  }
140
149
  }),
141
- startAutoLoad: async (initialTables = {}, initialValues = {}) => {
142
- await persister.stopAutoLoad().load(initialTables, initialValues);
150
+ startAutoLoad: async (initialContent) => {
151
+ await persister.stopAutoLoad().load(initialContent);
143
152
  autoLoadHandle = addPersisterListener(
144
153
  async (getContent2, getChanges2) => {
145
154
  const changes = getChanges2?.();
@@ -308,8 +317,9 @@ const createCustomSynchronizer = (
308
317
  send,
309
318
  onReceive,
310
319
  destroyImpl,
311
- requestTimeoutSeconds = 1,
320
+ requestTimeoutSeconds,
312
321
  onIgnoredError,
322
+ extra = {},
313
323
  ) => {
314
324
  let persisterListener;
315
325
  let sends = 0;
@@ -441,10 +451,8 @@ const createCustomSynchronizer = (
441
451
  };
442
452
  const addPersisterListener = (listener) => (persisterListener = listener);
443
453
  const delPersisterListener = () => (persisterListener = void 0);
444
- const startSync = async (initialTables, initialValues) =>
445
- await (
446
- await persister.startAutoLoad(initialTables, initialValues)
447
- ).startAutoSave();
454
+ const startSync = async (initialContent) =>
455
+ await (await persister.startAutoLoad(initialContent)).startAutoSave();
448
456
  const stopSync = () => persister.stopAutoLoad().stopAutoSave();
449
457
  const destroy = () => {
450
458
  destroyImpl();
@@ -459,7 +467,7 @@ const createCustomSynchronizer = (
459
467
  delPersisterListener,
460
468
  onIgnoredError,
461
469
  true,
462
- {startSync, stopSync, destroy, getSynchronizerStats},
470
+ {startSync, stopSync, destroy, getSynchronizerStats, ...extra},
463
471
  );
464
472
  return persister;
465
473
  };
@@ -1128,6 +1128,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
1128
1128
  store.getTransactionChanges,
1129
1129
  ([changedTables, changedValues]) =>
1130
1130
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
1131
+ store.setContent,
1131
1132
  ]
1132
1133
  : [
1133
1134
  1,
@@ -1135,6 +1136,7 @@ const getStoreFunctions = (supportsMergeableStore, store) =>
1135
1136
  store.getTransactionMergeableChanges,
1136
1137
  ([, [[, changedTables], [, changedValues]]]) =>
1137
1138
  !objIsEmpty(changedTables) || !objIsEmpty(changedValues),
1139
+ store.setDefaultContent,
1138
1140
  ];
1139
1141
  const createCustomPersister = (
1140
1142
  store,
@@ -1155,8 +1157,13 @@ const createCustomPersister = (
1155
1157
  let autoSaveListenerId;
1156
1158
  mapEnsure(scheduleRunning, scheduleId, () => 0);
1157
1159
  mapEnsure(scheduleActions, scheduleId, () => []);
1158
- const [isMergeableStore, getContent, getChanges, hasChanges] =
1159
- getStoreFunctions(supportsMergeableStore, store);
1160
+ const [
1161
+ isMergeableStore,
1162
+ getContent,
1163
+ getChanges,
1164
+ hasChanges,
1165
+ setDefaultContent,
1166
+ ] = getStoreFunctions(supportsMergeableStore, store);
1160
1167
  const run = async () => {
1161
1168
  /* istanbul ignore else */
1162
1169
  if (!mapGet(scheduleRunning, scheduleId)) {
@@ -1198,17 +1205,19 @@ const createCustomPersister = (
1198
1205
  : store.setContent)(contentOrChanges);
1199
1206
  };
1200
1207
  const persister = {
1201
- load: async (initialTables, initialValues) =>
1208
+ load: async (initialContent) =>
1202
1209
  await loadLock(async () => {
1203
1210
  try {
1204
1211
  setContentOrChanges(await getPersisted());
1205
1212
  } catch (error) {
1206
1213
  onIgnoredError?.(error);
1207
- store.setContent([initialTables, initialValues]);
1214
+ if (initialContent) {
1215
+ setDefaultContent(initialContent);
1216
+ }
1208
1217
  }
1209
1218
  }),
1210
- startAutoLoad: async (initialTables = {}, initialValues = {}) => {
1211
- await persister.stopAutoLoad().load(initialTables, initialValues);
1219
+ startAutoLoad: async (initialContent) => {
1220
+ await persister.stopAutoLoad().load(initialContent);
1212
1221
  autoLoadHandle = addPersisterListener(
1213
1222
  async (getContent2, getChanges2) => {
1214
1223
  const changes = getChanges2?.();
@@ -1377,8 +1386,9 @@ const createCustomSynchronizer = (
1377
1386
  send,
1378
1387
  onReceive,
1379
1388
  destroyImpl,
1380
- requestTimeoutSeconds = 1,
1389
+ requestTimeoutSeconds,
1381
1390
  onIgnoredError,
1391
+ extra = {},
1382
1392
  ) => {
1383
1393
  let persisterListener;
1384
1394
  let sends = 0;
@@ -1510,10 +1520,8 @@ const createCustomSynchronizer = (
1510
1520
  };
1511
1521
  const addPersisterListener = (listener) => (persisterListener = listener);
1512
1522
  const delPersisterListener = () => (persisterListener = void 0);
1513
- const startSync = async (initialTables, initialValues) =>
1514
- await (
1515
- await persister.startAutoLoad(initialTables, initialValues)
1516
- ).startAutoSave();
1523
+ const startSync = async (initialContent) =>
1524
+ await (await persister.startAutoLoad(initialContent)).startAutoSave();
1517
1525
  const stopSync = () => persister.stopAutoLoad().stopAutoSave();
1518
1526
  const destroy = () => {
1519
1527
  destroyImpl();
@@ -1528,7 +1536,7 @@ const createCustomSynchronizer = (
1528
1536
  delPersisterListener,
1529
1537
  onIgnoredError,
1530
1538
  true,
1531
- {startSync, stopSync, destroy, getSynchronizerStats},
1539
+ {startSync, stopSync, destroy, getSynchronizerStats, ...extra},
1532
1540
  );
1533
1541
  return persister;
1534
1542
  };
@@ -3828,6 +3836,11 @@ const createMergeableStore = (id) => {
3828
3836
  })
3829
3837
  : 0,
3830
3838
  );
3839
+ const setDefaultContent = (content) => {
3840
+ transactionTime = '0';
3841
+ store.setContent(content);
3842
+ return mergeableStore;
3843
+ };
3831
3844
  const getTransactionMergeableChanges = () => {
3832
3845
  if (isUndefined(transactionMergeableChanges)) {
3833
3846
  const [, , changedCells, , changedValues] = store.getTransactionLog();
@@ -3886,6 +3899,7 @@ const createMergeableStore = (id) => {
3886
3899
  getMergeableValuesHashes,
3887
3900
  getMergeableValuesChanges,
3888
3901
  setMergeableContent,
3902
+ setDefaultContent,
3889
3903
  getTransactionMergeableChanges,
3890
3904
  applyMergeableChanges,
3891
3905
  merge,