tinybase 5.0.0-beta.22 → 5.0.0-beta.24
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/mergeable-store/index.d.cts +77 -11
- package/@types/mergeable-store/index.d.ts +77 -11
- package/@types/mergeable-store/with-schemas/index.d.cts +96 -11
- package/@types/mergeable-store/with-schemas/index.d.ts +96 -11
- package/@types/persisters/index.d.cts +0 -1
- package/@types/persisters/index.d.ts +0 -1
- package/@types/persisters/persister-expo-sqlite/index.d.cts +36 -40
- package/@types/persisters/persister-expo-sqlite/index.d.ts +36 -40
- package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.cts +36 -40
- package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +36 -40
- package/@types/persisters/with-schemas/index.d.cts +0 -1
- package/@types/persisters/with-schemas/index.d.ts +0 -1
- package/cjs/es6/index.cjs +3 -3
- package/cjs/es6/mergeable-store/index.cjs +2 -2
- package/cjs/es6/mergeable-store/with-schemas/index.cjs +2 -2
- package/cjs/es6/min/index.cjs +1 -1
- package/cjs/es6/min/index.cjs.gz +0 -0
- package/cjs/es6/min/mergeable-store/index.cjs +1 -1
- package/cjs/es6/min/mergeable-store/index.cjs.gz +0 -0
- package/cjs/es6/min/mergeable-store/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/synchronizers/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/synchronizers/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/min/with-schemas/index.cjs +1 -1
- package/cjs/es6/min/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/persisters/persister-expo-sqlite/index.cjs +7 -2
- package/cjs/es6/persisters/persister-expo-sqlite/with-schemas/index.cjs +7 -2
- package/cjs/es6/synchronizers/index.cjs +1 -1
- package/cjs/es6/synchronizers/synchronizer-local/index.cjs +1 -1
- package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
- package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +1 -1
- package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
- package/cjs/es6/synchronizers/with-schemas/index.cjs +1 -1
- package/cjs/es6/with-schemas/index.cjs +3 -3
- package/cjs/index.cjs +3 -3
- package/cjs/mergeable-store/index.cjs +2 -2
- package/cjs/mergeable-store/with-schemas/index.cjs +2 -2
- package/cjs/min/index.cjs +1 -1
- package/cjs/min/index.cjs.gz +0 -0
- package/cjs/min/mergeable-store/index.cjs +1 -1
- package/cjs/min/mergeable-store/index.cjs.gz +0 -0
- package/cjs/min/mergeable-store/with-schemas/index.cjs +1 -1
- package/cjs/min/mergeable-store/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-expo-sqlite/index.cjs +1 -1
- package/cjs/min/persisters/persister-expo-sqlite/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs +1 -1
- package/cjs/min/persisters/persister-expo-sqlite/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/index.cjs +1 -1
- package/cjs/min/synchronizers/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-local/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-local/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-local/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
- package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/synchronizers/with-schemas/index.cjs +1 -1
- package/cjs/min/synchronizers/with-schemas/index.cjs.gz +0 -0
- package/cjs/min/with-schemas/index.cjs +1 -1
- package/cjs/min/with-schemas/index.cjs.gz +0 -0
- package/cjs/persisters/persister-expo-sqlite/index.cjs +7 -3
- package/cjs/persisters/persister-expo-sqlite/with-schemas/index.cjs +7 -3
- package/cjs/synchronizers/index.cjs +1 -1
- package/cjs/synchronizers/synchronizer-local/index.cjs +1 -1
- package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +1 -1
- package/cjs/synchronizers/synchronizer-ws-client/index.cjs +1 -1
- package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
- package/cjs/synchronizers/with-schemas/index.cjs +1 -1
- package/cjs/with-schemas/index.cjs +3 -3
- package/es6/index.js +3 -3
- package/es6/mergeable-store/index.js +2 -2
- package/es6/mergeable-store/with-schemas/index.js +2 -2
- package/es6/min/index.js +1 -1
- package/es6/min/index.js.gz +0 -0
- package/es6/min/mergeable-store/index.js +1 -1
- package/es6/min/mergeable-store/index.js.gz +0 -0
- package/es6/min/mergeable-store/with-schemas/index.js +1 -1
- package/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/es6/min/synchronizers/index.js +1 -1
- package/es6/min/synchronizers/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-local/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/es6/min/synchronizers/with-schemas/index.js +1 -1
- package/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/es6/min/with-schemas/index.js +1 -1
- package/es6/min/with-schemas/index.js.gz +0 -0
- package/es6/persisters/persister-expo-sqlite/index.js +5 -2
- package/es6/persisters/persister-expo-sqlite/with-schemas/index.js +5 -2
- package/es6/synchronizers/index.js +1 -1
- package/es6/synchronizers/synchronizer-local/index.js +1 -1
- package/es6/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/es6/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/es6/synchronizers/with-schemas/index.js +1 -1
- package/es6/with-schemas/index.js +3 -3
- package/index.js +3 -3
- package/mergeable-store/index.js +2 -2
- package/mergeable-store/with-schemas/index.js +2 -2
- 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/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/synchronizers/index.js +1 -1
- package/min/synchronizers/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/with-schemas/index.js +1 -1
- package/min/synchronizers/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 +9 -112
- package/persisters/persister-expo-sqlite/index.js +5 -3
- package/persisters/persister-expo-sqlite/with-schemas/index.js +5 -3
- package/readme.md +2 -2
- package/releases.md +2 -2
- package/synchronizers/index.js +1 -1
- package/synchronizers/synchronizer-local/index.js +1 -1
- package/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/synchronizers/with-schemas/index.js +1 -1
- package/umd/es6/index.js +3 -3
- package/umd/es6/mergeable-store/index.js +2 -2
- package/umd/es6/mergeable-store/with-schemas/index.js +2 -2
- package/umd/es6/min/index.js +1 -1
- package/umd/es6/min/index.js.gz +0 -0
- package/umd/es6/min/mergeable-store/index.js +1 -1
- package/umd/es6/min/mergeable-store/index.js.gz +0 -0
- package/umd/es6/min/mergeable-store/with-schemas/index.js +1 -1
- package/umd/es6/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/umd/es6/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/umd/es6/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/index.js +1 -1
- package/umd/es6/min/synchronizers/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-local/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/synchronizers/with-schemas/index.js +1 -1
- package/umd/es6/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/umd/es6/min/with-schemas/index.js +1 -1
- package/umd/es6/min/with-schemas/index.js.gz +0 -0
- package/umd/es6/persisters/persister-expo-sqlite/index.js +12 -6
- package/umd/es6/persisters/persister-expo-sqlite/with-schemas/index.js +12 -6
- package/umd/es6/synchronizers/index.js +1 -1
- package/umd/es6/synchronizers/synchronizer-local/index.js +1 -1
- package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/umd/es6/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/umd/es6/synchronizers/with-schemas/index.js +1 -1
- package/umd/es6/with-schemas/index.js +3 -3
- package/umd/index.js +3 -3
- package/umd/mergeable-store/index.js +2 -2
- package/umd/mergeable-store/with-schemas/index.js +2 -2
- package/umd/min/index.js +1 -1
- package/umd/min/index.js.gz +0 -0
- package/umd/min/mergeable-store/index.js +1 -1
- package/umd/min/mergeable-store/index.js.gz +0 -0
- package/umd/min/mergeable-store/with-schemas/index.js +1 -1
- package/umd/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/umd/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/umd/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/umd/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/umd/min/synchronizers/index.js +1 -1
- package/umd/min/synchronizers/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-local/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/umd/min/synchronizers/with-schemas/index.js +1 -1
- package/umd/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/umd/min/with-schemas/index.js +1 -1
- package/umd/min/with-schemas/index.js.gz +0 -0
- package/umd/persisters/persister-expo-sqlite/index.js +12 -7
- package/umd/persisters/persister-expo-sqlite/with-schemas/index.js +12 -7
- package/umd/synchronizers/index.js +1 -1
- package/umd/synchronizers/synchronizer-local/index.js +1 -1
- package/umd/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/umd/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/umd/synchronizers/with-schemas/index.js +1 -1
- package/umd/with-schemas/index.js +3 -3
- package/with-schemas/index.js +3 -3
- package/@types/persisters/persister-expo-sqlite-next/index.d.cts +0 -187
- package/@types/persisters/persister-expo-sqlite-next/index.d.ts +0 -187
- package/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.cts +0 -206
- package/@types/persisters/persister-expo-sqlite-next/with-schemas/index.d.ts +0 -206
- package/cjs/es6/min/persisters/persister-expo-sqlite-next/index.cjs +0 -1
- package/cjs/es6/min/persisters/persister-expo-sqlite-next/index.cjs.gz +0 -0
- package/cjs/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +0 -1
- package/cjs/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.cjs.gz +0 -0
- package/cjs/es6/persisters/persister-expo-sqlite-next/index.cjs +0 -1253
- package/cjs/es6/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +0 -1253
- package/cjs/min/persisters/persister-expo-sqlite-next/index.cjs +0 -1
- package/cjs/min/persisters/persister-expo-sqlite-next/index.cjs.gz +0 -0
- package/cjs/min/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +0 -1
- package/cjs/min/persisters/persister-expo-sqlite-next/with-schemas/index.cjs.gz +0 -0
- package/cjs/persisters/persister-expo-sqlite-next/index.cjs +0 -926
- package/cjs/persisters/persister-expo-sqlite-next/with-schemas/index.cjs +0 -926
- package/es6/min/persisters/persister-expo-sqlite-next/index.js +0 -1
- package/es6/min/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
- package/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1
- package/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.js.gz +0 -0
- package/es6/persisters/persister-expo-sqlite-next/index.js +0 -1251
- package/es6/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1251
- package/min/persisters/persister-expo-sqlite-next/index.js +0 -1
- package/min/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1
- package/min/persisters/persister-expo-sqlite-next/with-schemas/index.js.gz +0 -0
- package/persisters/persister-expo-sqlite-next/index.js +0 -924
- package/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -924
- package/umd/es6/min/persisters/persister-expo-sqlite-next/index.js +0 -1
- package/umd/es6/min/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
- package/umd/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1
- package/umd/es6/min/persisters/persister-expo-sqlite-next/with-schemas/index.js.gz +0 -0
- package/umd/es6/persisters/persister-expo-sqlite-next/index.js +0 -1293
- package/umd/es6/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1293
- package/umd/min/persisters/persister-expo-sqlite-next/index.js +0 -1
- package/umd/min/persisters/persister-expo-sqlite-next/index.js.gz +0 -0
- package/umd/min/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -1
- package/umd/min/persisters/persister-expo-sqlite-next/with-schemas/index.js.gz +0 -0
- package/umd/persisters/persister-expo-sqlite-next/index.js +0 -957
- package/umd/persisters/persister-expo-sqlite-next/with-schemas/index.js +0 -957
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The mergeable-store module
|
|
2
|
+
* The mergeable-store module contains the types, interfaces, and functions to
|
|
3
|
+
* work with MergeableStore objects, which provide merge and synchronization
|
|
4
|
+
* functionality.
|
|
5
|
+
*
|
|
6
|
+
* The main entry point to this module is the createMergeableStore function,
|
|
7
|
+
* which returns a new MergeableStore, a subtype of Store that can be merged
|
|
8
|
+
* with another with deterministic results.
|
|
3
9
|
* @packageDocumentation
|
|
4
10
|
* @module mergeable-store
|
|
5
11
|
* @since v5.0.0
|
|
@@ -14,20 +20,45 @@ import type {
|
|
|
14
20
|
import type {Id} from '../common/index.d.cts';
|
|
15
21
|
|
|
16
22
|
/**
|
|
17
|
-
* The Hash type
|
|
23
|
+
* The Hash type is used within the mergeable-store module to quickly compare
|
|
24
|
+
* the content of two objects.
|
|
25
|
+
*
|
|
26
|
+
* This is simply an alias for a JavaScript `number`.
|
|
27
|
+
*
|
|
28
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
29
|
+
* generally assumed to be opaque to applications that use it.
|
|
18
30
|
* @category Stamps
|
|
31
|
+
* @since v5.0.0
|
|
19
32
|
*/
|
|
20
33
|
export type Hash = number;
|
|
21
34
|
|
|
22
35
|
/**
|
|
23
|
-
* The Time type
|
|
36
|
+
* The Time type is used within the mergeable-store module to store the value of
|
|
37
|
+
* a hybrid logical clock (HLC).
|
|
38
|
+
*
|
|
39
|
+
* It is simply an alias for a JavaScript `string`, but it comprises three HLC
|
|
40
|
+
* parts: a logical timestamp, a sequence counter, and a client Id. It is
|
|
41
|
+
* designed to be string-sortable and unique across all of the systems involved
|
|
42
|
+
* in synchronizing a MergeableStore.
|
|
43
|
+
*
|
|
44
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
45
|
+
* generally assumed to be opaque to applications that use it.
|
|
24
46
|
* @category Stamps
|
|
47
|
+
* @since v5.0.0
|
|
25
48
|
*/
|
|
26
49
|
export type Time = string;
|
|
27
50
|
|
|
28
51
|
/**
|
|
29
|
-
* The Stamp type
|
|
52
|
+
* The Stamp type is used as metadata to decide how to merge two different
|
|
53
|
+
* MergeableStore objects together.
|
|
54
|
+
*
|
|
55
|
+
* It describes a combination of a value (or object), a Time, and optionally a
|
|
56
|
+
* Hash, all in an array.
|
|
57
|
+
*
|
|
58
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
59
|
+
* generally assumed to be opaque to applications that use it.
|
|
30
60
|
* @category Stamps
|
|
61
|
+
* @since v5.0.0
|
|
31
62
|
*/
|
|
32
63
|
export type Stamp<Thing, Hashed extends boolean = false> = Hashed extends true
|
|
33
64
|
? [thing: Thing, time: Time, hash: Hash]
|
|
@@ -75,8 +106,8 @@ export type ValuesStamp<Hashed extends boolean = false> = Stamp<
|
|
|
75
106
|
Hashed
|
|
76
107
|
>;
|
|
77
108
|
|
|
78
|
-
//
|
|
79
|
-
export type
|
|
109
|
+
// ValueHashes
|
|
110
|
+
export type ValueHashes = {[valueId: Id]: Hash};
|
|
80
111
|
|
|
81
112
|
// ValueStamp
|
|
82
113
|
export type ValueStamp<Hashed extends boolean = false> = Stamp<
|
|
@@ -85,8 +116,16 @@ export type ValueStamp<Hashed extends boolean = false> = Stamp<
|
|
|
85
116
|
>;
|
|
86
117
|
|
|
87
118
|
/**
|
|
88
|
-
* The MergeableContent type
|
|
119
|
+
* The MergeableContent type represents the content of a MergeableStore and the
|
|
120
|
+
* metadata about that content) required to merge it with another.
|
|
121
|
+
*
|
|
122
|
+
* It is simply an array of two Stamp types, one for the MergeableStore's Tables
|
|
123
|
+
* and one for its Values.
|
|
124
|
+
*
|
|
125
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
126
|
+
* generally assumed to be opaque to applications that use it.
|
|
89
127
|
* @category Mergeable
|
|
128
|
+
* @since v5.0.0
|
|
90
129
|
*/
|
|
91
130
|
export type MergeableContent = [
|
|
92
131
|
mergeableTables: TablesStamp<true>,
|
|
@@ -94,8 +133,18 @@ export type MergeableContent = [
|
|
|
94
133
|
];
|
|
95
134
|
|
|
96
135
|
/**
|
|
97
|
-
* The MergeableChanges type
|
|
136
|
+
* The MergeableChanges type represents changes to the content of a
|
|
137
|
+
* MergeableStore and the metadata about that content) required to merge it with
|
|
138
|
+
* another.
|
|
139
|
+
*
|
|
140
|
+
* It is simply an array of two Stamp types, one for changes to the
|
|
141
|
+
* MergeableStore's Tables and one for changes to its Values. A final `1` is
|
|
142
|
+
* used to distinguish it from a full MergeableContent object.
|
|
143
|
+
*
|
|
144
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
145
|
+
* generally assumed to be opaque to applications that use it.
|
|
98
146
|
* @category Mergeable
|
|
147
|
+
* @since v5.0.0
|
|
99
148
|
*/
|
|
100
149
|
export type MergeableChanges = [
|
|
101
150
|
mergeableTables: TablesStamp,
|
|
@@ -106,30 +155,35 @@ export type MergeableChanges = [
|
|
|
106
155
|
/**
|
|
107
156
|
* The MergeableStore type
|
|
108
157
|
* @category Mergeable
|
|
158
|
+
* @since v5.0.0
|
|
109
159
|
*/
|
|
110
160
|
export interface MergeableStore extends Store {
|
|
111
161
|
//
|
|
112
162
|
/**
|
|
113
163
|
* The getMergeableContent method
|
|
114
164
|
* @category Getter
|
|
165
|
+
* @since v5.0.0
|
|
115
166
|
*/
|
|
116
167
|
getMergeableContent(): MergeableContent;
|
|
117
168
|
|
|
118
169
|
/**
|
|
119
170
|
* The getMergeableContentHashes method
|
|
120
171
|
* @category Syncing
|
|
172
|
+
* @since v5.0.0
|
|
121
173
|
*/
|
|
122
174
|
getMergeableContentHashes(): ContentHashes;
|
|
123
175
|
|
|
124
176
|
/**
|
|
125
177
|
* The getMergeableTableHashes method
|
|
126
178
|
* @category Syncing
|
|
179
|
+
* @since v5.0.0
|
|
127
180
|
*/
|
|
128
181
|
getMergeableTableHashes(): TableHashes;
|
|
129
182
|
|
|
130
183
|
/**
|
|
131
184
|
* The getMergeableTableDiff method
|
|
132
185
|
* @category Syncing
|
|
186
|
+
* @since v5.0.0
|
|
133
187
|
*/
|
|
134
188
|
getMergeableTableDiff(
|
|
135
189
|
relativeTo: TableHashes,
|
|
@@ -138,12 +192,14 @@ export interface MergeableStore extends Store {
|
|
|
138
192
|
/**
|
|
139
193
|
* The getMergeableRowHashes method
|
|
140
194
|
* @category Syncing
|
|
195
|
+
* @since v5.0.0
|
|
141
196
|
*/
|
|
142
197
|
getMergeableRowHashes(otherTableHashes: TableHashes): RowHashes;
|
|
143
198
|
|
|
144
199
|
/**
|
|
145
200
|
* The getMergeableRowDiff method
|
|
146
201
|
* @category Syncing
|
|
202
|
+
* @since v5.0.0
|
|
147
203
|
*/
|
|
148
204
|
getMergeableRowDiff(
|
|
149
205
|
otherTableRowHashes: RowHashes,
|
|
@@ -152,48 +208,56 @@ export interface MergeableStore extends Store {
|
|
|
152
208
|
/**
|
|
153
209
|
* The getMergeableCellHashes method
|
|
154
210
|
* @category Syncing
|
|
211
|
+
* @since v5.0.0
|
|
155
212
|
*/
|
|
156
213
|
getMergeableCellHashes(otherTableRowHashes: RowHashes): CellHashes;
|
|
157
214
|
|
|
158
215
|
/**
|
|
159
216
|
* The getMergeableCellDiff method
|
|
160
217
|
* @category Syncing
|
|
218
|
+
* @since v5.0.0
|
|
161
219
|
*/
|
|
162
220
|
getMergeableCellDiff(otherTableRowCellHashes: CellHashes): TablesStamp;
|
|
163
221
|
|
|
164
222
|
/**
|
|
165
|
-
* The
|
|
223
|
+
* The getMergeableValueHashes method
|
|
166
224
|
* @category Syncing
|
|
225
|
+
* @since v5.0.0
|
|
167
226
|
*/
|
|
168
|
-
|
|
227
|
+
getMergeableValueHashes(): ValueHashes;
|
|
169
228
|
|
|
170
229
|
/**
|
|
171
230
|
* The getMergeableValueDiff method
|
|
172
231
|
* @category Syncing
|
|
232
|
+
* @since v5.0.0
|
|
173
233
|
*/
|
|
174
|
-
getMergeableValueDiff(relativeTo:
|
|
234
|
+
getMergeableValueDiff(relativeTo: ValueHashes): ValuesStamp;
|
|
175
235
|
|
|
176
236
|
/**
|
|
177
237
|
* The setMergeableContent method
|
|
178
238
|
* @category Setter
|
|
239
|
+
* @since v5.0.0
|
|
179
240
|
*/
|
|
180
241
|
setMergeableContent(mergeableContent: MergeableContent): MergeableStore;
|
|
181
242
|
|
|
182
243
|
/**
|
|
183
244
|
* The setDefaultContent method
|
|
184
245
|
* @category Setter
|
|
246
|
+
* @since v5.0.0
|
|
185
247
|
*/
|
|
186
248
|
setDefaultContent(content: Content): MergeableStore;
|
|
187
249
|
|
|
188
250
|
/**
|
|
189
251
|
* The getTransactionMergeableChanges method
|
|
190
252
|
* @category Getter
|
|
253
|
+
* @since v5.0.0
|
|
191
254
|
*/
|
|
192
255
|
getTransactionMergeableChanges(): MergeableChanges;
|
|
193
256
|
|
|
194
257
|
/**
|
|
195
258
|
* The applyMergeableChanges method
|
|
196
259
|
* @category Setter
|
|
260
|
+
* @since v5.0.0
|
|
197
261
|
*/
|
|
198
262
|
applyMergeableChanges(
|
|
199
263
|
mergeableChanges: MergeableChanges | MergeableContent,
|
|
@@ -202,6 +266,7 @@ export interface MergeableStore extends Store {
|
|
|
202
266
|
/**
|
|
203
267
|
* The merge method
|
|
204
268
|
* @category Setter
|
|
269
|
+
* @since v5.0.0
|
|
205
270
|
*/
|
|
206
271
|
merge(mergeableStore: MergeableStore): MergeableStore;
|
|
207
272
|
|
|
@@ -218,5 +283,6 @@ export interface MergeableStore extends Store {
|
|
|
218
283
|
/**
|
|
219
284
|
* The createMergeableStore function
|
|
220
285
|
* @category Creation
|
|
286
|
+
* @since v5.0.0
|
|
221
287
|
*/
|
|
222
288
|
export function createMergeableStore(uniqueId?: Id): MergeableStore;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The mergeable-store module
|
|
2
|
+
* The mergeable-store module contains the types, interfaces, and functions to
|
|
3
|
+
* work with MergeableStore objects, which provide merge and synchronization
|
|
4
|
+
* functionality.
|
|
5
|
+
*
|
|
6
|
+
* The main entry point to this module is the createMergeableStore function,
|
|
7
|
+
* which returns a new MergeableStore, a subtype of Store that can be merged
|
|
8
|
+
* with another with deterministic results.
|
|
3
9
|
* @packageDocumentation
|
|
4
10
|
* @module mergeable-store
|
|
5
11
|
* @since v5.0.0
|
|
@@ -14,20 +20,45 @@ import type {
|
|
|
14
20
|
import type {Id} from '../common/index.d.ts';
|
|
15
21
|
|
|
16
22
|
/**
|
|
17
|
-
* The Hash type
|
|
23
|
+
* The Hash type is used within the mergeable-store module to quickly compare
|
|
24
|
+
* the content of two objects.
|
|
25
|
+
*
|
|
26
|
+
* This is simply an alias for a JavaScript `number`.
|
|
27
|
+
*
|
|
28
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
29
|
+
* generally assumed to be opaque to applications that use it.
|
|
18
30
|
* @category Stamps
|
|
31
|
+
* @since v5.0.0
|
|
19
32
|
*/
|
|
20
33
|
export type Hash = number;
|
|
21
34
|
|
|
22
35
|
/**
|
|
23
|
-
* The Time type
|
|
36
|
+
* The Time type is used within the mergeable-store module to store the value of
|
|
37
|
+
* a hybrid logical clock (HLC).
|
|
38
|
+
*
|
|
39
|
+
* It is simply an alias for a JavaScript `string`, but it comprises three HLC
|
|
40
|
+
* parts: a logical timestamp, a sequence counter, and a client Id. It is
|
|
41
|
+
* designed to be string-sortable and unique across all of the systems involved
|
|
42
|
+
* in synchronizing a MergeableStore.
|
|
43
|
+
*
|
|
44
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
45
|
+
* generally assumed to be opaque to applications that use it.
|
|
24
46
|
* @category Stamps
|
|
47
|
+
* @since v5.0.0
|
|
25
48
|
*/
|
|
26
49
|
export type Time = string;
|
|
27
50
|
|
|
28
51
|
/**
|
|
29
|
-
* The Stamp type
|
|
52
|
+
* The Stamp type is used as metadata to decide how to merge two different
|
|
53
|
+
* MergeableStore objects together.
|
|
54
|
+
*
|
|
55
|
+
* It describes a combination of a value (or object), a Time, and optionally a
|
|
56
|
+
* Hash, all in an array.
|
|
57
|
+
*
|
|
58
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
59
|
+
* generally assumed to be opaque to applications that use it.
|
|
30
60
|
* @category Stamps
|
|
61
|
+
* @since v5.0.0
|
|
31
62
|
*/
|
|
32
63
|
export type Stamp<Thing, Hashed extends boolean = false> = Hashed extends true
|
|
33
64
|
? [thing: Thing, time: Time, hash: Hash]
|
|
@@ -75,8 +106,8 @@ export type ValuesStamp<Hashed extends boolean = false> = Stamp<
|
|
|
75
106
|
Hashed
|
|
76
107
|
>;
|
|
77
108
|
|
|
78
|
-
//
|
|
79
|
-
export type
|
|
109
|
+
// ValueHashes
|
|
110
|
+
export type ValueHashes = {[valueId: Id]: Hash};
|
|
80
111
|
|
|
81
112
|
// ValueStamp
|
|
82
113
|
export type ValueStamp<Hashed extends boolean = false> = Stamp<
|
|
@@ -85,8 +116,16 @@ export type ValueStamp<Hashed extends boolean = false> = Stamp<
|
|
|
85
116
|
>;
|
|
86
117
|
|
|
87
118
|
/**
|
|
88
|
-
* The MergeableContent type
|
|
119
|
+
* The MergeableContent type represents the content of a MergeableStore and the
|
|
120
|
+
* metadata about that content) required to merge it with another.
|
|
121
|
+
*
|
|
122
|
+
* It is simply an array of two Stamp types, one for the MergeableStore's Tables
|
|
123
|
+
* and one for its Values.
|
|
124
|
+
*
|
|
125
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
126
|
+
* generally assumed to be opaque to applications that use it.
|
|
89
127
|
* @category Mergeable
|
|
128
|
+
* @since v5.0.0
|
|
90
129
|
*/
|
|
91
130
|
export type MergeableContent = [
|
|
92
131
|
mergeableTables: TablesStamp<true>,
|
|
@@ -94,8 +133,18 @@ export type MergeableContent = [
|
|
|
94
133
|
];
|
|
95
134
|
|
|
96
135
|
/**
|
|
97
|
-
* The MergeableChanges type
|
|
136
|
+
* The MergeableChanges type represents changes to the content of a
|
|
137
|
+
* MergeableStore and the metadata about that content) required to merge it with
|
|
138
|
+
* another.
|
|
139
|
+
*
|
|
140
|
+
* It is simply an array of two Stamp types, one for changes to the
|
|
141
|
+
* MergeableStore's Tables and one for changes to its Values. A final `1` is
|
|
142
|
+
* used to distinguish it from a full MergeableContent object.
|
|
143
|
+
*
|
|
144
|
+
* This type is mostly utilized internally within TinyBase itself and is
|
|
145
|
+
* generally assumed to be opaque to applications that use it.
|
|
98
146
|
* @category Mergeable
|
|
147
|
+
* @since v5.0.0
|
|
99
148
|
*/
|
|
100
149
|
export type MergeableChanges = [
|
|
101
150
|
mergeableTables: TablesStamp,
|
|
@@ -106,30 +155,35 @@ export type MergeableChanges = [
|
|
|
106
155
|
/**
|
|
107
156
|
* The MergeableStore type
|
|
108
157
|
* @category Mergeable
|
|
158
|
+
* @since v5.0.0
|
|
109
159
|
*/
|
|
110
160
|
export interface MergeableStore extends Store {
|
|
111
161
|
//
|
|
112
162
|
/**
|
|
113
163
|
* The getMergeableContent method
|
|
114
164
|
* @category Getter
|
|
165
|
+
* @since v5.0.0
|
|
115
166
|
*/
|
|
116
167
|
getMergeableContent(): MergeableContent;
|
|
117
168
|
|
|
118
169
|
/**
|
|
119
170
|
* The getMergeableContentHashes method
|
|
120
171
|
* @category Syncing
|
|
172
|
+
* @since v5.0.0
|
|
121
173
|
*/
|
|
122
174
|
getMergeableContentHashes(): ContentHashes;
|
|
123
175
|
|
|
124
176
|
/**
|
|
125
177
|
* The getMergeableTableHashes method
|
|
126
178
|
* @category Syncing
|
|
179
|
+
* @since v5.0.0
|
|
127
180
|
*/
|
|
128
181
|
getMergeableTableHashes(): TableHashes;
|
|
129
182
|
|
|
130
183
|
/**
|
|
131
184
|
* The getMergeableTableDiff method
|
|
132
185
|
* @category Syncing
|
|
186
|
+
* @since v5.0.0
|
|
133
187
|
*/
|
|
134
188
|
getMergeableTableDiff(
|
|
135
189
|
relativeTo: TableHashes,
|
|
@@ -138,12 +192,14 @@ export interface MergeableStore extends Store {
|
|
|
138
192
|
/**
|
|
139
193
|
* The getMergeableRowHashes method
|
|
140
194
|
* @category Syncing
|
|
195
|
+
* @since v5.0.0
|
|
141
196
|
*/
|
|
142
197
|
getMergeableRowHashes(otherTableHashes: TableHashes): RowHashes;
|
|
143
198
|
|
|
144
199
|
/**
|
|
145
200
|
* The getMergeableRowDiff method
|
|
146
201
|
* @category Syncing
|
|
202
|
+
* @since v5.0.0
|
|
147
203
|
*/
|
|
148
204
|
getMergeableRowDiff(
|
|
149
205
|
otherTableRowHashes: RowHashes,
|
|
@@ -152,48 +208,56 @@ export interface MergeableStore extends Store {
|
|
|
152
208
|
/**
|
|
153
209
|
* The getMergeableCellHashes method
|
|
154
210
|
* @category Syncing
|
|
211
|
+
* @since v5.0.0
|
|
155
212
|
*/
|
|
156
213
|
getMergeableCellHashes(otherTableRowHashes: RowHashes): CellHashes;
|
|
157
214
|
|
|
158
215
|
/**
|
|
159
216
|
* The getMergeableCellDiff method
|
|
160
217
|
* @category Syncing
|
|
218
|
+
* @since v5.0.0
|
|
161
219
|
*/
|
|
162
220
|
getMergeableCellDiff(otherTableRowCellHashes: CellHashes): TablesStamp;
|
|
163
221
|
|
|
164
222
|
/**
|
|
165
|
-
* The
|
|
223
|
+
* The getMergeableValueHashes method
|
|
166
224
|
* @category Syncing
|
|
225
|
+
* @since v5.0.0
|
|
167
226
|
*/
|
|
168
|
-
|
|
227
|
+
getMergeableValueHashes(): ValueHashes;
|
|
169
228
|
|
|
170
229
|
/**
|
|
171
230
|
* The getMergeableValueDiff method
|
|
172
231
|
* @category Syncing
|
|
232
|
+
* @since v5.0.0
|
|
173
233
|
*/
|
|
174
|
-
getMergeableValueDiff(relativeTo:
|
|
234
|
+
getMergeableValueDiff(relativeTo: ValueHashes): ValuesStamp;
|
|
175
235
|
|
|
176
236
|
/**
|
|
177
237
|
* The setMergeableContent method
|
|
178
238
|
* @category Setter
|
|
239
|
+
* @since v5.0.0
|
|
179
240
|
*/
|
|
180
241
|
setMergeableContent(mergeableContent: MergeableContent): MergeableStore;
|
|
181
242
|
|
|
182
243
|
/**
|
|
183
244
|
* The setDefaultContent method
|
|
184
245
|
* @category Setter
|
|
246
|
+
* @since v5.0.0
|
|
185
247
|
*/
|
|
186
248
|
setDefaultContent(content: Content): MergeableStore;
|
|
187
249
|
|
|
188
250
|
/**
|
|
189
251
|
* The getTransactionMergeableChanges method
|
|
190
252
|
* @category Getter
|
|
253
|
+
* @since v5.0.0
|
|
191
254
|
*/
|
|
192
255
|
getTransactionMergeableChanges(): MergeableChanges;
|
|
193
256
|
|
|
194
257
|
/**
|
|
195
258
|
* The applyMergeableChanges method
|
|
196
259
|
* @category Setter
|
|
260
|
+
* @since v5.0.0
|
|
197
261
|
*/
|
|
198
262
|
applyMergeableChanges(
|
|
199
263
|
mergeableChanges: MergeableChanges | MergeableContent,
|
|
@@ -202,6 +266,7 @@ export interface MergeableStore extends Store {
|
|
|
202
266
|
/**
|
|
203
267
|
* The merge method
|
|
204
268
|
* @category Setter
|
|
269
|
+
* @since v5.0.0
|
|
205
270
|
*/
|
|
206
271
|
merge(mergeableStore: MergeableStore): MergeableStore;
|
|
207
272
|
|
|
@@ -218,5 +283,6 @@ export interface MergeableStore extends Store {
|
|
|
218
283
|
/**
|
|
219
284
|
* The createMergeableStore function
|
|
220
285
|
* @category Creation
|
|
286
|
+
* @since v5.0.0
|
|
221
287
|
*/
|
|
222
288
|
export function createMergeableStore(uniqueId?: Id): MergeableStore;
|