tinybase 5.0.0-beta.2 → 5.0.0-beta.3

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 (270) hide show
  1. package/lib/cjs/mergeable-store.cjs +1 -1
  2. package/lib/cjs/mergeable-store.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-automerge.cjs +1 -1
  4. package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-browser.cjs +1 -1
  6. package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  8. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-electric-sql.cjs +1 -1
  10. package/lib/cjs/persisters/persister-electric-sql.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs +1 -1
  12. package/lib/cjs/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  13. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  14. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  15. package/lib/cjs/persisters/persister-file.cjs +1 -1
  16. package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
  17. package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
  18. package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
  19. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
  20. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  21. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
  22. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  23. package/lib/cjs/persisters/persister-remote.cjs +1 -1
  24. package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
  25. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  26. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  27. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  28. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  29. package/lib/cjs/persisters/persister-yjs.cjs +1 -1
  30. package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
  31. package/lib/cjs/persisters.cjs +1 -1
  32. package/lib/cjs/persisters.cjs.gz +0 -0
  33. package/lib/cjs/store.cjs +1 -1
  34. package/lib/cjs/store.cjs.gz +0 -0
  35. package/lib/cjs/tinybase.cjs +1 -1
  36. package/lib/cjs/tinybase.cjs.gz +0 -0
  37. package/lib/cjs/tools.cjs +1 -1
  38. package/lib/cjs/tools.cjs.gz +0 -0
  39. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  40. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  41. package/lib/cjs-es6/mergeable-store.cjs +1 -1
  42. package/lib/cjs-es6/mergeable-store.cjs.gz +0 -0
  43. package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
  44. package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
  45. package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
  46. package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
  47. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  48. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  49. package/lib/cjs-es6/persisters/persister-electric-sql.cjs +1 -1
  50. package/lib/cjs-es6/persisters/persister-electric-sql.cjs.gz +0 -0
  51. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs +1 -1
  52. package/lib/cjs-es6/persisters/persister-expo-sqlite-next.cjs.gz +0 -0
  53. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  54. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  55. package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
  56. package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
  57. package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
  58. package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
  59. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
  60. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  61. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
  62. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  63. package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
  64. package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
  65. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  66. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  67. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  68. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  69. package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
  70. package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
  71. package/lib/cjs-es6/persisters.cjs +1 -1
  72. package/lib/cjs-es6/persisters.cjs.gz +0 -0
  73. package/lib/cjs-es6/store.cjs +1 -1
  74. package/lib/cjs-es6/store.cjs.gz +0 -0
  75. package/lib/cjs-es6/tinybase.cjs +1 -1
  76. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  77. package/lib/cjs-es6/tools.cjs +1 -1
  78. package/lib/cjs-es6/tools.cjs.gz +0 -0
  79. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  80. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  81. package/lib/debug/mergeable-store.js +158 -187
  82. package/lib/debug/persisters/persister-automerge.js +42 -43
  83. package/lib/debug/persisters/persister-browser.js +28 -18
  84. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +77 -54
  85. package/lib/debug/persisters/persister-electric-sql.js +77 -54
  86. package/lib/debug/persisters/persister-expo-sqlite-next.js +77 -54
  87. package/lib/debug/persisters/persister-expo-sqlite.js +77 -54
  88. package/lib/debug/persisters/persister-file.js +27 -18
  89. package/lib/debug/persisters/persister-indexed-db.js +28 -20
  90. package/lib/debug/persisters/persister-partykit-client.js +26 -23
  91. package/lib/debug/persisters/persister-partykit-server.js +8 -18
  92. package/lib/debug/persisters/persister-remote.js +28 -18
  93. package/lib/debug/persisters/persister-sqlite-wasm.js +77 -54
  94. package/lib/debug/persisters/persister-sqlite3.js +77 -54
  95. package/lib/debug/persisters/persister-yjs.js +44 -42
  96. package/lib/debug/persisters.js +27 -18
  97. package/lib/debug/store.js +50 -68
  98. package/lib/debug/tinybase.js +180 -205
  99. package/lib/debug/tools.js +9 -11
  100. package/lib/debug/ui-react-dom.js +73 -86
  101. package/lib/es6/mergeable-store.js +1 -1
  102. package/lib/es6/mergeable-store.js.gz +0 -0
  103. package/lib/es6/persisters/persister-automerge.js +1 -1
  104. package/lib/es6/persisters/persister-automerge.js.gz +0 -0
  105. package/lib/es6/persisters/persister-browser.js +1 -1
  106. package/lib/es6/persisters/persister-browser.js.gz +0 -0
  107. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  108. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  109. package/lib/es6/persisters/persister-electric-sql.js +1 -1
  110. package/lib/es6/persisters/persister-electric-sql.js.gz +0 -0
  111. package/lib/es6/persisters/persister-expo-sqlite-next.js +1 -1
  112. package/lib/es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  113. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  114. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  115. package/lib/es6/persisters/persister-file.js +1 -1
  116. package/lib/es6/persisters/persister-file.js.gz +0 -0
  117. package/lib/es6/persisters/persister-indexed-db.js +1 -1
  118. package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
  119. package/lib/es6/persisters/persister-partykit-client.js +1 -1
  120. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  121. package/lib/es6/persisters/persister-partykit-server.js +1 -1
  122. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  123. package/lib/es6/persisters/persister-remote.js +1 -1
  124. package/lib/es6/persisters/persister-remote.js.gz +0 -0
  125. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  126. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  127. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  128. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  129. package/lib/es6/persisters/persister-yjs.js +1 -1
  130. package/lib/es6/persisters/persister-yjs.js.gz +0 -0
  131. package/lib/es6/persisters.js +1 -1
  132. package/lib/es6/persisters.js.gz +0 -0
  133. package/lib/es6/store.js +1 -1
  134. package/lib/es6/store.js.gz +0 -0
  135. package/lib/es6/tinybase.js +1 -1
  136. package/lib/es6/tinybase.js.gz +0 -0
  137. package/lib/es6/tools.js +1 -1
  138. package/lib/es6/tools.js.gz +0 -0
  139. package/lib/es6/ui-react-dom-debug.js +1 -1
  140. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  141. package/lib/mergeable-store.js +1 -1
  142. package/lib/mergeable-store.js.gz +0 -0
  143. package/lib/persisters/persister-automerge.js +1 -1
  144. package/lib/persisters/persister-automerge.js.gz +0 -0
  145. package/lib/persisters/persister-browser.js +1 -1
  146. package/lib/persisters/persister-browser.js.gz +0 -0
  147. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  148. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  149. package/lib/persisters/persister-electric-sql.js +1 -1
  150. package/lib/persisters/persister-electric-sql.js.gz +0 -0
  151. package/lib/persisters/persister-expo-sqlite-next.js +1 -1
  152. package/lib/persisters/persister-expo-sqlite-next.js.gz +0 -0
  153. package/lib/persisters/persister-expo-sqlite.js +1 -1
  154. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  155. package/lib/persisters/persister-file.js +1 -1
  156. package/lib/persisters/persister-file.js.gz +0 -0
  157. package/lib/persisters/persister-indexed-db.js +1 -1
  158. package/lib/persisters/persister-indexed-db.js.gz +0 -0
  159. package/lib/persisters/persister-partykit-client.js +1 -1
  160. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  161. package/lib/persisters/persister-partykit-server.js +1 -1
  162. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  163. package/lib/persisters/persister-remote.js +1 -1
  164. package/lib/persisters/persister-remote.js.gz +0 -0
  165. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  166. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  167. package/lib/persisters/persister-sqlite3.js +1 -1
  168. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  169. package/lib/persisters/persister-yjs.js +1 -1
  170. package/lib/persisters/persister-yjs.js.gz +0 -0
  171. package/lib/persisters.js +1 -1
  172. package/lib/persisters.js.gz +0 -0
  173. package/lib/store.js +1 -1
  174. package/lib/store.js.gz +0 -0
  175. package/lib/tinybase.js +1 -1
  176. package/lib/tinybase.js.gz +0 -0
  177. package/lib/tools.js +1 -1
  178. package/lib/tools.js.gz +0 -0
  179. package/lib/types/mergeable-store.d.ts +37 -13
  180. package/lib/types/persisters/persister-partykit-server.d.ts +7 -8
  181. package/lib/types/persisters.d.ts +47 -27
  182. package/lib/types/store.d.ts +153 -111
  183. package/lib/types/tools.d.ts +2 -2
  184. package/lib/types/with-schemas/mergeable-store.d.ts +40 -13
  185. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +10 -11
  186. package/lib/types/with-schemas/persisters.d.ts +78 -42
  187. package/lib/types/with-schemas/store.d.ts +165 -136
  188. package/lib/types/with-schemas/tools.d.ts +2 -2
  189. package/lib/umd/mergeable-store.js +1 -1
  190. package/lib/umd/mergeable-store.js.gz +0 -0
  191. package/lib/umd/persisters/persister-automerge.js +1 -1
  192. package/lib/umd/persisters/persister-automerge.js.gz +0 -0
  193. package/lib/umd/persisters/persister-browser.js +1 -1
  194. package/lib/umd/persisters/persister-browser.js.gz +0 -0
  195. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  196. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  197. package/lib/umd/persisters/persister-electric-sql.js +1 -1
  198. package/lib/umd/persisters/persister-electric-sql.js.gz +0 -0
  199. package/lib/umd/persisters/persister-expo-sqlite-next.js +1 -1
  200. package/lib/umd/persisters/persister-expo-sqlite-next.js.gz +0 -0
  201. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  202. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  203. package/lib/umd/persisters/persister-file.js +1 -1
  204. package/lib/umd/persisters/persister-file.js.gz +0 -0
  205. package/lib/umd/persisters/persister-indexed-db.js +1 -1
  206. package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
  207. package/lib/umd/persisters/persister-partykit-client.js +1 -1
  208. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  209. package/lib/umd/persisters/persister-partykit-server.js +1 -1
  210. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  211. package/lib/umd/persisters/persister-remote.js +1 -1
  212. package/lib/umd/persisters/persister-remote.js.gz +0 -0
  213. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  214. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  215. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  216. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  217. package/lib/umd/persisters/persister-yjs.js +1 -1
  218. package/lib/umd/persisters/persister-yjs.js.gz +0 -0
  219. package/lib/umd/persisters.js +1 -1
  220. package/lib/umd/persisters.js.gz +0 -0
  221. package/lib/umd/store.js +1 -1
  222. package/lib/umd/store.js.gz +0 -0
  223. package/lib/umd/tinybase.js +1 -1
  224. package/lib/umd/tinybase.js.gz +0 -0
  225. package/lib/umd/tools.js +1 -1
  226. package/lib/umd/tools.js.gz +0 -0
  227. package/lib/umd/ui-react-dom-debug.js +1 -1
  228. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  229. package/lib/umd-es6/mergeable-store.js +1 -1
  230. package/lib/umd-es6/mergeable-store.js.gz +0 -0
  231. package/lib/umd-es6/persisters/persister-automerge.js +1 -1
  232. package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
  233. package/lib/umd-es6/persisters/persister-browser.js +1 -1
  234. package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
  235. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  236. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  237. package/lib/umd-es6/persisters/persister-electric-sql.js +1 -1
  238. package/lib/umd-es6/persisters/persister-electric-sql.js.gz +0 -0
  239. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js +1 -1
  240. package/lib/umd-es6/persisters/persister-expo-sqlite-next.js.gz +0 -0
  241. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  242. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  243. package/lib/umd-es6/persisters/persister-file.js +1 -1
  244. package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
  245. package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
  246. package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
  247. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
  248. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  249. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
  250. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  251. package/lib/umd-es6/persisters/persister-remote.js +1 -1
  252. package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
  253. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  254. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  255. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  256. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  257. package/lib/umd-es6/persisters/persister-yjs.js +1 -1
  258. package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
  259. package/lib/umd-es6/persisters.js +1 -1
  260. package/lib/umd-es6/persisters.js.gz +0 -0
  261. package/lib/umd-es6/store.js +1 -1
  262. package/lib/umd-es6/store.js.gz +0 -0
  263. package/lib/umd-es6/tinybase.js +1 -1
  264. package/lib/umd-es6/tinybase.js.gz +0 -0
  265. package/lib/umd-es6/tools.js +1 -1
  266. package/lib/umd-es6/tools.js.gz +0 -0
  267. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  268. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  269. package/package.json +26 -22
  270. package/readme.md +2 -2
@@ -39,13 +39,15 @@
39
39
  */
40
40
 
41
41
  import {
42
- GetTransactionChanges,
42
+ Changes,
43
+ Content,
43
44
  OptionalSchemas,
44
45
  OptionalTablesSchema,
45
46
  Store,
46
47
  Tables,
47
48
  Values,
48
49
  } from './store.d';
50
+ import {MergeableContent, MergeableStore} from './mergeable-store';
49
51
  import {TableIdFromSchema} from './internal/store';
50
52
 
51
53
  /**
@@ -75,27 +77,26 @@ export type PersisterStats = {
75
77
  *
76
78
  * ```ts override
77
79
  * (
78
- * getContent?: () => [Tables, Values],
79
- * getTransactionChanges?: GetTransactionChanges,
80
+ * getContent?: () => Content,
81
+ * getChanges?: () => Changes,
80
82
  * ) => void;
81
83
  * ```
82
84
  *
83
- * If the listener has the `getTransactionChanges` parameter, it will be used to
84
- * make an incremental change to the Store. If not, but the `getContent`
85
- * function _is_ available, that will be used to make a wholesale change to the
86
- * Store. If neither are present, the content will be loaded from the
87
- * Persister's load method.
85
+ * If the listener has the `getChanges` parameter, it will be used to make an
86
+ * incremental change to the Store. If not, but the `getContent` function _is_
87
+ * available, that will be used to make a wholesale change to the Store. If
88
+ * neither are present, the content will be loaded from the Persister's load
89
+ * method.
88
90
  * @param getContent An optional function that, if provided, returns an array of
89
91
  * Store content and can be used to immediately wholesale update the Store.
90
- * @param getTransactionChanges An optional function that, if provided, returns
91
- * a TransactionChanges object and can be used to immediately incrementally
92
- * update the Store.
92
+ * @param getChanges An optional function that, if provided, returns a Changes
93
+ * object and can be used to immediately incrementally update the Store.
93
94
  * @category Creation
94
95
  * @since v4.0.0
95
96
  */
96
97
  export type PersisterListener<Schemas extends OptionalSchemas> = (
97
- getContent?: () => [Tables<Schemas[0], true>, Values<Schemas[1], true>],
98
- getTransactionChanges?: GetTransactionChanges<Schemas>,
98
+ getContent?: () => Content<Schemas, true>,
99
+ getChanges?: () => Changes<Schemas>,
99
100
  ) => void;
100
101
 
101
102
  /**
@@ -664,7 +665,10 @@ export type DpcTabularValues = {
664
665
  * ```
665
666
  * @category Persister
666
667
  */
667
- export interface Persister<in out Schemas extends OptionalSchemas> {
668
+ export interface Persister<
669
+ in out Schemas extends OptionalSchemas,
670
+ SupportsMergeableStore extends boolean = false,
671
+ > {
668
672
  /**
669
673
  * The load method gets persisted data from storage, and loads it into the
670
674
  * Store with which the Persister is associated, once.
@@ -672,7 +676,10 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
672
676
  * This has schema-based typing. The following is a simplified representation:
673
677
  *
674
678
  * ```ts override
675
- * load(initialTables?: Tables, initialValues?: Values): Promise<Persister>;
679
+ * load(
680
+ * initialTables?: Tables,
681
+ * initialValues?: Values,
682
+ * ): Promise<Persister<SupportsMergeableStore>>;
676
683
  * ```
677
684
  *
678
685
  * The optional parameters allow you to specify what the initial content for
@@ -733,7 +740,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
733
740
  load(
734
741
  initialTables?: Tables<Schemas[0], true>,
735
742
  initialValues?: Values<Schemas[1], true>,
736
- ): Promise<Persister<Schemas>>;
743
+ ): Promise<Persister<Schemas, SupportsMergeableStore>>;
737
744
 
738
745
  /**
739
746
  * The startAutoLoad method gets persisted data from storage, and loads it
@@ -746,7 +753,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
746
753
  * startAutoLoad(
747
754
  * initialTables?: Tables,
748
755
  * initialValues?: Values,
749
- * ): Promise<Persister>;
756
+ * ): Promise<Persister<SupportsMergeableStore>>;
750
757
  * ```
751
758
  *
752
759
  * The optional parameters allow you to specify what the initial content for
@@ -800,7 +807,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
800
807
  startAutoLoad(
801
808
  initialTables?: Tables<Schemas[0], true>,
802
809
  initialValues?: Values<Schemas[1], true>,
803
- ): Promise<Persister<Schemas>>;
810
+ ): Promise<Persister<Schemas, SupportsMergeableStore>>;
804
811
 
805
812
  /**
806
813
  * The stopAutoLoad method stops the automatic loading of data from storage
@@ -809,7 +816,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
809
816
  * This has schema-based typing. The following is a simplified representation:
810
817
  *
811
818
  * ```ts override
812
- * stopAutoLoad(): Persister;
819
+ * stopAutoLoad(): Persister<SupportsMergeableStore>;
813
820
  * ```
814
821
  *
815
822
  * If the Persister is not currently set to automatically load, this method
@@ -850,7 +857,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
850
857
  * ```
851
858
  * @category Load
852
859
  */
853
- stopAutoLoad(): Persister<Schemas>;
860
+ stopAutoLoad(): Persister<Schemas, SupportsMergeableStore>;
854
861
 
855
862
  /**
856
863
  * The save method takes data from the Store with which the Persister is
@@ -859,7 +866,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
859
866
  * This has schema-based typing. The following is a simplified representation:
860
867
  *
861
868
  * ```ts override
862
- * save(): Promise<Persister>;
869
+ * save(): Promise<Persister<SupportsMergeableStore>>;
863
870
  * ```
864
871
  *
865
872
  * This method is asynchronous because the persisted data may be on a remote
@@ -884,7 +891,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
884
891
  * ```
885
892
  * @category Save
886
893
  */
887
- save(): Promise<Persister<Schemas>>;
894
+ save(): Promise<Persister<Schemas, SupportsMergeableStore>>;
888
895
 
889
896
  /**
890
897
  * The save method takes data from the Store with which the Persister is
@@ -893,7 +900,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
893
900
  * This has schema-based typing. The following is a simplified representation:
894
901
  *
895
902
  * ```ts override
896
- * startAutoSave(): Promise<Persister>;
903
+ * startAutoSave(): Promise<Persister<SupportsMergeableStore>>;
897
904
  * ```
898
905
  *
899
906
  * This method first runs a single call to the save method to ensure the data
@@ -927,7 +934,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
927
934
  * ```
928
935
  * @category Save
929
936
  */
930
- startAutoSave(): Promise<Persister<Schemas>>;
937
+ startAutoSave(): Promise<Persister<Schemas, SupportsMergeableStore>>;
931
938
 
932
939
  /**
933
940
  * The stopAutoSave method stops the automatic save of data to storage
@@ -936,7 +943,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
936
943
  * This has schema-based typing. The following is a simplified representation:
937
944
  *
938
945
  * ```ts override
939
- * stopAutoSave(): Persister;
946
+ * stopAutoSave(): Persister<SupportsMergeableStore>;
940
947
  * ```
941
948
  *
942
949
  * If the Persister is not currently set to automatically save, this method
@@ -970,7 +977,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
970
977
  * ```
971
978
  * @category Save
972
979
  */
973
- stopAutoSave(): Persister<Schemas>;
980
+ stopAutoSave(): Persister<Schemas, SupportsMergeableStore>;
974
981
 
975
982
  /**
976
983
  * The schedule method allows you to queue up a series of asynchronous actions
@@ -979,7 +986,9 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
979
986
  * This has schema-based typing. The following is a simplified representation:
980
987
  *
981
988
  * ```ts override
982
- * schedule(...actions: Promise<any>[]): Promise<Persister>;
989
+ * schedule(
990
+ * ...actions: Promise<any>[]
991
+ * ): Promise<Persister<SupportsMergeableStore>>;
983
992
  * ```
984
993
  *
985
994
  * For example, a database Persister may need to ensure that multiple
@@ -1019,7 +1028,9 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1019
1028
  * @category Lifecycle
1020
1029
  * @since v4.0.0
1021
1030
  */
1022
- schedule(...actions: Promise<any>[]): Promise<Persister<Schemas>>;
1031
+ schedule(
1032
+ ...actions: Promise<any>[]
1033
+ ): Promise<Persister<Schemas, SupportsMergeableStore>>;
1023
1034
 
1024
1035
  /**
1025
1036
  * The getStore method returns a reference to the underlying Store that is
@@ -1032,7 +1043,9 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1032
1043
  * This has schema-based typing. The following is a simplified representation:
1033
1044
  *
1034
1045
  * ```ts override
1035
- * getStore(): Store;
1046
+ * getStore(): SupportsMergeableStore extends true
1047
+ * ? Store | MergeableStore
1048
+ * : Store;
1036
1049
  * ```
1037
1050
  *
1038
1051
  * ```js
@@ -1057,7 +1070,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1057
1070
  * This has schema-based typing. The following is a simplified representation:
1058
1071
  *
1059
1072
  * ```ts override
1060
- * destroy(): Persister;
1073
+ * destroy(): Persister<SupportsMergeableStore>;
1061
1074
  * ```
1062
1075
  *
1063
1076
  * This guarantees that all of the listeners that the object registered with
@@ -1084,7 +1097,7 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1084
1097
  * ```
1085
1098
  * @category Lifecycle
1086
1099
  */
1087
- destroy(): Persister<Schemas>;
1100
+ destroy(): Persister<Schemas, SupportsMergeableStore>;
1088
1101
 
1089
1102
  /**
1090
1103
  * The getStats method provides a set of statistics about the Persister, and
@@ -1138,17 +1151,27 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1138
1151
  * This has schema-based typing. The following is a simplified representation:
1139
1152
  *
1140
1153
  * ```ts override
1141
- * createCustomPersister<ListeningHandle>(
1142
- * store: Store,
1143
- * getPersisted: () => Promise<[Tables, Values] | undefined>,
1154
+ * createCustomPersister<
1155
+ * ListeningHandle,
1156
+ * SupportsMergeableStore extends boolean,
1157
+ * >(
1158
+ * store: Store | (SupportsMergeableStore extends true ? MergeableStore : never),
1159
+ * getPersisted: () => Promise<
1160
+ * | Content
1161
+ * | (SupportsMergeableStore extends true ? MergeableContent : never)
1162
+ * | undefined
1163
+ * >,
1144
1164
  * setPersisted: (
1145
- * getContent: () => [Tables, Values],
1146
- * getTransactionChanges?: GetTransactionChanges,
1165
+ * getContent: () =>
1166
+ * | Content
1167
+ * | (SupportsMergeableStore extends true ? MergeableContent : never),
1168
+ * getChanges?: () => Changes,
1147
1169
  * ) => Promise<void>,
1148
1170
  * addPersisterListener: (listener: PersisterListener) => ListeningHandle,
1149
1171
  * delPersisterListener: (listeningHandle: ListeningHandle) => void,
1150
1172
  * onIgnoredError?: (error: any) => void,
1151
- * ): Persister;
1173
+ * supportsMergeableStore?: SupportsMergeableStore,
1174
+ * ): Persister<SupportsMergeableStore>;
1152
1175
  * ```
1153
1176
  *
1154
1177
  * As well as providing a reference to the Store to persist, you must provide
@@ -1184,6 +1207,9 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1184
1207
  * @param onIgnoredError An optional handler for the errors that the Persister
1185
1208
  * would otherwise ignore when trying to save or load data. This is suitable for
1186
1209
  * debugging persistence issues in a development environment, since v4.0.4.
1210
+ * @param supportsMergeableStore An optional boolean to indicate that this
1211
+ * Persister will be able to handle MergeableStore persistence as well as
1212
+ * regular Store persistence, since v5.0.
1187
1213
  * @returns A reference to the new Persister object.
1188
1214
  * @example
1189
1215
  * This example creates a custom Persister object and persists the Store to a
@@ -1225,18 +1251,28 @@ export interface Persister<in out Schemas extends OptionalSchemas> {
1225
1251
  export function createCustomPersister<
1226
1252
  Schemas extends OptionalSchemas,
1227
1253
  ListeningHandle,
1254
+ SupportsMergeableStore extends boolean,
1228
1255
  >(
1229
- store: Store<Schemas>,
1256
+ store:
1257
+ | Store<Schemas>
1258
+ | (SupportsMergeableStore extends true ? MergeableStore<Schemas> : never),
1230
1259
  getPersisted: () => Promise<
1231
- [Tables<Schemas[0]>, Values<Schemas[1]>] | undefined
1260
+ | Content<Schemas>
1261
+ | (SupportsMergeableStore extends true ? MergeableContent<Schemas> : never)
1262
+ | undefined
1232
1263
  >,
1233
1264
  setPersisted: (
1234
- getContent: () => [Tables<Schemas[0]>, Values<Schemas[1]>],
1235
- getTransactionChanges?: GetTransactionChanges<Schemas>,
1265
+ getContent: () =>
1266
+ | Content<Schemas>
1267
+ | (SupportsMergeableStore extends true
1268
+ ? MergeableContent<Schemas>
1269
+ : never),
1270
+ getChanges?: () => Changes<Schemas>,
1236
1271
  ) => Promise<void>,
1237
1272
  addPersisterListener: (
1238
1273
  listener: PersisterListener<Schemas>,
1239
1274
  ) => ListeningHandle,
1240
1275
  delPersisterListener: (listeningHandle: ListeningHandle) => void,
1241
1276
  onIgnoredError?: (error: any) => void,
1242
- ): Persister<Schemas>;
1277
+ supportsMergeableStore?: SupportsMergeableStore,
1278
+ ): Persister<Schemas, SupportsMergeableStore>;