@evolu/common 5.4.8 → 6.0.0
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/README.md +30 -34
- package/dist/src/Array.d.ts +17 -0
- package/dist/src/Array.d.ts.map +1 -0
- package/dist/src/Array.js +12 -0
- package/dist/src/Assert.d.ts +68 -0
- package/dist/src/Assert.d.ts.map +1 -0
- package/dist/src/Assert.js +77 -0
- package/dist/src/BigInt.d.ts +20 -0
- package/dist/src/BigInt.d.ts.map +1 -0
- package/dist/src/BigInt.js +18 -0
- package/dist/src/Buffer.d.ts +92 -0
- package/dist/src/Buffer.d.ts.map +1 -0
- package/dist/src/Buffer.js +62 -0
- package/dist/src/Callbacks.d.ts +20 -0
- package/dist/src/Callbacks.d.ts.map +1 -0
- package/dist/src/Callbacks.js +18 -0
- package/dist/src/Console.d.ts +78 -0
- package/dist/src/Console.d.ts.map +1 -0
- package/dist/src/Console.js +103 -0
- package/dist/src/Crypto.d.ts +72 -39
- package/dist/src/Crypto.d.ts.map +1 -1
- package/dist/src/Crypto.js +89 -54
- package/dist/src/Eq.d.ts +97 -0
- package/dist/src/Eq.d.ts.map +1 -0
- package/dist/src/Eq.js +167 -0
- package/dist/src/Error.d.ts +14 -10
- package/dist/src/Error.d.ts.map +1 -1
- package/dist/src/Error.js +43 -11
- package/dist/src/Evolu/Config.d.ts +69 -0
- package/dist/src/Evolu/Config.d.ts.map +1 -0
- package/dist/src/Evolu/Config.js +9 -0
- package/dist/src/Evolu/Db.d.ts +126 -0
- package/dist/src/Evolu/Db.d.ts.map +1 -0
- package/dist/src/Evolu/Db.js +774 -0
- package/dist/src/Evolu/Diff.d.ts +43 -0
- package/dist/src/Evolu/Diff.d.ts.map +1 -0
- package/dist/src/Evolu/Diff.js +95 -0
- package/dist/src/Evolu/Evolu.d.ts +334 -0
- package/dist/src/Evolu/Evolu.d.ts.map +1 -0
- package/dist/src/Evolu/Evolu.js +434 -0
- package/dist/src/Evolu/Internal.d.ts +26 -0
- package/dist/src/Evolu/Internal.d.ts.map +1 -0
- package/dist/src/Evolu/Internal.js +25 -0
- package/dist/src/Evolu/Kysely.d.ts +6 -0
- package/dist/src/Evolu/Kysely.d.ts.map +1 -0
- package/dist/src/Evolu/Kysely.js +21 -0
- package/dist/src/Evolu/Owner.d.ts +155 -0
- package/dist/src/Evolu/Owner.d.ts.map +1 -0
- package/dist/src/Evolu/Owner.js +126 -0
- package/dist/src/Evolu/Platform.d.ts +23 -0
- package/dist/src/Evolu/Platform.d.ts.map +1 -0
- package/dist/src/Evolu/Platform.js +1 -0
- package/dist/src/Evolu/Protocol.d.ts +401 -0
- package/dist/src/Evolu/Protocol.d.ts.map +1 -0
- package/dist/src/Evolu/Protocol.js +1151 -0
- package/dist/src/Evolu/Public.d.ts +18 -0
- package/dist/src/Evolu/Public.d.ts.map +1 -0
- package/dist/src/Evolu/Public.js +11 -0
- package/dist/src/Evolu/PublicKysely.d.ts +148 -0
- package/dist/src/Evolu/PublicKysely.d.ts.map +1 -0
- package/dist/src/Evolu/PublicKysely.js +185 -0
- package/dist/src/Evolu/Query.d.ts +63 -0
- package/dist/src/Evolu/Query.d.ts.map +1 -0
- package/dist/src/Evolu/Query.js +61 -0
- package/dist/src/Evolu/Relay.d.ts +13 -0
- package/dist/src/Evolu/Relay.d.ts.map +1 -0
- package/dist/src/Evolu/Relay.js +109 -0
- package/dist/src/Evolu/Schema.d.ts +201 -0
- package/dist/src/Evolu/Schema.d.ts.map +1 -0
- package/dist/src/Evolu/Schema.js +150 -0
- package/dist/src/Evolu/Storage.d.ts +49 -0
- package/dist/src/Evolu/Storage.d.ts.map +1 -0
- package/dist/src/Evolu/Storage.js +1111 -0
- package/dist/src/Evolu/Sync.d.ts +59 -0
- package/dist/src/Evolu/Sync.d.ts.map +1 -0
- package/dist/src/Evolu/Sync.js +29 -0
- package/dist/src/Evolu/Timestamp.d.ts +106 -0
- package/dist/src/Evolu/Timestamp.d.ts.map +1 -0
- package/dist/src/Evolu/Timestamp.js +179 -0
- package/dist/src/Function.d.ts +54 -0
- package/dist/src/Function.d.ts.map +1 -0
- package/dist/src/Function.js +38 -0
- package/dist/src/ManyToManyMap.d.ts +26 -0
- package/dist/src/ManyToManyMap.d.ts.map +1 -0
- package/dist/src/ManyToManyMap.js +92 -0
- package/dist/src/NanoId.d.ts +27 -0
- package/dist/src/NanoId.d.ts.map +1 -0
- package/dist/src/NanoId.js +6 -0
- package/dist/src/Number.d.ts +42 -0
- package/dist/src/Number.d.ts.map +1 -0
- package/dist/src/Number.js +55 -0
- package/dist/src/Object.d.ts +35 -0
- package/dist/src/Object.d.ts.map +1 -0
- package/dist/src/Object.js +36 -0
- package/dist/src/Order.d.ts +90 -0
- package/dist/src/Order.d.ts.map +1 -0
- package/dist/src/Order.js +85 -0
- package/dist/src/Promise.d.ts +180 -0
- package/dist/src/Promise.d.ts.map +1 -0
- package/dist/src/Promise.js +176 -0
- package/dist/src/Random.d.ts +52 -0
- package/dist/src/Random.d.ts.map +1 -0
- package/dist/src/Random.js +29 -0
- package/dist/src/Ref.d.ts +40 -0
- package/dist/src/Ref.d.ts.map +1 -0
- package/dist/src/Ref.js +13 -0
- package/dist/src/Result.d.ts +421 -0
- package/dist/src/Result.d.ts.map +1 -0
- package/dist/src/Result.js +357 -0
- package/dist/src/Skiplist.d.ts +23 -0
- package/dist/src/Skiplist.d.ts.map +1 -0
- package/dist/src/Skiplist.js +58 -0
- package/dist/src/Sqlite.d.ts +116 -52
- package/dist/src/Sqlite.d.ts.map +1 -1
- package/dist/src/Sqlite.js +183 -67
- package/dist/src/Store.d.ts +45 -8
- package/dist/src/Store.d.ts.map +1 -1
- package/dist/src/Store.js +33 -17
- package/dist/src/String.d.ts +2 -0
- package/dist/src/String.d.ts.map +1 -0
- package/dist/src/String.js +14 -0
- package/dist/src/Time.d.ts +20 -0
- package/dist/src/Time.d.ts.map +1 -0
- package/dist/src/Time.js +25 -0
- package/dist/src/Type.d.ts +1937 -0
- package/dist/src/Type.d.ts.map +1 -0
- package/dist/src/Type.js +2002 -0
- package/dist/src/Types.d.ts +188 -0
- package/dist/src/Types.d.ts.map +1 -0
- package/dist/src/Types.js +6 -0
- package/dist/src/WebSocket.d.ts +112 -0
- package/dist/src/WebSocket.d.ts.map +1 -0
- package/dist/src/WebSocket.js +139 -0
- package/dist/src/Worker.d.ts +44 -0
- package/dist/src/Worker.d.ts.map +1 -0
- package/dist/src/Worker.js +66 -0
- package/dist/src/index.d.ts +24 -11
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +24 -11
- package/package.json +29 -38
- package/src/Array.ts +39 -0
- package/src/Assert.ts +116 -0
- package/src/BigInt.ts +29 -0
- package/src/Buffer.ts +175 -0
- package/src/Callbacks.ts +43 -0
- package/src/Console.ts +159 -0
- package/src/Crypto.ts +169 -115
- package/src/Eq.ts +204 -0
- package/src/Error.ts +57 -20
- package/src/Evolu/Config.ts +83 -0
- package/src/Evolu/Db.ts +1275 -0
- package/src/Evolu/Diff.ts +142 -0
- package/src/Evolu/Evolu.ts +947 -0
- package/src/Evolu/Internal.ts +26 -0
- package/src/Evolu/Kysely.ts +38 -0
- package/src/Evolu/Owner.ts +296 -0
- package/src/Evolu/Platform.ts +27 -0
- package/src/Evolu/Protocol.ts +1857 -0
- package/src/Evolu/Public.ts +43 -0
- package/src/Evolu/PublicKysely.ts +240 -0
- package/src/Evolu/Query.ts +167 -0
- package/src/Evolu/Relay.ts +142 -0
- package/src/Evolu/Schema.ts +417 -0
- package/src/Evolu/Storage.ts +1281 -0
- package/src/Evolu/Sync.ts +105 -0
- package/src/Evolu/Timestamp.ts +311 -0
- package/src/Function.ts +58 -0
- package/src/ManyToManyMap.ts +140 -0
- package/src/NanoId.ts +39 -0
- package/src/Number.ts +90 -0
- package/src/Object.ts +64 -0
- package/src/Order.ts +113 -0
- package/src/Promise.ts +295 -0
- package/src/Random.ts +68 -0
- package/src/Ref.ts +63 -0
- package/src/Result.ts +453 -0
- package/src/Skiplist.ts +102 -0
- package/src/Sqlite.ts +366 -153
- package/src/Store.ts +79 -36
- package/src/String.ts +10 -0
- package/src/Time.ts +36 -0
- package/src/Type.ts +3978 -0
- package/src/Types.ts +209 -0
- package/src/WebSocket.ts +273 -0
- package/src/Worker.ts +129 -0
- package/src/index.ts +24 -11
- package/dist/src/Config.d.ts +0 -56
- package/dist/src/Config.d.ts.map +0 -1
- package/dist/src/Config.js +0 -39
- package/dist/src/Crdt.d.ts +0 -89
- package/dist/src/Crdt.d.ts.map +0 -1
- package/dist/src/Crdt.js +0 -181
- package/dist/src/Db.d.ts +0 -107
- package/dist/src/Db.d.ts.map +0 -1
- package/dist/src/Db.js +0 -443
- package/dist/src/Diff.d.ts +0 -27
- package/dist/src/Diff.d.ts.map +0 -1
- package/dist/src/Diff.js +0 -84
- package/dist/src/Evolu.d.ts +0 -426
- package/dist/src/Evolu.d.ts.map +0 -1
- package/dist/src/Evolu.js +0 -333
- package/dist/src/Model.d.ts +0 -141
- package/dist/src/Model.d.ts.map +0 -1
- package/dist/src/Model.js +0 -125
- package/dist/src/Murmurhash.d.ts +0 -2
- package/dist/src/Murmurhash.d.ts.map +0 -1
- package/dist/src/Murmurhash.js +0 -60
- package/dist/src/Owner.d.ts +0 -33
- package/dist/src/Owner.d.ts.map +0 -1
- package/dist/src/Owner.js +0 -26
- package/dist/src/Platform.d.ts +0 -37
- package/dist/src/Platform.d.ts.map +0 -1
- package/dist/src/Platform.js +0 -11
- package/dist/src/Protobuf.d.ts +0 -81
- package/dist/src/Protobuf.d.ts.map +0 -1
- package/dist/src/Protobuf.js +0 -92
- package/dist/src/Public.d.ts +0 -13
- package/dist/src/Public.d.ts.map +0 -1
- package/dist/src/Public.js +0 -6
- package/dist/src/Socket.d.ts +0 -8
- package/dist/src/Socket.d.ts.map +0 -1
- package/dist/src/Socket.js +0 -51
- package/dist/src/Sql.d.ts +0 -12
- package/dist/src/Sql.d.ts.map +0 -1
- package/dist/src/Sql.js +0 -30
- package/dist/src/Sync.d.ts +0 -70
- package/dist/src/Sync.d.ts.map +0 -1
- package/dist/src/Sync.js +0 -127
- package/src/Config.ts +0 -119
- package/src/Crdt.ts +0 -361
- package/src/Db.ts +0 -955
- package/src/Diff.ts +0 -114
- package/src/Evolu.ts +0 -1016
- package/src/Model.ts +0 -233
- package/src/Murmurhash.ts +0 -70
- package/src/Owner.ts +0 -69
- package/src/Platform.ts +0 -47
- package/src/Protobuf.ts +0 -155
- package/src/Public.ts +0 -12
- package/src/Socket.ts +0 -83
- package/src/Sql.ts +0 -41
- package/src/Sync.ts +0 -315
package/dist/src/Error.d.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import { TimestampError } from "./Crdt.js";
|
|
2
|
-
/** The EvoluError type is used to represent errors that can occur in Evolu. */
|
|
3
|
-
export type EvoluError = TimestampError | UnexpectedError;
|
|
4
1
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* A serializable representation of an error for safe transfer between execution
|
|
3
|
+
* contexts, such as Web Workers and the main thread.
|
|
4
|
+
*
|
|
5
|
+
* Use this type for unknown (unexpected) errors that need to be transferred
|
|
6
|
+
* across boundaries where native Error objects cannot be sent directly. Not
|
|
7
|
+
* intended for regular (expected) errors.
|
|
8
|
+
*
|
|
9
|
+
* The `error` property contains a plain object with error details, a string, or
|
|
10
|
+
* a fallback value if serialization fails to preserve as much debugging
|
|
11
|
+
* information as possible.
|
|
7
12
|
*/
|
|
8
|
-
export interface
|
|
9
|
-
readonly
|
|
13
|
+
export interface TransferableError {
|
|
14
|
+
readonly type: "TransferableError";
|
|
10
15
|
readonly error: unknown;
|
|
11
16
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export declare const ensureTransferableError: (error: unknown) => unknown;
|
|
17
|
+
/** Creates a {@link TransferableError} from an unknown error. */
|
|
18
|
+
export declare const createTransferableError: (error: unknown) => TransferableError;
|
|
15
19
|
//# sourceMappingURL=Error.d.ts.map
|
package/dist/src/Error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,iBA+CxD,CAAC"}
|
package/dist/src/Error.js
CHANGED
|
@@ -1,14 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
/** Creates a {@link TransferableError} from an unknown error. */
|
|
2
|
+
export const createTransferableError = (error) => {
|
|
3
|
+
const convertError = (err) => {
|
|
4
|
+
const transferableError = Object.getOwnPropertyNames(err).reduce((acc, key) => {
|
|
5
|
+
const value = err[key];
|
|
6
|
+
if (key === "cause" && value instanceof Error) {
|
|
7
|
+
// Recursively process the `cause` property
|
|
8
|
+
acc[key] = convertError(value);
|
|
9
|
+
}
|
|
10
|
+
else if (typeof value !== "function") {
|
|
11
|
+
acc[key] = value;
|
|
12
|
+
}
|
|
13
|
+
return acc;
|
|
14
|
+
}, {});
|
|
15
|
+
return transferableError;
|
|
16
|
+
};
|
|
17
|
+
if (error instanceof Error) {
|
|
8
18
|
return {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
stack: error.stack,
|
|
19
|
+
type: "TransferableError",
|
|
20
|
+
error: convertError(error),
|
|
12
21
|
};
|
|
13
|
-
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
// Clone other values that are transferable
|
|
25
|
+
return {
|
|
26
|
+
type: "TransferableError",
|
|
27
|
+
error: structuredClone(error),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Fallback for non-transferable or problematic values
|
|
32
|
+
try {
|
|
33
|
+
return {
|
|
34
|
+
type: "TransferableError",
|
|
35
|
+
error: String(error), // Attempt to convert to a string
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Final fallback if even `String(error)` fails
|
|
40
|
+
return {
|
|
41
|
+
type: "TransferableError",
|
|
42
|
+
error: "[Unserializable Object]",
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
14
46
|
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ConsoleConfig } from "../Console.js";
|
|
2
|
+
import { Mnemonic, SimpleName } from "../Type.js";
|
|
3
|
+
import type { DbIndexesBuilder } from "./Kysely.js";
|
|
4
|
+
export interface Config extends ConsoleConfig {
|
|
5
|
+
/**
|
|
6
|
+
* The name of Evolu instances. Evolu is multitenant - it can run more
|
|
7
|
+
* instances concurrently. Every Evolu instance has to have its own unique
|
|
8
|
+
* name. Database files are separated and invisible to each other.
|
|
9
|
+
*
|
|
10
|
+
* The default value is: `Evolu`.
|
|
11
|
+
*
|
|
12
|
+
* ### Example
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* // name: getOrThrow(SimpleName.from("MyApp"))
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
readonly name: SimpleName;
|
|
19
|
+
/**
|
|
20
|
+
* URL for Evolu sync and backup server.
|
|
21
|
+
*
|
|
22
|
+
* The default value is `https://evolu.world`.
|
|
23
|
+
*/
|
|
24
|
+
readonly syncUrl: string;
|
|
25
|
+
/**
|
|
26
|
+
* URL to reload browser tabs after reset or restore.
|
|
27
|
+
*
|
|
28
|
+
* The default value is `/`.
|
|
29
|
+
*/
|
|
30
|
+
readonly reloadUrl: string;
|
|
31
|
+
/**
|
|
32
|
+
* Maximum physical clock drift allowed in ms.
|
|
33
|
+
*
|
|
34
|
+
* The default value is 5 * 60 * 1000 (5 minutes).
|
|
35
|
+
*/
|
|
36
|
+
readonly maxDrift: number;
|
|
37
|
+
/**
|
|
38
|
+
* Use the `indexes` option to define SQLite indexes.
|
|
39
|
+
*
|
|
40
|
+
* Table and column names are not typed because Kysely doesn't support it.
|
|
41
|
+
*
|
|
42
|
+
* https://medium.com/@JasonWyatt/squeezing-performance-from-sqlite-indexes-indexes-c4e175f3c346
|
|
43
|
+
*
|
|
44
|
+
* ### Example
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* const evolu = createEvolu(evoluReactDeps)(Schema, {
|
|
48
|
+
* indexes: (create) => [
|
|
49
|
+
* create("todoCreatedAt").on("todo").column("createdAt"),
|
|
50
|
+
* create("todoCategoryCreatedAt")
|
|
51
|
+
* .on("todoCategory")
|
|
52
|
+
* .column("createdAt"),
|
|
53
|
+
* ],
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
readonly indexes?: DbIndexesBuilder;
|
|
58
|
+
/**
|
|
59
|
+
* Use this option to create Evolu with the specified mnemonic. If omitted,
|
|
60
|
+
* the mnemonic will be autogenerated. That should be the default behavior
|
|
61
|
+
* until special UX requirements are needed (e.g., multitenancy).
|
|
62
|
+
*/
|
|
63
|
+
readonly mnemonic?: Mnemonic;
|
|
64
|
+
}
|
|
65
|
+
export interface ConfigDep {
|
|
66
|
+
readonly config: Config;
|
|
67
|
+
}
|
|
68
|
+
export declare const defaultConfig: Config;
|
|
69
|
+
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,MAAO,SAAQ,aAAa;IAC3C;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,aAAa,EAAE,MAM3B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getOrThrow } from "../Result.js";
|
|
2
|
+
import { SimpleName } from "../Type.js";
|
|
3
|
+
export const defaultConfig = {
|
|
4
|
+
name: getOrThrow(SimpleName.fromParent("Evolu")),
|
|
5
|
+
syncUrl: "https://evolu.world",
|
|
6
|
+
reloadUrl: "/",
|
|
7
|
+
maxDrift: 5 * 60 * 1000,
|
|
8
|
+
enableLogging: false,
|
|
9
|
+
};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { NonEmptyReadonlyArray } from "../Array.js";
|
|
2
|
+
import { CallbackId } from "../Callbacks.js";
|
|
3
|
+
import { ConsoleDep } from "../Console.js";
|
|
4
|
+
import { CreateMnemonicDep, CreateRandomBytesDep, SymmetricCryptoDecryptError } from "../Crypto.js";
|
|
5
|
+
import { TransferableError } from "../Error.js";
|
|
6
|
+
import { NanoIdLibDep } from "../NanoId.js";
|
|
7
|
+
import { RandomDep } from "../Random.js";
|
|
8
|
+
import { Ref } from "../Ref.js";
|
|
9
|
+
import { Result } from "../Result.js";
|
|
10
|
+
import { CreateSqliteDriverDep, SafeSql, SqliteDep, SqliteError, SqliteRow } from "../Sqlite.js";
|
|
11
|
+
import { TimeDep } from "../Time.js";
|
|
12
|
+
import { Id, Mnemonic, SimpleName } from "../Type.js";
|
|
13
|
+
import { Worker } from "../Worker.js";
|
|
14
|
+
import { Config } from "./Config.js";
|
|
15
|
+
import { QueryPatches } from "./Diff.js";
|
|
16
|
+
import { AppOwner, OwnerRow } from "./Owner.js";
|
|
17
|
+
import { Base64Url256, CrdtMessage, DbChange, ProtocolError, Storage } from "./Protocol.js";
|
|
18
|
+
import { Query } from "./Query.js";
|
|
19
|
+
import { SqliteStorageBase } from "./Storage.js";
|
|
20
|
+
import { CreateSyncDep } from "./Sync.js";
|
|
21
|
+
import { Timestamp, TimestampError } from "./Timestamp.js";
|
|
22
|
+
export interface DbSchema {
|
|
23
|
+
readonly tables: ReadonlyArray<DbTable>;
|
|
24
|
+
readonly indexes: ReadonlyArray<DbIndex>;
|
|
25
|
+
}
|
|
26
|
+
export interface DbTable {
|
|
27
|
+
readonly name: Base64Url256;
|
|
28
|
+
readonly columns: ReadonlyArray<Base64Url256>;
|
|
29
|
+
}
|
|
30
|
+
export declare const DbIndex: import("../Type.js").ObjectType<{
|
|
31
|
+
name: import("../Type.js").Type<"String", string, string, import("../Type.js").StringError, string, import("../Type.js").StringError>;
|
|
32
|
+
sql: import("../Type.js").Type<"String", string, string, import("../Type.js").StringError, string, import("../Type.js").StringError>;
|
|
33
|
+
}>;
|
|
34
|
+
export type DbIndex = typeof DbIndex.Type;
|
|
35
|
+
export type DbWorker = Worker<DbWorkerInput, DbWorkerOutput>;
|
|
36
|
+
export type CreateDbWorker = (name: SimpleName) => DbWorker;
|
|
37
|
+
export interface CreateDbWorkerDep {
|
|
38
|
+
readonly createDbWorker: CreateDbWorker;
|
|
39
|
+
}
|
|
40
|
+
export type DbWorkerInput = {
|
|
41
|
+
readonly type: "init";
|
|
42
|
+
readonly config: Config;
|
|
43
|
+
readonly dbSchema: DbSchema;
|
|
44
|
+
readonly initialData: ReadonlyArray<DbChange>;
|
|
45
|
+
} | {
|
|
46
|
+
readonly type: "mutate";
|
|
47
|
+
readonly tabId: Id;
|
|
48
|
+
readonly changes: NonEmptyReadonlyArray<DbChange>;
|
|
49
|
+
readonly onCompleteIds: ReadonlyArray<CallbackId>;
|
|
50
|
+
readonly subscribedQueries: ReadonlyArray<Query>;
|
|
51
|
+
} | {
|
|
52
|
+
readonly type: "query";
|
|
53
|
+
readonly tabId: Id;
|
|
54
|
+
readonly queries: NonEmptyReadonlyArray<Query>;
|
|
55
|
+
} | {
|
|
56
|
+
readonly type: "reset";
|
|
57
|
+
readonly onCompleteId: CallbackId;
|
|
58
|
+
readonly reload: boolean;
|
|
59
|
+
readonly restore?: {
|
|
60
|
+
readonly dbSchema: DbSchema;
|
|
61
|
+
readonly mnemonic: Mnemonic;
|
|
62
|
+
};
|
|
63
|
+
} | {
|
|
64
|
+
readonly type: "ensureDbSchema";
|
|
65
|
+
readonly dbSchema: DbSchema;
|
|
66
|
+
} | {
|
|
67
|
+
readonly type: "export";
|
|
68
|
+
readonly onCompleteId: CallbackId;
|
|
69
|
+
};
|
|
70
|
+
export type DbWorkerOutput = {
|
|
71
|
+
readonly type: "onInit";
|
|
72
|
+
readonly owner: AppOwner;
|
|
73
|
+
} | {
|
|
74
|
+
readonly type: "onError";
|
|
75
|
+
readonly error: SqliteError | TransferableError | TimestampError | ProtocolError | SymmetricCryptoDecryptError;
|
|
76
|
+
} | {
|
|
77
|
+
readonly type: "onChange";
|
|
78
|
+
readonly tabId: Id;
|
|
79
|
+
readonly patches: ReadonlyArray<QueryPatches>;
|
|
80
|
+
readonly onCompleteIds: ReadonlyArray<CallbackId>;
|
|
81
|
+
} | {
|
|
82
|
+
readonly type: "onReceive";
|
|
83
|
+
readonly tabId?: Id;
|
|
84
|
+
} | {
|
|
85
|
+
readonly type: "onReset";
|
|
86
|
+
readonly onCompleteId: CallbackId;
|
|
87
|
+
readonly reload: boolean;
|
|
88
|
+
} | {
|
|
89
|
+
readonly type: "onExport";
|
|
90
|
+
readonly onCompleteId: CallbackId;
|
|
91
|
+
readonly file: Uint8Array;
|
|
92
|
+
};
|
|
93
|
+
export type DbWorkerPlatformDeps = CreateSqliteDriverDep & CreateSyncDep & ConsoleDep & TimeDep & RandomDep & NanoIdLibDep & CreateMnemonicDep & CreateRandomBytesDep;
|
|
94
|
+
export interface OwnerRowRefDep {
|
|
95
|
+
readonly ownerRowRef: Ref<OwnerRow>;
|
|
96
|
+
}
|
|
97
|
+
export declare const createDbWorkerForPlatform: (platformDeps: DbWorkerPlatformDeps) => DbWorker;
|
|
98
|
+
/**
|
|
99
|
+
* Get the current database schema by reading SQLite metadata.
|
|
100
|
+
*
|
|
101
|
+
* TODO: Refactor out Evolu stuff and move it to Sqlite.
|
|
102
|
+
*/
|
|
103
|
+
export declare const getDbSchema: (deps: SqliteDep) => ({ allIndexes }?: {
|
|
104
|
+
allIndexes?: boolean;
|
|
105
|
+
}) => Result<DbSchema, SqliteError>;
|
|
106
|
+
export interface DbSnapshot {
|
|
107
|
+
readonly schema: DbSchema;
|
|
108
|
+
readonly rows: Array<{
|
|
109
|
+
rows: ReadonlyArray<SqliteRow>;
|
|
110
|
+
name: string;
|
|
111
|
+
}>;
|
|
112
|
+
}
|
|
113
|
+
export declare const getDbSnapshot: (deps: SqliteDep) => Result<DbSnapshot, SqliteError>;
|
|
114
|
+
export declare const createAppTable: (tableName: string, columns: ReadonlyArray<string>) => SafeSql;
|
|
115
|
+
export declare const applyMessageToTimestampAndHistoryTables: (deps: SqliteDep & RandomDep & OwnerRowRefDep & ClientStorageDep) => (message: CrdtMessage) => Result<void, SqliteError>;
|
|
116
|
+
export declare const maybeMigrateToVersion0: (deps: SqliteDep) => (schema: DbSchema) => Result<{
|
|
117
|
+
readonly messages: ReadonlyArray<CrdtMessage>;
|
|
118
|
+
readonly mnemonic: Mnemonic;
|
|
119
|
+
readonly lastTimestamp: Timestamp;
|
|
120
|
+
} | null, SqliteError>;
|
|
121
|
+
export interface ClientStorage extends SqliteStorageBase, Storage {
|
|
122
|
+
}
|
|
123
|
+
export interface ClientStorageDep {
|
|
124
|
+
readonly storage: ClientStorage;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=Db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Db.ts"],"names":[],"mappings":"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"}
|