@livestore/sync-electric 0.3.0-dev.4 → 0.3.0-dev.6
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/.tsbuildinfo +1 -1
- package/dist/index.d.ts +12 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- package/src/index.ts +7 -9
package/dist/index.d.ts
CHANGED
|
@@ -4,58 +4,24 @@ import { Effect, Schema } from '@livestore/utils/effect';
|
|
|
4
4
|
export declare const syncBackend: any;
|
|
5
5
|
export declare const ApiPushEventPayload: Schema.TaggedStruct<"sync-electric.PushEvent", {
|
|
6
6
|
roomId: typeof Schema.String;
|
|
7
|
-
batch: Schema.Array$<Schema.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
readonly args: any;
|
|
14
|
-
readonly parentId: {
|
|
15
|
-
readonly global: number;
|
|
16
|
-
readonly local: number;
|
|
17
|
-
};
|
|
18
|
-
}, {
|
|
19
|
-
readonly id: {
|
|
20
|
-
readonly global: number;
|
|
21
|
-
readonly local: number;
|
|
22
|
-
};
|
|
23
|
-
readonly mutation: string;
|
|
24
|
-
readonly args: any;
|
|
25
|
-
readonly parentId: {
|
|
26
|
-
readonly global: number;
|
|
27
|
-
readonly local: number;
|
|
28
|
-
};
|
|
29
|
-
}, never>>;
|
|
7
|
+
batch: Schema.Array$<Schema.Struct<{
|
|
8
|
+
mutation: typeof Schema.String;
|
|
9
|
+
args: typeof Schema.Any;
|
|
10
|
+
id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
|
11
|
+
parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
|
12
|
+
}>>;
|
|
30
13
|
}>;
|
|
31
14
|
export declare const ApiInitRoomPayload: Schema.TaggedStruct<"sync-electric.InitRoom", {
|
|
32
15
|
roomId: typeof Schema.String;
|
|
33
16
|
}>;
|
|
34
17
|
export declare const ApiPayload: Schema.Union<[Schema.TaggedStruct<"sync-electric.PushEvent", {
|
|
35
18
|
roomId: typeof Schema.String;
|
|
36
|
-
batch: Schema.Array$<Schema.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
readonly args: any;
|
|
43
|
-
readonly parentId: {
|
|
44
|
-
readonly global: number;
|
|
45
|
-
readonly local: number;
|
|
46
|
-
};
|
|
47
|
-
}, {
|
|
48
|
-
readonly id: {
|
|
49
|
-
readonly global: number;
|
|
50
|
-
readonly local: number;
|
|
51
|
-
};
|
|
52
|
-
readonly mutation: string;
|
|
53
|
-
readonly args: any;
|
|
54
|
-
readonly parentId: {
|
|
55
|
-
readonly global: number;
|
|
56
|
-
readonly local: number;
|
|
57
|
-
};
|
|
58
|
-
}, never>>;
|
|
19
|
+
batch: Schema.Array$<Schema.Struct<{
|
|
20
|
+
mutation: typeof Schema.String;
|
|
21
|
+
args: typeof Schema.Any;
|
|
22
|
+
id: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
|
23
|
+
parentId: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
|
|
24
|
+
}>>;
|
|
59
25
|
}>, Schema.TaggedStruct<"sync-electric.InitRoom", {
|
|
60
26
|
roomId: typeof Schema.String;
|
|
61
27
|
}>]>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAI5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAGL,MAAM,EAKN,MAAM,EAGP,MAAM,yBAAyB,CAAA;AA4BhC,eAAO,MAAM,WAAW,EAAS,GAAG,CAAA;AAEpC,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAI5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAGL,MAAM,EAKN,MAAM,EAGP,MAAM,yBAAyB,CAAA;AA4BhC,eAAO,MAAM,WAAW,EAAS,GAAG,CAAA;AAEpC,eAAO,MAAM,mBAAmB;;;yBAyBF,OACxB,MAAM;qBAAkB,OAAQ,GAAG;YACtC,OACA,WAAW,iBAGd,cAAc;kBAEd,OAEI,WAAW,iBACA,cAAc;;EAjC3B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;EAE7B,CAAA;AAEF,eAAO,MAAM,UAAU;;;yBAgBO,OACxB,MAAM;qBAAkB,OAAQ,GAAG;YACtC,OACA,WAAW,iBAGd,cAAc;kBAEd,OAEI,WAAW,iBACA,cAAc;;;;IA3BkD,CAAA;AAE/E,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,kBAAkB,WAAW,QAAQ,aAAY,CAAA;AAErG,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB;IAChE,IAAI,EAAE,UAAU,CAAA;IAChB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,UAAU,uBAAuB;IAC/B,WAAW,EAAE,kBAAkB,CAAA;CAChC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAgB,SAAQ,uBAAuB;KAAG;CAC7D;AAED,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,MAAM,CAAA;IAEd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,eAAe,iDAIzB,kBAAkB,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAgI/E,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ Also see: https://github.com/electric-sql/electric/blob/main/packages/typescript
|
|
|
14
14
|
const ResponseItem = Schema.Struct({
|
|
15
15
|
/** Postgres path (e.g. "public.events/1") */
|
|
16
16
|
key: Schema.optional(Schema.String),
|
|
17
|
-
value: Schema.optional(MutationEvent.
|
|
17
|
+
value: Schema.optional(MutationEvent.AnyEncodedGlobal),
|
|
18
18
|
headers: Schema.Record({ key: Schema.String, value: Schema.Any }),
|
|
19
19
|
offset: Schema.optional(Schema.String),
|
|
20
20
|
});
|
|
@@ -27,7 +27,7 @@ const ResponseHeaders = Schema.Struct({
|
|
|
27
27
|
export const syncBackend = {};
|
|
28
28
|
export const ApiPushEventPayload = Schema.TaggedStruct('sync-electric.PushEvent', {
|
|
29
29
|
roomId: Schema.String,
|
|
30
|
-
batch: Schema.Array(MutationEvent.
|
|
30
|
+
batch: Schema.Array(MutationEvent.AnyEncodedGlobal),
|
|
31
31
|
});
|
|
32
32
|
export const ApiInitRoomPayload = Schema.TaggedStruct('sync-electric.InitRoom', {
|
|
33
33
|
roomId: Schema.String,
|
|
@@ -75,9 +75,9 @@ export const makeSyncBackend = ({ electricHost, roomId, pushEventEndpoint, }) =>
|
|
|
75
75
|
// if (listenForNew === false && items.length === 0) {
|
|
76
76
|
// return Option.none()
|
|
77
77
|
// }
|
|
78
|
-
const [newItems, pendingPushItems] = Chunk.fromIterable(items).pipe(Chunk.partition((item) => pendingPushDeferredMap.has(
|
|
78
|
+
const [newItems, pendingPushItems] = Chunk.fromIterable(items).pipe(Chunk.partition((item) => pendingPushDeferredMap.has(item.mutationEventEncoded.id)));
|
|
79
79
|
for (const item of pendingPushItems) {
|
|
80
|
-
const deferred = pendingPushDeferredMap.get(
|
|
80
|
+
const deferred = pendingPushDeferredMap.get(item.mutationEventEncoded.id);
|
|
81
81
|
yield* Deferred.succeed(deferred, Option.getOrThrow(item.metadata));
|
|
82
82
|
}
|
|
83
83
|
return Option.some([newItems, Option.some(nextCursor)]);
|
|
@@ -88,7 +88,7 @@ export const makeSyncBackend = ({ electricHost, roomId, pushEventEndpoint, }) =>
|
|
|
88
88
|
const deferreds = [];
|
|
89
89
|
for (const mutationEventEncoded of batch) {
|
|
90
90
|
const deferred = yield* Deferred.make();
|
|
91
|
-
pendingPushDeferredMap.set(
|
|
91
|
+
pendingPushDeferredMap.set(mutationEventEncoded.id, deferred);
|
|
92
92
|
deferreds.push(deferred);
|
|
93
93
|
}
|
|
94
94
|
const resp = yield* HttpClientRequest.schemaBodyJson(ApiPushEventPayload)(HttpClientRequest.post(pushEventEndpoint), ApiPushEventPayload.make({ roomId, batch })).pipe(Effect.andThen(HttpClient.execute), Effect.andThen(HttpClientResponse.schemaBodyJson(Schema.Struct({ success: Schema.Boolean }))), Effect.scoped, Effect.mapError((cause) => InvalidPushError.make({ reason: { _tag: 'Unexpected', message: cause.toString() } })));
|
|
@@ -97,12 +97,11 @@ export const makeSyncBackend = ({ electricHost, roomId, pushEventEndpoint, }) =>
|
|
|
97
97
|
}
|
|
98
98
|
const metadata = yield* Effect.all(deferreds, { concurrency: 'unbounded' }).pipe(Effect.map((_) => _.map(Option.some)));
|
|
99
99
|
for (const mutationEventEncoded of batch) {
|
|
100
|
-
pendingPushDeferredMap.delete(
|
|
100
|
+
pendingPushDeferredMap.delete(mutationEventEncoded.id);
|
|
101
101
|
}
|
|
102
102
|
return { metadata };
|
|
103
103
|
}),
|
|
104
104
|
isConnected,
|
|
105
105
|
};
|
|
106
106
|
});
|
|
107
|
-
const eventIdToString = (eventId) => `${eventId.global}_${eventId.local}`;
|
|
108
107
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,MAAM,EACN,MAAM,EACN,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAEhC;;;;;;;;;EASE;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,MAAM,EACN,MAAM,EACN,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAEhC;;;;;;;;;EASE;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IACjE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACvC,CAAC,CAAA;AAEF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,qBAAqB,EAAE,MAAM,CAAC,MAAM;IACpC,qDAAqD;IACrD,sBAAsB;IACtB,8BAA8B,EAAE,MAAM,CAAC,MAAM;CAC9C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,EAAS,CAAA;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,YAAY,CAAC,yBAAyB,EAAE;IAChF,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;CACpD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,wBAAwB,EAAE;IAC9E,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAA;AAE/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAsC,OAAiB,EAAE,EAAE,CAAC,OAAO,CAAA;AAkCrG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,YAAY,EACZ,MAAM,EACN,iBAAiB,GACE,EAAgE,EAAE,CACrF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,WAAW,GAAG,GAAG,YAAY,oBAAoB,MAAM,EAAE,CAAA;IAE/D,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAErD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,cAAc,CAAC,kBAAkB,CAAC,CACnE,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EACzC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CACpC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;IAE1C,wCAAwC;IACxC,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAA0D,CAAA;IAEhG,MAAM,IAAI,GAAG,CAAC,IAAiC,EAAE,EAAE,CACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,GAAG,GACP,IAAI,CAAC,IAAI,KAAK,MAAM;YAClB,CAAC,CAAC,GAAG,WAAW,YAAY;YAC5B,CAAC,CAAC,GAAG,WAAW,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,CAAA;QAE3F,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5C,2FAA2F;QAC3F,+FAA+F;QAC/F,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAC9D,EACD,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAC3B,CAAA;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAA;QAC9E,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE,OAAO,CAAC,8BAA8B,CAAC;YAC/C,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC;SACxC,CAAA;QAED,+EAA+E;QAC/E,+CAA+C;QAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAU,CAAC,CAAA;QACvE,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAEvF,MAAM,KAAK,GAAG,IAAI;aACf,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;aAC1C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;YAC5E,oBAAoB,EAAE;gBACpB,QAAQ,EAAE,IAAI,CAAC,KAAM,CAAC,QAAQ;gBAC9B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAM,CAAC,IAAI,CAAC;gBAClC,EAAE,EAAE,IAAI,CAAC,KAAM,CAAC,EAAE;gBAClB,QAAQ,EAAE,IAAI,CAAC,KAAM,CAAC,QAAQ;aAC/B;SACF,CAAC,CAAC,CAAA;QAEL,gDAAgD;QAChD,gBAAgB;QAEhB,sDAAsD;QACtD,yBAAyB;QACzB,IAAI;QAEJ,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CACjE,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CACpF,CAAA;QAED,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAE,CAAA;YAC1E,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QACrE,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAU,CAAC,CAAA;IAClE,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CACjF,CAAA;IAEH,OAAO;QACL,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CACb,MAAM,CAAC,iBAAiB,CACtB,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAC7B,MAAM,CAAC,OAAO,CACf,EACD,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CACzC,CAAC,IAAI,CACJ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAC7D;QAEH,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,SAAS,GAAsC,EAAE,CAAA;YACvD,KAAK,MAAM,oBAAoB,IAAI,KAAK,EAAE,CAAC;gBACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAgB,CAAA;gBACrD,sBAAsB,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;gBAC7D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC1B,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC,mBAAmB,CAAC,CACvE,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EACzC,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAC5C,CAAC,IAAI,CACJ,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAClC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAC7F,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CACrF,CACF,CAAA;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,KAAK,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;YAC1F,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAC9E,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CACtC,CAAA;YAED,KAAK,MAAM,oBAAoB,IAAI,KAAK,EAAE,CAAC;gBACzC,sBAAsB,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAA;YACxD,CAAC;YAED,OAAO,EAAE,QAAQ,EAAE,CAAA;QACrB,CAAC,CAAC;QACJ,WAAW;KACwB,CAAA;AACvC,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/sync-electric",
|
|
3
|
-
"version": "0.3.0-dev.
|
|
3
|
+
"version": "0.3.0-dev.6",
|
|
4
4
|
"type": "module",
|
|
5
|
+
"sideEffects": false,
|
|
5
6
|
"exports": {
|
|
6
7
|
".": {
|
|
7
8
|
"types": "./dist/index.d.ts",
|
|
@@ -9,8 +10,8 @@
|
|
|
9
10
|
}
|
|
10
11
|
},
|
|
11
12
|
"dependencies": {
|
|
12
|
-
"@livestore/
|
|
13
|
-
"@livestore/
|
|
13
|
+
"@livestore/utils": "0.3.0-dev.6",
|
|
14
|
+
"@livestore/common": "0.3.0-dev.6"
|
|
14
15
|
},
|
|
15
16
|
"devDependencies": {},
|
|
16
17
|
"publishConfig": {
|
package/src/index.ts
CHANGED
|
@@ -30,7 +30,7 @@ Also see: https://github.com/electric-sql/electric/blob/main/packages/typescript
|
|
|
30
30
|
const ResponseItem = Schema.Struct({
|
|
31
31
|
/** Postgres path (e.g. "public.events/1") */
|
|
32
32
|
key: Schema.optional(Schema.String),
|
|
33
|
-
value: Schema.optional(MutationEvent.
|
|
33
|
+
value: Schema.optional(MutationEvent.AnyEncodedGlobal),
|
|
34
34
|
headers: Schema.Record({ key: Schema.String, value: Schema.Any }),
|
|
35
35
|
offset: Schema.optional(Schema.String),
|
|
36
36
|
})
|
|
@@ -46,7 +46,7 @@ export const syncBackend = {} as any
|
|
|
46
46
|
|
|
47
47
|
export const ApiPushEventPayload = Schema.TaggedStruct('sync-electric.PushEvent', {
|
|
48
48
|
roomId: Schema.String,
|
|
49
|
-
batch: Schema.Array(MutationEvent.
|
|
49
|
+
batch: Schema.Array(MutationEvent.AnyEncodedGlobal),
|
|
50
50
|
})
|
|
51
51
|
|
|
52
52
|
export const ApiInitRoomPayload = Schema.TaggedStruct('sync-electric.InitRoom', {
|
|
@@ -105,7 +105,7 @@ export const makeSyncBackend = ({
|
|
|
105
105
|
).pipe(Effect.andThen(HttpClient.execute))
|
|
106
106
|
|
|
107
107
|
// TODO check whether we still need this
|
|
108
|
-
const pendingPushDeferredMap = new Map<
|
|
108
|
+
const pendingPushDeferredMap = new Map<EventId.GlobalEventId, Deferred.Deferred<SyncMetadata>>()
|
|
109
109
|
|
|
110
110
|
const pull = (args: Option.Option<SyncMetadata>) =>
|
|
111
111
|
Effect.gen(function* () {
|
|
@@ -157,11 +157,11 @@ export const makeSyncBackend = ({
|
|
|
157
157
|
// }
|
|
158
158
|
|
|
159
159
|
const [newItems, pendingPushItems] = Chunk.fromIterable(items).pipe(
|
|
160
|
-
Chunk.partition((item) => pendingPushDeferredMap.has(
|
|
160
|
+
Chunk.partition((item) => pendingPushDeferredMap.has(item.mutationEventEncoded.id)),
|
|
161
161
|
)
|
|
162
162
|
|
|
163
163
|
for (const item of pendingPushItems) {
|
|
164
|
-
const deferred = pendingPushDeferredMap.get(
|
|
164
|
+
const deferred = pendingPushDeferredMap.get(item.mutationEventEncoded.id)!
|
|
165
165
|
yield* Deferred.succeed(deferred, Option.getOrThrow(item.metadata))
|
|
166
166
|
}
|
|
167
167
|
|
|
@@ -189,7 +189,7 @@ export const makeSyncBackend = ({
|
|
|
189
189
|
const deferreds: Deferred.Deferred<SyncMetadata>[] = []
|
|
190
190
|
for (const mutationEventEncoded of batch) {
|
|
191
191
|
const deferred = yield* Deferred.make<SyncMetadata>()
|
|
192
|
-
pendingPushDeferredMap.set(
|
|
192
|
+
pendingPushDeferredMap.set(mutationEventEncoded.id, deferred)
|
|
193
193
|
deferreds.push(deferred)
|
|
194
194
|
}
|
|
195
195
|
|
|
@@ -214,7 +214,7 @@ export const makeSyncBackend = ({
|
|
|
214
214
|
)
|
|
215
215
|
|
|
216
216
|
for (const mutationEventEncoded of batch) {
|
|
217
|
-
pendingPushDeferredMap.delete(
|
|
217
|
+
pendingPushDeferredMap.delete(mutationEventEncoded.id)
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
return { metadata }
|
|
@@ -222,5 +222,3 @@ export const makeSyncBackend = ({
|
|
|
222
222
|
isConnected,
|
|
223
223
|
} satisfies SyncBackend<SyncMetadata>
|
|
224
224
|
})
|
|
225
|
-
|
|
226
|
-
const eventIdToString = (eventId: EventId.EventId) => `${eventId.global}_${eventId.local}`
|