@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.
Files changed (40) hide show
  1. package/dist/browser/index.cjs +32 -514
  2. package/dist/browser/index.mjs +32 -514
  3. package/dist/cjs/naylence/fame/connector/broadcast-channel-connector-factory.js +2 -14
  4. package/dist/cjs/naylence/fame/connector/broadcast-channel-connector.browser.js +1 -108
  5. package/dist/cjs/naylence/fame/connector/broadcast-channel-listener.js +10 -76
  6. package/dist/cjs/naylence/fame/connector/inpage-connector-factory.js +0 -12
  7. package/dist/cjs/naylence/fame/connector/inpage-connector.js +1 -105
  8. package/dist/cjs/naylence/fame/connector/inpage-listener.js +2 -49
  9. package/dist/cjs/naylence/fame/grants/broadcast-channel-connection-grant.js +12 -23
  10. package/dist/cjs/naylence/fame/grants/inpage-connection-grant.js +0 -28
  11. package/dist/cjs/naylence/fame/node/admission/default-node-attach-client.js +0 -14
  12. package/dist/cjs/naylence/fame/node/upstream-session-manager.js +0 -6
  13. package/dist/cjs/version.js +2 -2
  14. package/dist/esm/naylence/fame/connector/broadcast-channel-connector-factory.js +2 -14
  15. package/dist/esm/naylence/fame/connector/broadcast-channel-connector.browser.js +1 -108
  16. package/dist/esm/naylence/fame/connector/broadcast-channel-listener.js +10 -76
  17. package/dist/esm/naylence/fame/connector/inpage-connector-factory.js +0 -12
  18. package/dist/esm/naylence/fame/connector/inpage-connector.js +1 -105
  19. package/dist/esm/naylence/fame/connector/inpage-listener.js +2 -49
  20. package/dist/esm/naylence/fame/grants/broadcast-channel-connection-grant.js +12 -23
  21. package/dist/esm/naylence/fame/grants/inpage-connection-grant.js +0 -28
  22. package/dist/esm/naylence/fame/node/admission/default-node-attach-client.js +0 -14
  23. package/dist/esm/naylence/fame/node/upstream-session-manager.js +0 -6
  24. package/dist/esm/version.js +2 -2
  25. package/dist/node/index.cjs +32 -514
  26. package/dist/node/index.mjs +32 -514
  27. package/dist/node/node.cjs +32 -530
  28. package/dist/node/node.mjs +32 -530
  29. package/dist/types/naylence/fame/connector/broadcast-channel-connector-factory.d.ts +0 -2
  30. package/dist/types/naylence/fame/connector/broadcast-channel-connector.browser.d.ts +1 -9
  31. package/dist/types/naylence/fame/connector/inpage-connector-factory.d.ts +0 -2
  32. package/dist/types/naylence/fame/connector/inpage-connector.d.ts +0 -9
  33. package/dist/types/naylence/fame/connector/inpage-listener.d.ts +0 -1
  34. package/dist/types/naylence/fame/grants/broadcast-channel-connection-grant.d.ts +3 -6
  35. package/dist/types/naylence/fame/grants/inpage-connection-grant.d.ts +0 -8
  36. package/dist/types/version.d.ts +1 -1
  37. package/package.json +1 -1
  38. package/dist/cjs/naylence/fame/connector/transport-frame.js +0 -100
  39. package/dist/esm/naylence/fame/connector/transport-frame.js +0 -93
  40. 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
- // Try to find connector by sender ID first
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, senderId: params.senderId };
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.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)) {
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 localNodeIdValue = candidate.localNodeId ?? candidate['local_node_id'];
64
- if (localNodeIdValue !== undefined) {
65
- if (typeof localNodeIdValue !== 'string' || localNodeIdValue.trim().length === 0) {
66
- throw new TypeError('BroadcastChannelConnectionGrant "localNodeId" must be a non-empty string when provided');
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.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('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.localNodeId) {
91
- config.localNodeId = normalized.localNodeId;
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
  });
@@ -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.953
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.953';
7
+ export const VERSION = '0.3.5-test.954';