@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../../src/transport/websocket/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,uBAAuB,GAExB,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAoB3C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,mBAAmB;IAKX
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../../src/transport/websocket/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,uBAAuB,GAExB,MAAM,wBAAwB,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAoB3C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,mBAAmB;IAKX;IACA;IALX,cAAc,GAA0C,IAAI,CAAC;IAC7D,qBAAqB,GAAyC,IAAI,CAAC;IAE3E,YACmB,SAA6B,EAC7B,gBAAwC,uBAAuB;QAD/D,cAAS,GAAT,SAAS,CAAoB;QAC7B,kBAAa,GAAb,aAAa,CAAkD;IAC/E,CAAC;IAEJ,KAAK;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;gBAAE,OAAO;YAE3C,8DAA8D;YAC9D,mEAAmE;YACnE,IAAI,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC;oBACvC,OAAO,EAAE,uBAAuB;oBAChC,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,wEAAwE;YACxE,uEAAuE;YACvE,gCAAgC;YAChC,IAAI,IAAI,CAAC,qBAAqB;gBAAE,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzE,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3C,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC;oBACvC,OAAO,EAAE,mBAAmB;iBAC7B,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YACjD,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAC3B,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,qBAAqB;QACnB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/transport/websocket/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/transport/websocket/session.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,oBAAoB,EAOpB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAmc9B,wBAAsB,sBAAsB,CAC1C,OAAO,SAAS,QAAQ,CAAC,OAAO,CAAC,GAAG,uBAAuB,EAE3D,OAAO,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAiCxC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { AbloClaimedError, AbloConnectionError, AbloSessionError, errorFromWire, } from '../../errors.js';
|
|
1
|
+
import { AbloClaimedError, AbloConnectionError, AbloSessionError, errorFromWire, isAccessCredentialExpiryCloseReason, } from '../../errors.js';
|
|
2
|
+
import { classifyCredentialKind } from '../../auth/credentialKind.js';
|
|
3
|
+
import { credentialToken, } from '../../auth/credentialResult.js';
|
|
4
|
+
import { CredentialLifecycle } from '../../sessions/lifecycle.js';
|
|
2
5
|
import { clientSyncDeltaSchema, } from '../../observation/contract.js';
|
|
3
6
|
import { WsTransport, } from './transport.js';
|
|
4
7
|
const MAX_BUFFERED_OBSERVATION_DELTAS = 1_024;
|
|
@@ -75,15 +78,23 @@ class WebSocketSession {
|
|
|
75
78
|
closed = false;
|
|
76
79
|
currentToken;
|
|
77
80
|
acknowledgeLane = Promise.resolve();
|
|
81
|
+
terminalError = null;
|
|
82
|
+
terminalListeners = new Set();
|
|
83
|
+
credentialLifecycle;
|
|
84
|
+
pendingSessionError = null;
|
|
78
85
|
presence;
|
|
79
86
|
collaboration;
|
|
80
|
-
constructor(options, position,
|
|
87
|
+
constructor(options, position, credential) {
|
|
81
88
|
this.options = options;
|
|
89
|
+
const token = credentialToken(credential);
|
|
90
|
+
if (!token) {
|
|
91
|
+
throw new AbloSessionError('The WebSocket transport requires an authenticated credential.');
|
|
92
|
+
}
|
|
82
93
|
this.currentToken = token;
|
|
83
94
|
this.cursorKey = options.cursorKey ?? 'websocket';
|
|
84
95
|
this.socket = new AgentWebSocket({
|
|
85
96
|
baseUrl: options.baseUrl,
|
|
86
|
-
kind: 'agent',
|
|
97
|
+
kind: classifyCredentialKind(token) === 'ephemeral' ? 'user' : 'agent',
|
|
87
98
|
getAuthToken: () => this.currentToken,
|
|
88
99
|
syncGroups: [...(options.syncGroups ?? [])],
|
|
89
100
|
collaborationEvents: [...(options.collaborationEvents ?? [])],
|
|
@@ -96,25 +107,60 @@ class WebSocketSession {
|
|
|
96
107
|
this.collaboration = {
|
|
97
108
|
send: (event, payload) => this.socket.sendCollaborationEvent(event, payload),
|
|
98
109
|
};
|
|
99
|
-
this.socket.subscribe('session_error', () => {
|
|
100
|
-
|
|
110
|
+
this.socket.subscribe('session_error', (error) => {
|
|
111
|
+
this.handleSessionError(error);
|
|
101
112
|
});
|
|
113
|
+
this.credentialLifecycle = options.access.renewable
|
|
114
|
+
? new CredentialLifecycle({
|
|
115
|
+
setAuthToken: (freshToken) => {
|
|
116
|
+
this.currentToken = freshToken;
|
|
117
|
+
},
|
|
118
|
+
nudgeReconnect: () => {
|
|
119
|
+
if (this.closed || this.terminalError)
|
|
120
|
+
return;
|
|
121
|
+
this.socket.clearSessionError();
|
|
122
|
+
this.socket.resetReconnectAttempts();
|
|
123
|
+
this.socket.connect();
|
|
124
|
+
},
|
|
125
|
+
reportSessionExpired: () => {
|
|
126
|
+
this.failTerminal(this.pendingSessionError ?? new AbloSessionError('The application session ended while renewing its Ablo session.'));
|
|
127
|
+
},
|
|
128
|
+
})
|
|
129
|
+
: null;
|
|
130
|
+
if (this.credentialLifecycle) {
|
|
131
|
+
this.credentialLifecycle.start(() => this.loadCredential(), { proactiveInNode: true });
|
|
132
|
+
this.credentialLifecycle.accept(credential);
|
|
133
|
+
}
|
|
102
134
|
}
|
|
103
|
-
async
|
|
104
|
-
|
|
135
|
+
async loadCredential() {
|
|
136
|
+
return this.options.access.credential();
|
|
137
|
+
}
|
|
138
|
+
handleSessionError(error) {
|
|
139
|
+
if (!this.credentialLifecycle
|
|
140
|
+
|| !isAccessCredentialExpiryCloseReason(error.message)) {
|
|
141
|
+
this.failTerminal(error);
|
|
105
142
|
return;
|
|
106
|
-
try {
|
|
107
|
-
const next = await this.options.getAuthToken();
|
|
108
|
-
if (!next || next === this.currentToken)
|
|
109
|
-
return;
|
|
110
|
-
this.currentToken = next;
|
|
111
|
-
this.socket.clearSessionError();
|
|
112
|
-
this.socket.connect();
|
|
113
143
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
144
|
+
this.pendingSessionError = error;
|
|
145
|
+
void this.credentialLifecycle.recoverFromAuthRejection('access_credential_expiry');
|
|
146
|
+
}
|
|
147
|
+
failTerminal(error) {
|
|
148
|
+
if (this.terminalError || this.closed)
|
|
149
|
+
return;
|
|
150
|
+
this.terminalError = error;
|
|
151
|
+
this.socket.setSessionErrorDetected();
|
|
152
|
+
this.socket.disconnect();
|
|
153
|
+
for (const listener of this.terminalListeners)
|
|
154
|
+
listener(error);
|
|
155
|
+
}
|
|
156
|
+
onTerminal(listener) {
|
|
157
|
+
if (this.terminalError) {
|
|
158
|
+
const error = this.terminalError;
|
|
159
|
+
queueMicrotask(() => listener(error));
|
|
160
|
+
return () => undefined;
|
|
117
161
|
}
|
|
162
|
+
this.terminalListeners.add(listener);
|
|
163
|
+
return () => this.terminalListeners.delete(listener);
|
|
118
164
|
}
|
|
119
165
|
get connected() {
|
|
120
166
|
return this.socket.isConnected();
|
|
@@ -123,6 +169,8 @@ class WebSocketSession {
|
|
|
123
169
|
if (this.closed) {
|
|
124
170
|
return Promise.reject(new AbloConnectionError('The WebSocket session is closed.'));
|
|
125
171
|
}
|
|
172
|
+
if (this.terminalError)
|
|
173
|
+
return Promise.reject(this.terminalError);
|
|
126
174
|
if (this.socket.isConnected())
|
|
127
175
|
return Promise.resolve();
|
|
128
176
|
if (this.readyPromise)
|
|
@@ -140,7 +188,7 @@ class WebSocketSession {
|
|
|
140
188
|
cleanup();
|
|
141
189
|
resolve();
|
|
142
190
|
});
|
|
143
|
-
const failed = this.
|
|
191
|
+
const failed = this.onTerminal((error) => {
|
|
144
192
|
rejectConnection(error);
|
|
145
193
|
});
|
|
146
194
|
const mismatch = this.socket.subscribe('protocol_mismatch', () => {
|
|
@@ -241,17 +289,6 @@ class WebSocketSession {
|
|
|
241
289
|
release(input) {
|
|
242
290
|
this.socket.send({ type: 'claim_abandon', payload: input });
|
|
243
291
|
}
|
|
244
|
-
async join(input) {
|
|
245
|
-
await this.ready();
|
|
246
|
-
return this.socket.sendClaim(input.claimId, input.syncGroups, {
|
|
247
|
-
capabilityToken: input.capabilityToken,
|
|
248
|
-
ttlSeconds: input.ttlSeconds,
|
|
249
|
-
timeoutMs: input.timeoutMs,
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
leave(claimId) {
|
|
253
|
-
this.socket.sendRelease(claimId);
|
|
254
|
-
}
|
|
255
292
|
subscribe(event, listener) {
|
|
256
293
|
return this.socket.subscribe(event, listener);
|
|
257
294
|
}
|
|
@@ -277,7 +314,7 @@ class WebSocketSession {
|
|
|
277
314
|
wake?.();
|
|
278
315
|
wake = undefined;
|
|
279
316
|
});
|
|
280
|
-
const offError = this.
|
|
317
|
+
const offError = this.onTerminal((error) => {
|
|
281
318
|
failure = error;
|
|
282
319
|
wake?.();
|
|
283
320
|
wake = undefined;
|
|
@@ -343,6 +380,8 @@ class WebSocketSession {
|
|
|
343
380
|
if (this.closed)
|
|
344
381
|
return;
|
|
345
382
|
this.closed = true;
|
|
383
|
+
this.credentialLifecycle?.stop();
|
|
384
|
+
this.terminalListeners.clear();
|
|
346
385
|
this.rejectReady?.(new AbloConnectionError('The WebSocket session was disposed.'));
|
|
347
386
|
await this.acknowledgeLane;
|
|
348
387
|
this.socket.disconnect();
|
|
@@ -354,11 +393,12 @@ class WebSocketSession {
|
|
|
354
393
|
export async function createWebSocketSession(options, signal) {
|
|
355
394
|
const cursorKey = options.cursorKey ?? 'websocket';
|
|
356
395
|
const stored = await options.cursorStore?.load(cursorKey) ?? null;
|
|
357
|
-
const
|
|
396
|
+
const credential = await options.access.credential();
|
|
397
|
+
const token = credentialToken(credential);
|
|
358
398
|
if (!token) {
|
|
359
399
|
throw new AbloSessionError('The WebSocket transport requires an authenticated credential.');
|
|
360
400
|
}
|
|
361
|
-
const session = new WebSocketSession(options, parsePosition(stored),
|
|
401
|
+
const session = new WebSocketSession(options, parsePosition(stored), credential);
|
|
362
402
|
let rejectOpening;
|
|
363
403
|
const aborted = new Promise((_resolve, reject) => {
|
|
364
404
|
rejectOpening = reject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/transport/websocket/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/transport/websocket/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,13 @@ import type { ReadDependency } from '../../coordination/schema.js';
|
|
|
3
3
|
import type { ClaimAcquired, ClaimBeginPayload, ClaimGranted, ClaimQueued } from '../../coordination/schema.js';
|
|
4
4
|
import type { ClientSyncDelta } from '../../observation/contract.js';
|
|
5
5
|
import type { ObserveCursorStore } from '../../client/contract.js';
|
|
6
|
+
import type { SessionAccess } from '../../sessions/source.js';
|
|
6
7
|
import type { CommitFrameOperation } from '../websocket/commitFrames.js';
|
|
7
8
|
import type { CoreSyncEventMap, EventMap, PresenceUpdate, SyncWebSocketEventMap } from '../websocket/transport.js';
|
|
8
9
|
export interface WebSocketSessionOptions {
|
|
9
10
|
readonly baseUrl?: string;
|
|
10
|
-
|
|
11
|
+
/** Normalized once at the client boundary; transports do not infer policy. */
|
|
12
|
+
readonly access: SessionAccess;
|
|
11
13
|
readonly syncGroups?: readonly string[];
|
|
12
14
|
readonly collaborationEvents?: readonly string[];
|
|
13
15
|
readonly cursorKey?: string;
|
|
@@ -29,14 +31,6 @@ export interface WebSocketObservedDelta extends ClientSyncDelta {
|
|
|
29
31
|
export interface WebSocketObserveOptions {
|
|
30
32
|
readonly signal?: AbortSignal;
|
|
31
33
|
}
|
|
32
|
-
/** A multiplexed participant-scope registration on the shared socket. */
|
|
33
|
-
export interface WebSocketJoinInput {
|
|
34
|
-
readonly claimId: string;
|
|
35
|
-
readonly syncGroups: readonly string[];
|
|
36
|
-
readonly capabilityToken?: string;
|
|
37
|
-
readonly ttlSeconds?: number;
|
|
38
|
-
readonly timeoutMs?: number;
|
|
39
|
-
}
|
|
40
34
|
/** A durable row/field claim carried over the same live protocol. */
|
|
41
35
|
export type WebSocketClaimInput = ClaimBeginPayload & {
|
|
42
36
|
readonly timeoutMs?: number;
|
|
@@ -68,11 +62,6 @@ export interface AbloWebSocketSession<TEvents extends EventMap<TEvents> = OpenCo
|
|
|
68
62
|
readonly entityType?: string;
|
|
69
63
|
readonly entityId?: string;
|
|
70
64
|
}): void;
|
|
71
|
-
join(input: WebSocketJoinInput): Promise<{
|
|
72
|
-
syncGroups: string[];
|
|
73
|
-
ttlSeconds?: number;
|
|
74
|
-
}>;
|
|
75
|
-
leave(claimId: string): void;
|
|
76
65
|
subscribe<K extends keyof SyncWebSocketEventMap<TEvents>>(event: K, listener: (...args: SyncWebSocketEventMap<TEvents>[K]) => void): () => void;
|
|
77
66
|
observe(options?: WebSocketObserveOptions): AsyncIterable<WebSocketObservedDelta>;
|
|
78
67
|
updateSubscription(syncGroups: readonly string[], options?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionContract.d.ts","sourceRoot":"","sources":["../../../src/transport/websocket/sessionContract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EACV,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"sessionContract.d.ts","sourceRoot":"","sources":["../../../src/transport/websocket/sessionContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ import { EventEmitter } from 'events';
|
|
|
21
21
|
import type { ParticipantKind } from '../../types/participant.js';
|
|
22
22
|
import type { BootstrapReason } from '../../wire/bootstrapReason.js';
|
|
23
23
|
import type { ClientSyncDelta } from '../../observation/contract.js';
|
|
24
|
-
import type { ClaimAcquired, PresenceUpdate,
|
|
24
|
+
import type { ClaimAcquired, PresenceUpdate, ClaimGranted, ClaimHeartbeatAckPayload, ClaimLost, ClaimQueue, ClaimQueued, ClaimRejection, ReadDependency } from '../../coordination/schema.js';
|
|
25
25
|
import { type AuthTokenGetter } from '../../auth/credentialSource.js';
|
|
26
26
|
import { type CommitAck, type CommitFrameOperation } from './commitFrames.js';
|
|
27
27
|
import type { CommitReceiptWire } from '../../commit/contract.js';
|
|
@@ -166,14 +166,6 @@ export interface CoreSyncEventMap {
|
|
|
166
166
|
reconnect_failed: [{
|
|
167
167
|
attempts: number;
|
|
168
168
|
}];
|
|
169
|
-
/**
|
|
170
|
-
* Server-initiated notification that a previously-active claim's
|
|
171
|
-
* TTL has expired. Consumers (e.g., the participant SDK) re-mint
|
|
172
|
-
* a fresh capability and re-claim, OR accept the drop. The claim
|
|
173
|
-
* is already inactive on the server side by the time this fires —
|
|
174
|
-
* no client-side action needed unless re-claiming.
|
|
175
|
-
*/
|
|
176
|
-
claim_expired: [ClaimExpired];
|
|
177
169
|
/**
|
|
178
170
|
* Server rejected an `claim_begin` because another participant
|
|
179
171
|
* already holds an open claim on the same target (cooperative
|
|
@@ -282,6 +274,10 @@ export declare class WsTransport<TCollaboration extends EventMap<TCollaboration>
|
|
|
282
274
|
* server rejected the upgrade" since browsers hide the HTTP status (e.g.
|
|
283
275
|
* 401) behind the opaque 1006 close code. */
|
|
284
276
|
private _everOpened;
|
|
277
|
+
/** True after any socket in this logical transport has opened. Unlike
|
|
278
|
+
* `_everOpened`, this survives socket replacement so a failed reconnect
|
|
279
|
+
* handshake is retried instead of being mistaken for a failed first login. */
|
|
280
|
+
private _hasConnected;
|
|
285
281
|
/**
|
|
286
282
|
* Diagnostic snapshot of the last connection lifecycle. Persisted across
|
|
287
283
|
* the lifetime of the transport so that any subsequent "not connected"
|
|
@@ -315,13 +311,6 @@ export declare class WsTransport<TCollaboration extends EventMap<TCollaboration>
|
|
|
315
311
|
* sent over the same socket that streams deltas.
|
|
316
312
|
*/
|
|
317
313
|
private pendingMutations;
|
|
318
|
-
/**
|
|
319
|
-
* In-flight `claim` requests keyed by claimId. Resolved when the matching
|
|
320
|
-
* `claim_ack` arrives, or rejected on timeout or disconnect — the same
|
|
321
|
-
* request/response pattern as `pendingMutations`, multiplexed over the one
|
|
322
|
-
* connection.
|
|
323
|
-
*/
|
|
324
|
-
private pendingClaims;
|
|
325
314
|
/**
|
|
326
315
|
* In-flight `update_subscription` frames awaiting `subscription_ack`.
|
|
327
316
|
* A FIFO queue rather than a keyed Map because the wire ack carries no
|
|
@@ -453,32 +442,6 @@ export declare class WsTransport<TCollaboration extends EventMap<TCollaboration>
|
|
|
453
442
|
* instance because no pending resolver is registered.
|
|
454
443
|
*/
|
|
455
444
|
sendCommitQueued(operations: readonly CommitFrameOperation[], clientTxId: string, reads?: readonly ReadDependency[] | null): void;
|
|
456
|
-
/**
|
|
457
|
-
* Activates a participant claim on this connection. One connection can hold
|
|
458
|
-
* several concurrent claims at once, each scoped to a different set of sync
|
|
459
|
-
* groups, so the SDK reuses the existing connection instead of opening a
|
|
460
|
-
* separate socket per scope.
|
|
461
|
-
*
|
|
462
|
-
* Returns a promise that resolves with the server-canonicalized `syncGroups`
|
|
463
|
-
* and effective `ttlSeconds` once `claim_ack` arrives, or rejects with a typed
|
|
464
|
-
* error on a failed ack, a timeout, or a disconnect.
|
|
465
|
-
*/
|
|
466
|
-
sendClaim(claimId: string, syncGroups: readonly string[], options?: Pick<ParticipantClaimPayload, 'capabilityToken' | 'ttlSeconds'> & {
|
|
467
|
-
timeoutMs?: number;
|
|
468
|
-
}): Promise<{
|
|
469
|
-
syncGroups: string[];
|
|
470
|
-
ttlSeconds?: number;
|
|
471
|
-
}>;
|
|
472
|
-
/**
|
|
473
|
-
* Drop a previously-active claim. Idempotent — `release` is
|
|
474
|
-
* fire-and-forget per the wire contract; the server accepts
|
|
475
|
-
* unknown claimIds silently so disconnect-time release storms
|
|
476
|
-
* never error. No ack is expected.
|
|
477
|
-
*
|
|
478
|
-
* If a claim's send promise is still pending (no claim_ack yet),
|
|
479
|
-
* we reject it locally — the user explicitly chose to release.
|
|
480
|
-
*/
|
|
481
|
-
sendRelease(claimId: string): void;
|
|
482
445
|
/**
|
|
483
446
|
* Moves this connection's read interest — replaces the connection-level sync
|
|
484
447
|
* groups mid-session as the user opens and closes entities. This is the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/transport/websocket/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/transport/websocket/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
* the local copy it never wanted.
|
|
19
19
|
*/
|
|
20
20
|
import { EventEmitter } from 'events';
|
|
21
|
-
import { AbloConnectionError,
|
|
22
|
-
import {
|
|
21
|
+
import { AbloConnectionError, AbloSessionError, AbloValidationError, toAbloError, } from '../../errors.js';
|
|
22
|
+
import { updateSubscriptionPayloadSchema } from '../../coordination/schema.js';
|
|
23
23
|
import { PROTOCOL_VERSION, WS_CLOSE_PROTOCOL_VERSION } from '../../wire/protocolVersion.js';
|
|
24
24
|
import { WS_BEARER_SUBPROTOCOL_PREFIX, WS_SYNC_SUBPROTOCOL, } from '../../auth/credentialSource.js';
|
|
25
25
|
import { buildCommitFrame } from './commitFrames.js';
|
|
@@ -86,6 +86,10 @@ export class WsTransport extends EventEmitter {
|
|
|
86
86
|
* server rejected the upgrade" since browsers hide the HTTP status (e.g.
|
|
87
87
|
* 401) behind the opaque 1006 close code. */
|
|
88
88
|
_everOpened = false;
|
|
89
|
+
/** True after any socket in this logical transport has opened. Unlike
|
|
90
|
+
* `_everOpened`, this survives socket replacement so a failed reconnect
|
|
91
|
+
* handshake is retried instead of being mistaken for a failed first login. */
|
|
92
|
+
_hasConnected = false;
|
|
89
93
|
/**
|
|
90
94
|
* Diagnostic snapshot of the last connection lifecycle. Persisted across
|
|
91
95
|
* the lifetime of the transport so that any subsequent "not connected"
|
|
@@ -119,13 +123,6 @@ export class WsTransport extends EventEmitter {
|
|
|
119
123
|
* sent over the same socket that streams deltas.
|
|
120
124
|
*/
|
|
121
125
|
pendingMutations = new Map();
|
|
122
|
-
/**
|
|
123
|
-
* In-flight `claim` requests keyed by claimId. Resolved when the matching
|
|
124
|
-
* `claim_ack` arrives, or rejected on timeout or disconnect — the same
|
|
125
|
-
* request/response pattern as `pendingMutations`, multiplexed over the one
|
|
126
|
-
* connection.
|
|
127
|
-
*/
|
|
128
|
-
pendingClaims = new Map();
|
|
129
126
|
/**
|
|
130
127
|
* In-flight `update_subscription` frames awaiting `subscription_ack`.
|
|
131
128
|
* A FIFO queue rather than a keyed Map because the wire ack carries no
|
|
@@ -183,7 +180,6 @@ export class WsTransport extends EventEmitter {
|
|
|
183
180
|
logger: this.logger,
|
|
184
181
|
observability: this.observability,
|
|
185
182
|
pendingMutations: this.pendingMutations,
|
|
186
|
-
pendingClaims: this.pendingClaims,
|
|
187
183
|
shiftPendingSubscription: () => this.pendingSubscriptions.shift(),
|
|
188
184
|
options: this.options,
|
|
189
185
|
collaborationEventTypes: this.collaborationEventTypes,
|
|
@@ -400,6 +396,7 @@ export class WsTransport extends EventEmitter {
|
|
|
400
396
|
this.isConnecting = false;
|
|
401
397
|
this.reconnectAttempts = 0;
|
|
402
398
|
this._everOpened = true;
|
|
399
|
+
this._hasConnected = true;
|
|
403
400
|
this.lastOpenAt = Date.now();
|
|
404
401
|
this.emit('connected');
|
|
405
402
|
// The subclass's open ritual (presence, ack, incremental sync,
|
|
@@ -510,17 +507,6 @@ export class WsTransport extends EventEmitter {
|
|
|
510
507
|
}
|
|
511
508
|
this.pendingMutations.clear();
|
|
512
509
|
}
|
|
513
|
-
// Cancel in-flight claims — same rationale. Server-side
|
|
514
|
-
// claims are bound to the connection; a reconnect will need
|
|
515
|
-
// to re-claim. Higher-level retry belongs to whoever holds
|
|
516
|
-
// the participant handle (typically the SDK's claim manager).
|
|
517
|
-
if (this.pendingClaims.size > 0) {
|
|
518
|
-
for (const pending of this.pendingClaims.values()) {
|
|
519
|
-
clearTimeout(pending.timeout);
|
|
520
|
-
pending.reject(new AbloConnectionError(`WebSocket closed while claim was in flight (code=${event.code})`));
|
|
521
|
-
}
|
|
522
|
-
this.pendingClaims.clear();
|
|
523
|
-
}
|
|
524
510
|
// Cancel in-flight subscription updates — the reconnect handshake
|
|
525
511
|
// re-sends `options.syncGroups` (the last acked interest) in the
|
|
526
512
|
// upgrade URL, so a pending change that never acked is simply
|
|
@@ -581,7 +567,7 @@ export class WsTransport extends EventEmitter {
|
|
|
581
567
|
// from a transient network issue and transition the UI accordingly.
|
|
582
568
|
// Reconnecting blindly is what produced the infinite
|
|
583
569
|
// "offline → reconnecting → offline" loop on stale cookies.
|
|
584
|
-
if (!everOpened && !this.isManualClose) {
|
|
570
|
+
if (!everOpened && !this._hasConnected && !this.isManualClose) {
|
|
585
571
|
this.observability.captureWebSocketError({
|
|
586
572
|
context: 'handshake-failed-close',
|
|
587
573
|
code: event.code,
|
|
@@ -768,84 +754,6 @@ export class WsTransport extends EventEmitter {
|
|
|
768
754
|
const frame = buildCommitFrame(operations, clientTxId, reads);
|
|
769
755
|
this.ws.send(JSON.stringify(frame));
|
|
770
756
|
}
|
|
771
|
-
/**
|
|
772
|
-
* Activates a participant claim on this connection. One connection can hold
|
|
773
|
-
* several concurrent claims at once, each scoped to a different set of sync
|
|
774
|
-
* groups, so the SDK reuses the existing connection instead of opening a
|
|
775
|
-
* separate socket per scope.
|
|
776
|
-
*
|
|
777
|
-
* Returns a promise that resolves with the server-canonicalized `syncGroups`
|
|
778
|
-
* and effective `ttlSeconds` once `claim_ack` arrives, or rejects with a typed
|
|
779
|
-
* error on a failed ack, a timeout, or a disconnect.
|
|
780
|
-
*/
|
|
781
|
-
sendClaim(claimId, syncGroups, options) {
|
|
782
|
-
if (this.ws?.readyState !== WebSocket.OPEN) {
|
|
783
|
-
return Promise.reject(this.notConnectedError('claim'));
|
|
784
|
-
}
|
|
785
|
-
// Checked against the schema the server ingests it with, for the same
|
|
786
|
-
// reason `updateSubscription` below is: the two frames name their scopes
|
|
787
|
-
// identically, so a group that would be refused there is refused here, at
|
|
788
|
-
// the call that asked for it, rather than coming back as a failed ack a
|
|
789
|
-
// round trip later with nothing to point at.
|
|
790
|
-
const payload = participantClaimPayloadSchema.safeParse({
|
|
791
|
-
claimId,
|
|
792
|
-
syncGroups: [...syncGroups],
|
|
793
|
-
capabilityToken: options?.capabilityToken,
|
|
794
|
-
ttlSeconds: options?.ttlSeconds,
|
|
795
|
-
});
|
|
796
|
-
if (!payload.success) {
|
|
797
|
-
return Promise.reject(new AbloValidationError(`join was given a sync group the protocol does not accept: ${payload.error.issues[0]?.message ?? 'unreadable'}. A group is 'default' or 'kind:id'.`, { code: 'malformed_claim' }));
|
|
798
|
-
}
|
|
799
|
-
const timeoutMs = options?.timeoutMs ?? 15_000;
|
|
800
|
-
return new Promise((resolve, reject) => {
|
|
801
|
-
const timeout = setTimeout(() => {
|
|
802
|
-
this.pendingClaims.delete(claimId);
|
|
803
|
-
reject(new AbloConnectionError(`claim timed out after ${timeoutMs}ms (claimId=${claimId})`, {
|
|
804
|
-
code: 'wait_for_timeout',
|
|
805
|
-
}));
|
|
806
|
-
}, timeoutMs);
|
|
807
|
-
this.pendingClaims.set(claimId, { resolve, reject, timeout });
|
|
808
|
-
try {
|
|
809
|
-
this.ws.send(JSON.stringify({ type: 'claim', payload: payload.data }));
|
|
810
|
-
}
|
|
811
|
-
catch (error) {
|
|
812
|
-
clearTimeout(timeout);
|
|
813
|
-
this.pendingClaims.delete(claimId);
|
|
814
|
-
reject(toAbloError(error));
|
|
815
|
-
}
|
|
816
|
-
});
|
|
817
|
-
}
|
|
818
|
-
/**
|
|
819
|
-
* Drop a previously-active claim. Idempotent — `release` is
|
|
820
|
-
* fire-and-forget per the wire contract; the server accepts
|
|
821
|
-
* unknown claimIds silently so disconnect-time release storms
|
|
822
|
-
* never error. No ack is expected.
|
|
823
|
-
*
|
|
824
|
-
* If a claim's send promise is still pending (no claim_ack yet),
|
|
825
|
-
* we reject it locally — the user explicitly chose to release.
|
|
826
|
-
*/
|
|
827
|
-
sendRelease(claimId) {
|
|
828
|
-
// Cancel any in-flight claim that hadn't acked yet — the user
|
|
829
|
-
// changed their mind. Without this the timer would eventually
|
|
830
|
-
// reject; doing it now matches the user's claim immediately.
|
|
831
|
-
const pending = this.pendingClaims.get(claimId);
|
|
832
|
-
if (pending) {
|
|
833
|
-
clearTimeout(pending.timeout);
|
|
834
|
-
this.pendingClaims.delete(claimId);
|
|
835
|
-
pending.reject(new AbloError(`claim ${claimId} released before ack`, {
|
|
836
|
-
code: 'claim_wait_aborted',
|
|
837
|
-
httpStatus: 409,
|
|
838
|
-
}));
|
|
839
|
-
}
|
|
840
|
-
if (this.ws?.readyState !== WebSocket.OPEN)
|
|
841
|
-
return;
|
|
842
|
-
try {
|
|
843
|
-
this.ws.send(JSON.stringify({ type: 'release', payload: { claimId } }));
|
|
844
|
-
}
|
|
845
|
-
catch {
|
|
846
|
-
// Idempotent contract — silent failure is acceptable here.
|
|
847
|
-
}
|
|
848
|
-
}
|
|
849
757
|
/**
|
|
850
758
|
* Moves this connection's read interest — replaces the connection-level sync
|
|
851
759
|
* groups mid-session as the user opens and closes entities. This is the
|
|
@@ -992,8 +900,13 @@ export class WsTransport extends EventEmitter {
|
|
|
992
900
|
this.reconnectTimer = null;
|
|
993
901
|
}
|
|
994
902
|
if (this.ws) {
|
|
995
|
-
|
|
903
|
+
// Detach before close: Node/undici may synchronously fire `onerror` from
|
|
904
|
+
// close(). The handler's stale-socket guard then suppresses that expected
|
|
905
|
+
// manual-close error instead of emitting EventEmitter's fatal unhandled
|
|
906
|
+
// `error` event. `onclose` deliberately accepts a null owner below.
|
|
907
|
+
const socket = this.ws;
|
|
996
908
|
this.ws = null;
|
|
909
|
+
socket.close(1000, 'Manual disconnect');
|
|
997
910
|
}
|
|
998
911
|
}
|
|
999
912
|
/**
|