liminal 0.17.0 → 0.17.1

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 (287) hide show
  1. package/Accumulator.ts +97 -0
  2. package/Actor.ts +118 -0
  3. package/Audition.ts +105 -0
  4. package/CHANGELOG.md +2 -212
  5. package/Client.ts +560 -0
  6. package/ClientHandle.ts +39 -0
  7. package/F.ts +18 -0
  8. package/Method.ts +39 -0
  9. package/Protocol.ts +142 -0
  10. package/Send.ts +8 -0
  11. package/_constants.ts +1 -0
  12. package/_types.ts +27 -0
  13. package/_util/Mutex.ts +13 -0
  14. package/_util/phantom.ts +1 -0
  15. package/dist/Accumulator.d.ts +22 -0
  16. package/dist/Accumulator.js +33 -0
  17. package/dist/Accumulator.js.map +1 -0
  18. package/dist/Actor.d.ts +30 -0
  19. package/dist/Actor.js +31 -0
  20. package/dist/Actor.js.map +1 -0
  21. package/dist/Audition.d.ts +18 -0
  22. package/dist/Audition.js +27 -0
  23. package/dist/Audition.js.map +1 -0
  24. package/dist/Client.d.ts +65 -0
  25. package/dist/Client.js +248 -0
  26. package/dist/Client.js.map +1 -0
  27. package/dist/ClientHandle.d.ts +18 -0
  28. package/dist/ClientHandle.js +10 -0
  29. package/dist/ClientHandle.js.map +1 -0
  30. package/dist/F.d.ts +13 -0
  31. package/dist/F.js +4 -0
  32. package/dist/F.js.map +1 -0
  33. package/dist/Method.d.ts +23 -0
  34. package/dist/Method.js +4 -0
  35. package/dist/Method.js.map +1 -0
  36. package/dist/Protocol.d.ts +96 -0
  37. package/dist/Protocol.js +13 -0
  38. package/dist/Protocol.js.map +1 -0
  39. package/dist/Send.d.ts +3 -0
  40. package/dist/Send.js +2 -0
  41. package/dist/Send.js.map +1 -0
  42. package/dist/_constants.d.ts +1 -0
  43. package/dist/_constants.js +2 -0
  44. package/dist/_constants.js.map +1 -0
  45. package/dist/_types.d.ts +22 -0
  46. package/dist/_types.js +2 -0
  47. package/dist/_types.js.map +1 -0
  48. package/dist/_util/Mutex.d.ts +7 -0
  49. package/dist/_util/Mutex.js +9 -0
  50. package/dist/_util/Mutex.js.map +1 -0
  51. package/dist/_util/phantom.d.ts +3 -0
  52. package/dist/_util/phantom.js +2 -0
  53. package/dist/_util/phantom.js.map +1 -0
  54. package/dist/errors.d.ts +20 -0
  55. package/dist/errors.js +13 -0
  56. package/dist/errors.js.map +1 -0
  57. package/dist/experimental/BranchLive.d.ts +3 -0
  58. package/dist/experimental/BranchLive.js +5 -0
  59. package/dist/experimental/BranchLive.js.map +1 -0
  60. package/dist/experimental/L/L.d.ts +11 -0
  61. package/dist/experimental/L/L.js +12 -0
  62. package/dist/experimental/L/L.js.map +1 -0
  63. package/dist/experimental/L/append.d.ts +3 -0
  64. package/dist/experimental/L/append.js +4 -0
  65. package/dist/experimental/L/append.js.map +1 -0
  66. package/dist/experimental/L/assistant.d.ts +3 -0
  67. package/dist/experimental/L/assistant.js +13 -0
  68. package/dist/experimental/L/assistant.js.map +1 -0
  69. package/dist/experimental/L/assistantSchema.d.ts +3 -0
  70. package/dist/experimental/L/assistantSchema.js +13 -0
  71. package/dist/experimental/L/assistantSchema.js.map +1 -0
  72. package/dist/experimental/L/assistantStream.d.ts +3 -0
  73. package/dist/experimental/L/assistantStream.js +5 -0
  74. package/dist/experimental/L/assistantStream.js.map +1 -0
  75. package/dist/experimental/L/branch.d.ts +2 -0
  76. package/dist/experimental/L/branch.js +4 -0
  77. package/dist/experimental/L/branch.js.map +1 -0
  78. package/dist/experimental/L/clear.d.ts +3 -0
  79. package/dist/experimental/L/clear.js +7 -0
  80. package/dist/experimental/L/clear.js.map +1 -0
  81. package/dist/experimental/L/history.d.ts +3 -0
  82. package/dist/experimental/L/history.js +4 -0
  83. package/dist/experimental/L/history.js.map +1 -0
  84. package/dist/experimental/L/init.d.ts +3 -0
  85. package/dist/experimental/L/init.js +4 -0
  86. package/dist/experimental/L/init.js.map +1 -0
  87. package/dist/experimental/L/matrix.d.ts +10 -0
  88. package/dist/experimental/L/matrix.js +6 -0
  89. package/dist/experimental/L/matrix.js.map +1 -0
  90. package/dist/experimental/L/system.d.ts +1 -0
  91. package/dist/experimental/L/system.js +4 -0
  92. package/dist/experimental/L/system.js.map +1 -0
  93. package/dist/experimental/L/user.d.ts +1 -0
  94. package/dist/experimental/L/user.js +6 -0
  95. package/dist/experimental/L/user.js.map +1 -0
  96. package/dist/experimental/Loader.d.ts +16 -0
  97. package/dist/experimental/Loader.js +20 -0
  98. package/dist/experimental/Loader.js.map +1 -0
  99. package/dist/experimental/TaggedTemplateFunction.d.ts +11 -0
  100. package/dist/experimental/TaggedTemplateFunction.js +14 -0
  101. package/dist/experimental/TaggedTemplateFunction.js.map +1 -0
  102. package/dist/experimental/Template.d.ts +32 -0
  103. package/dist/experimental/Template.js +58 -0
  104. package/dist/experimental/Template.js.map +1 -0
  105. package/dist/experimental/index.d.ts +4 -0
  106. package/dist/experimental/index.js +5 -0
  107. package/dist/experimental/index.js.map +1 -0
  108. package/dist/index.d.ts +9 -7
  109. package/dist/index.js +9 -7
  110. package/dist/index.js.map +1 -1
  111. package/dist/tsconfig.tsbuildinfo +1 -1
  112. package/errors.ts +14 -0
  113. package/experimental/BranchLive.ts +6 -0
  114. package/experimental/L/L.ts +11 -0
  115. package/experimental/L/append.ts +12 -0
  116. package/experimental/L/assistant.ts +16 -0
  117. package/experimental/L/assistantSchema.ts +18 -0
  118. package/experimental/L/assistantStream.ts +9 -0
  119. package/experimental/L/branch.ts +5 -0
  120. package/experimental/L/clear.ts +7 -0
  121. package/experimental/L/history.ts +4 -0
  122. package/experimental/L/init.ts +4 -0
  123. package/experimental/L/matrix.ts +26 -0
  124. package/experimental/L/system.ts +5 -0
  125. package/experimental/L/user.ts +10 -0
  126. package/experimental/Loader.ts +35 -0
  127. package/experimental/TaggedTemplateFunction.ts +44 -0
  128. package/experimental/Template.ts +93 -0
  129. package/experimental/index.ts +4 -0
  130. package/index.ts +9 -7
  131. package/package.json +21 -30
  132. package/tsconfig.json +9 -0
  133. package/Digest.ts +0 -30
  134. package/Envelope.ts +0 -16
  135. package/F/F.ts +0 -1
  136. package/L/L.ts +0 -20
  137. package/L/append.ts +0 -14
  138. package/L/assistant.ts +0 -30
  139. package/L/assistantSchema.ts +0 -61
  140. package/L/assistantStream.ts +0 -22
  141. package/L/branch.ts +0 -20
  142. package/L/clear.ts +0 -14
  143. package/L/disable.ts +0 -13
  144. package/L/enable.ts +0 -24
  145. package/L/events.ts +0 -11
  146. package/L/json.ts +0 -12
  147. package/L/line.ts +0 -22
  148. package/L/listen.ts +0 -26
  149. package/L/messages.ts +0 -10
  150. package/L/prev.ts +0 -4
  151. package/L/provide.ts +0 -10
  152. package/L/self.ts +0 -5
  153. package/L/send.ts +0 -56
  154. package/L/system.ts +0 -25
  155. package/L/thread.ts +0 -16
  156. package/L/toolkit.ts +0 -14
  157. package/L/user.test.ts +0 -33
  158. package/L/user.ts +0 -32
  159. package/LEvent.ts +0 -33
  160. package/Thread.ts +0 -67
  161. package/dist/Digest.d.ts +0 -17
  162. package/dist/Digest.js +0 -7
  163. package/dist/Digest.js.map +0 -1
  164. package/dist/Envelope.d.ts +0 -13
  165. package/dist/Envelope.js +0 -2
  166. package/dist/Envelope.js.map +0 -1
  167. package/dist/F/F.d.ts +0 -1
  168. package/dist/F/F.js +0 -2
  169. package/dist/F/F.js.map +0 -1
  170. package/dist/L/L.d.ts +0 -20
  171. package/dist/L/L.js +0 -21
  172. package/dist/L/L.js.map +0 -1
  173. package/dist/L/append.d.ts +0 -5
  174. package/dist/L/append.js +0 -10
  175. package/dist/L/append.js.map +0 -1
  176. package/dist/L/assistant.d.ts +0 -6
  177. package/dist/L/assistant.js +0 -26
  178. package/dist/L/assistant.js.map +0 -1
  179. package/dist/L/assistantSchema.d.ts +0 -13
  180. package/dist/L/assistantSchema.js +0 -44
  181. package/dist/L/assistantSchema.js.map +0 -1
  182. package/dist/L/assistantStream.d.ts +0 -7
  183. package/dist/L/assistantStream.js +0 -17
  184. package/dist/L/assistantStream.js.map +0 -1
  185. package/dist/L/branch.d.ts +0 -3
  186. package/dist/L/branch.js +0 -19
  187. package/dist/L/branch.js.map +0 -1
  188. package/dist/L/clear.d.ts +0 -5
  189. package/dist/L/clear.js +0 -12
  190. package/dist/L/clear.js.map +0 -1
  191. package/dist/L/disable.d.ts +0 -4
  192. package/dist/L/disable.js +0 -10
  193. package/dist/L/disable.js.map +0 -1
  194. package/dist/L/enable.d.ts +0 -5
  195. package/dist/L/enable.js +0 -13
  196. package/dist/L/enable.js.map +0 -1
  197. package/dist/L/events.d.ts +0 -5
  198. package/dist/L/events.js +0 -6
  199. package/dist/L/events.js.map +0 -1
  200. package/dist/L/json.d.ts +0 -5
  201. package/dist/L/json.js +0 -8
  202. package/dist/L/json.js.map +0 -1
  203. package/dist/L/line.d.ts +0 -5
  204. package/dist/L/line.js +0 -11
  205. package/dist/L/line.js.map +0 -1
  206. package/dist/L/listen.d.ts +0 -7
  207. package/dist/L/listen.js +0 -14
  208. package/dist/L/listen.js.map +0 -1
  209. package/dist/L/messages.d.ts +0 -5
  210. package/dist/L/messages.js +0 -5
  211. package/dist/L/messages.js.map +0 -1
  212. package/dist/L/prev.d.ts +0 -5
  213. package/dist/L/prev.js +0 -5
  214. package/dist/L/prev.js.map +0 -1
  215. package/dist/L/provide.d.ts +0 -3
  216. package/dist/L/provide.js +0 -4
  217. package/dist/L/provide.js.map +0 -1
  218. package/dist/L/self.d.ts +0 -3
  219. package/dist/L/self.js +0 -4
  220. package/dist/L/self.js.map +0 -1
  221. package/dist/L/send.d.ts +0 -6
  222. package/dist/L/send.js +0 -34
  223. package/dist/L/send.js.map +0 -1
  224. package/dist/L/system.d.ts +0 -5
  225. package/dist/L/system.js +0 -14
  226. package/dist/L/system.js.map +0 -1
  227. package/dist/L/thread.d.ts +0 -3
  228. package/dist/L/thread.js +0 -15
  229. package/dist/L/thread.js.map +0 -1
  230. package/dist/L/toolkit.d.ts +0 -4
  231. package/dist/L/toolkit.js +0 -9
  232. package/dist/L/toolkit.js.map +0 -1
  233. package/dist/L/user.d.ts +0 -6
  234. package/dist/L/user.js +0 -13
  235. package/dist/L/user.js.map +0 -1
  236. package/dist/L/user.test.d.ts +0 -1
  237. package/dist/L/user.test.js.map +0 -1
  238. package/dist/LEvent.d.ts +0 -154
  239. package/dist/LEvent.js +0 -19
  240. package/dist/LEvent.js.map +0 -1
  241. package/dist/Thread.d.ts +0 -52
  242. package/dist/Thread.js +0 -32
  243. package/dist/Thread.js.map +0 -1
  244. package/dist/patterns/Debate.d.ts +0 -1
  245. package/dist/patterns/Debate.js +0 -3
  246. package/dist/patterns/Debate.js.map +0 -1
  247. package/dist/patterns/Model.d.ts +0 -6
  248. package/dist/patterns/Model.js +0 -14
  249. package/dist/patterns/Model.js.map +0 -1
  250. package/dist/patterns/Route.d.ts +0 -3
  251. package/dist/patterns/Route.js +0 -14
  252. package/dist/patterns/Route.js.map +0 -1
  253. package/dist/util/JsonValue.d.ts +0 -8
  254. package/dist/util/JsonValue.js +0 -109
  255. package/dist/util/JsonValue.js.map +0 -1
  256. package/dist/util/NeverTool.d.ts +0 -3
  257. package/dist/util/NeverTool.js +0 -3
  258. package/dist/util/NeverTool.js.map +0 -1
  259. package/dist/util/Taggable.d.ts +0 -6
  260. package/dist/util/Taggable.js +0 -13
  261. package/dist/util/Taggable.js.map +0 -1
  262. package/dist/util/extract.d.ts +0 -3
  263. package/dist/util/extract.js +0 -2
  264. package/dist/util/extract.js.map +0 -1
  265. package/dist/util/messageCodec.d.ts +0 -98
  266. package/dist/util/messageCodec.js +0 -5
  267. package/dist/util/messageCodec.js.map +0 -1
  268. package/dist/util/normalizeRaw.d.ts +0 -4
  269. package/dist/util/normalizeRaw.js +0 -75
  270. package/dist/util/normalizeRaw.js.map +0 -1
  271. package/dist/util/prefix.d.ts +0 -1
  272. package/dist/util/prefix.js +0 -2
  273. package/dist/util/prefix.js.map +0 -1
  274. package/dist/util/raw.d.ts +0 -6
  275. package/dist/util/raw.js +0 -5
  276. package/dist/util/raw.js.map +0 -1
  277. package/patterns/Debate.ts +0 -2
  278. package/patterns/Model.ts +0 -29
  279. package/patterns/Route.ts +0 -25
  280. package/util/JsonValue.ts +0 -144
  281. package/util/NeverTool.ts +0 -10
  282. package/util/Taggable.ts +0 -33
  283. package/util/extract.ts +0 -7
  284. package/util/messageCodec.ts +0 -5
  285. package/util/normalizeRaw.ts +0 -93
  286. package/util/prefix.ts +0 -1
  287. package/util/raw.ts +0 -27
package/dist/Client.js ADDED
@@ -0,0 +1,248 @@
1
+ import { Socket, Worker } from "@effect/platform";
2
+ import { Context, Encoding, Deferred, Effect, Layer, Option, PubSub, RcRef, Record, Ref, Scope, Stream, Take, Schema as S, Array, Struct, } from "effect";
3
+ import { AuditionError, ConnectionError } from "./errors.js";
4
+ import { UnresolvedError } from "./F.js";
5
+ import * as Protocol from "./Protocol.js";
6
+ export const TypeId = "~liminal/Client";
7
+ export const Service = () => (id, definition) => {
8
+ const tag = Context.Tag(id)();
9
+ const call = {
10
+ payload: S.TaggedStruct("Call.Payload", {
11
+ id: S.Int,
12
+ payload: S.Union(...Record.toEntries(definition.methods).map(([_tag, { payload }]) => S.TaggedStruct(_tag, { value: S.Struct(payload) }))),
13
+ }),
14
+ success: S.TaggedStruct("Call.Success", {
15
+ id: S.Int,
16
+ value: S.Union(...Record.toEntries(definition.methods).map(([_tag, { success: value }]) => S.TaggedStruct(_tag, { value }))),
17
+ }),
18
+ failure: S.TaggedStruct("Call.Failure", {
19
+ id: S.Int,
20
+ cause: S.Union(...Record.toEntries(definition.methods).map(([_tag, { failure: value }]) => S.TaggedStruct(_tag, { value }))),
21
+ }),
22
+ };
23
+ const event = S.TaggedStruct("Event", {
24
+ event: S.Union(...Object.entries(definition.events).map(([_tag, fields]) => S.TaggedStruct(_tag, fields))),
25
+ });
26
+ const actor = S.Union(call.success, call.failure, event, Protocol.Audition.Success, Protocol.Audition.Failure, Protocol.Disconnect);
27
+ const events = tag.pipe(Effect.flatMap(RcRef.get), Effect.map(Struct.get("events")), Stream.unwrapScoped);
28
+ const f = (_tag) => Effect.fnUntraced(function* (value) {
29
+ const { f } = yield* tag.pipe(Effect.flatMap(RcRef.get));
30
+ return yield* f(_tag)(value);
31
+ }, Effect.scoped);
32
+ const invalidate = tag.pipe(Effect.flatMap(RcRef.invalidate));
33
+ const endEvents = tag.pipe(Effect.flatMap(RcRef.get), Effect.flatMap(({ endEvents }) => endEvents), Effect.scoped, Effect.ignore);
34
+ return Object.assign(tag, {
35
+ [TypeId]: TypeId,
36
+ definition,
37
+ schema: { call, event, actor },
38
+ events,
39
+ endEvents,
40
+ f,
41
+ invalidate,
42
+ });
43
+ };
44
+ const make = (client, build, replay) => Effect.gen(function* () {
45
+ const rcr = yield* RcRef.make({
46
+ acquire: Effect.gen(function* () {
47
+ const { listen, send } = yield* build;
48
+ const audition = yield* Deferred.make();
49
+ const inflights = {};
50
+ let callId = 0;
51
+ let takeCount = 0;
52
+ let finalError;
53
+ const pubsub = yield* PubSub.unbounded();
54
+ const replayState = yield* Ref.make({
55
+ startupOpen: true,
56
+ buffer: [],
57
+ });
58
+ const publishTake = (take, replayable) => Effect.gen(function* () {
59
+ const eventTake = {
60
+ seq: takeCount++,
61
+ take,
62
+ };
63
+ if (replay && replayable) {
64
+ yield* Ref.update(replayState, (state) => {
65
+ if (replay.mode === "startup" && !state.startupOpen) {
66
+ return state;
67
+ }
68
+ const buffer = replay.limit === undefined
69
+ ? [...state.buffer, eventTake]
70
+ : [...(state.buffer.length >= replay.limit ? state.buffer.slice(1) : state.buffer), eventTake];
71
+ const { startupOpen } = state;
72
+ return { startupOpen, buffer };
73
+ });
74
+ }
75
+ yield* PubSub.publish(pubsub, eventTake);
76
+ });
77
+ const events = Effect.gen(function* () {
78
+ const queue = yield* PubSub.subscribe(pubsub);
79
+ const live = (replayCount) => Stream.fromQueue(queue).pipe(Stream.filter((entry) => entry.seq > replayCount), Stream.map((entry) => entry.take), Stream.flattenTake);
80
+ if (!replay) {
81
+ return live(-1);
82
+ }
83
+ const buffer = replay.mode === "all-subscribers"
84
+ ? (yield* Ref.get(replayState)).buffer
85
+ : yield* Ref.modify(replayState, (state) => state.startupOpen
86
+ ? [
87
+ state.buffer,
88
+ {
89
+ startupOpen: false,
90
+ buffer: [],
91
+ },
92
+ ]
93
+ : [[], state]);
94
+ const replayCount = Array.get(buffer, buffer.length - 1).pipe(Option.map(({ seq }) => seq), Option.getOrElse(() => -1));
95
+ return buffer.length === 0
96
+ ? live(replayCount)
97
+ : Stream.concat(Stream.fromIterable(buffer).pipe(Stream.map((entry) => entry.take), Stream.flattenTake), live(replayCount));
98
+ }).pipe(Stream.unwrapScoped);
99
+ yield* listen(Effect.fnUntraced(function* (message) {
100
+ switch (message._tag) {
101
+ case "Audition.Success": {
102
+ yield* Deferred.succeed(audition, void 0);
103
+ break;
104
+ }
105
+ case "Event": {
106
+ const { event } = message;
107
+ yield* publishTake(Take.of(event), true);
108
+ break;
109
+ }
110
+ case "Call.Success":
111
+ case "Call.Failure": {
112
+ const { id } = message;
113
+ const deferred = inflights[id];
114
+ if (deferred) {
115
+ delete inflights[id];
116
+ switch (message._tag) {
117
+ case "Call.Success": {
118
+ yield* Deferred.succeed(deferred, message.value.value);
119
+ break;
120
+ }
121
+ case "Call.Failure": {
122
+ yield* Deferred.fail(deferred, message.cause.value);
123
+ break;
124
+ }
125
+ }
126
+ }
127
+ break;
128
+ }
129
+ case "Audition.Failure": {
130
+ const { actual, expected } = message;
131
+ finalError = AuditionError.make({ value: { actual, expected } });
132
+ yield* Deferred.fail(audition, finalError);
133
+ break;
134
+ }
135
+ case "Disconnect":
136
+ case "TransportFailure": {
137
+ yield* Deferred.succeed(audition, void 0);
138
+ switch (message._tag) {
139
+ case "Disconnect": {
140
+ finalError = UnresolvedError.make();
141
+ yield* publishTake(Take.end);
142
+ break;
143
+ }
144
+ case "TransportFailure": {
145
+ const { cause } = message;
146
+ yield* publishTake(Take.fail((finalError = ConnectionError.make({ cause }))));
147
+ break;
148
+ }
149
+ }
150
+ break;
151
+ }
152
+ }
153
+ })).pipe(Effect.ensuring(Effect.all([
154
+ PubSub.shutdown(pubsub),
155
+ Effect.forEach(Record.values(inflights), (deferred) => Deferred.fail(deferred, finalError ?? UnresolvedError.make()), {
156
+ concurrency: "unbounded",
157
+ }),
158
+ RcRef.invalidate(rcr),
159
+ ], { concurrency: "unbounded" })), Effect.forkScoped);
160
+ yield* Deferred.await(audition);
161
+ const f = (_tag) => Effect.fnUntraced(function* (value) {
162
+ if (finalError)
163
+ return yield* finalError;
164
+ const id = callId++;
165
+ const inflight = yield* Deferred.make();
166
+ inflights[id] = inflight;
167
+ yield* send({
168
+ _tag: "Call.Payload",
169
+ id,
170
+ payload: { _tag, value },
171
+ });
172
+ return yield* Deferred.await(inflight);
173
+ }, Effect.scoped);
174
+ const endEvents = publishTake(Take.end);
175
+ return { events, f, endEvents };
176
+ }),
177
+ });
178
+ return rcr;
179
+ }).pipe(Layer.scoped(client));
180
+ export const layerSocket = ({ client, url, protocols, replay, }) => make(client, Effect.gen(function* () {
181
+ const socket = yield* Socket.makeWebSocket(url ?? "/", {
182
+ protocols: ["liminal", Encoding.encodeBase64Url(client.key), ...(protocols ? Array.ensure(protocols) : [])],
183
+ });
184
+ return {
185
+ listen: Effect.fnUntraced(function* (publish) {
186
+ yield* socket
187
+ .runRaw(Effect.fnUntraced(function* (raw) {
188
+ const message = yield* S.decodeUnknown(S.parseJson(client.schema.actor))(raw instanceof Uint8Array ? new TextDecoder().decode(raw) : raw);
189
+ yield* publish(message);
190
+ }))
191
+ .pipe(Effect.catchTag("ParseError", (cause) => publish({ _tag: "TransportFailure", cause })), Effect.catchTag("SocketError", Effect.fnUntraced(function* (cause) {
192
+ switch (cause.reason) {
193
+ case "Read":
194
+ case "Write":
195
+ case "Open":
196
+ case "OpenTimeout": {
197
+ // TODO
198
+ console.log(cause);
199
+ return yield* publish({ _tag: "TransportFailure", cause });
200
+ }
201
+ case "Close": {
202
+ const { code, closeReason } = cause;
203
+ switch (code) {
204
+ case 1000: {
205
+ return yield* publish({ _tag: "Disconnect" });
206
+ }
207
+ case 4003: {
208
+ const parsed = S.decodeUnknownOption(S.parseJson(Protocol.Audition.Failure))(closeReason);
209
+ if (parsed._tag === "None") {
210
+ return yield* publish({ _tag: "TransportFailure", cause });
211
+ }
212
+ const { actual, expected } = parsed.value;
213
+ return yield* publish({
214
+ _tag: "Audition.Failure",
215
+ actual,
216
+ expected,
217
+ });
218
+ }
219
+ }
220
+ return yield* publish({ _tag: "TransportFailure", cause });
221
+ }
222
+ }
223
+ })));
224
+ }),
225
+ send: Effect.fnUntraced(function* (v) {
226
+ const write = yield* socket.writer;
227
+ const message = yield* S.encode(S.parseJson(client.schema.call.payload))(v).pipe(Effect.mapError((cause) => ConnectionError.make({ cause })));
228
+ yield* write(message).pipe(Effect.catchTag("SocketError", (cause) => ConnectionError.make({ cause })));
229
+ }, Effect.scoped),
230
+ };
231
+ }), replay);
232
+ export const layerWorker = ({ client, replay, }) => make(client, Effect.gen(function* () {
233
+ const manager = yield* Worker.makeManager;
234
+ const worker = yield* manager
235
+ .spawn({})
236
+ .pipe(Effect.catchTag("WorkerError", (cause) => ConnectionError.make({ cause })));
237
+ const send = (message) => worker.executeEffect(message).pipe(Effect.catchTag("WorkerError", (cause) => ConnectionError.make({ cause })));
238
+ return {
239
+ listen: Effect.fnUntraced(function* (publish) {
240
+ yield* worker.execute(client.key).pipe(Stream.catchTag("WorkerError", (cause) => Effect.gen(function* () {
241
+ yield* publish({ _tag: "TransportFailure", cause });
242
+ return Stream.empty;
243
+ }).pipe(Stream.unwrap)), Stream.takeUntil((message) => message._tag === "Disconnect" || message._tag === "Audition.Failure"), Stream.runForEach(publish));
244
+ }),
245
+ send,
246
+ };
247
+ }), replay);
248
+ //# sourceMappingURL=Client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../Client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Schema as S, Effect, ParseResult } from "effect";
2
+ import type { Fields, FieldsRecord } from "./_types.ts";
3
+ import type { Send } from "./Send.ts";
4
+ declare const TypeId: "~liminal/ClientHandle";
5
+ export interface ClientHandle<ActorSelf, AttachmentFields extends Fields, EventDefinitions extends FieldsRecord> {
6
+ readonly [TypeId]: typeof TypeId;
7
+ readonly send: Send<ActorSelf, EventDefinitions>;
8
+ readonly attachments: Effect.Effect<S.Struct<AttachmentFields>["Type"]>;
9
+ readonly save: (attachments: S.Struct<AttachmentFields>["Type"]) => Effect.Effect<void, ParseResult.ParseError>;
10
+ readonly disconnect: Effect.Effect<void, never, ActorSelf>;
11
+ }
12
+ export declare const make: <ActorSelf, AttachmentFields extends Fields, EventDefinitions extends FieldsRecord>({ send, attachments, save, disconnect, }: {
13
+ readonly send: Send<ActorSelf, EventDefinitions>;
14
+ readonly attachments: Effect.Effect<S.Struct<AttachmentFields>["Type"]>;
15
+ readonly save: (attachments: S.Struct<AttachmentFields>["Type"]) => Effect.Effect<void, ParseResult.ParseError>;
16
+ readonly disconnect: Effect.Effect<void, never, ActorSelf>;
17
+ }) => ClientHandle<ActorSelf, AttachmentFields, EventDefinitions>;
18
+ export {};
@@ -0,0 +1,10 @@
1
+ import { Schema as S, Effect, ParseResult } from "effect";
2
+ const TypeId = "~liminal/ClientHandle";
3
+ export const make = ({ send, attachments, save, disconnect, }) => ({
4
+ [TypeId]: TypeId,
5
+ send,
6
+ attachments,
7
+ save,
8
+ disconnect,
9
+ });
10
+ //# sourceMappingURL=ClientHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientHandle.js","sourceRoot":"","sources":["../ClientHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAKzD,MAAM,MAAM,GAAG,uBAAgC,CAAA;AAc/C,MAAM,CAAC,MAAM,IAAI,GAAG,CAAoF,EACtG,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,UAAU,GASX,EAA+D,EAAE,CAAC,CAAC;IAClE,CAAC,MAAM,CAAC,EAAE,MAAM;IAChB,IAAI;IACJ,WAAW;IACX,IAAI;IACJ,UAAU;CACX,CAAC,CAAA"}
package/dist/F.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { Effect, Schema as S } from "effect";
2
+ import type { ClientError } from "./errors.ts";
3
+ import type { MethodDefinition } from "./Method.ts";
4
+ declare const UnresolvedError_base: S.TaggedErrorClass<UnresolvedError, "UnresolvedError", {
5
+ readonly _tag: S.tag<"UnresolvedError">;
6
+ }>;
7
+ export declare class UnresolvedError extends UnresolvedError_base {
8
+ }
9
+ export type FError<MethodDefinitions extends Record<string, MethodDefinition.Any>> = [
10
+ MethodDefinitions[keyof MethodDefinitions]["failure"]["Type"] | ClientError | UnresolvedError
11
+ ][0];
12
+ export type F<ClientSelf, MethodDefinitions extends Record<string, MethodDefinition.Any>> = <Method extends keyof MethodDefinitions>(method: Method) => (payload: S.Struct<MethodDefinitions[Method]["payload"]>["Type"]) => Effect.Effect<MethodDefinitions[Method]["success"]["Type"], FError<MethodDefinitions>, ClientSelf>;
13
+ export {};
package/dist/F.js ADDED
@@ -0,0 +1,4 @@
1
+ import { Record, Effect, Schema as S } from "effect";
2
+ export class UnresolvedError extends S.TaggedError()("UnresolvedError", {}) {
3
+ }
4
+ //# sourceMappingURL=F.js.map
package/dist/F.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"F.js","sourceRoot":"","sources":["../F.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAKpD,MAAM,OAAO,eAAgB,SAAQ,CAAC,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE,EAAE,CAAC;CAAG"}
@@ -0,0 +1,23 @@
1
+ import { Schema as S, Effect } from "effect";
2
+ import type { Fields } from "./_types.ts";
3
+ export interface MethodDefinition<P extends Fields, AA, AI, EA, EI> {
4
+ readonly payload: P;
5
+ readonly success: S.Schema<AA, AI>;
6
+ readonly failure: S.Schema<EA, EI>;
7
+ }
8
+ export declare namespace MethodDefinition {
9
+ type Any = MethodDefinition<Fields, any, any, any, any> | MethodDefinition<Fields, any, any, never, never>;
10
+ type Merge<T, U> = [T] extends [never] ? U : {
11
+ [K in keyof T & keyof U]: T[K] extends U[K] ? (U[K] extends T[K] ? T[K] : never) : never;
12
+ };
13
+ }
14
+ export declare const define: <const P extends Fields, AA, AI, EA, EI>({ payload, success, failure, }: {
15
+ readonly payload: P;
16
+ readonly success: S.Schema<AA, AI>;
17
+ readonly failure: S.Schema<EA, EI>;
18
+ }) => MethodDefinition<P, AA, AI, EA, EI>;
19
+ export type Handler<MethodDefinition extends MethodDefinition.Any, R> = (payload: S.Struct<MethodDefinition["payload"]>["Type"]) => Effect.Effect<MethodDefinition["success"]["Type"], MethodDefinition["failure"]["Type"], R>;
20
+ export type Handlers<MethodDefinitions extends Record<string, MethodDefinition.Any>, R> = {
21
+ [K in keyof MethodDefinitions]: Handler<MethodDefinitions[K], R>;
22
+ };
23
+ export declare const handler: <M extends MethodDefinition.Any, R>(_method: M, f: Handler<M, R>) => Handler<M, R>;
package/dist/Method.js ADDED
@@ -0,0 +1,4 @@
1
+ import { Schema as S, Effect } from "effect";
2
+ export const define = ({ payload, success, failure, }) => ({ payload, success, failure });
3
+ export const handler = (_method, f) => f;
4
+ //# sourceMappingURL=Method.js.map
@@ -0,0 +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;AAoB5C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAyC,EAC7D,OAAO,EACP,OAAO,EACP,OAAO,GAKR,EAAuC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;AAU1E,MAAM,CAAC,MAAM,OAAO,GAAG,CAAoC,OAAU,EAAE,CAAgB,EAAiB,EAAE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,96 @@
1
+ import { Schema as S } from "effect";
2
+ import type { FieldsRecord } from "./_types.ts";
3
+ import type { MethodDefinition } from "./Method.ts";
4
+ export declare namespace Call {
5
+ namespace Payload {
6
+ type Type<MethodDefinitions extends Record<string, MethodDefinition.Any>> = {
7
+ readonly _tag: "Call.Payload";
8
+ readonly id: number;
9
+ readonly payload: {
10
+ [K in keyof MethodDefinitions]: {
11
+ readonly _tag: K;
12
+ readonly value: S.Struct<MethodDefinitions[K]["payload"]>["Type"];
13
+ };
14
+ }[keyof MethodDefinitions];
15
+ };
16
+ type Encoded<MethodDefinitions extends Record<string, MethodDefinition.Any>> = {
17
+ readonly _tag: "Call.Payload";
18
+ readonly id: number;
19
+ readonly payload: {
20
+ [K in keyof MethodDefinitions]: {
21
+ readonly _tag: K;
22
+ readonly value: S.Struct<MethodDefinitions[K]["payload"]>["Encoded"];
23
+ };
24
+ }[keyof MethodDefinitions];
25
+ };
26
+ }
27
+ namespace Success {
28
+ type Type<MethodDefinitions extends Record<string, MethodDefinition.Any>> = {
29
+ readonly _tag: "Call.Success";
30
+ readonly id: number;
31
+ readonly value: {
32
+ readonly [K in keyof MethodDefinitions]: {
33
+ readonly _tag: K;
34
+ readonly value: MethodDefinitions[K]["success"]["Type"];
35
+ };
36
+ }[keyof MethodDefinitions];
37
+ };
38
+ type Encoded<MethodDefinitions extends Record<string, MethodDefinition.Any>> = {
39
+ readonly _tag: "Call.Success";
40
+ readonly id: number;
41
+ readonly value: {
42
+ readonly [K in keyof MethodDefinitions]: {
43
+ readonly _tag: K;
44
+ readonly value: MethodDefinitions[K]["success"]["Encoded"];
45
+ };
46
+ }[keyof MethodDefinitions];
47
+ };
48
+ }
49
+ namespace Failure {
50
+ type Type<MethodDefinitions extends Record<string, MethodDefinition.Any>> = {
51
+ readonly _tag: "Call.Failure";
52
+ readonly id: number;
53
+ readonly cause: {
54
+ readonly [K in keyof MethodDefinitions]: {
55
+ readonly _tag: K;
56
+ readonly value: MethodDefinitions[K]["failure"]["Type"];
57
+ };
58
+ }[keyof MethodDefinitions];
59
+ };
60
+ type Encoded<MethodDefinitions extends Record<string, MethodDefinition.Any>> = {
61
+ readonly _tag: "Call.Failure";
62
+ readonly id: number;
63
+ readonly cause: {
64
+ readonly [K in keyof MethodDefinitions]: {
65
+ readonly _tag: K;
66
+ readonly value: MethodDefinitions[K]["failure"]["Encoded"];
67
+ };
68
+ }[keyof MethodDefinitions];
69
+ };
70
+ }
71
+ }
72
+ export declare namespace Event {
73
+ type Type<EventDefinitions extends FieldsRecord> = {
74
+ readonly _tag: "Event";
75
+ readonly event: FieldsRecord.TaggedMember.Type<EventDefinitions>;
76
+ };
77
+ type Encoded<EventDefinitions extends FieldsRecord> = {
78
+ readonly _tag: "Event";
79
+ readonly event: FieldsRecord.TaggedMember.Encoded<EventDefinitions>;
80
+ };
81
+ }
82
+ export declare const Audition: {
83
+ Success: S.TaggedStruct<"Audition.Success", {}>;
84
+ Failure: S.TaggedStruct<"Audition.Failure", {
85
+ expected: typeof S.String;
86
+ actual: typeof S.String;
87
+ }>;
88
+ };
89
+ export declare const Disconnect: S.TaggedStruct<"Disconnect", {}>;
90
+ export declare const TransportFailure: S.TaggedStruct<"TransportFailure", {
91
+ cause: typeof S.Unknown;
92
+ }>;
93
+ export declare namespace Actor {
94
+ type Type<MethodDefinitions extends Record<string, MethodDefinition.Any>, EventDefinitions extends FieldsRecord> = typeof Audition.Success.Type | typeof Audition.Failure.Type | Call.Success.Type<MethodDefinitions> | Call.Failure.Type<MethodDefinitions> | Event.Type<EventDefinitions> | typeof Disconnect.Type;
95
+ type Encoded<MethodDefinitions extends Record<string, MethodDefinition.Any>, EventDefinitions extends FieldsRecord> = typeof Audition.Success.Encoded | typeof Audition.Failure.Encoded | Call.Success.Encoded<MethodDefinitions> | Call.Failure.Encoded<MethodDefinitions> | Event.Encoded<EventDefinitions> | typeof Disconnect.Encoded;
96
+ }
@@ -0,0 +1,13 @@
1
+ import { Schema as S } from "effect";
2
+ export const Audition = {
3
+ Success: S.TaggedStruct("Audition.Success", {}),
4
+ Failure: S.TaggedStruct("Audition.Failure", {
5
+ expected: S.String,
6
+ actual: S.String,
7
+ }),
8
+ };
9
+ export const Disconnect = S.TaggedStruct("Disconnect", {});
10
+ export const TransportFailure = S.TaggedStruct("TransportFailure", {
11
+ cause: S.Unknown,
12
+ });
13
+ //# sourceMappingURL=Protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Protocol.js","sourceRoot":"","sources":["../Protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAyGpC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC;CACH,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AAE1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE;IACjE,KAAK,EAAE,CAAC,CAAC,OAAO;CACjB,CAAC,CAAA"}
package/dist/Send.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { Schema as S, ParseResult, Effect } from "effect";
2
+ import type { FieldsRecord } from "./_types.ts";
3
+ export type Send<ActorSelf, EventDefinitions extends FieldsRecord> = <K extends keyof EventDefinitions>(tag: K, payload: S.Struct<EventDefinitions[K]>["Type"]) => Effect.Effect<void, ParseResult.ParseError, ActorSelf>;
package/dist/Send.js ADDED
@@ -0,0 +1,2 @@
1
+ import { Schema as S, ParseResult, Effect } from "effect";
2
+ //# sourceMappingURL=Send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Send.js","sourceRoot":"","sources":["../Send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA"}
@@ -0,0 +1 @@
1
+ export declare const SecWebSocketProtocol: "Sec-WebSocket-Protocol";
@@ -0,0 +1,2 @@
1
+ export const SecWebSocketProtocol = "Sec-WebSocket-Protocol";
2
+ //# sourceMappingURL=_constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_constants.js","sourceRoot":"","sources":["../_constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAiC,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { Schema as S } from "effect";
2
+ export type SchemaAll = S.Schema<any, any> | S.Schema<any, never> | S.Schema<never, any> | S.Schema<never, never>;
3
+ export type PropertySignatureAll<Key extends PropertyKey = PropertyKey> = S.PropertySignature<S.PropertySignature.Token, any, Key, S.PropertySignature.Token, any, boolean> | S.PropertySignature<S.PropertySignature.Token, never, Key, S.PropertySignature.Token, any, boolean> | S.PropertySignature<S.PropertySignature.Token, any, Key, S.PropertySignature.Token, never, boolean> | S.PropertySignature<S.PropertySignature.Token, never, Key, S.PropertySignature.Token, never, boolean>;
4
+ export type Field = SchemaAll | PropertySignatureAll;
5
+ export type Fields = {
6
+ readonly [x: keyof any]: Field;
7
+ };
8
+ export type FieldsRecord = Record<string, Fields>;
9
+ export declare namespace FieldsRecord {
10
+ namespace TaggedMember {
11
+ type Type<T extends FieldsRecord, K extends keyof T = keyof T> = {
12
+ [K_ in K]: {
13
+ readonly _tag: K_;
14
+ } & S.Struct<T[K_]>["Type"];
15
+ }[K];
16
+ type Encoded<T extends FieldsRecord, K extends keyof T = keyof T> = {
17
+ [K_ in K]: {
18
+ readonly _tag: K_;
19
+ } & S.Struct<T[K_]>["Encoded"];
20
+ }[K];
21
+ }
22
+ }
package/dist/_types.js ADDED
@@ -0,0 +1,2 @@
1
+ import { Schema as S } from "effect";
2
+ //# sourceMappingURL=_types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_types.js","sourceRoot":"","sources":["../_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ declare const Mutex_base: Context.TagClass<Mutex, "liminal/Mutex", <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>>;
3
+ export declare class Mutex extends Mutex_base {
4
+ }
5
+ export declare const layer: Layer.Layer<Mutex, never, never>;
6
+ export declare const task: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Mutex | R>;
7
+ export {};
@@ -0,0 +1,9 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ export class Mutex extends Context.Tag("liminal/Mutex")() {
3
+ }
4
+ export const layer = Effect.gen(function* () {
5
+ const mutex = yield* Effect.makeSemaphore(1);
6
+ return mutex.withPermits(1);
7
+ }).pipe(Layer.effect(Mutex));
8
+ export const task = (effect) => Mutex.pipe(Effect.flatMap((f) => f(effect)));
9
+ //# sourceMappingURL=Mutex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mutex.js","sourceRoot":"","sources":["../../_util/Mutex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE/C,MAAM,OAAO,KAAM,SAAQ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAGpD;CAAG;AAEN,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAC5C,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAE5B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAU,MAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const phantom: {
2
+ "": never;
3
+ };
@@ -0,0 +1,2 @@
1
+ export const phantom = {};
2
+ //# sourceMappingURL=phantom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phantom.js","sourceRoot":"","sources":["../../_util/phantom.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,EAAmB,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { Schema as S } from "effect";
2
+ declare const AuditionError_base: S.TaggedErrorClass<AuditionError, "AuditionError", {
3
+ readonly _tag: S.tag<"AuditionError">;
4
+ } & {
5
+ value: S.optional<S.Struct<{
6
+ actual: typeof S.String;
7
+ expected: typeof S.String;
8
+ }>>;
9
+ }>;
10
+ export declare class AuditionError extends AuditionError_base {
11
+ }
12
+ declare const ConnectionError_base: S.TaggedErrorClass<ConnectionError, "ConnectionError", {
13
+ readonly _tag: S.tag<"ConnectionError">;
14
+ } & {
15
+ cause: typeof S.Unknown;
16
+ }>;
17
+ export declare class ConnectionError extends ConnectionError_base {
18
+ }
19
+ export type ClientError = AuditionError | ConnectionError;
20
+ export {};
package/dist/errors.js ADDED
@@ -0,0 +1,13 @@
1
+ import { Schema as S } from "effect";
2
+ export class AuditionError extends S.TaggedError()("AuditionError", {
3
+ value: S.Struct({
4
+ actual: S.String,
5
+ expected: S.String,
6
+ }).pipe(S.optional),
7
+ }) {
8
+ }
9
+ export class ConnectionError extends S.TaggedError()("ConnectionError", {
10
+ cause: S.Unknown,
11
+ }) {
12
+ }
13
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,MAAM,OAAO,aAAc,SAAQ,CAAC,CAAC,WAAW,EAAiB,CAAC,eAAe,EAAE;IACjF,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM;KACnB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;CACpB,CAAC;CAAG;AAEL,MAAM,OAAO,eAAgB,SAAQ,CAAC,CAAC,WAAW,EAAmB,CAAC,iBAAiB,EAAE;IACvF,KAAK,EAAE,CAAC,CAAC,OAAO;CACjB,CAAC;CAAG"}
@@ -0,0 +1,3 @@
1
+ import { Chat } from "@effect/ai";
2
+ import { Layer } from "effect";
3
+ export declare const BranchLive: Layer.Layer<Chat.Chat, never, Chat.Chat>;
@@ -0,0 +1,5 @@
1
+ import { Chat } from "@effect/ai";
2
+ import { Effect, Layer } from "effect";
3
+ import { history } from "./L/history.js";
4
+ export const BranchLive = Layer.effect(Chat.Chat, history.pipe(Effect.flatMap(Chat.fromPrompt)));
5
+ //# sourceMappingURL=BranchLive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BranchLive.js","sourceRoot":"","sources":["../../experimental/BranchLive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA"}