@evolu/common 6.0.1-preview.2 → 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.
Files changed (154) hide show
  1. package/dist/src/Assert.d.ts +6 -3
  2. package/dist/src/Assert.d.ts.map +1 -1
  3. package/dist/src/Assert.js +7 -4
  4. package/dist/src/Brand.d.ts +75 -0
  5. package/dist/src/Brand.d.ts.map +1 -0
  6. package/dist/src/Brand.js +1 -0
  7. package/dist/src/Buffer.d.ts +1 -1
  8. package/dist/src/Buffer.d.ts.map +1 -1
  9. package/dist/src/Buffer.js +1 -1
  10. package/dist/src/CallbackRegistry.d.ts +53 -0
  11. package/dist/src/CallbackRegistry.d.ts.map +1 -0
  12. package/dist/src/CallbackRegistry.js +25 -0
  13. package/dist/src/Console.d.ts +31 -6
  14. package/dist/src/Console.d.ts.map +1 -1
  15. package/dist/src/Console.js +72 -9
  16. package/dist/src/Crypto.d.ts +61 -34
  17. package/dist/src/Crypto.d.ts.map +1 -1
  18. package/dist/src/Crypto.js +29 -42
  19. package/dist/src/Evolu/Db.d.ts +137 -66
  20. package/dist/src/Evolu/Db.d.ts.map +1 -1
  21. package/dist/src/Evolu/Db.js +300 -705
  22. package/dist/src/Evolu/Diff.d.ts +3 -3
  23. package/dist/src/Evolu/Diff.d.ts.map +1 -1
  24. package/dist/src/Evolu/Diff.js +7 -5
  25. package/dist/src/Evolu/Evolu.d.ts +200 -115
  26. package/dist/src/Evolu/Evolu.d.ts.map +1 -1
  27. package/dist/src/Evolu/Evolu.js +287 -157
  28. package/dist/src/Evolu/Internal.d.ts +0 -2
  29. package/dist/src/Evolu/Internal.d.ts.map +1 -1
  30. package/dist/src/Evolu/Internal.js +0 -2
  31. package/dist/src/Evolu/LocalAuth.d.ts +144 -0
  32. package/dist/src/Evolu/LocalAuth.d.ts.map +1 -0
  33. package/dist/src/Evolu/LocalAuth.js +171 -0
  34. package/dist/src/Evolu/Owner.d.ts +152 -127
  35. package/dist/src/Evolu/Owner.d.ts.map +1 -1
  36. package/dist/src/Evolu/Owner.js +88 -107
  37. package/dist/src/Evolu/Platform.d.ts +9 -7
  38. package/dist/src/Evolu/Platform.d.ts.map +1 -1
  39. package/dist/src/Evolu/Protocol.d.ts +170 -186
  40. package/dist/src/Evolu/Protocol.d.ts.map +1 -1
  41. package/dist/src/Evolu/Protocol.js +487 -343
  42. package/dist/src/Evolu/Public.d.ts +6 -8
  43. package/dist/src/Evolu/Public.d.ts.map +1 -1
  44. package/dist/src/Evolu/Public.js +2 -3
  45. package/dist/src/Evolu/PublicKysely.js +3 -3
  46. package/dist/src/Evolu/Query.d.ts +2 -1
  47. package/dist/src/Evolu/Query.d.ts.map +1 -1
  48. package/dist/src/Evolu/Relay.d.ts +4 -3
  49. package/dist/src/Evolu/Relay.d.ts.map +1 -1
  50. package/dist/src/Evolu/Relay.js +50 -12
  51. package/dist/src/Evolu/Schema.d.ts +129 -73
  52. package/dist/src/Evolu/Schema.d.ts.map +1 -1
  53. package/dist/src/Evolu/Schema.js +169 -89
  54. package/dist/src/Evolu/Storage.d.ts +159 -14
  55. package/dist/src/Evolu/Storage.d.ts.map +1 -1
  56. package/dist/src/Evolu/Storage.js +42 -32
  57. package/dist/src/Evolu/Sync.d.ts +77 -13
  58. package/dist/src/Evolu/Sync.d.ts.map +1 -1
  59. package/dist/src/Evolu/Sync.js +453 -20
  60. package/dist/src/Evolu/Timestamp.d.ts +35 -27
  61. package/dist/src/Evolu/Timestamp.d.ts.map +1 -1
  62. package/dist/src/Evolu/Timestamp.js +27 -18
  63. package/dist/src/ManyToManyMap.d.ts +74 -10
  64. package/dist/src/ManyToManyMap.d.ts.map +1 -1
  65. package/dist/src/ManyToManyMap.js +41 -6
  66. package/dist/src/Number.d.ts +2 -1
  67. package/dist/src/Number.d.ts.map +1 -1
  68. package/dist/src/Random.d.ts +3 -2
  69. package/dist/src/Random.d.ts.map +1 -1
  70. package/dist/src/RefCountedResourceManager.d.ts +119 -0
  71. package/dist/src/RefCountedResourceManager.d.ts.map +1 -0
  72. package/dist/src/RefCountedResourceManager.js +197 -0
  73. package/dist/src/Result.d.ts +147 -51
  74. package/dist/src/Result.d.ts.map +1 -1
  75. package/dist/src/Result.js +7 -241
  76. package/dist/src/Sqlite.d.ts +21 -4
  77. package/dist/src/Sqlite.d.ts.map +1 -1
  78. package/dist/src/Sqlite.js +50 -8
  79. package/dist/src/Task.d.ts +511 -0
  80. package/dist/src/Task.d.ts.map +1 -0
  81. package/dist/src/Task.js +410 -0
  82. package/dist/src/Time.d.ts +59 -0
  83. package/dist/src/Time.d.ts.map +1 -1
  84. package/dist/src/Time.js +87 -4
  85. package/dist/src/Type.d.ts +462 -327
  86. package/dist/src/Type.d.ts.map +1 -1
  87. package/dist/src/Type.js +490 -436
  88. package/dist/src/Types.d.ts +0 -74
  89. package/dist/src/Types.d.ts.map +1 -1
  90. package/dist/src/WebSocket.d.ts +5 -2
  91. package/dist/src/WebSocket.d.ts.map +1 -1
  92. package/dist/src/WebSocket.js +12 -13
  93. package/dist/src/Worker.d.ts +39 -11
  94. package/dist/src/Worker.d.ts.map +1 -1
  95. package/dist/src/Worker.js +22 -4
  96. package/dist/src/index.d.ts +3 -3
  97. package/dist/src/index.d.ts.map +1 -1
  98. package/dist/src/index.js +3 -3
  99. package/package.json +14 -13
  100. package/src/Assert.ts +8 -7
  101. package/src/Brand.ts +75 -0
  102. package/src/Buffer.ts +1 -1
  103. package/src/CallbackRegistry.ts +84 -0
  104. package/src/Console.ts +91 -11
  105. package/src/Crypto.ts +94 -79
  106. package/src/Evolu/Db.ts +505 -1027
  107. package/src/Evolu/Diff.ts +7 -5
  108. package/src/Evolu/Evolu.ts +682 -329
  109. package/src/Evolu/Internal.ts +0 -2
  110. package/src/Evolu/LocalAuth.ts +422 -0
  111. package/src/Evolu/Owner.ts +221 -235
  112. package/src/Evolu/Platform.ts +9 -9
  113. package/src/Evolu/Protocol.ts +681 -614
  114. package/src/Evolu/Public.ts +7 -14
  115. package/src/Evolu/PublicKysely.ts +3 -3
  116. package/src/Evolu/Query.ts +2 -1
  117. package/src/Evolu/Relay.ts +62 -16
  118. package/src/Evolu/Schema.ts +391 -191
  119. package/src/Evolu/Storage.ts +275 -55
  120. package/src/Evolu/Sync.ts +758 -37
  121. package/src/Evolu/Timestamp.ts +38 -35
  122. package/src/ManyToManyMap.ts +127 -24
  123. package/src/Number.ts +2 -6
  124. package/src/Random.ts +3 -2
  125. package/src/RefCountedResourceManager.ts +368 -0
  126. package/src/Result.ts +152 -53
  127. package/src/Sqlite.ts +59 -23
  128. package/src/Task.ts +779 -0
  129. package/src/Time.ts +168 -4
  130. package/src/Type.ts +696 -660
  131. package/src/Types.ts +0 -76
  132. package/src/WebSocket.ts +23 -17
  133. package/src/Worker.ts +72 -23
  134. package/src/index.ts +3 -3
  135. package/dist/src/Callbacks.d.ts +0 -20
  136. package/dist/src/Callbacks.d.ts.map +0 -1
  137. package/dist/src/Callbacks.js +0 -18
  138. package/dist/src/Evolu/Config.d.ts +0 -69
  139. package/dist/src/Evolu/Config.d.ts.map +0 -1
  140. package/dist/src/Evolu/Config.js +0 -9
  141. package/dist/src/Evolu/Kysely.d.ts +0 -6
  142. package/dist/src/Evolu/Kysely.d.ts.map +0 -1
  143. package/dist/src/Evolu/Kysely.js +0 -21
  144. package/dist/src/NanoId.d.ts +0 -27
  145. package/dist/src/NanoId.d.ts.map +0 -1
  146. package/dist/src/NanoId.js +0 -6
  147. package/dist/src/Promise.d.ts +0 -180
  148. package/dist/src/Promise.d.ts.map +0 -1
  149. package/dist/src/Promise.js +0 -176
  150. package/src/Callbacks.ts +0 -43
  151. package/src/Evolu/Config.ts +0 -83
  152. package/src/Evolu/Kysely.ts +0 -38
  153. package/src/NanoId.ts +0 -39
  154. package/src/Promise.ts +0 -295
@@ -3,70 +3,57 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { xchacha20poly1305 } from "@noble/ciphers/chacha";
7
- import { hmac } from "@noble/hashes/hmac";
8
- import { sha512 } from "@noble/hashes/sha2";
9
- import { randomBytes } from "@noble/hashes/utils";
10
- import * as bip39 from "@scure/bip39";
11
- import { wordlist } from "@scure/bip39/wordlists/english";
12
- import { urlAlphabet } from "nanoid";
13
- import { getOrThrow, trySync } from "./Result.js";
14
- import { brand, length, NonNegativeInt, Uint8Array, } from "./Type.js";
15
- /** Cryptographically secure PRNG. Uses internal OS-level crypto.getRandomValues. */
16
- export const createRandomBytes = (bytesLength = 32) => randomBytes(bytesLength);
17
- export const createEnglishMnemonic = () => bip39.generateMnemonic(wordlist, 128);
18
- export const mnemonicToMnemonicSeed = (mnemonic) => bip39.mnemonicToSeedSync(mnemonic);
6
+ import { xchacha20poly1305 } from "@noble/ciphers/chacha.js";
7
+ import { hmac } from "@noble/hashes/hmac.js";
8
+ import { sha512 } from "@noble/hashes/sha2.js";
9
+ import { randomBytes, utf8ToBytes } from "@noble/hashes/utils.js";
10
+ import { trySync } from "./Result.js";
11
+ import { brand, length, NonNegativeInt, Uint8Array } from "./Type.js";
12
+ const Entropy = brand("Entropy", Uint8Array);
13
+ export const Entropy16 = length(16)(Entropy);
14
+ export const Entropy32 = length(32)(Entropy);
15
+ export const Entropy64 = length(64)(Entropy);
16
+ export const createRandomBytes = () => ({
17
+ create: randomBytes,
18
+ });
19
19
  /**
20
20
  * SLIP21.
21
21
  *
22
22
  * https://github.com/satoshilabs/slips/blob/master/slip-0021.md
23
23
  */
24
24
  export const createSlip21 = (seed, path) => {
25
- let m = hmac(sha512, "Symmetric key seed", seed);
26
- for (const component of path) {
27
- const p = new TextEncoder().encode(component);
28
- const e = new globalThis.Uint8Array(p.byteLength + 1);
29
- e[0] = 0;
30
- e.set(p, 1);
31
- m = hmac(sha512, m.slice(0, 32), e);
25
+ let currentNode = hmac(sha512, utf8ToBytes("Symmetric key seed"), seed);
26
+ for (const element of path) {
27
+ const label = typeof element === "number" ? element.toString() : element;
28
+ currentNode = deriveSlip21Node(label, currentNode);
32
29
  }
33
- return m.slice(32, 64);
30
+ return currentNode.slice(32, 64);
34
31
  };
35
32
  /**
36
- * Creates a 21-character Base64URL ID (also known as nanoid) from a SLIP-21
37
- * derived key.
33
+ * Derives a single node in the SLIP-21 hierarchical key derivation.
38
34
  *
39
- * Reduces the 256-bit SLIP-21 output to 126 bits (21 chars × 6 bits) for a
40
- * compact, human-readable, and shareable identifier suitable for UI display or
41
- * URL use. While this lowers entropy, 126 bits remains cryptographically secure
42
- * for uniqueness and unpredictability in most applications (comparable to
43
- * UUIDv4's 122 bits).
44
- *
45
- * See https://github.com/satoshilabs/slips/blob/master/slip-0021.md
35
+ * @see {@link createSlip21}
46
36
  */
47
- export const createSlip21Id = (seed, path) => {
48
- const slip21 = createSlip21(seed, path);
49
- let id = "";
50
- // Convert the key to the Id/NanoId/Base64Url format.
51
- for (let i = 0; i < 21; i++) {
52
- id = (id + urlAlphabet[slip21[i] & 63]);
53
- }
54
- return id;
37
+ export const deriveSlip21Node = (label, parentNode) => {
38
+ const labelBytes = utf8ToBytes(label);
39
+ const message = new globalThis.Uint8Array(labelBytes.byteLength + 1);
40
+ message[0] = 0;
41
+ message.set(labelBytes, 1);
42
+ return hmac(sha512, parentNode.slice(0, 32), message);
55
43
  };
56
44
  /** The encryption key for {@link SymmetricCrypto}. */
57
- export const EncryptionKey = brand("EncryptionKey", length(32)(Uint8Array));
58
- export const createEncryptionKey = (seed) => createSlip21(seed, ["Evolu", "Encryption Key"]);
45
+ export const EncryptionKey = brand("EncryptionKey", Entropy32);
59
46
  /**
60
47
  * XChaCha20-Poly1305 encryption
61
48
  *
62
49
  * https://github.com/paulmillr/noble-ciphers?tab=readme-ov-file#which-cipher-should-i-pick
63
50
  */
64
51
  export const createSymmetricCrypto = (deps) => {
65
- const nonceLength = getOrThrow(NonNegativeInt.from(24));
52
+ const nonceLength = NonNegativeInt.orThrow(24);
66
53
  const symmetricCrypto = {
67
54
  nonceLength,
68
55
  encrypt: (plaintext, encryptionKey) => {
69
- const nonce = deps.createRandomBytes(nonceLength);
56
+ const nonce = deps.randomBytes.create(nonceLength);
70
57
  const ciphertext = xchacha20poly1305(encryptionKey, nonce).encrypt(plaintext);
71
58
  return { nonce, ciphertext };
72
59
  },
@@ -1,37 +1,128 @@
1
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";
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 { Ref } from "../Ref.js";
9
- import { Result } from "../Result.js";
10
- import { CreateSqliteDriverDep, SafeSql, SqliteDep, SqliteError, SqliteRow } from "../Sqlite.js";
7
+ import { CreateSqliteDriverDep, SqliteError } from "../Sqlite.js";
11
8
  import { TimeDep } from "../Time.js";
12
9
  import { Id, Mnemonic, SimpleName } from "../Type.js";
10
+ import { CreateWebSocketDep } from "../WebSocket.js";
13
11
  import { Worker } from "../Worker.js";
14
- import { Config } from "./Config.js";
15
12
  import { QueryPatches } from "./Diff.js";
16
- import { AppOwner, OwnerRow } from "./Owner.js";
17
- import { Base64Url256, CrdtMessage, DbChange, ProtocolError, Storage } from "./Protocol.js";
13
+ import { AppOwner, TransportConfig } from "./Owner.js";
14
+ import { ProtocolError } from "./Protocol.js";
18
15
  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>;
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;
25
124
  }
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;
125
+ export declare const defaultDbConfig: DbConfig;
35
126
  export type DbWorker = Worker<DbWorkerInput, DbWorkerOutput>;
36
127
  export type CreateDbWorker = (name: SimpleName) => DbWorker;
37
128
  export interface CreateDbWorkerDep {
@@ -39,13 +130,14 @@ export interface CreateDbWorkerDep {
39
130
  }
40
131
  export type DbWorkerInput = {
41
132
  readonly type: "init";
42
- readonly config: Config;
133
+ readonly config: DbConfig;
43
134
  readonly dbSchema: DbSchema;
44
- readonly initialData: ReadonlyArray<DbChange>;
135
+ } | {
136
+ readonly type: "getAppOwner";
45
137
  } | {
46
138
  readonly type: "mutate";
47
139
  readonly tabId: Id;
48
- readonly changes: NonEmptyReadonlyArray<DbChange>;
140
+ readonly changes: NonEmptyReadonlyArray<MutationChange>;
49
141
  readonly onCompleteIds: ReadonlyArray<CallbackId>;
50
142
  readonly subscribedQueries: ReadonlyArray<Query>;
51
143
  } | {
@@ -66,20 +158,24 @@ export type DbWorkerInput = {
66
158
  } | {
67
159
  readonly type: "export";
68
160
  readonly onCompleteId: CallbackId;
161
+ } | {
162
+ readonly type: "useOwner";
163
+ readonly use: boolean;
164
+ readonly owner: SyncOwner;
69
165
  };
70
166
  export type DbWorkerOutput = {
71
- readonly type: "onInit";
72
- readonly owner: AppOwner;
73
- } | {
74
167
  readonly type: "onError";
75
- readonly error: SqliteError | TransferableError | TimestampError | ProtocolError | SymmetricCryptoDecryptError;
168
+ readonly error: ProtocolError | SqliteError | SymmetricCryptoDecryptError | TimestampError | TransferableError;
169
+ } | {
170
+ readonly type: "onGetAppOwner";
171
+ readonly appOwner: AppOwner;
76
172
  } | {
77
- readonly type: "onChange";
173
+ readonly type: "onQueryPatches";
78
174
  readonly tabId: Id;
79
- readonly patches: ReadonlyArray<QueryPatches>;
175
+ readonly queryPatches: ReadonlyArray<QueryPatches>;
80
176
  readonly onCompleteIds: ReadonlyArray<CallbackId>;
81
177
  } | {
82
- readonly type: "onReceive";
178
+ readonly type: "refreshQueries";
83
179
  readonly tabId?: Id;
84
180
  } | {
85
181
  readonly type: "onReset";
@@ -90,37 +186,12 @@ export type DbWorkerOutput = {
90
186
  readonly onCompleteId: CallbackId;
91
187
  readonly file: Uint8Array;
92
188
  };
93
- export type DbWorkerPlatformDeps = CreateSqliteDriverDep & CreateSyncDep & ConsoleDep & TimeDep & RandomDep & NanoIdLibDep & CreateMnemonicDep & CreateRandomBytesDep;
94
- export interface OwnerRowRefDep {
95
- readonly ownerRowRef: Ref<OwnerRow>;
189
+ export type DbWorkerPlatformDeps = ConsoleDep & CreateSqliteDriverDep & CreateWebSocketDep & RandomBytesDep & RandomDep & TimeDep;
190
+ export interface PostMessageDep {
191
+ readonly postMessage: (message: DbWorkerOutput) => void;
96
192
  }
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;
193
+ export interface AppOwnerDep {
194
+ readonly appOwner: AppOwner;
125
195
  }
196
+ export declare const createDbWorkerForPlatform: (platformDeps: DbWorkerPlatformDeps) => DbWorker;
126
197
  //# sourceMappingURL=Db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAEL,aAAa,EACb,cAAc,EACd,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAEL,qBAAqB,EAIrB,WAAW,EACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAGL,MAAM,EACP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAe,YAAY,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EACL,QAAQ,EAOR,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAmB,MAAM,eAAe,CAAC;AAC/D,OAAO,EAIL,KAAK,EAEN,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,QAAQ,EAGR,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAML,SAAS,EACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAEL,eAAe,EACf,cAAc,EAIf,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,QAAS,SAAQ,aAAa,EAAE,eAAe;IAC9D;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;IAErC;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;CACxC;AAED,eAAO,MAAM,eAAe,EAAE,QAK7B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,QAAQ,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED,MAAM,MAAM,aAAa,GACrB;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;CAC9B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAClD,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CAClD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;CAChD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAC7B,CAAC;CACH,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;CACnC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B,CAAC;AAEN,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EACV,aAAa,GACb,WAAW,GACX,2BAA2B,GAC3B,cAAc,GACd,iBAAiB,CAAC;CACvB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACnD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;CACrB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAC3C,qBAAqB,GACrB,kBAAkB,GAClB,cAAc,GACd,SAAS,GACT,OAAO,CAAC;AAgBV,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B;AAED,eAAO,MAAM,yBAAyB,GACpC,cAAc,oBAAoB,KACjC,QAKsD,CAAC"}