liminal 0.17.5 → 0.17.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.
Files changed (51) hide show
  1. package/Actor.ts +29 -45
  2. package/ActorTransport.ts +17 -0
  3. package/Audition.ts +27 -48
  4. package/CHANGELOG.md +12 -0
  5. package/Client.ts +104 -173
  6. package/ClientDirectory.ts +104 -0
  7. package/ClientHandle.ts +6 -13
  8. package/F.ts +5 -7
  9. package/Method.ts +5 -13
  10. package/Protocol.ts +85 -68
  11. package/Send.ts +5 -9
  12. package/_util/schema.ts +7 -0
  13. package/dist/Actor.d.ts +15 -17
  14. package/dist/Actor.js +1 -3
  15. package/dist/Actor.js.map +1 -1
  16. package/dist/ActorTransport.d.ts +7 -0
  17. package/dist/ActorTransport.js +2 -0
  18. package/dist/ActorTransport.js.map +1 -0
  19. package/dist/Audition.d.ts +7 -7
  20. package/dist/Audition.js.map +1 -1
  21. package/dist/Client.d.ts +23 -28
  22. package/dist/Client.js +63 -67
  23. package/dist/Client.js.map +1 -1
  24. package/dist/ClientDirectory.d.ts +21 -0
  25. package/dist/ClientDirectory.js +41 -0
  26. package/dist/ClientDirectory.js.map +1 -0
  27. package/dist/ClientHandle.d.ts +6 -5
  28. package/dist/ClientHandle.js.map +1 -1
  29. package/dist/F.d.ts +2 -2
  30. package/dist/F.js +1 -1
  31. package/dist/F.js.map +1 -1
  32. package/dist/Method.d.ts +5 -10
  33. package/dist/Method.js +1 -1
  34. package/dist/Method.js.map +1 -1
  35. package/dist/Protocol.d.ts +51 -34
  36. package/dist/Protocol.js +20 -22
  37. package/dist/Protocol.js.map +1 -1
  38. package/dist/Send.d.ts +2 -1
  39. package/dist/_util/schema.d.ts +4 -0
  40. package/dist/_util/schema.js +5 -0
  41. package/dist/_util/schema.js.map +1 -0
  42. package/dist/errors.d.ts +5 -5
  43. package/dist/errors.js +2 -2
  44. package/dist/errors.js.map +1 -1
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.js +2 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/errors.ts +5 -5
  50. package/index.ts +2 -0
  51. package/package.json +1 -1
package/dist/Client.js CHANGED
@@ -1,14 +1,16 @@
1
- import { Context, Encoding, Deferred, Effect, Layer, Option, PubSub, RcRef, Record, pipe, Ref, Scope, Stream, Take, Schema as S, Array, Struct, Fiber, Exit, Cause, Result, flow, identity, } from "effect";
1
+ import { Context, Encoding, Deferred, Effect, Layer, Option, PubSub, RcRef, Record, pipe, Ref, Scope, Stream, Take, Schema as S, Array, Struct, Fiber, Exit, Cause, Result, flow, } from "effect";
2
2
  import { Socket } from "effect/unstable/socket";
3
3
  import { Worker } from "effect/unstable/workers";
4
4
  import * as Diagnostic from "./_util/Diagnostic.js";
5
+ import { decodeJsonString, encodeJsonString } from "./_util/schema.js";
5
6
  import { AuditionError, ConnectionError, UnresolvedError } from "./errors.js";
6
7
  import {} from "./F.js";
7
- import * as Protocol from "./Protocol.js";
8
+ import { Protocol } from "./Protocol.js";
8
9
  const { debug, span } = Diagnostic.module("Client");
9
10
  export const TypeId = "~liminal/Client";
10
11
  export const Service = () => (id, definition) => {
11
12
  const tag = Context.Service()(id);
13
+ const protocol = Protocol(definition);
12
14
  const events = tag.asEffect().pipe(Effect.flatMap(RcRef.get), Effect.map(Struct.get("events")), Stream.unwrap);
13
15
  const f = (_tag) => Effect.fnUntraced(function* (value) {
14
16
  const { f } = yield* tag.asEffect().pipe(Effect.flatMap(RcRef.get));
@@ -18,7 +20,7 @@ export const Service = () => (id, definition) => {
18
20
  return Object.assign(tag, {
19
21
  [TypeId]: TypeId,
20
22
  definition,
21
- schema: Protocol.ProtocolSchemas(definition.methods, definition.events),
23
+ protocol,
22
24
  events,
23
25
  f,
24
26
  invalidate,
@@ -62,33 +64,38 @@ const make = (client, build, replay) => Effect.gen(function* () {
62
64
  const end = Scope.close(scope, Exit.void);
63
65
  const fiber = yield* listen(Effect.fnUntraced(function* (message) {
64
66
  switch (message._tag) {
65
- case "AuditionSuccess": {
66
- yield* debug("AuditionSucceeded");
67
+ case "Audition.Success": {
68
+ yield* debug("Audition.Succeeded");
67
69
  yield* Deferred.succeed(audition, void 0);
68
70
  return;
69
71
  }
72
+ case "Audition.Failure": {
73
+ const { expected, actual } = message;
74
+ yield* debug("Audition.Failed", { expected, actual });
75
+ return yield* new AuditionError({ value: { expected, actual } });
76
+ }
70
77
  case "Event": {
71
78
  const { event } = message;
72
- yield* debug("EventEmitted", { event });
79
+ yield* debug("Event.Emitted", { event });
73
80
  yield* publishTake([event], true);
74
81
  return;
75
82
  }
76
- case "FSuccess":
77
- case "FFailure": {
83
+ case "F.Success":
84
+ case "F.Failure": {
78
85
  const { id } = message;
79
86
  const deferred = inflights[id];
80
87
  if (deferred) {
81
88
  delete inflights[id];
82
89
  switch (message._tag) {
83
- case "FSuccess": {
90
+ case "F.Success": {
84
91
  const { _tag, value } = message.success;
85
- yield* debug("CallSucceeded", { id, _tag, value });
92
+ yield* debug("Call.Succeeded", { id, _tag, value });
86
93
  yield* Deferred.succeed(deferred, value);
87
94
  return;
88
95
  }
89
- case "FFailure": {
96
+ case "F.Failure": {
90
97
  const { _tag, value } = message.failure;
91
- yield* debug("CallFailed", { id, _tag, value });
98
+ yield* debug("Call.Failed", { id, _tag, value });
92
99
  yield* Deferred.fail(deferred, value);
93
100
  return;
94
101
  }
@@ -96,23 +103,13 @@ const make = (client, build, replay) => Effect.gen(function* () {
96
103
  }
97
104
  return;
98
105
  }
99
- case "AuditionFailure": {
100
- const { client, routed } = message;
101
- yield* debug("AuditionFailed", { client, routed });
102
- return yield* new AuditionError({ value: { client, routed } });
103
- }
104
106
  case "Disconnect": {
105
107
  yield* debug("Disconnected");
106
108
  return;
107
109
  }
108
- case "TransportFailure": {
109
- const { cause } = message;
110
- yield* debug("TransportFailed", { cause });
111
- return yield* new ConnectionError({ cause });
112
- }
113
110
  }
114
111
  })).pipe(Effect.ensuring(Effect.all([
115
- debug("ClientClosed", { unresolved: Record.keys(inflights).length }),
112
+ debug("Client.Closed", { unresolved: Record.keys(inflights).length }),
116
113
  Deferred.succeed(audition, void 0),
117
114
  RcRef.invalidate(rcr),
118
115
  ], { concurrency: "unbounded" })), Effect.forkScoped, Effect.provideService(Scope.Scope, scope));
@@ -152,7 +149,7 @@ const make = (client, build, replay) => Effect.gen(function* () {
152
149
  return yield* Exit.match(exit, {
153
150
  onSuccess: () => new UnresolvedError(),
154
151
  onFailure: flow(Cause.findError, Result.match({
155
- onSuccess: identity,
152
+ onSuccess: Effect.fail,
156
153
  onFailure: () => new UnresolvedError(),
157
154
  })),
158
155
  });
@@ -161,7 +158,7 @@ const make = (client, build, replay) => Effect.gen(function* () {
161
158
  const inflight = yield* Deferred.make();
162
159
  inflights[id] = inflight;
163
160
  yield* send({
164
- _tag: "FPayload",
161
+ _tag: "F.Payload",
165
162
  id,
166
163
  payload: { _tag, value },
167
164
  });
@@ -178,46 +175,36 @@ const make = (client, build, replay) => Effect.gen(function* () {
178
175
  });
179
176
  return rcr;
180
177
  }).pipe(Layer.effect(client));
181
- export const layerSocket = ({ client, url, protocols, replay, }) => make(client, Effect.gen(function* () {
182
- const socket = yield* Socket.makeWebSocket(url ?? "/", {
183
- protocols: ["liminal", Encoding.encodeBase64Url(client.key), ...(protocols ? Array.ensure(protocols) : [])],
184
- });
185
- return {
186
- listen: Effect.fnUntraced(function* (publish) {
187
- yield* socket
188
- .runRaw((raw) => pipe(raw instanceof Uint8Array ? new TextDecoder().decode(raw) : raw, S.decodeUnknownEffect(S.fromJsonString(S.toCodecJson(client.schema.actor))), Effect.andThen(publish)))
189
- .pipe(Effect.catchTag("SocketError", Effect.fnUntraced(function* (cause) {
190
- const { reason } = cause;
191
- switch (reason._tag) {
192
- case "SocketReadError":
193
- case "SocketWriteError":
194
- case "SocketOpenError": {
195
- yield* debug(reason._tag, { cause });
196
- return yield* publish({ _tag: "TransportFailure", cause });
178
+ export const layerSocket = ({ client, url, protocols, replay, }) => {
179
+ const { F, Actor } = client.protocol;
180
+ const encodeFPayload = encodeJsonString(F.Payload);
181
+ const decodeActor = decodeJsonString(Actor);
182
+ return make(client, Effect.gen(function* () {
183
+ const socket = yield* Socket.makeWebSocket(url ?? "/", {
184
+ protocols: ["liminal", Encoding.encodeBase64Url(client.key), ...(protocols ? Array.ensure(protocols) : [])],
185
+ });
186
+ return {
187
+ listen: Effect.fnUntraced(function* (publish) {
188
+ yield* socket
189
+ .runRaw((raw) => pipe(raw instanceof Uint8Array ? new TextDecoder().decode(raw) : raw, decodeActor, Effect.andThen(publish)))
190
+ .pipe(Effect.catchIf(Socket.isSocketError, Effect.fnUntraced(function* (cause) {
191
+ const { reason } = cause;
192
+ if (reason._tag === "SocketCloseError" && reason.code === 1000) {
193
+ yield* debug("Socket.Disconnected");
194
+ return yield* publish({ _tag: "Disconnect" });
197
195
  }
198
- case "SocketCloseError": {
199
- const { code, closeReason } = reason;
200
- switch (code) {
201
- case 1000: {
202
- return yield* publish({ _tag: "Disconnect" });
203
- }
204
- case 4003: {
205
- return yield* S.decodeUnknownEffect(S.fromJsonString(Protocol.AuditionFailure))(closeReason).pipe(Effect.andThen(publish));
206
- }
207
- }
208
- yield* debug("SocketCloseError", { cause });
209
- return yield* publish({ _tag: "TransportFailure", cause });
210
- }
211
- }
212
- })), Effect.catchTag("SchemaError", Effect.die));
213
- }, span("listen")),
214
- send: Effect.fnUntraced(function* (v) {
215
- const write = yield* socket.writer;
216
- const message = yield* S.encodeEffect(S.fromJsonString(S.toCodecJson(client.schema.f.payload)))(v).pipe(Effect.mapError((cause) => new ConnectionError({ cause })));
217
- yield* write(message).pipe(Effect.catchTag("SocketError", (cause) => new ConnectionError({ cause }).asEffect()));
218
- }, span("send"), Effect.scoped),
219
- };
220
- }), replay);
196
+ yield* debug(`SocketErrored.${reason._tag}`, { cause });
197
+ return yield* new ConnectionError({ cause });
198
+ })));
199
+ }, span("listen")),
200
+ send: Effect.fnUntraced(function* (v) {
201
+ const write = yield* socket.writer;
202
+ const message = yield* encodeFPayload(v);
203
+ yield* write(message).pipe(Effect.catchTag("SocketError", (cause) => new ConnectionError({ cause }).asEffect()));
204
+ }, span("send"), Effect.scoped),
205
+ };
206
+ }), replay);
207
+ };
221
208
  export const layerWorker = ({ client, replay, }) => make(client, Effect.gen(function* () {
222
209
  const platform = yield* Worker.WorkerPlatform;
223
210
  const backing = yield* platform
@@ -227,12 +214,21 @@ export const layerWorker = ({ client, replay, }) => make(client, Effect.gen(func
227
214
  return {
228
215
  listen: Effect.fnUntraced(function* (publish) {
229
216
  const stop = yield* Deferred.make();
230
- yield* Effect.raceFirst(backing.run(Effect.fnUntraced(function* (message) {
217
+ yield* backing
218
+ .run(Effect.fnUntraced(function* (message) {
231
219
  yield* publish(message);
232
- if (message._tag === "Disconnect" || message._tag === "AuditionFailure") {
220
+ if (message._tag === "Disconnect" || message._tag === "Audition.Failure") {
233
221
  yield* Deferred.succeed(stop, void 0);
234
222
  }
235
- }), { onSpawn: backing.send(client.key).pipe(Effect.orDie) }), Deferred.await(stop)).pipe(Effect.catchTag("WorkerError", (cause) => publish({ _tag: "TransportFailure", cause })));
223
+ }), {
224
+ onSpawn: backing
225
+ .send({
226
+ _tag: "Audition.Payload",
227
+ client: client.key,
228
+ })
229
+ .pipe(Effect.orDie),
230
+ })
231
+ .pipe(Effect.raceFirst(Deferred.await(stop)), Effect.catchTag("WorkerError", (cause) => new ConnectionError({ cause }).asEffect()));
236
232
  }, span("listen")),
237
233
  send,
238
234
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Client.js","sourceRoot":"","sources":["../Client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../Client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { Schema as S, Effect, Cause } from "effect";
2
+ import type { TopFromString } from "./_util/schema.ts";
3
+ import type { Actor } from "./Actor.ts";
4
+ import type { ActorTransport } from "./ActorTransport.ts";
5
+ import type { ProtocolDefinition, Disconnect, Protocol } from "./Protocol.ts";
6
+ import * as ClientHandle from "./ClientHandle.ts";
7
+ export interface ClientDirectory<Raw, ActorSelf, AttachmentFields extends S.Struct.Fields, D extends ProtocolDefinition> {
8
+ readonly "": {
9
+ readonly Handle: ClientHandle.ClientHandle<ActorSelf, AttachmentFields, D>;
10
+ };
11
+ readonly handles: ReadonlySet<this[""]["Handle"]>;
12
+ readonly register: (raw: Raw, attachments: S.Struct<AttachmentFields>["Type"]) => Effect.Effect<this[""]["Handle"], S.SchemaError, S.Struct<AttachmentFields>["EncodingServices"]>;
13
+ readonly get: (raw: Raw) => Effect.Effect<this[""]["Handle"], Cause.NoSuchElementError>;
14
+ readonly unregister: (raw: Raw) => Effect.Effect<void>;
15
+ }
16
+ export interface HandleEncoders<T, AttachmentFields extends S.Struct.Fields, D extends ProtocolDefinition> {
17
+ attachments: (value: S.Struct<AttachmentFields>["Type"]) => Effect.Effect<T, S.SchemaError, S.Struct<AttachmentFields>["EncodingServices"]>;
18
+ event: (value: Protocol<D>["Event"]["Type"]) => Effect.Effect<T, S.SchemaError, Protocol<D>["Event"]["EncodingServices"]>;
19
+ disconnect: Effect.Effect<T, S.SchemaError, (typeof Disconnect)["EncodingServices"]>;
20
+ }
21
+ export declare const make: <Raw, ActorSelf, ActorId extends string, Name extends TopFromString, AttachmentFields extends S.Struct.Fields, ClientSelf, ClientId extends string, D extends ProtocolDefinition>(_actor: Actor<ActorSelf, ActorId, Name, AttachmentFields, ClientSelf, ClientId, D>, { send, close, snapshot }: ActorTransport<Raw, AttachmentFields, D>) => ClientDirectory<Raw, ActorSelf, AttachmentFields, D>;
@@ -0,0 +1,41 @@
1
+ import { Schema as S, Effect, Cause, Ref } from "effect";
2
+ import * as Diagnostic from "./_util/Diagnostic.js";
3
+ import { phantom } from "./_util/phantom.js";
4
+ import * as ClientHandle from "./ClientHandle.js";
5
+ const { span } = Diagnostic.module("ClientDirectory");
6
+ export const make = (_actor, { send, close, snapshot }) => {
7
+ const raws = new Map();
8
+ const handles = new Set();
9
+ const get = (raw) => Effect.fromNullishOr(raws.get(raw));
10
+ const register = Effect.fnUntraced(function* (raw, attachments) {
11
+ yield* snapshot(raw, attachments);
12
+ const attachmentsRef = yield* Ref.make(attachments);
13
+ const handle = ClientHandle.make({
14
+ attachments: Ref.get(attachmentsRef),
15
+ save: Effect.fnUntraced(function* (attachments) {
16
+ yield* Ref.set(attachmentsRef, attachments);
17
+ yield* snapshot(raw, attachments);
18
+ }),
19
+ send: (_tag, payload) => send(raw, {
20
+ _tag: "Event",
21
+ event: { _tag, ...payload },
22
+ }),
23
+ disconnect: close(raw).pipe(Effect.andThen(() => Effect.sync(() => {
24
+ raws.delete(raw);
25
+ handles.delete(handle);
26
+ }))),
27
+ });
28
+ raws.set(raw, handle);
29
+ handles.add(handle);
30
+ return handle;
31
+ }, span("register"));
32
+ const unregister = (raw) => Effect.sync(() => {
33
+ const handle = raws.get(raw);
34
+ if (handle) {
35
+ raws.delete(raw);
36
+ handles.delete(handle);
37
+ }
38
+ }).pipe(span("unregister"));
39
+ return { ...phantom, handles, register, get, unregister };
40
+ };
41
+ //# sourceMappingURL=ClientDirectory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientDirectory.js","sourceRoot":"","sources":["../ClientDirectory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAOxD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAkCrD,MAAM,CAAC,MAAM,IAAI,GAAG,CAUlB,MAAkF,EAClF,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAA4C,EACb,EAAE;IAGxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAEjC,MAAM,GAAG,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAQ,EAAE,WAA+C;QACrG,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;QACjC,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACnD,MAAM,MAAM,GAAW,YAAY,CAAC,IAAI,CAAC;YACvC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;YACpC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,WAAW;gBAC5C,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;gBAC3C,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;YACnC,CAAC,CAAC;YACF,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CACtB,IAAI,CAAC,GAAG,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAW;aACrC,CAAC;YACJ,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CACzB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAChB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACxB,CAAC,CAAC,CACH,CACF;SACF,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACrB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnB,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IAEpB,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE,CAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAChB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACxB,CAAC;IACH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;IAE7B,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,CAAA;AAC3D,CAAC,CAAA"}
@@ -1,17 +1,18 @@
1
1
  import { Schema as S, Effect } from "effect";
2
+ import type { ProtocolDefinition } from "./Protocol.ts";
2
3
  import type { Send } from "./Send.ts";
3
4
  declare const TypeId: "~liminal/ClientHandle";
4
- export interface ClientHandle<ActorSelf, AttachmentFields extends S.Struct.Fields, EventDefinitions extends Record<string, S.Struct.Fields>> {
5
+ export interface ClientHandle<ActorSelf, AttachmentFields extends S.Struct.Fields, D extends ProtocolDefinition> {
5
6
  readonly [TypeId]: typeof TypeId;
6
- readonly send: Send<ActorSelf, EventDefinitions>;
7
+ readonly send: Send<ActorSelf, D>;
7
8
  readonly attachments: Effect.Effect<S.Struct<AttachmentFields>["Type"]>;
8
9
  readonly save: (attachments: S.Struct<AttachmentFields>["Type"]) => Effect.Effect<void, S.SchemaError, S.Struct<AttachmentFields>["EncodingServices"]>;
9
10
  readonly disconnect: Effect.Effect<void, never, ActorSelf>;
10
11
  }
11
- export declare const make: <ActorSelf, AttachmentFields extends S.Struct.Fields, EventDefinitions extends Record<string, S.Struct.Fields>>({ send, attachments, save, disconnect, }: {
12
- readonly send: Send<ActorSelf, EventDefinitions>;
12
+ export declare const make: <ActorSelf, AttachmentFields extends S.Struct.Fields, D extends ProtocolDefinition>({ send, attachments, save, disconnect, }: {
13
+ readonly send: Send<ActorSelf, D>;
13
14
  readonly attachments: Effect.Effect<S.Struct<AttachmentFields>["Type"]>;
14
15
  readonly save: (attachments: S.Struct<AttachmentFields>["Type"]) => Effect.Effect<void, S.SchemaError, S.Struct<AttachmentFields>["EncodingServices"]>;
15
16
  readonly disconnect: Effect.Effect<void, never, ActorSelf>;
16
- }) => ClientHandle<ActorSelf, AttachmentFields, EventDefinitions>;
17
+ }) => ClientHandle<ActorSelf, AttachmentFields, D>;
17
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ClientHandle.js","sourceRoot":"","sources":["../ClientHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAI5C,MAAM,MAAM,GAAG,uBAAgC,CAAA;AAoB/C,MAAM,CAAC,MAAM,IAAI,GAAG,CAIlB,EACA,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,UAAU,GAWX,EAA+D,EAAE,CAAC,CAAC;IAClE,CAAC,MAAM,CAAC,EAAE,MAAM;IAChB,IAAI;IACJ,WAAW;IACX,IAAI;IACJ,UAAU;CACX,CAAC,CAAA"}
1
+ {"version":3,"file":"ClientHandle.js","sourceRoot":"","sources":["../ClientHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK5C,MAAM,MAAM,GAAG,uBAAgC,CAAA;AAgB/C,MAAM,CAAC,MAAM,IAAI,GAAG,CAAoF,EACtG,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,UAAU,GAWX,EAAgD,EAAE,CAAC,CAAC;IACnD,CAAC,MAAM,CAAC,EAAE,MAAM;IAChB,IAAI;IACJ,WAAW;IACX,IAAI;IACJ,UAAU;CACX,CAAC,CAAA"}
package/dist/F.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect";
2
2
  import type { FError } from "./errors.ts";
3
- import type { MethodDefinition } from "./Method.ts";
4
- export type F<ClientSelf, MethodDefinitions extends Record<string, MethodDefinition.Any>> = <Method extends keyof MethodDefinitions>(method: Method) => (payload: MethodDefinitions[Method]["payload"]["Type"]) => Effect.Effect<MethodDefinitions[Method]["success"]["Type"], FError<MethodDefinitions>, ClientSelf>;
3
+ import type { ProtocolDefinition } from "./Protocol.ts";
4
+ export type F<Self, D extends ProtocolDefinition> = <Method extends keyof D["methods"]>(method: Method) => (payload: D["methods"][Method]["payload"]["Type"]) => Effect.Effect<D["methods"][Method]["success"]["Type"], FError<D>, Self>;
package/dist/F.js CHANGED
@@ -1,2 +1,2 @@
1
- import { Record, Effect } from "effect";
1
+ import { Effect } from "effect";
2
2
  //# sourceMappingURL=F.js.map
package/dist/F.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"F.js","sourceRoot":"","sources":["../F.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA"}
1
+ {"version":3,"file":"F.js","sourceRoot":"","sources":["../F.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA"}
package/dist/Method.d.ts CHANGED
@@ -4,19 +4,14 @@ export interface MethodDefinition<Payload extends S.Top, Success extends S.Top,
4
4
  readonly success: Success;
5
5
  readonly failure: Failure;
6
6
  }
7
- export declare namespace MethodDefinition {
8
- type Any = MethodDefinition<S.Top, S.Top, S.Top>;
9
- type Merge<T, U> = [T] extends [never] ? U : {
10
- [K in keyof T & keyof U]: T[K] extends U[K] ? (U[K] extends T[K] ? T[K] : never) : never;
11
- };
12
- }
13
- export declare const define: <Payload extends S.Top, Success extends S.Top, Failure extends S.Top>({ payload, success, failure, }: {
7
+ export type Any = MethodDefinition<S.Top, S.Top, S.Top>;
8
+ export declare const make: <Payload extends S.Top, Success extends S.Top, Failure extends S.Top>({ payload, success, failure, }: {
14
9
  readonly payload: Payload;
15
10
  readonly success: Success;
16
11
  readonly failure: Failure;
17
12
  }) => MethodDefinition<Payload, Success, Failure>;
18
- export type Handler<MethodDefinition extends MethodDefinition.Any, R> = (payload: MethodDefinition["payload"]["Type"]) => Effect.Effect<MethodDefinition["success"]["Type"], MethodDefinition["failure"]["Type"], R>;
19
- export type Handlers<MethodDefinitions extends Record<string, MethodDefinition.Any>, R> = {
13
+ export type Handler<MethodDefinition extends Any, R> = (payload: MethodDefinition["payload"]["Type"]) => Effect.Effect<MethodDefinition["success"]["Type"], MethodDefinition["failure"]["Type"], R>;
14
+ export type Handlers<MethodDefinitions extends Record<string, Any>, R> = {
20
15
  [K in keyof MethodDefinitions]: Handler<MethodDefinitions[K], R>;
21
16
  };
22
- export declare const handler: <M extends MethodDefinition.Any, R>(_method: M, f: Handler<M, R>) => Handler<M, R>;
17
+ export declare const handler: <M extends Any, R>(_method: M, f: Handler<M, R>) => Handler<M, R>;
package/dist/Method.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { Schema as S, Effect } from "effect";
2
- export const define = ({ payload, success, failure, }) => ({ payload, success, failure });
2
+ export const make = ({ payload, success, failure, }) => ({ payload, success, failure });
3
3
  export const handler = (_method, f) => f;
4
4
  //# sourceMappingURL=Method.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Method.js","sourceRoot":"","sources":["../Method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAkB5C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAsE,EAC1F,OAAO,EACP,OAAO,EACP,OAAO,GAKR,EAA+C,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;AAUlF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAoC,OAAU,EAAE,CAAgB,EAAiB,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"Method.js","sourceRoot":"","sources":["../Method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAU5C,MAAM,CAAC,MAAM,IAAI,GAAG,CAAsE,EACxF,OAAO,EACP,OAAO,EACP,OAAO,GAKR,EAA+C,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;AAUlF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAmB,OAAU,EAAE,CAAgB,EAAiB,EAAE,CAAC,CAAC,CAAA"}
@@ -1,53 +1,70 @@
1
- import { Schema as S } from "effect";
2
- import type { MethodDefinition } from "./Method.ts";
3
- export declare const AuditionSuccess: S.TaggedStruct<"AuditionSuccess", {}>;
4
- export declare const AuditionFailure: S.TaggedStruct<"AuditionFailure", {
5
- readonly client: S.String;
6
- readonly routed: S.String;
7
- }>;
8
- export interface ProtocolSchemas<MethodDefinitions extends Record<string, MethodDefinition.Any>, EventDefinitions extends Record<string, S.Struct.Fields>> {
9
- readonly f: {
10
- readonly payload: S.TaggedStruct<"FPayload", {
1
+ import { Schema as S, Types } from "effect";
2
+ import type * as Method from "./Method.ts";
3
+ export interface ProtocolDefinition<Methods extends Record<string, Method.Any> = Record<string, Method.Any>, Events extends Record<string, S.Struct.Fields> = Record<string, S.Struct.Fields>> {
4
+ readonly methods: Methods;
5
+ readonly events: Events;
6
+ }
7
+ export declare namespace ProtocolDefinition {
8
+ type Merge<T extends ProtocolDefinition, U extends ProtocolDefinition> = ProtocolDefinition<[
9
+ T
10
+ ] extends [never] ? U["methods"] : {
11
+ [K in keyof T["methods"] & keyof U["methods"] as Types.Equals<T["methods"][K], U["methods"][K]> extends true ? K : never]: T["methods"][K];
12
+ }, [
13
+ T
14
+ ] extends [never] ? U["events"] : T["events"] & U["events"]>;
15
+ }
16
+ export interface Protocol<D extends ProtocolDefinition> {
17
+ readonly Audition: {
18
+ readonly Payload: S.TaggedStruct<"Audition.Payload", {
19
+ client: S.String;
20
+ }>;
21
+ readonly Success: S.TaggedStruct<"Audition.Success", {}>;
22
+ readonly Failure: S.TaggedStruct<"Audition.Failure", {
23
+ expected: S.String;
24
+ actual: S.String;
25
+ }>;
26
+ };
27
+ readonly Event: S.TaggedStruct<"Event", {
28
+ readonly event: S.TaggedUnion<{
29
+ readonly [K in keyof D["events"] & string]: S.TaggedStruct<K, D["events"][K]>;
30
+ }>;
31
+ }>;
32
+ readonly F: {
33
+ readonly Payload: S.TaggedStruct<"F.Payload", {
11
34
  readonly id: S.Int;
12
35
  readonly payload: S.TaggedUnion<{
13
- readonly [K in keyof MethodDefinitions & string]: S.TaggedStruct<K, {
14
- readonly value: MethodDefinitions[K]["payload"];
36
+ readonly [K in keyof D["methods"] & string]: S.TaggedStruct<K, {
37
+ readonly value: D["methods"][K]["payload"];
15
38
  }>;
16
39
  }>;
17
40
  }>;
18
- readonly success: S.TaggedStruct<"FSuccess", {
41
+ readonly Success: S.TaggedStruct<"F.Success", {
19
42
  readonly id: S.Int;
20
43
  readonly success: S.TaggedUnion<{
21
- readonly [K in keyof MethodDefinitions & string]: S.TaggedStruct<K, {
22
- readonly value: MethodDefinitions[K]["success"];
44
+ readonly [K in keyof D["methods"] & string]: S.TaggedStruct<K, {
45
+ readonly value: D["methods"][K]["success"];
23
46
  }>;
24
47
  }>;
25
48
  }>;
26
- readonly failure: S.TaggedStruct<"FFailure", {
49
+ readonly Failure: S.TaggedStruct<"F.Failure", {
27
50
  readonly id: S.Int;
28
51
  readonly failure: S.TaggedUnion<{
29
- readonly [K in keyof MethodDefinitions & string]: S.TaggedStruct<K, {
30
- readonly value: MethodDefinitions[K]["failure"];
52
+ readonly [K in keyof D["methods"] & string]: S.TaggedStruct<K, {
53
+ readonly value: D["methods"][K]["failure"];
31
54
  }>;
32
55
  }>;
33
56
  }>;
34
57
  };
35
- readonly event: S.TaggedStruct<"Event", {
36
- readonly event: S.TaggedUnion<{
37
- readonly [K in keyof EventDefinitions & string]: S.TaggedStruct<K, EventDefinitions[K]>;
38
- }>;
39
- }>;
40
- readonly actor: S.Union<[
41
- typeof AuditionSuccess,
42
- typeof AuditionFailure,
43
- this["f"]["success"],
44
- this["f"]["failure"],
45
- this["event"],
46
- typeof Disconnect
58
+ readonly Disconnect: S.TaggedStruct<"Disconnect", {}>;
59
+ readonly Client: S.Union<[this["Audition"]["Payload"], this["F"]["Payload"], this["Disconnect"]]>;
60
+ readonly Actor: S.Union<[
61
+ this["Audition"]["Success"],
62
+ this["Audition"]["Failure"],
63
+ this["F"]["Success"],
64
+ this["F"]["Failure"],
65
+ this["Event"],
66
+ this["Disconnect"]
47
67
  ]>;
48
68
  }
49
69
  export declare const Disconnect: S.TaggedStruct<"Disconnect", {}>;
50
- export declare const TransportFailure: S.TaggedStruct<"TransportFailure", {
51
- readonly cause: S.Unknown;
52
- }>;
53
- export declare const ProtocolSchemas: <MethodDefinitions extends Record<string, MethodDefinition.Any>, EventDefinitions extends Record<string, S.Struct.Fields>>(methods: MethodDefinitions, events: EventDefinitions) => ProtocolSchemas<MethodDefinitions, EventDefinitions>;
70
+ export declare const Protocol: <D extends ProtocolDefinition>({ events, methods }: D) => Protocol<D>;
package/dist/Protocol.js CHANGED
@@ -1,37 +1,35 @@
1
- import { Schema as S, Record } from "effect";
2
- export const AuditionSuccess = S.TaggedStruct("AuditionSuccess", {});
3
- export const AuditionFailure = S.TaggedStruct("AuditionFailure", {
4
- client: S.String,
5
- routed: S.String,
6
- });
1
+ import { Schema as S, Record, Types } from "effect";
7
2
  export const Disconnect = S.TaggedStruct("Disconnect", {});
8
- export const TransportFailure = S.TaggedStruct("TransportFailure", { cause: S.Unknown });
9
- export const ProtocolSchemas = (methods, events) => {
10
- const f = {
11
- payload: S.TaggedStruct("FPayload", {
3
+ const Audition = {
4
+ Payload: S.TaggedStruct("Audition.Payload", {
5
+ client: S.String,
6
+ }),
7
+ Success: S.TaggedStruct("Audition.Success", {}),
8
+ Failure: S.TaggedStruct("Audition.Failure", {
9
+ expected: S.String,
10
+ actual: S.String,
11
+ }),
12
+ };
13
+ export const Protocol = ({ events, methods }) => {
14
+ const F = {
15
+ Payload: S.TaggedStruct("F.Payload", {
12
16
  id: S.Int,
13
17
  payload: S.TaggedUnion(Record.map(methods, ({ payload: value }) => ({ value }))),
14
18
  }),
15
- success: S.TaggedStruct("FSuccess", {
19
+ Success: S.TaggedStruct("F.Success", {
16
20
  id: S.Int,
17
21
  success: S.TaggedUnion(Record.map(methods, ({ success: value }) => ({ value }))),
18
22
  }),
19
- failure: S.TaggedStruct("FFailure", {
23
+ Failure: S.TaggedStruct("F.Failure", {
20
24
  id: S.Int,
21
25
  failure: S.TaggedUnion(Record.map(methods, ({ failure: value }) => ({ value }))),
22
26
  }),
23
27
  };
24
- const event = S.TaggedStruct("Event", {
28
+ const Event = S.TaggedStruct("Event", {
25
29
  event: S.TaggedUnion(events),
26
30
  });
27
- const actor = S.Union([
28
- AuditionSuccess,
29
- AuditionFailure,
30
- f.success,
31
- f.failure,
32
- event,
33
- Disconnect,
34
- ]);
35
- return { f, event, actor };
31
+ const Client = S.Union([Audition.Payload, F.Payload, Disconnect]);
32
+ const Actor = S.Union([Audition.Success, Audition.Failure, F.Success, F.Failure, Event, Disconnect]);
33
+ return { Audition, Event, F, Client, Actor, Disconnect };
36
34
  };
37
35
  //# sourceMappingURL=Protocol.js.map