tinybase 5.0.0-beta.12 → 5.0.0-beta.13

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 (441) hide show
  1. package/lib/cjs/common.cjs +1 -1
  2. package/lib/cjs/common.cjs.gz +0 -0
  3. package/lib/cjs/indexes.cjs +1 -1
  4. package/lib/cjs/indexes.cjs.gz +0 -0
  5. package/lib/cjs/mergeable-store.cjs +1 -1
  6. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  7. package/lib/cjs/metrics.cjs +1 -1
  8. package/lib/cjs/metrics.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  10. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  12. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  14. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  16. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  18. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  20. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-file.cjs +1 -1
  22. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  24. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-libsql.cjs +1 -1
  26. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  28. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-powersync.cjs +1 -1
  30. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  32. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  33. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  34. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  35. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  36. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  37. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  38. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  39. package/lib/cjs/persisters.cjs +1 -1
  40. package/lib/cjs/persisters.cjs.gz +0 -0
  41. package/lib/cjs/queries.cjs +1 -1
  42. package/lib/cjs/queries.cjs.gz +0 -0
  43. package/lib/cjs/relationships.cjs +1 -1
  44. package/lib/cjs/relationships.cjs.gz +0 -0
  45. package/lib/cjs/store.cjs +1 -1
  46. package/lib/cjs/store.cjs.gz +0 -0
  47. package/lib/cjs/synchronizers/synchronizer-local.cjs +1 -1
  48. package/lib/cjs/synchronizers/synchronizer-local.cjs.gz +0 -0
  49. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs +1 -1
  50. package/lib/cjs/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  51. package/lib/cjs/synchronizers.cjs +1 -1
  52. package/lib/cjs/synchronizers.cjs.gz +0 -0
  53. package/lib/cjs/tinybase.cjs +1 -1
  54. package/lib/cjs/tinybase.cjs.gz +0 -0
  55. package/lib/cjs/tools.cjs +1 -1
  56. package/lib/cjs/tools.cjs.gz +0 -0
  57. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  58. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  59. package/lib/cjs/ui-react-dom.cjs +1 -1
  60. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  61. package/lib/cjs-es6/checkpoints.cjs +1 -1
  62. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  63. package/lib/cjs-es6/common.cjs +1 -1
  64. package/lib/cjs-es6/common.cjs.gz +0 -0
  65. package/lib/cjs-es6/indexes.cjs +1 -1
  66. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  67. package/lib/cjs-es6/mergeable-store.cjs +1 -1
  68. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  69. package/lib/cjs-es6/metrics.cjs +1 -1
  70. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  72. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  73. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  74. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  75. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  76. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  82. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  83. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  84. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  85. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  86. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  87. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -1
  88. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  89. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  90. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  91. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -1
  92. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  93. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  94. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  95. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  96. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  97. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  98. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  99. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  100. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  101. package/lib/cjs-es6/persisters.cjs +1 -1
  102. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  103. package/lib/cjs-es6/queries.cjs +1 -1
  104. package/lib/cjs-es6/queries.cjs.gz +0 -0
  105. package/lib/cjs-es6/relationships.cjs +1 -1
  106. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  107. package/lib/cjs-es6/store.cjs +1 -1
  108. package/lib/cjs-es6/store.cjs.gz +0 -0
  109. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs +1 -1
  110. package/lib/cjs-es6/synchronizers/synchronizer-local.cjs.gz +0 -0
  111. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs +1 -1
  112. package/lib/cjs-es6/synchronizers/synchronizer-ws-client.cjs.gz +0 -0
  113. package/lib/cjs-es6/synchronizers.cjs +1 -1
  114. package/lib/cjs-es6/synchronizers.cjs.gz +0 -0
  115. package/lib/cjs-es6/tinybase.cjs +1 -1
  116. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  117. package/lib/cjs-es6/tools.cjs +1 -1
  118. package/lib/cjs-es6/tools.cjs.gz +0 -0
  119. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  120. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  121. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  122. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  123. package/lib/common.js +1 -1
  124. package/lib/common.js.gz +0 -0
  125. package/lib/debug/common.js +22 -1
  126. package/lib/debug/indexes.js +6 -1
  127. package/lib/debug/mergeable-store.js +57 -45
  128. package/lib/debug/metrics.js +0 -1
  129. package/lib/debug/persisters/persister-automerge.js +0 -2
  130. package/lib/debug/persisters/persister-browser.js +0 -2
  131. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +23 -29
  132. package/lib/debug/persisters/persister-electric-sql.js +23 -29
  133. package/lib/debug/persisters/persister-expo-sqlite-next.js +23 -29
  134. package/lib/debug/persisters/persister-expo-sqlite.js +23 -29
  135. package/lib/debug/persisters/persister-file.js +0 -2
  136. package/lib/debug/persisters/persister-indexed-db.js +0 -3
  137. package/lib/debug/persisters/persister-libsql.js +23 -29
  138. package/lib/debug/persisters/persister-partykit-client.js +0 -2
  139. package/lib/debug/persisters/persister-powersync.js +23 -29
  140. package/lib/debug/persisters/persister-remote.js +0 -3
  141. package/lib/debug/persisters/persister-sqlite-wasm.js +23 -29
  142. package/lib/debug/persisters/persister-sqlite3.js +23 -29
  143. package/lib/debug/persisters/persister-yjs.js +0 -2
  144. package/lib/debug/persisters.js +0 -2
  145. package/lib/debug/queries.js +0 -1
  146. package/lib/debug/relationships.js +0 -1
  147. package/lib/debug/store.js +6 -0
  148. package/lib/debug/synchronizers/synchronizer-local.js +18 -88
  149. package/lib/debug/synchronizers/synchronizer-ws-client.js +17 -87
  150. package/lib/debug/synchronizers.js +17 -87
  151. package/lib/debug/tinybase.js +92 -80
  152. package/lib/debug/tools.js +0 -3
  153. package/lib/debug/ui-react-dom.js +8 -9
  154. package/lib/es6/checkpoints.js +1 -1
  155. package/lib/es6/checkpoints.js.gz +0 -0
  156. package/lib/es6/common.js +1 -1
  157. package/lib/es6/common.js.gz +0 -0
  158. package/lib/es6/indexes.js +1 -1
  159. package/lib/es6/indexes.js.gz +0 -0
  160. package/lib/es6/mergeable-store.js +1 -1
  161. package/lib/es6/mergeable-store.js.gz +0 -0
  162. package/lib/es6/metrics.js +1 -1
  163. package/lib/es6/metrics.js.gz +0 -0
  164. package/lib/es6/persisters/persister-automerge.js +1 -1
  165. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  166. package/lib/es6/persisters/persister-browser.js +1 -1
  167. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  168. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  169. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  170. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  171. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  172. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  173. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  174. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  175. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  176. package/lib/es6/persisters/persister-file.js +1 -1
  177. package/lib/es6/persisters/persister-file.js.gz +0 -0
  178. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  179. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  180. package/lib/es6/persisters/persister-libsql.js +1 -1
  181. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  182. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  183. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  184. package/lib/es6/persisters/persister-powersync.js +1 -1
  185. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  186. package/lib/es6/persisters/persister-remote.js +1 -1
  187. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  188. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  189. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  190. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  191. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  192. package/lib/es6/persisters/persister-yjs.js +1 -1
  193. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  194. package/lib/es6/persisters.js +1 -1
  195. package/lib/es6/persisters.js.gz +0 -0
  196. package/lib/es6/queries.js +1 -1
  197. package/lib/es6/queries.js.gz +0 -0
  198. package/lib/es6/relationships.js +1 -1
  199. package/lib/es6/relationships.js.gz +0 -0
  200. package/lib/es6/store.js +1 -1
  201. package/lib/es6/store.js.gz +0 -0
  202. package/lib/es6/synchronizers/synchronizer-local.js +1 -1
  203. package/lib/es6/synchronizers/synchronizer-local.js.gz +0 -0
  204. package/lib/es6/synchronizers/synchronizer-ws-client.js +1 -1
  205. package/lib/es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  206. package/lib/es6/synchronizers.js +1 -1
  207. package/lib/es6/synchronizers.js.gz +0 -0
  208. package/lib/es6/tinybase.js +1 -1
  209. package/lib/es6/tinybase.js.gz +0 -0
  210. package/lib/es6/tools.js +1 -1
  211. package/lib/es6/tools.js.gz +0 -0
  212. package/lib/es6/ui-react-dom-debug.js +1 -1
  213. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  214. package/lib/es6/ui-react-dom.js +1 -1
  215. package/lib/es6/ui-react-dom.js.gz +0 -0
  216. package/lib/indexes.js +1 -1
  217. package/lib/indexes.js.gz +0 -0
  218. package/lib/mergeable-store.js +1 -1
  219. package/lib/mergeable-store.js.gz +0 -0
  220. package/lib/metrics.js +1 -1
  221. package/lib/metrics.js.gz +0 -0
  222. package/lib/persisters/persister-automerge.js +1 -1
  223. package/lib/persisters/persister-automerge.js.gz +0 -0
  224. package/lib/persisters/persister-browser.js +1 -1
  225. package/lib/persisters/persister-browser.js.gz +0 -0
  226. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  227. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  228. package/lib/persisters/persister-electric-sql.js +1 -1
  229. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  230. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  231. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  232. package/lib/persisters/persister-expo-sqlite.js +1 -1
  233. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  234. package/lib/persisters/persister-file.js +1 -1
  235. package/lib/persisters/persister-file.js.gz +0 -0
  236. package/lib/persisters/persister-indexed-db.js +1 -1
  237. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  238. package/lib/persisters/persister-libsql.js +1 -1
  239. package/lib/persisters/persister-libsql.js.gz +0 -0
  240. package/lib/persisters/persister-partykit-client.js +1 -1
  241. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  242. package/lib/persisters/persister-powersync.js +1 -1
  243. package/lib/persisters/persister-powersync.js.gz +0 -0
  244. package/lib/persisters/persister-remote.js +1 -1
  245. package/lib/persisters/persister-remote.js.gz +0 -0
  246. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  247. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  248. package/lib/persisters/persister-sqlite3.js +1 -1
  249. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  250. package/lib/persisters/persister-yjs.js +1 -1
  251. package/lib/persisters/persister-yjs.js.gz +0 -0
  252. package/lib/persisters.js +1 -1
  253. package/lib/persisters.js.gz +0 -0
  254. package/lib/queries.js +1 -1
  255. package/lib/queries.js.gz +0 -0
  256. package/lib/relationships.js +1 -1
  257. package/lib/relationships.js.gz +0 -0
  258. package/lib/store.js +1 -1
  259. package/lib/store.js.gz +0 -0
  260. package/lib/synchronizers/synchronizer-local.js +1 -1
  261. package/lib/synchronizers/synchronizer-local.js.gz +0 -0
  262. package/lib/synchronizers/synchronizer-ws-client.js +1 -1
  263. package/lib/synchronizers/synchronizer-ws-client.js.gz +0 -0
  264. package/lib/synchronizers.js +1 -1
  265. package/lib/synchronizers.js.gz +0 -0
  266. package/lib/tinybase.js +1 -1
  267. package/lib/tinybase.js.gz +0 -0
  268. package/lib/tools.js +1 -1
  269. package/lib/tools.js.gz +0 -0
  270. package/lib/types/common.d.ts +7 -0
  271. package/lib/types/mergeable-store.d.ts +1 -7
  272. package/lib/types/persisters/persister-automerge.d.ts +2 -2
  273. package/lib/types/persisters/persister-browser.d.ts +3 -3
  274. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +2 -2
  275. package/lib/types/persisters/persister-electric-sql.d.ts +2 -2
  276. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +2 -2
  277. package/lib/types/persisters/persister-expo-sqlite.d.ts +2 -2
  278. package/lib/types/persisters/persister-file.d.ts +3 -3
  279. package/lib/types/persisters/persister-indexed-db.d.ts +2 -2
  280. package/lib/types/persisters/persister-libsql.d.ts +2 -2
  281. package/lib/types/persisters/persister-partykit-client.d.ts +2 -2
  282. package/lib/types/persisters/persister-partykit-server.d.ts +2 -2
  283. package/lib/types/persisters/persister-powersync.d.ts +2 -2
  284. package/lib/types/persisters/persister-remote.d.ts +2 -2
  285. package/lib/types/persisters/persister-sqlite-wasm.d.ts +2 -2
  286. package/lib/types/persisters/persister-sqlite3.d.ts +2 -2
  287. package/lib/types/ui-react-dom.d.ts +2 -2
  288. package/lib/types/with-schemas/common.d.ts +7 -0
  289. package/lib/types/with-schemas/indexes.d.ts +1 -1
  290. package/lib/types/with-schemas/internal/queries.d.ts +4 -4
  291. package/lib/types/with-schemas/internal/store.d.ts +2 -2
  292. package/lib/types/with-schemas/internal/ui-react.d.ts +12 -8
  293. package/lib/types/with-schemas/mergeable-store.d.ts +1 -7
  294. package/lib/types/with-schemas/metrics.d.ts +1 -1
  295. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +2 -2
  296. package/lib/types/with-schemas/persisters/persister-browser.d.ts +3 -3
  297. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +2 -2
  298. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +2 -2
  299. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +2 -2
  300. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +2 -2
  301. package/lib/types/with-schemas/persisters/persister-file.d.ts +3 -3
  302. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +2 -2
  303. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +2 -2
  304. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +2 -2
  305. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +2 -2
  306. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +2 -2
  307. package/lib/types/with-schemas/persisters/persister-remote.d.ts +2 -2
  308. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +2 -2
  309. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +2 -2
  310. package/lib/types/with-schemas/persisters.d.ts +2 -2
  311. package/lib/types/with-schemas/queries.d.ts +2 -2
  312. package/lib/types/with-schemas/relationships.d.ts +1 -1
  313. package/lib/types/with-schemas/store.d.ts +1 -1
  314. package/lib/types/with-schemas/ui-react-dom.d.ts +5 -5
  315. package/lib/types/with-schemas/ui-react.d.ts +3 -5
  316. package/lib/ui-react-dom.js +1 -1
  317. package/lib/ui-react-dom.js.gz +0 -0
  318. package/lib/umd/common.js +1 -1
  319. package/lib/umd/common.js.gz +0 -0
  320. package/lib/umd/indexes.js +1 -1
  321. package/lib/umd/indexes.js.gz +0 -0
  322. package/lib/umd/mergeable-store.js +1 -1
  323. package/lib/umd/mergeable-store.js.gz +0 -0
  324. package/lib/umd/metrics.js +1 -1
  325. package/lib/umd/metrics.js.gz +0 -0
  326. package/lib/umd/persisters/persister-automerge.js +1 -1
  327. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  328. package/lib/umd/persisters/persister-browser.js +1 -1
  329. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  330. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  331. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  332. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  333. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  334. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  335. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  336. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  337. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  338. package/lib/umd/persisters/persister-file.js +1 -1
  339. package/lib/umd/persisters/persister-file.js.gz +0 -0
  340. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  341. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  342. package/lib/umd/persisters/persister-libsql.js +1 -1
  343. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  344. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  345. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  346. package/lib/umd/persisters/persister-powersync.js +1 -1
  347. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  348. package/lib/umd/persisters/persister-remote.js +1 -1
  349. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  350. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  351. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  352. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  353. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  354. package/lib/umd/persisters/persister-yjs.js +1 -1
  355. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  356. package/lib/umd/persisters.js +1 -1
  357. package/lib/umd/persisters.js.gz +0 -0
  358. package/lib/umd/queries.js +1 -1
  359. package/lib/umd/queries.js.gz +0 -0
  360. package/lib/umd/relationships.js +1 -1
  361. package/lib/umd/relationships.js.gz +0 -0
  362. package/lib/umd/store.js +1 -1
  363. package/lib/umd/store.js.gz +0 -0
  364. package/lib/umd/synchronizers/synchronizer-local.js +1 -1
  365. package/lib/umd/synchronizers/synchronizer-local.js.gz +0 -0
  366. package/lib/umd/synchronizers/synchronizer-ws-client.js +1 -1
  367. package/lib/umd/synchronizers/synchronizer-ws-client.js.gz +0 -0
  368. package/lib/umd/synchronizers.js +1 -1
  369. package/lib/umd/synchronizers.js.gz +0 -0
  370. package/lib/umd/tinybase.js +1 -1
  371. package/lib/umd/tinybase.js.gz +0 -0
  372. package/lib/umd/tools.js +1 -1
  373. package/lib/umd/tools.js.gz +0 -0
  374. package/lib/umd/ui-react-dom-debug.js +1 -1
  375. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  376. package/lib/umd/ui-react-dom.js +1 -1
  377. package/lib/umd/ui-react-dom.js.gz +0 -0
  378. package/lib/umd-es6/checkpoints.js +1 -1
  379. package/lib/umd-es6/checkpoints.js.gz +0 -0
  380. package/lib/umd-es6/common.js +1 -1
  381. package/lib/umd-es6/common.js.gz +0 -0
  382. package/lib/umd-es6/indexes.js +1 -1
  383. package/lib/umd-es6/indexes.js.gz +0 -0
  384. package/lib/umd-es6/mergeable-store.js +1 -1
  385. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  386. package/lib/umd-es6/metrics.js +1 -1
  387. package/lib/umd-es6/metrics.js.gz +0 -0
  388. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  389. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  390. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  391. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  392. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  393. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  394. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  395. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  396. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  397. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  398. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  399. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  400. package/lib/umd-es6/persisters/persister-file.js +1 -1
  401. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  402. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  403. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  404. package/lib/umd-es6/persisters/persister-libsql.js +1 -1
  405. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  406. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  407. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  408. package/lib/umd-es6/persisters/persister-powersync.js +1 -1
  409. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  410. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  411. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  412. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  413. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  414. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  415. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  416. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  417. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  418. package/lib/umd-es6/persisters.js +1 -1
  419. package/lib/umd-es6/persisters.js.gz +0 -0
  420. package/lib/umd-es6/queries.js +1 -1
  421. package/lib/umd-es6/queries.js.gz +0 -0
  422. package/lib/umd-es6/relationships.js +1 -1
  423. package/lib/umd-es6/relationships.js.gz +0 -0
  424. package/lib/umd-es6/store.js +1 -1
  425. package/lib/umd-es6/store.js.gz +0 -0
  426. package/lib/umd-es6/synchronizers/synchronizer-local.js +1 -1
  427. package/lib/umd-es6/synchronizers/synchronizer-local.js.gz +0 -0
  428. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js +1 -1
  429. package/lib/umd-es6/synchronizers/synchronizer-ws-client.js.gz +0 -0
  430. package/lib/umd-es6/synchronizers.js +1 -1
  431. package/lib/umd-es6/synchronizers.js.gz +0 -0
  432. package/lib/umd-es6/tinybase.js +1 -1
  433. package/lib/umd-es6/tinybase.js.gz +0 -0
  434. package/lib/umd-es6/tools.js +1 -1
  435. package/lib/umd-es6/tools.js.gz +0 -0
  436. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  437. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  438. package/lib/umd-es6/ui-react-dom.js +1 -1
  439. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  440. package/package.json +15 -15
  441. package/readme.md +2 -2
@@ -7,7 +7,7 @@ const strRepeat = (str, count) => str.repeat(count);
7
7
 
8
8
  const promise = Promise;
9
9
  const startInterval = (callback, sec, immediate) => {
10
- immediate && callback();
10
+ callback();
11
11
  return setInterval(callback, sec * 1e3);
12
12
  };
13
13
  const stopInterval = clearInterval;
@@ -78,8 +78,6 @@ const mapSet = (map, key, value) =>
78
78
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
79
79
  if (!collHas(map, key)) {
80
80
  mapSet(map, key, getDefaultValue());
81
- } else {
82
- hadExistingValue?.(mapGet(map, key));
83
81
  }
84
82
  return mapGet(map, key);
85
83
  };
@@ -848,32 +846,28 @@ const createSqlitePersister = (
848
846
  managedTableNamesSet,
849
847
  ] = getConfigStructures(configOrStoreTableName);
850
848
  const addPersisterListener = (listener) => [
851
- startInterval(
852
- async () => {
853
- try {
854
- const newDataVersion = (await cmd(PRAGMA + DATA_VERSION))[0][
855
- DATA_VERSION
856
- ];
857
- const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
858
- SCHEMA_VERSION
859
- ];
860
- const newTotalChanges = (
861
- await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
862
- )[0][CHANGES_COLUMN];
863
- if (
864
- newDataVersion != (dataVersion ??= newDataVersion) ||
865
- newSchemaVersion != (schemaVersion ??= newSchemaVersion) ||
866
- newTotalChanges != (totalChanges ??= newTotalChanges)
867
- ) {
868
- listener();
869
- dataVersion = newDataVersion;
870
- schemaVersion = newSchemaVersion;
871
- }
872
- } catch {}
873
- },
874
- autoLoadIntervalSeconds,
875
- 1,
876
- ),
849
+ startInterval(async () => {
850
+ try {
851
+ const newDataVersion = (await cmd(PRAGMA + DATA_VERSION))[0][
852
+ DATA_VERSION
853
+ ];
854
+ const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
855
+ SCHEMA_VERSION
856
+ ];
857
+ const newTotalChanges = (
858
+ await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
859
+ )[0][CHANGES_COLUMN];
860
+ if (
861
+ newDataVersion != (dataVersion ??= newDataVersion) ||
862
+ newSchemaVersion != (schemaVersion ??= newSchemaVersion) ||
863
+ newTotalChanges != (totalChanges ??= newTotalChanges)
864
+ ) {
865
+ listener();
866
+ dataVersion = newDataVersion;
867
+ schemaVersion = newSchemaVersion;
868
+ }
869
+ } catch {}
870
+ }, autoLoadIntervalSeconds),
877
871
  addUpdateListener((tableName) =>
878
872
  managedTableNamesSet.has(tableName) ? listener() : 0,
879
873
  ),
@@ -63,8 +63,6 @@ const mapSet = (map, key, value) =>
63
63
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
64
64
  if (!collHas(map, key)) {
65
65
  mapSet(map, key, getDefaultValue());
66
- } else {
67
- hadExistingValue?.(mapGet(map, key));
68
66
  }
69
67
  return mapGet(map, key);
70
68
  };
@@ -7,7 +7,7 @@ const strRepeat = (str, count) => str.repeat(count);
7
7
 
8
8
  const promise = Promise;
9
9
  const startInterval = (callback, sec, immediate) => {
10
- immediate && callback();
10
+ callback();
11
11
  return setInterval(callback, sec * 1e3);
12
12
  };
13
13
  const stopInterval = clearInterval;
@@ -78,8 +78,6 @@ const mapSet = (map, key, value) =>
78
78
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
79
79
  if (!collHas(map, key)) {
80
80
  mapSet(map, key, getDefaultValue());
81
- } else {
82
- hadExistingValue?.(mapGet(map, key));
83
81
  }
84
82
  return mapGet(map, key);
85
83
  };
@@ -848,32 +846,28 @@ const createSqlitePersister = (
848
846
  managedTableNamesSet,
849
847
  ] = getConfigStructures(configOrStoreTableName);
850
848
  const addPersisterListener = (listener) => [
851
- startInterval(
852
- async () => {
853
- try {
854
- const newDataVersion = (await cmd(PRAGMA + DATA_VERSION))[0][
855
- DATA_VERSION
856
- ];
857
- const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
858
- SCHEMA_VERSION
859
- ];
860
- const newTotalChanges = (
861
- await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
862
- )[0][CHANGES_COLUMN];
863
- if (
864
- newDataVersion != (dataVersion ??= newDataVersion) ||
865
- newSchemaVersion != (schemaVersion ??= newSchemaVersion) ||
866
- newTotalChanges != (totalChanges ??= newTotalChanges)
867
- ) {
868
- listener();
869
- dataVersion = newDataVersion;
870
- schemaVersion = newSchemaVersion;
871
- }
872
- } catch {}
873
- },
874
- autoLoadIntervalSeconds,
875
- 1,
876
- ),
849
+ startInterval(async () => {
850
+ try {
851
+ const newDataVersion = (await cmd(PRAGMA + DATA_VERSION))[0][
852
+ DATA_VERSION
853
+ ];
854
+ const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
855
+ SCHEMA_VERSION
856
+ ];
857
+ const newTotalChanges = (
858
+ await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
859
+ )[0][CHANGES_COLUMN];
860
+ if (
861
+ newDataVersion != (dataVersion ??= newDataVersion) ||
862
+ newSchemaVersion != (schemaVersion ??= newSchemaVersion) ||
863
+ newTotalChanges != (totalChanges ??= newTotalChanges)
864
+ ) {
865
+ listener();
866
+ dataVersion = newDataVersion;
867
+ schemaVersion = newSchemaVersion;
868
+ }
869
+ } catch {}
870
+ }, autoLoadIntervalSeconds),
877
871
  addUpdateListener((tableName) =>
878
872
  managedTableNamesSet.has(tableName) ? listener() : 0,
879
873
  ),
@@ -1,5 +1,4 @@
1
1
  const startInterval = (callback, sec, immediate) => {
2
- immediate && callback();
3
2
  return setInterval(callback, sec * 1e3);
4
3
  };
5
4
  const stopInterval = clearInterval;
@@ -46,8 +45,6 @@ const mapSet = (map, key, value) =>
46
45
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
47
46
  if (!collHas(map, key)) {
48
47
  mapSet(map, key, getDefaultValue());
49
- } else {
50
- hadExistingValue?.(mapGet(map, key));
51
48
  }
52
49
  return mapGet(map, key);
53
50
  };
@@ -7,7 +7,7 @@ const strRepeat = (str, count) => str.repeat(count);
7
7
 
8
8
  const promise = Promise;
9
9
  const startInterval = (callback, sec, immediate) => {
10
- immediate && callback();
10
+ callback();
11
11
  return setInterval(callback, sec * 1e3);
12
12
  };
13
13
  const stopInterval = clearInterval;
@@ -78,8 +78,6 @@ const mapSet = (map, key, value) =>
78
78
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
79
79
  if (!collHas(map, key)) {
80
80
  mapSet(map, key, getDefaultValue());
81
- } else {
82
- hadExistingValue?.(mapGet(map, key));
83
81
  }
84
82
  return mapGet(map, key);
85
83
  };
@@ -848,32 +846,28 @@ const createSqlitePersister = (
848
846
  managedTableNamesSet,
849
847
  ] = getConfigStructures(configOrStoreTableName);
850
848
  const addPersisterListener = (listener) => [
851
- startInterval(
852
- async () => {
853
- try {
854
- const newDataVersion = (await cmd(PRAGMA + DATA_VERSION))[0][
855
- DATA_VERSION
856
- ];
857
- const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
858
- SCHEMA_VERSION
859
- ];
860
- const newTotalChanges = (
861
- await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
862
- )[0][CHANGES_COLUMN];
863
- if (
864
- newDataVersion != (dataVersion ??= newDataVersion) ||
865
- newSchemaVersion != (schemaVersion ??= newSchemaVersion) ||
866
- newTotalChanges != (totalChanges ??= newTotalChanges)
867
- ) {
868
- listener();
869
- dataVersion = newDataVersion;
870
- schemaVersion = newSchemaVersion;
871
- }
872
- } catch {}
873
- },
874
- autoLoadIntervalSeconds,
875
- 1,
876
- ),
849
+ startInterval(async () => {
850
+ try {
851
+ const newDataVersion = (await cmd(PRAGMA + DATA_VERSION))[0][
852
+ DATA_VERSION
853
+ ];
854
+ const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
855
+ SCHEMA_VERSION
856
+ ];
857
+ const newTotalChanges = (
858
+ await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
859
+ )[0][CHANGES_COLUMN];
860
+ if (
861
+ newDataVersion != (dataVersion ??= newDataVersion) ||
862
+ newSchemaVersion != (schemaVersion ??= newSchemaVersion) ||
863
+ newTotalChanges != (totalChanges ??= newTotalChanges)
864
+ ) {
865
+ listener();
866
+ dataVersion = newDataVersion;
867
+ schemaVersion = newSchemaVersion;
868
+ }
869
+ } catch {}
870
+ }, autoLoadIntervalSeconds),
877
871
  addUpdateListener((tableName) =>
878
872
  managedTableNamesSet.has(tableName) ? listener() : 0,
879
873
  ),
@@ -7,7 +7,7 @@ const strRepeat = (str, count) => str.repeat(count);
7
7
 
8
8
  const promise = Promise;
9
9
  const startInterval = (callback, sec, immediate) => {
10
- immediate && callback();
10
+ callback();
11
11
  return setInterval(callback, sec * 1e3);
12
12
  };
13
13
  const stopInterval = clearInterval;
@@ -79,8 +79,6 @@ const mapSet = (map, key, value) =>
79
79
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
80
80
  if (!collHas(map, key)) {
81
81
  mapSet(map, key, getDefaultValue());
82
- } else {
83
- hadExistingValue?.(mapGet(map, key));
84
82
  }
85
83
  return mapGet(map, key);
86
84
  };
@@ -849,32 +847,28 @@ const createSqlitePersister = (
849
847
  managedTableNamesSet,
850
848
  ] = getConfigStructures(configOrStoreTableName);
851
849
  const addPersisterListener = (listener) => [
852
- startInterval(
853
- async () => {
854
- try {
855
- const newDataVersion = (await cmd(PRAGMA + DATA_VERSION))[0][
856
- DATA_VERSION
857
- ];
858
- const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
859
- SCHEMA_VERSION
860
- ];
861
- const newTotalChanges = (
862
- await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
863
- )[0][CHANGES_COLUMN];
864
- if (
865
- newDataVersion != (dataVersion ??= newDataVersion) ||
866
- newSchemaVersion != (schemaVersion ??= newSchemaVersion) ||
867
- newTotalChanges != (totalChanges ??= newTotalChanges)
868
- ) {
869
- listener();
870
- dataVersion = newDataVersion;
871
- schemaVersion = newSchemaVersion;
872
- }
873
- } catch {}
874
- },
875
- autoLoadIntervalSeconds,
876
- 1,
877
- ),
850
+ startInterval(async () => {
851
+ try {
852
+ const newDataVersion = (await cmd(PRAGMA + DATA_VERSION))[0][
853
+ DATA_VERSION
854
+ ];
855
+ const newSchemaVersion = (await cmd(PRAGMA + SCHEMA_VERSION))[0][
856
+ SCHEMA_VERSION
857
+ ];
858
+ const newTotalChanges = (
859
+ await cmd(SELECT + ' TOTAL_CHANGES() ' + CHANGES_COLUMN)
860
+ )[0][CHANGES_COLUMN];
861
+ if (
862
+ newDataVersion != (dataVersion ??= newDataVersion) ||
863
+ newSchemaVersion != (schemaVersion ??= newSchemaVersion) ||
864
+ newTotalChanges != (totalChanges ??= newTotalChanges)
865
+ ) {
866
+ listener();
867
+ dataVersion = newDataVersion;
868
+ schemaVersion = newSchemaVersion;
869
+ }
870
+ } catch {}
871
+ }, autoLoadIntervalSeconds),
878
872
  addUpdateListener((tableName) =>
879
873
  managedTableNamesSet.has(tableName) ? listener() : 0,
880
874
  ),
@@ -57,8 +57,6 @@ const mapSet = (map, key, value) =>
57
57
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
58
58
  if (!collHas(map, key)) {
59
59
  mapSet(map, key, getDefaultValue());
60
- } else {
61
- hadExistingValue?.(mapGet(map, key));
62
60
  }
63
61
  return mapGet(map, key);
64
62
  };
@@ -34,8 +34,6 @@ const mapSet = (map, key, value) =>
34
34
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
35
35
  if (!collHas(map, key)) {
36
36
  mapSet(map, key, getDefaultValue());
37
- } else {
38
- hadExistingValue?.(mapGet(map, key));
39
37
  }
40
38
  return mapGet(map, key);
41
39
  };
@@ -348,7 +348,6 @@ const getCreateFunction = (getFunction, initFunction) => {
348
348
  thingsByStore.set(store, getFunction(store));
349
349
  }
350
350
  const thing = thingsByStore.get(store);
351
- initFunction?.(thing);
352
351
  return thing;
353
352
  };
354
353
  };
@@ -247,7 +247,6 @@ const getCreateFunction = (getFunction, initFunction) => {
247
247
  thingsByStore.set(store, getFunction(store));
248
248
  }
249
249
  const thing = thingsByStore.get(store);
250
- initFunction?.(thing);
251
250
  return thing;
252
251
  };
253
252
  };
@@ -296,6 +296,12 @@ const jsonStringWithMap = (obj) =>
296
296
  );
297
297
  const jsonParse = JSON.parse;
298
298
 
299
+ const ENCODE =
300
+ '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'.split(
301
+ EMPTY_STRING,
302
+ );
303
+ mapNew(arrayMap(ENCODE, (char, index) => [char, index]));
304
+
299
305
  const defaultSorter = (sortKey1, sortKey2) =>
300
306
  (sortKey1 ?? 0) < (sortKey2 ?? 0) ? -1 : 1;
301
307
 
@@ -1,8 +1,6 @@
1
1
  const EMPTY_STRING = '';
2
- const strCharCodeAt = (str, position) => str.charCodeAt(position);
3
2
 
4
3
  const promise = Promise;
5
- const mathMax = Math.max;
6
4
  const isUndefined = (thing) => thing == void 0;
7
5
  const ifNotUndefined = (value, then, otherwise) =>
8
6
  isUndefined(value) ? otherwise?.() : then(value);
@@ -11,6 +9,8 @@ const size = (arrayOrString) => arrayOrString.length;
11
9
  const promiseNew = (resolver) => new promise(resolver);
12
10
 
13
11
  const arrayForEach = (array, cb) => array.forEach(cb);
12
+ const arrayMap = (array, cb) => array.map(cb);
13
+ const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
14
14
  const arrayPush = (array, ...values) => array.push(...values);
15
15
  const arrayShift = (array) => array.shift();
16
16
 
@@ -55,22 +55,11 @@ const mapSet = (map, key, value) =>
55
55
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
56
56
  if (!collHas(map, key)) {
57
57
  mapSet(map, key, getDefaultValue());
58
- } else {
59
- hadExistingValue?.(mapGet(map, key));
60
58
  }
61
59
  return mapGet(map, key);
62
60
  };
63
61
 
64
- const textEncoder = new globalThis.TextEncoder();
65
- const getHash = (value) => {
66
- let hash = 2166136261;
67
- arrayForEach(textEncoder.encode(value), (char) => {
68
- hash ^= char;
69
- hash +=
70
- (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
71
- });
72
- return hash >>> 0;
73
- };
62
+ new globalThis.TextEncoder();
74
63
 
75
64
  const newStamp = (value, time) => (time ? [value, time] : [value]);
76
65
  const getLatestTime = (time1, time2) =>
@@ -262,77 +251,19 @@ const createCustomPersister = (
262
251
  };
263
252
 
264
253
  const MASK6 = 63;
265
- const SHIFT36 = 2 ** 36;
266
- const SHIFT30 = 2 ** 30;
267
- const SHIFT24 = 2 ** 24;
268
- const SHIFT18 = 2 ** 18;
269
- const SHIFT12 = 2 ** 12;
270
- const SHIFT6 = 2 ** 6;
271
- const toB64 = (num) => String.fromCharCode(48 + (num & MASK6));
272
- const fromB64 = (str, pos) => strCharCodeAt(str, pos) - 48;
273
- const encodeHlc = (logicalTime42, counter24, clientHash30) =>
274
- toB64(logicalTime42 / SHIFT36) +
275
- toB64(logicalTime42 / SHIFT30) +
276
- toB64(logicalTime42 / SHIFT24) +
277
- toB64(logicalTime42 / SHIFT18) +
278
- toB64(logicalTime42 / SHIFT12) +
279
- toB64(logicalTime42 / SHIFT6) +
280
- toB64(logicalTime42) +
281
- toB64(counter24 / SHIFT18) +
282
- toB64(counter24 / SHIFT12) +
283
- toB64(counter24 / SHIFT6) +
284
- toB64(counter24) +
285
- toB64(clientHash30 / SHIFT24) +
286
- toB64(clientHash30 / SHIFT18) +
287
- toB64(clientHash30 / SHIFT12) +
288
- toB64(clientHash30 / SHIFT6) +
289
- toB64(clientHash30);
290
- const decodeHlc = (hlc16) => [
291
- fromB64(hlc16, 0) * SHIFT36 +
292
- fromB64(hlc16, 1) * SHIFT30 +
293
- fromB64(hlc16, 2) * SHIFT24 +
294
- fromB64(hlc16, 3) * SHIFT18 +
295
- fromB64(hlc16, 4) * SHIFT12 +
296
- fromB64(hlc16, 5) * SHIFT6 +
297
- fromB64(hlc16, 6),
298
- fromB64(hlc16, 7) * SHIFT18 +
299
- fromB64(hlc16, 8) * SHIFT12 +
300
- fromB64(hlc16, 9) * SHIFT6 +
301
- fromB64(hlc16, 10),
302
- fromB64(hlc16, 11) * SHIFT24 +
303
- fromB64(hlc16, 12) * SHIFT18 +
304
- fromB64(hlc16, 13) * SHIFT12 +
305
- fromB64(hlc16, 14) * SHIFT6 +
306
- fromB64(hlc16, 15),
307
- ];
308
- const getHlcFunctions = (uniqueId) => {
309
- let logicalTime = 0;
310
- let lastCounter = -1;
311
- const uniqueIdHash = getHash(uniqueId);
312
- const getHlc = () => {
313
- seenHlc();
314
- return encodeHlc(logicalTime, ++lastCounter, uniqueIdHash);
315
- };
316
- const seenHlc = (hlc) => {
317
- const previousLogicalTime = logicalTime;
318
- const [remoteLogicalTime, remoteCounter] =
319
- isUndefined(hlc) || hlc == '' ? [0, 0] : decodeHlc(hlc);
320
- logicalTime = mathMax(
321
- previousLogicalTime,
322
- remoteLogicalTime,
323
- globalThis.HLC_TIME ?? Date.now(),
324
- );
325
- lastCounter =
326
- logicalTime == previousLogicalTime
327
- ? logicalTime == remoteLogicalTime
328
- ? mathMax(lastCounter, remoteCounter)
329
- : lastCounter
330
- : logicalTime == remoteLogicalTime
331
- ? remoteCounter
332
- : -1;
333
- };
334
- return [getHlc, seenHlc];
335
- };
254
+ const ENCODE =
255
+ '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'.split(
256
+ EMPTY_STRING,
257
+ );
258
+ mapNew(arrayMap(ENCODE, (char, index) => [char, index]));
259
+ const encode = (num) => ENCODE[num & MASK6];
260
+
261
+ const getUniqueId = (length = 16) =>
262
+ arrayReduce(
263
+ crypto.getRandomValues(new Uint8Array(length)),
264
+ (uniqueId, number) => uniqueId + encode(number),
265
+ '',
266
+ );
336
267
 
337
268
  const RESPONSE = 0;
338
269
  const GET_CONTENT_HASHES = 1;
@@ -354,7 +285,6 @@ const createCustomSynchronizer = (
354
285
  let persisterListener;
355
286
  let sends = 0;
356
287
  let receives = 0;
357
- const [getHlc] = getHlcFunctions(store.getId());
358
288
  const pendingRequests = mapNew();
359
289
  onReceive((fromClientId, requestId, messageType, messageBody) => {
360
290
  {
@@ -399,7 +329,7 @@ const createCustomSynchronizer = (
399
329
  });
400
330
  const request = async (toClientId, messageType, messageBody = EMPTY_STRING) =>
401
331
  promiseNew((resolve, reject) => {
402
- const requestId = getHlc();
332
+ const requestId = getUniqueId();
403
333
  const timeout = setTimeout(() => {
404
334
  collDel(pendingRequests, requestId);
405
335
  reject(
@@ -533,7 +463,7 @@ const createCustomSynchronizer = (
533
463
 
534
464
  const clients = mapNew();
535
465
  const createLocalSynchronizer = (store, onIgnoredError) => {
536
- const clientId = '' + Math.random();
466
+ const clientId = getUniqueId();
537
467
  const send = (toClientId, requestId, messageType, messageBody) => {
538
468
  setTimeout(
539
469
  () =>
@@ -1,9 +1,7 @@
1
1
  const EMPTY_STRING = '';
2
2
  const UTF8 = 'utf8';
3
- const strCharCodeAt = (str, position) => str.charCodeAt(position);
4
3
 
5
4
  const promise = Promise;
6
- const mathMax = Math.max;
7
5
  const isUndefined = (thing) => thing == void 0;
8
6
  const ifNotUndefined = (value, then, otherwise) =>
9
7
  isUndefined(value) ? otherwise?.() : then(value);
@@ -13,6 +11,8 @@ const size = (arrayOrString) => arrayOrString.length;
13
11
  const promiseNew = (resolver) => new promise(resolver);
14
12
 
15
13
  const arrayForEach = (array, cb) => array.forEach(cb);
14
+ const arrayMap = (array, cb) => array.map(cb);
15
+ const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
16
16
  const arrayPush = (array, ...values) => array.push(...values);
17
17
  const arrayShift = (array) => array.shift();
18
18
 
@@ -66,22 +66,11 @@ const mapSet = (map, key, value) =>
66
66
  const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
67
67
  if (!collHas(map, key)) {
68
68
  mapSet(map, key, getDefaultValue());
69
- } else {
70
- hadExistingValue?.(mapGet(map, key));
71
69
  }
72
70
  return mapGet(map, key);
73
71
  };
74
72
 
75
- const textEncoder = new globalThis.TextEncoder();
76
- const getHash = (value) => {
77
- let hash = 2166136261;
78
- arrayForEach(textEncoder.encode(value), (char) => {
79
- hash ^= char;
80
- hash +=
81
- (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
82
- });
83
- return hash >>> 0;
84
- };
73
+ new globalThis.TextEncoder();
85
74
 
86
75
  const newStamp = (value, time) => (time ? [value, time] : [value]);
87
76
  const getLatestTime = (time1, time2) =>
@@ -273,77 +262,19 @@ const createCustomPersister = (
273
262
  };
274
263
 
275
264
  const MASK6 = 63;
276
- const SHIFT36 = 2 ** 36;
277
- const SHIFT30 = 2 ** 30;
278
- const SHIFT24 = 2 ** 24;
279
- const SHIFT18 = 2 ** 18;
280
- const SHIFT12 = 2 ** 12;
281
- const SHIFT6 = 2 ** 6;
282
- const toB64 = (num) => String.fromCharCode(48 + (num & MASK6));
283
- const fromB64 = (str, pos) => strCharCodeAt(str, pos) - 48;
284
- const encodeHlc = (logicalTime42, counter24, clientHash30) =>
285
- toB64(logicalTime42 / SHIFT36) +
286
- toB64(logicalTime42 / SHIFT30) +
287
- toB64(logicalTime42 / SHIFT24) +
288
- toB64(logicalTime42 / SHIFT18) +
289
- toB64(logicalTime42 / SHIFT12) +
290
- toB64(logicalTime42 / SHIFT6) +
291
- toB64(logicalTime42) +
292
- toB64(counter24 / SHIFT18) +
293
- toB64(counter24 / SHIFT12) +
294
- toB64(counter24 / SHIFT6) +
295
- toB64(counter24) +
296
- toB64(clientHash30 / SHIFT24) +
297
- toB64(clientHash30 / SHIFT18) +
298
- toB64(clientHash30 / SHIFT12) +
299
- toB64(clientHash30 / SHIFT6) +
300
- toB64(clientHash30);
301
- const decodeHlc = (hlc16) => [
302
- fromB64(hlc16, 0) * SHIFT36 +
303
- fromB64(hlc16, 1) * SHIFT30 +
304
- fromB64(hlc16, 2) * SHIFT24 +
305
- fromB64(hlc16, 3) * SHIFT18 +
306
- fromB64(hlc16, 4) * SHIFT12 +
307
- fromB64(hlc16, 5) * SHIFT6 +
308
- fromB64(hlc16, 6),
309
- fromB64(hlc16, 7) * SHIFT18 +
310
- fromB64(hlc16, 8) * SHIFT12 +
311
- fromB64(hlc16, 9) * SHIFT6 +
312
- fromB64(hlc16, 10),
313
- fromB64(hlc16, 11) * SHIFT24 +
314
- fromB64(hlc16, 12) * SHIFT18 +
315
- fromB64(hlc16, 13) * SHIFT12 +
316
- fromB64(hlc16, 14) * SHIFT6 +
317
- fromB64(hlc16, 15),
318
- ];
319
- const getHlcFunctions = (uniqueId) => {
320
- let logicalTime = 0;
321
- let lastCounter = -1;
322
- const uniqueIdHash = getHash(uniqueId);
323
- const getHlc = () => {
324
- seenHlc();
325
- return encodeHlc(logicalTime, ++lastCounter, uniqueIdHash);
326
- };
327
- const seenHlc = (hlc) => {
328
- const previousLogicalTime = logicalTime;
329
- const [remoteLogicalTime, remoteCounter] =
330
- isUndefined(hlc) || hlc == '' ? [0, 0] : decodeHlc(hlc);
331
- logicalTime = mathMax(
332
- previousLogicalTime,
333
- remoteLogicalTime,
334
- globalThis.HLC_TIME ?? Date.now(),
335
- );
336
- lastCounter =
337
- logicalTime == previousLogicalTime
338
- ? logicalTime == remoteLogicalTime
339
- ? mathMax(lastCounter, remoteCounter)
340
- : lastCounter
341
- : logicalTime == remoteLogicalTime
342
- ? remoteCounter
343
- : -1;
344
- };
345
- return [getHlc, seenHlc];
346
- };
265
+ const ENCODE =
266
+ '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'.split(
267
+ EMPTY_STRING,
268
+ );
269
+ mapNew(arrayMap(ENCODE, (char, index) => [char, index]));
270
+ const encode = (num) => ENCODE[num & MASK6];
271
+
272
+ const getUniqueId = (length = 16) =>
273
+ arrayReduce(
274
+ crypto.getRandomValues(new Uint8Array(length)),
275
+ (uniqueId, number) => uniqueId + encode(number),
276
+ '',
277
+ );
347
278
 
348
279
  const RESPONSE = 0;
349
280
  const GET_CONTENT_HASHES = 1;
@@ -365,7 +296,6 @@ const createCustomSynchronizer = (
365
296
  let persisterListener;
366
297
  let sends = 0;
367
298
  let receives = 0;
368
- const [getHlc] = getHlcFunctions(store.getId());
369
299
  const pendingRequests = mapNew();
370
300
  onReceive((fromClientId, requestId, messageType, messageBody) => {
371
301
  {
@@ -410,7 +340,7 @@ const createCustomSynchronizer = (
410
340
  });
411
341
  const request = async (toClientId, messageType, messageBody = EMPTY_STRING) =>
412
342
  promiseNew((resolve, reject) => {
413
- const requestId = getHlc();
343
+ const requestId = getUniqueId();
414
344
  const timeout = setTimeout(() => {
415
345
  collDel(pendingRequests, requestId);
416
346
  reject(