@abloatai/transaction 0.59.2 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/apiKey.d.ts +10 -11
- package/dist/auth/apiKey.d.ts.map +1 -1
- package/dist/auth/apiKey.js +15 -29
- package/dist/auth/apiKey.js.map +1 -1
- package/dist/auth/browserCredentialSafety.js +1 -1
- package/dist/auth/browserCredentialSafety.js.map +1 -1
- package/dist/auth/capability.d.ts +15 -15
- package/dist/auth/capabilityLifecycle.d.ts +3 -3
- package/dist/auth/capabilityLifecycle.d.ts.map +1 -1
- package/dist/auth/capabilityLifecycle.js +2 -1
- package/dist/auth/capabilityLifecycle.js.map +1 -1
- package/dist/auth/credentialEndpoint.js +1 -1
- package/dist/auth/credentialEndpoint.js.map +1 -1
- package/dist/auth/credentialResult.d.ts +2 -1
- package/dist/auth/credentialResult.d.ts.map +1 -1
- package/dist/auth/credentialResult.js.map +1 -1
- package/dist/auth/credentialSource.js.map +1 -1
- package/dist/auth/identity.js.map +1 -1
- package/dist/auth/schemas.d.ts +5 -5
- package/dist/auth/sessionIssuanceProtocol.d.ts +8 -8
- package/dist/auth/sessionIssuanceProtocol.d.ts.map +1 -1
- package/dist/branches.d.ts +38 -38
- package/dist/claims/contract.d.ts +27 -27
- package/dist/claims/eventContract.d.ts +18 -18
- package/dist/claims/events.d.ts +1 -1
- package/dist/claims/events.d.ts.map +1 -1
- package/dist/claims/routes.d.ts +9 -9
- package/dist/claims/routes.d.ts.map +1 -1
- package/dist/claims/trace.d.ts.map +1 -1
- package/dist/claims/trace.js.map +1 -1
- package/dist/client/ablo.d.ts +11 -8
- package/dist/client/ablo.d.ts.map +1 -1
- package/dist/client/ablo.js +5 -6
- package/dist/client/ablo.js.map +1 -1
- package/dist/client/resources/httpResources.d.ts +1 -169
- package/dist/client/resources/httpResources.d.ts.map +1 -1
- package/dist/client/resources/httpResources.js +1 -1
- package/dist/client/resources/httpResources.js.map +1 -1
- package/dist/client/resources/modelOperations.d.ts +6 -15
- package/dist/client/resources/modelOperations.d.ts.map +1 -1
- package/dist/client/resources/where.d.ts +12 -12
- package/dist/client/surface.d.ts +1 -1
- package/dist/client/surface.d.ts.map +1 -1
- package/dist/client/surface.js +2 -4
- package/dist/client/surface.js.map +1 -1
- package/dist/commit/confirmation/commitEnvelope.d.ts +7 -7
- package/dist/commit/confirmation/httpCommitEnvelope.d.ts +1 -1
- package/dist/commit/confirmation/pendingWrite.d.ts +5 -5
- package/dist/commit/contract.d.ts +249 -249
- package/dist/commit/contract.d.ts.map +1 -1
- package/dist/coordination/index.d.ts +2 -2
- package/dist/coordination/index.d.ts.map +1 -1
- package/dist/coordination/index.js +3 -4
- package/dist/coordination/index.js.map +1 -1
- package/dist/coordination/schema.d.ts +57 -101
- package/dist/coordination/schema.d.ts.map +1 -1
- package/dist/coordination/schema.js +7 -69
- package/dist/coordination/schema.js.map +1 -1
- package/dist/environment.d.ts +3 -3
- package/dist/environment.d.ts.map +1 -1
- package/dist/environment.js.map +1 -1
- package/dist/errorCodes.d.ts +4 -5
- package/dist/errorCodes.d.ts.map +1 -1
- package/dist/errorCodes.js +3 -8
- package/dist/errorCodes.js.map +1 -1
- package/dist/errorObservation.d.ts +14 -14
- package/dist/errors.d.ts +11 -11
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/keys/index.d.ts +1 -1
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js.map +1 -1
- package/dist/observation/contract.d.ts +34 -34
- package/dist/observation/feedContract.d.ts +86 -86
- package/dist/observation/persistence/syncDeltaRow.d.ts +23 -23
- package/dist/observation/persistence/syncDeltaRow.d.ts.map +1 -1
- package/dist/pricing.d.ts +12 -12
- package/dist/schema/audit.js.map +1 -1
- package/dist/schema/ddl.js.map +1 -1
- package/dist/schema/ddlLock.js.map +1 -1
- package/dist/schema/deployment/contracts.d.ts +64 -64
- package/dist/schema/deployment/index.js.map +1 -1
- package/dist/schema/deployment/reconcile.js.map +1 -1
- package/dist/schema/diff.js.map +1 -1
- package/dist/schema/field.d.ts +1 -1
- package/dist/schema/field.d.ts.map +1 -1
- package/dist/schema/loadStrategy.d.ts +2 -2
- package/dist/schema/loadStrategy.d.ts.map +1 -1
- package/dist/schema/openapi.js.map +1 -1
- package/dist/schema/relation.d.ts +3 -3
- package/dist/schema/relation.d.ts.map +1 -1
- package/dist/schema/residency.d.ts +1 -1
- package/dist/schema/roles.d.ts +1 -1
- package/dist/schema/roles.d.ts.map +1 -1
- package/dist/schema/roles.js.map +1 -1
- package/dist/schema/schema.d.ts +1 -1
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/serialize.js.map +1 -1
- package/dist/schema/sugar.d.ts.map +1 -1
- package/dist/schema/tenancy.d.ts +2 -2
- package/dist/server/storageMode.d.ts +1 -1
- package/dist/sessions/client.d.ts +29 -0
- package/dist/sessions/client.d.ts.map +1 -0
- package/dist/sessions/client.js +69 -0
- package/dist/sessions/client.js.map +1 -0
- package/dist/sessions/contract.d.ts +97 -0
- package/dist/sessions/contract.d.ts.map +1 -0
- package/dist/sessions/contract.js +5 -0
- package/dist/sessions/contract.js.map +1 -0
- package/dist/{auth/sessionMint.d.ts → sessions/create.d.ts} +4 -4
- package/dist/sessions/create.d.ts.map +1 -0
- package/dist/{auth/sessionMint.js → sessions/create.js} +11 -10
- package/dist/sessions/create.js.map +1 -0
- package/dist/sessions/handler.d.ts +23 -0
- package/dist/sessions/handler.d.ts.map +1 -0
- package/dist/sessions/handler.js +55 -0
- package/dist/sessions/handler.js.map +1 -0
- package/dist/sessions/index.d.ts +14 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +14 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/{transport/connection/credentialLifecycle.d.ts → sessions/lifecycle.d.ts} +6 -6
- package/dist/sessions/lifecycle.d.ts.map +1 -0
- package/dist/{transport/connection/credentialLifecycle.js → sessions/lifecycle.js} +5 -5
- package/dist/sessions/lifecycle.js.map +1 -0
- package/dist/sessions/source.d.ts +24 -0
- package/dist/sessions/source.d.ts.map +1 -0
- package/dist/sessions/source.js +56 -0
- package/dist/sessions/source.js.map +1 -0
- package/dist/source/adapters/adapterProfile.d.ts +6 -6
- package/dist/source/adapters/conformance.js.map +1 -1
- package/dist/source/adapters/contract.d.ts +14 -14
- package/dist/source/adapters/kysely.js.map +1 -1
- package/dist/source/adapters/memory.js.map +1 -1
- package/dist/source/adapters/prisma.js.map +1 -1
- package/dist/source/connector/client.d.ts.map +1 -1
- package/dist/source/connector/client.js.map +1 -1
- package/dist/source/connector/protocol.d.ts.map +1 -1
- package/dist/source/delivery/pushQueue.d.ts.map +1 -1
- package/dist/source/delivery/pushQueue.js.map +1 -1
- package/dist/source/endpoint/signing.d.ts +4 -4
- package/dist/source/endpoint/signing.d.ts.map +1 -1
- package/dist/source/outbox/contract.d.ts +4 -4
- package/dist/testing/fixtures/httpResponses.d.ts +2 -2
- package/dist/testing/fixtures/httpResponses.d.ts.map +1 -1
- package/dist/testing/fixtures/httpResponses.js.map +1 -1
- package/dist/transport/connection/index.d.ts +0 -1
- package/dist/transport/connection/index.d.ts.map +1 -1
- package/dist/transport/connection/index.js +0 -1
- package/dist/transport/connection/index.js.map +1 -1
- package/dist/transport/connection/manager.d.ts +1 -1
- package/dist/transport/connection/manager.d.ts.map +1 -1
- package/dist/transport/connection/manager.js.map +1 -1
- package/dist/transport/connection/networkProbe.d.ts +5 -18
- package/dist/transport/connection/networkProbe.d.ts.map +1 -1
- package/dist/transport/connection/networkProbe.js.map +1 -1
- package/dist/transport/http/client.d.ts +11 -19
- package/dist/transport/http/client.d.ts.map +1 -1
- package/dist/transport/http/client.js +12 -14
- package/dist/transport/http/client.js.map +1 -1
- package/dist/transport/http/options.d.ts +4 -1
- package/dist/transport/http/options.d.ts.map +1 -1
- package/dist/transport/http/transport.d.ts +4 -10
- package/dist/transport/http/transport.d.ts.map +1 -1
- package/dist/transport/http/transport.js +9 -51
- package/dist/transport/http/transport.js.map +1 -1
- package/dist/transport/websocket/commitFrames.d.ts +1 -2
- package/dist/transport/websocket/commitFrames.d.ts.map +1 -1
- package/dist/transport/websocket/commitFrames.js.map +1 -1
- package/dist/transport/websocket/frameHandlers.d.ts +0 -14
- package/dist/transport/websocket/frameHandlers.d.ts.map +1 -1
- package/dist/transport/websocket/frameHandlers.js +1 -71
- package/dist/transport/websocket/frameHandlers.js.map +1 -1
- package/dist/transport/websocket/heartbeat.d.ts.map +1 -1
- package/dist/transport/websocket/heartbeat.js.map +1 -1
- package/dist/transport/websocket/session.d.ts.map +1 -1
- package/dist/transport/websocket/session.js +72 -32
- package/dist/transport/websocket/session.js.map +1 -1
- package/dist/transport/websocket/sessionContract.d.ts +3 -14
- package/dist/transport/websocket/sessionContract.d.ts.map +1 -1
- package/dist/transport/websocket/transport.d.ts +5 -42
- package/dist/transport/websocket/transport.d.ts.map +1 -1
- package/dist/transport/websocket/transport.js +14 -101
- package/dist/transport/websocket/transport.js.map +1 -1
- package/dist/wire/accountResponses.d.ts +31 -31
- package/dist/wire/auth.d.ts +3 -3
- package/dist/wire/bootstrapReason.d.ts +2 -2
- package/dist/wire/dataSourceResponses.d.ts +2 -2
- package/dist/wire/dataSourceResponses.d.ts.map +1 -1
- package/dist/wire/frames.d.ts +8 -8
- package/dist/wire/inboundFrames.d.ts +53 -63
- package/dist/wire/inboundFrames.d.ts.map +1 -1
- package/dist/wire/inboundFrames.js +1 -6
- package/dist/wire/inboundFrames.js.map +1 -1
- package/dist/wire/listEnvelope.js.map +1 -1
- package/dist/wire/modelResponses.d.ts +2 -2
- package/dist/wire/modelShape.d.ts +4 -4
- package/dist/wire/pricing.d.ts +3 -3
- package/dist/wire/protocolVersion.d.ts.map +1 -1
- package/package.json +6 -1
- package/src/auth/apiKey.ts +25 -44
- package/src/auth/browserCredentialSafety.ts +1 -1
- package/src/auth/capabilityLifecycle.ts +3 -2
- package/src/auth/credentialEndpoint.ts +1 -1
- package/src/auth/credentialResult.ts +2 -0
- package/src/claims/events.ts +1 -2
- package/src/client/ablo.ts +15 -10
- package/src/client/resources/httpResources.ts +2 -174
- package/src/client/resources/modelOperations.ts +0 -10
- package/src/client/surface.ts +2 -4
- package/src/coordination/index.ts +2 -9
- package/src/coordination/schema.ts +7 -81
- package/src/errorCodes.ts +3 -12
- package/src/sessions/client.ts +121 -0
- package/src/sessions/contract.ts +116 -0
- package/src/{auth/sessionMint.ts → sessions/create.ts} +13 -12
- package/src/sessions/handler.ts +96 -0
- package/src/sessions/index.ts +13 -0
- package/src/{transport/connection/credentialLifecycle.ts → sessions/lifecycle.ts} +5 -5
- package/src/sessions/source.ts +94 -0
- package/src/transport/connection/index.ts +0 -1
- package/src/transport/connection/manager.ts +1 -1
- package/src/transport/http/client.ts +21 -31
- package/src/transport/http/options.ts +4 -1
- package/src/transport/http/transport.ts +14 -74
- package/src/transport/websocket/commitFrames.ts +0 -2
- package/src/transport/websocket/frameHandlers.ts +0 -102
- package/src/transport/websocket/session.ts +88 -33
- package/src/transport/websocket/sessionContract.ts +3 -12
- package/src/transport/websocket/transport.ts +13 -137
- package/src/wire/inboundFrames.ts +0 -6
- package/dist/auth/sessionMint.d.ts.map +0 -1
- package/dist/auth/sessionMint.js.map +0 -1
- package/dist/transport/connection/credentialLifecycle.d.ts.map +0 -1
- package/dist/transport/connection/credentialLifecycle.js.map +0 -1
|
@@ -22,28 +22,22 @@ import { EventEmitter } from 'events';
|
|
|
22
22
|
import type { ParticipantKind } from '../../types/participant.js';
|
|
23
23
|
import {
|
|
24
24
|
AbloConnectionError,
|
|
25
|
-
AbloError,
|
|
26
25
|
AbloSessionError,
|
|
27
26
|
AbloValidationError,
|
|
28
27
|
toAbloError,
|
|
29
28
|
} from '../../errors.js';
|
|
30
|
-
import {
|
|
31
|
-
participantClaimPayloadSchema,
|
|
32
|
-
updateSubscriptionPayloadSchema,
|
|
33
|
-
} from '../../coordination/schema.js';
|
|
29
|
+
import { updateSubscriptionPayloadSchema } from '../../coordination/schema.js';
|
|
34
30
|
import type { BootstrapReason } from '../../wire/bootstrapReason.js';
|
|
35
31
|
import type { ClientSyncDelta } from '../../observation/contract.js';
|
|
36
32
|
import type {
|
|
37
33
|
ClaimAcquired,
|
|
38
34
|
PresenceUpdate,
|
|
39
|
-
ClaimExpired,
|
|
40
35
|
ClaimGranted,
|
|
41
36
|
ClaimHeartbeatAckPayload,
|
|
42
37
|
ClaimLost,
|
|
43
38
|
ClaimQueue,
|
|
44
39
|
ClaimQueued,
|
|
45
40
|
ClaimRejection,
|
|
46
|
-
ParticipantClaimPayload,
|
|
47
41
|
ReadDependency,
|
|
48
42
|
WireClaim,
|
|
49
43
|
} from '../../coordination/schema.js';
|
|
@@ -60,7 +54,6 @@ import {
|
|
|
60
54
|
readWsInboundFrame,
|
|
61
55
|
type WsSession,
|
|
62
56
|
type PendingCommit,
|
|
63
|
-
type PendingClaim,
|
|
64
57
|
type PendingSubscription,
|
|
65
58
|
} from './frameHandlers.js';
|
|
66
59
|
import { HeartbeatController } from './heartbeat.js';
|
|
@@ -213,14 +206,6 @@ export interface CoreSyncEventMap {
|
|
|
213
206
|
*/
|
|
214
207
|
handshake_failed: [CloseEvent];
|
|
215
208
|
reconnect_failed: [{ attempts: number }];
|
|
216
|
-
/**
|
|
217
|
-
* Server-initiated notification that a previously-active claim's
|
|
218
|
-
* TTL has expired. Consumers (e.g., the participant SDK) re-mint
|
|
219
|
-
* a fresh capability and re-claim, OR accept the drop. The claim
|
|
220
|
-
* is already inactive on the server side by the time this fires —
|
|
221
|
-
* no client-side action needed unless re-claiming.
|
|
222
|
-
*/
|
|
223
|
-
claim_expired: [ClaimExpired];
|
|
224
209
|
/**
|
|
225
210
|
* Server rejected an `claim_begin` because another participant
|
|
226
211
|
* already holds an open claim on the same target (cooperative
|
|
@@ -370,6 +355,10 @@ export class WsTransport<
|
|
|
370
355
|
* server rejected the upgrade" since browsers hide the HTTP status (e.g.
|
|
371
356
|
* 401) behind the opaque 1006 close code. */
|
|
372
357
|
private _everOpened = false;
|
|
358
|
+
/** True after any socket in this logical transport has opened. Unlike
|
|
359
|
+
* `_everOpened`, this survives socket replacement so a failed reconnect
|
|
360
|
+
* handshake is retried instead of being mistaken for a failed first login. */
|
|
361
|
+
private _hasConnected = false;
|
|
373
362
|
/**
|
|
374
363
|
* Diagnostic snapshot of the last connection lifecycle. Persisted across
|
|
375
364
|
* the lifetime of the transport so that any subsequent "not connected"
|
|
@@ -405,14 +394,6 @@ export class WsTransport<
|
|
|
405
394
|
*/
|
|
406
395
|
private pendingMutations = new Map<string, PendingCommit>();
|
|
407
396
|
|
|
408
|
-
/**
|
|
409
|
-
* In-flight `claim` requests keyed by claimId. Resolved when the matching
|
|
410
|
-
* `claim_ack` arrives, or rejected on timeout or disconnect — the same
|
|
411
|
-
* request/response pattern as `pendingMutations`, multiplexed over the one
|
|
412
|
-
* connection.
|
|
413
|
-
*/
|
|
414
|
-
private pendingClaims = new Map<string, PendingClaim>();
|
|
415
|
-
|
|
416
397
|
/**
|
|
417
398
|
* In-flight `update_subscription` frames awaiting `subscription_ack`.
|
|
418
399
|
* A FIFO queue rather than a keyed Map because the wire ack carries no
|
|
@@ -483,7 +464,6 @@ export class WsTransport<
|
|
|
483
464
|
logger: this.logger,
|
|
484
465
|
observability: this.observability,
|
|
485
466
|
pendingMutations: this.pendingMutations,
|
|
486
|
-
pendingClaims: this.pendingClaims,
|
|
487
467
|
shiftPendingSubscription: () => this.pendingSubscriptions.shift(),
|
|
488
468
|
options: this.options,
|
|
489
469
|
collaborationEventTypes: this.collaborationEventTypes,
|
|
@@ -731,6 +711,7 @@ export class WsTransport<
|
|
|
731
711
|
this.isConnecting = false;
|
|
732
712
|
this.reconnectAttempts = 0;
|
|
733
713
|
this._everOpened = true;
|
|
714
|
+
this._hasConnected = true;
|
|
734
715
|
this.lastOpenAt = Date.now();
|
|
735
716
|
this.emit('connected');
|
|
736
717
|
|
|
@@ -861,22 +842,6 @@ export class WsTransport<
|
|
|
861
842
|
this.pendingMutations.clear();
|
|
862
843
|
}
|
|
863
844
|
|
|
864
|
-
// Cancel in-flight claims — same rationale. Server-side
|
|
865
|
-
// claims are bound to the connection; a reconnect will need
|
|
866
|
-
// to re-claim. Higher-level retry belongs to whoever holds
|
|
867
|
-
// the participant handle (typically the SDK's claim manager).
|
|
868
|
-
if (this.pendingClaims.size > 0) {
|
|
869
|
-
for (const pending of this.pendingClaims.values()) {
|
|
870
|
-
clearTimeout(pending.timeout);
|
|
871
|
-
pending.reject(
|
|
872
|
-
new AbloConnectionError(
|
|
873
|
-
`WebSocket closed while claim was in flight (code=${event.code})`,
|
|
874
|
-
),
|
|
875
|
-
);
|
|
876
|
-
}
|
|
877
|
-
this.pendingClaims.clear();
|
|
878
|
-
}
|
|
879
|
-
|
|
880
845
|
// Cancel in-flight subscription updates — the reconnect handshake
|
|
881
846
|
// re-sends `options.syncGroups` (the last acked interest) in the
|
|
882
847
|
// upgrade URL, so a pending change that never acked is simply
|
|
@@ -946,7 +911,7 @@ export class WsTransport<
|
|
|
946
911
|
// from a transient network issue and transition the UI accordingly.
|
|
947
912
|
// Reconnecting blindly is what produced the infinite
|
|
948
913
|
// "offline → reconnecting → offline" loop on stale cookies.
|
|
949
|
-
if (!everOpened && !this.isManualClose) {
|
|
914
|
+
if (!everOpened && !this._hasConnected && !this.isManualClose) {
|
|
950
915
|
this.observability.captureWebSocketError({
|
|
951
916
|
context: 'handshake-failed-close',
|
|
952
917
|
code: event.code,
|
|
@@ -1172,100 +1137,6 @@ export class WsTransport<
|
|
|
1172
1137
|
this.ws.send(JSON.stringify(frame));
|
|
1173
1138
|
}
|
|
1174
1139
|
|
|
1175
|
-
/**
|
|
1176
|
-
* Activates a participant claim on this connection. One connection can hold
|
|
1177
|
-
* several concurrent claims at once, each scoped to a different set of sync
|
|
1178
|
-
* groups, so the SDK reuses the existing connection instead of opening a
|
|
1179
|
-
* separate socket per scope.
|
|
1180
|
-
*
|
|
1181
|
-
* Returns a promise that resolves with the server-canonicalized `syncGroups`
|
|
1182
|
-
* and effective `ttlSeconds` once `claim_ack` arrives, or rejects with a typed
|
|
1183
|
-
* error on a failed ack, a timeout, or a disconnect.
|
|
1184
|
-
*/
|
|
1185
|
-
sendClaim(
|
|
1186
|
-
claimId: string,
|
|
1187
|
-
syncGroups: readonly string[],
|
|
1188
|
-
options?: Pick<ParticipantClaimPayload, 'capabilityToken' | 'ttlSeconds'> & {
|
|
1189
|
-
timeoutMs?: number;
|
|
1190
|
-
},
|
|
1191
|
-
): Promise<{ syncGroups: string[]; ttlSeconds?: number }> {
|
|
1192
|
-
if (this.ws?.readyState !== WebSocket.OPEN) {
|
|
1193
|
-
return Promise.reject(this.notConnectedError('claim'));
|
|
1194
|
-
}
|
|
1195
|
-
// Checked against the schema the server ingests it with, for the same
|
|
1196
|
-
// reason `updateSubscription` below is: the two frames name their scopes
|
|
1197
|
-
// identically, so a group that would be refused there is refused here, at
|
|
1198
|
-
// the call that asked for it, rather than coming back as a failed ack a
|
|
1199
|
-
// round trip later with nothing to point at.
|
|
1200
|
-
const payload = participantClaimPayloadSchema.safeParse({
|
|
1201
|
-
claimId,
|
|
1202
|
-
syncGroups: [...syncGroups],
|
|
1203
|
-
capabilityToken: options?.capabilityToken,
|
|
1204
|
-
ttlSeconds: options?.ttlSeconds,
|
|
1205
|
-
});
|
|
1206
|
-
if (!payload.success) {
|
|
1207
|
-
return Promise.reject(
|
|
1208
|
-
new AbloValidationError(
|
|
1209
|
-
`join was given a sync group the protocol does not accept: ${payload.error.issues[0]?.message ?? 'unreadable'}. A group is 'default' or 'kind:id'.`,
|
|
1210
|
-
{ code: 'malformed_claim' },
|
|
1211
|
-
),
|
|
1212
|
-
);
|
|
1213
|
-
}
|
|
1214
|
-
const timeoutMs = options?.timeoutMs ?? 15_000;
|
|
1215
|
-
return new Promise((resolve, reject) => {
|
|
1216
|
-
const timeout = setTimeout(() => {
|
|
1217
|
-
this.pendingClaims.delete(claimId);
|
|
1218
|
-
reject(
|
|
1219
|
-
new AbloConnectionError(`claim timed out after ${timeoutMs}ms (claimId=${claimId})`, {
|
|
1220
|
-
code: 'wait_for_timeout',
|
|
1221
|
-
}),
|
|
1222
|
-
);
|
|
1223
|
-
}, timeoutMs);
|
|
1224
|
-
this.pendingClaims.set(claimId, { resolve, reject, timeout });
|
|
1225
|
-
try {
|
|
1226
|
-
this.ws!.send(JSON.stringify({ type: 'claim', payload: payload.data }));
|
|
1227
|
-
} catch (error) {
|
|
1228
|
-
clearTimeout(timeout);
|
|
1229
|
-
this.pendingClaims.delete(claimId);
|
|
1230
|
-
reject(toAbloError(error));
|
|
1231
|
-
}
|
|
1232
|
-
});
|
|
1233
|
-
}
|
|
1234
|
-
|
|
1235
|
-
/**
|
|
1236
|
-
* Drop a previously-active claim. Idempotent — `release` is
|
|
1237
|
-
* fire-and-forget per the wire contract; the server accepts
|
|
1238
|
-
* unknown claimIds silently so disconnect-time release storms
|
|
1239
|
-
* never error. No ack is expected.
|
|
1240
|
-
*
|
|
1241
|
-
* If a claim's send promise is still pending (no claim_ack yet),
|
|
1242
|
-
* we reject it locally — the user explicitly chose to release.
|
|
1243
|
-
*/
|
|
1244
|
-
sendRelease(claimId: string): void {
|
|
1245
|
-
// Cancel any in-flight claim that hadn't acked yet — the user
|
|
1246
|
-
// changed their mind. Without this the timer would eventually
|
|
1247
|
-
// reject; doing it now matches the user's claim immediately.
|
|
1248
|
-
const pending = this.pendingClaims.get(claimId);
|
|
1249
|
-
if (pending) {
|
|
1250
|
-
clearTimeout(pending.timeout);
|
|
1251
|
-
this.pendingClaims.delete(claimId);
|
|
1252
|
-
pending.reject(
|
|
1253
|
-
new AbloError(`claim ${claimId} released before ack`, {
|
|
1254
|
-
code: 'claim_wait_aborted',
|
|
1255
|
-
httpStatus: 409,
|
|
1256
|
-
}),
|
|
1257
|
-
);
|
|
1258
|
-
}
|
|
1259
|
-
if (this.ws?.readyState !== WebSocket.OPEN) return;
|
|
1260
|
-
try {
|
|
1261
|
-
this.ws.send(
|
|
1262
|
-
JSON.stringify({ type: 'release', payload: { claimId } }),
|
|
1263
|
-
);
|
|
1264
|
-
} catch {
|
|
1265
|
-
// Idempotent contract — silent failure is acceptable here.
|
|
1266
|
-
}
|
|
1267
|
-
}
|
|
1268
|
-
|
|
1269
1140
|
/**
|
|
1270
1141
|
* Moves this connection's read interest — replaces the connection-level sync
|
|
1271
1142
|
* groups mid-session as the user opens and closes entities. This is the
|
|
@@ -1443,8 +1314,13 @@ export class WsTransport<
|
|
|
1443
1314
|
}
|
|
1444
1315
|
|
|
1445
1316
|
if (this.ws) {
|
|
1446
|
-
|
|
1317
|
+
// Detach before close: Node/undici may synchronously fire `onerror` from
|
|
1318
|
+
// close(). The handler's stale-socket guard then suppresses that expected
|
|
1319
|
+
// manual-close error instead of emitting EventEmitter's fatal unhandled
|
|
1320
|
+
// `error` event. `onclose` deliberately accepts a null owner below.
|
|
1321
|
+
const socket = this.ws;
|
|
1447
1322
|
this.ws = null;
|
|
1323
|
+
socket.close(1000, 'Manual disconnect');
|
|
1448
1324
|
}
|
|
1449
1325
|
}
|
|
1450
1326
|
|
|
@@ -28,7 +28,6 @@ import { commitReceiptSchema } from '../commit/contract.js';
|
|
|
28
28
|
import { clientSyncDeltaSchema } from '../observation/contract.js';
|
|
29
29
|
import {
|
|
30
30
|
claimAcquiredSchema,
|
|
31
|
-
claimExpiredSchema,
|
|
32
31
|
claimGrantedSchema,
|
|
33
32
|
claimHeartbeatAckPayloadSchema,
|
|
34
33
|
claimLostSchema,
|
|
@@ -111,10 +110,6 @@ export const WS_INBOUND_FRAMES = {
|
|
|
111
110
|
},
|
|
112
111
|
|
|
113
112
|
// ── Requests we made ───────────────────────────────────────────────────
|
|
114
|
-
claim_ack: {
|
|
115
|
-
validation: 'handler',
|
|
116
|
-
where: 'handleClaimAck narrows field by field, because a rejection carries a typed capability error it has to re-raise as CapabilityError',
|
|
117
|
-
},
|
|
118
113
|
subscription_ack: {
|
|
119
114
|
validation: 'handler',
|
|
120
115
|
// Not parsed at dispatch because the handler must first claim the oldest
|
|
@@ -126,7 +121,6 @@ export const WS_INBOUND_FRAMES = {
|
|
|
126
121
|
|
|
127
122
|
// ── Coordination ───────────────────────────────────────────────────────
|
|
128
123
|
presence_update: { validation: 'schema', payload: presenceUpdateSchema },
|
|
129
|
-
claim_expired: { validation: 'schema', payload: claimExpiredSchema },
|
|
130
124
|
claim_rejected: { validation: 'schema', payload: claimRejectionSchema },
|
|
131
125
|
claim_acquired: { validation: 'schema', payload: claimAcquiredSchema },
|
|
132
126
|
claim_queued: { validation: 'schema', payload: claimQueuedSchema },
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessionMint.d.ts","sourceRoot":"","sources":["../../src/auth/sessionMint.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,YAAY,EACtD,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC9B,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,WAAW,CAAC,CAkEtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessionMint.js","sourceRoot":"","sources":["../../src/auth/sessionMint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credentialLifecycle.d.ts","sourceRoot":"","sources":["../../../src/transport/connection/credentialLifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC9B,MAAM,gCAAgC,CAAC;AAExC;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,eAAe,GAAG,eAAe,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AAE/D;0DAC0D;AAC1D,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAErD;;kDAEkD;AAClD,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAE1D,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,QAAY,CAAC;AAE9C;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQvF;AAUD;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC;kEAC8D;IAC9D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,0EAA0E;IAC1E,cAAc,IAAI,IAAI,CAAC;IACvB;gCAC4B;IAC5B,oBAAoB,IAAI,IAAI,CAAC;CAC9B;AAED,qBAAa,mBAAmB;IAoC5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IApCzB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,mBAAmB,CAAoC;IAE/D;6EACyE;IACzE,OAAO,CAAC,yBAAyB,CAAkD;IAEnF;;wDAEoD;IACpD,OAAO,CAAC,2BAA2B,CAA6B;IAEhE;;;0BAGsB;IACtB,OAAO,CAAC,qBAAqB,CAAuB;IAEpD;;;mEAG+D;IAC/D,OAAO,CAAC,iBAAiB,CAA6B;IAEtD,YACmB,GAAG,EAAE,0BAA0B,EAC/B,MAAM,GAAE,MAAmB,EAC1C;IAEJ;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAExD;IAED,kFAAkF;IAClF,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAO/C;IAED;;;;;;;;;;;;;;;OAeG;IACG,OAAO,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAgDjD;IAED;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;;;;;;;;;;;;;;OAeG;IACG,wBAAwB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAU1F;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,QAAQ,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAmF/E;IAED,iEAAiE;IACjE,IAAI,IAAI,IAAI,CAGX;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credentialLifecycle.js","sourceRoot":"","sources":["../../../src/transport/connection/credentialLifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,eAAe,GAGhB,MAAM,gCAAgC,CAAC;AA8BxC;;kDAEkD;AAClD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAA0B,EAAE,KAAa;IAC7E,IAAI,WAAW,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,OAAO,2BAA2B,CAAC;IACrC,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC;IACtC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,2BAA2B,CAAC,CAAC;AAC1F,CAAC;AAED;8DAC8D;AAC9D,SAAS,oBAAoB,CAAC,SAA6B;IACzD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAmBD,MAAM,OAAO,mBAAmB;IAoCX,GAAG;IACH,MAAM;IApCzB;;;;;;;;;;OAUG;IACK,mBAAmB,GAA+B,IAAI,CAAC;IAE/D;6EACyE;IACjE,yBAAyB,GAA6C,IAAI,CAAC;IAEnF;;wDAEoD;IAC5C,2BAA2B,GAAwB,IAAI,CAAC;IAEhE;;;0BAGsB;IACd,qBAAqB,GAAkB,IAAI,CAAC;IAEpD;;;mEAG+D;IACvD,iBAAiB,GAAwB,IAAI,CAAC;IAEtD,YACmB,GAA+B,EAC/B,MAAM,GAAW,UAAU;mBAD3B,GAAG;sBACH,MAAM;IACtB,CAAC;IAEJ;;;;OAIG;IACH,YAAY,CAAC,SAAqC;QAChD,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;IACvC,CAAC;IAED,kFAAkF;IAClF,MAAM,CAAC,MAA+B;QACpC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC3C,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,CAAC;QACnC,IAAI,IAAI,CAAC,yBAAyB;YAAE,OAAO,IAAI,CAAC,yBAAyB,CAAC;QAE1E,MAAM,GAAG,GAAG,CAAC,KAAK,IAAuC,EAAE;YACzD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzB,kEAAkE;oBAClE,mEAAmE;oBACnE,OAAO,eAAe,CAAC;gBACzB,CAAC;gBACD,uEAAuE;gBACvE,iEAAiE;gBACjE,qDAAqD;gBACrD,OAAO,WAAW,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,uEAAuE;gBACvE,uEAAuE;gBACvE,mEAAmE;gBACnE,MAAM,OAAO,GAAI,KAAe,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3D,qEAAqE;gBACrE,wEAAwE;gBACxE,kEAAkE;gBAClE,iEAAiE;gBACjE,qEAAqE;gBACrE,0CAA0C;gBAC1C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/E,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,gGAAgG;wBAC9F,+EAA+E;wBAC/E,uEAAuE,EACzE,EAAE,KAAK,EAAE,OAAO,EAAE,CACnB,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxF,CAAC;gBACD,OAAO,eAAe,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,CAAC,yBAAyB,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,mBAAmB,CAAC,OAAiC;QAC3D,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC5B,oEAAoE;YACpE,iDAAiD;YACjD,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;YAChC,+EAA+E;YAC/E,qEAAqE;YACrE,qCAAqC;YACrC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,6EAA6E;QAC7E,gFAAgF;QAChF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,wBAAwB,CAAC,QAAuB;QACpD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,0BAA0B;gBAC7B,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,KAAK,gBAAgB;gBACnB,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;gBAChC,OAAO,MAAM,CAAC;YAChB;gBACE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,QAA6B,EAAE,IAAoC;QACvE,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE5B,sEAAsE;QACtE,wEAAwE;QACxE,2EAA2E;QAC3E,4EAA4E;QAC5E,yEAAyE;QACzE,6EAA6E;QAC7E,mDAAmD;QACnD,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;YACxC,yEAAyE;YACzE,sEAAsE;YACtE,uEAAuE;YACvE,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,MAAM,SAAS,GAAmB,EAAE,CAAC;QAErC,0EAA0E;QAC1E,qEAAqE;QACrE,wEAAwE;QACxE,oEAAoE;QACpE,yEAAyE;QACzE,6EAA6E;QAC7E,gEAAgE;QAChE,oEAAoE;QACpE,0EAA0E;QAC1E,sEAAsE;QACtE,wEAAwE;QACxE,cAAc;QACd,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,IAAI,EAAE,eAAe,KAAK,IAAI,EAAE,CAAC;YACpE,uEAAuE;YACvE,kEAAkE;YAClE,yEAAyE;YACzE,uEAAuE;YACvE,qEAAqE;YACrE,2EAA2E;YAC3E,yEAAyE;YACzE,2EAA2E;YAC3E,0BAA0B;YAC1B,IAAI,KAAK,GAAyC,IAAI,CAAC;YACvD,MAAM,YAAY,GAAG,GAAS,EAAE;gBAC9B,IAAI,KAAK,KAAK,IAAI;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB;gBAC7D,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC5E,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtB,gEAAgE;oBAChE,oEAAoE;oBACpE,oDAAoD;oBACpD,KAAK,OAAO,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACvC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,mEAAmE;gBACnE,mEAAmE;gBAClE,KAAgC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC9C,CAAC,CAAC;YACF,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;YACtC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClB,IAAI,KAAK,KAAK,IAAI;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBACxC,KAAK,GAAG,IAAI,CAAC;gBACb,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAChC,CAAC,CAAC,CAAC;YAEH,sEAAsE;YACtE,yEAAyE;YACzE,0EAA0E;YAC1E,qEAAqE;YACrE,0EAA0E;YAC1E,yEAAyE;YACzE,kEAAkE;YAClE,sEAAsE;YACtE,wEAAwE;YACxE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC1C,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,IAAI,CAAC,2BAA2B,GAAG,GAAS,EAAE;YAC5C,KAAK,MAAM,CAAC,IAAI,SAAS;gBAAE,CAAC,EAAE,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,IAAI;QACF,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;IAC1C,CAAC;CACF"}
|