tinybase 6.1.0-beta.3 → 6.1.0-beta.5

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 (233) hide show
  1. package/@types/persisters/index.d.ts +83 -40
  2. package/@types/persisters/persister-automerge/index.d.ts +4 -4
  3. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
  4. package/@types/persisters/persister-browser/index.d.ts +4 -4
  5. package/@types/persisters/persister-browser/with-schemas/index.d.ts +4 -4
  6. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +3 -3
  7. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +3 -3
  8. package/@types/persisters/persister-electric-sql/index.d.ts +3 -3
  9. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +3 -3
  10. package/@types/persisters/persister-expo-sqlite/index.d.ts +3 -3
  11. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +3 -3
  12. package/@types/persisters/persister-file/index.d.ts +2 -2
  13. package/@types/persisters/persister-file/with-schemas/index.d.ts +2 -2
  14. package/@types/persisters/persister-indexed-db/index.d.ts +2 -2
  15. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +2 -2
  16. package/@types/persisters/persister-libsql/index.d.ts +3 -3
  17. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +3 -3
  18. package/@types/persisters/persister-partykit-client/index.d.ts +2 -2
  19. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +2 -2
  20. package/@types/persisters/persister-pglite/index.d.ts +3 -3
  21. package/@types/persisters/persister-pglite/with-schemas/index.d.ts +3 -3
  22. package/@types/persisters/persister-postgres/index.d.ts +3 -3
  23. package/@types/persisters/persister-postgres/with-schemas/index.d.ts +3 -3
  24. package/@types/persisters/persister-powersync/index.d.ts +3 -3
  25. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +3 -3
  26. package/@types/persisters/persister-remote/index.d.ts +2 -2
  27. package/@types/persisters/persister-remote/with-schemas/index.d.ts +2 -2
  28. package/@types/persisters/persister-sqlite-bun/index.d.ts +159 -0
  29. package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +178 -0
  30. package/@types/persisters/persister-sqlite-wasm/index.d.ts +3 -3
  31. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +3 -3
  32. package/@types/persisters/persister-sqlite3/index.d.ts +3 -3
  33. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +3 -3
  34. package/@types/persisters/persister-yjs/index.d.ts +4 -4
  35. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
  36. package/@types/persisters/with-schemas/index.d.ts +87 -42
  37. package/@types/synchronizers/index.d.ts +18 -16
  38. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +3 -3
  39. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -3
  40. package/@types/synchronizers/synchronizer-local/index.d.ts +2 -2
  41. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +2 -2
  42. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +5 -5
  43. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +5 -5
  44. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +37 -37
  45. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +37 -37
  46. package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +7 -7
  47. package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +7 -7
  48. package/@types/synchronizers/with-schemas/index.d.ts +18 -16
  49. package/@types/ui-react/index.d.ts +2 -2
  50. package/@types/ui-react/with-schemas/index.d.ts +2 -2
  51. package/index.js +23 -17
  52. package/mergeable-store/index.js +23 -17
  53. package/mergeable-store/with-schemas/index.js +23 -17
  54. package/min/index.js +1 -1
  55. package/min/index.js.gz +0 -0
  56. package/min/mergeable-store/index.js +1 -1
  57. package/min/mergeable-store/index.js.gz +0 -0
  58. package/min/mergeable-store/with-schemas/index.js +1 -1
  59. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  60. package/min/persisters/index.js +1 -1
  61. package/min/persisters/index.js.gz +0 -0
  62. package/min/persisters/persister-automerge/index.js +1 -1
  63. package/min/persisters/persister-automerge/index.js.gz +0 -0
  64. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  65. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  66. package/min/persisters/persister-browser/index.js +1 -1
  67. package/min/persisters/persister-browser/index.js.gz +0 -0
  68. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  69. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  70. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  71. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  72. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  73. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  74. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  75. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  76. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  77. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  78. package/min/persisters/persister-electric-sql/index.js +1 -1
  79. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  80. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  81. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  82. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  83. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  84. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  85. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  86. package/min/persisters/persister-file/index.js +1 -1
  87. package/min/persisters/persister-file/index.js.gz +0 -0
  88. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  89. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  90. package/min/persisters/persister-indexed-db/index.js +1 -1
  91. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  92. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  93. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  94. package/min/persisters/persister-libsql/index.js +1 -1
  95. package/min/persisters/persister-libsql/index.js.gz +0 -0
  96. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  97. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  98. package/min/persisters/persister-partykit-client/index.js +1 -1
  99. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  100. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  101. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  102. package/min/persisters/persister-pglite/index.js +1 -1
  103. package/min/persisters/persister-pglite/index.js.gz +0 -0
  104. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  105. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/persister-postgres/index.js +1 -1
  107. package/min/persisters/persister-postgres/index.js.gz +0 -0
  108. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  109. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  110. package/min/persisters/persister-powersync/index.js +1 -1
  111. package/min/persisters/persister-powersync/index.js.gz +0 -0
  112. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  113. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  114. package/min/persisters/persister-remote/index.js +1 -1
  115. package/min/persisters/persister-remote/index.js.gz +0 -0
  116. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  117. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  118. package/min/persisters/persister-sqlite-bun/index.js +1 -0
  119. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  120. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -0
  121. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  122. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  123. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  124. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  125. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  126. package/min/persisters/persister-sqlite3/index.js +1 -1
  127. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  128. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  129. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  130. package/min/persisters/persister-yjs/index.js +1 -1
  131. package/min/persisters/persister-yjs/index.js.gz +0 -0
  132. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  133. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  134. package/min/persisters/with-schemas/index.js +1 -1
  135. package/min/persisters/with-schemas/index.js.gz +0 -0
  136. package/min/store/index.js +1 -1
  137. package/min/store/index.js.gz +0 -0
  138. package/min/store/with-schemas/index.js +1 -1
  139. package/min/store/with-schemas/index.js.gz +0 -0
  140. package/min/synchronizers/index.js +1 -1
  141. package/min/synchronizers/index.js.gz +0 -0
  142. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  143. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  144. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  145. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  146. package/min/synchronizers/synchronizer-local/index.js +1 -1
  147. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  148. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  149. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  150. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  151. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  152. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  153. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  154. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  155. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  156. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  157. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  158. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  159. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  160. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  161. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  162. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  163. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  164. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  165. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  166. package/min/synchronizers/with-schemas/index.js +1 -1
  167. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  168. package/min/ui-react-inspector/index.js +1 -1
  169. package/min/ui-react-inspector/index.js.gz +0 -0
  170. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  171. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  172. package/min/with-schemas/index.js +1 -1
  173. package/min/with-schemas/index.js.gz +0 -0
  174. package/package.json +46 -6
  175. package/persisters/index.js +293 -161
  176. package/persisters/persister-automerge/index.js +55 -50
  177. package/persisters/persister-automerge/with-schemas/index.js +55 -50
  178. package/persisters/persister-browser/index.js +56 -55
  179. package/persisters/persister-browser/with-schemas/index.js +56 -55
  180. package/persisters/persister-cr-sqlite-wasm/index.js +181 -134
  181. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +181 -134
  182. package/persisters/persister-durable-object-storage/index.js +58 -53
  183. package/persisters/persister-durable-object-storage/with-schemas/index.js +58 -53
  184. package/persisters/persister-electric-sql/index.js +181 -134
  185. package/persisters/persister-electric-sql/with-schemas/index.js +181 -134
  186. package/persisters/persister-expo-sqlite/index.js +181 -134
  187. package/persisters/persister-expo-sqlite/with-schemas/index.js +181 -134
  188. package/persisters/persister-file/index.js +55 -50
  189. package/persisters/persister-file/with-schemas/index.js +55 -50
  190. package/persisters/persister-indexed-db/index.js +82 -78
  191. package/persisters/persister-indexed-db/with-schemas/index.js +82 -78
  192. package/persisters/persister-libsql/index.js +182 -135
  193. package/persisters/persister-libsql/with-schemas/index.js +182 -135
  194. package/persisters/persister-partykit-client/index.js +56 -51
  195. package/persisters/persister-partykit-client/with-schemas/index.js +56 -51
  196. package/persisters/persister-pglite/index.js +299 -173
  197. package/persisters/persister-pglite/with-schemas/index.js +299 -173
  198. package/persisters/persister-postgres/index.js +296 -171
  199. package/persisters/persister-postgres/with-schemas/index.js +296 -171
  200. package/persisters/persister-powersync/index.js +189 -138
  201. package/persisters/persister-powersync/with-schemas/index.js +189 -138
  202. package/persisters/persister-remote/index.js +55 -50
  203. package/persisters/persister-remote/with-schemas/index.js +55 -50
  204. package/persisters/persister-sqlite-bun/index.js +1171 -0
  205. package/persisters/persister-sqlite-bun/with-schemas/index.js +1171 -0
  206. package/persisters/persister-sqlite-wasm/index.js +182 -135
  207. package/persisters/persister-sqlite-wasm/with-schemas/index.js +182 -135
  208. package/persisters/persister-sqlite3/index.js +181 -134
  209. package/persisters/persister-sqlite3/with-schemas/index.js +181 -134
  210. package/persisters/persister-yjs/index.js +55 -50
  211. package/persisters/persister-yjs/with-schemas/index.js +55 -50
  212. package/persisters/with-schemas/index.js +293 -161
  213. package/readme.md +2 -2
  214. package/releases.md +29 -1
  215. package/store/index.js +20 -15
  216. package/store/with-schemas/index.js +20 -15
  217. package/synchronizers/index.js +68 -63
  218. package/synchronizers/synchronizer-broadcast-channel/index.js +68 -63
  219. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +68 -63
  220. package/synchronizers/synchronizer-local/index.js +68 -63
  221. package/synchronizers/synchronizer-local/with-schemas/index.js +68 -63
  222. package/synchronizers/synchronizer-ws-client/index.js +68 -63
  223. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +68 -63
  224. package/synchronizers/synchronizer-ws-server/index.js +79 -70
  225. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -70
  226. package/synchronizers/synchronizer-ws-server-durable-object/index.js +69 -51
  227. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +69 -51
  228. package/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  229. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  230. package/synchronizers/with-schemas/index.js +68 -63
  231. package/ui-react-inspector/index.js +68 -60
  232. package/ui-react-inspector/with-schemas/index.js +68 -60
  233. package/with-schemas/index.js +23 -17
@@ -41,7 +41,7 @@ export interface IndexedDbPersister extends Persister {
41
41
  * console.log(persister.getDbName());
42
42
  * // -> 'petStore'
43
43
  *
44
- * persister.destroy();
44
+ * await persister.destroy();
45
45
  * ```
46
46
  * @category Getter
47
47
  * @since v4.3.14
@@ -107,7 +107,7 @@ export interface IndexedDbPersister extends Persister {
107
107
  * // k: "open"
108
108
  * // v: true
109
109
  *
110
- * persister.destroy();
110
+ * await persister.destroy();
111
111
  * ```
112
112
  * @category Creation
113
113
  * @since v4.2.0
@@ -45,7 +45,7 @@ export interface IndexedDbPersister<Schemas extends OptionalSchemas>
45
45
  * console.log(persister.getDbName());
46
46
  * // -> 'petStore'
47
47
  *
48
- * persister.destroy();
48
+ * await persister.destroy();
49
49
  * ```
50
50
  * @category Getter
51
51
  * @since v4.3.14
@@ -122,7 +122,7 @@ export interface IndexedDbPersister<Schemas extends OptionalSchemas>
122
122
  * // k: "open"
123
123
  * // v: true
124
124
  *
125
- * persister.destroy();
125
+ * await persister.destroy();
126
126
  * ```
127
127
  * @category Creation
128
128
  * @since v4.2.0
@@ -45,7 +45,7 @@ export interface LibSqlPersister extends Persister {
45
45
  * console.log(persister.getClient() == client);
46
46
  * // -> true
47
47
  *
48
- * persister.destroy();
48
+ * await persister.destroy();
49
49
  * ```
50
50
  * @category Getter
51
51
  * @since v4.7.0
@@ -115,7 +115,7 @@ export interface LibSqlPersister extends Persister {
115
115
  * console.log(store.getTables());
116
116
  * // -> {pets: {felix: {species: 'cat'}}}
117
117
  *
118
- * persister.destroy();
118
+ * await persister.destroy();
119
119
  * ```
120
120
  * @example
121
121
  * This example creates a LibSqlPersister object and persists the Store to a
@@ -144,7 +144,7 @@ export interface LibSqlPersister extends Persister {
144
144
  * console.log(store.getTables());
145
145
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
146
146
  *
147
- * persister.destroy();
147
+ * await persister.destroy();
148
148
  * ```
149
149
  * @category Creation
150
150
  * @since v4.7.0
@@ -52,7 +52,7 @@ export interface LibSqlPersister<Schemas extends OptionalSchemas>
52
52
  * console.log(persister.getClient() == client);
53
53
  * // -> true
54
54
  *
55
- * persister.destroy();
55
+ * await persister.destroy();
56
56
  * ```
57
57
  * @category Getter
58
58
  * @since v4.7.0
@@ -134,7 +134,7 @@ export interface LibSqlPersister<Schemas extends OptionalSchemas>
134
134
  * console.log(store.getTables());
135
135
  * // -> {pets: {felix: {species: 'cat'}}}
136
136
  *
137
- * persister.destroy();
137
+ * await persister.destroy();
138
138
  * ```
139
139
  * @example
140
140
  * This example creates a LibSqlPersister object and persists the Store to a
@@ -163,7 +163,7 @@ export interface LibSqlPersister<Schemas extends OptionalSchemas>
163
163
  * console.log(store.getTables());
164
164
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
165
165
  *
166
- * persister.destroy();
166
+ * await persister.destroy();
167
167
  * ```
168
168
  * @category Creation
169
169
  * @since v4.7.0
@@ -59,7 +59,7 @@ export interface PartyKitPersister extends Persister {
59
59
  * console.log(persister.getConnection() == partySocket);
60
60
  * // -> true
61
61
  *
62
- * persister.destroy();
62
+ * await persister.destroy();
63
63
  * ```
64
64
  * @category Getter
65
65
  * @since v4.3.14
@@ -182,7 +182,7 @@ export type PartyKitPersisterConfig = {
182
182
  * await persister.startAutoSave();
183
183
  * // Store will now be synchronized with the room.
184
184
  *
185
- * persister.destroy();
185
+ * await persister.destroy();
186
186
  * ```
187
187
  * @category Creation
188
188
  * @since v4.3.0
@@ -63,7 +63,7 @@ export interface PartyKitPersister<Schemas extends OptionalSchemas>
63
63
  * console.log(persister.getConnection() == partySocket);
64
64
  * // -> true
65
65
  *
66
- * persister.destroy();
66
+ * await persister.destroy();
67
67
  * ```
68
68
  * @category Getter
69
69
  * @since v4.3.14
@@ -197,7 +197,7 @@ export type PartyKitPersisterConfig = {
197
197
  * await persister.startAutoSave();
198
198
  * // Store will now be synchronized with the room.
199
199
  *
200
- * persister.destroy();
200
+ * await persister.destroy();
201
201
  * ```
202
202
  * @category Creation
203
203
  * @since v4.3.0
@@ -50,7 +50,7 @@ export interface PglitePersister
50
50
  * console.log(persister.getPglite() == pglite);
51
51
  * // -> true
52
52
  *
53
- * persister.destroy();
53
+ * await persister.destroy();
54
54
  * await pglite.close();
55
55
  * ```
56
56
  * @category Getter
@@ -130,7 +130,7 @@ export interface PglitePersister
130
130
  * console.log(store.getTables());
131
131
  * // -> {pets: {felix: {species: 'cat'}}}
132
132
  *
133
- * persister.destroy();
133
+ * await persister.destroy();
134
134
  * await pglite.close();
135
135
  * ```
136
136
  * @example
@@ -161,7 +161,7 @@ export interface PglitePersister
161
161
  * console.log(store.getTables());
162
162
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
163
163
  *
164
- * persister.destroy();
164
+ * await persister.destroy();
165
165
  * await pglite.query('DROP TABLE IF EXISTS pets');
166
166
  * await pglite.close();
167
167
  * ```
@@ -57,7 +57,7 @@ export interface PglitePersister<Schemas extends OptionalSchemas>
57
57
  * console.log(persister.getPglite() == pglite);
58
58
  * // -> true
59
59
  *
60
- * persister.destroy();
60
+ * await persister.destroy();
61
61
  * await pglite.close();
62
62
  * ```
63
63
  * @category Getter
@@ -149,7 +149,7 @@ export interface PglitePersister<Schemas extends OptionalSchemas>
149
149
  * console.log(store.getTables());
150
150
  * // -> {pets: {felix: {species: 'cat'}}}
151
151
  *
152
- * persister.destroy();
152
+ * await persister.destroy();
153
153
  * await pglite.close();
154
154
  * ```
155
155
  * @example
@@ -180,7 +180,7 @@ export interface PglitePersister<Schemas extends OptionalSchemas>
180
180
  * console.log(store.getTables());
181
181
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
182
182
  *
183
- * persister.destroy();
183
+ * await persister.destroy();
184
184
  * await pglite.query('DROP TABLE IF EXISTS pets');
185
185
  * await pglite.close();
186
186
  * ```
@@ -46,7 +46,7 @@ export interface PostgresPersister
46
46
  * console.log(persister.getSql() == sql);
47
47
  * // -> true
48
48
  *
49
- * persister.destroy();
49
+ * await persister.destroy();
50
50
  * await sql.end();
51
51
  * ```
52
52
  * @category Getter
@@ -121,7 +121,7 @@ export interface PostgresPersister
121
121
  * console.log(store.getTables());
122
122
  * // -> {pets: {felix: {species: 'cat'}}}
123
123
  *
124
- * persister.destroy();
124
+ * await persister.destroy();
125
125
  * await sql.end();
126
126
  * ```
127
127
  * @example
@@ -150,7 +150,7 @@ export interface PostgresPersister
150
150
  * console.log(store.getTables());
151
151
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
152
152
  *
153
- * persister.destroy();
153
+ * await persister.destroy();
154
154
  * await sql`DROP TABLE IF EXISTS pets`;
155
155
  * await sql.end();
156
156
  * ```
@@ -53,7 +53,7 @@ export interface PostgresPersister<Schemas extends OptionalSchemas>
53
53
  * console.log(persister.getSql() == sql);
54
54
  * // -> true
55
55
  *
56
- * persister.destroy();
56
+ * await persister.destroy();
57
57
  * await sql.end();
58
58
  * ```
59
59
  * @category Getter
@@ -140,7 +140,7 @@ export interface PostgresPersister<Schemas extends OptionalSchemas>
140
140
  * console.log(store.getTables());
141
141
  * // -> {pets: {felix: {species: 'cat'}}}
142
142
  *
143
- * persister.destroy();
143
+ * await persister.destroy();
144
144
  * await sql.end();
145
145
  * ```
146
146
  * @example
@@ -169,7 +169,7 @@ export interface PostgresPersister<Schemas extends OptionalSchemas>
169
169
  * console.log(store.getTables());
170
170
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
171
171
  *
172
- * persister.destroy();
172
+ * await persister.destroy();
173
173
  * await sql`DROP TABLE IF EXISTS pets`;
174
174
  * await sql.end();
175
175
  * ```
@@ -46,7 +46,7 @@ export interface PowerSyncPersister extends Persister {
46
46
  * console.log(persister.getPowerSync() == ps);
47
47
  * // -> true
48
48
  *
49
- * persister.destroy();
49
+ * await persister.destroy();
50
50
  * ```
51
51
  * @category Getter
52
52
  * @since v4.8.0
@@ -124,7 +124,7 @@ export interface PowerSyncPersister extends Persister {
124
124
  * console.log(store.getTables());
125
125
  * // -> {pets: {felix: {species: 'cat'}}}
126
126
  *
127
- * persister.destroy();
127
+ * await persister.destroy();
128
128
  * ```
129
129
  * @example
130
130
  * This example creates a PowerSyncPersister object and persists the Store to a
@@ -160,7 +160,7 @@ export interface PowerSyncPersister extends Persister {
160
160
  * console.log(store.getTables());
161
161
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
162
162
  *
163
- * persister.destroy();
163
+ * await persister.destroy();
164
164
  * ```
165
165
  * @category Creation
166
166
  * @since v4.8.0
@@ -53,7 +53,7 @@ export interface PowerSyncPersister<Schemas extends OptionalSchemas>
53
53
  * console.log(persister.getPowerSync() == ps);
54
54
  * // -> true
55
55
  *
56
- * persister.destroy();
56
+ * await persister.destroy();
57
57
  * ```
58
58
  * @category Getter
59
59
  * @since v4.8.0
@@ -143,7 +143,7 @@ export interface PowerSyncPersister<Schemas extends OptionalSchemas>
143
143
  * console.log(store.getTables());
144
144
  * // -> {pets: {felix: {species: 'cat'}}}
145
145
  *
146
- * persister.destroy();
146
+ * await persister.destroy();
147
147
  * ```
148
148
  * @example
149
149
  * This example creates a PowerSyncPersister object and persists the Store to a
@@ -179,7 +179,7 @@ export interface PowerSyncPersister<Schemas extends OptionalSchemas>
179
179
  * console.log(store.getTables());
180
180
  * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
181
181
  *
182
- * persister.destroy();
182
+ * await persister.destroy();
183
183
  * ```
184
184
  * @category Creation
185
185
  * @since v4.8.0
@@ -44,7 +44,7 @@ export interface RemotePersister extends Persister {
44
44
  * console.log(persister.getUrls());
45
45
  * // -> ['https://example.com/load', 'https://example.com/save']
46
46
  *
47
- * persister.destroy();
47
+ * await persister.destroy();
48
48
  * ```
49
49
  * @category Getter
50
50
  * @since v4.3.14
@@ -103,7 +103,7 @@ export interface RemotePersister extends Persister {
103
103
  * await persister.load();
104
104
  * // Store JSON will be fetched from server with a GET request.
105
105
  *
106
- * persister.destroy();
106
+ * await persister.destroy();
107
107
  * ```
108
108
  * @category Creation
109
109
  * @since v1.0.0
@@ -48,7 +48,7 @@ export interface RemotePersister<Schemas extends OptionalSchemas>
48
48
  * console.log(persister.getUrls());
49
49
  * // -> ['https://example.com/load', 'https://example.com/save']
50
50
  *
51
- * persister.destroy();
51
+ * await persister.destroy();
52
52
  * ```
53
53
  * @category Getter
54
54
  * @since v4.3.14
@@ -119,7 +119,7 @@ export interface RemotePersister<Schemas extends OptionalSchemas>
119
119
  * await persister.load();
120
120
  * // Store JSON will be fetched from server with a GET request.
121
121
  *
122
- * persister.destroy();
122
+ * await persister.destroy();
123
123
  * ```
124
124
  * @category Creation
125
125
  * @since v1.0.0
@@ -0,0 +1,159 @@
1
+ /**
2
+ * The persister-sqlite-bun module of the TinyBase project lets you save and
3
+ * load Store data to and from a local Bun SQLite database (in an appropriate
4
+ * environment).
5
+ * @see Database Persistence guide
6
+ * @packageDocumentation
7
+ * @module persister-sqlite-bun
8
+ * @since v6.1.0
9
+ */
10
+ import type {Database} from 'bun:sqlite';
11
+ import type {MergeableStore} from '../../mergeable-store/index.d.ts';
12
+ import type {Store} from '../../store/index.d.ts';
13
+ import type {DatabasePersisterConfig, Persister, Persists} from '../index.d.ts';
14
+
15
+ /**
16
+ * The SqliteBunPersister interface represents a Persister that lets you save
17
+ * and load Store data to and from a local Bun SQLite database.
18
+ *
19
+ * You should use the createSqliteBunPersister function to create a
20
+ * SqliteBunPersister object.
21
+ *
22
+ * It is a minor extension to the Persister interface and simply provides an
23
+ * extra getDb method for accessing a reference to the database instance the
24
+ * Store is being persisted to.
25
+ * @category Persister
26
+ * @since v6.1.0
27
+ */
28
+ export interface SqliteBunPersister
29
+ extends Persister<Persists.StoreOrMergeableStore> {
30
+ /**
31
+ * The getDb method returns a reference to the database instance the Store is
32
+ * being persisted to.
33
+ * @returns A reference to the database instance.
34
+ * @example
35
+ * This example creates a Persister object against a newly-created Store and
36
+ * then gets the database instance back out again.
37
+ *
38
+ * ```js bun
39
+ * import {Database} from 'bun:sqlite';
40
+ * import {createStore} from 'tinybase';
41
+ * import {createSqliteBunPersister} from 'tinybase/persisters/persister-sqlite-bun';
42
+ *
43
+ * const db = new Database(':memory:');
44
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
45
+ * const persister = createSqliteBunPersister(store, db, 'my_tinybase');
46
+ *
47
+ * console.log(persister.getDb() == db);
48
+ * // -> true
49
+ *
50
+ * await persister.destroy();
51
+ * ```
52
+ * @category Getter
53
+ * @since v6.1.0
54
+ */
55
+ getDb(): Database;
56
+ }
57
+
58
+ /**
59
+ * The createSqliteBunPersister function creates a SqliteBunPersister object
60
+ * that can persist the Store to a local Bun SQLite database.
61
+ *
62
+ * A SqliteBunPersister supports regular Store objects, and can also be used to
63
+ * persist the metadata of a MergeableStore when using the JSON serialization
64
+ * mode, as described below.
65
+ *
66
+ * As well as providing a reference to the Store to persist, you must provide a
67
+ * `db` parameter which identifies the database instance.
68
+ *
69
+ * A database Persister uses one of two modes: either a JSON serialization of
70
+ * the whole Store stored in a single row of a table (the default), or a tabular
71
+ * mapping of Table Ids to database table names and vice-versa).
72
+ *
73
+ * The third argument is a DatabasePersisterConfig object that configures which
74
+ * of those modes to use, and settings for each. If the third argument is simply
75
+ * a string, it is used as the `storeTableName` property of the JSON
76
+ * serialization.
77
+ *
78
+ * See the documentation for the DpcJson and DpcTabular types for more
79
+ * information on how both of those modes can be configured.
80
+ * @param store The Store or MergeableStore to persist.
81
+ * @param db The database instance that was returned from `new Database(...)`.
82
+ * @param configOrStoreTableName A DatabasePersisterConfig to configure the
83
+ * persistence mode (or a string to set the `storeTableName` property of the
84
+ * JSON serialization).
85
+ * @param onSqlCommand An optional handler called every time the Persister
86
+ * executes a SQL command or query. This is suitable for logging persistence
87
+ * behavior in a development environment.
88
+ * @param onIgnoredError An optional handler for the errors that the Persister
89
+ * would otherwise ignore when trying to save or load data. This is suitable for
90
+ * debugging persistence issues in a development environment.
91
+ * @returns A reference to the new SqliteBunPersister object.
92
+ * @example
93
+ * This example creates a SqliteBunPersister object and persists the Store to a
94
+ * local SQLite database as a JSON serialization into the `my_tinybase` table.
95
+ * It makes a change to the database directly and then reloads it back into the
96
+ * Store.
97
+ *
98
+ * ```js bun
99
+ * import {Database} from 'bun:sqlite';
100
+ * import {createStore} from 'tinybase';
101
+ * import {createSqliteBunPersister} from 'tinybase/persisters/persister-sqlite-bun';
102
+ *
103
+ * const db = new Database(':memory:');
104
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
105
+ * const persister = createSqliteBunPersister(store, db, 'my_tinybase');
106
+ *
107
+ * await persister.save();
108
+ * // Store will be saved to the database.
109
+ *
110
+ * console.log(db.query('SELECT * FROM my_tinybase;').all());
111
+ * // -> [{_id: '_', store: '[{"pets":{"fido":{"species":"dog"}}},{}]'}]
112
+ *
113
+ * db.query(
114
+ * 'UPDATE my_tinybase SET store = ' +
115
+ * `'[{"pets":{"felix":{"species":"cat"}}},{}]' WHERE _id = '_';`,
116
+ * ).run();
117
+ * await persister.load();
118
+ * console.log(store.getTables());
119
+ * // -> {pets: {felix: {species: 'cat'}}}
120
+ *
121
+ * await persister.destroy();
122
+ * ```
123
+ * @example
124
+ * This example creates a SqliteBunPersister object and persists the Store to a
125
+ * local SQLite database with tabular mapping.
126
+ *
127
+ * ```js bun
128
+ * import {Database} from 'bun:sqlite';
129
+ * import {createStore} from 'tinybase';
130
+ * import {createSqliteBunPersister} from 'tinybase/persisters/persister-sqlite-bun';
131
+ *
132
+ * const db = new Database(':memory:');
133
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
134
+ * const persister = createSqliteBunPersister(store, db, {
135
+ * mode: 'tabular',
136
+ * tables: {load: {pets: 'pets'}, save: {pets: 'pets'}},
137
+ * });
138
+ *
139
+ * await persister.save();
140
+ * console.log(db.query('SELECT * FROM pets;').all());
141
+ * // -> [{_id: 'fido', species: 'dog'}]
142
+ *
143
+ * db.query(`INSERT INTO pets (_id, species) VALUES ('felix', 'cat')`).run();
144
+ * await persister.load();
145
+ * console.log(store.getTables());
146
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
147
+ *
148
+ * await persister.destroy();
149
+ * ```
150
+ * @category Creation
151
+ * @since v6.1.0
152
+ */
153
+ export function createSqliteBunPersister(
154
+ store: Store | MergeableStore,
155
+ db: Database,
156
+ configOrStoreTableName?: DatabasePersisterConfig | string,
157
+ onSqlCommand?: (sql: string, params?: any[]) => void,
158
+ onIgnoredError?: (error: any) => void,
159
+ ): SqliteBunPersister;
@@ -0,0 +1,178 @@
1
+ /**
2
+ * The persister-sqlite-bun module of the TinyBase project lets you save and
3
+ * load Store data to and from a local Bun SQLite database (in an appropriate
4
+ * environment).
5
+ * @see Database Persistence guide
6
+ * @packageDocumentation
7
+ * @module persister-sqlite-bun
8
+ * @since v6.1.0
9
+ */
10
+ import type {Database} from 'bun:sqlite';
11
+ import type {MergeableStore} from '../../../mergeable-store/with-schemas/index.d.ts';
12
+ import type {
13
+ OptionalSchemas,
14
+ Store,
15
+ } from '../../../store/with-schemas/index.d.ts';
16
+ import type {
17
+ DatabasePersisterConfig,
18
+ Persister,
19
+ Persists,
20
+ } from '../../with-schemas/index.d.ts';
21
+
22
+ /**
23
+ * The SqliteBunPersister interface represents a Persister that lets you save
24
+ * and load Store data to and from a local Bun SQLite database.
25
+ *
26
+ * You should use the createSqliteBunPersister function to create a
27
+ * SqliteBunPersister object.
28
+ *
29
+ * It is a minor extension to the Persister interface and simply provides an
30
+ * extra getDb method for accessing a reference to the database instance the
31
+ * Store is being persisted to.
32
+ * @category Persister
33
+ * @since v6.1.0
34
+ */
35
+ export interface SqliteBunPersister<Schemas extends OptionalSchemas>
36
+ extends Persister<Schemas, Persists.StoreOrMergeableStore> {
37
+ /**
38
+ * The getDb method returns a reference to the database instance the Store is
39
+ * being persisted to.
40
+ * @returns A reference to the database instance.
41
+ * @example
42
+ * This example creates a Persister object against a newly-created Store and
43
+ * then gets the database instance back out again.
44
+ *
45
+ * ```js bun
46
+ * import {Database} from 'bun:sqlite';
47
+ * import {createStore} from 'tinybase';
48
+ * import {createSqliteBunPersister} from 'tinybase/persisters/persister-sqlite-bun';
49
+ *
50
+ * const db = new Database(':memory:');
51
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
52
+ * const persister = createSqliteBunPersister(store, db, 'my_tinybase');
53
+ *
54
+ * console.log(persister.getDb() == db);
55
+ * // -> true
56
+ *
57
+ * await persister.destroy();
58
+ * ```
59
+ * @category Getter
60
+ * @since v6.1.0
61
+ */
62
+ getDb(): Database;
63
+ }
64
+
65
+ /**
66
+ * The createSqliteBunPersister function creates a SqliteBunPersister object
67
+ * that can persist the Store to a local Bun SQLite database.
68
+ *
69
+ * This has schema-based typing. The following is a simplified representation:
70
+ *
71
+ * ```ts override
72
+ * createSqliteBunPersister(
73
+ * store: Store | MergeableStore,
74
+ * db: Database,
75
+ * configOrStoreTableName?: DatabasePersisterConfig | string,
76
+ * onSqlCommand?: (sql: string, params?: any[]) => void,
77
+ * onIgnoredError?: (error: any) => void,
78
+ * ): SqliteBunPersister;
79
+ * ```
80
+ *
81
+ * A SqliteBunPersister supports regular Store objects, and can also be used to
82
+ * persist the metadata of a MergeableStore when using the JSON serialization
83
+ * mode, as described below.
84
+ *
85
+ * As well as providing a reference to the Store to persist, you must provide a
86
+ * `db` parameter which identifies the database instance.
87
+ *
88
+ * A database Persister uses one of two modes: either a JSON serialization of
89
+ * the whole Store stored in a single row of a table (the default), or a tabular
90
+ * mapping of Table Ids to database table names and vice-versa).
91
+ *
92
+ * The third argument is a DatabasePersisterConfig object that configures which
93
+ * of those modes to use, and settings for each. If the third argument is simply
94
+ * a string, it is used as the `storeTableName` property of the JSON
95
+ * serialization.
96
+ *
97
+ * See the documentation for the DpcJson and DpcTabular types for more
98
+ * information on how both of those modes can be configured.
99
+ * @param store The Store or MergeableStore to persist.
100
+ * @param db The database instance that was returned from `new Database(...)`.
101
+ * @param configOrStoreTableName A DatabasePersisterConfig to configure the
102
+ * persistence mode (or a string to set the `storeTableName` property of the
103
+ * JSON serialization).
104
+ * @param onSqlCommand An optional handler called every time the Persister
105
+ * executes a SQL command or query. This is suitable for logging persistence
106
+ * behavior in a development environment.
107
+ * @param onIgnoredError An optional handler for the errors that the Persister
108
+ * would otherwise ignore when trying to save or load data. This is suitable for
109
+ * debugging persistence issues in a development environment.
110
+ * @returns A reference to the new SqliteBunPersister object.
111
+ * @example
112
+ * This example creates a SqliteBunPersister object and persists the Store to a
113
+ * local SQLite database as a JSON serialization into the `my_tinybase` table.
114
+ * It makes a change to the database directly and then reloads it back into the
115
+ * Store.
116
+ *
117
+ * ```js bun
118
+ * import {Database} from 'bun:sqlite';
119
+ * import {createStore} from 'tinybase';
120
+ * import {createSqliteBunPersister} from 'tinybase/persisters/persister-sqlite-bun';
121
+ *
122
+ * const db = new Database(':memory:');
123
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
124
+ * const persister = createSqliteBunPersister(store, db, 'my_tinybase');
125
+ *
126
+ * await persister.save();
127
+ * // Store will be saved to the database.
128
+ *
129
+ * console.log(db.query('SELECT * FROM my_tinybase;').all());
130
+ * // -> [{_id: '_', store: '[{"pets":{"fido":{"species":"dog"}}},{}]'}]
131
+ *
132
+ * db.query(
133
+ * 'UPDATE my_tinybase SET store = ' +
134
+ * `'[{"pets":{"felix":{"species":"cat"}}},{}]' WHERE _id = '_';`,
135
+ * ).run();
136
+ * await persister.load();
137
+ * console.log(store.getTables());
138
+ * // -> {pets: {felix: {species: 'cat'}}}
139
+ *
140
+ * await persister.destroy();
141
+ * ```
142
+ * @example
143
+ * This example creates a SqliteBunPersister object and persists the Store to a
144
+ * local SQLite database with tabular mapping.
145
+ *
146
+ * ```js bun
147
+ * import {Database} from 'bun:sqlite';
148
+ * import {createStore} from 'tinybase';
149
+ * import {createSqliteBunPersister} from 'tinybase/persisters/persister-sqlite-bun';
150
+ *
151
+ * const db = new Database(':memory:');
152
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
153
+ * const persister = createSqliteBunPersister(store, db, {
154
+ * mode: 'tabular',
155
+ * tables: {load: {pets: 'pets'}, save: {pets: 'pets'}},
156
+ * });
157
+ *
158
+ * await persister.save();
159
+ * console.log(db.query('SELECT * FROM pets;').all());
160
+ * // -> [{_id: 'fido', species: 'dog'}]
161
+ *
162
+ * db.query(`INSERT INTO pets (_id, species) VALUES ('felix', 'cat')`).run();
163
+ * await persister.load();
164
+ * console.log(store.getTables());
165
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
166
+ *
167
+ * await persister.destroy();
168
+ * ```
169
+ * @category Creation
170
+ * @since v6.1.0
171
+ */
172
+ export function createSqliteBunPersister<Schemas extends OptionalSchemas>(
173
+ store: Store<Schemas> | MergeableStore<Schemas>,
174
+ db: Database,
175
+ configOrStoreTableName?: DatabasePersisterConfig<Schemas> | string,
176
+ onSqlCommand?: (sql: string, params?: any[]) => void,
177
+ onIgnoredError?: (error: any) => void,
178
+ ): SqliteBunPersister<Schemas>;