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.
- package/@types/persisters/index.d.ts +83 -40
- package/@types/persisters/persister-automerge/index.d.ts +4 -4
- package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
- package/@types/persisters/persister-browser/index.d.ts +4 -4
- package/@types/persisters/persister-browser/with-schemas/index.d.ts +4 -4
- package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +3 -3
- package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-electric-sql/index.d.ts +3 -3
- package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-expo-sqlite/index.d.ts +3 -3
- package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-file/index.d.ts +2 -2
- package/@types/persisters/persister-file/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-indexed-db/index.d.ts +2 -2
- package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-libsql/index.d.ts +3 -3
- package/@types/persisters/persister-libsql/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-partykit-client/index.d.ts +2 -2
- package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-pglite/index.d.ts +3 -3
- package/@types/persisters/persister-pglite/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-postgres/index.d.ts +3 -3
- package/@types/persisters/persister-postgres/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-powersync/index.d.ts +3 -3
- package/@types/persisters/persister-powersync/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-remote/index.d.ts +2 -2
- package/@types/persisters/persister-remote/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-sqlite-bun/index.d.ts +159 -0
- package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +178 -0
- package/@types/persisters/persister-sqlite-wasm/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite3/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-yjs/index.d.ts +4 -4
- package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
- package/@types/persisters/with-schemas/index.d.ts +87 -42
- package/@types/synchronizers/index.d.ts +18 -16
- package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +3 -3
- package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -3
- package/@types/synchronizers/synchronizer-local/index.d.ts +2 -2
- package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +2 -2
- package/@types/synchronizers/synchronizer-ws-client/index.d.ts +5 -5
- package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +5 -5
- package/@types/synchronizers/synchronizer-ws-server/index.d.ts +37 -37
- package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +37 -37
- package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +7 -7
- package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +7 -7
- package/@types/synchronizers/with-schemas/index.d.ts +18 -16
- package/@types/ui-react/index.d.ts +2 -2
- package/@types/ui-react/with-schemas/index.d.ts +2 -2
- package/index.js +23 -17
- package/mergeable-store/index.js +23 -17
- package/mergeable-store/with-schemas/index.js +23 -17
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/mergeable-store/index.js +1 -1
- package/min/mergeable-store/index.js.gz +0 -0
- package/min/mergeable-store/with-schemas/index.js +1 -1
- package/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-browser/index.js +1 -1
- package/min/persisters/persister-browser/index.js.gz +0 -0
- package/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-file/index.js +1 -1
- package/min/persisters/persister-file/index.js.gz +0 -0
- package/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/index.js +1 -1
- package/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-remote/index.js +1 -1
- package/min/persisters/persister-remote/index.js.gz +0 -0
- package/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/index.js +1 -0
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/store/index.js +1 -1
- package/min/store/index.js.gz +0 -0
- package/min/store/with-schemas/index.js +1 -1
- package/min/store/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/index.js +1 -1
- package/min/synchronizers/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/index.js +1 -1
- package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react-inspector/index.js +1 -1
- package/min/ui-react-inspector/index.js.gz +0 -0
- package/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/min/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/package.json +46 -6
- package/persisters/index.js +293 -161
- package/persisters/persister-automerge/index.js +55 -50
- package/persisters/persister-automerge/with-schemas/index.js +55 -50
- package/persisters/persister-browser/index.js +56 -55
- package/persisters/persister-browser/with-schemas/index.js +56 -55
- package/persisters/persister-cr-sqlite-wasm/index.js +181 -134
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +181 -134
- package/persisters/persister-durable-object-storage/index.js +58 -53
- package/persisters/persister-durable-object-storage/with-schemas/index.js +58 -53
- package/persisters/persister-electric-sql/index.js +181 -134
- package/persisters/persister-electric-sql/with-schemas/index.js +181 -134
- package/persisters/persister-expo-sqlite/index.js +181 -134
- package/persisters/persister-expo-sqlite/with-schemas/index.js +181 -134
- package/persisters/persister-file/index.js +55 -50
- package/persisters/persister-file/with-schemas/index.js +55 -50
- package/persisters/persister-indexed-db/index.js +82 -78
- package/persisters/persister-indexed-db/with-schemas/index.js +82 -78
- package/persisters/persister-libsql/index.js +182 -135
- package/persisters/persister-libsql/with-schemas/index.js +182 -135
- package/persisters/persister-partykit-client/index.js +56 -51
- package/persisters/persister-partykit-client/with-schemas/index.js +56 -51
- package/persisters/persister-pglite/index.js +299 -173
- package/persisters/persister-pglite/with-schemas/index.js +299 -173
- package/persisters/persister-postgres/index.js +296 -171
- package/persisters/persister-postgres/with-schemas/index.js +296 -171
- package/persisters/persister-powersync/index.js +189 -138
- package/persisters/persister-powersync/with-schemas/index.js +189 -138
- package/persisters/persister-remote/index.js +55 -50
- package/persisters/persister-remote/with-schemas/index.js +55 -50
- package/persisters/persister-sqlite-bun/index.js +1171 -0
- package/persisters/persister-sqlite-bun/with-schemas/index.js +1171 -0
- package/persisters/persister-sqlite-wasm/index.js +182 -135
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +182 -135
- package/persisters/persister-sqlite3/index.js +181 -134
- package/persisters/persister-sqlite3/with-schemas/index.js +181 -134
- package/persisters/persister-yjs/index.js +55 -50
- package/persisters/persister-yjs/with-schemas/index.js +55 -50
- package/persisters/with-schemas/index.js +293 -161
- package/readme.md +2 -2
- package/releases.md +29 -1
- package/store/index.js +20 -15
- package/store/with-schemas/index.js +20 -15
- package/synchronizers/index.js +68 -63
- package/synchronizers/synchronizer-broadcast-channel/index.js +68 -63
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +68 -63
- package/synchronizers/synchronizer-local/index.js +68 -63
- package/synchronizers/synchronizer-local/with-schemas/index.js +68 -63
- package/synchronizers/synchronizer-ws-client/index.js +68 -63
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +68 -63
- package/synchronizers/synchronizer-ws-server/index.js +79 -70
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -70
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +69 -51
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +69 -51
- package/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/synchronizers/with-schemas/index.js +68 -63
- package/ui-react-inspector/index.js +68 -60
- package/ui-react-inspector/with-schemas/index.js +68 -60
- 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>;
|