@evolu/common 3.1.5 → 3.1.7
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/Evolu.d.ts +13 -2
- package/dist/src/Evolu.d.ts.map +1 -1
- package/dist/src/Evolu.js +13 -1
- package/dist/src/Platform.d.ts +8 -0
- package/dist/src/Platform.d.ts.map +1 -1
- package/dist/src/Platform.js +1 -0
- package/package.json +2 -2
- package/src/Evolu.ts +17 -1
- package/src/Platform.ts +11 -0
package/dist/src/Evolu.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { DbWorker } from "./DbWorker.js";
|
|
|
9
9
|
import { EvoluError } from "./ErrorStore.js";
|
|
10
10
|
import { SqliteBoolean, SqliteDate } from "./Model.js";
|
|
11
11
|
import { Owner } from "./Owner.js";
|
|
12
|
-
import { AppState, FlushSync } from "./Platform.js";
|
|
12
|
+
import { AppState, FlushSync, PlatformName } from "./Platform.js";
|
|
13
13
|
import { Store } from "./Store.js";
|
|
14
14
|
import { SyncState } from "./SyncWorker.js";
|
|
15
15
|
export interface Evolu<S extends DatabaseSchema = DatabaseSchema> {
|
|
@@ -262,6 +262,7 @@ export interface Evolu<S extends DatabaseSchema = DatabaseSchema> {
|
|
|
262
262
|
* it.
|
|
263
263
|
*/
|
|
264
264
|
readonly sync: () => void;
|
|
265
|
+
readonly platformName: PlatformName;
|
|
265
266
|
}
|
|
266
267
|
export declare const Evolu: Context.Tag<Evolu<DatabaseSchema>, Evolu<DatabaseSchema>>;
|
|
267
268
|
type CreateQuery<S extends DatabaseSchema> = <R extends Row>(queryCallback: QueryCallback<S, R>) => Query<R>;
|
|
@@ -328,7 +329,17 @@ type Castable<T> = {
|
|
|
328
329
|
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];
|
|
329
330
|
};
|
|
330
331
|
/** EvoluCommonLive has only platform independent side-effects. */
|
|
331
|
-
export declare const EvoluCommonLive: Layer.Layer<Evolu<DatabaseSchema>, never, Config | FlushSync | AppState | DbWorker>;
|
|
332
|
+
export declare const EvoluCommonLive: Layer.Layer<Evolu<DatabaseSchema>, never, Config | PlatformName | FlushSync | AppState | DbWorker>;
|
|
333
|
+
/**
|
|
334
|
+
* The recipe for creating Evolu for a platform and UI library:
|
|
335
|
+
*
|
|
336
|
+
* 1. Export everything from "@evolu/common/public"
|
|
337
|
+
* 2. Export platform-specific parseMnemonic. If the platform supports lazy import,
|
|
338
|
+
* use it because dictionaries have a few hundred KBs.
|
|
339
|
+
* 3. Export `createEvolu` for a platform. The TS docs must be copy-pasted, and
|
|
340
|
+
* remember to update the import.
|
|
341
|
+
* 4. Export UI library API code.
|
|
342
|
+
*/
|
|
332
343
|
export declare const makeCreateEvolu: (EvoluLive: Layer.Layer<Evolu, never, Config>) => <From, To extends DatabaseSchema>(schema: S.Schema<To, From, never>, config?: Partial<Config>) => Evolu<To>;
|
|
333
344
|
export {};
|
|
334
345
|
//# sourceMappingURL=Evolu.d.ts.map
|
package/dist/src/Evolu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../src/Evolu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAK1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,EAAc,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,OAAO,EACP,KAAK,EACL,WAAW,EACX,+BAA+B,EAC/B,GAAG,EACH,SAAS,EAMV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAmC,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAQ,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../src/Evolu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAK1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,EAAc,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,OAAO,EACP,KAAK,EACL,WAAW,EACX,+BAA+B,EAC/B,GAAG,EACH,SAAS,EAMV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAmC,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAQ,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,KAAK,EAA0B,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IAC9D;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;IAE/D,8BAA8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;IAExD;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EACxD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KACZ,CAAC,GAAG,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAE7D;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEjD;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;IAE1D;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;IAEnD;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;IAE3D;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAElC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAEhC,wDAAwD;IACxD,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAEpD;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,EACxC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KACvB,IAAI,CAAC;IAEV;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAE1B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACrC;AAED,eAAO,MAAM,KAAK,2DAA+C,CAAC;AAElE,KAAK,WAAW,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,CAAC,SAAS,GAAG,EACzD,aAAa,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAC/B,KAAK,CAAC,CAAC,CAAC,CAAC;AAEd,KAAK,aAAa,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,GAAG,IAAI,CAC5D,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,KACzD,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAE5C,KAAK,WAAW,CAAC,CAAC,SAAS,cAAc,IAAI;IAC3C,QAAQ,EAAE,KAAK,IAAI,MAAM,CAAC,GAAG,gBAAgB,CAAC;QAC5C,QAAQ,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;KACtD,CAAC;CACH,CAAC;AAEF,KAAK,gBAAgB,CAAC,CAAC,IAAI;IACzB,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;CAC7D,CAAC;AAcF,eAAO,MAAM,eAAe,iEAUvB,CAAC;AAEN,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,GAAG,EAC1B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KACZ;QACH,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;KACzB,CAAC;IAEF,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,GAAG,EAC9B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,KACnB,IAAI,CAAC;IAEV;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,eAAO,MAAM,eAAe,+CAE3B,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG;IACpE,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAC9C,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,kBAAkB,wDAwD9B,CAAC;AAYF,KAAK,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7E,QAAA,MAAM,SAAS,mCAAuD,CAAC;AAsEvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IACnE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;IACtE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,OAAO,CAAC;CAC9C;AAED,eAAO,MAAM,iBAAiB,mDAE7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,kDAkCjC,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,MAAM,CACpE,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,MAAM,CACpE,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,MAAM,CAC5E,CAAC,EACD,gBAAgB,CACjB,CAAC;AAEF,MAAM,MAAM,MAAM,CAChB,CAAC,SAAS,cAAc,GAAG,cAAc,EACzC,IAAI,SAAS,QAAQ,GAAG,QAAQ,GAAG,gBAAgB,GAAG,QAAQ,IAC5D,CAAC,CAAC,SAAS,MAAM,CAAC,EACpB,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,MAAM,CAAC,QAAQ,CACrB,IAAI,SAAS,QAAQ,GACjB,kBAAkB,CAChB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,CACrE,GACD,IAAI,SAAS,QAAQ,GACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG;IAChE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CACzB,GACD,kBAAkB,CAChB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,CAC9D,CACR,EACD,UAAU,CAAC,EAAE,MAAM,IAAI,KACpB;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,MAAM,iFAAiD,CAAC;AAGrE,KAAK,kBAAkB,CACrB,CAAC,EACD,EAAE,SAAS,MAAM,CAAC,GAAG;KAClB,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAC9C,CAAC,MAAM,CAAC,CAAC,EACV,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IACvD;KAAG,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;CAAE,CAAC;AAE/B;;;;;;GAMG;AACH,KAAK,QAAQ,CAAC,CAAC,IAAI;IACjB,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,GAC/C,OAAO,GAAG,aAAa,GACvB,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,aAAa,GAC/B,IAAI,GAAG,OAAO,GAAG,aAAa,GAC9B,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,GACrB,IAAI,GAAG,UAAU,GACjB,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,UAAU,GAC5B,IAAI,GAAG,IAAI,GAAG,UAAU,GACxB,CAAC,CAAC,CAAC,CAAC;CACf,CAAC;AAmJF,kEAAkE;AAClE,eAAO,MAAM,eAAe,oGAE3B,CAAC;AAEF;;;;;;;;;GASG;AAEH,eAAO,MAAM,eAAe,cACd,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,mFAGlC,QAAQ,MAAM,CAAC,cAYzB,CAAC"}
|
package/dist/src/Evolu.js
CHANGED
|
@@ -17,7 +17,7 @@ import { applyPatches } from "./Diff.js";
|
|
|
17
17
|
import { makeErrorStore } from "./ErrorStore.js";
|
|
18
18
|
import { cast } from "./Model.js";
|
|
19
19
|
import { OnCompletes, OnCompletesLive } from "./OnCompletes.js";
|
|
20
|
-
import { AppState, FlushSync } from "./Platform.js";
|
|
20
|
+
import { AppState, FlushSync, PlatformName } from "./Platform.js";
|
|
21
21
|
import { makeStore } from "./Store.js";
|
|
22
22
|
export const Evolu = Context.GenericTag("@services/Evolu");
|
|
23
23
|
const kysely = new Kysely.Kysely({
|
|
@@ -206,6 +206,7 @@ const EvoluCommon = Layer.effect(Evolu, Effect.gen(function* (_) {
|
|
|
206
206
|
const ownerStore = yield* _(makeStore(null));
|
|
207
207
|
const loadingPromises = yield* _(LoadingPromises);
|
|
208
208
|
const appState = yield* _(AppState);
|
|
209
|
+
const platformName = yield* _(PlatformName);
|
|
209
210
|
dbWorker.onMessage = (output) => Match.value(output).pipe(Match.tagsExhaustive({
|
|
210
211
|
onError: ({ error }) => errorStore.setState(error),
|
|
211
212
|
onQuery,
|
|
@@ -250,10 +251,21 @@ const EvoluCommon = Layer.effect(Evolu, Effect.gen(function* (_) {
|
|
|
250
251
|
tables: schemaToTables(schema),
|
|
251
252
|
}),
|
|
252
253
|
sync,
|
|
254
|
+
platformName,
|
|
253
255
|
});
|
|
254
256
|
})).pipe(Layer.provide(Layer.mergeAll(LoadQueryLive, OnQueryLive, MutateLive)), Layer.provide(LoadingPromiseLive), Layer.provide(SubscribedQueriesLive), Layer.provide(Layer.merge(RowsStoreLive, OnCompletesLive)));
|
|
255
257
|
/** EvoluCommonLive has only platform independent side-effects. */
|
|
256
258
|
export const EvoluCommonLive = EvoluCommon.pipe(Layer.provide(Layer.merge(TimeLive, NanoIdLive)));
|
|
259
|
+
/**
|
|
260
|
+
* The recipe for creating Evolu for a platform and UI library:
|
|
261
|
+
*
|
|
262
|
+
* 1. Export everything from "@evolu/common/public"
|
|
263
|
+
* 2. Export platform-specific parseMnemonic. If the platform supports lazy import,
|
|
264
|
+
* use it because dictionaries have a few hundred KBs.
|
|
265
|
+
* 3. Export `createEvolu` for a platform. The TS docs must be copy-pasted, and
|
|
266
|
+
* remember to update the import.
|
|
267
|
+
* 4. Export UI library API code.
|
|
268
|
+
*/
|
|
257
269
|
export const makeCreateEvolu = (EvoluLive) => (schema, config) => {
|
|
258
270
|
// For https://nextjs.org/docs/architecture/fast-refresh etc.
|
|
259
271
|
const evolu = GlobalValue.globalValue("@evolu/common", () => Evolu.pipe(Effect.provide(EvoluLive), Effect.provide(ConfigLive(config)), Effect.runSync));
|
package/dist/src/Platform.d.ts
CHANGED
|
@@ -3,8 +3,16 @@ import * as Effect from "effect/Effect";
|
|
|
3
3
|
import * as Layer from "effect/Layer";
|
|
4
4
|
export type PlatformName = "server" | "web-with-opfs" | "web-without-opfs" | "react-native";
|
|
5
5
|
export declare const PlatformName: Context.Tag<PlatformName, PlatformName>;
|
|
6
|
+
/**
|
|
7
|
+
* FlushSync lets you force React to flush any updates inside the provided
|
|
8
|
+
* callback synchronously. This ensures that the DOM is updated immediately.
|
|
9
|
+
*
|
|
10
|
+
* It's required only for React DOM. The other UI libraries probably don't need
|
|
11
|
+
* that, so it should be a no-op.
|
|
12
|
+
*/
|
|
6
13
|
export type FlushSync = (callback: () => void) => void;
|
|
7
14
|
export declare const FlushSync: Context.Tag<FlushSync, FlushSync>;
|
|
15
|
+
export declare const FlushSyncDefaultLive: Layer.Layer<FlushSync, never, never>;
|
|
8
16
|
export interface SyncLock {
|
|
9
17
|
/**
|
|
10
18
|
* Try to acquire a sync lock. The caller must not call sync if a sync lock
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,eAAe,GACf,kBAAkB,GAClB,cAAc,CAAC;AAEnB,eAAO,MAAM,YAAY,yCAExB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAEvD,eAAO,MAAM,SAAS,mCAAuD,CAAC;AAE9E,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzC,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,QAAQ,iCAAqD,CAAC;AAE3E,MAAM,MAAM,KAAK,GAAG,CAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,KACb,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAEzC,eAAO,MAAM,KAAK,2BAA+C,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAED,eAAO,MAAM,SAAS,kCAgBrB,CAAC;AAEF,UAAU,cAAc;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,QAAQ,iCAAqD,CAAC;AAE3E,yCAAyC;AACzC,eAAO,MAAM,SAAS,SAYlB,CAAC"}
|
|
1
|
+
{"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,eAAe,GACf,kBAAkB,GAClB,cAAc,CAAC;AAEnB,eAAO,MAAM,YAAY,yCAExB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAEvD,eAAO,MAAM,SAAS,mCAAuD,CAAC;AAE9E,eAAO,MAAM,oBAAoB,sCAEhC,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzC,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,QAAQ,iCAAqD,CAAC;AAE3E,MAAM,MAAM,KAAK,GAAG,CAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,KACb,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAEzC,eAAO,MAAM,KAAK,2BAA+C,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAED,eAAO,MAAM,SAAS,kCAgBrB,CAAC;AAEF,UAAU,cAAc;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,QAAQ,iCAAqD,CAAC;AAE3E,yCAAyC;AACzC,eAAO,MAAM,SAAS,SAYlB,CAAC"}
|
package/dist/src/Platform.js
CHANGED
|
@@ -3,6 +3,7 @@ import * as Effect from "effect/Effect";
|
|
|
3
3
|
import * as Layer from "effect/Layer";
|
|
4
4
|
export const PlatformName = Context.GenericTag("@services/PlatformName");
|
|
5
5
|
export const FlushSync = Context.GenericTag("@services/FlushSync");
|
|
6
|
+
export const FlushSyncDefaultLive = Layer.succeed(FlushSync, (callback) => callback());
|
|
6
7
|
export const SyncLock = Context.GenericTag("@services/SyncLock");
|
|
7
8
|
export const Fetch = Context.GenericTag("@services/Fetch");
|
|
8
9
|
export const FetchLive = Layer.succeed(Fetch, Fetch.of((url, body) => Effect.tryPromise({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evolu/common",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.7",
|
|
4
4
|
"description": "Local-first platform designed for privacy, ease of use, and no vendor lock-in to sync and backup people's lifetime data",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"evolu",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@protobuf-ts/protoc": "^2.9.3",
|
|
58
58
|
"array-shuffle": "^3.0.0",
|
|
59
59
|
"effect": "2.4.0",
|
|
60
|
-
"eslint": "^8.
|
|
60
|
+
"eslint": "^8.57.0",
|
|
61
61
|
"typescript": "^5.3.3",
|
|
62
62
|
"vitest": "^1.3.1",
|
|
63
63
|
"@evolu/tsconfig": "0.0.2",
|
package/src/Evolu.ts
CHANGED
|
@@ -32,7 +32,7 @@ import { EvoluError, makeErrorStore } from "./ErrorStore.js";
|
|
|
32
32
|
import { SqliteBoolean, SqliteDate, cast } from "./Model.js";
|
|
33
33
|
import { OnCompletes, OnCompletesLive } from "./OnCompletes.js";
|
|
34
34
|
import { Owner } from "./Owner.js";
|
|
35
|
-
import { AppState, FlushSync } from "./Platform.js";
|
|
35
|
+
import { AppState, FlushSync, PlatformName } from "./Platform.js";
|
|
36
36
|
import { SqliteQuery } from "./Sqlite.js";
|
|
37
37
|
import { Store, Unsubscribe, makeStore } from "./Store.js";
|
|
38
38
|
import { SyncState } from "./SyncWorker.js";
|
|
@@ -308,6 +308,8 @@ export interface Evolu<S extends DatabaseSchema = DatabaseSchema> {
|
|
|
308
308
|
* it.
|
|
309
309
|
*/
|
|
310
310
|
readonly sync: () => void;
|
|
311
|
+
|
|
312
|
+
readonly platformName: PlatformName;
|
|
311
313
|
}
|
|
312
314
|
|
|
313
315
|
export const Evolu = Context.GenericTag<Evolu>("@services/Evolu");
|
|
@@ -703,6 +705,7 @@ const EvoluCommon = Layer.effect(
|
|
|
703
705
|
const ownerStore = yield* _(makeStore<Owner | null>(null));
|
|
704
706
|
const loadingPromises = yield* _(LoadingPromises);
|
|
705
707
|
const appState = yield* _(AppState);
|
|
708
|
+
const platformName = yield* _(PlatformName);
|
|
706
709
|
|
|
707
710
|
dbWorker.onMessage = (output): void =>
|
|
708
711
|
Match.value(output).pipe(
|
|
@@ -771,6 +774,8 @@ const EvoluCommon = Layer.effect(
|
|
|
771
774
|
}),
|
|
772
775
|
|
|
773
776
|
sync,
|
|
777
|
+
|
|
778
|
+
platformName,
|
|
774
779
|
});
|
|
775
780
|
}),
|
|
776
781
|
).pipe(
|
|
@@ -785,6 +790,17 @@ export const EvoluCommonLive = EvoluCommon.pipe(
|
|
|
785
790
|
Layer.provide(Layer.merge(TimeLive, NanoIdLive)),
|
|
786
791
|
);
|
|
787
792
|
|
|
793
|
+
/**
|
|
794
|
+
* The recipe for creating Evolu for a platform and UI library:
|
|
795
|
+
*
|
|
796
|
+
* 1. Export everything from "@evolu/common/public"
|
|
797
|
+
* 2. Export platform-specific parseMnemonic. If the platform supports lazy import,
|
|
798
|
+
* use it because dictionaries have a few hundred KBs.
|
|
799
|
+
* 3. Export `createEvolu` for a platform. The TS docs must be copy-pasted, and
|
|
800
|
+
* remember to update the import.
|
|
801
|
+
* 4. Export UI library API code.
|
|
802
|
+
*/
|
|
803
|
+
|
|
788
804
|
export const makeCreateEvolu =
|
|
789
805
|
(EvoluLive: Layer.Layer<Evolu, never, Config>) =>
|
|
790
806
|
<From, To extends DatabaseSchema>(
|
package/src/Platform.ts
CHANGED
|
@@ -12,10 +12,21 @@ export const PlatformName = Context.GenericTag<PlatformName>(
|
|
|
12
12
|
"@services/PlatformName",
|
|
13
13
|
);
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* FlushSync lets you force React to flush any updates inside the provided
|
|
17
|
+
* callback synchronously. This ensures that the DOM is updated immediately.
|
|
18
|
+
*
|
|
19
|
+
* It's required only for React DOM. The other UI libraries probably don't need
|
|
20
|
+
* that, so it should be a no-op.
|
|
21
|
+
*/
|
|
15
22
|
export type FlushSync = (callback: () => void) => void;
|
|
16
23
|
|
|
17
24
|
export const FlushSync = Context.GenericTag<FlushSync>("@services/FlushSync");
|
|
18
25
|
|
|
26
|
+
export const FlushSyncDefaultLive = Layer.succeed(FlushSync, (callback) =>
|
|
27
|
+
callback(),
|
|
28
|
+
);
|
|
29
|
+
|
|
19
30
|
export interface SyncLock {
|
|
20
31
|
/**
|
|
21
32
|
* Try to acquire a sync lock. The caller must not call sync if a sync lock
|