tinybase 7.0.0-beta.0 → 7.0.0-beta.2

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 (275) hide show
  1. package/@types/mergeable-store/index.d.ts +1 -0
  2. package/@types/mergeable-store/with-schemas/index.d.ts +4 -2
  3. package/@types/omni/index.d.ts +3 -0
  4. package/@types/omni/with-schemas/index.d.ts +3 -0
  5. package/@types/persisters/index.d.ts +8 -2
  6. package/@types/persisters/persister-automerge/index.d.ts +4 -6
  7. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +7 -8
  8. package/@types/persisters/persister-browser/index.d.ts +97 -6
  9. package/@types/persisters/persister-browser/with-schemas/index.d.ts +113 -6
  10. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +3 -2
  11. package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +348 -0
  12. package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +382 -0
  13. package/@types/persisters/persister-durable-object-storage/index.d.ts +1 -2
  14. package/@types/persisters/persister-durable-object-storage/with-schemas/index.d.ts +3 -2
  15. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +3 -2
  16. package/@types/persisters/persister-expo-sqlite/index.d.ts +1 -2
  17. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +3 -2
  18. package/@types/persisters/persister-file/index.d.ts +1 -2
  19. package/@types/persisters/persister-file/with-schemas/index.d.ts +3 -2
  20. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +3 -2
  21. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +3 -2
  22. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +3 -2
  23. package/@types/persisters/persister-pglite/index.d.ts +2 -2
  24. package/@types/persisters/persister-pglite/with-schemas/index.d.ts +4 -2
  25. package/@types/persisters/persister-postgres/index.d.ts +1 -2
  26. package/@types/persisters/persister-postgres/with-schemas/index.d.ts +3 -2
  27. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +3 -2
  28. package/@types/persisters/persister-react-native-mmkv/index.d.ts +117 -0
  29. package/@types/persisters/persister-react-native-mmkv/with-schemas/index.d.ts +133 -0
  30. package/@types/persisters/persister-react-native-sqlite/index.d.ts +180 -0
  31. package/@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts +203 -0
  32. package/@types/persisters/persister-remote/with-schemas/index.d.ts +3 -2
  33. package/@types/persisters/persister-sqlite-bun/index.d.ts +1 -2
  34. package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +3 -2
  35. package/@types/persisters/persister-sqlite-wasm/index.d.ts +2 -2
  36. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +4 -2
  37. package/@types/persisters/persister-sqlite3/index.d.ts +1 -2
  38. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +3 -2
  39. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +3 -2
  40. package/@types/persisters/with-schemas/index.d.ts +8 -2
  41. package/@types/queries/index.d.ts +1 -1
  42. package/@types/queries/with-schemas/index.d.ts +5 -9
  43. package/@types/store/index.d.ts +13 -0
  44. package/@types/store/with-schemas/index.d.ts +13 -0
  45. package/@types/synchronizers/index.d.ts +1 -0
  46. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -2
  47. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +3 -2
  48. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +4 -2
  49. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +1 -0
  50. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +7 -7
  51. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +7 -7
  52. package/@types/synchronizers/synchronizer-ws-server-durable-object/index.d.ts +1 -0
  53. package/@types/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.d.ts +1 -0
  54. package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +1 -1
  55. package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +1 -1
  56. package/@types/synchronizers/with-schemas/index.d.ts +4 -2
  57. package/@types/ui-react/index.d.ts +6 -1
  58. package/@types/ui-react/with-schemas/index.d.ts +6 -1
  59. package/@types/ui-react-dom/index.d.ts +153 -20
  60. package/@types/ui-react-dom/with-schemas/index.d.ts +72 -20
  61. package/@types/ui-react-inspector/index.d.ts +8 -0
  62. package/@types/ui-react-inspector/with-schemas/index.d.ts +27 -1925
  63. package/LICENSE +1 -1
  64. package/agents.md +281 -0
  65. package/common/index.js +1 -1
  66. package/common/with-schemas/index.js +1 -1
  67. package/index.js +1 -1
  68. package/mergeable-store/index.js +1 -1
  69. package/mergeable-store/with-schemas/index.js +1 -1
  70. package/min/checkpoints/index.js +1 -1
  71. package/min/checkpoints/index.js.gz +0 -0
  72. package/min/checkpoints/with-schemas/index.js +1 -1
  73. package/min/checkpoints/with-schemas/index.js.gz +0 -0
  74. package/min/common/index.js +1 -1
  75. package/min/common/index.js.gz +0 -0
  76. package/min/common/with-schemas/index.js +1 -1
  77. package/min/common/with-schemas/index.js.gz +0 -0
  78. package/min/index.js +1 -1
  79. package/min/index.js.gz +0 -0
  80. package/min/indexes/index.js +1 -1
  81. package/min/indexes/index.js.gz +0 -0
  82. package/min/indexes/with-schemas/index.js +1 -1
  83. package/min/indexes/with-schemas/index.js.gz +0 -0
  84. package/min/mergeable-store/index.js +1 -1
  85. package/min/mergeable-store/index.js.gz +0 -0
  86. package/min/mergeable-store/with-schemas/index.js +1 -1
  87. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  88. package/min/metrics/index.js +1 -1
  89. package/min/metrics/index.js.gz +0 -0
  90. package/min/metrics/with-schemas/index.js +1 -1
  91. package/min/metrics/with-schemas/index.js.gz +0 -0
  92. package/min/omni/index.js +1 -1
  93. package/min/omni/index.js.gz +0 -0
  94. package/min/omni/with-schemas/index.js +1 -1
  95. package/min/omni/with-schemas/index.js.gz +0 -0
  96. package/min/persisters/index.js +1 -1
  97. package/min/persisters/index.js.gz +0 -0
  98. package/min/persisters/persister-automerge/index.js +1 -1
  99. package/min/persisters/persister-automerge/index.js.gz +0 -0
  100. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  101. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  102. package/min/persisters/persister-browser/index.js +1 -1
  103. package/min/persisters/persister-browser/index.js.gz +0 -0
  104. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  105. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  107. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  108. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  109. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  110. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -0
  111. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  112. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -0
  113. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  114. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  115. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  116. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  117. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  118. package/min/persisters/persister-electric-sql/index.js +1 -1
  119. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  120. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  121. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  122. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  123. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  124. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  125. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  126. package/min/persisters/persister-file/index.js +1 -1
  127. package/min/persisters/persister-file/index.js.gz +0 -0
  128. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  129. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  130. package/min/persisters/persister-indexed-db/index.js +1 -1
  131. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  132. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  133. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  134. package/min/persisters/persister-libsql/index.js +1 -1
  135. package/min/persisters/persister-libsql/index.js.gz +0 -0
  136. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  137. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  138. package/min/persisters/persister-partykit-client/index.js +1 -1
  139. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  140. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  141. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  142. package/min/persisters/persister-partykit-server/index.js +1 -1
  143. package/min/persisters/persister-partykit-server/index.js.gz +0 -0
  144. package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
  145. package/min/persisters/persister-partykit-server/with-schemas/index.js.gz +0 -0
  146. package/min/persisters/persister-pglite/index.js +1 -1
  147. package/min/persisters/persister-pglite/index.js.gz +0 -0
  148. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  149. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  150. package/min/persisters/persister-postgres/index.js +1 -1
  151. package/min/persisters/persister-postgres/index.js.gz +0 -0
  152. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  153. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  154. package/min/persisters/persister-powersync/index.js +1 -1
  155. package/min/persisters/persister-powersync/index.js.gz +0 -0
  156. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  157. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  158. package/min/persisters/persister-react-native-mmkv/index.js +1 -0
  159. package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
  160. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -0
  161. package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
  162. package/min/persisters/persister-react-native-sqlite/index.js +1 -0
  163. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  164. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -0
  165. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  166. package/min/persisters/persister-remote/index.js +1 -1
  167. package/min/persisters/persister-remote/index.js.gz +0 -0
  168. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  169. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  170. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  171. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  172. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  173. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  174. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  175. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  176. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  177. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  178. package/min/persisters/persister-sqlite3/index.js +1 -1
  179. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  180. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  181. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  182. package/min/persisters/persister-yjs/index.js +1 -1
  183. package/min/persisters/persister-yjs/index.js.gz +0 -0
  184. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  185. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  186. package/min/persisters/with-schemas/index.js +1 -1
  187. package/min/persisters/with-schemas/index.js.gz +0 -0
  188. package/min/queries/index.js +1 -1
  189. package/min/queries/index.js.gz +0 -0
  190. package/min/queries/with-schemas/index.js +1 -1
  191. package/min/queries/with-schemas/index.js.gz +0 -0
  192. package/min/relationships/index.js +1 -1
  193. package/min/relationships/index.js.gz +0 -0
  194. package/min/relationships/with-schemas/index.js +1 -1
  195. package/min/relationships/with-schemas/index.js.gz +0 -0
  196. package/min/store/index.js +1 -1
  197. package/min/store/index.js.gz +0 -0
  198. package/min/store/with-schemas/index.js +1 -1
  199. package/min/store/with-schemas/index.js.gz +0 -0
  200. package/min/synchronizers/index.js +1 -1
  201. package/min/synchronizers/index.js.gz +0 -0
  202. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  203. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  204. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  205. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  206. package/min/synchronizers/synchronizer-local/index.js +1 -1
  207. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  208. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  209. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  210. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  211. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  212. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  213. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  214. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  215. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  216. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  217. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  218. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  219. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  220. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  221. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  222. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  223. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  224. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  225. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  226. package/min/synchronizers/with-schemas/index.js +1 -1
  227. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  228. package/min/ui-react/index.js +1 -1
  229. package/min/ui-react/index.js.gz +0 -0
  230. package/min/ui-react/with-schemas/index.js +1 -1
  231. package/min/ui-react/with-schemas/index.js.gz +0 -0
  232. package/min/ui-react-dom/index.js +1 -1
  233. package/min/ui-react-dom/index.js.gz +0 -0
  234. package/min/ui-react-dom/with-schemas/index.js +1 -1
  235. package/min/ui-react-dom/with-schemas/index.js.gz +0 -0
  236. package/min/ui-react-inspector/index.js +1 -1
  237. package/min/ui-react-inspector/index.js.gz +0 -0
  238. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  239. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  240. package/min/with-schemas/index.js +1 -1
  241. package/min/with-schemas/index.js.gz +0 -0
  242. package/omni/index.js +2107 -1163
  243. package/omni/with-schemas/index.js +2107 -1163
  244. package/package.json +127 -11
  245. package/persisters/persister-automerge/index.js +1 -1
  246. package/persisters/persister-automerge/with-schemas/index.js +1 -1
  247. package/persisters/persister-browser/index.js +31 -2
  248. package/persisters/persister-browser/with-schemas/index.js +31 -2
  249. package/persisters/persister-durable-object-sql-storage/index.js +1391 -0
  250. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1391 -0
  251. package/persisters/persister-react-native-mmkv/index.js +459 -0
  252. package/persisters/persister-react-native-mmkv/with-schemas/index.js +459 -0
  253. package/persisters/persister-react-native-sqlite/index.js +1189 -0
  254. package/persisters/persister-react-native-sqlite/with-schemas/index.js +1189 -0
  255. package/readme.md +13 -13
  256. package/releases.md +110 -35
  257. package/synchronizers/index.js +1 -1
  258. package/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  259. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  260. package/synchronizers/synchronizer-local/index.js +1 -1
  261. package/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  262. package/synchronizers/synchronizer-ws-client/index.js +1 -1
  263. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  264. package/synchronizers/synchronizer-ws-server/index.js +1 -1
  265. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  266. package/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  267. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  268. package/synchronizers/with-schemas/index.js +1 -1
  269. package/ui-react/index.js +397 -368
  270. package/ui-react/with-schemas/index.js +397 -368
  271. package/ui-react-dom/index.js +873 -436
  272. package/ui-react-dom/with-schemas/index.js +873 -436
  273. package/ui-react-inspector/index.js +1721 -545
  274. package/ui-react-inspector/with-schemas/index.js +1721 -545
  275. package/with-schemas/index.js +1 -1
@@ -1115,6 +1115,7 @@ export interface MergeableStore extends Store {
1115
1115
  * ];
1116
1116
  * ```
1117
1117
  * @category Creation
1118
+ * @essential Creating stores
1118
1119
  * @since v5.0.0
1119
1120
  */
1120
1121
  export function createMergeableStore(
@@ -436,8 +436,9 @@ export type MergeableChanges<
436
436
  * @category Mergeable
437
437
  * @since v5.0.0
438
438
  */
439
- export interface MergeableStore<Schemas extends OptionalSchemas>
440
- extends Store<Schemas> {
439
+ export interface MergeableStore<
440
+ Schemas extends OptionalSchemas,
441
+ > extends Store<Schemas> {
441
442
  //
442
443
  /**
443
444
  * The getMergeableContent method returns the full content of a
@@ -1607,6 +1608,7 @@ export interface MergeableStore<Schemas extends OptionalSchemas>
1607
1608
  * ];
1608
1609
  * ```
1609
1610
  * @category Creation
1611
+ * @essential Creating stores
1610
1612
  * @since v5.0.0
1611
1613
  */
1612
1614
  export function createMergeableStore(
@@ -23,6 +23,7 @@ export * from '../persisters/index.d.ts';
23
23
  export * from '../persisters/persister-automerge/index.d.ts';
24
24
  export * from '../persisters/persister-browser/index.d.ts';
25
25
  export * from '../persisters/persister-cr-sqlite-wasm/index.d.ts';
26
+ export * from '../persisters/persister-durable-object-sql-storage/index.d.ts';
26
27
  export * from '../persisters/persister-durable-object-storage/index.d.ts';
27
28
  export * from '../persisters/persister-electric-sql/index.d.ts';
28
29
  export * from '../persisters/persister-expo-sqlite/index.d.ts';
@@ -34,6 +35,8 @@ export * from '../persisters/persister-partykit-server/index.d.ts';
34
35
  export * from '../persisters/persister-pglite/index.d.ts';
35
36
  export * from '../persisters/persister-postgres/index.d.ts';
36
37
  export * from '../persisters/persister-powersync/index.d.ts';
38
+ export * from '../persisters/persister-react-native-mmkv/index.d.ts';
39
+ export * from '../persisters/persister-react-native-sqlite/index.d.ts';
37
40
  export * from '../persisters/persister-remote/index.d.ts';
38
41
  export * from '../persisters/persister-sqlite-bun/index.d.ts';
39
42
  export * from '../persisters/persister-sqlite-wasm/index.d.ts';
@@ -22,6 +22,7 @@ export * from '../../metrics/with-schemas/index.d.ts';
22
22
  export * from '../../persisters/persister-automerge/with-schemas/index.d.ts';
23
23
  export * from '../../persisters/persister-browser/with-schemas/index.d.ts';
24
24
  export * from '../../persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts';
25
+ export * from '../../persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts';
25
26
  export * from '../../persisters/persister-durable-object-storage/with-schemas/index.d.ts';
26
27
  export * from '../../persisters/persister-electric-sql/with-schemas/index.d.ts';
27
28
  export * from '../../persisters/persister-expo-sqlite/with-schemas/index.d.ts';
@@ -33,6 +34,8 @@ export * from '../../persisters/persister-partykit-server/with-schemas/index.d.t
33
34
  export * from '../../persisters/persister-pglite/with-schemas/index.d.ts';
34
35
  export * from '../../persisters/persister-postgres/with-schemas/index.d.ts';
35
36
  export * from '../../persisters/persister-powersync/with-schemas/index.d.ts';
37
+ export * from '../../persisters/persister-react-native-mmkv/with-schemas/index.d.ts';
38
+ export * from '../../persisters/persister-react-native-sqlite/with-schemas/index.d.ts';
36
39
  export * from '../../persisters/persister-remote/with-schemas/index.d.ts';
37
40
  export * from '../../persisters/persister-sqlite-bun/with-schemas/index.d.ts';
38
41
  export * from '../../persisters/persister-sqlite-wasm/with-schemas/index.d.ts';
@@ -6,20 +6,25 @@
6
6
  * Many entry points are provided (in separately installed modules), each of
7
7
  * which returns different types of Persister that can load and save a Store.
8
8
  * Between them, these allow you to store your TinyBase data locally, remotely,
9
- * to SQLite and PostgreSQL databases, and across synchronization boundaries
10
- * with CRDT frameworks.
9
+ * to a Durable Object, to SQLite and PostgreSQL databases, and across
10
+ * synchronization boundaries with CRDT frameworks.
11
11
  *
12
12
  * |Persister|Storage|Store|MergeableStore
13
13
  * |-|-|-|-|
14
14
  * |SessionPersister|Browser session storage|Yes|Yes
15
15
  * |LocalPersister|Browser local storage|Yes|Yes
16
+ * |OpfsPersister|Browser origin private file system (OPFS)|Yes|Yes
16
17
  * |FilePersister|Local file (where possible)|Yes|Yes
17
18
  * |IndexedDbPersister|Browser IndexedDB|Yes|No
18
19
  * |RemotePersister|Remote server|Yes|No
20
+ * |ReactNativeMmkvPersister|MMKV in React Native, via [react-native-mmkv](https://github.com/mrousavy/react-native-mmkv)|Yes|Yes
21
+ * |DurableObjectStoragePersister|Cloudflare Durable Object (KV)|No|Yes
22
+ * |DurableObjectSqlStoragePersister|Cloudflare Durable Object (SQLite)|No|Yes
19
23
  * |Sqlite3Persister|SQLite in Node, via [sqlite3](https://github.com/TryGhost/node-sqlite3)|Yes|Yes*
20
24
  * |SqliteBunPersister| SQLite in Bun, via [bun:sqlite](https://bun.sh/docs/api/sqlite)|Yes|Yes*
21
25
  * |SqliteWasmPersister|SQLite in a browser, via [sqlite-wasm](https://github.com/tomayac/sqlite-wasm)|Yes|Yes*
22
26
  * |ExpoSqlitePersister|SQLite in React Native, via [expo-sqlite](https://github.com/expo/expo/tree/main/packages/expo-sqlite)|Yes|Yes*
27
+ * |ReactNativeSqlitePersister|SQLite in React Native, via [react-native-sqlite-storage](https://github.com/andpor/react-native-sqlite-storage)|Yes|Yes*
23
28
  * |PostgresPersister|PostgreSQL, via [postgres](https://github.com/porsager/postgres)|Yes|Yes*
24
29
  * |PglitePersister|PostgreSQL, via [PGlite](https://github.com/electric-sql/pglite)|Yes|Yes*
25
30
  * |CrSqliteWasmPersister|SQLite CRDTs, via [cr-sqlite-wasm](https://github.com/vlcn-io/cr-sqlite)|Yes|No
@@ -954,6 +959,7 @@ export type DpcTabularValues = {
954
959
  * sessionStorage.clear();
955
960
  * ```
956
961
  * @category Persister
962
+ * @essential Persisting stores
957
963
  * @since v1.0.0
958
964
  */
959
965
  export interface Persister<Persist extends Persists = Persists.StoreOnly> {
@@ -89,7 +89,7 @@ export interface AutomergePersister extends Persister {
89
89
  * await persister.save();
90
90
  * // Store will be saved to the document.
91
91
  *
92
- * console.log(await docHandler.doc());
92
+ * console.log(docHandler.doc());
93
93
  * // -> {tinybase: {t: {pets: {fido: {species: 'dog'}}}, v: {}}}
94
94
  *
95
95
  * await persister.destroy();
@@ -110,7 +110,6 @@ export interface AutomergePersister extends Persister {
110
110
  * network: [new BroadcastChannelNetworkAdapter()],
111
111
  * });
112
112
  * const docHandler1 = repo1.create();
113
- * await docHandler1.doc();
114
113
  * const store1 = createStore();
115
114
  * const persister1 = createAutomergePersister(store1, docHandler1);
116
115
  * await persister1.startAutoLoad();
@@ -120,8 +119,7 @@ export interface AutomergePersister extends Persister {
120
119
  * const repo2 = new Repo({
121
120
  * network: [new BroadcastChannelNetworkAdapter()],
122
121
  * });
123
- * const docHandler2 = repo2.find(docHandler1.documentId);
124
- * await docHandler2.doc();
122
+ * const docHandler2 = await repo2.find(docHandler1.documentId);
125
123
  * const store2 = createStore();
126
124
  * const persister2 = createAutomergePersister(store2, docHandler2);
127
125
  * await persister2.startAutoLoad();
@@ -131,8 +129,8 @@ export interface AutomergePersister extends Persister {
131
129
  * // with each other, merely for the purposes of sequentiality in this example.
132
130
  * const syncDocsWait = async () => {
133
131
  * await new Promise((resolve) => setTimeout(() => resolve(0), 100));
134
- * await docHandler1.doc();
135
- * await docHandler2.doc();
132
+ * docHandler1.doc();
133
+ * docHandler2.doc();
136
134
  * };
137
135
  *
138
136
  * // Wait for the documents to synchronize in their initial state.
@@ -30,8 +30,9 @@ import type {Persister} from '../../with-schemas/index.d.ts';
30
30
  * @category Persister
31
31
  * @since v4.3.14
32
32
  */
33
- export interface AutomergePersister<Schemas extends OptionalSchemas>
34
- extends Persister<Schemas> {
33
+ export interface AutomergePersister<
34
+ Schemas extends OptionalSchemas,
35
+ > extends Persister<Schemas> {
35
36
  /**
36
37
  * The getDocHandle method returns the Automerge document handler the Store is
37
38
  * being persisted to.
@@ -104,7 +105,7 @@ export interface AutomergePersister<Schemas extends OptionalSchemas>
104
105
  * await persister.save();
105
106
  * // Store will be saved to the document.
106
107
  *
107
- * console.log(await docHandler.doc());
108
+ * console.log(docHandler.doc());
108
109
  * // -> {tinybase: {t: {pets: {fido: {species: 'dog'}}}, v: {}}}
109
110
  *
110
111
  * await persister.destroy();
@@ -125,7 +126,6 @@ export interface AutomergePersister<Schemas extends OptionalSchemas>
125
126
  * network: [new BroadcastChannelNetworkAdapter()],
126
127
  * });
127
128
  * const docHandler1 = repo1.create();
128
- * await docHandler1.doc();
129
129
  * const store1 = createStore();
130
130
  * const persister1 = createAutomergePersister(store1, docHandler1);
131
131
  * await persister1.startAutoLoad();
@@ -135,8 +135,7 @@ export interface AutomergePersister<Schemas extends OptionalSchemas>
135
135
  * const repo2 = new Repo({
136
136
  * network: [new BroadcastChannelNetworkAdapter()],
137
137
  * });
138
- * const docHandler2 = repo2.find(docHandler1.documentId);
139
- * await docHandler2.doc();
138
+ * const docHandler2 = await repo2.find(docHandler1.documentId);
140
139
  * const store2 = createStore();
141
140
  * const persister2 = createAutomergePersister(store2, docHandler2);
142
141
  * await persister2.startAutoLoad();
@@ -146,8 +145,8 @@ export interface AutomergePersister<Schemas extends OptionalSchemas>
146
145
  * // with each other, merely for the purposes of sequentiality in this example.
147
146
  * const syncDocsWait = async () => {
148
147
  * await new Promise((resolve) => setTimeout(() => resolve(0), 100));
149
- * await docHandler1.doc();
150
- * await docHandler2.doc();
148
+ * docHandler1.doc();
149
+ * docHandler2.doc();
151
150
  * };
152
151
  *
153
152
  * // Wait for the documents to synchronize in their initial state.
@@ -1,14 +1,17 @@
1
1
  /**
2
2
  * The persister-browser module of the TinyBase project lets you save and load
3
- * Store data to and from browser storage.
3
+ * Store data to and from browser storage, including the origin private file
4
+ * system (OPFS).
4
5
  *
5
- * Two entry points are provided, each of which returns a new Persister object
6
+ * Three entry points are provided, each of which returns a new Persister object
6
7
  * that can load and save a Store:
7
8
  *
8
9
  * - The createSessionPersister function returns a Persister that uses the
9
10
  * browser's session storage.
10
11
  * - The createLocalPersister function returns a Persister that uses the
11
12
  * browser's local storage.
13
+ * - The createOpfsPersister function returns a Persister that uses a file in
14
+ * an origin private file system (OPFS).
12
15
  * @see Persistence guides
13
16
  * @packageDocumentation
14
17
  * @module persister-browser
@@ -31,8 +34,7 @@ import type {Persister, Persists} from '../index.d.ts';
31
34
  * @category Persister
32
35
  * @since v4.3.14
33
36
  */
34
- export interface SessionPersister
35
- extends Persister<Persists.StoreOrMergeableStore> {
37
+ export interface SessionPersister extends Persister<Persists.StoreOrMergeableStore> {
36
38
  /**
37
39
  * The getStorageName method returns the unique key of the storage location
38
40
  * the Store is being persisted to.
@@ -72,8 +74,7 @@ export interface SessionPersister
72
74
  * @category Persister
73
75
  * @since v4.3.14
74
76
  */
75
- export interface LocalPersister
76
- extends Persister<Persists.StoreOrMergeableStore> {
77
+ export interface LocalPersister extends Persister<Persists.StoreOrMergeableStore> {
77
78
  /**
78
79
  * The getStorageName method returns the unique key of the storage location
79
80
  * the Store is being persisted to.
@@ -134,6 +135,7 @@ export interface LocalPersister
134
135
  * sessionStorage.clear();
135
136
  * ```
136
137
  * @category Creation
138
+ * @essential Persisting stores
137
139
  * @since v1.0.0
138
140
  */
139
141
  export function createSessionPersister(
@@ -176,6 +178,7 @@ export function createSessionPersister(
176
178
  * localStorage.clear();
177
179
  * ```
178
180
  * @category Creation
181
+ * @essential Persisting stores
179
182
  * @since v1.0.0
180
183
  */
181
184
  export function createLocalPersister(
@@ -183,3 +186,91 @@ export function createLocalPersister(
183
186
  storageName: string,
184
187
  onIgnoredError?: (error: any) => void,
185
188
  ): LocalPersister;
189
+
190
+ /**
191
+ * The OpfsPersister interface represents a Persister that lets you save and
192
+ * load Store data to and from a file in an origin private file system (OPFS).
193
+ *
194
+ * You should use the createOpfsPersister function to create an OpfsPersister
195
+ * object.
196
+ *
197
+ * It is a minor extension to the Persister interface and simply provides an
198
+ * extra getHandle method for accessing the file the Store is being
199
+ * persisted to.
200
+ * @category Persister
201
+ * @since v6.7.0
202
+ */
203
+ export interface OpfsPersister extends Persister<Persists.StoreOrMergeableStore> {
204
+ /**
205
+ * The getHandle method returns the handle of the file the Store is being
206
+ * persisted to.
207
+ * @returns The handle of the file.
208
+ * @example
209
+ * This example creates a Persister object against a newly-created Store and
210
+ * then gets the file handle back out again.
211
+ *
212
+ * ```js
213
+ * import {createStore} from 'tinybase';
214
+ * import {createOpfsPersister} from 'tinybase/persisters/persister-browser';
215
+ *
216
+ * const opfs = await navigator.storage.getDirectory();
217
+ * const handle = await opfs.getFileHandle('tinybase.json', {create: true});
218
+ *
219
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
220
+ * const persister = createOpfsPersister(store, handle);
221
+ *
222
+ * console.log(persister.getHandle().name);
223
+ * // -> 'tinybase.json'
224
+ *
225
+ * await persister.destroy();
226
+ * ```
227
+ * @category Getter
228
+ * @since v6.7.0
229
+ */
230
+ getHandle(): FileSystemFileHandle;
231
+ }
232
+
233
+ /**
234
+ * The createOpfsPersister function creates an OpfsPersister object that can
235
+ * persist the Store to a file in an origin private file system (OPFS).
236
+ *
237
+ * An OpfsPersister supports both regular Store and MergeableStore objects.
238
+ *
239
+ * As well as providing a reference to the Store to persist, you must provide a
240
+ * `handle` parameter which identifies an existing OPFS file to persist it to.
241
+ * @param store The Store or MergeableStore to persist.
242
+ * @param handle The handle of an existing OPFS file to persist the Store to.
243
+ * @param onIgnoredError An optional handler for the errors that the Persister
244
+ * would otherwise ignore when trying to save or load data. This is suitable for
245
+ * debugging persistence issues in a development environment.
246
+ * @returns A reference to the new OpfsPersister object.
247
+ * @example
248
+ * This example creates an OpfsPersister object and persists the Store to a
249
+ * local file.
250
+ *
251
+ * ```js
252
+ * import {createStore} from 'tinybase';
253
+ * import {createOpfsPersister} from 'tinybase/persisters/persister-browser';
254
+ *
255
+ * const opfs = await navigator.storage.getDirectory();
256
+ * const handle = await opfs.getFileHandle('tinybase.json', {create: true});
257
+ *
258
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
259
+ * const persister = createOpfsPersister(store, handle);
260
+ *
261
+ * await persister.save();
262
+ * // Store JSON will be saved to the file.
263
+ *
264
+ * await persister.load();
265
+ * // Store JSON will be loaded from the file.
266
+ *
267
+ * await persister.destroy();
268
+ * ```
269
+ * @category Creation
270
+ * @since v6.7.0
271
+ */
272
+ export function createOpfsPersister(
273
+ store: Store | MergeableStore,
274
+ handle: FileSystemFileHandle,
275
+ onIgnoredError?: (error: any) => void,
276
+ ): OpfsPersister;
@@ -1,14 +1,17 @@
1
1
  /**
2
2
  * The persister-browser module of the TinyBase project lets you save and load
3
- * Store data to and from browser storage.
3
+ * Store data to and from browser storage, including the origin private file
4
+ * system (OPFS).
4
5
  *
5
- * Two entry points are provided, each of which returns a new Persister object
6
+ * Three entry points are provided, each of which returns a new Persister object
6
7
  * that can load and save a Store:
7
8
  *
8
9
  * - The createSessionPersister function returns a Persister that uses the
9
10
  * browser's session storage.
10
11
  * - The createLocalPersister function returns a Persister that uses the
11
12
  * browser's local storage.
13
+ * - The createOpfsPersister function returns a Persister that uses a file in
14
+ * an origin private file system (OPFS).
12
15
  * @see Persistence guides
13
16
  * @packageDocumentation
14
17
  * @module persister-browser
@@ -34,8 +37,9 @@ import type {Persister, Persists} from '../../with-schemas/index.d.ts';
34
37
  * @category Persister
35
38
  * @since v4.3.14
36
39
  */
37
- export interface SessionPersister<Schemas extends OptionalSchemas>
38
- extends Persister<Schemas, Persists.StoreOrMergeableStore> {
40
+ export interface SessionPersister<
41
+ Schemas extends OptionalSchemas,
42
+ > extends Persister<Schemas, Persists.StoreOrMergeableStore> {
39
43
  /**
40
44
  * The getStorageName method returns the unique key of the storage location
41
45
  * the Store is being persisted to.
@@ -75,8 +79,9 @@ export interface SessionPersister<Schemas extends OptionalSchemas>
75
79
  * @category Persister
76
80
  * @since v4.3.14
77
81
  */
78
- export interface LocalPersister<Schemas extends OptionalSchemas>
79
- extends Persister<Schemas, Persists.StoreOrMergeableStore> {
82
+ export interface LocalPersister<
83
+ Schemas extends OptionalSchemas,
84
+ > extends Persister<Schemas, Persists.StoreOrMergeableStore> {
80
85
  /**
81
86
  * The getStorageName method returns the unique key of the storage location
82
87
  * the Store is being persisted to.
@@ -103,6 +108,51 @@ export interface LocalPersister<Schemas extends OptionalSchemas>
103
108
  getStorageName(): string;
104
109
  }
105
110
 
111
+ /**
112
+ * The OpfsPersister interface represents a Persister that lets you save and
113
+ * load Store data to and from a file in an origin private file system (OPFS).
114
+ *
115
+ * You should use the createOpfsPersister function to create an OpfsPersister
116
+ * object.
117
+ *
118
+ * It is a minor extension to the Persister interface and simply provides an
119
+ * extra getHandle method for accessing the file the Store is being
120
+ * persisted to.
121
+ * @category Persister
122
+ * @since v6.7.0
123
+ */
124
+ export interface OpfsPersister<
125
+ Schemas extends OptionalSchemas,
126
+ > extends Persister<Schemas, Persists.StoreOrMergeableStore> {
127
+ /**
128
+ * The getHandle method returns the handle of the file the Store is being
129
+ * persisted to.
130
+ * @returns The handle of the file.
131
+ * @example
132
+ * This example creates a Persister object against a newly-created Store and
133
+ * then gets the file handle back out again.
134
+ *
135
+ * ```js
136
+ * import {createStore} from 'tinybase';
137
+ * import {createOpfsPersister} from 'tinybase/persisters/persister-browser';
138
+ *
139
+ * const opfs = await navigator.storage.getDirectory();
140
+ * const handle = await opfs.getFileHandle('tinybase.json', {create: true});
141
+ *
142
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
143
+ * const persister = createOpfsPersister(store, handle);
144
+ *
145
+ * console.log(persister.getHandle().name);
146
+ * // -> 'tinybase.json'
147
+ *
148
+ * await persister.destroy();
149
+ * ```
150
+ * @category Getter
151
+ * @since v6.7.0
152
+ */
153
+ getHandle(): string;
154
+ }
155
+
106
156
  /**
107
157
  * The createSessionPersister function creates a SessionPersister object that
108
158
  * can persist the Store to the browser's session storage.
@@ -147,6 +197,7 @@ export interface LocalPersister<Schemas extends OptionalSchemas>
147
197
  * sessionStorage.clear();
148
198
  * ```
149
199
  * @category Creation
200
+ * @essential Persisting stores
150
201
  * @since v1.0.0
151
202
  */
152
203
  export function createSessionPersister<Schemas extends OptionalSchemas>(
@@ -199,6 +250,7 @@ export function createSessionPersister<Schemas extends OptionalSchemas>(
199
250
  * localStorage.clear();
200
251
  * ```
201
252
  * @category Creation
253
+ * @essential Persisting stores
202
254
  * @since v1.0.0
203
255
  */
204
256
  export function createLocalPersister<Schemas extends OptionalSchemas>(
@@ -206,3 +258,58 @@ export function createLocalPersister<Schemas extends OptionalSchemas>(
206
258
  storageName: string,
207
259
  onIgnoredError?: (error: any) => void,
208
260
  ): LocalPersister<Schemas>;
261
+
262
+ /**
263
+ * The createOpfsPersister function creates an OpfsPersister object that can
264
+ * persist the Store to a file in an origin private file system (OPFS).
265
+ *
266
+ * This has schema-based typing. The following is a simplified representation:
267
+ *
268
+ * ```ts override
269
+ * createOpfsPersister(
270
+ * store: Store | MergeableStore,
271
+ * handle: FileSystemFileHandle,
272
+ * onIgnoredError?: (error: any) => void,
273
+ * ): OpfsPersister;
274
+ * ```
275
+ *
276
+ * An OpfsPersister supports both regular Store and MergeableStore objects.
277
+ *
278
+ * As well as providing a reference to the Store to persist, you must provide a
279
+ * `handle` parameter which identifies an existing OPFS file to persist it to.
280
+ * @param store The Store or MergeableStore to persist.
281
+ * @param handle The handle of an existing OPFS file to persist the Store to.
282
+ * @param onIgnoredError An optional handler for the errors that the Persister
283
+ * would otherwise ignore when trying to save or load data. This is suitable for
284
+ * debugging persistence issues in a development environment.
285
+ * @returns A reference to the new OpfsPersister object.
286
+ * @example
287
+ * This example creates an OpfsPersister object and persists the Store to a
288
+ * local file.
289
+ *
290
+ * ```js
291
+ * import {createStore} from 'tinybase';
292
+ * import {createOpfsPersister} from 'tinybase/persisters/persister-browser';
293
+ *
294
+ * const opfs = await navigator.storage.getDirectory();
295
+ * const handle = await opfs.getFileHandle('tinybase.json', {create: true});
296
+ *
297
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
298
+ * const persister = createOpfsPersister(store, handle);
299
+ *
300
+ * await persister.save();
301
+ * // Store JSON will be saved to the file.
302
+ *
303
+ * await persister.load();
304
+ * // Store JSON will be loaded from the file.
305
+ *
306
+ * await persister.destroy();
307
+ * ```
308
+ * @category Creation
309
+ * @since v6.7.0
310
+ */
311
+ export function createOpfsPersister<Schemas extends OptionalSchemas>(
312
+ store: Store<Schemas> | MergeableStore<Schemas>,
313
+ handle: FileSystemFileHandle,
314
+ onIgnoredError?: (error: any) => void,
315
+ ): OpfsPersister<Schemas>;
@@ -30,8 +30,9 @@ import type {
30
30
  * @category Persister
31
31
  * @since v4.3.14
32
32
  */
33
- export interface CrSqliteWasmPersister<Schemas extends OptionalSchemas>
34
- extends Persister<Schemas> {
33
+ export interface CrSqliteWasmPersister<
34
+ Schemas extends OptionalSchemas,
35
+ > extends Persister<Schemas> {
35
36
  /**
36
37
  * The getDb method returns a reference to the database instance the Store is
37
38
  * being persisted to.