effect 4.0.0-beta.44 → 4.0.0-beta.46

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 (151) hide show
  1. package/dist/Equal.d.ts.map +1 -1
  2. package/dist/Equal.js +16 -0
  3. package/dist/Equal.js.map +1 -1
  4. package/dist/Hash.js +1 -1
  5. package/dist/Hash.js.map +1 -1
  6. package/dist/Semaphore.d.ts +1 -1
  7. package/dist/Semaphore.d.ts.map +1 -1
  8. package/dist/Semaphore.js +1 -3
  9. package/dist/Semaphore.js.map +1 -1
  10. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  11. package/dist/unstable/ai/McpServer.js +24 -21
  12. package/dist/unstable/ai/McpServer.js.map +1 -1
  13. package/dist/unstable/eventlog/Event.d.ts +0 -6
  14. package/dist/unstable/eventlog/Event.d.ts.map +1 -1
  15. package/dist/unstable/eventlog/Event.js +0 -5
  16. package/dist/unstable/eventlog/Event.js.map +1 -1
  17. package/dist/unstable/eventlog/EventGroup.d.ts +0 -2
  18. package/dist/unstable/eventlog/EventGroup.d.ts.map +1 -1
  19. package/dist/unstable/eventlog/EventGroup.js +0 -2
  20. package/dist/unstable/eventlog/EventGroup.js.map +1 -1
  21. package/dist/unstable/eventlog/EventJournal.d.ts +22 -5
  22. package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
  23. package/dist/unstable/eventlog/EventJournal.js +126 -67
  24. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  25. package/dist/unstable/eventlog/EventLog.d.ts +88 -34
  26. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  27. package/dist/unstable/eventlog/EventLog.js +215 -141
  28. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  29. package/dist/unstable/eventlog/EventLogEncryption.d.ts +9 -7
  30. package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
  31. package/dist/unstable/eventlog/EventLogEncryption.js +13 -15
  32. package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
  33. package/dist/unstable/eventlog/EventLogMessage.d.ts +228 -0
  34. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -0
  35. package/dist/unstable/eventlog/EventLogMessage.js +214 -0
  36. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -0
  37. package/dist/unstable/eventlog/EventLogRemote.d.ts +109 -194
  38. package/dist/unstable/eventlog/EventLogRemote.d.ts.map +1 -1
  39. package/dist/unstable/eventlog/EventLogRemote.js +165 -320
  40. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  41. package/dist/unstable/eventlog/EventLogServer.d.ts +25 -47
  42. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  43. package/dist/unstable/eventlog/EventLogServer.js +127 -198
  44. package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
  45. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +60 -0
  46. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -0
  47. package/dist/unstable/eventlog/EventLogServerEncrypted.js +166 -0
  48. package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -0
  49. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +183 -0
  50. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -0
  51. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +461 -0
  52. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -0
  53. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +117 -0
  54. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts.map +1 -0
  55. package/dist/unstable/eventlog/EventLogSessionAuth.js +284 -0
  56. package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -0
  57. package/dist/unstable/eventlog/{SqlEventLogJournal.d.ts → SqlEventJournal.d.ts} +2 -2
  58. package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -0
  59. package/dist/unstable/eventlog/{SqlEventLogJournal.js → SqlEventJournal.js} +20 -14
  60. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -0
  61. package/dist/unstable/eventlog/{SqlEventLogServer.d.ts → SqlEventLogServerEncrypted.d.ts} +5 -5
  62. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -0
  63. package/dist/unstable/eventlog/{SqlEventLogServer.js → SqlEventLogServerEncrypted.js} +65 -24
  64. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -0
  65. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.d.ts +25 -0
  66. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -0
  67. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +354 -0
  68. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -0
  69. package/dist/unstable/eventlog/index.d.ts +22 -2
  70. package/dist/unstable/eventlog/index.d.ts.map +1 -1
  71. package/dist/unstable/eventlog/index.js +22 -2
  72. package/dist/unstable/eventlog/index.js.map +1 -1
  73. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.d.ts +2 -0
  74. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.d.ts.map +1 -0
  75. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js +89 -0
  76. package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -0
  77. package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -2
  78. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  79. package/dist/unstable/reactivity/AtomHttpApi.js +2 -2
  80. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  81. package/dist/unstable/reactivity/AtomRpc.d.ts +1 -2
  82. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  83. package/dist/unstable/reactivity/AtomRpc.js +3 -3
  84. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  85. package/dist/unstable/rpc/Rpc.d.ts +25 -4
  86. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  87. package/dist/unstable/rpc/Rpc.js +26 -0
  88. package/dist/unstable/rpc/Rpc.js.map +1 -1
  89. package/dist/unstable/rpc/RpcClient.d.ts +3 -13
  90. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  91. package/dist/unstable/rpc/RpcClient.js +47 -23
  92. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  93. package/dist/unstable/rpc/RpcGroup.d.ts +1 -1
  94. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  95. package/dist/unstable/rpc/RpcMiddleware.d.ts +2 -2
  96. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  97. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  98. package/dist/unstable/rpc/RpcServer.js +3 -2
  99. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  100. package/dist/unstable/rpc/Utils.d.ts +6 -0
  101. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  102. package/dist/unstable/rpc/Utils.js +44 -0
  103. package/dist/unstable/rpc/Utils.js.map +1 -1
  104. package/dist/unstable/schema/Model.d.ts +2 -2
  105. package/dist/unstable/schema/Model.d.ts.map +1 -1
  106. package/dist/unstable/schema/Model.js +2 -4
  107. package/dist/unstable/schema/Model.js.map +1 -1
  108. package/dist/unstable/schema/VariantSchema.d.ts +1 -1
  109. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  110. package/dist/unstable/schema/VariantSchema.js +1 -12
  111. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  112. package/dist/unstable/workers/Transferable.d.ts +1 -1
  113. package/dist/unstable/workers/Transferable.d.ts.map +1 -1
  114. package/dist/unstable/workers/Transferable.js +1 -1
  115. package/dist/unstable/workers/Transferable.js.map +1 -1
  116. package/package.json +1 -1
  117. package/src/Equal.ts +17 -0
  118. package/src/Hash.ts +2 -2
  119. package/src/Semaphore.ts +2 -4
  120. package/src/unstable/ai/McpServer.ts +24 -22
  121. package/src/unstable/eventlog/Event.ts +0 -8
  122. package/src/unstable/eventlog/EventGroup.ts +0 -4
  123. package/src/unstable/eventlog/EventJournal.ts +144 -76
  124. package/src/unstable/eventlog/EventLog.ts +342 -221
  125. package/src/unstable/eventlog/EventLogEncryption.ts +16 -30
  126. package/src/unstable/eventlog/EventLogMessage.ts +277 -0
  127. package/src/unstable/eventlog/EventLogRemote.ts +261 -408
  128. package/src/unstable/eventlog/EventLogServer.ts +182 -274
  129. package/src/unstable/eventlog/EventLogServerEncrypted.ts +206 -0
  130. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +749 -0
  131. package/src/unstable/eventlog/EventLogSessionAuth.ts +437 -0
  132. package/src/unstable/eventlog/{SqlEventLogJournal.ts → SqlEventJournal.ts} +26 -18
  133. package/src/unstable/eventlog/{SqlEventLogServer.ts → SqlEventLogServerEncrypted.ts} +102 -40
  134. package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +500 -0
  135. package/src/unstable/eventlog/index.ts +27 -2
  136. package/src/unstable/eventlog/internal/identityRootSecretDerivation.ts +153 -0
  137. package/src/unstable/reactivity/AtomHttpApi.ts +23 -8
  138. package/src/unstable/reactivity/AtomRpc.ts +16 -5
  139. package/src/unstable/rpc/Rpc.ts +42 -4
  140. package/src/unstable/rpc/RpcClient.ts +59 -24
  141. package/src/unstable/rpc/RpcGroup.ts +1 -1
  142. package/src/unstable/rpc/RpcMiddleware.ts +2 -2
  143. package/src/unstable/rpc/RpcServer.ts +5 -3
  144. package/src/unstable/rpc/Utils.ts +59 -0
  145. package/src/unstable/schema/Model.ts +4 -6
  146. package/src/unstable/schema/VariantSchema.ts +4 -17
  147. package/src/unstable/workers/Transferable.ts +9 -11
  148. package/dist/unstable/eventlog/SqlEventLogJournal.d.ts.map +0 -1
  149. package/dist/unstable/eventlog/SqlEventLogJournal.js.map +0 -1
  150. package/dist/unstable/eventlog/SqlEventLogServer.d.ts.map +0 -1
  151. package/dist/unstable/eventlog/SqlEventLogServer.js.map +0 -1
@@ -1,366 +1,211 @@
1
1
  /**
2
2
  * @since 4.0.0
3
3
  */
4
+ import * as Cache from "../../Cache.js";
4
5
  import * as Context from "../../Context.js";
5
6
  import * as Data from "../../Data.js";
6
- import * as Deferred from "../../Deferred.js";
7
7
  import * as Effect from "../../Effect.js";
8
- import * as Exit from "../../Exit.js";
9
8
  import * as Layer from "../../Layer.js";
9
+ import * as Predicate from "../../Predicate.js";
10
10
  import * as Queue from "../../Queue.js";
11
- import * as RcMap from "../../RcMap.js";
12
- import * as Schedule from "../../Schedule.js";
13
- import * as Schema from "../../Schema.js";
14
- import * as Msgpack from "../encoding/Msgpack.js";
15
- import * as Socket from "../socket/Socket.js";
16
- import { EntryId, RemoteEntry, RemoteId } from "./EventJournal.js";
17
- import { EncryptedEntry, EncryptedRemoteEntry, EventLogEncryption, layerSubtle } from "./EventLogEncryption.js";
11
+ import * as Redacted from "../../Redacted.js";
12
+ import * as RpcClient from "../rpc/RpcClient.js";
13
+ import { Registry } from "./EventLog.js";
14
+ import { EventLogEncryption, layerSubtle } from "./EventLogEncryption.js";
15
+ import { Authenticate, ChangesRpc, ChunkedMessage, EventLogRemoteRpcs, WriteEntries, WriteEntriesUnencrypted } from "./EventLogMessage.js";
16
+ import { encodeSessionAuthPayload, signSessionAuthPayloadBytes } from "./EventLogSessionAuth.js";
17
+ import { makeGetIdentityRootSecretMaterial } from "./internal/identityRootSecretDerivation.js";
18
18
  /**
19
19
  * @since 4.0.0
20
20
  * @category models
21
21
  */
22
22
  export class EventLogRemote extends /*#__PURE__*/Context.Service()("effect/eventlog/EventLogRemote") {}
23
- /**
24
- * @since 4.0.0
25
- * @category protocol
26
- */
27
- export class Hello extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/Hello")({
28
- _tag: /*#__PURE__*/Schema.tag("Hello"),
29
- remoteId: RemoteId
30
- }) {}
31
- /**
32
- * @since 4.0.0
33
- * @category protocol
34
- */
35
- export class ChunkedMessage extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/ChunkedMessage")({
36
- _tag: /*#__PURE__*/Schema.tag("ChunkedMessage"),
37
- id: Schema.Number,
38
- part: /*#__PURE__*/Schema.Tuple([Schema.Number, Schema.Number]),
39
- data: Schema.Uint8Array
40
- }) {
41
- /**
42
- * @since 4.0.0
43
- */
44
- static split(id, data) {
45
- const parts = Math.ceil(data.byteLength / constChunkSize);
46
- const result = new Array(parts);
47
- for (let i = 0; i < parts; i++) {
48
- const start = i * constChunkSize;
49
- const end = Math.min((i + 1) * constChunkSize, data.byteLength);
50
- result[i] = new ChunkedMessage({
51
- _tag: "ChunkedMessage",
52
- id,
53
- part: [i, parts],
54
- data: data.subarray(start, end)
55
- });
56
- }
57
- return result;
58
- }
59
- /**
60
- * @since 4.0.0
61
- */
62
- static join(map, part) {
63
- const [index, total] = part.part;
64
- let entry = map.get(part.id);
65
- if (!entry) {
66
- entry = {
67
- parts: new Array(total),
68
- count: 0,
69
- bytes: 0
70
- };
71
- map.set(part.id, entry);
72
- }
73
- entry.parts[index] = part.data;
74
- entry.count++;
75
- entry.bytes += part.data.byteLength;
76
- if (entry.count !== total) {
77
- return;
78
- }
79
- const data = new Uint8Array(entry.bytes);
80
- let offset = 0;
81
- for (const part of entry.parts) {
82
- data.set(part, offset);
83
- offset += part.byteLength;
84
- }
85
- map.delete(part.id);
86
- return data;
87
- }
88
- }
89
- /**
90
- * @since 4.0.0
91
- * @category protocol
92
- */
93
- export class WriteEntries extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/WriteEntries")({
94
- _tag: /*#__PURE__*/Schema.tag("WriteEntries"),
95
- publicKey: Schema.String,
96
- id: Schema.Number,
97
- iv: Schema.Uint8Array,
98
- encryptedEntries: /*#__PURE__*/Schema.Array(EncryptedEntry)
99
- }) {}
100
- /**
101
- * @since 4.0.0
102
- * @category protocol
103
- */
104
- export class Ack extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/Ack")({
105
- _tag: /*#__PURE__*/Schema.tag("Ack"),
106
- id: Schema.Number,
107
- sequenceNumbers: /*#__PURE__*/Schema.Array(Schema.Number)
108
- }) {}
109
- /**
110
- * @since 4.0.0
111
- * @category protocol
112
- */
113
- export class RequestChanges extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/RequestChanges")({
114
- _tag: /*#__PURE__*/Schema.tag("RequestChanges"),
115
- publicKey: Schema.String,
116
- startSequence: Schema.Number
117
- }) {}
118
- /**
119
- * @since 4.0.0
120
- * @category protocol
121
- */
122
- export class Changes extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/Changes")({
123
- _tag: /*#__PURE__*/Schema.tag("Changes"),
124
- publicKey: Schema.String,
125
- entries: /*#__PURE__*/Schema.Array(EncryptedRemoteEntry)
126
- }) {}
127
- /**
128
- * @since 4.0.0
129
- * @category protocol
130
- */
131
- export class StopChanges extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/StopChanges")({
132
- _tag: /*#__PURE__*/Schema.tag("StopChanges"),
133
- publicKey: Schema.String
134
- }) {}
135
- /**
136
- * @since 4.0.0
137
- * @category protocol
138
- */
139
- export class Ping extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/Ping")({
140
- _tag: /*#__PURE__*/Schema.tag("Ping"),
141
- id: Schema.Number
142
- }) {}
143
- /**
144
- * @since 4.0.0
145
- * @category protocol
146
- */
147
- export class Pong extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/Pong")({
148
- _tag: /*#__PURE__*/Schema.tag("Pong"),
149
- id: Schema.Number
150
- }) {}
151
- /**
152
- * @since 4.0.0
153
- * @category protocol
154
- */
155
- export const ProtocolRequest = /*#__PURE__*/Schema.Union([WriteEntries, RequestChanges, StopChanges, ChunkedMessage, Ping]);
156
- /**
157
- * @since 4.0.0
158
- * @category protocol
159
- */
160
- export const ProtocolRequestMsgpack = /*#__PURE__*/Msgpack.schema(ProtocolRequest);
161
- /**
162
- * @since 4.0.0
163
- * @category protocol
164
- */
165
- export const decodeRequest = /*#__PURE__*/Schema.decodeUnknownEffect(ProtocolRequestMsgpack);
166
- /**
167
- * @since 4.0.0
168
- * @category protocol
169
- */
170
- export const encodeRequest = /*#__PURE__*/Schema.encodeUnknownEffect(ProtocolRequestMsgpack);
171
- /**
172
- * @since 4.0.0
173
- * @category protocol
174
- */
175
- export const ProtocolResponse = /*#__PURE__*/Schema.Union([Hello, Ack, Changes, ChunkedMessage, Pong]);
176
- /**
177
- * @since 4.0.0
178
- * @category protocol
179
- */
180
- export const ProtocolResponseMsgpack = /*#__PURE__*/Msgpack.schema(ProtocolResponse);
181
- /**
182
- * @since 4.0.0
183
- * @category protocol
184
- */
185
- export const decodeResponse = /*#__PURE__*/Schema.decodeUnknownEffect(ProtocolResponseMsgpack);
186
- /**
187
- * @since 4.0.0
188
- * @category protocol
189
- */
190
- export const encodeResponse = /*#__PURE__*/Schema.encodeUnknownEffect(ProtocolResponseMsgpack);
191
- /**
192
- * @since 4.0.0
193
- * @category change
194
- */
195
- export class RemoteAdditions extends /*#__PURE__*/Schema.Class("effect/eventlog/EventLogRemote/RemoteAdditions")({
196
- _tag: /*#__PURE__*/Schema.tag("RemoteAdditions"),
197
- entries: /*#__PURE__*/Schema.Array(RemoteEntry)
198
- }) {}
199
- const constChunkSize = 512_000;
200
23
  /**
201
24
  * @since 4.0.0
202
25
  * @category errors
203
26
  */
204
27
  export class EventLogRemoteError extends /*#__PURE__*/Data.TaggedError("EventLogRemoteError") {}
28
+ const getIdentityRootSecretMaterial = /*#__PURE__*/makeGetIdentityRootSecretMaterial(globalThis.crypto);
29
+ const makeAuthenticate = /*#__PURE__*/Effect.fnUntraced(function* (options) {
30
+ const rootSecretMaterial = yield* getIdentityRootSecretMaterial(options.identity);
31
+ const payload = yield* encodeSessionAuthPayload({
32
+ remoteId: options.hello.remoteId,
33
+ challenge: options.hello.challenge,
34
+ publicKey: options.identity.publicKey,
35
+ signingPublicKey: rootSecretMaterial.signingPublicKey
36
+ });
37
+ const signature = yield* signSessionAuthPayloadBytes({
38
+ payload,
39
+ signingPrivateKey: Redacted.value(rootSecretMaterial.signingPrivateKey)
40
+ });
41
+ return new Authenticate({
42
+ publicKey: options.identity.publicKey,
43
+ signingPublicKey: rootSecretMaterial.signingPublicKey,
44
+ signature,
45
+ algorithm: "Ed25519"
46
+ });
47
+ });
205
48
  /**
206
49
  * @since 4.0.0
207
- * @category entry
50
+ * @category RpcClient
208
51
  */
209
- export const RemoteEntryChange = /*#__PURE__*/Schema.Tuple([RemoteId, /*#__PURE__*/Schema.Array(EntryId)]);
52
+ export class EventLogRemoteClient extends /*#__PURE__*/Context.Service()("effect/unstable/eventlog/EventLogRemote/EventLogRemoteClient") {
53
+ static layer = /*#__PURE__*/Layer.effect(EventLogRemoteClient, /*#__PURE__*/RpcClient.make(EventLogRemoteRpcs, {
54
+ disableTracing: true
55
+ }));
56
+ }
210
57
  /**
211
58
  * @since 4.0.0
212
59
  * @category constructors
213
60
  */
214
- export const fromSocket = options => Effect.gen(function* () {
215
- const socket = yield* Socket.Socket;
216
- const encryption = yield* EventLogEncryption;
217
- const writeRaw = yield* socket.writer;
218
- const writeRequest = request => Effect.gen(function* () {
219
- const data = yield* encodeRequest(request);
220
- if (request._tag !== "WriteEntries" || data.byteLength <= constChunkSize) {
221
- return yield* writeRaw(data);
222
- }
223
- const id = request.id;
224
- for (const part of ChunkedMessage.split(id, data)) {
225
- yield* writeRaw(yield* encodeRequest(part));
61
+ export const makeWith = /*#__PURE__*/Effect.fnUntraced(function* ({
62
+ encodeWrite,
63
+ decodeChanges
64
+ }) {
65
+ const client = yield* EventLogRemoteClient;
66
+ const registry = yield* Registry;
67
+ let hello = yield* client["EventLog.Hello"]().pipe(Effect.mapError(cause => new EventLogRemoteError({
68
+ method: "hello",
69
+ cause
70
+ })));
71
+ const identities = new Map();
72
+ const ensureIdentity = identity => {
73
+ let entry = identities.get(identity.publicKey);
74
+ if (!entry) {
75
+ entry = identity;
76
+ identities.set(identity.publicKey, entry);
226
77
  }
78
+ return entry;
79
+ };
80
+ const authCache = yield* Cache.make({
81
+ lookup: Effect.fnUntraced(function* (publicKey) {
82
+ const identity = identities.get(publicKey);
83
+ hello ??= yield* client["EventLog.Hello"]().pipe(Effect.mapError(cause => new EventLogRemoteError({
84
+ method: "hello",
85
+ cause
86
+ })));
87
+ const authenticate = yield* makeAuthenticate({
88
+ identity,
89
+ hello
90
+ });
91
+ yield* client["EventLog.Authenticate"](authenticate);
92
+ }, Effect.mapError(cause => new EventLogRemoteError({
93
+ method: "authenticate",
94
+ cause
95
+ }))),
96
+ capacity: Number.MAX_SAFE_INTEGER
227
97
  });
228
- let pendingCounter = 0;
229
- const pending = new Map();
230
- const chunks = new Map();
231
- const subscriptions = yield* RcMap.make({
232
- lookup: publicKey => Effect.acquireRelease(Queue.make(), queue => Queue.shutdown(queue).pipe(Effect.andThen(Effect.ignore(writeRequest(new StopChanges({
233
- publicKey
234
- }))))))
98
+ const ensureAuthenticated = identity => {
99
+ ensureIdentity(identity);
100
+ return Cache.get(authCache, identity.publicKey);
101
+ };
102
+ const retryForbidden = (effect, options) => Effect.retry(effect, {
103
+ while(e) {
104
+ hello = null;
105
+ const isForbidden = Predicate.isTagged(e, "EventLogProtocolError") && e.code === "Forbidden";
106
+ return Cache.invalidate(authCache, options.identity.publicKey).pipe(Effect.as(isForbidden));
107
+ },
108
+ times: 5
235
109
  });
236
- const identities = new Map();
237
- const badPing = yield* Deferred.make();
238
- const remoteId = yield* Deferred.make();
239
- let latestPing = 0;
240
- let latestPong = 0;
241
- if (options?.disablePing !== true) {
242
- yield* Effect.suspend(() => {
243
- if (latestPing !== latestPong) {
244
- return Deferred.fail(badPing, new Error("Ping timeout"));
110
+ let chunkedIdCounter = 0;
111
+ const remote = EventLogRemote.of({
112
+ id: hello.remoteId,
113
+ write: Effect.fnUntraced(function* (options) {
114
+ yield* ensureAuthenticated(options.identity);
115
+ const encoded = yield* encodeWrite(options);
116
+ if (encoded.byteLength <= ChunkedMessage.chunkSize) {
117
+ return yield* client["EventLog.WriteSingle"]({
118
+ data: encoded
119
+ });
245
120
  }
246
- return writeRequest(new Ping({
247
- id: ++latestPing
248
- }));
249
- }).pipe(Effect.delay("10 seconds"), Effect.ignore, Effect.forever, Effect.interruptible, Effect.forkScoped);
250
- }
251
- const handleMessage = res => {
252
- switch (res._tag) {
253
- case "Hello":
254
- {
255
- return Deferred.succeed(remoteId, res.remoteId).pipe(Effect.asVoid);
256
- }
257
- case "Ack":
258
- {
259
- return Effect.gen(function* () {
260
- const entry = pending.get(res.id);
261
- if (!entry) return;
262
- pending.delete(res.id);
263
- const {
264
- deferred,
265
- entries,
266
- publicKey
267
- } = entry;
268
- const remoteEntries = res.sequenceNumbers.map((sequenceNumber, i) => {
269
- const entry = entries[i];
270
- return new RemoteEntry({
271
- remoteSequence: sequenceNumber,
272
- entry
273
- });
274
- });
275
- const queue = yield* RcMap.get(subscriptions, publicKey);
276
- yield* Queue.offerAll(queue, remoteEntries);
277
- yield* Deferred.done(deferred, Exit.void);
278
- }).pipe(Effect.scoped);
279
- }
280
- case "Pong":
281
- {
282
- latestPong = res.id;
283
- if (res.id === latestPing) {
284
- return Effect.void;
285
- }
286
- return Deferred.fail(badPing, new Error("Pong id mismatch")).pipe(Effect.asVoid);
287
- }
288
- case "Changes":
289
- {
290
- return Effect.gen(function* () {
291
- const queue = yield* RcMap.get(subscriptions, res.publicKey);
292
- const identity = identities.get(res.publicKey);
293
- if (!identity) {
294
- return;
121
+ for (const part of ChunkedMessage.split(chunkedIdCounter++, encoded)) {
122
+ yield* client["EventLog.WriteChunked"](part);
123
+ }
124
+ }, retryForbidden, Effect.mapError(cause => new EventLogRemoteError({
125
+ method: "write",
126
+ cause
127
+ }))),
128
+ changes: Effect.fnUntraced(function* (options) {
129
+ const outgoing = yield* Queue.make();
130
+ yield* Effect.gen(function* () {
131
+ yield* ensureAuthenticated(options.identity);
132
+ const chunkedState = ChunkedMessage.initialJoinState();
133
+ const incoming = yield* client["EventLog.Changes"]({
134
+ publicKey: options.identity.publicKey,
135
+ storeId: options.storeId,
136
+ startSequence: options.startSequence
137
+ }, {
138
+ asQueue: true
139
+ });
140
+ while (true) {
141
+ const parts = yield* Queue.takeAll(incoming);
142
+ for (let i = 0; i < parts.length; i++) {
143
+ const part = parts[i];
144
+ if (part._tag === "Single") {
145
+ yield* Queue.offerAll(outgoing, yield* decodeChanges(options.identity, part.data));
146
+ continue;
295
147
  }
296
- const entries = yield* encryption.decrypt(identity, res.entries);
297
- yield* Queue.offerAll(queue, entries);
298
- }).pipe(Effect.scoped);
148
+ const data = ChunkedMessage.join(chunkedState, part);
149
+ if (!data) continue;
150
+ yield* Queue.offerAll(outgoing, yield* decodeChanges(options.identity, data));
151
+ }
299
152
  }
300
- case "ChunkedMessage":
301
- {
302
- const data = ChunkedMessage.join(chunks, res);
303
- if (!data) return Effect.void;
304
- return Effect.scoped(Effect.flatMap(decodeResponse(data), handleMessage));
153
+ }).pipe(effect => retryForbidden(effect, options), Effect.mapError(cause => {
154
+ if (cause._tag === "EventLogRemoteError") {
155
+ return cause;
305
156
  }
306
- }
307
- };
308
- yield* socket.run(data => Effect.flatMap(decodeResponse(data), handleMessage)).pipe(Effect.raceFirst(Deferred.await(badPing)), Effect.tapCause(Effect.logDebug), Effect.retry({
309
- schedule: Schedule.exponential(100).pipe(Schedule.either(Schedule.spaced(5000)))
310
- }), Effect.annotateLogs({
311
- service: "EventLogRemote",
312
- method: "fromSocket"
313
- }), Effect.forkScoped, Effect.interruptible);
314
- const id = yield* Deferred.await(remoteId);
315
- return {
316
- id,
317
- write: (identity, entries) => Effect.gen(function* () {
318
- const encrypted = yield* encryption.encrypt(identity, entries);
319
- const deferred = yield* Deferred.make();
320
- const id = pendingCounter++;
321
- pending.set(id, {
322
- entries,
323
- deferred,
324
- publicKey: identity.publicKey
325
- });
326
- yield* Effect.orDie(writeRequest(new WriteEntries({
327
- publicKey: identity.publicKey,
328
- id,
329
- iv: encrypted.iv,
330
- encryptedEntries: encrypted.encryptedEntries.map((encryptedEntry, i) => ({
331
- entryId: entries[i].id,
332
- encryptedEntry
333
- }))
334
- })));
335
- yield* Deferred.await(deferred);
157
+ return new EventLogRemoteError({
158
+ method: "changes",
159
+ cause
160
+ });
161
+ }), Effect.catchCause(cause => Queue.failCause(outgoing, cause)), Effect.forkScoped);
162
+ return outgoing;
336
163
  }),
337
- changes: (identity, startSequence) => Effect.gen(function* () {
338
- const queue = yield* RcMap.get(subscriptions, identity.publicKey);
339
- identities.set(identity.publicKey, identity);
340
- yield* Effect.orDie(writeRequest(new RequestChanges({
341
- publicKey: identity.publicKey,
342
- startSequence
343
- })));
344
- return queue;
345
- })
346
- };
164
+ whenAuthenticated: effect => IdentityService.use(identity => Effect.flatMap(ensureAuthenticated(identity), () => effect))
165
+ });
166
+ yield* registry.registerRemote(remote);
167
+ return remote;
168
+ });
169
+ class IdentityService extends /*#__PURE__*/Context.Service()("effect/eventlog/EventLog/Identity") {}
170
+ /**
171
+ * @since 4.0.0
172
+ * @category constructors
173
+ */
174
+ export const makeEncrypted = /*#__PURE__*/Effect.gen(function* () {
175
+ const encryption = yield* EventLogEncryption;
176
+ return yield* makeWith({
177
+ encodeWrite: options => encryption.encrypt(options.identity, options.entries).pipe(Effect.flatMap(msg => new WriteEntries({
178
+ publicKey: options.identity.publicKey,
179
+ storeId: options.storeId,
180
+ iv: msg.iv,
181
+ encryptedEntries: msg.encryptedEntries.map((entry, i) => ({
182
+ entryId: options.entries[i].id,
183
+ encryptedEntry: entry
184
+ }))
185
+ }).encoded)),
186
+ decodeChanges: (identity, data) => ChangesRpc.decodeEncrypted(data).pipe(Effect.flatMap(entries => encryption.decrypt(identity, entries)))
187
+ });
347
188
  });
348
189
  /**
349
190
  * @since 4.0.0
350
191
  * @category constructors
351
192
  */
352
- export const fromWebSocket = (url, options) => Effect.gen(function* () {
353
- const socket = yield* Socket.makeWebSocket(url);
354
- return yield* fromSocket(options).pipe(Effect.provideService(Socket.Socket, socket));
193
+ export const makeUnencrypted = /*#__PURE__*/makeWith({
194
+ encodeWrite: options => new WriteEntriesUnencrypted({
195
+ publicKey: options.identity.publicKey,
196
+ storeId: options.storeId,
197
+ entries: options.entries
198
+ }).encoded,
199
+ decodeChanges: (_identity, data) => ChangesRpc.decodeUnencrypted(data)
355
200
  });
356
201
  /**
357
202
  * @since 4.0.0
358
- * @category layers
203
+ * @category Layers
359
204
  */
360
- export const layerWebSocket = (url, options) => Layer.effectDiscard(fromWebSocket(url, options));
205
+ export const layerEncrypted = /*#__PURE__*/Layer.effect(EventLogRemote, makeEncrypted).pipe(/*#__PURE__*/Layer.provide(EventLogRemoteClient.layer), /*#__PURE__*/Layer.provide(layerSubtle));
361
206
  /**
362
207
  * @since 4.0.0
363
- * @category layers
208
+ * @category Layers
364
209
  */
365
- export const layerWebSocketBrowser = (url, options) => layerWebSocket(url, options).pipe(Layer.provide([layerSubtle, Socket.layerWebSocketConstructorGlobal]));
210
+ export const layerUnencrypted = /*#__PURE__*/Layer.effect(EventLogRemote, makeUnencrypted).pipe(/*#__PURE__*/Layer.provide(EventLogRemoteClient.layer));
366
211
  //# sourceMappingURL=EventLogRemote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventLogRemote.js","names":["Context","Data","Deferred","Effect","Exit","Layer","Queue","RcMap","Schedule","Schema","Msgpack","Socket","EntryId","RemoteEntry","RemoteId","EncryptedEntry","EncryptedRemoteEntry","EventLogEncryption","layerSubtle","EventLogRemote","Service","Hello","Class","_tag","tag","remoteId","ChunkedMessage","id","Number","part","Tuple","data","Uint8Array","split","parts","Math","ceil","byteLength","constChunkSize","result","Array","i","start","end","min","subarray","join","map","index","total","entry","get","count","bytes","set","offset","delete","WriteEntries","publicKey","String","iv","encryptedEntries","Ack","sequenceNumbers","RequestChanges","startSequence","Changes","entries","StopChanges","Ping","Pong","ProtocolRequest","Union","ProtocolRequestMsgpack","schema","decodeRequest","decodeUnknownEffect","encodeRequest","encodeUnknownEffect","ProtocolResponse","ProtocolResponseMsgpack","decodeResponse","encodeResponse","RemoteAdditions","EventLogRemoteError","TaggedError","RemoteEntryChange","fromSocket","options","gen","socket","encryption","writeRaw","writer","writeRequest","request","pendingCounter","pending","Map","chunks","subscriptions","make","lookup","acquireRelease","queue","shutdown","pipe","andThen","ignore","identities","badPing","latestPing","latestPong","disablePing","suspend","fail","Error","delay","forever","interruptible","forkScoped","handleMessage","res","succeed","asVoid","deferred","remoteEntries","sequenceNumber","remoteSequence","offerAll","done","void","scoped","identity","decrypt","flatMap","run","raceFirst","await","tapCause","logDebug","retry","schedule","exponential","either","spaced","annotateLogs","service","method","write","encrypted","encrypt","orDie","encryptedEntry","entryId","changes","fromWebSocket","url","makeWebSocket","provideService","layerWebSocket","effectDiscard","layerWebSocketBrowser","provide","layerWebSocketConstructorGlobal"],"sources":["../../../src/unstable/eventlog/EventLogRemote.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"EventLogRemote.js","names":["Cache","Context","Data","Effect","Layer","Predicate","Queue","Redacted","RpcClient","Registry","EventLogEncryption","layerSubtle","Authenticate","ChangesRpc","ChunkedMessage","EventLogRemoteRpcs","WriteEntries","WriteEntriesUnencrypted","encodeSessionAuthPayload","signSessionAuthPayloadBytes","makeGetIdentityRootSecretMaterial","EventLogRemote","Service","EventLogRemoteError","TaggedError","getIdentityRootSecretMaterial","globalThis","crypto","makeAuthenticate","fnUntraced","options","rootSecretMaterial","identity","payload","remoteId","hello","challenge","publicKey","signingPublicKey","signature","signingPrivateKey","value","algorithm","EventLogRemoteClient","layer","effect","make","disableTracing","makeWith","encodeWrite","decodeChanges","client","registry","pipe","mapError","cause","method","identities","Map","ensureIdentity","entry","get","set","authCache","lookup","authenticate","capacity","Number","MAX_SAFE_INTEGER","ensureAuthenticated","retryForbidden","retry","while","e","isForbidden","isTagged","code","invalidate","as","times","chunkedIdCounter","remote","of","id","write","encoded","byteLength","chunkSize","data","part","split","changes","outgoing","gen","chunkedState","initialJoinState","incoming","storeId","startSequence","asQueue","parts","takeAll","i","length","_tag","offerAll","join","catchCause","failCause","forkScoped","whenAuthenticated","IdentityService","use","flatMap","registerRemote","makeEncrypted","encryption","encrypt","entries","msg","iv","encryptedEntries","map","entryId","encryptedEntry","decodeEncrypted","decrypt","makeUnencrypted","_identity","decodeUnencrypted","layerEncrypted","provide","layerUnencrypted"],"sources":["../../../src/unstable/eventlog/EventLogRemote.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,KAAK,MAAM,gBAAgB;AACvC,OAAO,KAAKC,OAAO,MAAM,kBAAkB;AAC3C,OAAO,KAAKC,IAAI,MAAM,eAAe;AACrC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAKC,KAAK,MAAM,gBAAgB;AACvC,OAAO,KAAKC,SAAS,MAAM,oBAAoB;AAC/C,OAAO,KAAKC,KAAK,MAAM,gBAAgB;AACvC,OAAO,KAAKC,QAAQ,MAAM,mBAAmB;AAG7C,OAAO,KAAKC,SAAS,MAAM,qBAAqB;AAIhD,SAAwBC,QAAQ,QAAQ,eAAe;AACvD,SAASC,kBAAkB,EAAEC,WAAW,QAAQ,yBAAyB;AACzE,SACEC,YAAY,EACZC,UAAU,EACVC,cAAc,EAEdC,kBAAkB,EAGlBC,YAAY,EACZC,uBAAuB,QAClB,sBAAsB;AAC7B,SAASC,wBAAwB,EAAEC,2BAA2B,QAAQ,0BAA0B;AAChG,SAASC,iCAAiC,QAAQ,4CAA4C;AAE9F;;;;AAIA,OAAM,MAAOC,cAAe,sBAAQpB,OAAO,CAACqB,OAAO,EAe/C,CAAC,gCAAgC,CAAC;AAEtC;;;;AAIA,OAAM,MAAOC,mBAAoB,sBAAQrB,IAAI,CAACsB,WAAW,CAAC,qBAAqB,CAG7E;AAEF,MAAMC,6BAA6B,gBAAGL,iCAAiC,CAACM,UAAU,CAACC,MAAM,CAAC;AAE1F,MAAMC,gBAAgB,gBAAGzB,MAAM,CAAC0B,UAAU,CAAC,WAAUC,OAGpD;EACC,MAAMC,kBAAkB,GAAG,OAAON,6BAA6B,CAACK,OAAO,CAACE,QAAQ,CAAC;EACjF,MAAMC,OAAO,GAAG,OAAOf,wBAAwB,CAAC;IAC9CgB,QAAQ,EAAEJ,OAAO,CAACK,KAAK,CAACD,QAAQ;IAChCE,SAAS,EAAEN,OAAO,CAACK,KAAK,CAACC,SAAS;IAClCC,SAAS,EAAEP,OAAO,CAACE,QAAQ,CAACK,SAAS;IACrCC,gBAAgB,EAAEP,kBAAkB,CAACO;GACtC,CAAC;EACF,MAAMC,SAAS,GAAG,OAAOpB,2BAA2B,CAAC;IACnDc,OAAO;IACPO,iBAAiB,EAAEjC,QAAQ,CAACkC,KAAK,CAACV,kBAAkB,CAACS,iBAAiB;GACvE,CAAC;EAEF,OAAO,IAAI5B,YAAY,CAAC;IACtByB,SAAS,EAAEP,OAAO,CAACE,QAAQ,CAACK,SAAS;IACrCC,gBAAgB,EAAEP,kBAAkB,CAACO,gBAAgB;IACrDC,SAAS;IACTG,SAAS,EAAE;GACZ,CAAC;AACJ,CAAC,CAAC;AAEF;;;;AAIA,OAAM,MAAOC,oBAAqB,sBAAQ1C,OAAO,CAACqB,OAAO,EAGtD,CACD,8DAA8D,CAC/D;EACC,OAAgBsB,KAAK,gBAAGxC,KAAK,CAACyC,MAAM,CAClCF,oBAAoB,eACpBnC,SAAS,CAACsC,IAAI,CAAC/B,kBAAkB,EAAE;IACjCgC,cAAc,EAAE;GACjB,CAAC,CACH;;AAGH;;;;AAIA,OAAO,MAAMC,QAAQ,gBAAG7C,MAAM,CAAC0B,UAAU,CAAC,WAAU;EAAEoB,WAAW;EAAEC;AAAa,CAU/E;EACC,MAAMC,MAAM,GAAG,OAAOR,oBAAoB;EAC1C,MAAMS,QAAQ,GAAG,OAAO3C,QAAQ;EAEhC,IAAI0B,KAAK,GAAyB,OAAOgB,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAACE,IAAI,CACtElD,MAAM,CAACmD,QAAQ,CAAEC,KAAK,IAAK,IAAIhC,mBAAmB,CAAC;IAAEiC,MAAM,EAAE,OAAO;IAAED;EAAK,CAAE,CAAC,CAAC,CAChF;EAED,MAAME,UAAU,GAAG,IAAIC,GAAG,EAA+B;EACzD,MAAMC,cAAc,GAAI3B,QAA6B,IAAI;IACvD,IAAI4B,KAAK,GAAGH,UAAU,CAACI,GAAG,CAAC7B,QAAQ,CAACK,SAAS,CAAC;IAC9C,IAAI,CAACuB,KAAK,EAAE;MACVA,KAAK,GAAG5B,QAAQ;MAChByB,UAAU,CAACK,GAAG,CAAC9B,QAAQ,CAACK,SAAS,EAAEuB,KAAK,CAAC;IAC3C;IACA,OAAOA,KAAK;EACd,CAAC;EAED,MAAMG,SAAS,GAAG,OAAO/D,KAAK,CAAC8C,IAAI,CAAC;IAClCkB,MAAM,EAAE7D,MAAM,CAAC0B,UAAU,CAAC,WAAUQ,SAAiB;MACnD,MAAML,QAAQ,GAAGyB,UAAU,CAACI,GAAG,CAACxB,SAAS,CAAE;MAC3CF,KAAK,KAAK,OAAOgB,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAACE,IAAI,CAC9ClD,MAAM,CAACmD,QAAQ,CAAEC,KAAK,IAAK,IAAIhC,mBAAmB,CAAC;QAAEiC,MAAM,EAAE,OAAO;QAAED;MAAK,CAAE,CAAC,CAAC,CAChF;MACD,MAAMU,YAAY,GAAG,OAAOrC,gBAAgB,CAAC;QAC3CI,QAAQ;QACRG;OACD,CAAC;MACF,OAAOgB,MAAM,CAAC,uBAAuB,CAAC,CAACc,YAAY,CAAC;IACtD,CAAC,EAAE9D,MAAM,CAACmD,QAAQ,CAAEC,KAAK,IAAK,IAAIhC,mBAAmB,CAAC;MAAEiC,MAAM,EAAE,cAAc;MAAED;IAAK,CAAE,CAAC,CAAC,CAAC;IAC1FW,QAAQ,EAAEC,MAAM,CAACC;GAClB,CAAC;EAEF,MAAMC,mBAAmB,GAAIrC,QAA6B,IAAI;IAC5D2B,cAAc,CAAC3B,QAAQ,CAAC;IACxB,OAAOhC,KAAK,CAAC6D,GAAG,CAACE,SAAS,EAAE/B,QAAQ,CAACK,SAAS,CAAC;EACjD,CAAC;EAED,MAAMiC,cAAc,GAAGA,CACrBzB,MAA8B,EAC9Bf,OAEC,KAED3B,MAAM,CAACoE,KAAK,CAAC1B,MAAM,EAAE;IACnB2B,KAAKA,CAACC,CAAC;MACLtC,KAAK,GAAG,IAAI;MACZ,MAAMuC,WAAW,GAAGrE,SAAS,CAACsE,QAAQ,CAACF,CAAC,EAAE,uBAAuB,CAAC,IAC/DA,CAAkC,CAACG,IAAI,KAAK,WAAW;MAC1D,OAAO5E,KAAK,CAAC6E,UAAU,CAACd,SAAS,EAAEjC,OAAO,CAACE,QAAQ,CAACK,SAAS,CAAC,CAACgB,IAAI,CACjElD,MAAM,CAAC2E,EAAE,CAACJ,WAAW,CAAC,CACvB;IACH,CAAC;IACDK,KAAK,EAAE;GACR,CAAC;EAEJ,IAAIC,gBAAgB,GAAG,CAAC;EAExB,MAAMC,MAAM,GAAG5D,cAAc,CAAC6D,EAAE,CAAC;IAC/BC,EAAE,EAAEhD,KAAK,CAACD,QAAQ;IAClBkD,KAAK,EAAEjF,MAAM,CAAC0B,UAAU,CACtB,WAAUC,OAAO;MACf,OAAOuC,mBAAmB,CAACvC,OAAO,CAACE,QAAQ,CAAC;MAC5C,MAAMqD,OAAO,GAAG,OAAOpC,WAAW,CAACnB,OAAO,CAAC;MAC3C,IAAIuD,OAAO,CAACC,UAAU,IAAIxE,cAAc,CAACyE,SAAS,EAAE;QAClD,OAAO,OAAOpC,MAAM,CAAC,sBAAsB,CAAC,CAAC;UAAEqC,IAAI,EAAEH;QAAO,CAAE,CAAC;MACjE;MACA,KAAK,MAAMI,IAAI,IAAI3E,cAAc,CAAC4E,KAAK,CAACV,gBAAgB,EAAE,EAAEK,OAAO,CAAC,EAAE;QACpE,OAAOlC,MAAM,CAAC,uBAAuB,CAAC,CAACsC,IAAI,CAAC;MAC9C;IACF,CAAC,EACDnB,cAAc,EACdnE,MAAM,CAACmD,QAAQ,CAAEC,KAAK,IAAK,IAAIhC,mBAAmB,CAAC;MAAEiC,MAAM,EAAE,OAAO;MAAED;IAAK,CAAE,CAAC,CAAC,CAChF;IACDoC,OAAO,EAAExF,MAAM,CAAC0B,UAAU,CAAC,WAAUC,OAAO;MAC1C,MAAM8D,QAAQ,GAAG,OAAOtF,KAAK,CAACwC,IAAI,EAAoC;MAEtE,OAAO3C,MAAM,CAAC0F,GAAG,CAAC,aAAS;QACzB,OAAOxB,mBAAmB,CAACvC,OAAO,CAACE,QAAQ,CAAC;QAE5C,MAAM8D,YAAY,GAAGhF,cAAc,CAACiF,gBAAgB,EAAE;QACtD,MAAMC,QAAQ,GAAG,OAAO7C,MAAM,CAAC,kBAAkB,CAAC,CAAC;UACjDd,SAAS,EAAEP,OAAO,CAACE,QAAQ,CAACK,SAAS;UACrC4D,OAAO,EAAEnE,OAAO,CAACmE,OAAO;UACxBC,aAAa,EAAEpE,OAAO,CAACoE;SACxB,EAAE;UAAEC,OAAO,EAAE;QAAI,CAAE,CAAC;QAErB,OAAO,IAAI,EAAE;UACX,MAAMC,KAAK,GAAG,OAAO9F,KAAK,CAAC+F,OAAO,CAACL,QAAQ,CAAC;UAC5C,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;YACrC,MAAMb,IAAI,GAAGW,KAAK,CAACE,CAAC,CAAC;YACrB,IAAIb,IAAI,CAACe,IAAI,KAAK,QAAQ,EAAE;cAC1B,OAAOlG,KAAK,CAACmG,QAAQ,CAACb,QAAQ,EAAE,OAAO1C,aAAa,CAACpB,OAAO,CAACE,QAAQ,EAAEyD,IAAI,CAACD,IAAI,CAAC,CAAC;cAClF;YACF;YACA,MAAMA,IAAI,GAAG1E,cAAc,CAAC4F,IAAI,CAACZ,YAAY,EAAEL,IAAI,CAAC;YACpD,IAAI,CAACD,IAAI,EAAE;YACX,OAAOlF,KAAK,CAACmG,QAAQ,CAACb,QAAQ,EAAE,OAAO1C,aAAa,CAACpB,OAAO,CAACE,QAAQ,EAAEwD,IAAI,CAAC,CAAC;UAC/E;QACF;MACF,CAAC,CAAC,CAACnC,IAAI,CACJR,MAAM,IAAKyB,cAAc,CAACzB,MAAM,EAAEf,OAAO,CAAC,EAC3C3B,MAAM,CAACmD,QAAQ,CAAEC,KAAK,IAAI;QACxB,IAAIA,KAAK,CAACiD,IAAI,KAAK,qBAAqB,EAAE;UACxC,OAAOjD,KAAK;QACd;QACA,OAAO,IAAIhC,mBAAmB,CAAC;UAC7BiC,MAAM,EAAE,SAAS;UACjBD;SACD,CAAC;MACJ,CAAC,CAAC,EACFpD,MAAM,CAACwG,UAAU,CAAEpD,KAAK,IAAKjD,KAAK,CAACsG,SAAS,CAAChB,QAAQ,EAAErC,KAAK,CAAC,CAAC,EAC9DpD,MAAM,CAAC0G,UAAU,CAClB;MAED,OAAOjB,QAAQ;IACjB,CAAC,CAAC;IACFkB,iBAAiB,EAAGjE,MAAM,IACxBkE,eAAe,CAACC,GAAG,CAAEhF,QAAQ,IAAK7B,MAAM,CAAC8G,OAAO,CAAC5C,mBAAmB,CAACrC,QAAQ,CAAC,EAAE,MAAMa,MAAM,CAAC;GAChG,CAAC;EAEF,OAAOO,QAAQ,CAAC8D,cAAc,CAACjC,MAAM,CAAC;EAEtC,OAAOA,MAAM;AACf,CAAC,CAAC;AAEF,MAAM8B,eAAgB,sBAAQ9G,OAAO,CAACqB,OAAO,EAAiC,CAC5E,mCAA6D,CAC9D;AAED;;;;AAIA,OAAO,MAAM6F,aAAa,gBAAGhH,MAAM,CAAC0F,GAAG,CAAC,aAAS;EAK/C,MAAMuB,UAAU,GAAG,OAAO1G,kBAAkB;EAE5C,OAAO,OAAOsC,QAAQ,CAAC;IACrBC,WAAW,EAAGnB,OAAO,IACnBsF,UAAU,CAACC,OAAO,CAACvF,OAAO,CAACE,QAAQ,EAAEF,OAAO,CAACwF,OAAO,CAAC,CAACjE,IAAI,CACxDlD,MAAM,CAAC8G,OAAO,CAAEM,GAAG,IACjB,IAAIvG,YAAY,CAAC;MACfqB,SAAS,EAAEP,OAAO,CAACE,QAAQ,CAACK,SAAS;MACrC4D,OAAO,EAAEnE,OAAO,CAACmE,OAAO;MACxBuB,EAAE,EAAED,GAAG,CAACC,EAAE;MACVC,gBAAgB,EAAEF,GAAG,CAACE,gBAAgB,CAACC,GAAG,CAAC,CAAC9D,KAAK,EAAE0C,CAAC,MAAM;QACxDqB,OAAO,EAAE7F,OAAO,CAACwF,OAAO,CAAChB,CAAC,CAAC,CAACnB,EAAE;QAC9ByC,cAAc,EAAEhE;OACjB,CAAC;KACH,CAAC,CAACyB,OAAO,CACX,CACF;IACHnC,aAAa,EAAEA,CAAClB,QAAQ,EAAEwD,IAAI,KAC5B3E,UAAU,CAACgH,eAAe,CAACrC,IAAI,CAAC,CAACnC,IAAI,CACnClD,MAAM,CAAC8G,OAAO,CAAEK,OAAO,IAAKF,UAAU,CAACU,OAAO,CAAC9F,QAAQ,EAAEsF,OAAO,CAAC,CAAC;GAEvE,CAAC;AACJ,CAAC,CAAC;AAEF;;;;AAIA,OAAO,MAAMS,eAAe,gBAIxB/E,QAAQ,CAAC;EACXC,WAAW,EAAGnB,OAAO,IACnB,IAAIb,uBAAuB,CAAC;IAC1BoB,SAAS,EAAEP,OAAO,CAACE,QAAQ,CAACK,SAAS;IACrC4D,OAAO,EAAEnE,OAAO,CAACmE,OAAO;IACxBqB,OAAO,EAAExF,OAAO,CAACwF;GAClB,CAAC,CAACjC,OAAO;EACZnC,aAAa,EAAEA,CAAC8E,SAAS,EAAExC,IAAI,KAAK3E,UAAU,CAACoH,iBAAiB,CAACzC,IAAI;CACtE,CAAC;AAEF;;;;AAIA,OAAO,MAAM0C,cAAc,gBAIvB9H,KAAK,CAACyC,MAAM,CAACxB,cAAc,EAAE8F,aAAa,CAAC,CAAC9D,IAAI,cAClDjD,KAAK,CAAC+H,OAAO,CAACxF,oBAAoB,CAACC,KAAK,CAAC,eACzCxC,KAAK,CAAC+H,OAAO,CAACxH,WAAW,CAAC,CAC3B;AAED;;;;AAIA,OAAO,MAAMyH,gBAAgB,gBAIzBhI,KAAK,CAACyC,MAAM,CAACxB,cAAc,EAAE0G,eAAe,CAAC,CAAC1E,IAAI,cACpDjD,KAAK,CAAC+H,OAAO,CAACxF,oBAAoB,CAACC,KAAK,CAAC,CAC1C","ignoreList":[]}