@evolu/common 1.0.10 → 1.0.12
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/Crdt.d.ts.map +1 -1
- package/dist/src/Crdt.js +0 -1
- package/dist/src/DbWorker.d.ts +2 -1
- package/dist/src/DbWorker.d.ts.map +1 -1
- package/dist/src/DbWorker.js +3 -3
- package/dist/src/Platform.d.ts +5 -0
- package/dist/src/Platform.d.ts.map +1 -1
- package/dist/src/Platform.js +7 -0
- package/dist/src/SyncWorker.d.ts +2 -1
- package/dist/src/SyncWorker.d.ts.map +1 -1
- package/dist/src/SyncWorker.js +4 -0
- package/package.json +2 -2
- package/src/Crdt.ts +0 -1
- package/src/DbWorker.ts +3 -1
- package/src/Platform.ts +10 -0
- package/src/SyncWorker.ts +10 -0
package/dist/src/Crdt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Crdt.d.ts","sourceRoot":"","sources":["../../src/Crdt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,KAAK,EACL,OAAO,EACP,MAAM,EAEN,KAAK,EAEL,MAAM,EAIP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQ7C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,4DAIlB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,aAAa,gCAEzB,CAAC;AAEF,eAAO,MAAM,OAAO,6DAGnB,CAAC;AACF,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC;AAIvD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAEtE,eAAO,MAAM,iBAAiB,MAAO,SAAS,KAAG,eAKjB,CAAC;
|
|
1
|
+
{"version":3,"file":"Crdt.d.ts","sourceRoot":"","sources":["../../src/Crdt.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Crdt.js
CHANGED
package/dist/src/DbWorker.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { QueryPatches } from "./Diff.js";
|
|
|
6
6
|
import { EvoluError } from "./Errors.js";
|
|
7
7
|
import { Id, SqliteDate } from "./Model.js";
|
|
8
8
|
import { Query, Row, Sqlite, Value } from "./Sqlite.js";
|
|
9
|
-
import { SyncState, SyncWorker, SyncWorkerOutputSyncResponse } from "./SyncWorker.js";
|
|
9
|
+
import { NewMessage, SyncState, SyncWorker, SyncWorkerOutputSyncResponse } from "./SyncWorker.js";
|
|
10
10
|
export interface DbWorker {
|
|
11
11
|
readonly postMessage: (input: DbWorkerInput) => void;
|
|
12
12
|
onMessage: (output: DbWorkerOutput) => void;
|
|
@@ -73,6 +73,7 @@ export interface MutateItem {
|
|
|
73
73
|
readonly onCompleteId: OnCompleteId | null;
|
|
74
74
|
}
|
|
75
75
|
export type RowsCacheMap = ReadonlyMap<Query, ReadonlyArray<Row>>;
|
|
76
|
+
export declare const mutateItemsToNewMessages: (items: readonly [MutateItem, ...MutateItem[]]) => readonly [NewMessage, ...NewMessage[]];
|
|
76
77
|
export declare const DbWorkerLive: Layer.Layer<Bip39 | NanoId | Sqlite | SyncWorker, never, DbWorker>;
|
|
77
78
|
export {};
|
|
78
79
|
//# sourceMappingURL=DbWorker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbWorker.d.ts","sourceRoot":"","sources":["../../src/DbWorker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,OAAO,EAGP,KAAK,EAEL,aAAa,EACb,cAAc,EAGf,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAc,MAAM,aAAa,CAAC;AAoBjD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,KAAK,EAGL,MAAM,EAKP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAe,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAwC,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,EAAE,EAAE,UAAU,EAAQ,MAAM,YAAY,CAAC;AAUlD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAwB,MAAM,aAAa,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"DbWorker.d.ts","sourceRoot":"","sources":["../../src/DbWorker.ts"],"names":[],"mappings":"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"}
|
package/dist/src/DbWorker.js
CHANGED
|
@@ -9,7 +9,7 @@ import { makeUnexpectedError } from "./Errors.js";
|
|
|
9
9
|
import { cast } from "./Model.js";
|
|
10
10
|
import { insertIntoMessagesIfNew, insertValueIntoTableRowColumn, selectLastTimestampForTableRowColumn, selectMessagesToSync, selectOwner, selectOwnerTimestampAndMerkleTree, updateOwnerTimestampAndMerkleTree, } from "./Sql.js";
|
|
11
11
|
import { Sqlite, queryObjectFromQuery } from "./Sqlite.js";
|
|
12
|
-
import { SyncWorker, SyncWorkerPostMessage, } from "./SyncWorker.js";
|
|
12
|
+
import { NewMessageEquivalence, SyncWorker, SyncWorkerPostMessage, } from "./SyncWorker.js";
|
|
13
13
|
export const DbWorker = Context.Tag("evolu/DbWorker");
|
|
14
14
|
const DbWorkerOnMessage = Context.Tag("evolu/DbWorkerOnMessage");
|
|
15
15
|
const init = (input) => Effect.gen(function* (_) {
|
|
@@ -41,7 +41,7 @@ const readTimestampAndMerkleTree = Sqlite.pipe(Effect.flatMap((sqlite) => sqlite
|
|
|
41
41
|
timestamp: unsafeTimestampFromString(timestamp),
|
|
42
42
|
merkleTree: merkleTree,
|
|
43
43
|
})));
|
|
44
|
-
const mutateItemsToNewMessages = (items) => pipe(items, ReadonlyArray.mapNonEmpty(({ id, isInsert, now, table, values }) => pipe(Object.entries(values), ReadonlyArray.filterMap(([key, value]) =>
|
|
44
|
+
export const mutateItemsToNewMessages = (items) => pipe(items, ReadonlyArray.mapNonEmpty(({ id, isInsert, now, table, values }) => pipe(Object.entries(values), ReadonlyArray.filterMap(([key, value]) =>
|
|
45
45
|
// The value can be undefined if exactOptionalPropertyTypes isn't true.
|
|
46
46
|
// Don't insert nulls because null is the default value.
|
|
47
47
|
value === undefined || (isInsert && value == null)
|
|
@@ -58,7 +58,7 @@ value === undefined || (isInsert && value == null)
|
|
|
58
58
|
row: id,
|
|
59
59
|
column: key,
|
|
60
60
|
value,
|
|
61
|
-
})))), ReadonlyArray.flattenNonEmpty);
|
|
61
|
+
})))), ReadonlyArray.flattenNonEmpty, ReadonlyArray.dedupeNonEmptyWith(NewMessageEquivalence));
|
|
62
62
|
const ensureSchemaByMessages = (messages) => Effect.gen(function* (_) {
|
|
63
63
|
const tablesMap = new Map();
|
|
64
64
|
messages.forEach((message) => {
|
package/dist/src/Platform.d.ts
CHANGED
|
@@ -26,4 +26,9 @@ export interface AppState {
|
|
|
26
26
|
readonly reset: Effect.Effect<never, never, void>;
|
|
27
27
|
}
|
|
28
28
|
export declare const AppState: Context.Tag<AppState, AppState>;
|
|
29
|
+
/**
|
|
30
|
+
* To detect whether DOM can be used.
|
|
31
|
+
* https://github.com/facebook/fbjs/blob/main/packages/fbjs/src/core/ExecutionEnvironment.js
|
|
32
|
+
*/
|
|
33
|
+
export declare const canUseDOM: boolean;
|
|
29
34
|
//# sourceMappingURL=Platform.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EACT,QAAQ,GACR,eAAe,GACf,kBAAkB,GAClB,cAAc,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,iCAA0C,CAAC;AAEhE,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAEvD,eAAO,MAAM,SAAS,mCAA4C,CAAC;AAEnE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;CACrD;AAED,eAAO,MAAM,QAAQ,iCAA0C,CAAC;AAEhE,MAAM,MAAM,KAAK,GAAG,CAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,KACb,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,KAAK,2BAAoC,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAED,eAAO,MAAM,SAAS,kCAgBrB,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;CACnD;AAED,eAAO,MAAM,QAAQ,iCAA0C,CAAC"}
|
|
1
|
+
{"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EACT,QAAQ,GACR,eAAe,GACf,kBAAkB,GAClB,cAAc,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,iCAA0C,CAAC;AAEhE,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAEvD,eAAO,MAAM,SAAS,mCAA4C,CAAC;AAEnE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;CACrD;AAED,eAAO,MAAM,QAAQ,iCAA0C,CAAC;AAEhE,MAAM,MAAM,KAAK,GAAG,CAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,KACb,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,KAAK,2BAAoC,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAED,eAAO,MAAM,SAAS,kCAgBrB,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;CACnD;AAED,eAAO,MAAM,QAAQ,iCAA0C,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,SAAS,SAIrB,CAAC"}
|
package/dist/src/Platform.js
CHANGED
|
@@ -15,3 +15,10 @@ export const FetchLive = Layer.succeed(Fetch, Fetch.of((url, body) => Effect.try
|
|
|
15
15
|
catch: () => ({ _tag: "FetchError" }),
|
|
16
16
|
})));
|
|
17
17
|
export const AppState = Context.Tag("evolu/AppState");
|
|
18
|
+
/**
|
|
19
|
+
* To detect whether DOM can be used.
|
|
20
|
+
* https://github.com/facebook/fbjs/blob/main/packages/fbjs/src/core/ExecutionEnvironment.js
|
|
21
|
+
*/
|
|
22
|
+
export const canUseDOM = !!(typeof window !== "undefined" &&
|
|
23
|
+
window.document &&
|
|
24
|
+
window.document.createElement);
|
package/dist/src/SyncWorker.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Context, Layer } from "effect";
|
|
1
|
+
import { Context, Equivalence, Layer } from "effect";
|
|
2
2
|
import { MerkleTree, Millis, Timestamp, TimestampString } from "./Crdt.js";
|
|
3
3
|
import { SecretBox } from "./Crypto.js";
|
|
4
4
|
import { Owner } from "./Db.js";
|
|
@@ -29,6 +29,7 @@ export interface NewMessage {
|
|
|
29
29
|
readonly column: string;
|
|
30
30
|
readonly value: Value;
|
|
31
31
|
}
|
|
32
|
+
export declare const NewMessageEquivalence: Equivalence.Equivalence<NewMessage>;
|
|
32
33
|
export interface Message extends NewMessage {
|
|
33
34
|
readonly timestamp: TimestampString;
|
|
34
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncWorker.d.ts","sourceRoot":"","sources":["../../src/SyncWorker.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,
|
|
1
|
+
{"version":3,"file":"SyncWorker.d.ts","sourceRoot":"","sources":["../../src/SyncWorker.ts"],"names":[],"mappings":"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"}
|
package/dist/src/SyncWorker.js
CHANGED
|
@@ -8,6 +8,10 @@ import { Fetch, SyncLock } from "./Platform.js";
|
|
|
8
8
|
import { MessageContent, SyncRequest, SyncResponse, } from "./Protobuf.js";
|
|
9
9
|
export const SyncWorker = Context.Tag("evolu/SyncWorker");
|
|
10
10
|
export const SyncWorkerPostMessage = Context.Tag("evolu/SyncWorkerPostMessage");
|
|
11
|
+
export const NewMessageEquivalence = (a, b) => a.table === b.table &&
|
|
12
|
+
a.row === b.row &&
|
|
13
|
+
a.column === b.column &&
|
|
14
|
+
JSON.stringify(a.value) === JSON.stringify(b.value);
|
|
11
15
|
const SyncWorkerOnMessage = Context.Tag("evolu/SyncWorkerOnMessage");
|
|
12
16
|
const version1 = new Uint8Array([0, 1]);
|
|
13
17
|
const valueToProtobuf = (value) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evolu/common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12",
|
|
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",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@protobuf-ts/protoc": "^2.9.1",
|
|
48
48
|
"array-shuffle": "^3.0.0",
|
|
49
49
|
"effect": "2.0.0-next.50",
|
|
50
|
-
"eslint": "^8.
|
|
50
|
+
"eslint": "^8.52.0",
|
|
51
51
|
"typescript": "^5.2.2",
|
|
52
52
|
"vitest": "^0.34.6",
|
|
53
53
|
"@evolu/tsconfig": "0.0.2",
|
package/src/Crdt.ts
CHANGED
|
@@ -68,7 +68,6 @@ export const timestampToString = (t: Timestamp): TimestampString =>
|
|
|
68
68
|
t.node,
|
|
69
69
|
].join("-") as TimestampString;
|
|
70
70
|
|
|
71
|
-
// TODO: Replace with safe.
|
|
72
71
|
export const unsafeTimestampFromString = (s: TimestampString): Timestamp => {
|
|
73
72
|
const a = s.split("-");
|
|
74
73
|
return {
|
package/src/DbWorker.ts
CHANGED
|
@@ -58,6 +58,7 @@ import { Query, Row, Sqlite, Value, queryObjectFromQuery } from "./Sqlite.js";
|
|
|
58
58
|
import {
|
|
59
59
|
Message,
|
|
60
60
|
NewMessage,
|
|
61
|
+
NewMessageEquivalence,
|
|
61
62
|
SyncState,
|
|
62
63
|
SyncWorker,
|
|
63
64
|
SyncWorkerOutputSyncResponse,
|
|
@@ -246,7 +247,7 @@ const readTimestampAndMerkleTree = Sqlite.pipe(
|
|
|
246
247
|
),
|
|
247
248
|
);
|
|
248
249
|
|
|
249
|
-
const mutateItemsToNewMessages = (
|
|
250
|
+
export const mutateItemsToNewMessages = (
|
|
250
251
|
items: ReadonlyArray.NonEmptyReadonlyArray<MutateItem>,
|
|
251
252
|
): ReadonlyArray.NonEmptyReadonlyArray<NewMessage> =>
|
|
252
253
|
pipe(
|
|
@@ -284,6 +285,7 @@ const mutateItemsToNewMessages = (
|
|
|
284
285
|
),
|
|
285
286
|
),
|
|
286
287
|
ReadonlyArray.flattenNonEmpty,
|
|
288
|
+
ReadonlyArray.dedupeNonEmptyWith(NewMessageEquivalence),
|
|
287
289
|
);
|
|
288
290
|
|
|
289
291
|
const ensureSchemaByMessages = (
|
package/src/Platform.ts
CHANGED
|
@@ -61,3 +61,13 @@ export interface AppState {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export const AppState = Context.Tag<AppState>("evolu/AppState");
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* To detect whether DOM can be used.
|
|
67
|
+
* https://github.com/facebook/fbjs/blob/main/packages/fbjs/src/core/ExecutionEnvironment.js
|
|
68
|
+
*/
|
|
69
|
+
export const canUseDOM = !!(
|
|
70
|
+
typeof window !== "undefined" &&
|
|
71
|
+
window.document &&
|
|
72
|
+
window.document.createElement
|
|
73
|
+
);
|
package/src/SyncWorker.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { BinaryReader, BinaryWriter } from "@protobuf-ts/runtime";
|
|
|
3
3
|
import {
|
|
4
4
|
Context,
|
|
5
5
|
Effect,
|
|
6
|
+
Equivalence,
|
|
6
7
|
Function,
|
|
7
8
|
Layer,
|
|
8
9
|
Option,
|
|
@@ -66,6 +67,15 @@ export interface NewMessage {
|
|
|
66
67
|
readonly value: Value;
|
|
67
68
|
}
|
|
68
69
|
|
|
70
|
+
export const NewMessageEquivalence: Equivalence.Equivalence<NewMessage> = (
|
|
71
|
+
a,
|
|
72
|
+
b,
|
|
73
|
+
) =>
|
|
74
|
+
a.table === b.table &&
|
|
75
|
+
a.row === b.row &&
|
|
76
|
+
a.column === b.column &&
|
|
77
|
+
JSON.stringify(a.value) === JSON.stringify(b.value);
|
|
78
|
+
|
|
69
79
|
export interface Message extends NewMessage {
|
|
70
80
|
readonly timestamp: TimestampString;
|
|
71
81
|
}
|