tinybase 5.0.0-beta.4 → 5.0.0-beta.6

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 (418) hide show
  1. package/lib/checkpoints.js +1 -1
  2. package/lib/checkpoints.js.gz +0 -0
  3. package/lib/cjs/checkpoints.cjs +1 -1
  4. package/lib/cjs/checkpoints.cjs.gz +0 -0
  5. package/lib/cjs/indexes.cjs +1 -1
  6. package/lib/cjs/indexes.cjs.gz +0 -0
  7. package/lib/cjs/mergeable-store.cjs +1 -1
  8. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  9. package/lib/cjs/metrics.cjs +1 -1
  10. package/lib/cjs/metrics.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  12. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  14. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  16. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  18. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  20. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  22. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-file.cjs +1 -1
  24. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  26. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-libsql.cjs +1 -0
  28. package/lib/cjs/persisters/persister-libsql.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  30. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  31. package/lib/cjs/persisters/persister-powersync.cjs +1 -0
  32. package/lib/cjs/persisters/persister-powersync.cjs.gz +0 -0
  33. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  34. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  35. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  36. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  37. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  38. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  39. package/lib/cjs/persisters/persister-sync.cjs +1 -0
  40. package/lib/cjs/persisters/persister-sync.cjs.gz +0 -0
  41. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  42. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  43. package/lib/cjs/persisters.cjs +1 -1
  44. package/lib/cjs/persisters.cjs.gz +0 -0
  45. package/lib/cjs/queries.cjs +1 -1
  46. package/lib/cjs/queries.cjs.gz +0 -0
  47. package/lib/cjs/relationships.cjs +1 -1
  48. package/lib/cjs/relationships.cjs.gz +0 -0
  49. package/lib/cjs/store.cjs +1 -1
  50. package/lib/cjs/store.cjs.gz +0 -0
  51. package/lib/cjs/tinybase.cjs +1 -1
  52. package/lib/cjs/tinybase.cjs.gz +0 -0
  53. package/lib/cjs/tools.cjs +1 -1
  54. package/lib/cjs/tools.cjs.gz +0 -0
  55. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  56. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  57. package/lib/cjs/ui-react.cjs +1 -1
  58. package/lib/cjs/ui-react.cjs.gz +0 -0
  59. package/lib/cjs-es6/checkpoints.cjs +1 -1
  60. package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
  61. package/lib/cjs-es6/indexes.cjs +1 -1
  62. package/lib/cjs-es6/indexes.cjs.gz +0 -0
  63. package/lib/cjs-es6/mergeable-store.cjs +1 -1
  64. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  65. package/lib/cjs-es6/metrics.cjs +1 -1
  66. package/lib/cjs-es6/metrics.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  70. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  72. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  73. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  74. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  75. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  76. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  77. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  78. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  79. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  80. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  81. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  82. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  83. package/lib/cjs-es6/persisters/persister-libsql.cjs +1 -0
  84. package/lib/cjs-es6/persisters/persister-libsql.cjs.gz +0 -0
  85. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  86. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  87. package/lib/cjs-es6/persisters/persister-powersync.cjs +1 -0
  88. package/lib/cjs-es6/persisters/persister-powersync.cjs.gz +0 -0
  89. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  90. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  91. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  92. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  93. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  94. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  95. package/lib/cjs-es6/persisters/persister-sync.cjs +1 -0
  96. package/lib/cjs-es6/persisters/persister-sync.cjs.gz +0 -0
  97. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  98. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  99. package/lib/cjs-es6/persisters.cjs +1 -1
  100. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  101. package/lib/cjs-es6/queries.cjs +1 -1
  102. package/lib/cjs-es6/queries.cjs.gz +0 -0
  103. package/lib/cjs-es6/relationships.cjs +1 -1
  104. package/lib/cjs-es6/relationships.cjs.gz +0 -0
  105. package/lib/cjs-es6/store.cjs +1 -1
  106. package/lib/cjs-es6/store.cjs.gz +0 -0
  107. package/lib/cjs-es6/tinybase.cjs +1 -1
  108. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  109. package/lib/cjs-es6/tools.cjs +1 -1
  110. package/lib/cjs-es6/tools.cjs.gz +0 -0
  111. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  112. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  113. package/lib/cjs-es6/ui-react.cjs +1 -1
  114. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  115. package/lib/debug/checkpoints.js +3 -1
  116. package/lib/debug/indexes.js +3 -1
  117. package/lib/debug/mergeable-store.js +403 -179
  118. package/lib/debug/metrics.js +3 -1
  119. package/lib/debug/persisters/persister-automerge.js +42 -47
  120. package/lib/debug/persisters/persister-browser.js +42 -47
  121. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +67 -61
  122. package/lib/debug/persisters/persister-electric-sql.js +67 -61
  123. package/lib/debug/persisters/persister-expo-sqlite-next.js +67 -61
  124. package/lib/debug/persisters/persister-expo-sqlite.js +67 -61
  125. package/lib/debug/persisters/persister-file.js +42 -47
  126. package/lib/debug/persisters/persister-indexed-db.js +42 -47
  127. package/lib/debug/persisters/persister-libsql.js +902 -0
  128. package/lib/debug/persisters/persister-partykit-client.js +42 -47
  129. package/lib/debug/persisters/persister-powersync.js +917 -0
  130. package/lib/debug/persisters/persister-remote.js +42 -47
  131. package/lib/debug/persisters/persister-sqlite-wasm.js +67 -61
  132. package/lib/debug/persisters/persister-sqlite3.js +67 -61
  133. package/lib/debug/persisters/persister-sync.js +594 -0
  134. package/lib/debug/persisters/persister-yjs.js +44 -49
  135. package/lib/debug/persisters.js +41 -46
  136. package/lib/debug/queries.js +7 -4
  137. package/lib/debug/relationships.js +3 -1
  138. package/lib/debug/store.js +51 -36
  139. package/lib/debug/tinybase.js +439 -223
  140. package/lib/debug/tools.js +9 -6
  141. package/lib/debug/ui-react-dom.js +88 -80
  142. package/lib/debug/ui-react.js +1 -1
  143. package/lib/es6/checkpoints.js +1 -1
  144. package/lib/es6/checkpoints.js.gz +0 -0
  145. package/lib/es6/indexes.js +1 -1
  146. package/lib/es6/indexes.js.gz +0 -0
  147. package/lib/es6/mergeable-store.js +1 -1
  148. package/lib/es6/mergeable-store.js.gz +0 -0
  149. package/lib/es6/metrics.js +1 -1
  150. package/lib/es6/metrics.js.gz +0 -0
  151. package/lib/es6/persisters/persister-automerge.js +1 -1
  152. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  153. package/lib/es6/persisters/persister-browser.js +1 -1
  154. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  155. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  156. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  157. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  158. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  159. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  160. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  161. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  162. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  163. package/lib/es6/persisters/persister-file.js +1 -1
  164. package/lib/es6/persisters/persister-file.js.gz +0 -0
  165. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  166. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  167. package/lib/es6/persisters/persister-libsql.js +1 -0
  168. package/lib/es6/persisters/persister-libsql.js.gz +0 -0
  169. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  170. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  171. package/lib/es6/persisters/persister-powersync.js +1 -0
  172. package/lib/es6/persisters/persister-powersync.js.gz +0 -0
  173. package/lib/es6/persisters/persister-remote.js +1 -1
  174. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  175. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  176. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  177. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  178. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  179. package/lib/es6/persisters/persister-sync.js +1 -0
  180. package/lib/es6/persisters/persister-sync.js.gz +0 -0
  181. package/lib/es6/persisters/persister-yjs.js +1 -1
  182. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  183. package/lib/es6/persisters.js +1 -1
  184. package/lib/es6/persisters.js.gz +0 -0
  185. package/lib/es6/queries.js +1 -1
  186. package/lib/es6/queries.js.gz +0 -0
  187. package/lib/es6/relationships.js +1 -1
  188. package/lib/es6/relationships.js.gz +0 -0
  189. package/lib/es6/store.js +1 -1
  190. package/lib/es6/store.js.gz +0 -0
  191. package/lib/es6/tinybase.js +1 -1
  192. package/lib/es6/tinybase.js.gz +0 -0
  193. package/lib/es6/tools.js +1 -1
  194. package/lib/es6/tools.js.gz +0 -0
  195. package/lib/es6/ui-react-dom-debug.js +1 -1
  196. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  197. package/lib/es6/ui-react.js +1 -1
  198. package/lib/es6/ui-react.js.gz +0 -0
  199. package/lib/indexes.js +1 -1
  200. package/lib/indexes.js.gz +0 -0
  201. package/lib/mergeable-store.js +1 -1
  202. package/lib/mergeable-store.js.gz +0 -0
  203. package/lib/metrics.js +1 -1
  204. package/lib/metrics.js.gz +0 -0
  205. package/lib/persisters/persister-automerge.js +1 -1
  206. package/lib/persisters/persister-automerge.js.gz +0 -0
  207. package/lib/persisters/persister-browser.js +1 -1
  208. package/lib/persisters/persister-browser.js.gz +0 -0
  209. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  210. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  211. package/lib/persisters/persister-electric-sql.js +1 -1
  212. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  213. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  214. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  215. package/lib/persisters/persister-expo-sqlite.js +1 -1
  216. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  217. package/lib/persisters/persister-file.js +1 -1
  218. package/lib/persisters/persister-file.js.gz +0 -0
  219. package/lib/persisters/persister-indexed-db.js +1 -1
  220. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  221. package/lib/persisters/persister-libsql.js +1 -0
  222. package/lib/persisters/persister-libsql.js.gz +0 -0
  223. package/lib/persisters/persister-partykit-client.js +1 -1
  224. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  225. package/lib/persisters/persister-powersync.js +1 -0
  226. package/lib/persisters/persister-powersync.js.gz +0 -0
  227. package/lib/persisters/persister-remote.js +1 -1
  228. package/lib/persisters/persister-remote.js.gz +0 -0
  229. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  230. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  231. package/lib/persisters/persister-sqlite3.js +1 -1
  232. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  233. package/lib/persisters/persister-sync.js +1 -0
  234. package/lib/persisters/persister-sync.js.gz +0 -0
  235. package/lib/persisters/persister-yjs.js +1 -1
  236. package/lib/persisters/persister-yjs.js.gz +0 -0
  237. package/lib/persisters.js +1 -1
  238. package/lib/persisters.js.gz +0 -0
  239. package/lib/queries.js +1 -1
  240. package/lib/queries.js.gz +0 -0
  241. package/lib/relationships.js +1 -1
  242. package/lib/relationships.js.gz +0 -0
  243. package/lib/store.js +1 -1
  244. package/lib/store.js.gz +0 -0
  245. package/lib/tinybase.js +1 -1
  246. package/lib/tinybase.js.gz +0 -0
  247. package/lib/tools.js +1 -1
  248. package/lib/tools.js.gz +0 -0
  249. package/lib/types/checkpoints.d.ts +2 -2
  250. package/lib/types/indexes.d.ts +2 -2
  251. package/lib/types/mergeable-store.d.ts +143 -20
  252. package/lib/types/metrics.d.ts +2 -2
  253. package/lib/types/persisters/persister-automerge.d.ts +3 -0
  254. package/lib/types/persisters/persister-browser.d.ts +9 -2
  255. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +3 -0
  256. package/lib/types/persisters/persister-electric-sql.d.ts +3 -0
  257. package/lib/types/persisters/persister-expo-sqlite-next.d.ts +3 -0
  258. package/lib/types/persisters/persister-expo-sqlite.d.ts +3 -0
  259. package/lib/types/persisters/persister-file.d.ts +5 -1
  260. package/lib/types/persisters/persister-indexed-db.d.ts +3 -0
  261. package/lib/types/persisters/persister-libsql.d.ts +142 -0
  262. package/lib/types/persisters/persister-partykit-client.d.ts +3 -0
  263. package/lib/types/persisters/persister-powersync.d.ts +157 -0
  264. package/lib/types/persisters/persister-remote.d.ts +3 -0
  265. package/lib/types/persisters/persister-sqlite-wasm.d.ts +3 -0
  266. package/lib/types/persisters/persister-sqlite3.d.ts +3 -0
  267. package/lib/types/persisters/persister-sync.d.ts +182 -0
  268. package/lib/types/persisters/persister-yjs.d.ts +5 -2
  269. package/lib/types/persisters.d.ts +61 -3
  270. package/lib/types/queries.d.ts +2 -2
  271. package/lib/types/relationships.d.ts +2 -2
  272. package/lib/types/store.d.ts +36 -3
  273. package/lib/types/tinybase.d.ts +9 -9
  274. package/lib/types/tools.d.ts +2 -2
  275. package/lib/types/ui-react.d.ts +8 -8
  276. package/lib/types/with-schemas/checkpoints.d.ts +2 -2
  277. package/lib/types/with-schemas/indexes.d.ts +2 -2
  278. package/lib/types/with-schemas/mergeable-store.d.ts +415 -40
  279. package/lib/types/with-schemas/metrics.d.ts +2 -2
  280. package/lib/types/with-schemas/persisters/persister-automerge.d.ts +4 -1
  281. package/lib/types/with-schemas/persisters/persister-browser.d.ts +13 -6
  282. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +4 -1
  283. package/lib/types/with-schemas/persisters/persister-electric-sql.d.ts +4 -1
  284. package/lib/types/with-schemas/persisters/persister-expo-sqlite-next.d.ts +4 -1
  285. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +4 -1
  286. package/lib/types/with-schemas/persisters/persister-file.d.ts +7 -3
  287. package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +4 -1
  288. package/lib/types/with-schemas/persisters/persister-libsql.d.ts +155 -0
  289. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +4 -1
  290. package/lib/types/with-schemas/persisters/persister-powersync.d.ts +170 -0
  291. package/lib/types/with-schemas/persisters/persister-remote.d.ts +4 -1
  292. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +4 -1
  293. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +4 -1
  294. package/lib/types/with-schemas/persisters/persister-sync.d.ts +195 -0
  295. package/lib/types/with-schemas/persisters/persister-yjs.d.ts +6 -3
  296. package/lib/types/with-schemas/persisters.d.ts +80 -7
  297. package/lib/types/with-schemas/queries.d.ts +3 -3
  298. package/lib/types/with-schemas/relationships.d.ts +2 -2
  299. package/lib/types/with-schemas/store.d.ts +136 -89
  300. package/lib/types/with-schemas/tinybase.d.ts +9 -9
  301. package/lib/types/with-schemas/tools.d.ts +2 -2
  302. package/lib/types/with-schemas/ui-react.d.ts +8 -8
  303. package/lib/ui-react.js +1 -1
  304. package/lib/ui-react.js.gz +0 -0
  305. package/lib/umd/checkpoints.js +1 -1
  306. package/lib/umd/checkpoints.js.gz +0 -0
  307. package/lib/umd/indexes.js +1 -1
  308. package/lib/umd/indexes.js.gz +0 -0
  309. package/lib/umd/mergeable-store.js +1 -1
  310. package/lib/umd/mergeable-store.js.gz +0 -0
  311. package/lib/umd/metrics.js +1 -1
  312. package/lib/umd/metrics.js.gz +0 -0
  313. package/lib/umd/persisters/persister-automerge.js +1 -1
  314. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  315. package/lib/umd/persisters/persister-browser.js +1 -1
  316. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  317. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  318. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  319. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  320. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  321. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  322. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  323. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  324. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  325. package/lib/umd/persisters/persister-file.js +1 -1
  326. package/lib/umd/persisters/persister-file.js.gz +0 -0
  327. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  328. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  329. package/lib/umd/persisters/persister-libsql.js +1 -0
  330. package/lib/umd/persisters/persister-libsql.js.gz +0 -0
  331. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  332. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  333. package/lib/umd/persisters/persister-powersync.js +1 -0
  334. package/lib/umd/persisters/persister-powersync.js.gz +0 -0
  335. package/lib/umd/persisters/persister-remote.js +1 -1
  336. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  337. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  338. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  339. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  340. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  341. package/lib/umd/persisters/persister-sync.js +1 -0
  342. package/lib/umd/persisters/persister-sync.js.gz +0 -0
  343. package/lib/umd/persisters/persister-yjs.js +1 -1
  344. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  345. package/lib/umd/persisters.js +1 -1
  346. package/lib/umd/persisters.js.gz +0 -0
  347. package/lib/umd/queries.js +1 -1
  348. package/lib/umd/queries.js.gz +0 -0
  349. package/lib/umd/relationships.js +1 -1
  350. package/lib/umd/relationships.js.gz +0 -0
  351. package/lib/umd/store.js +1 -1
  352. package/lib/umd/store.js.gz +0 -0
  353. package/lib/umd/tinybase.js +1 -1
  354. package/lib/umd/tinybase.js.gz +0 -0
  355. package/lib/umd/tools.js +1 -1
  356. package/lib/umd/tools.js.gz +0 -0
  357. package/lib/umd/ui-react-dom-debug.js +1 -1
  358. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  359. package/lib/umd/ui-react.js +1 -1
  360. package/lib/umd/ui-react.js.gz +0 -0
  361. package/lib/umd-es6/checkpoints.js +1 -1
  362. package/lib/umd-es6/checkpoints.js.gz +0 -0
  363. package/lib/umd-es6/indexes.js +1 -1
  364. package/lib/umd-es6/indexes.js.gz +0 -0
  365. package/lib/umd-es6/mergeable-store.js +1 -1
  366. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  367. package/lib/umd-es6/metrics.js +1 -1
  368. package/lib/umd-es6/metrics.js.gz +0 -0
  369. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  370. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  371. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  372. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  373. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  374. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  375. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  376. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  377. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  378. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  379. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  380. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  381. package/lib/umd-es6/persisters/persister-file.js +1 -1
  382. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  383. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  384. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  385. package/lib/umd-es6/persisters/persister-libsql.js +1 -0
  386. package/lib/umd-es6/persisters/persister-libsql.js.gz +0 -0
  387. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  388. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  389. package/lib/umd-es6/persisters/persister-powersync.js +1 -0
  390. package/lib/umd-es6/persisters/persister-powersync.js.gz +0 -0
  391. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  392. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  393. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  394. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  395. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  396. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  397. package/lib/umd-es6/persisters/persister-sync.js +1 -0
  398. package/lib/umd-es6/persisters/persister-sync.js.gz +0 -0
  399. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  400. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  401. package/lib/umd-es6/persisters.js +1 -1
  402. package/lib/umd-es6/persisters.js.gz +0 -0
  403. package/lib/umd-es6/queries.js +1 -1
  404. package/lib/umd-es6/queries.js.gz +0 -0
  405. package/lib/umd-es6/relationships.js +1 -1
  406. package/lib/umd-es6/relationships.js.gz +0 -0
  407. package/lib/umd-es6/store.js +1 -1
  408. package/lib/umd-es6/store.js.gz +0 -0
  409. package/lib/umd-es6/tinybase.js +1 -1
  410. package/lib/umd-es6/tinybase.js.gz +0 -0
  411. package/lib/umd-es6/tools.js +1 -1
  412. package/lib/umd-es6/tools.js.gz +0 -0
  413. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  414. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  415. package/lib/umd-es6/ui-react.js +1 -1
  416. package/lib/umd-es6/ui-react.js.gz +0 -0
  417. package/package.json +51 -35
  418. package/readme.md +2 -2
@@ -42,8 +42,6 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
42
42
  const object = Object;
43
43
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
44
44
  const objEntries = object.entries;
45
- const objIds = object.keys;
46
- const objFreeze = object.freeze;
47
45
  const isObject = (obj) =>
48
46
  !isUndefined(obj) &&
49
47
  ifNotUndefined(
@@ -54,6 +52,8 @@ const isObject = (obj) =>
54
52
  /* istanbul ignore next */
55
53
  () => true,
56
54
  );
55
+ const objIds = object.keys;
56
+ const objFreeze = object.freeze;
57
57
  const objNew = (entries = []) => object.fromEntries(entries);
58
58
  const objMerge = (...objs) => object.assign({}, ...objs);
59
59
  const objHas = (obj, id) => id in obj;
@@ -76,9 +76,11 @@ const mapMap = (coll, cb) =>
76
76
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
77
77
  const mapSet = (map, key, value) =>
78
78
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
79
- const mapEnsure = (map, key, getDefaultValue) => {
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));
82
84
  }
83
85
  return mapGet(map, key);
84
86
  };
@@ -96,6 +98,9 @@ const setNew = (entryOrEntries) =>
96
98
  );
97
99
  const setAdd = (set, value) => set?.add(value);
98
100
 
101
+ const TABLE = 'TABLE';
102
+ const ALTER_TABLE = 'ALTER ' + TABLE;
103
+ const DELETE_FROM = 'DELETE FROM';
99
104
  const SELECT_STAR_FROM = SELECT + '*FROM';
100
105
  const FROM_PRAGMA_TABLE = 'FROM pragma_table_';
101
106
  const WHERE = 'WHERE';
@@ -190,15 +195,20 @@ const getCommandFunctions = (
190
195
  arrayIsEmpty(tableColumnNames) &&
191
196
  collHas(schemaMap, tableName)
192
197
  ) {
193
- await cmd('DROP TABLE' + escapeId(tableName));
198
+ await cmd('DROP ' + TABLE + escapeId(tableName));
194
199
  mapSet(schemaMap, tableName);
195
200
  return;
196
201
  }
197
202
  if (!arrayIsEmpty(tableColumnNames) && !collHas(schemaMap, tableName)) {
198
203
  await cmd(
199
- `CREATE TABLE${escapeId(tableName)}(${escapeId(rowIdColumnName)} PRIMARY KEY ON CONFLICT REPLACE${arrayJoin(
200
- arrayMap(tableColumnNames, (cellId) => COMMA + escapeId(cellId)),
201
- )});`,
204
+ `CREATE ` +
205
+ TABLE +
206
+ escapeId(tableName) +
207
+ '(' +
208
+ escapeId(rowIdColumnName) +
209
+ ` PRIMARY KEY ON CONFLICT REPLACE${arrayJoin(
210
+ arrayMap(tableColumnNames, (cellId) => COMMA + escapeId(cellId)),
211
+ )});`,
202
212
  );
203
213
  mapSet(
204
214
  schemaMap,
@@ -218,7 +228,7 @@ const getCommandFunctions = (
218
228
  ...arrayMap(tableColumnNames, async (columnName) => {
219
229
  if (!collDel(columnNamesAccountedFor, columnName)) {
220
230
  await cmd(
221
- `ALTER TABLE${escapeId(tableName)}ADD${escapeId(columnName)}`,
231
+ ALTER_TABLE + escapeId(tableName) + 'ADD' + escapeId(columnName),
222
232
  );
223
233
  mapSet(tableSchemaMap, columnName, EMPTY_STRING);
224
234
  }
@@ -229,9 +239,10 @@ const getCommandFunctions = (
229
239
  async (columnName) => {
230
240
  if (columnName != rowIdColumnName) {
231
241
  await cmd(
232
- `ALTER TABLE${escapeId(tableName)}DROP${escapeId(
233
- columnName,
234
- )}`,
242
+ ALTER_TABLE +
243
+ escapeId(tableName) +
244
+ 'DROP' +
245
+ escapeId(columnName),
235
246
  );
236
247
  mapSet(tableSchemaMap, columnName);
237
248
  }
@@ -242,13 +253,13 @@ const getCommandFunctions = (
242
253
  }
243
254
  if (partial) {
244
255
  if (isUndefined(content)) {
245
- await cmd('DELETE FROM' + escapeId(tableName) + 'WHERE 1');
256
+ await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
246
257
  } else {
247
258
  await promiseAll(
248
259
  objToArray(content, async (row, rowId) => {
249
260
  if (isUndefined(row)) {
250
261
  await cmd(
251
- 'DELETE FROM' +
262
+ DELETE_FROM +
252
263
  escapeId(tableName) +
253
264
  WHERE +
254
265
  escapeId(rowIdColumnName) +
@@ -290,9 +301,10 @@ const getCommandFunctions = (
290
301
  rowIdColumnName,
291
302
  changingColumnNames,
292
303
  args,
304
+ useOnConflict,
293
305
  );
294
306
  await cmd(
295
- 'DELETE FROM' +
307
+ DELETE_FROM +
296
308
  escapeId(tableName) +
297
309
  WHERE +
298
310
  escapeId(rowIdColumnName) +
@@ -302,7 +314,7 @@ const getCommandFunctions = (
302
314
  deleteRowIds,
303
315
  );
304
316
  } else if (collHas(schemaMap, tableName)) {
305
- await cmd('DELETE FROM' + escapeId(tableName) + 'WHERE 1');
317
+ await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
306
318
  }
307
319
  }
308
320
  };
@@ -377,7 +389,6 @@ const jsonParse = JSON.parse;
377
389
 
378
390
  const scheduleRunning = mapNew();
379
391
  const scheduleActions = mapNew();
380
- const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
381
392
  const getStoreFunctions = (supportsMergeableStore, store) =>
382
393
  !supportsMergeableStore || isUndefined(store.getMergeableContent)
383
394
  ? [
@@ -402,16 +413,15 @@ const createCustomPersister = (
402
413
  delPersisterListener,
403
414
  onIgnoredError,
404
415
  supportsMergeableStore,
405
- [getThing, thing] = [],
416
+ extra = {},
406
417
  scheduleId = [],
407
418
  ) => {
408
- let listenerId;
409
419
  let loadSave = 0;
410
420
  let loads = 0;
411
421
  let saves = 0;
412
- let listening = 0;
413
422
  let action;
414
- let listeningHandle;
423
+ let autoLoadHandle;
424
+ let autoSaveListenerId;
415
425
  mapEnsure(scheduleRunning, scheduleId, () => 0);
416
426
  mapEnsure(scheduleActions, scheduleId, () => []);
417
427
  const [isMergeableStore, getContent, getChanges, hasChanges] =
@@ -447,55 +457,51 @@ const createCustomPersister = (
447
457
  }
448
458
  return persister;
449
459
  };
460
+ const setContentOrChanges = (contentOrChanges) => {
461
+ (isMergeableStore && isString(contentOrChanges?.[0])
462
+ ? contentOrChanges?.[1][2] === 1
463
+ ? store.applyMergeableChanges
464
+ : store.setMergeableContent
465
+ : contentOrChanges?.[2] === 1
466
+ ? store.applyChanges
467
+ : store.setContent)(contentOrChanges);
468
+ };
450
469
  const persister = {
451
470
  load: async (initialTables, initialValues) =>
452
471
  await loadLock(async () => {
453
472
  try {
454
- const content = await getPersisted();
455
- (isMergeableStore && isMergeable(content)
456
- ? store.setMergeableContent
457
- : store.setContent)(content);
458
- } catch {
473
+ setContentOrChanges(await getPersisted());
474
+ } catch (error) {
475
+ onIgnoredError?.(error);
459
476
  store.setContent([initialTables, initialValues]);
460
477
  }
461
478
  }),
462
479
  startAutoLoad: async (initialTables = {}, initialValues = {}) => {
463
- persister.stopAutoLoad();
464
- await persister.load(initialTables, initialValues);
465
- listening = 1;
466
- listeningHandle = addPersisterListener(
480
+ await persister.stopAutoLoad().load(initialTables, initialValues);
481
+ autoLoadHandle = addPersisterListener(
467
482
  async (getContent2, getChanges2) => {
468
- if (getChanges2) {
469
- const changes = getChanges2();
470
- await loadLock(async () =>
471
- (isMergeableStore && isMergeable(changes)
472
- ? store.applyMergeableChanges
473
- : store.applyChanges)(changes),
474
- );
475
- } else {
476
- await loadLock(async () => {
477
- try {
478
- const content = getContent2?.() ?? (await getPersisted());
479
- (isMergeableStore && isMergeable(content)
480
- ? store.setMergeableContent
481
- : store.setContent)(content);
482
- } catch (error) {
483
- onIgnoredError?.(error);
484
- }
485
- });
486
- }
483
+ const changes = getChanges2?.();
484
+ await loadLock(async () => {
485
+ try {
486
+ setContentOrChanges(
487
+ changes ?? getContent2?.() ?? (await getPersisted()),
488
+ );
489
+ } catch (error) {
490
+ onIgnoredError?.(error);
491
+ }
492
+ });
487
493
  },
488
494
  );
489
495
  return persister;
490
496
  },
491
497
  stopAutoLoad: () => {
492
- if (listening) {
493
- delPersisterListener(listeningHandle);
494
- listeningHandle = void 0;
495
- listening = 0;
498
+ if (autoLoadHandle) {
499
+ delPersisterListener(autoLoadHandle);
500
+ autoLoadHandle = void 0;
496
501
  }
497
502
  return persister;
498
503
  },
504
+ isAutoLoading: () => !isUndefined(autoLoadHandle),
499
505
  save: async (getChanges2) => {
500
506
  /* istanbul ignore else */
501
507
  if (loadSave != 1) {
@@ -517,7 +523,7 @@ const createCustomPersister = (
517
523
  },
518
524
  startAutoSave: async () => {
519
525
  await persister.stopAutoSave().save();
520
- listenerId = store.addDidFinishTransactionListener(() => {
526
+ autoSaveListenerId = store.addDidFinishTransactionListener(() => {
521
527
  const changes = getChanges();
522
528
  if (hasChanges(changes)) {
523
529
  persister.save(() => changes);
@@ -526,10 +532,11 @@ const createCustomPersister = (
526
532
  return persister;
527
533
  },
528
534
  stopAutoSave: () => {
529
- ifNotUndefined(listenerId, store.delListener);
530
- listenerId = void 0;
535
+ ifNotUndefined(autoSaveListenerId, store.delListener);
536
+ autoSaveListenerId = void 0;
531
537
  return persister;
532
538
  },
539
+ isAutoSaving: () => !isUndefined(autoSaveListenerId),
533
540
  schedule: async (...actions) => {
534
541
  arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
535
542
  await run();
@@ -538,10 +545,8 @@ const createCustomPersister = (
538
545
  getStore: () => store,
539
546
  destroy: () => persister.stopAutoLoad().stopAutoSave(),
540
547
  getStats: () => ({loads, saves}),
548
+ ...extra,
541
549
  };
542
- if (getThing) {
543
- persister[getThing] = () => thing;
544
- }
545
550
  return objFreeze(persister);
546
551
  };
547
552
 
@@ -556,9 +561,10 @@ const createJsonSqlitePersister = (
556
561
  managedTableNames,
557
562
  db,
558
563
  getThing,
564
+ useOnConflict,
559
565
  ) => {
560
566
  const [refreshSchema, loadTable, saveTable, transaction] =
561
- getCommandFunctions(cmd, managedTableNames, onIgnoredError);
567
+ getCommandFunctions(cmd, managedTableNames, onIgnoredError, useOnConflict);
562
568
  const getPersisted = async () =>
563
569
  await transaction(async () => {
564
570
  await refreshSchema();
@@ -589,7 +595,7 @@ const createJsonSqlitePersister = (
589
595
  delPersisterListener,
590
596
  onIgnoredError,
591
597
  false,
592
- [getThing, db],
598
+ {[getThing]: () => db},
593
599
  db,
594
600
  );
595
601
  return persister;
@@ -696,7 +702,7 @@ const createTabularSqlitePersister = (
696
702
  delPersisterListener,
697
703
  onIgnoredError,
698
704
  false,
699
- [getThing, db],
705
+ {[getThing]: () => db},
700
706
  db,
701
707
  );
702
708
  return persister;
@@ -43,8 +43,6 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
43
43
  const object = Object;
44
44
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
45
45
  const objEntries = object.entries;
46
- const objIds = object.keys;
47
- const objFreeze = object.freeze;
48
46
  const isObject = (obj) =>
49
47
  !isUndefined(obj) &&
50
48
  ifNotUndefined(
@@ -55,6 +53,8 @@ const isObject = (obj) =>
55
53
  /* istanbul ignore next */
56
54
  () => true,
57
55
  );
56
+ const objIds = object.keys;
57
+ const objFreeze = object.freeze;
58
58
  const objNew = (entries = []) => object.fromEntries(entries);
59
59
  const objMerge = (...objs) => object.assign({}, ...objs);
60
60
  const objHas = (obj, id) => id in obj;
@@ -77,9 +77,11 @@ const mapMap = (coll, cb) =>
77
77
  arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
78
78
  const mapSet = (map, key, value) =>
79
79
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
80
- const mapEnsure = (map, key, getDefaultValue) => {
80
+ const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
81
81
  if (!collHas(map, key)) {
82
82
  mapSet(map, key, getDefaultValue());
83
+ } else {
84
+ hadExistingValue?.(mapGet(map, key));
83
85
  }
84
86
  return mapGet(map, key);
85
87
  };
@@ -97,6 +99,9 @@ const setNew = (entryOrEntries) =>
97
99
  );
98
100
  const setAdd = (set, value) => set?.add(value);
99
101
 
102
+ const TABLE = 'TABLE';
103
+ const ALTER_TABLE = 'ALTER ' + TABLE;
104
+ const DELETE_FROM = 'DELETE FROM';
100
105
  const SELECT_STAR_FROM = SELECT + '*FROM';
101
106
  const FROM_PRAGMA_TABLE = 'FROM pragma_table_';
102
107
  const WHERE = 'WHERE';
@@ -191,15 +196,20 @@ const getCommandFunctions = (
191
196
  arrayIsEmpty(tableColumnNames) &&
192
197
  collHas(schemaMap, tableName)
193
198
  ) {
194
- await cmd('DROP TABLE' + escapeId(tableName));
199
+ await cmd('DROP ' + TABLE + escapeId(tableName));
195
200
  mapSet(schemaMap, tableName);
196
201
  return;
197
202
  }
198
203
  if (!arrayIsEmpty(tableColumnNames) && !collHas(schemaMap, tableName)) {
199
204
  await cmd(
200
- `CREATE TABLE${escapeId(tableName)}(${escapeId(rowIdColumnName)} PRIMARY KEY ON CONFLICT REPLACE${arrayJoin(
201
- arrayMap(tableColumnNames, (cellId) => COMMA + escapeId(cellId)),
202
- )});`,
205
+ `CREATE ` +
206
+ TABLE +
207
+ escapeId(tableName) +
208
+ '(' +
209
+ escapeId(rowIdColumnName) +
210
+ ` PRIMARY KEY ON CONFLICT REPLACE${arrayJoin(
211
+ arrayMap(tableColumnNames, (cellId) => COMMA + escapeId(cellId)),
212
+ )});`,
203
213
  );
204
214
  mapSet(
205
215
  schemaMap,
@@ -219,7 +229,7 @@ const getCommandFunctions = (
219
229
  ...arrayMap(tableColumnNames, async (columnName) => {
220
230
  if (!collDel(columnNamesAccountedFor, columnName)) {
221
231
  await cmd(
222
- `ALTER TABLE${escapeId(tableName)}ADD${escapeId(columnName)}`,
232
+ ALTER_TABLE + escapeId(tableName) + 'ADD' + escapeId(columnName),
223
233
  );
224
234
  mapSet(tableSchemaMap, columnName, EMPTY_STRING);
225
235
  }
@@ -230,9 +240,10 @@ const getCommandFunctions = (
230
240
  async (columnName) => {
231
241
  if (columnName != rowIdColumnName) {
232
242
  await cmd(
233
- `ALTER TABLE${escapeId(tableName)}DROP${escapeId(
234
- columnName,
235
- )}`,
243
+ ALTER_TABLE +
244
+ escapeId(tableName) +
245
+ 'DROP' +
246
+ escapeId(columnName),
236
247
  );
237
248
  mapSet(tableSchemaMap, columnName);
238
249
  }
@@ -243,13 +254,13 @@ const getCommandFunctions = (
243
254
  }
244
255
  if (partial) {
245
256
  if (isUndefined(content)) {
246
- await cmd('DELETE FROM' + escapeId(tableName) + 'WHERE 1');
257
+ await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
247
258
  } else {
248
259
  await promiseAll(
249
260
  objToArray(content, async (row, rowId) => {
250
261
  if (isUndefined(row)) {
251
262
  await cmd(
252
- 'DELETE FROM' +
263
+ DELETE_FROM +
253
264
  escapeId(tableName) +
254
265
  WHERE +
255
266
  escapeId(rowIdColumnName) +
@@ -291,9 +302,10 @@ const getCommandFunctions = (
291
302
  rowIdColumnName,
292
303
  changingColumnNames,
293
304
  args,
305
+ useOnConflict,
294
306
  );
295
307
  await cmd(
296
- 'DELETE FROM' +
308
+ DELETE_FROM +
297
309
  escapeId(tableName) +
298
310
  WHERE +
299
311
  escapeId(rowIdColumnName) +
@@ -303,7 +315,7 @@ const getCommandFunctions = (
303
315
  deleteRowIds,
304
316
  );
305
317
  } else if (collHas(schemaMap, tableName)) {
306
- await cmd('DELETE FROM' + escapeId(tableName) + 'WHERE 1');
318
+ await cmd(DELETE_FROM + escapeId(tableName) + WHERE + ' 1');
307
319
  }
308
320
  }
309
321
  };
@@ -378,7 +390,6 @@ const jsonParse = JSON.parse;
378
390
 
379
391
  const scheduleRunning = mapNew();
380
392
  const scheduleActions = mapNew();
381
- const isMergeable = (contentOrChanges) => isString(contentOrChanges?.[0]);
382
393
  const getStoreFunctions = (supportsMergeableStore, store) =>
383
394
  !supportsMergeableStore || isUndefined(store.getMergeableContent)
384
395
  ? [
@@ -403,16 +414,15 @@ const createCustomPersister = (
403
414
  delPersisterListener,
404
415
  onIgnoredError,
405
416
  supportsMergeableStore,
406
- [getThing, thing] = [],
417
+ extra = {},
407
418
  scheduleId = [],
408
419
  ) => {
409
- let listenerId;
410
420
  let loadSave = 0;
411
421
  let loads = 0;
412
422
  let saves = 0;
413
- let listening = 0;
414
423
  let action;
415
- let listeningHandle;
424
+ let autoLoadHandle;
425
+ let autoSaveListenerId;
416
426
  mapEnsure(scheduleRunning, scheduleId, () => 0);
417
427
  mapEnsure(scheduleActions, scheduleId, () => []);
418
428
  const [isMergeableStore, getContent, getChanges, hasChanges] =
@@ -448,55 +458,51 @@ const createCustomPersister = (
448
458
  }
449
459
  return persister;
450
460
  };
461
+ const setContentOrChanges = (contentOrChanges) => {
462
+ (isMergeableStore && isString(contentOrChanges?.[0])
463
+ ? contentOrChanges?.[1][2] === 1
464
+ ? store.applyMergeableChanges
465
+ : store.setMergeableContent
466
+ : contentOrChanges?.[2] === 1
467
+ ? store.applyChanges
468
+ : store.setContent)(contentOrChanges);
469
+ };
451
470
  const persister = {
452
471
  load: async (initialTables, initialValues) =>
453
472
  await loadLock(async () => {
454
473
  try {
455
- const content = await getPersisted();
456
- (isMergeableStore && isMergeable(content)
457
- ? store.setMergeableContent
458
- : store.setContent)(content);
459
- } catch {
474
+ setContentOrChanges(await getPersisted());
475
+ } catch (error) {
476
+ onIgnoredError?.(error);
460
477
  store.setContent([initialTables, initialValues]);
461
478
  }
462
479
  }),
463
480
  startAutoLoad: async (initialTables = {}, initialValues = {}) => {
464
- persister.stopAutoLoad();
465
- await persister.load(initialTables, initialValues);
466
- listening = 1;
467
- listeningHandle = addPersisterListener(
481
+ await persister.stopAutoLoad().load(initialTables, initialValues);
482
+ autoLoadHandle = addPersisterListener(
468
483
  async (getContent2, getChanges2) => {
469
- if (getChanges2) {
470
- const changes = getChanges2();
471
- await loadLock(async () =>
472
- (isMergeableStore && isMergeable(changes)
473
- ? store.applyMergeableChanges
474
- : store.applyChanges)(changes),
475
- );
476
- } else {
477
- await loadLock(async () => {
478
- try {
479
- const content = getContent2?.() ?? (await getPersisted());
480
- (isMergeableStore && isMergeable(content)
481
- ? store.setMergeableContent
482
- : store.setContent)(content);
483
- } catch (error) {
484
- onIgnoredError?.(error);
485
- }
486
- });
487
- }
484
+ const changes = getChanges2?.();
485
+ await loadLock(async () => {
486
+ try {
487
+ setContentOrChanges(
488
+ changes ?? getContent2?.() ?? (await getPersisted()),
489
+ );
490
+ } catch (error) {
491
+ onIgnoredError?.(error);
492
+ }
493
+ });
488
494
  },
489
495
  );
490
496
  return persister;
491
497
  },
492
498
  stopAutoLoad: () => {
493
- if (listening) {
494
- delPersisterListener(listeningHandle);
495
- listeningHandle = void 0;
496
- listening = 0;
499
+ if (autoLoadHandle) {
500
+ delPersisterListener(autoLoadHandle);
501
+ autoLoadHandle = void 0;
497
502
  }
498
503
  return persister;
499
504
  },
505
+ isAutoLoading: () => !isUndefined(autoLoadHandle),
500
506
  save: async (getChanges2) => {
501
507
  /* istanbul ignore else */
502
508
  if (loadSave != 1) {
@@ -518,7 +524,7 @@ const createCustomPersister = (
518
524
  },
519
525
  startAutoSave: async () => {
520
526
  await persister.stopAutoSave().save();
521
- listenerId = store.addDidFinishTransactionListener(() => {
527
+ autoSaveListenerId = store.addDidFinishTransactionListener(() => {
522
528
  const changes = getChanges();
523
529
  if (hasChanges(changes)) {
524
530
  persister.save(() => changes);
@@ -527,10 +533,11 @@ const createCustomPersister = (
527
533
  return persister;
528
534
  },
529
535
  stopAutoSave: () => {
530
- ifNotUndefined(listenerId, store.delListener);
531
- listenerId = void 0;
536
+ ifNotUndefined(autoSaveListenerId, store.delListener);
537
+ autoSaveListenerId = void 0;
532
538
  return persister;
533
539
  },
540
+ isAutoSaving: () => !isUndefined(autoSaveListenerId),
534
541
  schedule: async (...actions) => {
535
542
  arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
536
543
  await run();
@@ -539,10 +546,8 @@ const createCustomPersister = (
539
546
  getStore: () => store,
540
547
  destroy: () => persister.stopAutoLoad().stopAutoSave(),
541
548
  getStats: () => ({loads, saves}),
549
+ ...extra,
542
550
  };
543
- if (getThing) {
544
- persister[getThing] = () => thing;
545
- }
546
551
  return objFreeze(persister);
547
552
  };
548
553
 
@@ -557,9 +562,10 @@ const createJsonSqlitePersister = (
557
562
  managedTableNames,
558
563
  db,
559
564
  getThing,
565
+ useOnConflict,
560
566
  ) => {
561
567
  const [refreshSchema, loadTable, saveTable, transaction] =
562
- getCommandFunctions(cmd, managedTableNames, onIgnoredError);
568
+ getCommandFunctions(cmd, managedTableNames, onIgnoredError, useOnConflict);
563
569
  const getPersisted = async () =>
564
570
  await transaction(async () => {
565
571
  await refreshSchema();
@@ -590,7 +596,7 @@ const createJsonSqlitePersister = (
590
596
  delPersisterListener,
591
597
  onIgnoredError,
592
598
  false,
593
- [getThing, db],
599
+ {[getThing]: () => db},
594
600
  db,
595
601
  );
596
602
  return persister;
@@ -697,7 +703,7 @@ const createTabularSqlitePersister = (
697
703
  delPersisterListener,
698
704
  onIgnoredError,
699
705
  false,
700
- [getThing, db],
706
+ {[getThing]: () => db},
701
707
  db,
702
708
  );
703
709
  return persister;