tinybase 4.3.12 → 4.3.14
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/lib/cjs/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-browser.cjs +1 -1
- package/lib/cjs/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-file.cjs +1 -1
- package/lib/cjs/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-remote.cjs +1 -1
- package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/persisters.cjs +1 -1
- package/lib/cjs/persisters.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-automerge.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-automerge.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-browser.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-browser.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-file.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-file.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/persisters.cjs +1 -1
- package/lib/cjs-es6/persisters.cjs.gz +0 -0
- package/lib/cjs-es6/tinybase.cjs +1 -1
- package/lib/cjs-es6/tinybase.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/debug/persisters/persister-automerge.js +5 -0
- package/lib/debug/persisters/persister-browser.js +5 -0
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +12 -6
- package/lib/debug/persisters/persister-expo-sqlite.js +12 -6
- package/lib/debug/persisters/persister-file.js +5 -0
- package/lib/debug/persisters/persister-indexed-db.js +5 -0
- package/lib/debug/persisters/persister-partykit-client.js +6 -1
- package/lib/debug/persisters/persister-partykit-server.js +73 -82
- package/lib/debug/persisters/persister-remote.js +5 -0
- package/lib/debug/persisters/persister-sqlite-wasm.js +12 -6
- package/lib/debug/persisters/persister-sqlite3.js +12 -6
- package/lib/debug/persisters/persister-yjs.js +5 -0
- package/lib/debug/persisters.js +4 -0
- package/lib/debug/tinybase.js +4 -0
- package/lib/debug/ui-react-dom.js +5 -0
- package/lib/es6/persisters/persister-automerge.js +1 -1
- package/lib/es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/es6/persisters/persister-browser.js +1 -1
- package/lib/es6/persisters/persister-browser.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-file.js +1 -1
- package/lib/es6/persisters/persister-file.js.gz +0 -0
- package/lib/es6/persisters/persister-indexed-db.js +1 -1
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-client.js +1 -1
- package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-server.js +1 -1
- package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/es6/persisters/persister-remote.js +1 -1
- package/lib/es6/persisters/persister-remote.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/persisters/persister-yjs.js +1 -1
- package/lib/es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/es6/persisters.js +1 -1
- package/lib/es6/persisters.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/es6/ui-react-dom-debug.js +1 -1
- package/lib/es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/persisters/persister-automerge.js +1 -1
- package/lib/persisters/persister-automerge.js.gz +0 -0
- package/lib/persisters/persister-browser.js +1 -1
- package/lib/persisters/persister-browser.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-file.js +1 -1
- package/lib/persisters/persister-file.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -1
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-partykit-client.js +1 -1
- package/lib/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/persisters/persister-partykit-server.js +1 -1
- package/lib/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/persisters/persister-remote.js +1 -1
- package/lib/persisters/persister-remote.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/persisters/persister-yjs.js +1 -1
- package/lib/persisters/persister-yjs.js.gz +0 -0
- package/lib/persisters.js +1 -1
- package/lib/persisters.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/types/persisters/persister-automerge.d.ts +36 -3
- package/lib/types/persisters/persister-browser.d.ts +71 -8
- package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +42 -8
- package/lib/types/persisters/persister-expo-sqlite.d.ts +40 -7
- package/lib/types/persisters/persister-file.d.ts +34 -3
- package/lib/types/persisters/persister-indexed-db.d.ts +36 -4
- package/lib/types/persisters/persister-partykit-client.d.ts +40 -4
- package/lib/types/persisters/persister-partykit-server.d.ts +23 -13
- package/lib/types/persisters/persister-remote.d.ts +40 -4
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +46 -7
- package/lib/types/persisters/persister-sqlite3.d.ts +40 -7
- package/lib/types/persisters/persister-yjs.d.ts +37 -5
- package/lib/types/with-schemas/persisters/persister-automerge.d.ts +38 -4
- package/lib/types/with-schemas/persisters/persister-browser.d.ts +75 -10
- package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +44 -9
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +42 -8
- package/lib/types/with-schemas/persisters/persister-file.d.ts +36 -4
- package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +38 -5
- package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +42 -5
- package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +32 -13
- package/lib/types/with-schemas/persisters/persister-remote.d.ts +42 -5
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +48 -8
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +41 -7
- package/lib/types/with-schemas/persisters/persister-yjs.d.ts +39 -6
- package/lib/umd/persisters/persister-automerge.js +1 -1
- package/lib/umd/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd/persisters/persister-browser.js +1 -1
- package/lib/umd/persisters/persister-browser.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-file.js +1 -1
- package/lib/umd/persisters/persister-file.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -1
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-client.js +1 -1
- package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-server.js +1 -1
- package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd/persisters/persister-remote.js +1 -1
- package/lib/umd/persisters/persister-remote.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/persisters/persister-yjs.js +1 -1
- package/lib/umd/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd/persisters.js +1 -1
- package/lib/umd/persisters.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/ui-react-dom-debug.js +1 -1
- package/lib/umd/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-automerge.js +1 -1
- package/lib/umd-es6/persisters/persister-automerge.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-browser.js +1 -1
- package/lib/umd-es6/persisters/persister-browser.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-file.js +1 -1
- package/lib/umd-es6/persisters/persister-file.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-remote.js +1 -1
- package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-yjs.js +1 -1
- package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/persisters.js +1 -1
- package/lib/umd-es6/persisters.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/package.json +18 -18
- package/readme.md +2 -2
|
@@ -15,6 +15,40 @@ import {DatabasePersisterConfig, Persister} from '../persisters';
|
|
|
15
15
|
import {OptionalSchemas, Store} from '../store';
|
|
16
16
|
import {SQLiteDatabase} from 'expo-sqlite';
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* The ExpoSqlitePersister interface is a minor extension to the Persister
|
|
20
|
+
* interface.
|
|
21
|
+
*
|
|
22
|
+
* It simply provides an extra getDb method for accessing a reference to the
|
|
23
|
+
* database instance the Store is being persisted to.
|
|
24
|
+
* @since v4.3.14
|
|
25
|
+
*/
|
|
26
|
+
export interface ExpoSqlitePersister<Schemas extends OptionalSchemas>
|
|
27
|
+
extends Persister<Schemas> {
|
|
28
|
+
/**
|
|
29
|
+
* The getDb method returns a reference to the database instance the Store is
|
|
30
|
+
* being persisted to.
|
|
31
|
+
* @returns A reference to the database instance.
|
|
32
|
+
* @example
|
|
33
|
+
* This example creates a Persister object against a newly-created Store and
|
|
34
|
+
* then gets the database instance back out again.
|
|
35
|
+
*
|
|
36
|
+
* ```js yolo
|
|
37
|
+
* const db = SQLite.openDatabase('my.db');
|
|
38
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
39
|
+
* const persister = createExpoSqlitePersister(store, db, 'my_tinybase');
|
|
40
|
+
*
|
|
41
|
+
* console.log(persister.getDb() == db);
|
|
42
|
+
* // -> true
|
|
43
|
+
*
|
|
44
|
+
* persister.destroy();
|
|
45
|
+
* ```
|
|
46
|
+
* @category Getter
|
|
47
|
+
* @since v4.3.14
|
|
48
|
+
*/
|
|
49
|
+
getDb: () => SQLiteDatabase;
|
|
50
|
+
}
|
|
51
|
+
|
|
18
52
|
/**
|
|
19
53
|
* The createExpoSqlitePersister function creates a Persister object that can
|
|
20
54
|
* persist the Store to a local Expo-SQLite database (in an appropriate React
|
|
@@ -29,7 +63,7 @@ import {SQLiteDatabase} from 'expo-sqlite';
|
|
|
29
63
|
* configOrStoreTableName?: DatabasePersisterConfig | string,
|
|
30
64
|
* onSqlCommand?: (sql: string, args?: any[]) => void,
|
|
31
65
|
* onIgnoredError?: (error: any) => void,
|
|
32
|
-
* ):
|
|
66
|
+
* ): ExpoSqlitePersister;
|
|
33
67
|
* ```
|
|
34
68
|
*
|
|
35
69
|
* Note that this Persister is currently experimental as Expo themselves iterate
|
|
@@ -61,11 +95,11 @@ import {SQLiteDatabase} from 'expo-sqlite';
|
|
|
61
95
|
* @param onIgnoredError An optional handler for the errors that the Persister
|
|
62
96
|
* would otherwise ignore when trying to save or load data. This is suitable for
|
|
63
97
|
* debugging persistence issues in a development environment, since v4.0.4.
|
|
64
|
-
* @returns A reference to the new
|
|
98
|
+
* @returns A reference to the new ExpoSqlitePersister object.
|
|
65
99
|
* @example
|
|
66
|
-
* This example creates a
|
|
67
|
-
* SQLite database as a JSON serialization into the `my_tinybase` table.
|
|
68
|
-
* makes a change to the database directly and then reloads it back into the
|
|
100
|
+
* This example creates a ExpoSqlitePersister object and persists the Store to a
|
|
101
|
+
* local SQLite database as a JSON serialization into the `my_tinybase` table.
|
|
102
|
+
* It makes a change to the database directly and then reloads it back into the
|
|
69
103
|
* Store.
|
|
70
104
|
*
|
|
71
105
|
* ```js yolo
|
|
@@ -97,8 +131,8 @@ import {SQLiteDatabase} from 'expo-sqlite';
|
|
|
97
131
|
* persister.destroy();
|
|
98
132
|
* ```
|
|
99
133
|
* @example
|
|
100
|
-
* This example creates a
|
|
101
|
-
* SQLite database with tabular mapping.
|
|
134
|
+
* This example creates a ExpoSqlitePersister object and persists the Store to a
|
|
135
|
+
* local SQLite database with tabular mapping.
|
|
102
136
|
*
|
|
103
137
|
* ```js yolo
|
|
104
138
|
* const db = SQLite.openDatabase('my.db');
|
|
@@ -137,4 +171,4 @@ export function createExpoSqlitePersister<Schemas extends OptionalSchemas>(
|
|
|
137
171
|
configOrStoreTableName?: DatabasePersisterConfig<Schemas> | string,
|
|
138
172
|
onSqlCommand?: (sql: string, args?: any[]) => void,
|
|
139
173
|
onIgnoredError?: (error: any) => void,
|
|
140
|
-
):
|
|
174
|
+
): ExpoSqlitePersister<Schemas>;
|
|
@@ -9,6 +9,38 @@
|
|
|
9
9
|
import {OptionalSchemas, Store} from '../store';
|
|
10
10
|
import {Persister} from '../persisters';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* The FilePersister interface is a minor extension to the Persister interface.
|
|
14
|
+
*
|
|
15
|
+
* It simply provides an extra getFilePath method for accessing the location of
|
|
16
|
+
* the local file the Store is being persisted to.
|
|
17
|
+
* @since v4.3.14
|
|
18
|
+
*/
|
|
19
|
+
export interface FilePersister<Schemas extends OptionalSchemas>
|
|
20
|
+
extends Persister<Schemas> {
|
|
21
|
+
/**
|
|
22
|
+
* The getFilePath method returns the location of the local file the Store is
|
|
23
|
+
* being persisted to.
|
|
24
|
+
* @returns The location of the local file.
|
|
25
|
+
* @example
|
|
26
|
+
* This example creates a Persister object against a newly-created Store and
|
|
27
|
+
* then gets the file location back out again.
|
|
28
|
+
*
|
|
29
|
+
* ```js
|
|
30
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
31
|
+
* const persister = createFilePersister(store, '/app/persisted.json');
|
|
32
|
+
*
|
|
33
|
+
* console.log(persister.getFilePath());
|
|
34
|
+
* // -> '/app/persisted.json'
|
|
35
|
+
*
|
|
36
|
+
* persister.destroy();
|
|
37
|
+
* ```
|
|
38
|
+
* @category Getter
|
|
39
|
+
* @since v4.3.14
|
|
40
|
+
*/
|
|
41
|
+
getFilePath: () => string;
|
|
42
|
+
}
|
|
43
|
+
|
|
12
44
|
/**
|
|
13
45
|
* The createFilePersister function creates a Persister object that can persist
|
|
14
46
|
* the Store to a local file (in an appropriate environment).
|
|
@@ -20,7 +52,7 @@ import {Persister} from '../persisters';
|
|
|
20
52
|
* store: Store,
|
|
21
53
|
* filePath: string,
|
|
22
54
|
* onIgnoredError?: (error: any) => void,
|
|
23
|
-
* ):
|
|
55
|
+
* ): FilePersister;
|
|
24
56
|
* ```
|
|
25
57
|
*
|
|
26
58
|
* As well as providing a reference to the Store to persist, you must provide a
|
|
@@ -30,9 +62,9 @@ import {Persister} from '../persisters';
|
|
|
30
62
|
* @param onIgnoredError An optional handler for the errors that the Persister
|
|
31
63
|
* would otherwise ignore when trying to save or load data. This is suitable for
|
|
32
64
|
* debugging persistence issues in a development environment, since v4.0.4.
|
|
33
|
-
* @returns A reference to the new
|
|
65
|
+
* @returns A reference to the new FilePersister object.
|
|
34
66
|
* @example
|
|
35
|
-
* This example creates a
|
|
67
|
+
* This example creates a FilePersister object and persists the Store to a local
|
|
36
68
|
* file.
|
|
37
69
|
*
|
|
38
70
|
* ```js yolo
|
|
@@ -53,4 +85,4 @@ export function createFilePersister<Schemas extends OptionalSchemas>(
|
|
|
53
85
|
store: Store<Schemas>,
|
|
54
86
|
filePath: string,
|
|
55
87
|
onIgnoredError?: (error: any) => void,
|
|
56
|
-
):
|
|
88
|
+
): FilePersister<Schemas>;
|
|
@@ -9,6 +9,39 @@
|
|
|
9
9
|
import {OptionalSchemas, Store} from '../store';
|
|
10
10
|
import {Persister} from '../persisters';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* The IndexedDbPersister interface is a minor extension to the Persister
|
|
14
|
+
* interface.
|
|
15
|
+
*
|
|
16
|
+
* It simply provides an extra getDbName method for accessing the unique key of
|
|
17
|
+
* the IndexedDB the Store is being persisted to.
|
|
18
|
+
* @since v4.3.14
|
|
19
|
+
*/
|
|
20
|
+
export interface IndexedDbPersister<Schemas extends OptionalSchemas>
|
|
21
|
+
extends Persister<Schemas> {
|
|
22
|
+
/**
|
|
23
|
+
* The getDbName method returns the unique key of the IndexedDB the Store is
|
|
24
|
+
* being persisted to.
|
|
25
|
+
* @returns The unique key of the IndexedDB.
|
|
26
|
+
* @example
|
|
27
|
+
* This example creates a Persister object against a newly-created Store and
|
|
28
|
+
* then gets the unique key of the IndexedDB back out again.
|
|
29
|
+
*
|
|
30
|
+
* ```js
|
|
31
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
32
|
+
* const persister = createIndexedDbPersister(store, 'petStore');
|
|
33
|
+
*
|
|
34
|
+
* console.log(persister.getDbName());
|
|
35
|
+
* // -> 'petStore'
|
|
36
|
+
*
|
|
37
|
+
* persister.destroy();
|
|
38
|
+
* ```
|
|
39
|
+
* @category Getter
|
|
40
|
+
* @since v4.3.14
|
|
41
|
+
*/
|
|
42
|
+
getDbName: () => string;
|
|
43
|
+
}
|
|
44
|
+
|
|
12
45
|
/**
|
|
13
46
|
* The createIndexedDbPersister function creates a Persister object that can
|
|
14
47
|
* persist the Store to the browser's IndexedDB storage.
|
|
@@ -21,7 +54,7 @@ import {Persister} from '../persisters';
|
|
|
21
54
|
* dbName: string,
|
|
22
55
|
* autoLoadIntervalSeconds?: number,
|
|
23
56
|
* onIgnoredError?: (error: any) => void,
|
|
24
|
-
* ):
|
|
57
|
+
* ): IndexedDbPersister;
|
|
25
58
|
* ```
|
|
26
59
|
*
|
|
27
60
|
* As well as providing a reference to the Store to persist, you must provide a
|
|
@@ -45,10 +78,10 @@ import {Persister} from '../persisters';
|
|
|
45
78
|
* @param onIgnoredError An optional handler for the errors that the Persister
|
|
46
79
|
* would otherwise ignore when trying to save or load data. This is suitable for
|
|
47
80
|
* debugging persistence issues in a development environment.
|
|
48
|
-
* @returns A reference to the new
|
|
81
|
+
* @returns A reference to the new IndexedDbPersister object.
|
|
49
82
|
* @example
|
|
50
|
-
* This example creates a
|
|
51
|
-
* browser's IndexedDB storage.
|
|
83
|
+
* This example creates a IndexedDbPersister object and persists the Store to
|
|
84
|
+
* the browser's IndexedDB storage.
|
|
52
85
|
*
|
|
53
86
|
* ```js
|
|
54
87
|
* const store = createStore()
|
|
@@ -82,4 +115,4 @@ export function createIndexedDbPersister<Schemas extends OptionalSchemas>(
|
|
|
82
115
|
dbName: string,
|
|
83
116
|
autoLoadIntervalSeconds?: number,
|
|
84
117
|
onIgnoredError?: (error: any) => void,
|
|
85
|
-
):
|
|
118
|
+
): IndexedDbPersister<Schemas>;
|
|
@@ -23,6 +23,43 @@ import {OptionalSchemas, Store} from '../store';
|
|
|
23
23
|
import PartySocket from 'partysocket';
|
|
24
24
|
import {Persister} from '../persisters';
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* The PartyKitPersister interface is a minor extension to the Persister
|
|
28
|
+
* interface.
|
|
29
|
+
*
|
|
30
|
+
* It simply provides an extra getConnection method for accessing the
|
|
31
|
+
* PartySocket the Store is being persisted to.
|
|
32
|
+
* @since v4.3.14
|
|
33
|
+
*/
|
|
34
|
+
export interface PartyKitPersister<Schemas extends OptionalSchemas>
|
|
35
|
+
extends Persister<Schemas> {
|
|
36
|
+
/**
|
|
37
|
+
* The getConnection method returns the PartySocket the Store is being
|
|
38
|
+
* persisted to.
|
|
39
|
+
* @returns The PartySocket.
|
|
40
|
+
* @example
|
|
41
|
+
* This example creates a Persister object against a newly-created Store and
|
|
42
|
+
* then gets the PartySocket back out again.
|
|
43
|
+
*
|
|
44
|
+
* ```js yolo
|
|
45
|
+
* const partySocket = new PartySocket({
|
|
46
|
+
* host: PARTYKIT_HOST,
|
|
47
|
+
* room: 'my_room',
|
|
48
|
+
* });
|
|
49
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
50
|
+
* const persister = createPartyKitPersister(store, partySocket);
|
|
51
|
+
*
|
|
52
|
+
* console.log(persister.getConnection() == partySocket);
|
|
53
|
+
* // -> true
|
|
54
|
+
*
|
|
55
|
+
* persister.destroy();
|
|
56
|
+
* ```
|
|
57
|
+
* @category Getter
|
|
58
|
+
* @since v4.3.14
|
|
59
|
+
*/
|
|
60
|
+
getConnection: () => PartySocket;
|
|
61
|
+
}
|
|
62
|
+
|
|
26
63
|
/**
|
|
27
64
|
* The PartyKitPersisterConfig type describes the configuration of a PartyKit
|
|
28
65
|
* Persister on the client side.
|
|
@@ -39,7 +76,7 @@ import {Persister} from '../persisters';
|
|
|
39
76
|
* to the TinyBasePartyKitServerConfig on the server side.
|
|
40
77
|
*
|
|
41
78
|
* ```js
|
|
42
|
-
* const partyKitPersisterConfig
|
|
79
|
+
* const partyKitPersisterConfig = {
|
|
43
80
|
* storeProtocol: 'http',
|
|
44
81
|
* storePath: '/my_tinybase',
|
|
45
82
|
* };
|
|
@@ -84,7 +121,7 @@ export type PartyKitPersisterConfig = {
|
|
|
84
121
|
* connection: PartySocket,
|
|
85
122
|
* configOrStoreProtocol?: PartyKitPersisterConfig | 'http' | 'https',
|
|
86
123
|
* onIgnoredError?: (error: any) => void,
|
|
87
|
-
* ):
|
|
124
|
+
* ): PartyKitPersister;
|
|
88
125
|
* ```
|
|
89
126
|
*
|
|
90
127
|
* As well as providing a reference to the Store to persist, you must provide a
|
|
@@ -117,9 +154,9 @@ export type PartyKitPersisterConfig = {
|
|
|
117
154
|
* @param onIgnoredError An optional handler for the errors that the Persister
|
|
118
155
|
* would otherwise ignore when trying to save or load data. This is suitable for
|
|
119
156
|
* debugging persistence issues in a development environment.
|
|
120
|
-
* @returns A reference to the new
|
|
157
|
+
* @returns A reference to the new PartyKitPersister object.
|
|
121
158
|
* @example
|
|
122
|
-
* This example creates a
|
|
159
|
+
* This example creates a PartyKitPersister object and persists the Store to the
|
|
123
160
|
* browser's IndexedDB storage.
|
|
124
161
|
*
|
|
125
162
|
* ```js yolo
|
|
@@ -146,4 +183,4 @@ export function createPartyKitPersister<Schemas extends OptionalSchemas>(
|
|
|
146
183
|
connection: PartySocket,
|
|
147
184
|
configOrStoreProtocol?: PartyKitPersisterConfig | 'http' | 'https',
|
|
148
185
|
onIgnoredError?: (error: any) => void,
|
|
149
|
-
):
|
|
186
|
+
): PartyKitPersister<Schemas>;
|
|
@@ -18,7 +18,14 @@
|
|
|
18
18
|
* @since 4.3.0
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
Cell,
|
|
23
|
+
CellOrUndefined,
|
|
24
|
+
NoTablesSchema,
|
|
25
|
+
NoValuesSchema,
|
|
26
|
+
Value,
|
|
27
|
+
ValueOrUndefined,
|
|
28
|
+
} from '../store';
|
|
22
29
|
import {Connection, Party, Request, Server} from 'partykit/server';
|
|
23
30
|
import {Id} from '../common';
|
|
24
31
|
|
|
@@ -42,7 +49,7 @@ import {Id} from '../common';
|
|
|
42
49
|
*
|
|
43
50
|
* ```js
|
|
44
51
|
* class MyServer extends TinyBasePartyKitServer {
|
|
45
|
-
* readonly config
|
|
52
|
+
* readonly config = {
|
|
46
53
|
* storePath: '/my_tinybase',
|
|
47
54
|
* storagePrefix: 'tinybase_',
|
|
48
55
|
* };
|
|
@@ -119,8 +126,8 @@ export type TinyBasePartyKitServerConfig = {
|
|
|
119
126
|
* console.log('Server started');
|
|
120
127
|
* }
|
|
121
128
|
*
|
|
122
|
-
* async onMessage(message,
|
|
123
|
-
* await super.onMessage(message,
|
|
129
|
+
* async onMessage(message, connection) {
|
|
130
|
+
* await super.onMessage(message, connection);
|
|
124
131
|
* // custom onMessage code
|
|
125
132
|
* }
|
|
126
133
|
*
|
|
@@ -182,8 +189,8 @@ export class TinyBasePartyKitServer implements Server {
|
|
|
182
189
|
*
|
|
183
190
|
* ```js
|
|
184
191
|
* class MyServer extends TinyBasePartyKitServer {
|
|
185
|
-
* async onMessage(message,
|
|
186
|
-
* await super.onMessage(message,
|
|
192
|
+
* async onMessage(message, connection) {
|
|
193
|
+
* await super.onMessage(message, connection);
|
|
187
194
|
* // custom onMessage code
|
|
188
195
|
* }
|
|
189
196
|
* }
|
|
@@ -195,7 +202,7 @@ export class TinyBasePartyKitServer implements Server {
|
|
|
195
202
|
* @category Connection
|
|
196
203
|
* @since v4.3.0
|
|
197
204
|
*/
|
|
198
|
-
onMessage(message: string,
|
|
205
|
+
onMessage(message: string, connection: Connection): Promise<void>;
|
|
199
206
|
/**
|
|
200
207
|
* The canSetTable method lets you allow or disallow any changes to a Table
|
|
201
208
|
* stored on the server, as sent from a client.
|
|
@@ -211,9 +218,13 @@ export class TinyBasePartyKitServer implements Server {
|
|
|
211
218
|
* Store to the PartyKit room over HTTP (`true`), and subsequent incremental
|
|
212
219
|
* updates over a web sockets (`false`).
|
|
213
220
|
*
|
|
214
|
-
* The
|
|
215
|
-
*
|
|
216
|
-
*
|
|
221
|
+
* The `requestOrConnection` parameter will either be the HTTP(S) request or
|
|
222
|
+
* the web socket connection, in those two cases respectively. You can, for
|
|
223
|
+
* instance, use this to distinguish between different users.
|
|
224
|
+
*
|
|
225
|
+
* Since v4.3.13, the final parameter is the Cell previously stored on the
|
|
226
|
+
* server, if any. Use this to distinguish between the addition of a new Cell
|
|
227
|
+
* (in which case it will be undefined) and the updating of an existing one.
|
|
217
228
|
*
|
|
218
229
|
* Return `false` from this method to disallow changes to this Table on the
|
|
219
230
|
* server, or `true` to allow them (subject to subsequent canSetRow method,
|
|
@@ -360,6 +371,7 @@ export class TinyBasePartyKitServer implements Server {
|
|
|
360
371
|
* cell: Cell,
|
|
361
372
|
* initialSave: boolean,
|
|
362
373
|
* requestOrConnection: Request | Connection,
|
|
374
|
+
* oldCell: CellOrUndefined,
|
|
363
375
|
* ): boolean;
|
|
364
376
|
* ```
|
|
365
377
|
*
|
|
@@ -406,6 +418,7 @@ export class TinyBasePartyKitServer implements Server {
|
|
|
406
418
|
cell: Cell<NoTablesSchema, Id, Id>,
|
|
407
419
|
initialSave: boolean,
|
|
408
420
|
requestOrConnection: Request | Connection,
|
|
421
|
+
oldCell: CellOrUndefined<NoTablesSchema, Id, Id>,
|
|
409
422
|
): boolean;
|
|
410
423
|
/**
|
|
411
424
|
* The canDelCell method lets you allow or disallow deletions of a Cell stored
|
|
@@ -457,6 +470,7 @@ export class TinyBasePartyKitServer implements Server {
|
|
|
457
470
|
* value: Value,
|
|
458
471
|
* initialSave: boolean,
|
|
459
472
|
* requestOrConnection: Request | Connection,
|
|
473
|
+
* oldValue: ValueOrUndefined,
|
|
460
474
|
* ): boolean;
|
|
461
475
|
* ```
|
|
462
476
|
*
|
|
@@ -471,9 +485,13 @@ export class TinyBasePartyKitServer implements Server {
|
|
|
471
485
|
* the first bulk save of the Store to the PartyKit room over HTTP (`true`),
|
|
472
486
|
* and subsequent incremental updates over a web sockets (`false`).
|
|
473
487
|
*
|
|
474
|
-
* The
|
|
475
|
-
*
|
|
476
|
-
*
|
|
488
|
+
* The `requestOrConnection` parameter will either be the HTTP(S) request or
|
|
489
|
+
* the web socket connection, in those two cases respectively. You can, for
|
|
490
|
+
* instance, use this to distinguish between different users.
|
|
491
|
+
*
|
|
492
|
+
* Since v4.3.13, the final parameter is the Value previously stored on the
|
|
493
|
+
* server, if any. Use this to distinguish between the addition of a new Value
|
|
494
|
+
* (in which case it will be undefined) and the updating of an existing one.
|
|
477
495
|
*
|
|
478
496
|
* Return `false` from this method to disallow changes to this Value on the
|
|
479
497
|
* server, or `true` to allow them. The default implementation returns `true`
|
|
@@ -497,6 +515,7 @@ export class TinyBasePartyKitServer implements Server {
|
|
|
497
515
|
value: Value<NoValuesSchema, Id>,
|
|
498
516
|
initialSave: boolean,
|
|
499
517
|
requestOrConnection: Request | Connection,
|
|
518
|
+
oldValue: ValueOrUndefined<NoValuesSchema, Id>,
|
|
500
519
|
): boolean;
|
|
501
520
|
/**
|
|
502
521
|
* The canDelValue method lets you allow or disallow deletions of a Value
|
|
@@ -9,6 +9,43 @@
|
|
|
9
9
|
import {OptionalSchemas, Store} from '../store';
|
|
10
10
|
import {Persister} from '../persisters';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* The RemotePersister interface is a minor extension to the Persister
|
|
14
|
+
* interface.
|
|
15
|
+
*
|
|
16
|
+
* It simply provides an extra getUrls method for accessing the URLs the Store
|
|
17
|
+
* is being persisted to.
|
|
18
|
+
* @since v4.3.14
|
|
19
|
+
*/
|
|
20
|
+
export interface RemotePersister<Schemas extends OptionalSchemas>
|
|
21
|
+
extends Persister<Schemas> {
|
|
22
|
+
/**
|
|
23
|
+
* The getUrls method returns the URLs the Store is being persisted to.
|
|
24
|
+
* @returns The load and save URLs as a two-item array.
|
|
25
|
+
* @example
|
|
26
|
+
* This example creates a RemotePersister object against a newly-created Store
|
|
27
|
+
* and then gets the URLs back out again.
|
|
28
|
+
*
|
|
29
|
+
* ```js
|
|
30
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
31
|
+
* const persister = createRemotePersister(
|
|
32
|
+
* store,
|
|
33
|
+
* 'https://example.com/load',
|
|
34
|
+
* 'https://example.com/save',
|
|
35
|
+
* 5,
|
|
36
|
+
* );
|
|
37
|
+
*
|
|
38
|
+
* console.log(persister.getUrls());
|
|
39
|
+
* // -> ['https://example.com/load', 'https://example.com/save']
|
|
40
|
+
*
|
|
41
|
+
* persister.destroy();
|
|
42
|
+
* ```
|
|
43
|
+
* @category Getter
|
|
44
|
+
* @since v4.3.14
|
|
45
|
+
*/
|
|
46
|
+
getUrls: () => [string, string];
|
|
47
|
+
}
|
|
48
|
+
|
|
12
49
|
/**
|
|
13
50
|
* The createRemotePersister function creates a Persister object that can
|
|
14
51
|
* persist the Store to a remote server.
|
|
@@ -22,7 +59,7 @@ import {Persister} from '../persisters';
|
|
|
22
59
|
* saveUrl: string,
|
|
23
60
|
* autoLoadIntervalSeconds?: number,
|
|
24
61
|
* onIgnoredError?: (error: any) => void,
|
|
25
|
-
* ):
|
|
62
|
+
* ): RemotePersister;
|
|
26
63
|
* ```
|
|
27
64
|
*
|
|
28
65
|
* As well as providing a reference to the Store to persist, you must provide
|
|
@@ -41,10 +78,10 @@ import {Persister} from '../persisters';
|
|
|
41
78
|
* @param onIgnoredError An optional handler for the errors that the Persister
|
|
42
79
|
* would otherwise ignore when trying to save or load data. This is suitable for
|
|
43
80
|
* debugging persistence issues in a development environment, since v4.0.4.
|
|
44
|
-
* @returns A reference to the new
|
|
81
|
+
* @returns A reference to the new RemotePersister object.
|
|
45
82
|
* @example
|
|
46
|
-
* This example creates a
|
|
47
|
-
* server.
|
|
83
|
+
* This example creates a RemotePersister object and persists the Store to a
|
|
84
|
+
* remote server.
|
|
48
85
|
*
|
|
49
86
|
* ```js yolo
|
|
50
87
|
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
@@ -71,4 +108,4 @@ export function createRemotePersister<Schemas extends OptionalSchemas>(
|
|
|
71
108
|
saveUrl: string,
|
|
72
109
|
autoLoadIntervalSeconds?: number,
|
|
73
110
|
onIgnoredError?: (error: any) => void,
|
|
74
|
-
):
|
|
111
|
+
): RemotePersister<Schemas>;
|
|
@@ -11,6 +11,46 @@
|
|
|
11
11
|
import {DatabasePersisterConfig, Persister} from '../persisters';
|
|
12
12
|
import {OptionalSchemas, Store} from '../store';
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* The SqliteWasmPersister interface is a minor extension to the Persister
|
|
16
|
+
* interface.
|
|
17
|
+
*
|
|
18
|
+
* It simply provides an extra getDb method for accessing a reference to the
|
|
19
|
+
* database instance the Store is being persisted to.
|
|
20
|
+
* @since v4.3.14
|
|
21
|
+
*/
|
|
22
|
+
export interface SqliteWasmPersister<Schemas extends OptionalSchemas>
|
|
23
|
+
extends Persister<Schemas> {
|
|
24
|
+
/**
|
|
25
|
+
* The getDb method returns a reference to the database instance the Store is
|
|
26
|
+
* being persisted to.
|
|
27
|
+
* @returns A reference to the database instance.
|
|
28
|
+
* @example
|
|
29
|
+
* This example creates a Persister object against a newly-created Store and
|
|
30
|
+
* then gets the database instance back out again.
|
|
31
|
+
*
|
|
32
|
+
* ```js
|
|
33
|
+
* const sqlite3 = await sqlite3InitModule();
|
|
34
|
+
* const db = new sqlite3.oo1.DB(':memory:', 'c');
|
|
35
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
36
|
+
* const persister = createSqliteWasmPersister(
|
|
37
|
+
* store,
|
|
38
|
+
* sqlite3,
|
|
39
|
+
* db,
|
|
40
|
+
* 'my_tinybase',
|
|
41
|
+
* );
|
|
42
|
+
*
|
|
43
|
+
* console.log(persister.getDb() == db);
|
|
44
|
+
* // -> true
|
|
45
|
+
*
|
|
46
|
+
* persister.destroy();
|
|
47
|
+
* ```
|
|
48
|
+
* @category Getter
|
|
49
|
+
* @since v4.3.14
|
|
50
|
+
*/
|
|
51
|
+
getDb: () => any;
|
|
52
|
+
}
|
|
53
|
+
|
|
14
54
|
/**
|
|
15
55
|
* The createSqliteWasmPersister function creates a Persister object that can
|
|
16
56
|
* persist the Store to a local SQLite database (in an appropriate environment).
|
|
@@ -25,7 +65,7 @@ import {OptionalSchemas, Store} from '../store';
|
|
|
25
65
|
* configOrStoreTableName?: DatabasePersisterConfig | string,
|
|
26
66
|
* onSqlCommand?: (sql: string, args?: any[]) => void,
|
|
27
67
|
* onIgnoredError?: (error: any) => void,
|
|
28
|
-
* ):
|
|
68
|
+
* ): SqliteWasmPersister;
|
|
29
69
|
* ```
|
|
30
70
|
*
|
|
31
71
|
* As well as providing a reference to the Store to persist, you must provide
|
|
@@ -56,11 +96,11 @@ import {OptionalSchemas, Store} from '../store';
|
|
|
56
96
|
* @param onIgnoredError An optional handler for the errors that the Persister
|
|
57
97
|
* would otherwise ignore when trying to save or load data. This is suitable for
|
|
58
98
|
* debugging persistence issues in a development environment, since v4.0.4.
|
|
59
|
-
* @returns A reference to the new
|
|
99
|
+
* @returns A reference to the new SqliteWasmPersister object.
|
|
60
100
|
* @example
|
|
61
|
-
* This example creates a
|
|
62
|
-
* SQLite database as a JSON serialization into the `my_tinybase` table.
|
|
63
|
-
* makes a change to the database directly and then reloads it back into the
|
|
101
|
+
* This example creates a SqliteWasmPersister object and persists the Store to a
|
|
102
|
+
* local SQLite database as a JSON serialization into the `my_tinybase` table.
|
|
103
|
+
* It makes a change to the database directly and then reloads it back into the
|
|
64
104
|
* Store.
|
|
65
105
|
*
|
|
66
106
|
* ```js
|
|
@@ -91,8 +131,8 @@ import {OptionalSchemas, Store} from '../store';
|
|
|
91
131
|
* persister.destroy();
|
|
92
132
|
* ```
|
|
93
133
|
* @example
|
|
94
|
-
* This example creates a
|
|
95
|
-
* SQLite database with tabular mapping.
|
|
134
|
+
* This example creates a SqliteWasmPersister object and persists the Store to a
|
|
135
|
+
* local SQLite database with tabular mapping.
|
|
96
136
|
*
|
|
97
137
|
* ```js
|
|
98
138
|
* const sqlite3 = await sqlite3InitModule();
|
|
@@ -124,4 +164,4 @@ export function createSqliteWasmPersister<Schemas extends OptionalSchemas>(
|
|
|
124
164
|
configOrStoreTableName?: DatabasePersisterConfig<Schemas> | string,
|
|
125
165
|
onSqlCommand?: (sql: string, args?: any[]) => void,
|
|
126
166
|
onIgnoredError?: (error: any) => void,
|
|
127
|
-
):
|
|
167
|
+
): SqliteWasmPersister<Schemas>;
|
|
@@ -12,6 +12,40 @@ import {DatabasePersisterConfig, Persister} from '../persisters';
|
|
|
12
12
|
import {OptionalSchemas, Store} from '../store';
|
|
13
13
|
import {Database} from 'sqlite3';
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* The Sqlite3Persister interface is a minor extension to the Persister
|
|
17
|
+
* interface.
|
|
18
|
+
*
|
|
19
|
+
* It simply provides an extra getDb method for accessing a reference to the
|
|
20
|
+
* database instance the Store is being persisted to.
|
|
21
|
+
* @since v4.3.14
|
|
22
|
+
*/
|
|
23
|
+
export interface Sqlite3Persister<Schemas extends OptionalSchemas>
|
|
24
|
+
extends Persister<Schemas> {
|
|
25
|
+
/**
|
|
26
|
+
* The getDb method returns a reference to the database instance the Store is
|
|
27
|
+
* being persisted to.
|
|
28
|
+
* @returns A reference to the database instance.
|
|
29
|
+
* @example
|
|
30
|
+
* This example creates a Persister object against a newly-created Store and
|
|
31
|
+
* then gets the database instance back out again.
|
|
32
|
+
*
|
|
33
|
+
* ```js
|
|
34
|
+
* const db = new sqlite3.Database(':memory:');
|
|
35
|
+
* const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
|
|
36
|
+
* const persister = createSqlite3Persister(store, db, 'my_tinybase');
|
|
37
|
+
*
|
|
38
|
+
* console.log(persister.getDb() == db);
|
|
39
|
+
* // -> true
|
|
40
|
+
*
|
|
41
|
+
* persister.destroy();
|
|
42
|
+
* ```
|
|
43
|
+
* @category Getter
|
|
44
|
+
* @since v4.3.14
|
|
45
|
+
*/
|
|
46
|
+
getDb: () => Database;
|
|
47
|
+
}
|
|
48
|
+
|
|
15
49
|
/**
|
|
16
50
|
* The createSqlite3Persister function creates a Persister object that can
|
|
17
51
|
* persist the Store to a local SQLite database (in an appropriate environment).
|
|
@@ -25,7 +59,7 @@ import {Database} from 'sqlite3';
|
|
|
25
59
|
* configOrStoreTableName?: DatabasePersisterConfig | string,
|
|
26
60
|
* onSqlCommand?: (sql: string, args?: any[]) => void,
|
|
27
61
|
* onIgnoredError?: (error: any) => void,
|
|
28
|
-
* ):
|
|
62
|
+
* ): Sqlite3Persister;
|
|
29
63
|
* ```
|
|
30
64
|
*
|
|
31
65
|
* As well as providing a reference to the Store to persist, you must provide a
|
|
@@ -54,11 +88,11 @@ import {Database} from 'sqlite3';
|
|
|
54
88
|
* @param onIgnoredError An optional handler for the errors that the Persister
|
|
55
89
|
* would otherwise ignore when trying to save or load data. This is suitable for
|
|
56
90
|
* debugging persistence issues in a development environment, since v4.0.4.
|
|
57
|
-
* @returns A reference to the new
|
|
91
|
+
* @returns A reference to the new Sqlite3Persister object.
|
|
58
92
|
* @example
|
|
59
|
-
* This example creates a
|
|
60
|
-
* SQLite database as a JSON serialization into the `my_tinybase` table.
|
|
61
|
-
* makes a change to the database directly and then reloads it back into the
|
|
93
|
+
* This example creates a Sqlite3Persister 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
|
|
62
96
|
* Store.
|
|
63
97
|
*
|
|
64
98
|
* ```js
|
|
@@ -90,8 +124,8 @@ import {Database} from 'sqlite3';
|
|
|
90
124
|
* persister.destroy();
|
|
91
125
|
* ```
|
|
92
126
|
* @example
|
|
93
|
-
* This example creates a
|
|
94
|
-
* SQLite database with tabular mapping.
|
|
127
|
+
* This example creates a Sqlite3Persister object and persists the Store to a
|
|
128
|
+
* local SQLite database with tabular mapping.
|
|
95
129
|
*
|
|
96
130
|
* ```js
|
|
97
131
|
* const db = new sqlite3.Database(':memory:');
|