@evolu/common 6.0.1-preview.19 → 6.0.1-preview.20
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/dist/src/Assert.d.ts.map +1 -1
- package/dist/src/Assert.js +1 -1
- package/dist/src/Buffer.d.ts +1 -1
- package/dist/src/Buffer.d.ts.map +1 -1
- package/dist/src/Buffer.js +1 -1
- package/dist/src/CallbackRegistry.d.ts +53 -0
- package/dist/src/CallbackRegistry.d.ts.map +1 -0
- package/dist/src/CallbackRegistry.js +25 -0
- package/dist/src/Console.d.ts +31 -6
- package/dist/src/Console.d.ts.map +1 -1
- package/dist/src/Console.js +72 -9
- package/dist/src/Crypto.d.ts +48 -37
- package/dist/src/Crypto.d.ts.map +1 -1
- package/dist/src/Crypto.js +27 -50
- package/dist/src/Evolu/Db.d.ts +138 -66
- package/dist/src/Evolu/Db.d.ts.map +1 -1
- package/dist/src/Evolu/Db.js +248 -645
- package/dist/src/Evolu/Diff.d.ts +3 -3
- package/dist/src/Evolu/Diff.d.ts.map +1 -1
- package/dist/src/Evolu/Diff.js +7 -5
- package/dist/src/Evolu/Evolu.d.ts +79 -116
- package/dist/src/Evolu/Evolu.d.ts.map +1 -1
- package/dist/src/Evolu/Evolu.js +275 -132
- package/dist/src/Evolu/Internal.d.ts +0 -2
- package/dist/src/Evolu/Internal.d.ts.map +1 -1
- package/dist/src/Evolu/Internal.js +0 -2
- package/dist/src/Evolu/LocalAuth.d.ts +144 -0
- package/dist/src/Evolu/LocalAuth.d.ts.map +1 -0
- package/dist/src/Evolu/LocalAuth.js +171 -0
- package/dist/src/Evolu/Owner.d.ts +129 -83
- package/dist/src/Evolu/Owner.d.ts.map +1 -1
- package/dist/src/Evolu/Owner.js +80 -89
- package/dist/src/Evolu/Platform.d.ts +9 -7
- package/dist/src/Evolu/Platform.d.ts.map +1 -1
- package/dist/src/Evolu/Protocol.d.ts +114 -191
- package/dist/src/Evolu/Protocol.d.ts.map +1 -1
- package/dist/src/Evolu/Protocol.js +409 -416
- package/dist/src/Evolu/Public.d.ts +6 -8
- package/dist/src/Evolu/Public.d.ts.map +1 -1
- package/dist/src/Evolu/Public.js +2 -3
- package/dist/src/Evolu/PublicKysely.js +3 -3
- package/dist/src/Evolu/Relay.d.ts +1 -2
- package/dist/src/Evolu/Relay.d.ts.map +1 -1
- package/dist/src/Evolu/Relay.js +11 -9
- package/dist/src/Evolu/Schema.d.ts +88 -27
- package/dist/src/Evolu/Schema.d.ts.map +1 -1
- package/dist/src/Evolu/Schema.js +141 -24
- package/dist/src/Evolu/Storage.d.ts +158 -14
- package/dist/src/Evolu/Storage.d.ts.map +1 -1
- package/dist/src/Evolu/Storage.js +32 -32
- package/dist/src/Evolu/Sync.d.ts +77 -13
- package/dist/src/Evolu/Sync.d.ts.map +1 -1
- package/dist/src/Evolu/Sync.js +453 -20
- package/dist/src/Evolu/Timestamp.d.ts +29 -27
- package/dist/src/Evolu/Timestamp.d.ts.map +1 -1
- package/dist/src/Evolu/Timestamp.js +20 -18
- package/dist/src/ManyToManyMap.d.ts +74 -10
- package/dist/src/ManyToManyMap.d.ts.map +1 -1
- package/dist/src/ManyToManyMap.js +41 -6
- package/dist/src/Random.d.ts +3 -2
- package/dist/src/Random.d.ts.map +1 -1
- package/dist/src/RefCountedResourceManager.d.ts +119 -0
- package/dist/src/RefCountedResourceManager.d.ts.map +1 -0
- package/dist/src/RefCountedResourceManager.js +197 -0
- package/dist/src/Result.d.ts +144 -22
- package/dist/src/Result.d.ts.map +1 -1
- package/dist/src/Result.js +5 -2
- package/dist/src/Sqlite.d.ts +20 -4
- package/dist/src/Sqlite.d.ts.map +1 -1
- package/dist/src/Sqlite.js +50 -8
- package/dist/src/Task.d.ts +511 -0
- package/dist/src/Task.d.ts.map +1 -0
- package/dist/src/Task.js +410 -0
- package/dist/src/Time.d.ts +59 -0
- package/dist/src/Time.d.ts.map +1 -1
- package/dist/src/Time.js +87 -4
- package/dist/src/Type.d.ts +431 -341
- package/dist/src/Type.d.ts.map +1 -1
- package/dist/src/Type.js +458 -466
- package/dist/src/WebSocket.d.ts +5 -2
- package/dist/src/WebSocket.d.ts.map +1 -1
- package/dist/src/WebSocket.js +12 -13
- package/dist/src/Worker.d.ts +39 -11
- package/dist/src/Worker.d.ts.map +1 -1
- package/dist/src/Worker.js +22 -4
- package/dist/src/index.d.ts +2 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -3
- package/package.json +7 -7
- package/src/Assert.ts +2 -4
- package/src/Buffer.ts +1 -1
- package/src/CallbackRegistry.ts +84 -0
- package/src/Console.ts +91 -11
- package/src/Crypto.ts +78 -91
- package/src/Evolu/Db.ts +455 -947
- package/src/Evolu/Diff.ts +7 -5
- package/src/Evolu/Evolu.ts +545 -307
- package/src/Evolu/Internal.ts +0 -2
- package/src/Evolu/LocalAuth.ts +422 -0
- package/src/Evolu/Owner.ts +191 -131
- package/src/Evolu/Platform.ts +9 -9
- package/src/Evolu/Protocol.ts +536 -653
- package/src/Evolu/Public.ts +7 -9
- package/src/Evolu/PublicKysely.ts +3 -3
- package/src/Evolu/Relay.ts +17 -12
- package/src/Evolu/Schema.ts +271 -66
- package/src/Evolu/Storage.ts +263 -55
- package/src/Evolu/Sync.ts +758 -37
- package/src/Evolu/Timestamp.ts +30 -35
- package/src/ManyToManyMap.ts +127 -24
- package/src/Random.ts +3 -2
- package/src/RefCountedResourceManager.ts +368 -0
- package/src/Result.ts +149 -23
- package/src/Sqlite.ts +59 -24
- package/src/Task.ts +779 -0
- package/src/Time.ts +168 -4
- package/src/Type.ts +657 -695
- package/src/WebSocket.ts +23 -17
- package/src/Worker.ts +72 -23
- package/src/index.ts +2 -3
- package/dist/src/Callbacks.d.ts +0 -20
- package/dist/src/Callbacks.d.ts.map +0 -1
- package/dist/src/Callbacks.js +0 -18
- package/dist/src/Evolu/Config.d.ts +0 -82
- package/dist/src/Evolu/Config.d.ts.map +0 -1
- package/dist/src/Evolu/Config.js +0 -9
- package/dist/src/Evolu/Kysely.d.ts +0 -6
- package/dist/src/Evolu/Kysely.d.ts.map +0 -1
- package/dist/src/Evolu/Kysely.js +0 -21
- package/dist/src/NanoId.d.ts +0 -27
- package/dist/src/NanoId.d.ts.map +0 -1
- package/dist/src/NanoId.js +0 -6
- package/dist/src/Promise.d.ts +0 -180
- package/dist/src/Promise.d.ts.map +0 -1
- package/dist/src/Promise.js +0 -176
- package/src/Callbacks.ts +0 -43
- package/src/Evolu/Config.ts +0 -97
- package/src/Evolu/Kysely.ts +0 -38
- package/src/NanoId.ts +0 -39
- package/src/Promise.ts +0 -295
package/dist/src/Evolu/Db.d.ts
CHANGED
|
@@ -1,44 +1,128 @@
|
|
|
1
1
|
import { NonEmptyReadonlyArray } from "../Array.js";
|
|
2
|
-
import { CallbackId } from "../
|
|
3
|
-
import { ConsoleDep } from "../Console.js";
|
|
4
|
-
import {
|
|
2
|
+
import { CallbackId } from "../CallbackRegistry.js";
|
|
3
|
+
import { ConsoleConfig, ConsoleDep } from "../Console.js";
|
|
4
|
+
import { EncryptionKey, RandomBytesDep, SymmetricCryptoDecryptError } from "../Crypto.js";
|
|
5
5
|
import { TransferableError } from "../Error.js";
|
|
6
|
-
import { NanoIdLibDep } from "../NanoId.js";
|
|
7
6
|
import { RandomDep } from "../Random.js";
|
|
8
|
-
import {
|
|
9
|
-
import { CreateSqliteDriverDep, SafeSql, SqliteDep, SqliteError, SqliteRow } from "../Sqlite.js";
|
|
7
|
+
import { CreateSqliteDriverDep, SqliteError } from "../Sqlite.js";
|
|
10
8
|
import { TimeDep } from "../Time.js";
|
|
11
9
|
import { Id, Mnemonic, SimpleName } from "../Type.js";
|
|
10
|
+
import { CreateWebSocketDep } from "../WebSocket.js";
|
|
12
11
|
import { Worker } from "../Worker.js";
|
|
13
|
-
import { Config } from "./Config.js";
|
|
14
12
|
import { QueryPatches } from "./Diff.js";
|
|
15
|
-
import { AppOwner } from "./Owner.js";
|
|
16
|
-
import {
|
|
13
|
+
import { AppOwner, TransportConfig } from "./Owner.js";
|
|
14
|
+
import { ProtocolError } from "./Protocol.js";
|
|
17
15
|
import { Query } from "./Query.js";
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { TimestampError } from "./Timestamp.js";
|
|
21
|
-
export
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
16
|
+
import { DbSchema, MutationChange } from "./Schema.js";
|
|
17
|
+
import { SyncOwner } from "./Sync.js";
|
|
18
|
+
import { TimestampConfig, TimestampError } from "./Timestamp.js";
|
|
19
|
+
export interface DbConfig extends ConsoleConfig, TimestampConfig {
|
|
20
|
+
/**
|
|
21
|
+
* The name of the Evolu instance. Evolu is multitenant - it can run multiple
|
|
22
|
+
* instances concurrently. Each instance must have a unique name.
|
|
23
|
+
*
|
|
24
|
+
* The instance name is used as the SQLite database filename for persistent
|
|
25
|
+
* storage, ensuring that database files are separated and invisible to each
|
|
26
|
+
* other.
|
|
27
|
+
*
|
|
28
|
+
* The default value is: `Evolu`.
|
|
29
|
+
*
|
|
30
|
+
* ### Example
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* // name: SimpleName.orThrow("MyApp")
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
readonly name: SimpleName;
|
|
37
|
+
/**
|
|
38
|
+
* Transport configuration for data sync and backup. Supports single transport
|
|
39
|
+
* or multiple transports simultaneously for redundancy.
|
|
40
|
+
*
|
|
41
|
+
* Currently supports:
|
|
42
|
+
*
|
|
43
|
+
* - WebSocket: Real-time bidirectional communication with relay servers
|
|
44
|
+
*
|
|
45
|
+
* Empty transports create local-only instances. Transports can be dynamically
|
|
46
|
+
* added and removed for any owner (including {@link AppOwner}) via
|
|
47
|
+
* {@link Evolu#useOwner}.
|
|
48
|
+
*
|
|
49
|
+
* The default value is:
|
|
50
|
+
*
|
|
51
|
+
* `{ type: "WebSocket", url: "wss://free.evoluhq.com" }`.
|
|
52
|
+
*
|
|
53
|
+
* ### Example
|
|
54
|
+
*
|
|
55
|
+
* ```ts
|
|
56
|
+
* // Single WebSocket relay
|
|
57
|
+
* transports: [{ type: "WebSocket", url: "wss://relay1.example.com" }];
|
|
58
|
+
*
|
|
59
|
+
* // Multiple WebSocket relays for redundancy
|
|
60
|
+
* transports: [
|
|
61
|
+
* { type: "WebSocket", url: "wss://relay1.example.com" },
|
|
62
|
+
* { type: "WebSocket", url: "wss://relay2.example.com" },
|
|
63
|
+
* { type: "WebSocket", url: "wss://relay3.example.com" },
|
|
64
|
+
* ];
|
|
65
|
+
*
|
|
66
|
+
* // Local-only instance (no sync) - useful for device settings
|
|
67
|
+
* transports: [];
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
readonly transports: ReadonlyArray<TransportConfig>;
|
|
71
|
+
/**
|
|
72
|
+
* External AppOwner to use when creating Evolu instance. Use this when you
|
|
73
|
+
* want to manage AppOwner creation and persistence externally (e.g., with
|
|
74
|
+
* your own authentication system). If omitted, Evolu will automatically
|
|
75
|
+
* create and persist an AppOwner locally.
|
|
76
|
+
*
|
|
77
|
+
* For device-specific settings and account management state, we can use a
|
|
78
|
+
* separate local-only Evolu instance via `transports: []`.
|
|
79
|
+
*
|
|
80
|
+
* ### Example
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* const ConfigId = id("Config");
|
|
84
|
+
* type ConfigId = typeof ConfigId.Type;
|
|
85
|
+
*
|
|
86
|
+
* const DeviceSchema = {
|
|
87
|
+
* config: {
|
|
88
|
+
* id: ConfigId,
|
|
89
|
+
* key: NonEmptyString50,
|
|
90
|
+
* value: NonEmptyString50,
|
|
91
|
+
* },
|
|
92
|
+
* };
|
|
93
|
+
*
|
|
94
|
+
* // Local-only instance for device settings (no sync)
|
|
95
|
+
* const deviceEvolu = createEvolu(evoluReactWebDeps)(DeviceSchema, {
|
|
96
|
+
* name: SimpleName.orThrow("MyApp-Device"),
|
|
97
|
+
* transports: [], // No sync - stays local to device
|
|
98
|
+
* });
|
|
99
|
+
*
|
|
100
|
+
* // Main synced instance for user data
|
|
101
|
+
* const evolu = createEvolu(evoluReactWebDeps)(MainSchema, {
|
|
102
|
+
* name: SimpleName.orThrow("MyApp"),
|
|
103
|
+
* // Default transports for sync
|
|
104
|
+
* });
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
readonly externalAppOwner?: AppOwner;
|
|
108
|
+
/**
|
|
109
|
+
* Use in-memory SQLite database instead of persistent storage. Useful for
|
|
110
|
+
* testing or temporary data that doesn't need persistence.
|
|
111
|
+
*
|
|
112
|
+
* In-memory databases exist only in RAM and are completely destroyed when the
|
|
113
|
+
* process ends, making them forensically safe for sensitive data.
|
|
114
|
+
*
|
|
115
|
+
* The default value is: `false`.
|
|
116
|
+
*/
|
|
117
|
+
readonly inMemory?: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Encryption key for the SQLite database.
|
|
120
|
+
*
|
|
121
|
+
* @experimental
|
|
122
|
+
*/
|
|
123
|
+
readonly encryptionKey?: EncryptionKey;
|
|
124
|
+
}
|
|
125
|
+
export declare const defaultDbConfig: DbConfig;
|
|
42
126
|
export type DbWorker = Worker<DbWorkerInput, DbWorkerOutput>;
|
|
43
127
|
export type CreateDbWorker = (name: SimpleName) => DbWorker;
|
|
44
128
|
export interface CreateDbWorkerDep {
|
|
@@ -46,12 +130,14 @@ export interface CreateDbWorkerDep {
|
|
|
46
130
|
}
|
|
47
131
|
export type DbWorkerInput = {
|
|
48
132
|
readonly type: "init";
|
|
49
|
-
readonly config:
|
|
133
|
+
readonly config: DbConfig;
|
|
50
134
|
readonly dbSchema: DbSchema;
|
|
135
|
+
} | {
|
|
136
|
+
readonly type: "getAppOwner";
|
|
51
137
|
} | {
|
|
52
138
|
readonly type: "mutate";
|
|
53
139
|
readonly tabId: Id;
|
|
54
|
-
readonly changes: NonEmptyReadonlyArray<
|
|
140
|
+
readonly changes: NonEmptyReadonlyArray<MutationChange>;
|
|
55
141
|
readonly onCompleteIds: ReadonlyArray<CallbackId>;
|
|
56
142
|
readonly subscribedQueries: ReadonlyArray<Query>;
|
|
57
143
|
} | {
|
|
@@ -72,21 +158,24 @@ export type DbWorkerInput = {
|
|
|
72
158
|
} | {
|
|
73
159
|
readonly type: "export";
|
|
74
160
|
readonly onCompleteId: CallbackId;
|
|
161
|
+
} | {
|
|
162
|
+
readonly type: "useOwner";
|
|
163
|
+
readonly use: boolean;
|
|
164
|
+
readonly owner: SyncOwner;
|
|
75
165
|
};
|
|
76
166
|
export type DbWorkerOutput = {
|
|
77
|
-
readonly type: "onInit";
|
|
78
|
-
readonly appOwner: AppOwner;
|
|
79
|
-
readonly isFirst: boolean;
|
|
80
|
-
} | {
|
|
81
167
|
readonly type: "onError";
|
|
82
|
-
readonly error:
|
|
168
|
+
readonly error: ProtocolError | SqliteError | SymmetricCryptoDecryptError | TimestampError | TransferableError;
|
|
83
169
|
} | {
|
|
84
|
-
readonly type: "
|
|
170
|
+
readonly type: "onGetAppOwner";
|
|
171
|
+
readonly appOwner: AppOwner;
|
|
172
|
+
} | {
|
|
173
|
+
readonly type: "onQueryPatches";
|
|
85
174
|
readonly tabId: Id;
|
|
86
|
-
readonly
|
|
175
|
+
readonly queryPatches: ReadonlyArray<QueryPatches>;
|
|
87
176
|
readonly onCompleteIds: ReadonlyArray<CallbackId>;
|
|
88
177
|
} | {
|
|
89
|
-
readonly type: "
|
|
178
|
+
readonly type: "refreshQueries";
|
|
90
179
|
readonly tabId?: Id;
|
|
91
180
|
} | {
|
|
92
181
|
readonly type: "onReset";
|
|
@@ -97,29 +186,12 @@ export type DbWorkerOutput = {
|
|
|
97
186
|
readonly onCompleteId: CallbackId;
|
|
98
187
|
readonly file: Uint8Array;
|
|
99
188
|
};
|
|
100
|
-
export type DbWorkerPlatformDeps =
|
|
101
|
-
export
|
|
102
|
-
|
|
103
|
-
* Get the current database schema by reading SQLite metadata.
|
|
104
|
-
*
|
|
105
|
-
* TODO: Refactor out Evolu stuff and move it to Sqlite.
|
|
106
|
-
*/
|
|
107
|
-
export declare const getDbSchema: (deps: SqliteDep) => ({ allIndexes }?: {
|
|
108
|
-
allIndexes?: boolean;
|
|
109
|
-
}) => Result<DbSchema, SqliteError>;
|
|
110
|
-
export interface DbSnapshot {
|
|
111
|
-
readonly schema: DbSchema;
|
|
112
|
-
readonly tables: Array<{
|
|
113
|
-
name: string;
|
|
114
|
-
rows: ReadonlyArray<SqliteRow>;
|
|
115
|
-
}>;
|
|
116
|
-
}
|
|
117
|
-
export declare const getDbSnapshot: (deps: SqliteDep) => DbSnapshot;
|
|
118
|
-
export declare const createAppTable: (tableName: string, columns: ReadonlyArray<string>) => SafeSql;
|
|
119
|
-
export declare const applyMessageToTimestampAndHistoryTables: (deps: SqliteDep & ClientStorageDep) => (ownerId: BinaryOwnerId, message: CrdtMessage) => Result<void, SqliteError>;
|
|
120
|
-
export interface ClientStorageDep {
|
|
121
|
-
readonly storage: ClientStorage;
|
|
189
|
+
export type DbWorkerPlatformDeps = ConsoleDep & CreateSqliteDriverDep & CreateWebSocketDep & RandomBytesDep & RandomDep & TimeDep;
|
|
190
|
+
export interface PostMessageDep {
|
|
191
|
+
readonly postMessage: (message: DbWorkerOutput) => void;
|
|
122
192
|
}
|
|
123
|
-
export interface
|
|
193
|
+
export interface AppOwnerDep {
|
|
194
|
+
readonly appOwner: AppOwner;
|
|
124
195
|
}
|
|
196
|
+
export declare const createDbWorkerForPlatform: (platformDeps: DbWorkerPlatformDeps) => DbWorker;
|
|
125
197
|
//# sourceMappingURL=Db.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Db.ts"],"names":[],"mappings":"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"}
|