@evolu/common 1.0.17 → 2.0.1

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 (75) hide show
  1. package/README.md +7 -7
  2. package/dist/src/Config.d.ts +4 -6
  3. package/dist/src/Config.d.ts.map +1 -1
  4. package/dist/src/Config.js +1 -1
  5. package/dist/src/Crdt.d.ts +15 -9
  6. package/dist/src/Crdt.d.ts.map +1 -1
  7. package/dist/src/Crdt.js +15 -14
  8. package/dist/src/Crypto.d.ts +7 -13
  9. package/dist/src/Crypto.d.ts.map +1 -1
  10. package/dist/src/Crypto.js +7 -9
  11. package/dist/src/Db.d.ts +36 -70
  12. package/dist/src/Db.d.ts.map +1 -1
  13. package/dist/src/Db.js +45 -51
  14. package/dist/src/DbWorker.d.ts +13 -14
  15. package/dist/src/DbWorker.d.ts.map +1 -1
  16. package/dist/src/DbWorker.js +56 -57
  17. package/dist/src/Diff.d.ts +3 -1
  18. package/dist/src/Diff.d.ts.map +1 -1
  19. package/dist/src/Diff.js +3 -7
  20. package/dist/src/{Errors.d.ts → ErrorStore.d.ts} +14 -7
  21. package/dist/src/ErrorStore.d.ts.map +1 -0
  22. package/dist/src/{Errors.js → ErrorStore.js} +2 -0
  23. package/dist/src/Evolu.d.ts +316 -58
  24. package/dist/src/Evolu.d.ts.map +1 -1
  25. package/dist/src/Evolu.js +199 -185
  26. package/dist/src/Model.d.ts +47 -57
  27. package/dist/src/Model.d.ts.map +1 -1
  28. package/dist/src/Model.js +30 -35
  29. package/dist/src/OnCompletes.d.ts +11 -0
  30. package/dist/src/OnCompletes.d.ts.map +1 -0
  31. package/dist/src/OnCompletes.js +21 -0
  32. package/dist/src/Owner.d.ts +31 -0
  33. package/dist/src/Owner.d.ts.map +1 -0
  34. package/dist/src/Owner.js +20 -0
  35. package/dist/src/Platform.d.ts +16 -12
  36. package/dist/src/Platform.d.ts.map +1 -1
  37. package/dist/src/Platform.js +18 -12
  38. package/dist/src/Protobuf.d.ts +25 -73
  39. package/dist/src/Protobuf.d.ts.map +1 -1
  40. package/dist/src/Protobuf.js +4 -12
  41. package/dist/src/Public.d.ts +5 -3
  42. package/dist/src/Public.d.ts.map +1 -1
  43. package/dist/src/Public.js +1 -0
  44. package/dist/src/Sqlite.d.ts +8 -11
  45. package/dist/src/Sqlite.d.ts.map +1 -1
  46. package/dist/src/Sqlite.js +7 -7
  47. package/dist/src/Store.d.ts +6 -5
  48. package/dist/src/Store.d.ts.map +1 -1
  49. package/dist/src/Store.js +21 -16
  50. package/dist/src/SyncWorker.d.ts +8 -2
  51. package/dist/src/SyncWorker.d.ts.map +1 -1
  52. package/dist/src/SyncWorker.js +12 -19
  53. package/dist/src/index.d.ts +6 -2
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/index.js +6 -2
  56. package/package.json +23 -13
  57. package/src/Config.ts +7 -7
  58. package/src/Crdt.ts +29 -26
  59. package/src/Crypto.ts +14 -19
  60. package/src/Db.ts +113 -166
  61. package/src/DbWorker.ts +110 -140
  62. package/src/Diff.ts +5 -7
  63. package/src/{Errors.ts → ErrorStore.ts} +17 -8
  64. package/src/Evolu.ts +682 -442
  65. package/src/Model.ts +60 -85
  66. package/src/OnCompletes.ts +46 -0
  67. package/src/Owner.ts +65 -0
  68. package/src/Platform.ts +38 -25
  69. package/src/Protobuf.ts +25 -73
  70. package/src/Public.ts +5 -3
  71. package/src/Sqlite.ts +13 -24
  72. package/src/Store.ts +36 -24
  73. package/src/SyncWorker.ts +30 -38
  74. package/src/index.ts +6 -2
  75. package/dist/src/Errors.d.ts.map +0 -1
@@ -1,71 +1,329 @@
1
- import { Context, Either, Layer } from "effect";
2
- import { Simplify } from "kysely";
1
+ import * as S from "@effect/schema/Schema";
2
+ import { Context, Layer } from "effect";
3
+ import * as Kysely from "kysely";
3
4
  import { Config } from "./Config.js";
4
- import { Time } from "./Crdt.js";
5
- import { Bip39, NanoId } from "./Crypto.js";
6
- import { CommonColumns, CreateQuery, Owner, Schema, Tables } from "./Db.js";
7
- import { DbWorker, DbWorkerOutputOnQuery } from "./DbWorker.js";
8
- import { EvoluError } from "./Errors.js";
9
- import { CastableForMutate } from "./Model.js";
5
+ import { Mnemonic } from "./Crypto.js";
6
+ import { Queries, Query, QueryResult, QueryResultsPromisesFromQueries, Row, RowsStore, Schema } from "./Db.js";
7
+ import { DbWorker } from "./DbWorker.js";
8
+ import { EvoluError } from "./ErrorStore.js";
9
+ import { SqliteBoolean, SqliteDate } from "./Model.js";
10
+ import { Owner } from "./Owner.js";
10
11
  import { AppState, FlushSync } from "./Platform.js";
11
- import { Query, Row } from "./Sqlite.js";
12
- import { Store, StoreListener, StoreUnsubscribe } from "./Store.js";
12
+ import { Store } from "./Store.js";
13
13
  import { SyncState } from "./SyncWorker.js";
14
- export interface Evolu<S extends Schema> {
15
- readonly subscribeError: ErrorStore["subscribe"];
16
- readonly getError: ErrorStore["getState"];
17
- readonly subscribeOwner: OwnerStore["subscribe"];
18
- readonly getOwner: OwnerStore["getState"];
19
- readonly subscribeQuery: QueryStore["subscribe"];
20
- readonly getQuery: QueryStore["getState"];
21
- readonly createQuery: CreateQuery<S>;
22
- readonly loadQuery: QueryStore["loadQuery"];
23
- readonly subscribeSyncState: (listener: StoreListener) => StoreUnsubscribe;
24
- readonly getSyncState: () => SyncState;
25
- readonly create: Create<S>;
26
- readonly update: Update<S>;
27
- readonly ownerActions: OwnerActions;
28
- readonly ensureSchema: (tables: Tables) => void;
14
+ export interface Evolu<T extends Schema = Schema> {
15
+ /**
16
+ * Subscribe to {@link EvoluError} changes.
17
+ *
18
+ * ### Example
19
+ *
20
+ * ```ts
21
+ * const unsubscribe = evolu.subscribeError(() => {
22
+ * const error = evolu.getError();
23
+ * console.log(error);
24
+ * });
25
+ * ```
26
+ */
27
+ readonly subscribeError: Store<EvoluError | null>["subscribe"];
28
+ /** Get {@link EvoluError}. */
29
+ readonly getError: Store<EvoluError | null>["getState"];
30
+ /**
31
+ * Create type-safe SQL {@link Query}.
32
+ *
33
+ * Evolu uses Kysely - the type-safe SQL query builder for TypeScript. See
34
+ * https://kysely.dev.
35
+ *
36
+ * For mutations, use {@link create} and {@link update}.
37
+ *
38
+ * ### Example
39
+ *
40
+ * ```ts
41
+ * const allTodos = evolu.createQuery((db) =>
42
+ * db.selectFrom("todo").selectAll(),
43
+ * );
44
+ *
45
+ * const todoById = (id: TodoId) =>
46
+ * evolu.createQuery((db) =>
47
+ * db.selectFrom("todo").selectAll().where("id", "=", id),
48
+ * );
49
+ * ```
50
+ */
51
+ readonly createQuery: CreateQuery<T>;
52
+ /**
53
+ * Load {@link Query} and return a promise with {@link QueryResult}.
54
+ *
55
+ * A returned promise always resolves successfully because there is no reason
56
+ * why loading should fail. All data are local, and the query is typed. A
57
+ * serious unexpected Evolu error shall be handled with
58
+ * {@link subscribeError}.
59
+ *
60
+ * Loading is batched, and returned promises are cached, so there is no need
61
+ * for an additional cache. Evolu's internal cache is invalidated on
62
+ * mutation.
63
+ *
64
+ * The returned promise is enriched with special status and value properties
65
+ * for the upcoming React `use` Hook, but other UI libraries can also leverage
66
+ * them. Speaking of React, there are two essential React Suspense-related
67
+ * patterns that every developer should be aware of—passing promises to
68
+ * children and caching over mutations.
69
+ *
70
+ * With promises passed to children, we can load a query as soon as possible,
71
+ * but we don't have to use the returned promise immediately. That's useful
72
+ * for prefetching, which is generally not necessary for local-first apps but
73
+ * can be if a query takes a long time to load.
74
+ *
75
+ * Caching over mutation is a pattern that every developer should know. As we
76
+ * said, Evolu caches promise until a mutation happens. A query loaded after
77
+ * that will return a new pending promise. That's okay for general usage but
78
+ * not for UI with React Suspense because a mutation would suspend rerendered
79
+ * queries on a page, and that's not a good UX.
80
+ *
81
+ * We call this pattern "caching over mutation" because it has no globally
82
+ * accepted name yet. React RFC for React Cache does not exist yet.
83
+ *
84
+ * For better UX, a query must be subscribed for updates. This way, instead of
85
+ * Suspense flashes, the user sees new data immediately because Evolu replaces
86
+ * cached promises with fresh, already resolved new ones.
87
+ *
88
+ * If you are curious why Evolu does not do that for all queries by default,
89
+ * the answer is simple: performance. Tracking changes is costly and
90
+ * meaningful only for visible (hence subscribed) queries anyway. To subscribe
91
+ * to a query, use {@link subscribeQuery}.
92
+ *
93
+ * ### Example
94
+ *
95
+ * ```ts
96
+ * const allTodos = evolu.createQuery((db) =>
97
+ * db.selectFrom("todo").selectAll(),
98
+ * );
99
+ * evolu.loadQuery(allTodos).then(({ rows }) => {
100
+ * console.log(rows);
101
+ * });
102
+ * ```
103
+ */
104
+ readonly loadQuery: LoadQuery;
105
+ /**
106
+ * Load an array of {@link Query} queries and return an array of
107
+ * {@link QueryResult} promises. It's like `queries.map(loadQuery)` but with
108
+ * proper types for returned promises.
109
+ *
110
+ * ### Example
111
+ *
112
+ * ```ts
113
+ * evolu.loadQueries([allTodos, todoById(1)]);
114
+ * ```
115
+ */
116
+ readonly loadQueries: <R extends Row, Q extends Queries<R>>(queries: [...Q]) => [...QueryResultsPromisesFromQueries<Q>];
117
+ /**
118
+ * Subscribe to {@link Query} {@link QueryResult} changes.
119
+ *
120
+ * ### Example
121
+ *
122
+ * ```ts
123
+ * const unsubscribe = evolu.subscribeQuery(allTodos)(() => {
124
+ * const { rows } = evolu.getQuery(allTodos);
125
+ * });
126
+ * ```
127
+ */
128
+ readonly subscribeQuery: SubscribedQueries["subscribeQuery"];
129
+ /**
130
+ * Get {@link Query} {@link QueryResult}.
131
+ *
132
+ * ### Example
133
+ *
134
+ * ```ts
135
+ * const unsubscribe = evolu.subscribeQuery(allTodos)(() => {
136
+ * const { rows } = evolu.getQuery(allTodos);
137
+ * });
138
+ * ```
139
+ */
140
+ readonly getQuery: SubscribedQueries["getQuery"];
141
+ /**
142
+ * Subscribe to {@link Owner} changes.
143
+ *
144
+ * ### Example
145
+ *
146
+ * ```ts
147
+ * const unsubscribe = evolu.subscribeOwner(() => {
148
+ * const owner = evolu.getOwner();
149
+ * });
150
+ * ```
151
+ */
152
+ readonly subscribeOwner: Store<Owner | null>["subscribe"];
153
+ /**
154
+ * Get {@link Owner}.
155
+ *
156
+ * ### Example
157
+ *
158
+ * ```ts
159
+ * const unsubscribe = evolu.subscribeOwner(() => {
160
+ * const owner = evolu.getOwner();
161
+ * });
162
+ * ```
163
+ */
164
+ readonly getOwner: Store<Owner | null>["getState"];
165
+ /**
166
+ * Subscribe to {@link SyncState} changes.
167
+ *
168
+ * ### Example
169
+ *
170
+ * ```ts
171
+ * const unsubscribe = evolu.subscribeSyncState(() => {
172
+ * const syncState = evolu.getSyncState();
173
+ * });
174
+ * ```
175
+ */
176
+ readonly subscribeSyncState: Store<SyncState>["subscribe"];
177
+ /**
178
+ * Get {@link SyncState}.
179
+ *
180
+ * ### Example
181
+ *
182
+ * ```ts
183
+ * const unsubscribe = evolu.subscribeSyncState(() => {
184
+ * const syncState = evolu.getSyncState();
185
+ * });
186
+ * ```
187
+ */
188
+ readonly getSyncState: Store<SyncState>["getState"];
189
+ /**
190
+ * The function creates a row in the database and returns a new ID. The first
191
+ * argument is the table name, and the second is an object.
192
+ *
193
+ * The third optional argument, the onComplete callback, is generally
194
+ * unnecessary because creating a row cannot fail. Still, UI libraries can use
195
+ * it to ensure the DOM is updated if we want to manipulate it, for example,
196
+ * to focus an element.
197
+ *
198
+ * Evolu does not use SQL for mutations to ensure data can be safely and
199
+ * predictably merged without conflicts.
200
+ *
201
+ * Explicit mutations also allow Evolu to automatically add and update a few
202
+ * useful columns common to all tables. Those columns are: `createdAt`,
203
+ * `updatedAt`, and `isDeleted`.
204
+ *
205
+ * ### Example
206
+ *
207
+ * ```ts
208
+ * import * as S from "@effect/schema/Schema";
209
+ *
210
+ * // Evolu uses the Schema to enforce domain model.
211
+ * const title = S.parseSync(Evolu.NonEmptyString1000)("A title");
212
+ *
213
+ * const { id } = evolu.create("todo", { title }, () => {
214
+ * // onComplete callback
215
+ * });
216
+ * ```
217
+ */
218
+ create: Mutate<T, "create">;
219
+ /**
220
+ * The function updates a row in the database and returns the existing ID. The
221
+ * first argument is the table name, and the second is an object.
222
+ *
223
+ * The third optional argument, the onComplete callback, is generally
224
+ * unnecessary because creating a row cannot fail. Still, UI libraries can use
225
+ * it to ensure the DOM is updated if we want to manipulate it, for example,
226
+ * to focus an element.
227
+ *
228
+ * Evolu does not use SQL for mutations to ensure data can be safely and
229
+ * predictably merged without conflicts.
230
+ *
231
+ * Explicit mutations also allow Evolu to automatically add and update a few
232
+ * useful columns common to all tables. Those columns are: `createdAt`,
233
+ * `updatedAt`, and `isDeleted`.
234
+ *
235
+ * ### Example
236
+ *
237
+ * ```ts
238
+ * import * as S from "@effect/schema/Schema";
239
+ *
240
+ * // Evolu uses the Schema to enforce domain model.
241
+ * const title = S.parseSync(Evolu.NonEmptyString1000)("A title");
242
+ * evolu.update("todo", { id, title });
243
+ *
244
+ * // To delete a row, set `isDeleted` to true.
245
+ * evolu.update("todo", { id, isDeleted: true });
246
+ * ```
247
+ */
248
+ update: Mutate<T, "update">;
249
+ /**
250
+ * Delete {@link Owner} and all their data from the current device. After the
251
+ * deletion, Evolu will purge the application state. For browsers, this will
252
+ * reload all tabs using Evolu. For native apps, it will restart the app.
253
+ */
254
+ readonly resetOwner: () => void;
255
+ /** Restore {@link Owner} with all their synced data. */
256
+ readonly restoreOwner: (mnemonic: Mnemonic) => void;
257
+ /** Ensure tables and columns defined in {@link Schema} exist in the database. */
258
+ readonly ensureSchema: <From, To extends T>(schema: S.Schema<From, To>) => void;
259
+ }
260
+ export declare const Evolu: Context.Tag<Evolu<Schema>, Evolu<Schema>>;
261
+ type CreateQuery<S extends Schema> = <R extends Row>(queryCallback: QueryCallback<S, R>) => Query<R>;
262
+ type QueryCallback<S extends Schema, R extends Row> = (db: Pick<Kysely.Kysely<QuerySchema<S>>, "selectFrom" | "fn">) => Kysely.SelectQueryBuilder<any, any, R>;
263
+ type QuerySchema<S extends Schema> = {
264
+ readonly [Table in keyof S]: NullableExceptId<{
265
+ readonly [Column in keyof S[Table]]: S[Table][Column];
266
+ } & CommonColumns>;
267
+ };
268
+ type NullableExceptId<T> = {
269
+ readonly [K in keyof T]: K extends "id" ? T[K] : T[K] | null;
270
+ };
271
+ export interface CommonColumns {
272
+ readonly createdAt: SqliteDate;
273
+ readonly updatedAt: SqliteDate;
274
+ readonly isDeleted: SqliteBoolean;
275
+ }
276
+ export declare const makeCreateQuery: <S extends Schema = Schema>() => CreateQuery<S>;
277
+ export interface LoadingPromises {
278
+ readonly get: <R extends Row>(query: Query<R>) => {
279
+ readonly promise: LoadingPromise<R>;
280
+ readonly isNew: boolean;
281
+ };
282
+ readonly resolve: <R extends Row>(query: Query<R>, rows: ReadonlyArray<R>) => void;
283
+ /**
284
+ * Release all unsubscribed queries on mutation because only subscribed
285
+ * queries are automatically updated.
286
+ */
287
+ readonly release: () => void;
29
288
  }
30
- export declare const Evolu: <S extends Schema>() => Context.Tag<Evolu<S>, Evolu<S>>;
31
- type ErrorStore = Store<EvoluError | null>;
32
- type OwnerStore = Store<Owner | null>;
33
- interface QueryStore {
34
- readonly subscribe: (query: Query | null) => (listener: StoreListener) => StoreUnsubscribe;
35
- readonly getState: (query: Query | null) => ReadonlyArray<Row> | null;
36
- readonly loadQuery: (query: Query) => Promise<ReadonlyArray<Row>>;
37
- readonly onQuery: (output: DbWorkerOutputOnQuery) => void;
289
+ export declare const LoadingPromises: Context.Tag<LoadingPromises, LoadingPromises>;
290
+ export type LoadingPromise<R extends Row> = Promise<QueryResult<R>> & {
291
+ status?: "pending" | "fulfilled" | "rejected";
292
+ value?: QueryResult<R>;
293
+ reason?: unknown;
294
+ };
295
+ export declare const LoadingPromiseLive: Layer.Layer<SubscribedQueries, never, LoadingPromises>;
296
+ type LoadQuery = <R extends Row>(query: Query<R>) => Promise<QueryResult<R>>;
297
+ declare const LoadQuery: Context.Tag<LoadQuery, LoadQuery>;
298
+ export interface SubscribedQueries {
299
+ readonly subscribeQuery: (query: Query) => Store<Row>["subscribe"];
300
+ readonly getQuery: <R extends Row>(query: Query<R>) => QueryResult<R>;
301
+ readonly getSubscribedQueries: () => Queries;
38
302
  }
39
- declare const QueryStore: Context.Tag<QueryStore, QueryStore>;
40
- export type Create<S extends Schema> = <T extends keyof S>(table: T, values: Simplify<PartialOnlyForNullable<CastableForMutate<Omit<S[T], "id">>>>, onComplete?: () => void) => {
41
- readonly id: S[T]["id"];
303
+ export declare const SubscribedQueries: Context.Tag<SubscribedQueries, SubscribedQueries>;
304
+ export declare const SubscribedQueriesLive: Layer.Layer<RowsStore, never, SubscribedQueries>;
305
+ type Mutate<S extends Schema = Schema, Mode extends "create" | "update" = "update"> = <K extends keyof S>(table: K, values: Kysely.Simplify<Mode extends "create" ? PartialForNullable<Castable<Omit<S[K], "id">>> : Partial<Castable<Omit<S[K], "id"> & Pick<CommonColumns, "isDeleted">>> & {
306
+ readonly id: S[K]["id"];
307
+ }>, onComplete?: () => void) => {
308
+ readonly id: S[K]["id"];
42
309
  };
43
- type PartialOnlyForNullable<T, NK extends keyof T = {
310
+ declare const Mutate: Context.Tag<Mutate<Schema, "update">, Mutate<Schema, "update">>;
311
+ type PartialForNullable<T, NK extends keyof T = {
44
312
  [K in keyof T]: null extends T[K] ? K : never;
45
313
  }[keyof T], NP = Pick<T, Exclude<keyof T, NK>> & Partial<Pick<T, NK>>> = {
46
314
  [K in keyof NP]: NP[K];
47
315
  };
48
- export type Update<S extends Schema> = <T extends keyof S>(table: T, values: Simplify<Partial<CastableForMutate<Omit<S[T], "id"> & Pick<CommonColumns, "isDeleted">>> & {
49
- readonly id: S[T]["id"];
50
- }>, onComplete?: () => void) => {
51
- readonly id: S[T]["id"];
316
+ /**
317
+ * SQLite doesn't support Date nor Boolean types, so Evolu emulates them with
318
+ * {@link SqliteBoolean} and {@link SqliteDate}.
319
+ *
320
+ * For {@link SqliteBoolean}, you can use JavaScript boolean. For
321
+ * {@link SqliteDate}, you can use JavaScript Date.
322
+ */
323
+ type Castable<T> = {
324
+ readonly [K in keyof T]: T[K] extends SqliteBoolean ? boolean | SqliteBoolean : T[K] extends null | SqliteBoolean ? null | boolean | SqliteBoolean : T[K] extends SqliteDate ? Date | SqliteDate : T[K] extends null | SqliteDate ? null | Date | SqliteDate : T[K];
52
325
  };
53
- export interface OwnerActions {
54
- /**
55
- * Use `reset` to delete all local data from the current device.
56
- * After the deletion, Evolu reloads all browser tabs that use Evolu.
57
- */
58
- readonly reset: () => void;
59
- /**
60
- * Use `restore` to restore `Owner` with synced data on a different device.
61
- */
62
- readonly restore: (mnemonic: string) => Promise<Either.Either<RestoreOwnerError, void>>;
63
- }
64
- interface RestoreOwnerError {
65
- readonly _tag: "RestoreOwnerError";
66
- }
67
- export declare const loadingPromisesPromiseProp = "rows";
68
- export declare const EvoluLive: <S extends Schema>(tables: Tables) => Layer.Layer<Config | Bip39 | NanoId | Time | FlushSync | AppState | DbWorker, never, Evolu<S>>;
69
- export declare const makeEvoluForPlatform: <S extends Schema>(PlatformLayer: Layer.Layer<never, never, DbWorker | Bip39 | NanoId | FlushSync | AppState>, tables: Tables, config?: Partial<Config>) => Evolu<S>;
326
+ /** EvoluCommonLive has only platform independent side-effects. */
327
+ export declare const EvoluCommonLive: Layer.Layer<Config | FlushSync | AppState | DbWorker, never, Evolu<Schema>>;
70
328
  export {};
71
329
  //# sourceMappingURL=Evolu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../src/Evolu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../src/Evolu.ts"],"names":[],"mappings":"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"}