@shivaedev/contract 0.19.0 → 0.20.0
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/CHANGELOG.md +19 -0
- package/README.md +149 -180
- package/dist/automaticLive.d.ts +8 -7
- package/dist/automaticLive.d.ts.map +1 -1
- package/dist/automaticLive.js +101 -51
- package/dist/automaticLive.js.map +1 -1
- package/dist/bind.d.ts +1 -0
- package/dist/bind.d.ts.map +1 -1
- package/dist/bind.js +4 -4
- package/dist/bind.js.map +1 -1
- package/dist/clientOptions.d.ts +6 -5
- package/dist/clientOptions.d.ts.map +1 -1
- package/dist/internal/clientOperations.d.ts +2 -2
- package/dist/internal/clientOperations.d.ts.map +1 -1
- package/dist/internal/clientOperations.js +10 -14
- package/dist/internal/clientOperations.js.map +1 -1
- package/dist/internal/queryReactivity.d.ts +1 -1
- package/dist/internal/queryReactivity.d.ts.map +1 -1
- package/dist/internal/queryReactivity.js +1 -2
- package/dist/internal/queryReactivity.js.map +1 -1
- package/dist/internal/queryResult.d.ts +3 -0
- package/dist/internal/queryResult.d.ts.map +1 -0
- package/dist/internal/queryResult.js +19 -0
- package/dist/internal/queryResult.js.map +1 -0
- package/dist/internal/{httpClient.d.ts → rpcClient.d.ts} +6 -4
- package/dist/internal/rpcClient.d.ts.map +1 -0
- package/dist/internal/rpcClient.js +31 -0
- package/dist/internal/rpcClient.js.map +1 -0
- package/dist/live.d.ts +1 -0
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +14 -1
- package/dist/live.js.map +1 -1
- package/dist/makeLiveServer.js +6 -4
- package/dist/makeLiveServer.js.map +1 -1
- package/package.json +3 -3
- package/src/automaticLive.ts +113 -70
- package/src/bind.ts +7 -6
- package/src/clientOptions.ts +6 -5
- package/src/internal/clientOperations.ts +14 -25
- package/src/internal/queryReactivity.ts +1 -7
- package/src/internal/queryResult.ts +19 -0
- package/src/internal/rpcClient.ts +53 -0
- package/src/live.ts +14 -1
- package/src/makeLiveServer.ts +6 -6
- package/dist/internal/httpClient.d.ts.map +0 -1
- package/dist/internal/httpClient.js +0 -13
- package/dist/internal/httpClient.js.map +0 -1
- package/src/internal/httpClient.ts +0 -21
package/dist/automaticLive.js
CHANGED
|
@@ -1,64 +1,114 @@
|
|
|
1
|
-
import { Effect,
|
|
1
|
+
import { Effect, Option, Stream } from "effect";
|
|
2
|
+
import * as AsyncResult from "effect/reactivity/AsyncResult";
|
|
2
3
|
import * as Atom from "effect/reactivity/Atom";
|
|
3
|
-
import * as AtomRegistry from "effect/reactivity/AtomRegistry";
|
|
4
|
-
import { readKeys } from "@shivaedev/changes/keys.ts";
|
|
5
4
|
import { localQueryKeys, queryHint } from "#internal/queryHints.ts";
|
|
5
|
+
import { queryResult } from "#internal/queryResult.ts";
|
|
6
|
+
import { socketIdentity } from "#internal/rpcClient.ts";
|
|
6
7
|
import { live } from "#live.ts";
|
|
8
|
+
import { queryCoalesceWindow } from "#queryCoalesceWindow.ts";
|
|
7
9
|
import { resumeSignal } from "#resume.ts";
|
|
8
10
|
export const LiveConnection = Symbol.for("@shivaedev/contract/LiveConnection");
|
|
9
|
-
export function automaticLive(service, name, owner, resume) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
function track(registry, reference, keys) {
|
|
14
|
-
const fresh = eager === undefined
|
|
15
|
-
? keys
|
|
16
|
-
: keys.filter((key) => {
|
|
17
|
-
const id = readKeys([key])[0] ?? "";
|
|
18
|
-
if (known.has(id)) {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
known.add(id);
|
|
22
|
-
return true;
|
|
23
|
-
});
|
|
24
|
-
if (fresh.length === 0) {
|
|
25
|
-
return () => undefined;
|
|
26
|
-
}
|
|
27
|
-
const token = {};
|
|
28
|
-
const state = eager ?? registry?.get(tracked);
|
|
29
|
-
if (state === undefined) {
|
|
30
|
-
throw new Error("Session query tracking requires its owning registry");
|
|
31
|
-
}
|
|
32
|
-
Effect.runSync(SubscriptionRef.update(state, (current) => new Map([...current, [token, { keys: fresh, reference }]])));
|
|
33
|
-
if (eager !== undefined) {
|
|
34
|
-
return () => undefined;
|
|
11
|
+
export function automaticLive(service, name, owner, resume, enabled = true) {
|
|
12
|
+
function assertOwner(get) {
|
|
13
|
+
if (owner !== undefined && owner.registry !== get.registry) {
|
|
14
|
+
throw new Error("A session-scoped query belongs to its binding registry");
|
|
35
15
|
}
|
|
36
|
-
return () => Effect.runSync(SubscriptionRef.update(state, (current) => {
|
|
37
|
-
const next = new Map(current);
|
|
38
|
-
next.delete(token);
|
|
39
|
-
return next;
|
|
40
|
-
}));
|
|
41
16
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
17
|
+
const coalesceWindow = Atom.keepAlive(Atom.make("20 millis"));
|
|
18
|
+
const statuses = Atom.make(new Map());
|
|
19
|
+
const status = Atom.map(statuses, (current) => {
|
|
20
|
+
const values = [...current.values()];
|
|
21
|
+
let connection = "live";
|
|
22
|
+
if (values.some((value) => value.connection === "connecting")) {
|
|
23
|
+
connection = "connecting";
|
|
45
24
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
25
|
+
if (values.some((value) => value.connection === "reconnecting")) {
|
|
26
|
+
connection = "reconnecting";
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
connection,
|
|
30
|
+
failure: values.find((value) => Option.isSome(value.failure))?.failure ?? Option.none(),
|
|
31
|
+
needsResync: values.some((value) => value.needsResync),
|
|
32
|
+
pending: values.reduce((sum, value) => sum + value.pending, 0),
|
|
33
|
+
};
|
|
55
34
|
});
|
|
35
|
+
const signal = resumeSignal({ ...(typeof window === "undefined" ? {} : { window }), ...(resume === undefined ? {} : { native: resume }) });
|
|
56
36
|
const connection = Atom.make((get) => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return get(subscription.connection);
|
|
37
|
+
assertOwner(get);
|
|
38
|
+
get.mount(service.runtime);
|
|
39
|
+
return get(status);
|
|
61
40
|
}).pipe(Atom.setIdleTTL(0));
|
|
62
|
-
|
|
41
|
+
function query(atom, reference, keys, equivalent) {
|
|
42
|
+
if (!enabled) {
|
|
43
|
+
return atom;
|
|
44
|
+
}
|
|
45
|
+
const ready = Atom.make(false);
|
|
46
|
+
const subscription = live(service.runtime, {
|
|
47
|
+
initialResync: false,
|
|
48
|
+
keyContext: owner?.context,
|
|
49
|
+
resume: signal,
|
|
50
|
+
resyncKeys: localQueryKeys(keys),
|
|
51
|
+
stream: Stream.unwrap(service.use((client) => Effect.succeed(client(`${name}.$changes`, { queries: [reference] })))).pipe(Stream.map((hint) => queryHint(hint, [{ keys }]))),
|
|
52
|
+
});
|
|
53
|
+
const gated = Atom.readable((get) => {
|
|
54
|
+
assertOwner(get);
|
|
55
|
+
const registry = get.registry;
|
|
56
|
+
get.set(ready, false);
|
|
57
|
+
get.once(queryCoalesceWindow(gated));
|
|
58
|
+
get.subscribe(queryCoalesceWindow(gated), (value) => get.set(queryCoalesceWindow(atom), value), { immediate: true });
|
|
59
|
+
const token = {};
|
|
60
|
+
function observe(value) {
|
|
61
|
+
registry.update(statuses, (current) => new Map([...current, [token, value]]));
|
|
62
|
+
if (value.connection === "live") {
|
|
63
|
+
registry.set(ready, true);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
get.addFinalizer(() => {
|
|
67
|
+
if (registry.getNodes().has(statuses)) {
|
|
68
|
+
registry.update(statuses, (current) => {
|
|
69
|
+
const next = new Map(current);
|
|
70
|
+
next.delete(token);
|
|
71
|
+
return next;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
get.addFinalizer(registry.subscribe(subscription.status, observe, { immediate: true }));
|
|
76
|
+
get.addFinalizer(registry.subscribe(coalesceWindow, (value) => registry.set(subscription.coalesceWindow, value), { immediate: true }));
|
|
77
|
+
let started = false;
|
|
78
|
+
function start() {
|
|
79
|
+
if (started) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
started = true;
|
|
83
|
+
get.refresh(atom);
|
|
84
|
+
const publish = queryResult(equivalent, (value) => get.setSelf(value));
|
|
85
|
+
get.subscribe(atom, publish);
|
|
86
|
+
publish(get.once(atom));
|
|
87
|
+
}
|
|
88
|
+
get.once(ready);
|
|
89
|
+
get.subscribe(ready, (value) => {
|
|
90
|
+
if (value) {
|
|
91
|
+
start();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
get.subscribe(subscription.status, (value) => {
|
|
95
|
+
if (!started && Option.isSome(value.failure)) {
|
|
96
|
+
get.setSelf(AsyncResult.failure(value.failure.value));
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
get.mount(subscription.connection);
|
|
100
|
+
if (get.once(ready)) {
|
|
101
|
+
start();
|
|
102
|
+
return get.once(atom);
|
|
103
|
+
}
|
|
104
|
+
return AsyncResult.initial();
|
|
105
|
+
}, (refresh) => refresh(atom)).pipe(Atom.setIdleTTL(0));
|
|
106
|
+
Object.assign(gated, { initialValueTarget: atom });
|
|
107
|
+
if (Atom.isSerializable(atom)) {
|
|
108
|
+
Object.assign(gated, { [Atom.SerializableTypeId]: atom[Atom.SerializableTypeId] });
|
|
109
|
+
}
|
|
110
|
+
return gated;
|
|
111
|
+
}
|
|
112
|
+
return { query, subscription: { coalesceWindow, connection, identity: socketIdentity, status } };
|
|
63
113
|
}
|
|
64
114
|
//# sourceMappingURL=automaticLive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automaticLive.js","sourceRoot":"","sources":["../src/automaticLive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"automaticLive.js","sourceRoot":"","sources":["../src/automaticLive.ts"],"names":[],"mappings":"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"}
|
package/dist/bind.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ type MatchingClient<TRpcs extends Rpc.Any, TClientRpcs extends Rpc.Any> = [TRpcs
|
|
|
43
43
|
readonly _tag: TRpcs["_tag"];
|
|
44
44
|
}>] extends [TRpcs] ? unknown : "Client must preserve the contract RPC types" : "Client must implement the contract RPCs";
|
|
45
45
|
interface BindOptions {
|
|
46
|
+
readonly live?: boolean;
|
|
46
47
|
readonly registry?: AtomRegistry.AtomRegistry;
|
|
47
48
|
readonly resume?: ResumeSource;
|
|
48
49
|
}
|
package/dist/bind.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.d.ts","sourceRoot":"","sources":["../src/bind.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bind.d.ts","sourceRoot":"","sources":["../src/bind.ts"],"names":[],"mappings":"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"}
|
package/dist/bind.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { automaticLive, LiveConnection } from "#automaticLive.ts";
|
|
2
2
|
import { bindingOwner } from "#internal/bindingOwner.ts";
|
|
3
3
|
import { boundCommand, boundQuery, boundStream } from "#internal/clientOperations.ts";
|
|
4
|
-
import {
|
|
4
|
+
import { rpcClient } from "#internal/rpcClient.ts";
|
|
5
5
|
export function bind(contract, service, options) {
|
|
6
6
|
return bindApi(contract, service, options);
|
|
7
7
|
}
|
|
8
8
|
function bindApi(contract, service, options) {
|
|
9
9
|
const { name, queries, commands, streams, keyScope } = contract.declaration;
|
|
10
10
|
const owner = bindingOwner(keyScope, options?.registry);
|
|
11
|
-
const automatic = automaticLive(service, name, owner, options?.resume);
|
|
11
|
+
const automatic = automaticLive(service, name, owner, options?.resume, options?.live);
|
|
12
12
|
return Object.assign(Object.fromEntries([
|
|
13
|
-
...queries.map((query) => [query.name, boundQuery(service, `${name}.${query.name}`, query, automatic
|
|
13
|
+
...queries.map((query) => [query.name, boundQuery(service, `${name}.${query.name}`, query, automatic, owner)]),
|
|
14
14
|
...commands.map((command) => [command.name, boundCommand(service, `${name}.${command.name}`, command, owner)]),
|
|
15
15
|
...streams.map((stream) => [stream.name, boundStream(service, `${name}.${stream.name}`)]),
|
|
16
16
|
]), { [LiveConnection]: automatic.subscription });
|
|
17
17
|
}
|
|
18
18
|
export function makeClient(contract, options) {
|
|
19
|
-
const connection =
|
|
19
|
+
const connection = rpcClient(contract.declaration.name, options.group ?? contract, options);
|
|
20
20
|
const api = bindApi(contract, connection.Client, options);
|
|
21
21
|
return Object.assign(connection, { api });
|
|
22
22
|
}
|
package/dist/bind.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.js","sourceRoot":"","sources":["../src/bind.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAkB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGlF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAkB,
|
|
1
|
+
{"version":3,"file":"bind.js","sourceRoot":"","sources":["../src/bind.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAkB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGlF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAkB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AA+EnE,MAAM,UAAU,IAAI,CACnB,QAAmJ,EACnJ,OAAwD,EACxD,OAAqB;IAErB,OAAO,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,OAAO,CACf,QAAmJ,EACnJ,OAAwD,EACxD,OAAqB;IAErB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;IAC5E,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACtF,OAAO,MAAM,CAAC,MAAM,CACnB,MAAM,CAAC,WAAW,CAAC;QAClB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAU,CAAC;QACvH,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAU,CAAC;QACvH,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAU,CAAC;KAClG,CAAC,EACF,EAAE,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,CAC5C,CAAC;AACH,CAAC;AAgBD,MAAM,UAAU,UAAU,CACzB,QAEC,EACD,OAGC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3C,CAAC"}
|
package/dist/clientOptions.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import type { Context, Effect, Layer, Scope } from "effect";
|
|
2
|
-
import type { HttpClient } from "effect/http/HttpClient";
|
|
3
2
|
import type * as Atom from "effect/reactivity/Atom";
|
|
4
3
|
import type * as AtomRpc from "effect/reactivity/AtomRpc";
|
|
5
|
-
import type { Rpc, RpcClient
|
|
4
|
+
import type { Rpc, RpcClient } from "effect/rpc";
|
|
6
5
|
import type { RpcClientError } from "effect/rpc/RpcClientError";
|
|
6
|
+
import type * as Socket from "effect/socket/Socket";
|
|
7
7
|
import type { LiveBound } from "#automaticLive.ts";
|
|
8
8
|
import type { Bound } from "#bind.ts";
|
|
9
9
|
import type { CommandShape, QueryShape, StreamShape } from "#operation.ts";
|
|
10
10
|
export interface ClientOptions {
|
|
11
|
-
readonly
|
|
12
|
-
readonly
|
|
13
|
-
readonly
|
|
11
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
12
|
+
readonly live?: boolean;
|
|
13
|
+
readonly protocol?: Layer.Layer<RpcClient.Protocol>;
|
|
14
14
|
readonly url: string;
|
|
15
|
+
readonly webSocketConstructor?: Layer.Layer<Socket.WebSocketConstructor>;
|
|
15
16
|
}
|
|
16
17
|
export type ClientService<TName extends string, TRpcs extends Rpc.Any> = Context.ServiceClass.Shape<`${TName}/Client`, RpcClient.RpcClient.Flat<TRpcs, RpcClientError>>;
|
|
17
18
|
export type MadeClient<TName extends string, TQueries extends readonly QueryShape[], TCommands extends readonly CommandShape[], TRpcs extends Rpc.Any, TStreams extends readonly StreamShape[], TExtra extends Rpc.Any> = Layer.Layer<ClientService<TName, TRpcs | TExtra>> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientOptions.d.ts","sourceRoot":"","sources":["../src/clientOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"clientOptions.d.ts","sourceRoot":"","sources":["../src/clientOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,KAAK,IAAI,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,KAAK,MAAM,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAClG,GAAG,KAAK,SAAS,EACjB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAC/C,CAAC;AAEF,MAAM,MAAM,UAAU,CACrB,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,SAAS,UAAU,EAAE,EACtC,SAAS,SAAS,SAAS,YAAY,EAAE,EACzC,KAAK,SAAS,GAAG,CAAC,GAAG,EACrB,QAAQ,SAAS,SAAS,WAAW,EAAE,EACvC,MAAM,SAAS,GAAG,CAAC,GAAG,IACnB,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG;IACvD,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;IACnH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,EAAE,GAAG,KAAK,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;IAChH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAC/I,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;CACzE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Effect,
|
|
1
|
+
import { Effect, Schema, Stream } from "effect";
|
|
2
2
|
import type * as AtomRpc from "effect/reactivity/AtomRpc";
|
|
3
3
|
import type { Rpc, RpcSchema } from "effect/rpc";
|
|
4
4
|
import type { automaticLive } from "#automaticLive.ts";
|
|
@@ -7,7 +7,7 @@ import type { CommandShape, QueryShape } from "#operation.ts";
|
|
|
7
7
|
import type { BindingOwner } from "./bindingOwner.ts";
|
|
8
8
|
type ErasedClient = AtomRpc.AtomRpcClient<unknown, string, Rpc.Rpc<string, Schema.Top, Schema.Top, Schema.Top>>;
|
|
9
9
|
type ErasedStreamingClient = AtomRpc.AtomRpcClient<unknown, string, Rpc.Rpc<string, Schema.Top, RpcSchema.Stream<Schema.Top, Schema.Top>, Schema.Never>>;
|
|
10
|
-
export declare function boundQuery(service: ErasedClient, tag: string, query: QueryShape,
|
|
10
|
+
export declare function boundQuery(service: ErasedClient, tag: string, query: QueryShape, automatic: ReturnType<typeof automaticLive>, owner?: BindingOwner): {
|
|
11
11
|
query: (payload: unknown, options?: QueryOptions) => import("effect/reactivity/Atom").Atom<import("effect/reactivity/AsyncResult").AsyncResult<unknown, unknown>>;
|
|
12
12
|
run: (payload: unknown) => Effect.Effect<unknown, unknown, unknown>;
|
|
13
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientOperations.d.ts","sourceRoot":"","sources":["../../src/internal/clientOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,
|
|
1
|
+
{"version":3,"file":"clientOperations.d.ts","sourceRoot":"","sources":["../../src/internal/clientOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExD,OAAO,KAAK,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAE1D,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,KAAK,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhH,KAAK,qBAAqB,GAAG,OAAO,CAAC,aAAa,CACjD,OAAO,EACP,MAAM,EACN,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CACnF,CAAC;AAMF,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY;IAIjJ,KAAK,YAAY,OAAO,YAAW,YAAY;IAyB/C,GAAG,YAAY,OAAO;EAOvB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,YAAY;IAS1G,GAAG,YAAY,OAAO;EAGvB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,EAAE,MAAM;IAErE,GAAG,YAAY,OAAO;EAEvB"}
|
|
@@ -1,36 +1,32 @@
|
|
|
1
|
-
import { Effect, Option, Stream } from "effect";
|
|
1
|
+
import { Effect, Option, Schema, Stream } from "effect";
|
|
2
2
|
import * as AtomRegistry from "effect/reactivity/AtomRegistry";
|
|
3
3
|
import * as Reactivity from "effect/reactivity/Reactivity";
|
|
4
4
|
import { invalidationKeys, readKeys } from "@shivaedev/changes/keys.ts";
|
|
5
5
|
import { MissingReadPolicy } from "#readPolicyErrors.ts";
|
|
6
6
|
import { queryReactivity } from "./queryReactivity.js";
|
|
7
|
-
const queryIds = new WeakMap();
|
|
8
|
-
let nextQueryId = 0;
|
|
9
7
|
function run(service, effect, owner) {
|
|
10
8
|
return owner === undefined ? effect : Effect.suspend(() => AtomRegistry.getResult(owner.registry, service.runtime.atom(effect)));
|
|
11
9
|
}
|
|
12
|
-
export function boundQuery(service, tag, query,
|
|
10
|
+
export function boundQuery(service, tag, query, automatic, owner) {
|
|
13
11
|
const reactive = queryReactivity(service.runtime);
|
|
12
|
+
const cached = new WeakMap();
|
|
14
13
|
return {
|
|
15
14
|
query: (payload, options = {}) => {
|
|
16
15
|
if (query.readPolicy === undefined) {
|
|
17
16
|
return service.runtime.atom(Effect.fail(new MissingReadPolicy({ message: `Declare a readPolicy on query ${query.name} before running it live or subscribing` })));
|
|
18
17
|
}
|
|
19
18
|
const atom = service.query(tag, payload, options);
|
|
20
|
-
|
|
21
|
-
if (
|
|
22
|
-
|
|
23
|
-
nextQueryId += 1;
|
|
24
|
-
queryIds.set(atom, id);
|
|
19
|
+
const existing = cached.get(atom);
|
|
20
|
+
if (existing !== undefined) {
|
|
21
|
+
return existing;
|
|
25
22
|
}
|
|
26
23
|
const local = query.reads(payload, Option.none());
|
|
27
|
-
const keys = [...local, { _tag: "List", collection: `@query/${tag}/${
|
|
24
|
+
const keys = [...local, { _tag: "List", collection: `@query/${tag}/${crypto.randomUUID()}` }];
|
|
28
25
|
const dependencies = local.length === 0 ? [...keys, { _tag: "List", collection: `@query/${tag.slice(0, tag.lastIndexOf("."))}` }] : keys;
|
|
29
26
|
const reference = { payload, query: query.name };
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return reactive(atom, readKeys(dependencies, owner?.context), (registry) => (owner === undefined ? () => undefined : track(registry, reference, keys)), owner?.registry);
|
|
27
|
+
const result = automatic.query(reactive(atom, readKeys(dependencies, owner?.context), owner?.registry), reference, keys, Schema.toEquivalence(query.success));
|
|
28
|
+
cached.set(atom, result);
|
|
29
|
+
return result;
|
|
34
30
|
},
|
|
35
31
|
run: (payload) => run(service, service.use((client) => client(tag, payload)), owner),
|
|
36
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientOperations.js","sourceRoot":"","sources":["../../src/internal/clientOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"clientOperations.js","sourceRoot":"","sources":["../../src/internal/clientOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as AsyncResult from "effect/reactivity/AsyncResult";
|
|
2
2
|
import * as Atom from "effect/reactivity/Atom";
|
|
3
3
|
import type * as AtomRegistry from "effect/reactivity/AtomRegistry";
|
|
4
|
-
export declare function queryReactivity<R, E>(runtime: Atom.AtomRuntime<R, E>): (atom: Atom.Atom<AsyncResult.AsyncResult<unknown, unknown>>, keys: readonly string[],
|
|
4
|
+
export declare function queryReactivity<R, E>(runtime: Atom.AtomRuntime<R, E>): (atom: Atom.Atom<AsyncResult.AsyncResult<unknown, unknown>>, keys: readonly string[], owner?: AtomRegistry.AtomRegistry) => Atom.Atom<AsyncResult.AsyncResult<unknown, unknown>>;
|
|
5
5
|
//# sourceMappingURL=queryReactivity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryReactivity.d.ts","sourceRoot":"","sources":["../../src/internal/queryReactivity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAKpE,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"queryReactivity.d.ts","sourceRoot":"","sources":["../../src/internal/queryReactivity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAKpE,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,sEAIzC,SAAS,MAAM,EAAE,UAAU,YAAY,CAAC,YAAY,0DA0F/E"}
|
|
@@ -7,7 +7,7 @@ import { liveBatches, liveKeys } from "./liveInvalidation.js";
|
|
|
7
7
|
export function queryReactivity(runtime) {
|
|
8
8
|
const service = runtime.atom(Effect.service(Reactivity.Reactivity));
|
|
9
9
|
const cached = new WeakMap();
|
|
10
|
-
return (atom, keys,
|
|
10
|
+
return (atom, keys, owner) => {
|
|
11
11
|
const existing = cached.get(atom);
|
|
12
12
|
if (existing !== undefined) {
|
|
13
13
|
return existing;
|
|
@@ -22,7 +22,6 @@ export function queryReactivity(runtime) {
|
|
|
22
22
|
return get(source);
|
|
23
23
|
}
|
|
24
24
|
const reactivity = context.value;
|
|
25
|
-
get.addFinalizer(track(get.registry));
|
|
26
25
|
let pending;
|
|
27
26
|
let timer;
|
|
28
27
|
function clear() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryReactivity.js","sourceRoot":"","sources":["../../src/internal/queryReactivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAE/C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,UAAU,eAAe,CAAO,OAA+B;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,OAAO,EAAgB,CAAC;IAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"queryReactivity.js","sourceRoot":"","sources":["../../src/internal/queryReactivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as AsyncResult from "effect/reactivity/AsyncResult";
|
|
2
|
+
export declare function queryResult<A, E>(equivalent: (left: A, right: A) => boolean, publish: (value: AsyncResult.AsyncResult<A, E>) => void): (value: AsyncResult.AsyncResult<A, E>) => void;
|
|
3
|
+
//# sourceMappingURL=queryResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryResult.d.ts","sourceRoot":"","sources":["../../src/internal/queryResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAE7D,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,WAErH,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,UAc5C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as AsyncResult from "effect/reactivity/AsyncResult";
|
|
2
|
+
export function queryResult(equivalent, publish) {
|
|
3
|
+
let settled;
|
|
4
|
+
return (value) => {
|
|
5
|
+
if (!AsyncResult.isSuccess(value)) {
|
|
6
|
+
publish(value);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (settled !== undefined && equivalent(settled.value, value.value)) {
|
|
10
|
+
publish(value.waiting ? AsyncResult.waiting(settled) : settled);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (!value.waiting) {
|
|
14
|
+
settled = value;
|
|
15
|
+
}
|
|
16
|
+
publish(value);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=queryResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryResult.js","sourceRoot":"","sources":["../../src/internal/queryResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAE7D,MAAM,UAAU,WAAW,CAAO,UAA0C,EAAE,OAAuD;IACpI,IAAI,OAA8C,CAAC;IACnD,OAAO,CAAC,KAAoC,EAAE,EAAE;QAC/C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,OAAO;QACR,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAChE,OAAO;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { type Context, Effect, Layer } from "effect";
|
|
2
|
+
import * as Atom from "effect/reactivity/Atom";
|
|
2
3
|
import * as AtomRpc from "effect/reactivity/AtomRpc";
|
|
3
4
|
import { type Rpc } from "effect/rpc";
|
|
4
5
|
import type { ClientOptions } from "#clientOptions.ts";
|
|
5
|
-
export interface
|
|
6
|
+
export interface RpcSource {
|
|
6
7
|
readonly annotations: Context.Context<never>;
|
|
7
8
|
readonly requests: ReadonlyMap<string, Rpc.Any>;
|
|
8
9
|
}
|
|
9
|
-
export declare function
|
|
10
|
+
export declare function rpcClient(name: string, source: RpcSource, options: ClientOptions): Layer.Layer<unknown, never, never> & {
|
|
10
11
|
Client: AtomRpc.AtomRpcClient<unknown, `${string}/Client`, Rpc.Any>;
|
|
11
12
|
client: Effect.Effect<{
|
|
12
13
|
readonly [x: string]: <const AsQueue extends boolean = false, const Discard = false>(input: never, options?: {
|
|
@@ -16,6 +17,7 @@ export declare function httpClient(name: string, source: HttpGroup, options: Cli
|
|
|
16
17
|
readonly context?: Context.Context<never> | undefined;
|
|
17
18
|
} | undefined) => never;
|
|
18
19
|
}, never, import("effect/Scope").Scope>;
|
|
19
|
-
runtime:
|
|
20
|
+
runtime: Atom.AtomRuntime<unknown, never>;
|
|
20
21
|
};
|
|
21
|
-
|
|
22
|
+
export declare const socketIdentity: Atom.Writable<string | undefined, string | undefined>;
|
|
23
|
+
//# sourceMappingURL=rpcClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpcClient.d.ts","sourceRoot":"","sources":["../../src/internal/rpcClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,KAAK,GAAG,EAAyC,MAAM,YAAY,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;CAChD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa;;;;;;;;;;;EAkBhF;AAED,eAAO,MAAM,cAAc,uDAA2C,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Effect, Layer } from "effect";
|
|
2
|
+
import * as Atom from "effect/reactivity/Atom";
|
|
3
|
+
import * as AtomRpc from "effect/reactivity/AtomRpc";
|
|
4
|
+
import { RpcClient, RpcGroup, RpcSerialization } from "effect/rpc";
|
|
5
|
+
import * as Socket from "effect/socket/Socket";
|
|
6
|
+
export function rpcClient(name, source, options) {
|
|
7
|
+
const group = RpcGroup.make(...source.requests.values()).annotateMerge(source.annotations);
|
|
8
|
+
function sharedProtocol(identity) {
|
|
9
|
+
return socketProtocol({
|
|
10
|
+
headers: options.headers,
|
|
11
|
+
identity,
|
|
12
|
+
url: options.url.replace(/^http/u, "ws"),
|
|
13
|
+
webSocketConstructor: options.webSocketConstructor,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const protocol = options.protocol ?? sharedProtocol();
|
|
17
|
+
const Client = AtomRpc.Service()(`${name}/Client`, {
|
|
18
|
+
group,
|
|
19
|
+
protocol: options.protocol ?? ((get) => sharedProtocol(get(socketIdentity))),
|
|
20
|
+
});
|
|
21
|
+
const client = Effect.flatMap(Layer.build(protocol), (context) => RpcClient.make(group).pipe(Effect.provideContext(context)));
|
|
22
|
+
const layer = Layer.effect(Client, RpcClient.make(group, { flatten: true })).pipe(Layer.provide(protocol));
|
|
23
|
+
return Object.assign(layer, { Client, client, runtime: Client.runtime });
|
|
24
|
+
}
|
|
25
|
+
export const socketIdentity = Atom.make(undefined);
|
|
26
|
+
const socketMemoMap = Layer.makeMemoMapUnsafe();
|
|
27
|
+
const socketProtocol = Atom.family((options) => {
|
|
28
|
+
const protocol = RpcClient.layerProtocolSocket().pipe(Layer.provide(Socket.layerWebSocket(options.url, { headers: options.headers }).pipe(Layer.provide(options.webSocketConstructor ?? Socket.layerWebSocketConstructorGlobal))), Layer.provide(RpcSerialization.layerNdjson));
|
|
29
|
+
return Layer.effectContext(Effect.flatMap(Effect.scope, (scope) => Layer.buildWithMemoMap(protocol, socketMemoMap, scope)));
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=rpcClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpcClient.js","sourceRoot":"","sources":["../../src/internal/rpcClient.ts"],"names":[],"mappings":"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"}
|
package/dist/live.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ export interface LiveStatus<E> {
|
|
|
30
30
|
}
|
|
31
31
|
export interface LiveOptions<E, R> {
|
|
32
32
|
readonly coalesceWindow?: Duration.Input;
|
|
33
|
+
readonly initialResync?: boolean;
|
|
33
34
|
readonly keyContext?: KeyContext | undefined;
|
|
34
35
|
readonly resume?: Atom.Atom<unknown>;
|
|
35
36
|
readonly resyncKeys: readonly Key[] | ((registry: AtomRegistry.AtomRegistry) => readonly Key[]);
|
package/dist/live.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,QAAQ,EAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAoB,GAAG,EAAE,KAAK,UAAU,EAAY,MAAM,4BAA4B,CAAC;AAG9F,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;IAGnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,YAAY,GAAG,MAAM,GAAG,cAAc,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,KAAK,SAAS,GAAG,EAAE,CAAC,CAAC;IAChG,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/C;AAID,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,QAAQ,EAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAC/C,OAAO,KAAK,KAAK,YAAY,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAoB,GAAG,EAAE,KAAK,UAAU,EAAY,MAAM,4BAA4B,CAAC;AAG9F,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;IAGnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,MAAM,WAAW,UAAU,CAAC,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,YAAY,GAAG,MAAM,GAAG,cAAc,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,KAAK,SAAS,GAAG,EAAE,CAAC,CAAC;IAChG,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/C;AAID,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;EAwGhH"}
|