@naylence/runtime 0.3.5-test.953 → 0.3.5-test.954
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/browser/index.cjs +32 -514
- package/dist/browser/index.mjs +32 -514
- package/dist/cjs/naylence/fame/connector/broadcast-channel-connector-factory.js +2 -14
- package/dist/cjs/naylence/fame/connector/broadcast-channel-connector.browser.js +1 -108
- package/dist/cjs/naylence/fame/connector/broadcast-channel-listener.js +10 -76
- package/dist/cjs/naylence/fame/connector/inpage-connector-factory.js +0 -12
- package/dist/cjs/naylence/fame/connector/inpage-connector.js +1 -105
- package/dist/cjs/naylence/fame/connector/inpage-listener.js +2 -49
- package/dist/cjs/naylence/fame/grants/broadcast-channel-connection-grant.js +12 -23
- package/dist/cjs/naylence/fame/grants/inpage-connection-grant.js +0 -28
- package/dist/cjs/naylence/fame/node/admission/default-node-attach-client.js +0 -14
- package/dist/cjs/naylence/fame/node/upstream-session-manager.js +0 -6
- package/dist/cjs/version.js +2 -2
- package/dist/esm/naylence/fame/connector/broadcast-channel-connector-factory.js +2 -14
- package/dist/esm/naylence/fame/connector/broadcast-channel-connector.browser.js +1 -108
- package/dist/esm/naylence/fame/connector/broadcast-channel-listener.js +10 -76
- package/dist/esm/naylence/fame/connector/inpage-connector-factory.js +0 -12
- package/dist/esm/naylence/fame/connector/inpage-connector.js +1 -105
- package/dist/esm/naylence/fame/connector/inpage-listener.js +2 -49
- package/dist/esm/naylence/fame/grants/broadcast-channel-connection-grant.js +12 -23
- package/dist/esm/naylence/fame/grants/inpage-connection-grant.js +0 -28
- package/dist/esm/naylence/fame/node/admission/default-node-attach-client.js +0 -14
- package/dist/esm/naylence/fame/node/upstream-session-manager.js +0 -6
- package/dist/esm/version.js +2 -2
- package/dist/node/index.cjs +32 -514
- package/dist/node/index.mjs +32 -514
- package/dist/node/node.cjs +32 -530
- package/dist/node/node.mjs +32 -530
- package/dist/types/naylence/fame/connector/broadcast-channel-connector-factory.d.ts +0 -2
- package/dist/types/naylence/fame/connector/broadcast-channel-connector.browser.d.ts +1 -9
- package/dist/types/naylence/fame/connector/inpage-connector-factory.d.ts +0 -2
- package/dist/types/naylence/fame/connector/inpage-connector.d.ts +0 -9
- package/dist/types/naylence/fame/connector/inpage-listener.d.ts +0 -1
- package/dist/types/naylence/fame/grants/broadcast-channel-connection-grant.d.ts +3 -6
- package/dist/types/naylence/fame/grants/inpage-connection-grant.d.ts +0 -8
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cjs/naylence/fame/connector/transport-frame.js +0 -100
- package/dist/esm/naylence/fame/connector/transport-frame.js +0 -93
- package/dist/types/naylence/fame/connector/transport-frame.d.ts +0 -56
|
@@ -61,7 +61,6 @@ export class InPageListener extends TransportListener {
|
|
|
61
61
|
this._busHandler = null;
|
|
62
62
|
this._senderRegistry = new Map();
|
|
63
63
|
this._systemToSender = new Map();
|
|
64
|
-
this._flowIdToSender = new Map();
|
|
65
64
|
this._pendingAttachments = new Map();
|
|
66
65
|
ensureBrowserEnvironment();
|
|
67
66
|
const channelCandidate = options?.channelName;
|
|
@@ -128,7 +127,6 @@ export class InPageListener extends TransportListener {
|
|
|
128
127
|
this._unregisterBusListener();
|
|
129
128
|
this._senderRegistry.clear();
|
|
130
129
|
this._systemToSender.clear();
|
|
131
|
-
this._flowIdToSender.clear();
|
|
132
130
|
this._pendingAttachments.clear();
|
|
133
131
|
logger.debug('inpage_listener_stopped', {
|
|
134
132
|
channel: this._channelName,
|
|
@@ -182,25 +180,10 @@ export class InPageListener extends TransportListener {
|
|
|
182
180
|
await this._handleAttachFrame(senderId, envelope);
|
|
183
181
|
return;
|
|
184
182
|
}
|
|
185
|
-
|
|
186
|
-
let entry = this._senderRegistry.get(senderId);
|
|
187
|
-
// If not found and we have a flowId, try to route based on flow
|
|
188
|
-
if (!entry && envelope.flowId) {
|
|
189
|
-
const originalSenderId = this._flowIdToSender.get(envelope.flowId);
|
|
190
|
-
if (originalSenderId) {
|
|
191
|
-
entry = this._senderRegistry.get(originalSenderId);
|
|
192
|
-
logger.debug('inpage_listener_routed_by_flow_id', {
|
|
193
|
-
sender_id: senderId,
|
|
194
|
-
original_sender_id: originalSenderId,
|
|
195
|
-
flow_id: envelope.flowId,
|
|
196
|
-
frame_type: envelope.frame?.type ?? 'unknown',
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
}
|
|
183
|
+
const entry = this._senderRegistry.get(senderId);
|
|
200
184
|
if (!entry) {
|
|
201
185
|
logger.debug('inpage_listener_no_connector_for_sender', {
|
|
202
186
|
sender_id: senderId,
|
|
203
|
-
flow_id: envelope.flowId,
|
|
204
187
|
frame_type: envelope.frame?.type ?? 'unknown',
|
|
205
188
|
});
|
|
206
189
|
return;
|
|
@@ -277,15 +260,6 @@ export class InPageListener extends TransportListener {
|
|
|
277
260
|
}
|
|
278
261
|
this._senderRegistry.set(senderId, entry);
|
|
279
262
|
this._systemToSender.set(entry.systemId, senderId);
|
|
280
|
-
// Track the flowId if present so we can route responses back
|
|
281
|
-
if (envelope.flowId) {
|
|
282
|
-
this._flowIdToSender.set(envelope.flowId, senderId);
|
|
283
|
-
logger.debug('inpage_listener_registered_flow_id', {
|
|
284
|
-
sender_id: senderId,
|
|
285
|
-
system_id: entry.systemId,
|
|
286
|
-
flow_id: envelope.flowId,
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
263
|
await this._deliverEnvelope(entry, envelope);
|
|
290
264
|
}
|
|
291
265
|
async _createConnectorForAttach(params) {
|
|
@@ -333,7 +307,7 @@ export class InPageListener extends TransportListener {
|
|
|
333
307
|
origin_type: originType,
|
|
334
308
|
connector_type: connector.constructor?.name ?? 'unknown',
|
|
335
309
|
});
|
|
336
|
-
return { connector, systemId, originType
|
|
310
|
+
return { connector, systemId, originType };
|
|
337
311
|
}
|
|
338
312
|
catch (error) {
|
|
339
313
|
logger.error('inpage_listener_connector_creation_failed', {
|
|
@@ -387,12 +361,6 @@ export class InPageListener extends TransportListener {
|
|
|
387
361
|
if (this._systemToSender.get(systemId) === senderId) {
|
|
388
362
|
this._systemToSender.delete(systemId);
|
|
389
363
|
}
|
|
390
|
-
// Clean up flowId mappings for this sender
|
|
391
|
-
for (const [flowId, sid] of this._flowIdToSender.entries()) {
|
|
392
|
-
if (sid === senderId) {
|
|
393
|
-
this._flowIdToSender.delete(flowId);
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
364
|
})
|
|
397
365
|
.catch((error) => {
|
|
398
366
|
logger.debug('inpage_listener_wait_until_closed_failed', {
|
|
@@ -404,24 +372,9 @@ export class InPageListener extends TransportListener {
|
|
|
404
372
|
if (this._systemToSender.get(systemId) === senderId) {
|
|
405
373
|
this._systemToSender.delete(systemId);
|
|
406
374
|
}
|
|
407
|
-
// Clean up flowId mappings for this sender
|
|
408
|
-
for (const [flowId, sid] of this._flowIdToSender.entries()) {
|
|
409
|
-
if (sid === senderId) {
|
|
410
|
-
this._flowIdToSender.delete(flowId);
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
375
|
});
|
|
414
376
|
}
|
|
415
377
|
async _deliverEnvelope(entry, envelope) {
|
|
416
|
-
// Track flowId for routing responses back
|
|
417
|
-
if (envelope.flowId && !this._flowIdToSender.has(envelope.flowId)) {
|
|
418
|
-
this._flowIdToSender.set(envelope.flowId, entry.senderId);
|
|
419
|
-
logger.debug('inpage_listener_registered_flow_id_on_delivery', {
|
|
420
|
-
sender_id: entry.senderId,
|
|
421
|
-
system_id: entry.systemId,
|
|
422
|
-
flow_id: envelope.flowId,
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
378
|
const message = this._buildChannelMessage({
|
|
426
379
|
envelope,
|
|
427
380
|
connector: entry.connector,
|
|
@@ -19,12 +19,9 @@ export function isBroadcastChannelConnectionGrant(candidate) {
|
|
|
19
19
|
record.inboxCapacity <= 0)) {
|
|
20
20
|
return false;
|
|
21
21
|
}
|
|
22
|
-
if (record.
|
|
23
|
-
(
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
if (record.remoteNodeId !== undefined &&
|
|
27
|
-
(typeof record.remoteNodeId !== 'string' || record.remoteNodeId.length === 0)) {
|
|
22
|
+
if (record.initialWindow !== undefined &&
|
|
23
|
+
(!Number.isFinite(record.initialWindow) ||
|
|
24
|
+
record.initialWindow <= 0)) {
|
|
28
25
|
return false;
|
|
29
26
|
}
|
|
30
27
|
return true;
|
|
@@ -60,19 +57,14 @@ export function normalizeBroadcastChannelConnectionGrant(candidate) {
|
|
|
60
57
|
}
|
|
61
58
|
result.inboxCapacity = Math.floor(inboxValue);
|
|
62
59
|
}
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
if (typeof
|
|
66
|
-
|
|
60
|
+
const windowValue = candidate.initialWindow ?? candidate['initial_window'];
|
|
61
|
+
if (windowValue !== undefined) {
|
|
62
|
+
if (typeof windowValue !== 'number' ||
|
|
63
|
+
!Number.isFinite(windowValue) ||
|
|
64
|
+
windowValue <= 0) {
|
|
65
|
+
throw new TypeError('BroadcastChannelConnectionGrant "initialWindow" must be a positive number when provided');
|
|
67
66
|
}
|
|
68
|
-
result.
|
|
69
|
-
}
|
|
70
|
-
const remoteNodeIdValue = candidate.remoteNodeId ?? candidate['remote_node_id'];
|
|
71
|
-
if (remoteNodeIdValue !== undefined) {
|
|
72
|
-
if (typeof remoteNodeIdValue !== 'string' || remoteNodeIdValue.trim().length === 0) {
|
|
73
|
-
throw new TypeError('BroadcastChannelConnectionGrant "remoteNodeId" must be a non-empty string when provided');
|
|
74
|
-
}
|
|
75
|
-
result.remoteNodeId = remoteNodeIdValue.trim();
|
|
67
|
+
result.initialWindow = Math.floor(windowValue);
|
|
76
68
|
}
|
|
77
69
|
return result;
|
|
78
70
|
}
|
|
@@ -87,11 +79,8 @@ export function broadcastChannelGrantToConnectorConfig(grant) {
|
|
|
87
79
|
if (normalized.inboxCapacity !== undefined) {
|
|
88
80
|
config.inboxCapacity = normalized.inboxCapacity;
|
|
89
81
|
}
|
|
90
|
-
if (normalized.
|
|
91
|
-
config.
|
|
92
|
-
}
|
|
93
|
-
if (normalized.remoteNodeId) {
|
|
94
|
-
config.remoteNodeId = normalized.remoteNodeId;
|
|
82
|
+
if (normalized.initialWindow !== undefined) {
|
|
83
|
+
config.initialWindow = normalized.initialWindow;
|
|
95
84
|
}
|
|
96
85
|
return config;
|
|
97
86
|
}
|
|
@@ -19,14 +19,6 @@ export function isInPageConnectionGrant(candidate) {
|
|
|
19
19
|
record.inboxCapacity <= 0)) {
|
|
20
20
|
return false;
|
|
21
21
|
}
|
|
22
|
-
if (record.localNodeId !== undefined &&
|
|
23
|
-
(typeof record.localNodeId !== 'string' || record.localNodeId.length === 0)) {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
if (record.remoteNodeId !== undefined &&
|
|
27
|
-
(typeof record.remoteNodeId !== 'string' || record.remoteNodeId.length === 0)) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
22
|
return true;
|
|
31
23
|
}
|
|
32
24
|
export function normalizeInPageConnectionGrant(candidate) {
|
|
@@ -60,20 +52,6 @@ export function normalizeInPageConnectionGrant(candidate) {
|
|
|
60
52
|
}
|
|
61
53
|
result.inboxCapacity = Math.floor(inboxValue);
|
|
62
54
|
}
|
|
63
|
-
const localNodeIdValue = candidate.localNodeId ?? candidate['local_node_id'];
|
|
64
|
-
if (localNodeIdValue !== undefined) {
|
|
65
|
-
if (typeof localNodeIdValue !== 'string' || localNodeIdValue.trim().length === 0) {
|
|
66
|
-
throw new TypeError('InPageConnectionGrant "localNodeId" must be a non-empty string when provided');
|
|
67
|
-
}
|
|
68
|
-
result.localNodeId = localNodeIdValue.trim();
|
|
69
|
-
}
|
|
70
|
-
const remoteNodeIdValue = candidate.remoteNodeId ?? candidate['remote_node_id'];
|
|
71
|
-
if (remoteNodeIdValue !== undefined) {
|
|
72
|
-
if (typeof remoteNodeIdValue !== 'string' || remoteNodeIdValue.trim().length === 0) {
|
|
73
|
-
throw new TypeError('InPageConnectionGrant "remoteNodeId" must be a non-empty string when provided');
|
|
74
|
-
}
|
|
75
|
-
result.remoteNodeId = remoteNodeIdValue.trim();
|
|
76
|
-
}
|
|
77
55
|
return result;
|
|
78
56
|
}
|
|
79
57
|
export function inPageGrantToConnectorConfig(grant) {
|
|
@@ -87,11 +65,5 @@ export function inPageGrantToConnectorConfig(grant) {
|
|
|
87
65
|
if (normalized.inboxCapacity !== undefined) {
|
|
88
66
|
config.inboxCapacity = normalized.inboxCapacity;
|
|
89
67
|
}
|
|
90
|
-
if (normalized.localNodeId) {
|
|
91
|
-
config.localNodeId = normalized.localNodeId;
|
|
92
|
-
}
|
|
93
|
-
if (normalized.remoteNodeId) {
|
|
94
|
-
config.remoteNodeId = normalized.remoteNodeId;
|
|
95
|
-
}
|
|
96
68
|
return config;
|
|
97
69
|
}
|
|
@@ -163,20 +163,6 @@ export class DefaultNodeAttachClient {
|
|
|
163
163
|
if (!targetSystemId) {
|
|
164
164
|
throw new Error('Target system ID must be set in NodeAttachAckFrame on success');
|
|
165
165
|
}
|
|
166
|
-
// Update connector's remote node ID if it supports it (e.g., BroadcastChannelConnector, InPageConnector)
|
|
167
|
-
// This allows upstream connectors to switch from wildcard '*' to specific node addressing
|
|
168
|
-
const updatableConnector = connector;
|
|
169
|
-
if (typeof updatableConnector.updateRemoteNodeId === 'function') {
|
|
170
|
-
try {
|
|
171
|
-
updatableConnector.updateRemoteNodeId(targetSystemId);
|
|
172
|
-
}
|
|
173
|
-
catch (error) {
|
|
174
|
-
logger.debug('connector_remote_node_id_update_failed', {
|
|
175
|
-
target_system_id: targetSystemId,
|
|
176
|
-
error: error instanceof Error ? error.message : String(error),
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
166
|
try {
|
|
181
167
|
if (this.replicaStickinessManager) {
|
|
182
168
|
this.replicaStickinessManager.accept(ackFrame.stickiness ?? null);
|
|
@@ -296,12 +296,6 @@ export class UpstreamSessionManager extends TaskSpawner {
|
|
|
296
296
|
cryptoProvider.prepareForAttach(welcome.frame.systemId, welcome.frame.assignedPath, welcome.frame.acceptedLogicals ?? []);
|
|
297
297
|
}
|
|
298
298
|
await this.onWelcome(welcome.frame);
|
|
299
|
-
// Inject node ID into grant for transport frame multiplexing
|
|
300
|
-
// This ensures localNodeId matches the node's systemId for proper frame filtering
|
|
301
|
-
grant.localNodeId = welcome.frame.systemId;
|
|
302
|
-
if (welcome.frame.targetSystemId) {
|
|
303
|
-
grant.remoteNodeId = welcome.frame.targetSystemId;
|
|
304
|
-
}
|
|
305
299
|
const connector = await ConnectorFactory.createConnector(grant, {
|
|
306
300
|
systemId: welcome.frame.systemId,
|
|
307
301
|
});
|
package/dist/esm/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// This file is auto-generated during build - do not edit manually
|
|
2
|
-
// Generated from package.json version: 0.3.5-test.
|
|
2
|
+
// Generated from package.json version: 0.3.5-test.954
|
|
3
3
|
/**
|
|
4
4
|
* The package version, injected at build time.
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
7
|
-
export const VERSION = '0.3.5-test.
|
|
7
|
+
export const VERSION = '0.3.5-test.954';
|