@evolu/common 5.4.7 → 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.
Files changed (242) hide show
  1. package/README.md +30 -34
  2. package/dist/src/Array.d.ts +17 -0
  3. package/dist/src/Array.d.ts.map +1 -0
  4. package/dist/src/Array.js +12 -0
  5. package/dist/src/Assert.d.ts +68 -0
  6. package/dist/src/Assert.d.ts.map +1 -0
  7. package/dist/src/Assert.js +77 -0
  8. package/dist/src/BigInt.d.ts +20 -0
  9. package/dist/src/BigInt.d.ts.map +1 -0
  10. package/dist/src/BigInt.js +18 -0
  11. package/dist/src/Buffer.d.ts +92 -0
  12. package/dist/src/Buffer.d.ts.map +1 -0
  13. package/dist/src/Buffer.js +62 -0
  14. package/dist/src/Callbacks.d.ts +20 -0
  15. package/dist/src/Callbacks.d.ts.map +1 -0
  16. package/dist/src/Callbacks.js +18 -0
  17. package/dist/src/Console.d.ts +78 -0
  18. package/dist/src/Console.d.ts.map +1 -0
  19. package/dist/src/Console.js +103 -0
  20. package/dist/src/Crypto.d.ts +72 -39
  21. package/dist/src/Crypto.d.ts.map +1 -1
  22. package/dist/src/Crypto.js +89 -54
  23. package/dist/src/Eq.d.ts +97 -0
  24. package/dist/src/Eq.d.ts.map +1 -0
  25. package/dist/src/Eq.js +167 -0
  26. package/dist/src/Error.d.ts +14 -10
  27. package/dist/src/Error.d.ts.map +1 -1
  28. package/dist/src/Error.js +43 -11
  29. package/dist/src/Evolu/Config.d.ts +69 -0
  30. package/dist/src/Evolu/Config.d.ts.map +1 -0
  31. package/dist/src/Evolu/Config.js +9 -0
  32. package/dist/src/Evolu/Db.d.ts +126 -0
  33. package/dist/src/Evolu/Db.d.ts.map +1 -0
  34. package/dist/src/Evolu/Db.js +774 -0
  35. package/dist/src/Evolu/Diff.d.ts +43 -0
  36. package/dist/src/Evolu/Diff.d.ts.map +1 -0
  37. package/dist/src/Evolu/Diff.js +95 -0
  38. package/dist/src/Evolu/Evolu.d.ts +334 -0
  39. package/dist/src/Evolu/Evolu.d.ts.map +1 -0
  40. package/dist/src/Evolu/Evolu.js +434 -0
  41. package/dist/src/Evolu/Internal.d.ts +26 -0
  42. package/dist/src/Evolu/Internal.d.ts.map +1 -0
  43. package/dist/src/Evolu/Internal.js +25 -0
  44. package/dist/src/Evolu/Kysely.d.ts +6 -0
  45. package/dist/src/Evolu/Kysely.d.ts.map +1 -0
  46. package/dist/src/Evolu/Kysely.js +21 -0
  47. package/dist/src/Evolu/Owner.d.ts +155 -0
  48. package/dist/src/Evolu/Owner.d.ts.map +1 -0
  49. package/dist/src/Evolu/Owner.js +126 -0
  50. package/dist/src/Evolu/Platform.d.ts +23 -0
  51. package/dist/src/Evolu/Platform.d.ts.map +1 -0
  52. package/dist/src/Evolu/Platform.js +1 -0
  53. package/dist/src/Evolu/Protocol.d.ts +401 -0
  54. package/dist/src/Evolu/Protocol.d.ts.map +1 -0
  55. package/dist/src/Evolu/Protocol.js +1151 -0
  56. package/dist/src/Evolu/Public.d.ts +18 -0
  57. package/dist/src/Evolu/Public.d.ts.map +1 -0
  58. package/dist/src/Evolu/Public.js +11 -0
  59. package/dist/src/Evolu/PublicKysely.d.ts +148 -0
  60. package/dist/src/Evolu/PublicKysely.d.ts.map +1 -0
  61. package/dist/src/Evolu/PublicKysely.js +185 -0
  62. package/dist/src/Evolu/Query.d.ts +63 -0
  63. package/dist/src/Evolu/Query.d.ts.map +1 -0
  64. package/dist/src/Evolu/Query.js +61 -0
  65. package/dist/src/Evolu/Relay.d.ts +13 -0
  66. package/dist/src/Evolu/Relay.d.ts.map +1 -0
  67. package/dist/src/Evolu/Relay.js +109 -0
  68. package/dist/src/Evolu/Schema.d.ts +201 -0
  69. package/dist/src/Evolu/Schema.d.ts.map +1 -0
  70. package/dist/src/Evolu/Schema.js +150 -0
  71. package/dist/src/Evolu/Storage.d.ts +49 -0
  72. package/dist/src/Evolu/Storage.d.ts.map +1 -0
  73. package/dist/src/Evolu/Storage.js +1111 -0
  74. package/dist/src/Evolu/Sync.d.ts +59 -0
  75. package/dist/src/Evolu/Sync.d.ts.map +1 -0
  76. package/dist/src/Evolu/Sync.js +29 -0
  77. package/dist/src/Evolu/Timestamp.d.ts +106 -0
  78. package/dist/src/Evolu/Timestamp.d.ts.map +1 -0
  79. package/dist/src/Evolu/Timestamp.js +179 -0
  80. package/dist/src/Function.d.ts +54 -0
  81. package/dist/src/Function.d.ts.map +1 -0
  82. package/dist/src/Function.js +38 -0
  83. package/dist/src/ManyToManyMap.d.ts +26 -0
  84. package/dist/src/ManyToManyMap.d.ts.map +1 -0
  85. package/dist/src/ManyToManyMap.js +92 -0
  86. package/dist/src/NanoId.d.ts +27 -0
  87. package/dist/src/NanoId.d.ts.map +1 -0
  88. package/dist/src/NanoId.js +6 -0
  89. package/dist/src/Number.d.ts +42 -0
  90. package/dist/src/Number.d.ts.map +1 -0
  91. package/dist/src/Number.js +55 -0
  92. package/dist/src/Object.d.ts +35 -0
  93. package/dist/src/Object.d.ts.map +1 -0
  94. package/dist/src/Object.js +36 -0
  95. package/dist/src/Order.d.ts +90 -0
  96. package/dist/src/Order.d.ts.map +1 -0
  97. package/dist/src/Order.js +85 -0
  98. package/dist/src/Promise.d.ts +180 -0
  99. package/dist/src/Promise.d.ts.map +1 -0
  100. package/dist/src/Promise.js +176 -0
  101. package/dist/src/Random.d.ts +52 -0
  102. package/dist/src/Random.d.ts.map +1 -0
  103. package/dist/src/Random.js +29 -0
  104. package/dist/src/Ref.d.ts +40 -0
  105. package/dist/src/Ref.d.ts.map +1 -0
  106. package/dist/src/Ref.js +13 -0
  107. package/dist/src/Result.d.ts +421 -0
  108. package/dist/src/Result.d.ts.map +1 -0
  109. package/dist/src/Result.js +357 -0
  110. package/dist/src/Skiplist.d.ts +23 -0
  111. package/dist/src/Skiplist.d.ts.map +1 -0
  112. package/dist/src/Skiplist.js +58 -0
  113. package/dist/src/Sqlite.d.ts +116 -52
  114. package/dist/src/Sqlite.d.ts.map +1 -1
  115. package/dist/src/Sqlite.js +183 -67
  116. package/dist/src/Store.d.ts +45 -8
  117. package/dist/src/Store.d.ts.map +1 -1
  118. package/dist/src/Store.js +33 -17
  119. package/dist/src/String.d.ts +2 -0
  120. package/dist/src/String.d.ts.map +1 -0
  121. package/dist/src/String.js +14 -0
  122. package/dist/src/Time.d.ts +20 -0
  123. package/dist/src/Time.d.ts.map +1 -0
  124. package/dist/src/Time.js +25 -0
  125. package/dist/src/Type.d.ts +1937 -0
  126. package/dist/src/Type.d.ts.map +1 -0
  127. package/dist/src/Type.js +2002 -0
  128. package/dist/src/Types.d.ts +188 -0
  129. package/dist/src/Types.d.ts.map +1 -0
  130. package/dist/src/Types.js +6 -0
  131. package/dist/src/WebSocket.d.ts +112 -0
  132. package/dist/src/WebSocket.d.ts.map +1 -0
  133. package/dist/src/WebSocket.js +139 -0
  134. package/dist/src/Worker.d.ts +44 -0
  135. package/dist/src/Worker.d.ts.map +1 -0
  136. package/dist/src/Worker.js +66 -0
  137. package/dist/src/index.d.ts +24 -11
  138. package/dist/src/index.d.ts.map +1 -1
  139. package/dist/src/index.js +24 -11
  140. package/package.json +29 -38
  141. package/src/Array.ts +39 -0
  142. package/src/Assert.ts +116 -0
  143. package/src/BigInt.ts +29 -0
  144. package/src/Buffer.ts +175 -0
  145. package/src/Callbacks.ts +43 -0
  146. package/src/Console.ts +159 -0
  147. package/src/Crypto.ts +169 -115
  148. package/src/Eq.ts +204 -0
  149. package/src/Error.ts +57 -20
  150. package/src/Evolu/Config.ts +83 -0
  151. package/src/Evolu/Db.ts +1275 -0
  152. package/src/Evolu/Diff.ts +142 -0
  153. package/src/Evolu/Evolu.ts +947 -0
  154. package/src/Evolu/Internal.ts +26 -0
  155. package/src/Evolu/Kysely.ts +38 -0
  156. package/src/Evolu/Owner.ts +296 -0
  157. package/src/Evolu/Platform.ts +27 -0
  158. package/src/Evolu/Protocol.ts +1857 -0
  159. package/src/Evolu/Public.ts +43 -0
  160. package/src/Evolu/PublicKysely.ts +240 -0
  161. package/src/Evolu/Query.ts +167 -0
  162. package/src/Evolu/Relay.ts +142 -0
  163. package/src/Evolu/Schema.ts +417 -0
  164. package/src/Evolu/Storage.ts +1281 -0
  165. package/src/Evolu/Sync.ts +105 -0
  166. package/src/Evolu/Timestamp.ts +311 -0
  167. package/src/Function.ts +58 -0
  168. package/src/ManyToManyMap.ts +140 -0
  169. package/src/NanoId.ts +39 -0
  170. package/src/Number.ts +90 -0
  171. package/src/Object.ts +64 -0
  172. package/src/Order.ts +113 -0
  173. package/src/Promise.ts +295 -0
  174. package/src/Random.ts +68 -0
  175. package/src/Ref.ts +63 -0
  176. package/src/Result.ts +453 -0
  177. package/src/Skiplist.ts +102 -0
  178. package/src/Sqlite.ts +366 -153
  179. package/src/Store.ts +79 -36
  180. package/src/String.ts +10 -0
  181. package/src/Time.ts +36 -0
  182. package/src/Type.ts +3978 -0
  183. package/src/Types.ts +209 -0
  184. package/src/WebSocket.ts +273 -0
  185. package/src/Worker.ts +129 -0
  186. package/src/index.ts +24 -11
  187. package/dist/src/Config.d.ts +0 -56
  188. package/dist/src/Config.d.ts.map +0 -1
  189. package/dist/src/Config.js +0 -39
  190. package/dist/src/Crdt.d.ts +0 -89
  191. package/dist/src/Crdt.d.ts.map +0 -1
  192. package/dist/src/Crdt.js +0 -181
  193. package/dist/src/Db.d.ts +0 -107
  194. package/dist/src/Db.d.ts.map +0 -1
  195. package/dist/src/Db.js +0 -443
  196. package/dist/src/Diff.d.ts +0 -27
  197. package/dist/src/Diff.d.ts.map +0 -1
  198. package/dist/src/Diff.js +0 -84
  199. package/dist/src/Evolu.d.ts +0 -426
  200. package/dist/src/Evolu.d.ts.map +0 -1
  201. package/dist/src/Evolu.js +0 -333
  202. package/dist/src/Model.d.ts +0 -141
  203. package/dist/src/Model.d.ts.map +0 -1
  204. package/dist/src/Model.js +0 -125
  205. package/dist/src/Murmurhash.d.ts +0 -2
  206. package/dist/src/Murmurhash.d.ts.map +0 -1
  207. package/dist/src/Murmurhash.js +0 -60
  208. package/dist/src/Owner.d.ts +0 -33
  209. package/dist/src/Owner.d.ts.map +0 -1
  210. package/dist/src/Owner.js +0 -26
  211. package/dist/src/Platform.d.ts +0 -37
  212. package/dist/src/Platform.d.ts.map +0 -1
  213. package/dist/src/Platform.js +0 -11
  214. package/dist/src/Protobuf.d.ts +0 -81
  215. package/dist/src/Protobuf.d.ts.map +0 -1
  216. package/dist/src/Protobuf.js +0 -92
  217. package/dist/src/Public.d.ts +0 -13
  218. package/dist/src/Public.d.ts.map +0 -1
  219. package/dist/src/Public.js +0 -6
  220. package/dist/src/Socket.d.ts +0 -8
  221. package/dist/src/Socket.d.ts.map +0 -1
  222. package/dist/src/Socket.js +0 -51
  223. package/dist/src/Sql.d.ts +0 -12
  224. package/dist/src/Sql.d.ts.map +0 -1
  225. package/dist/src/Sql.js +0 -30
  226. package/dist/src/Sync.d.ts +0 -70
  227. package/dist/src/Sync.d.ts.map +0 -1
  228. package/dist/src/Sync.js +0 -127
  229. package/src/Config.ts +0 -119
  230. package/src/Crdt.ts +0 -361
  231. package/src/Db.ts +0 -955
  232. package/src/Diff.ts +0 -114
  233. package/src/Evolu.ts +0 -1016
  234. package/src/Model.ts +0 -233
  235. package/src/Murmurhash.ts +0 -70
  236. package/src/Owner.ts +0 -69
  237. package/src/Platform.ts +0 -47
  238. package/src/Protobuf.ts +0 -155
  239. package/src/Public.ts +0 -12
  240. package/src/Socket.ts +0 -83
  241. package/src/Sql.ts +0 -41
  242. package/src/Sync.ts +0 -315
@@ -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
- * UnexpectedError represents errors that can occur unexpectedly anywhere, even
6
- * in third-party libraries, because Evolu uses Effect to track all errors.
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 UnexpectedError {
9
- readonly _tag: "UnexpectedError";
13
+ export interface TransferableError {
14
+ readonly type: "TransferableError";
10
15
  readonly error: unknown;
11
16
  }
12
- export declare const makeUnexpectedError: (error: unknown) => UnexpectedError;
13
- /** Error isn't a structured cloneable object. */
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
@@ -1 +1 @@
1
- {"version":3,"file":"Error.d.ts","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,mBAAmB,UAAW,OAAO,KAAG,eAGnD,CAAC;AAEH,iDAAiD;AACjD,eAAO,MAAM,uBAAuB,UAAW,OAAO,KAAG,OAQxD,CAAC"}
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
- export const makeUnexpectedError = (error) => ({
2
- _tag: "UnexpectedError",
3
- error,
4
- });
5
- /** Error isn't a structured cloneable object. */
6
- export const ensureTransferableError = (error) => {
7
- if (error instanceof Error)
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
- message: error.message,
10
- name: error.name,
11
- stack: error.stack,
19
+ type: "TransferableError",
20
+ error: convertError(error),
12
21
  };
13
- return error;
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":"AAAA,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EAEpB,2BAA2B,EAE5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAa,GAAG,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAW,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAEL,qBAAqB,EAErB,OAAO,EAEP,SAAS,EACT,WAAW,EAEX,SAAS,EAEV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAU,UAAU,EAAU,MAAM,YAAY,CAAC;AACtE,OAAO,EAEL,MAAM,EAEP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAe,YAAY,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EACL,QAAQ,EAGR,QAAQ,EAET,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,YAAY,EAGZ,WAAW,EAGX,QAAQ,EAKR,aAAa,EAEb,OAAO,EAER,MAAM,eAAe,CAAC;AACvB,OAAO,EAIL,KAAK,EAEN,MAAM,YAAY,CAAC;AACpB,OAAO,EAGL,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAuB,MAAM,WAAW,CAAC;AAC/D,OAAO,EAIL,SAAS,EAIT,cAAc,EAMf,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,OAAO;;;EAAwC,CAAC;AAC7D,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAE1C,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,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;CAC/C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAClD,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,CAAC;AAEN,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EACV,WAAW,GACX,iBAAiB,GACjB,cAAc,GACd,aAAa,GACb,2BAA2B,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACnD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,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,qBAAqB,GACtD,aAAa,GACb,UAAU,GACV,OAAO,GACP,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,oBAAoB,CAAC;AAkBvB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;CACrC;AAMD,eAAO,MAAM,yBAAyB,GACpC,cAAc,oBAAoB,KACjC,QA+TF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACrB,MAAM,SAAS,MACf,iBAAwB;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,KAAG,MAAM,CAC7D,QAAQ,EACR,WAAW,CA4DZ,CAAC;AAKJ,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAGD,eAAO,MAAM,aAAa,GACxB,MAAM,SAAS,KACd,MAAM,CAAC,UAAU,EAAE,WAAW,CAmBhC,CAAC;AAiEF,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,SAAS,aAAa,CAAC,MAAM,CAAC,KAC7B,OAcW,CAAC;AAiPf,eAAO,MAAM,uCAAuC,GACjD,MAAM,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,MAC/D,SAAS,WAAW,KAAG,MAAM,CAAC,IAAI,EAAE,WAAW,CAoB/C,CAAC;AAwCJ,eAAO,MAAM,sBAAsB,GAChC,MAAM,SAAS,MAEd,QAAQ,QAAQ,KACf,MAAM,CACP;IACE,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;CACnC,GAAG,IAAI,EACR,WAAW,CAmDZ,CAAC;AAuDJ,MAAM,WAAW,aAAc,SAAQ,iBAAiB,EAAE,OAAO;CAAG;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC"}