@evolu/common 1.0.0 → 1.0.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"DbWorker.d.ts","sourceRoot":"","sources":["../../src/DbWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DbWorker.d.ts","sourceRoot":"","sources":["../../src/DbWorker.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { hexToBytes } from "@noble/ciphers/utils";
2
- import { Context, Effect, Function, Layer, Match, Option, ReadonlyArray, Ref, pipe, } from "effect";
2
+ import { Context, Effect, Function, Layer, Option, ReadonlyArray, Ref, pipe, } from "effect";
3
3
  import { Config, ConfigLive } from "./Config.js";
4
4
  import { Bip39, NanoId } from "./Crypto.js";
5
5
  import { Owner, ensureSchema, lazyInit, someDefectToNoSuchTableOrColumnError, transaction, } from "./Db.js";
@@ -244,21 +244,29 @@ export const DbWorkerLive = Layer.effect(DbWorker, Effect.gen(function* (_) {
244
244
  const makeWriteForInitSuccess = (owner, config) => {
245
245
  let skipAllBecauseOfReset = false;
246
246
  const layer = Layer.mergeAll(ConfigLive(config), Layer.succeed(DbWorkerOnMessage, dbWorker.onMessage), Layer.succeed(Owner, owner), Layer.succeed(SyncWorkerPostMessage, syncWorker.postMessage), Layer.succeed(RowsCacheRef, rowsCacheRef), TimeLive);
247
+ const mapInputToEffect = (input) => {
248
+ switch (input._tag) {
249
+ case "init":
250
+ return makeUnexpectedError(new Error("init must be called once"));
251
+ case "query":
252
+ return query(input);
253
+ case "mutate":
254
+ return mutate(input);
255
+ case "sync":
256
+ return sync(input);
257
+ case "reset":
258
+ skipAllBecauseOfReset = true;
259
+ return reset(input);
260
+ case "ensureSchema":
261
+ return ensureSchema(input.tables);
262
+ case "SyncWorkerOutputSyncResponse":
263
+ return handleSyncResponse(input);
264
+ }
265
+ };
247
266
  return (input) => {
248
267
  if (skipAllBecauseOfReset)
249
268
  return Promise.resolve(undefined);
250
- return Match.value(input).pipe(Match.tagsExhaustive({
251
- init: () => makeUnexpectedError(new Error("init must be called once")),
252
- query,
253
- mutate,
254
- sync,
255
- reset: (input) => {
256
- skipAllBecauseOfReset = true;
257
- return reset(input);
258
- },
259
- ensureSchema: (input) => ensureSchema(input.tables),
260
- SyncWorkerOutputSyncResponse: handleSyncResponse,
261
- }), Effect.provide(layer), run);
269
+ return mapInputToEffect(input).pipe(Effect.provide(layer), run);
262
270
  };
263
271
  };
264
272
  let write = (input) => {
package/dist/src/Diff.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Predicate } from "effect/index";
1
+ import { Predicate } from "effect";
2
2
  export const applyPatches = (patches) => (current) => patches.reduce((a, patch) => {
3
3
  switch (patch.op) {
4
4
  case "replaceAll":
@@ -1 +1 @@
1
- {"version":3,"file":"SyncWorker.d.ts","sourceRoot":"","sources":["../../src/SyncWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SyncWorker.d.ts","sourceRoot":"","sources":["../../src/SyncWorker.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { concatBytes } from "@noble/ciphers/utils";
2
2
  import { BinaryReader, BinaryWriter } from "@protobuf-ts/runtime";
3
- import { Context, Effect, Function, Layer, Match, Option, Predicate, ReadonlyArray, absurd, identity, } from "effect";
3
+ import { Context, Effect, Function, Layer, Option, Predicate, ReadonlyArray, absurd, identity, } from "effect";
4
4
  import { SecretBox } from "./Crypto.js";
5
5
  import { makeUnexpectedError } from "./Errors.js";
6
6
  import { merkleTreeToString, unsafeMerkleTreeFromString, } from "./MerkleTree.js";
@@ -122,11 +122,16 @@ export const SyncWorkerLive = Layer.effect(SyncWorker, Effect.gen(function* (_)
122
122
  const onError = (error) => Effect.sync(() => {
123
123
  syncWorker.onMessage(error);
124
124
  });
125
+ const mapInputToEffect = (input) => {
126
+ switch (input._tag) {
127
+ case "sync":
128
+ return sync(input);
129
+ case "syncCompleted":
130
+ return syncLock.release;
131
+ }
132
+ };
125
133
  const postMessage = (input) => {
126
- void Match.value(input).pipe(Match.tagsExhaustive({
127
- sync,
128
- syncCompleted: () => syncLock.release,
129
- }), Effect.catchAllDefect(makeUnexpectedError), Effect.catchAll(onError), Effect.provideService(SyncLock, syncLock), Effect.provideService(Fetch, fetch), Effect.provideService(SecretBox, secretBox), Effect.provideService(SyncWorkerOnMessage, syncWorker.onMessage), Effect.runPromise);
134
+ void mapInputToEffect(input).pipe(Effect.catchAllDefect(makeUnexpectedError), Effect.catchAll(onError), Effect.provideService(SyncLock, syncLock), Effect.provideService(Fetch, fetch), Effect.provideService(SecretBox, secretBox), Effect.provideService(SyncWorkerOnMessage, syncWorker.onMessage), Effect.runPromise);
130
135
  };
131
136
  const syncWorker = {
132
137
  postMessage,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evolu/common",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
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",
@@ -42,20 +42,20 @@
42
42
  "nanoid": "^5.0.1"
43
43
  },
44
44
  "devDependencies": {
45
- "@effect/schema": "^0.37.1",
45
+ "@effect/schema": "^0.39.2",
46
46
  "@protobuf-ts/plugin": "^2.9.1",
47
47
  "@protobuf-ts/protoc": "^2.9.1",
48
48
  "array-shuffle": "^3.0.0",
49
- "effect": "2.0.0-next.36",
49
+ "effect": "2.0.0-next.39",
50
50
  "eslint": "^8.50.0",
51
51
  "typescript": "^5.2.2",
52
- "vitest": "^0.34.5",
52
+ "vitest": "^0.34.6",
53
53
  "@evolu/tsconfig": "0.0.2",
54
54
  "eslint-config-evolu": "0.0.2"
55
55
  },
56
56
  "peerDependencies": {
57
- "@effect/schema": "^0.37.1",
58
- "effect": "2.0.0-next.36"
57
+ "@effect/schema": "^0.39.2",
58
+ "effect": "2.0.0-next.39"
59
59
  },
60
60
  "publishConfig": {
61
61
  "access": "public"
package/src/DbWorker.ts CHANGED
@@ -5,7 +5,6 @@ import {
5
5
  Effect,
6
6
  Function,
7
7
  Layer,
8
- Match,
9
8
  Option,
10
9
  ReadonlyArray,
11
10
  ReadonlyRecord,
@@ -25,7 +24,7 @@ import {
25
24
  transaction,
26
25
  } from "./Db.js";
27
26
  import { QueryPatches, makePatches } from "./Diff.js";
28
- import { EvoluError, makeUnexpectedError } from "./Errors.js";
27
+ import { EvoluError, UnexpectedError, makeUnexpectedError } from "./Errors.js";
29
28
  import {
30
29
  MerkleTree,
31
30
  diffMerkleTrees,
@@ -631,26 +630,46 @@ export const DbWorkerLive = Layer.effect(
631
630
  TimeLive,
632
631
  );
633
632
 
633
+ const mapInputToEffect = (
634
+ input: DbWorkerInput,
635
+ ): Effect.Effect<
636
+ | Sqlite
637
+ | RowsCacheRef
638
+ | DbWorkerOnMessage
639
+ | Owner
640
+ | Time
641
+ | Config
642
+ | SyncWorkerPostMessage
643
+ | Bip39
644
+ | NanoId,
645
+ | UnexpectedError
646
+ | TimestampDriftError
647
+ | TimestampCounterOverflowError
648
+ | TimestampError,
649
+ void
650
+ > => {
651
+ switch (input._tag) {
652
+ case "init":
653
+ return makeUnexpectedError(new Error("init must be called once"));
654
+ case "query":
655
+ return query(input);
656
+ case "mutate":
657
+ return mutate(input);
658
+ case "sync":
659
+ return sync(input);
660
+ case "reset":
661
+ skipAllBecauseOfReset = true;
662
+ return reset(input);
663
+ case "ensureSchema":
664
+ return ensureSchema(input.tables);
665
+ case "SyncWorkerOutputSyncResponse":
666
+ return handleSyncResponse(input);
667
+ }
668
+ };
669
+
634
670
  return (input) => {
635
671
  if (skipAllBecauseOfReset) return Promise.resolve(undefined);
636
-
637
- return Match.value(input).pipe(
638
- Match.tagsExhaustive({
639
- init: () =>
640
- makeUnexpectedError(new Error("init must be called once")),
641
- query,
642
- mutate,
643
- sync,
644
- reset: (input) => {
645
- skipAllBecauseOfReset = true;
646
- return reset(input);
647
- },
648
- ensureSchema: (input) => ensureSchema(input.tables),
649
- SyncWorkerOutputSyncResponse: handleSyncResponse,
650
- }),
651
- Effect.provide(layer),
652
- run,
653
- );
672
+ return mapInputToEffect(input).pipe(Effect.provide(layer), run);
654
673
  };
655
674
  };
656
675
 
package/src/Diff.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Predicate } from "effect/index";
1
+ import { Predicate } from "effect";
2
2
  import { Query, Row, Value } from "./Sqlite.js";
3
3
 
4
4
  export interface QueryPatches {
package/src/SyncWorker.ts CHANGED
@@ -5,7 +5,6 @@ import {
5
5
  Effect,
6
6
  Function,
7
7
  Layer,
8
- Match,
9
8
  Option,
10
9
  Predicate,
11
10
  ReadonlyArray,
@@ -318,12 +317,23 @@ export const SyncWorkerLive = Layer.effect(
318
317
  syncWorker.onMessage(error);
319
318
  });
320
319
 
320
+ const mapInputToEffect = (
321
+ input: SyncWorkerInput,
322
+ ): Effect.Effect<
323
+ SyncLock | SyncWorkerOnMessage | Fetch | SecretBox,
324
+ never,
325
+ void
326
+ > => {
327
+ switch (input._tag) {
328
+ case "sync":
329
+ return sync(input);
330
+ case "syncCompleted":
331
+ return syncLock.release;
332
+ }
333
+ };
334
+
321
335
  const postMessage: SyncWorker["postMessage"] = (input) => {
322
- void Match.value(input).pipe(
323
- Match.tagsExhaustive({
324
- sync,
325
- syncCompleted: () => syncLock.release,
326
- }),
336
+ void mapInputToEffect(input).pipe(
327
337
  Effect.catchAllDefect(makeUnexpectedError),
328
338
  Effect.catchAll(onError),
329
339
  Effect.provideService(SyncLock, syncLock),