@naylence/runtime 0.3.6 → 0.3.9
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 +262 -172
- package/dist/browser/index.mjs +261 -173
- package/dist/cjs/_env-shim.js +3 -1
- package/dist/cjs/naylence/fame/config/extended-fame-config.js +2 -1
- package/dist/cjs/naylence/fame/connector/broadcast-channel-connector-factory.js +12 -4
- package/dist/cjs/naylence/fame/connector/broadcast-channel-connector.browser.js +14 -6
- package/dist/cjs/naylence/fame/connector/broadcast-channel-listener-factory.js +3 -1
- package/dist/cjs/naylence/fame/connector/broadcast-channel-listener.js +11 -7
- package/dist/cjs/naylence/fame/connector/index.js +2 -1
- package/dist/cjs/naylence/fame/connector/inpage-connector-factory.js +2 -1
- package/dist/cjs/naylence/fame/connector/inpage-connector.js +13 -6
- package/dist/cjs/naylence/fame/connector/inpage-listener-factory.js +4 -4
- package/dist/cjs/naylence/fame/connector/inpage-listener.js +5 -2
- package/dist/cjs/naylence/fame/delivery/default-delivery-tracker.js +4 -62
- package/dist/cjs/naylence/fame/fabric/fabric-registry.js +41 -0
- package/dist/cjs/naylence/fame/fabric/in-process-fame-fabric.js +3 -0
- package/dist/cjs/naylence/fame/fabric/index.js +3 -1
- package/dist/cjs/naylence/fame/grants/broadcast-channel-connection-grant.js +6 -3
- package/dist/cjs/naylence/fame/grants/inpage-connection-grant.js +4 -2
- package/dist/cjs/naylence/fame/http/oauth2-token-router.js +9 -9
- package/dist/cjs/naylence/fame/node/admission/default-node-attach-client.js +34 -5
- package/dist/cjs/naylence/fame/node/upstream-session-manager.js +40 -8
- package/dist/cjs/naylence/fame/security/auth/oauth2-pkce-token-provider-factory.js +10 -6
- package/dist/cjs/naylence/fame/security/auth/oauth2-pkce-token-provider.js +1 -2
- package/dist/cjs/naylence/fame/security/default-security-manager.js +2 -1
- package/dist/cjs/naylence/fame/security/trust-store/noop-trust-store-provider-factory.js +2 -2
- package/dist/cjs/naylence/fame/security/trust-store/trust-store-provider-factory.js +2 -2
- package/dist/cjs/naylence/fame/util/index.js +3 -1
- package/dist/cjs/node.js +4 -1
- package/dist/cjs/runtime-isomorphic.js +4 -1
- package/dist/cjs/version.js +2 -2
- package/dist/esm/_env-shim.js +3 -1
- package/dist/esm/browser.js +2 -2
- package/dist/esm/naylence/fame/config/extended-fame-config.js +2 -1
- package/dist/esm/naylence/fame/connector/broadcast-channel-connector-factory.js +12 -4
- package/dist/esm/naylence/fame/connector/broadcast-channel-connector.browser.js +14 -6
- package/dist/esm/naylence/fame/connector/broadcast-channel-listener-factory.js +3 -1
- package/dist/esm/naylence/fame/connector/broadcast-channel-listener.js +11 -7
- package/dist/esm/naylence/fame/connector/index.js +2 -2
- package/dist/esm/naylence/fame/connector/inpage-connector-factory.js +2 -1
- package/dist/esm/naylence/fame/connector/inpage-connector.js +13 -6
- package/dist/esm/naylence/fame/connector/inpage-listener-factory.js +4 -4
- package/dist/esm/naylence/fame/connector/inpage-listener.js +5 -2
- package/dist/esm/naylence/fame/delivery/default-delivery-tracker.js +4 -62
- package/dist/esm/naylence/fame/fabric/fabric-registry.js +37 -0
- package/dist/esm/naylence/fame/fabric/in-process-fame-fabric.js +3 -0
- package/dist/esm/naylence/fame/fabric/index.js +1 -0
- package/dist/esm/naylence/fame/grants/broadcast-channel-connection-grant.js +6 -3
- package/dist/esm/naylence/fame/grants/inpage-connection-grant.js +4 -2
- package/dist/esm/naylence/fame/http/oauth2-token-router.js +9 -9
- package/dist/esm/naylence/fame/node/admission/default-node-attach-client.js +34 -5
- package/dist/esm/naylence/fame/node/upstream-session-manager.js +40 -8
- package/dist/esm/naylence/fame/security/auth/oauth2-pkce-token-provider-factory.js +10 -6
- package/dist/esm/naylence/fame/security/auth/oauth2-pkce-token-provider.js +1 -2
- package/dist/esm/naylence/fame/security/default-security-manager.js +2 -1
- package/dist/esm/naylence/fame/security/index.js +1 -1
- package/dist/esm/naylence/fame/security/trust-store/noop-trust-store-provider-factory.js +3 -3
- package/dist/esm/naylence/fame/security/trust-store/trust-store-provider-factory.js +3 -3
- package/dist/esm/naylence/fame/util/index.js +1 -0
- package/dist/esm/node.js +2 -1
- package/dist/esm/runtime-isomorphic.js +2 -0
- package/dist/esm/version.js +2 -2
- package/dist/node/index.cjs +259 -171
- package/dist/node/index.mjs +258 -172
- package/dist/node/node.cjs +225 -136
- package/dist/node/node.mjs +223 -137
- package/dist/types/browser.d.ts +2 -2
- package/dist/types/naylence/fame/connector/broadcast-channel-connector-factory.d.ts +1 -0
- package/dist/types/naylence/fame/connector/index.d.ts +3 -3
- package/dist/types/naylence/fame/delivery/default-delivery-tracker.d.ts +0 -6
- package/dist/types/naylence/fame/fabric/fabric-registry.d.ts +29 -0
- package/dist/types/naylence/fame/fabric/index.d.ts +1 -0
- package/dist/types/naylence/fame/node/admission/default-node-attach-client.d.ts +1 -0
- package/dist/types/naylence/fame/security/index.d.ts +1 -1
- package/dist/types/naylence/fame/security/trust-store/noop-trust-store-provider-factory.d.ts +3 -3
- package/dist/types/naylence/fame/security/trust-store/trust-store-provider-factory.d.ts +4 -4
- package/dist/types/naylence/fame/security/trust-store/trust-store-provider.d.ts +5 -5
- package/dist/types/naylence/fame/util/index.d.ts +1 -0
- package/dist/types/node.d.ts +2 -1
- package/dist/types/runtime-isomorphic.d.ts +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/node/index.mjs
CHANGED
|
@@ -13,12 +13,12 @@ import fastify from 'fastify';
|
|
|
13
13
|
import websocketPlugin from '@fastify/websocket';
|
|
14
14
|
|
|
15
15
|
// This file is auto-generated during build - do not edit manually
|
|
16
|
-
// Generated from package.json version: 0.3.
|
|
16
|
+
// Generated from package.json version: 0.3.9
|
|
17
17
|
/**
|
|
18
18
|
* The package version, injected at build time.
|
|
19
19
|
* @internal
|
|
20
20
|
*/
|
|
21
|
-
const VERSION = '0.3.
|
|
21
|
+
const VERSION = '0.3.9';
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Fame protocol specific error classes with WebSocket close codes and proper inheritance.
|
|
@@ -2247,6 +2247,50 @@ function validateKeyCorrelationTtlSec(ttlSec) {
|
|
|
2247
2247
|
});
|
|
2248
2248
|
}
|
|
2249
2249
|
|
|
2250
|
+
function isModuleNotFoundError(error) {
|
|
2251
|
+
if (!(error instanceof Error)) {
|
|
2252
|
+
return false;
|
|
2253
|
+
}
|
|
2254
|
+
const message = error.message || '';
|
|
2255
|
+
if (message.includes('Cannot find module') ||
|
|
2256
|
+
message.includes('ERR_MODULE_NOT_FOUND') ||
|
|
2257
|
+
message.includes('MODULE_NOT_FOUND')) {
|
|
2258
|
+
return true;
|
|
2259
|
+
}
|
|
2260
|
+
const code = error.code;
|
|
2261
|
+
if (typeof code === 'string') {
|
|
2262
|
+
return code === 'MODULE_NOT_FOUND' || code === 'ERR_MODULE_NOT_FOUND';
|
|
2263
|
+
}
|
|
2264
|
+
return false;
|
|
2265
|
+
}
|
|
2266
|
+
/**
|
|
2267
|
+
* Wraps a dynamic import loader and enriches "module not found" failures with an actionable error message.
|
|
2268
|
+
*/
|
|
2269
|
+
async function safeImport(loader, dependencyNameOrOptions, maybeOptions) {
|
|
2270
|
+
const options = typeof dependencyNameOrOptions === 'string'
|
|
2271
|
+
? { dependencyName: dependencyNameOrOptions, ...(maybeOptions ?? {}) }
|
|
2272
|
+
: dependencyNameOrOptions;
|
|
2273
|
+
const dependencyName = options.dependencyName;
|
|
2274
|
+
try {
|
|
2275
|
+
return await loader();
|
|
2276
|
+
}
|
|
2277
|
+
catch (error) {
|
|
2278
|
+
if (isModuleNotFoundError(error)) {
|
|
2279
|
+
const message = options.helpMessage ??
|
|
2280
|
+
`Missing optional dependency "${dependencyName}". Install it to enable this feature.`;
|
|
2281
|
+
const enrichedError = new Error(message);
|
|
2282
|
+
try {
|
|
2283
|
+
enrichedError.cause = error;
|
|
2284
|
+
}
|
|
2285
|
+
catch {
|
|
2286
|
+
// Ignore environments that do not support attaching a cause.
|
|
2287
|
+
}
|
|
2288
|
+
throw enrichedError;
|
|
2289
|
+
}
|
|
2290
|
+
throw error;
|
|
2291
|
+
}
|
|
2292
|
+
}
|
|
2293
|
+
|
|
2250
2294
|
/**
|
|
2251
2295
|
* flow_controller.ts - credit window management with cooperative back-pressure.
|
|
2252
2296
|
*
|
|
@@ -3451,50 +3495,6 @@ function normalizeSecretSource(value) {
|
|
|
3451
3495
|
return SecretSource.normalize(value);
|
|
3452
3496
|
}
|
|
3453
3497
|
|
|
3454
|
-
function isModuleNotFoundError(error) {
|
|
3455
|
-
if (!(error instanceof Error)) {
|
|
3456
|
-
return false;
|
|
3457
|
-
}
|
|
3458
|
-
const message = error.message || '';
|
|
3459
|
-
if (message.includes('Cannot find module') ||
|
|
3460
|
-
message.includes('ERR_MODULE_NOT_FOUND') ||
|
|
3461
|
-
message.includes('MODULE_NOT_FOUND')) {
|
|
3462
|
-
return true;
|
|
3463
|
-
}
|
|
3464
|
-
const code = error.code;
|
|
3465
|
-
if (typeof code === 'string') {
|
|
3466
|
-
return code === 'MODULE_NOT_FOUND' || code === 'ERR_MODULE_NOT_FOUND';
|
|
3467
|
-
}
|
|
3468
|
-
return false;
|
|
3469
|
-
}
|
|
3470
|
-
/**
|
|
3471
|
-
* Wraps a dynamic import loader and enriches "module not found" failures with an actionable error message.
|
|
3472
|
-
*/
|
|
3473
|
-
async function safeImport(loader, dependencyNameOrOptions, maybeOptions) {
|
|
3474
|
-
const options = typeof dependencyNameOrOptions === 'string'
|
|
3475
|
-
? { dependencyName: dependencyNameOrOptions, ...(maybeOptions ?? {}) }
|
|
3476
|
-
: dependencyNameOrOptions;
|
|
3477
|
-
const dependencyName = options.dependencyName;
|
|
3478
|
-
try {
|
|
3479
|
-
return await loader();
|
|
3480
|
-
}
|
|
3481
|
-
catch (error) {
|
|
3482
|
-
if (isModuleNotFoundError(error)) {
|
|
3483
|
-
const message = options.helpMessage ??
|
|
3484
|
-
`Missing optional dependency "${dependencyName}". Install it to enable this feature.`;
|
|
3485
|
-
const enrichedError = new Error(message);
|
|
3486
|
-
try {
|
|
3487
|
-
enrichedError.cause = error;
|
|
3488
|
-
}
|
|
3489
|
-
catch {
|
|
3490
|
-
// Ignore environments that do not support attaching a cause.
|
|
3491
|
-
}
|
|
3492
|
-
throw enrichedError;
|
|
3493
|
-
}
|
|
3494
|
-
throw error;
|
|
3495
|
-
}
|
|
3496
|
-
}
|
|
3497
|
-
|
|
3498
3498
|
const indexedDBConfigSchema = z
|
|
3499
3499
|
.object({
|
|
3500
3500
|
type: z
|
|
@@ -7090,9 +7090,6 @@ class DefaultDeliveryTracker extends TaskSpawner {
|
|
|
7090
7090
|
this.ackDoneSince = new Map();
|
|
7091
7091
|
this.replyDoneSince = new Map();
|
|
7092
7092
|
this.pendingAckDispatches = new Set();
|
|
7093
|
-
this.recentlyHandled = new Map();
|
|
7094
|
-
this.recentlyHandledOrder = [];
|
|
7095
|
-
this.recentlyHandledTtlMs = 60000;
|
|
7096
7093
|
this.isPreparingToStop = false;
|
|
7097
7094
|
this.shutdownRequestedAtMs = null;
|
|
7098
7095
|
this.shutdownRetryGraceMs = 1000;
|
|
@@ -7314,22 +7311,6 @@ class DefaultDeliveryTracker extends TaskSpawner {
|
|
|
7314
7311
|
}
|
|
7315
7312
|
}
|
|
7316
7313
|
else {
|
|
7317
|
-
const wasRecentlyHandled = await this.lock.runExclusive(async () => this.wasRecentlyHandled(envelope.id));
|
|
7318
|
-
if (wasRecentlyHandled) {
|
|
7319
|
-
logger$12.debug('tracker_duplicate_envelope_recently_handled', {
|
|
7320
|
-
envp_id: envelope.id,
|
|
7321
|
-
});
|
|
7322
|
-
return new TrackedEnvelope({
|
|
7323
|
-
timeoutAtMs: 0,
|
|
7324
|
-
overallTimeoutAtMs: 0,
|
|
7325
|
-
expectedResponseType: envelope.rtype ?? FameResponseType.NONE,
|
|
7326
|
-
createdAtMs: Date.now(),
|
|
7327
|
-
status: EnvelopeStatus.HANDLED,
|
|
7328
|
-
mailboxType: MailboxType.INBOX,
|
|
7329
|
-
originalEnvelope: envelope,
|
|
7330
|
-
serviceName: inboxName,
|
|
7331
|
-
});
|
|
7332
|
-
}
|
|
7333
7314
|
tracked = new TrackedEnvelope({
|
|
7334
7315
|
timeoutAtMs: 0,
|
|
7335
7316
|
overallTimeoutAtMs: 0,
|
|
@@ -7351,12 +7332,8 @@ class DefaultDeliveryTracker extends TaskSpawner {
|
|
|
7351
7332
|
async onEnvelopeHandled(envelope) {
|
|
7352
7333
|
const inbox = this.ensureInbox();
|
|
7353
7334
|
envelope.status = EnvelopeStatus.HANDLED;
|
|
7335
|
+
// Delete the envelope from inbox to prevent growth
|
|
7354
7336
|
await inbox.delete(envelope.originalEnvelope.id);
|
|
7355
|
-
await this.lock.runExclusive(async () => {
|
|
7356
|
-
this.markRecentlyHandled(envelope.originalEnvelope.id);
|
|
7357
|
-
});
|
|
7358
|
-
// Preserve handled envelope to prevent duplicate redelivery during shutdown drains.
|
|
7359
|
-
// await inbox.set(envelope.originalEnvelope.id, envelope);
|
|
7360
7337
|
}
|
|
7361
7338
|
async onEnvelopeHandleFailed(inboxName, envelope, context, error, isFinalFailure = false) {
|
|
7362
7339
|
const inbox = this.ensureInbox();
|
|
@@ -7571,9 +7548,9 @@ class DefaultDeliveryTracker extends TaskSpawner {
|
|
|
7571
7548
|
});
|
|
7572
7549
|
await this.markDoneSince(this.replyFutures, trackedEnvelope.originalEnvelope.id, this.replyDoneSince);
|
|
7573
7550
|
await this.markDoneSince(this.ackFutures, trackedEnvelope.originalEnvelope.id, this.ackDoneSince);
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7551
|
+
// Note: ACK is already sent in onCorrelatedMessage (lines 655-657)
|
|
7552
|
+
// when the reply envelope is first delivered. No need to send it again here.
|
|
7553
|
+
// Removing this duplicate sendAck call fixes the duplicate DeliveryAck bug.
|
|
7577
7554
|
for (const handler of this.eventHandlers) {
|
|
7578
7555
|
await handler.onEnvelopeReplied?.(trackedEnvelope, envelope);
|
|
7579
7556
|
}
|
|
@@ -7723,8 +7700,6 @@ class DefaultDeliveryTracker extends TaskSpawner {
|
|
|
7723
7700
|
}
|
|
7724
7701
|
this.streamDone.clear();
|
|
7725
7702
|
this.correlationToEnvelope.clear();
|
|
7726
|
-
this.recentlyHandled.clear();
|
|
7727
|
-
this.recentlyHandledOrder.length = 0;
|
|
7728
7703
|
return values;
|
|
7729
7704
|
});
|
|
7730
7705
|
for (const timer of timers) {
|
|
@@ -8306,39 +8281,6 @@ class DefaultDeliveryTracker extends TaskSpawner {
|
|
|
8306
8281
|
this.pendingAckDispatches.delete(ackDispatch);
|
|
8307
8282
|
}
|
|
8308
8283
|
}
|
|
8309
|
-
markRecentlyHandled(envelopeId) {
|
|
8310
|
-
const now = Date.now();
|
|
8311
|
-
this.recentlyHandled.set(envelopeId, now);
|
|
8312
|
-
this.recentlyHandledOrder.push(envelopeId);
|
|
8313
|
-
this.trimRecentlyHandled(now);
|
|
8314
|
-
}
|
|
8315
|
-
wasRecentlyHandled(envelopeId) {
|
|
8316
|
-
const now = Date.now();
|
|
8317
|
-
const timestamp = this.recentlyHandled.get(envelopeId);
|
|
8318
|
-
if (timestamp === undefined) {
|
|
8319
|
-
return false;
|
|
8320
|
-
}
|
|
8321
|
-
if (now - timestamp > this.recentlyHandledTtlMs) {
|
|
8322
|
-
this.recentlyHandled.delete(envelopeId);
|
|
8323
|
-
return false;
|
|
8324
|
-
}
|
|
8325
|
-
return true;
|
|
8326
|
-
}
|
|
8327
|
-
trimRecentlyHandled(now) {
|
|
8328
|
-
while (this.recentlyHandledOrder.length > 0) {
|
|
8329
|
-
const candidate = this.recentlyHandledOrder[0];
|
|
8330
|
-
const timestamp = this.recentlyHandled.get(candidate);
|
|
8331
|
-
if (timestamp === undefined) {
|
|
8332
|
-
this.recentlyHandledOrder.shift();
|
|
8333
|
-
continue;
|
|
8334
|
-
}
|
|
8335
|
-
if (now - timestamp <= this.recentlyHandledTtlMs) {
|
|
8336
|
-
break;
|
|
8337
|
-
}
|
|
8338
|
-
this.recentlyHandled.delete(candidate);
|
|
8339
|
-
this.recentlyHandledOrder.shift();
|
|
8340
|
-
}
|
|
8341
|
-
}
|
|
8342
8284
|
getShutdownRetryDeferDelay(nowMs) {
|
|
8343
8285
|
if (!this.isPreparingToStop || this.shutdownRequestedAtMs === null) {
|
|
8344
8286
|
return null;
|
|
@@ -9832,7 +9774,8 @@ const ensureBroadcastEnvironment = () => {
|
|
|
9832
9774
|
};
|
|
9833
9775
|
let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAsyncConnector {
|
|
9834
9776
|
static generateConnectorId() {
|
|
9835
|
-
const globalCrypto = globalThis
|
|
9777
|
+
const globalCrypto = globalThis
|
|
9778
|
+
.crypto;
|
|
9836
9779
|
if (globalCrypto?.randomUUID) {
|
|
9837
9780
|
return globalCrypto.randomUUID();
|
|
9838
9781
|
}
|
|
@@ -9887,7 +9830,8 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
|
|
|
9887
9830
|
this.listenerRegistered = false;
|
|
9888
9831
|
this.visibilityChangeListenerRegistered = false;
|
|
9889
9832
|
this.channelName =
|
|
9890
|
-
typeof config.channelName === 'string' &&
|
|
9833
|
+
typeof config.channelName === 'string' &&
|
|
9834
|
+
config.channelName.trim().length > 0
|
|
9891
9835
|
? config.channelName.trim()
|
|
9892
9836
|
: DEFAULT_CHANNEL$7;
|
|
9893
9837
|
const preferredCapacity = typeof config.inboxCapacity === 'number' &&
|
|
@@ -9911,6 +9855,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
|
|
|
9911
9855
|
local_node_id: this.localNodeId,
|
|
9912
9856
|
target_node_id: this.targetNodeId ?? null,
|
|
9913
9857
|
inbox_capacity: preferredCapacity,
|
|
9858
|
+
passive: config.passive ?? false,
|
|
9914
9859
|
timestamp: new Date().toISOString(),
|
|
9915
9860
|
});
|
|
9916
9861
|
this.onMsg = (event) => {
|
|
@@ -9928,7 +9873,8 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
|
|
|
9928
9873
|
channel: this.channelName,
|
|
9929
9874
|
connector_id: this.connectorId,
|
|
9930
9875
|
message_type: message && typeof message === 'object'
|
|
9931
|
-
? message.constructor
|
|
9876
|
+
? (message.constructor
|
|
9877
|
+
?.name ?? typeof message)
|
|
9932
9878
|
: typeof message,
|
|
9933
9879
|
has_sender_id: Boolean(message?.senderId),
|
|
9934
9880
|
has_sender_node_id: Boolean(message?.senderNodeId),
|
|
@@ -10158,7 +10104,9 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
|
|
|
10158
10104
|
timestamp: new Date().toISOString(),
|
|
10159
10105
|
});
|
|
10160
10106
|
}
|
|
10161
|
-
if (this.visibilityChangeListenerRegistered &&
|
|
10107
|
+
if (this.visibilityChangeListenerRegistered &&
|
|
10108
|
+
this.visibilityChangeHandler &&
|
|
10109
|
+
typeof document !== 'undefined') {
|
|
10162
10110
|
document.removeEventListener('visibilitychange', this.visibilityChangeHandler);
|
|
10163
10111
|
this.visibilityChangeListenerRegistered = false;
|
|
10164
10112
|
this.visibilityChangeHandler = undefined;
|
|
@@ -10186,7 +10134,7 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
|
|
|
10186
10134
|
return rawOrEnvelope;
|
|
10187
10135
|
}
|
|
10188
10136
|
_isWildcardTarget() {
|
|
10189
|
-
return this.targetNodeId === '*' || typeof this.targetNodeId === 'undefined';
|
|
10137
|
+
return (this.targetNodeId === '*' || typeof this.targetNodeId === 'undefined');
|
|
10190
10138
|
}
|
|
10191
10139
|
_shouldAcceptMessageFromBus(senderNodeId, targetNodeId) {
|
|
10192
10140
|
if (this._isWildcardTarget()) {
|
|
@@ -10206,7 +10154,9 @@ let BroadcastChannelConnector$2 = class BroadcastChannelConnector extends BaseAs
|
|
|
10206
10154
|
return true;
|
|
10207
10155
|
}
|
|
10208
10156
|
const expectedSender = this.targetNodeId;
|
|
10209
|
-
if (expectedSender &&
|
|
10157
|
+
if (expectedSender &&
|
|
10158
|
+
expectedSender !== '*' &&
|
|
10159
|
+
senderNodeId !== expectedSender) {
|
|
10210
10160
|
logger$_.debug('broadcast_channel_message_rejected', {
|
|
10211
10161
|
channel: this.channelName,
|
|
10212
10162
|
connector_id: this.connectorId,
|
|
@@ -10425,14 +10375,16 @@ function normalizeBroadcastChannelConnectionGrant(candidate) {
|
|
|
10425
10375
|
type,
|
|
10426
10376
|
purpose,
|
|
10427
10377
|
};
|
|
10428
|
-
const channelValue = candidate.channelName ??
|
|
10378
|
+
const channelValue = candidate.channelName ??
|
|
10379
|
+
candidate['channel_name'];
|
|
10429
10380
|
if (channelValue !== undefined) {
|
|
10430
10381
|
if (typeof channelValue !== 'string' || channelValue.trim().length === 0) {
|
|
10431
10382
|
throw new TypeError('BroadcastChannelConnectionGrant "channelName" must be a non-empty string when provided');
|
|
10432
10383
|
}
|
|
10433
10384
|
result.channelName = channelValue.trim();
|
|
10434
10385
|
}
|
|
10435
|
-
const inboxValue = candidate.inboxCapacity ??
|
|
10386
|
+
const inboxValue = candidate.inboxCapacity ??
|
|
10387
|
+
candidate['inbox_capacity'];
|
|
10436
10388
|
if (inboxValue !== undefined) {
|
|
10437
10389
|
if (typeof inboxValue !== 'number' ||
|
|
10438
10390
|
!Number.isFinite(inboxValue) ||
|
|
@@ -10441,7 +10393,8 @@ function normalizeBroadcastChannelConnectionGrant(candidate) {
|
|
|
10441
10393
|
}
|
|
10442
10394
|
result.inboxCapacity = Math.floor(inboxValue);
|
|
10443
10395
|
}
|
|
10444
|
-
const windowValue = candidate.initialWindow ??
|
|
10396
|
+
const windowValue = candidate.initialWindow ??
|
|
10397
|
+
candidate['initial_window'];
|
|
10445
10398
|
if (windowValue !== undefined) {
|
|
10446
10399
|
if (typeof windowValue !== 'number' ||
|
|
10447
10400
|
!Number.isFinite(windowValue) ||
|
|
@@ -10778,25 +10731,56 @@ class UpstreamSessionManager extends TaskSpawner {
|
|
|
10778
10731
|
await connector.start(this.wrappedHandler);
|
|
10779
10732
|
this.connector = connector;
|
|
10780
10733
|
const callbackGrants = this.node.gatherSupportedCallbackGrants();
|
|
10734
|
+
logger$Z.debug('callback_grants_before_augmentation', {
|
|
10735
|
+
count: callbackGrants.length,
|
|
10736
|
+
types: callbackGrants.map((g) => g.type),
|
|
10737
|
+
});
|
|
10738
|
+
// Check if we should create a broadcast callback grant before processing connection grants
|
|
10739
|
+
// This prevents adding duplicate broadcast grants
|
|
10740
|
+
const shouldAddBroadcastGrant = this.shouldAdvertiseBroadcastGrant(grant, callbackGrants);
|
|
10741
|
+
const broadcastCallbackGrant = shouldAddBroadcastGrant
|
|
10742
|
+
? this.createBroadcastCallbackGrant(grant)
|
|
10743
|
+
: null;
|
|
10744
|
+
logger$Z.debug('broadcast_callback_grant_check', {
|
|
10745
|
+
should_add: shouldAddBroadcastGrant,
|
|
10746
|
+
grant_created: !!broadcastCallbackGrant,
|
|
10747
|
+
});
|
|
10781
10748
|
// Include admission client's connection grants as callback grants
|
|
10782
10749
|
// This ensures DirectAdmissionClient grants are available for grant selection
|
|
10783
|
-
if (welcome.frame.connectionGrants &&
|
|
10750
|
+
if (welcome.frame.connectionGrants &&
|
|
10751
|
+
Array.isArray(welcome.frame.connectionGrants)) {
|
|
10784
10752
|
for (const grant of welcome.frame.connectionGrants) {
|
|
10785
10753
|
if (grant && typeof grant === 'object') {
|
|
10786
10754
|
// Avoid duplicates by checking if grant already exists
|
|
10787
|
-
const isDuplicate = callbackGrants.some(existing => JSON.stringify(existing) === JSON.stringify(grant));
|
|
10755
|
+
const isDuplicate = callbackGrants.some((existing) => JSON.stringify(existing) === JSON.stringify(grant));
|
|
10788
10756
|
if (!isDuplicate) {
|
|
10789
10757
|
callbackGrants.push(grant);
|
|
10758
|
+
logger$Z.debug('added_connection_grant_as_callback', {
|
|
10759
|
+
type: grant.type,
|
|
10760
|
+
});
|
|
10761
|
+
}
|
|
10762
|
+
else {
|
|
10763
|
+
logger$Z.debug('skipped_duplicate_connection_grant', {
|
|
10764
|
+
type: grant.type,
|
|
10765
|
+
});
|
|
10790
10766
|
}
|
|
10791
10767
|
}
|
|
10792
10768
|
}
|
|
10793
10769
|
}
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
10798
|
-
|
|
10770
|
+
// Add broadcast grant after connection grants to ensure we don't duplicate
|
|
10771
|
+
// any broadcast grants that may have been in connectionGrants
|
|
10772
|
+
if (broadcastCallbackGrant &&
|
|
10773
|
+
this.shouldAdvertiseBroadcastGrant(grant, callbackGrants)) {
|
|
10774
|
+
callbackGrants.push(broadcastCallbackGrant);
|
|
10775
|
+
logger$Z.debug('added_broadcast_callback_grant');
|
|
10776
|
+
}
|
|
10777
|
+
else if (broadcastCallbackGrant) {
|
|
10778
|
+
logger$Z.debug('skipped_duplicate_broadcast_callback_grant');
|
|
10799
10779
|
}
|
|
10780
|
+
logger$Z.debug('callback_grants_after_augmentation', {
|
|
10781
|
+
count: callbackGrants.length,
|
|
10782
|
+
types: callbackGrants.map((g) => g.type),
|
|
10783
|
+
});
|
|
10800
10784
|
const attachInfo = await this.attachClient.attach(this.node, this.outboundOriginType, connector, welcome.frame, this.wrappedHandler, this.getKeys() ?? undefined, callbackGrants);
|
|
10801
10785
|
this.targetSystemId = attachInfo.targetSystemId ?? null;
|
|
10802
10786
|
if (this.targetSystemId) {
|
|
@@ -11037,7 +11021,8 @@ class UpstreamSessionManager extends TaskSpawner {
|
|
|
11037
11021
|
continue;
|
|
11038
11022
|
}
|
|
11039
11023
|
// Reset ack time if just resumed from pause (prevents immediate timeout)
|
|
11040
|
-
if (previousState === ConnectorState.PAUSED &&
|
|
11024
|
+
if (previousState === ConnectorState.PAUSED &&
|
|
11025
|
+
currentState === ConnectorState.STARTED) {
|
|
11041
11026
|
logger$Z.debug('connector_just_resumed_resetting_ack_time', {
|
|
11042
11027
|
previous_state: previousState,
|
|
11043
11028
|
current_state: currentState,
|
|
@@ -12594,15 +12579,30 @@ class DefaultNodeAttachClient {
|
|
|
12594
12579
|
constructor(options = {}) {
|
|
12595
12580
|
this.buffer = [];
|
|
12596
12581
|
this.inHandshake = false;
|
|
12582
|
+
this.expectedSystemId = null;
|
|
12597
12583
|
this.timeoutMs = options.timeoutMs ?? 10000;
|
|
12598
12584
|
this.attachmentKeyValidator = options.attachmentKeyValidator;
|
|
12599
12585
|
this.replicaStickinessManager = options.replicaStickinessManager ?? null;
|
|
12600
12586
|
}
|
|
12601
12587
|
async attach(node, originType, connector, welcomeFrame, finalHandler, keys, callbackGrants) {
|
|
12602
12588
|
this.inHandshake = true;
|
|
12589
|
+
this.expectedSystemId = welcomeFrame.systemId;
|
|
12603
12590
|
const interimHandler = async (envelope, context) => {
|
|
12604
12591
|
if (this.inHandshake) {
|
|
12605
|
-
|
|
12592
|
+
// Filter: only buffer frames related to our systemId or frames without systemId info
|
|
12593
|
+
const frameSystemId = envelope.frame
|
|
12594
|
+
?.systemId;
|
|
12595
|
+
if (!frameSystemId || frameSystemId === this.expectedSystemId) {
|
|
12596
|
+
this.buffer.push(envelope);
|
|
12597
|
+
}
|
|
12598
|
+
else {
|
|
12599
|
+
// Silently ignore frames from other agents during concurrent handshakes
|
|
12600
|
+
logger$W.debug('handshake_ignoring_frame_from_different_system', {
|
|
12601
|
+
frame_type: envelope.frame.type,
|
|
12602
|
+
frame_system_id: frameSystemId,
|
|
12603
|
+
expected_system_id: this.expectedSystemId,
|
|
12604
|
+
});
|
|
12605
|
+
}
|
|
12606
12606
|
return null;
|
|
12607
12607
|
}
|
|
12608
12608
|
return finalHandler(envelope, context);
|
|
@@ -12729,6 +12729,7 @@ class DefaultNodeAttachClient {
|
|
|
12729
12729
|
parent_id: ackFrame.targetSystemId,
|
|
12730
12730
|
});
|
|
12731
12731
|
this.inHandshake = false;
|
|
12732
|
+
this.expectedSystemId = null;
|
|
12732
12733
|
await connector.replaceHandler(finalHandler);
|
|
12733
12734
|
while (this.buffer.length > 0) {
|
|
12734
12735
|
const bufferedEnvelope = this.buffer.shift();
|
|
@@ -12786,7 +12787,8 @@ class DefaultNodeAttachClient {
|
|
|
12786
12787
|
const deadline = Date.now() + this.timeoutMs;
|
|
12787
12788
|
while (Date.now() < deadline) {
|
|
12788
12789
|
// Allow both STARTED and PAUSED states (PAUSED = tab hidden but connection alive)
|
|
12789
|
-
if (connector.state !== ConnectorState.STARTED &&
|
|
12790
|
+
if (connector.state !== ConnectorState.STARTED &&
|
|
12791
|
+
connector.state !== ConnectorState.PAUSED) {
|
|
12790
12792
|
let errorMessage = 'Connector closed while waiting for NodeAttachAck';
|
|
12791
12793
|
if (connector.closeCode !== undefined) {
|
|
12792
12794
|
errorMessage += ` (code=${connector.closeCode}`;
|
|
@@ -12805,9 +12807,21 @@ class DefaultNodeAttachClient {
|
|
|
12805
12807
|
if (envelope.frame.type === 'NodeAttachAck') {
|
|
12806
12808
|
return envelope;
|
|
12807
12809
|
}
|
|
12808
|
-
|
|
12809
|
-
|
|
12810
|
-
|
|
12810
|
+
// NodeAttach frames during handshake are expected in multi-agent scenarios
|
|
12811
|
+
// where multiple agents attach concurrently to the same channel
|
|
12812
|
+
if (envelope.frame.type === 'NodeAttach') {
|
|
12813
|
+
logger$W.debug('handshake_ignoring_concurrent_attach', {
|
|
12814
|
+
frame_type: envelope.frame.type,
|
|
12815
|
+
frame_system_id: envelope.frame?.systemId ??
|
|
12816
|
+
'unknown',
|
|
12817
|
+
});
|
|
12818
|
+
}
|
|
12819
|
+
else {
|
|
12820
|
+
// Other unexpected frames are still logged as errors
|
|
12821
|
+
logger$W.error('unexpected_frame_during_handshake', {
|
|
12822
|
+
frame_type: envelope.frame.type,
|
|
12823
|
+
});
|
|
12824
|
+
}
|
|
12811
12825
|
}
|
|
12812
12826
|
await delay(HANDSHAKE_POLL_INTERVAL_MS);
|
|
12813
12827
|
}
|
|
@@ -13526,7 +13540,8 @@ function createFsShim() {
|
|
|
13526
13540
|
else if (options &&
|
|
13527
13541
|
typeof options === 'object' &&
|
|
13528
13542
|
'encoding' in options &&
|
|
13529
|
-
typeof options.encoding ===
|
|
13543
|
+
typeof options.encoding ===
|
|
13544
|
+
'string') {
|
|
13530
13545
|
encoding = options.encoding;
|
|
13531
13546
|
}
|
|
13532
13547
|
const data = fsBinding.readFileUtf8(pathOrDescriptor, 0);
|
|
@@ -20459,7 +20474,8 @@ class InPageConnector extends BaseAsyncConnector {
|
|
|
20459
20474
|
this.listenerRegistered = false;
|
|
20460
20475
|
this.visibilityChangeListenerRegistered = false;
|
|
20461
20476
|
this.channelName =
|
|
20462
|
-
typeof config.channelName === 'string' &&
|
|
20477
|
+
typeof config.channelName === 'string' &&
|
|
20478
|
+
config.channelName.trim().length > 0
|
|
20463
20479
|
? config.channelName.trim()
|
|
20464
20480
|
: DEFAULT_CHANNEL$6;
|
|
20465
20481
|
const preferredCapacity = typeof config.inboxCapacity === 'number' &&
|
|
@@ -20498,7 +20514,8 @@ class InPageConnector extends BaseAsyncConnector {
|
|
|
20498
20514
|
channel: this.channelName,
|
|
20499
20515
|
connector_id: this.connectorId,
|
|
20500
20516
|
message_type: message && typeof message === 'object'
|
|
20501
|
-
? message.constructor
|
|
20517
|
+
? (message.constructor
|
|
20518
|
+
?.name ?? typeof message)
|
|
20502
20519
|
: typeof message,
|
|
20503
20520
|
has_sender_id: Boolean(message?.senderId),
|
|
20504
20521
|
has_sender_node_id: Boolean(message?.senderNodeId),
|
|
@@ -20507,7 +20524,8 @@ class InPageConnector extends BaseAsyncConnector {
|
|
|
20507
20524
|
return;
|
|
20508
20525
|
}
|
|
20509
20526
|
const busMessage = message;
|
|
20510
|
-
const senderId = typeof busMessage.senderId === 'string' &&
|
|
20527
|
+
const senderId = typeof busMessage.senderId === 'string' &&
|
|
20528
|
+
busMessage.senderId.length > 0
|
|
20511
20529
|
? busMessage.senderId
|
|
20512
20530
|
: null;
|
|
20513
20531
|
const senderNodeId = InPageConnector.normalizeNodeId(busMessage.senderNodeId);
|
|
@@ -20758,7 +20776,9 @@ class InPageConnector extends BaseAsyncConnector {
|
|
|
20758
20776
|
timestamp: new Date().toISOString(),
|
|
20759
20777
|
});
|
|
20760
20778
|
}
|
|
20761
|
-
if (this.visibilityChangeListenerRegistered &&
|
|
20779
|
+
if (this.visibilityChangeListenerRegistered &&
|
|
20780
|
+
this.visibilityChangeHandler &&
|
|
20781
|
+
typeof document !== 'undefined') {
|
|
20762
20782
|
document.removeEventListener('visibilitychange', this.visibilityChangeHandler);
|
|
20763
20783
|
this.visibilityChangeListenerRegistered = false;
|
|
20764
20784
|
this.visibilityChangeHandler = undefined;
|
|
@@ -20775,7 +20795,7 @@ class InPageConnector extends BaseAsyncConnector {
|
|
|
20775
20795
|
return rawOrEnvelope;
|
|
20776
20796
|
}
|
|
20777
20797
|
_isWildcardTarget() {
|
|
20778
|
-
return this.targetNodeId === '*' || typeof this.targetNodeId === 'undefined';
|
|
20798
|
+
return (this.targetNodeId === '*' || typeof this.targetNodeId === 'undefined');
|
|
20779
20799
|
}
|
|
20780
20800
|
_shouldAcceptMessageFromBus(senderNodeId, targetNodeId) {
|
|
20781
20801
|
if (this._isWildcardTarget()) {
|
|
@@ -20795,7 +20815,9 @@ class InPageConnector extends BaseAsyncConnector {
|
|
|
20795
20815
|
return true;
|
|
20796
20816
|
}
|
|
20797
20817
|
const expectedSender = this.targetNodeId;
|
|
20798
|
-
if (expectedSender &&
|
|
20818
|
+
if (expectedSender &&
|
|
20819
|
+
expectedSender !== '*' &&
|
|
20820
|
+
senderNodeId !== expectedSender) {
|
|
20799
20821
|
logger$G.debug('inpage_message_rejected', {
|
|
20800
20822
|
channel: this.channelName,
|
|
20801
20823
|
connector_id: this.connectorId,
|
|
@@ -21215,8 +21237,8 @@ class CertificateManagerFactory extends AbstractResourceFactory {
|
|
|
21215
21237
|
}
|
|
21216
21238
|
}
|
|
21217
21239
|
|
|
21218
|
-
const DEFAULT_UNCONFIGURED_MESSAGE =
|
|
21219
|
-
const TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE =
|
|
21240
|
+
const DEFAULT_UNCONFIGURED_MESSAGE = 'Trust store is not configured. Set FAME_CA_CERTS to a PEM value, a file path, a data URI, or an HTTPS bundle URL.';
|
|
21241
|
+
const TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE = 'TrustStoreProviderFactory';
|
|
21220
21242
|
class TrustStoreProviderFactory extends AbstractResourceFactory {
|
|
21221
21243
|
createUnconfiguredProvider(reason) {
|
|
21222
21244
|
return new NoopTrustStoreProvider(reason ?? DEFAULT_UNCONFIGURED_MESSAGE);
|
|
@@ -24944,7 +24966,8 @@ class DefaultSecurityManager {
|
|
|
24944
24966
|
const hasSignature = Boolean(envelope.sec?.sig);
|
|
24945
24967
|
if (!hasSignature) {
|
|
24946
24968
|
const nodeSid = node.sid;
|
|
24947
|
-
const envelopeSid = envelope
|
|
24969
|
+
const envelopeSid = envelope
|
|
24970
|
+
.sid;
|
|
24948
24971
|
const isLocalUnsignedSelfEnvelope = localContext.originType === DeliveryOriginType.LOCAL &&
|
|
24949
24972
|
typeof nodeSid === 'string' &&
|
|
24950
24973
|
nodeSid.length > 0 &&
|
|
@@ -28224,14 +28247,16 @@ function normalizeInPageConnectionGrant(candidate) {
|
|
|
28224
28247
|
type,
|
|
28225
28248
|
purpose,
|
|
28226
28249
|
};
|
|
28227
|
-
const channelValue = candidate.channelName ??
|
|
28250
|
+
const channelValue = candidate.channelName ??
|
|
28251
|
+
candidate['channel_name'];
|
|
28228
28252
|
if (channelValue !== undefined) {
|
|
28229
28253
|
if (typeof channelValue !== 'string' || channelValue.trim().length === 0) {
|
|
28230
28254
|
throw new TypeError('InPageConnectionGrant "channelName" must be a non-empty string when provided');
|
|
28231
28255
|
}
|
|
28232
28256
|
result.channelName = channelValue.trim();
|
|
28233
28257
|
}
|
|
28234
|
-
const inboxValue = candidate.inboxCapacity ??
|
|
28258
|
+
const inboxValue = candidate.inboxCapacity ??
|
|
28259
|
+
candidate['inbox_capacity'];
|
|
28235
28260
|
if (inboxValue !== undefined) {
|
|
28236
28261
|
if (typeof inboxValue !== 'number' ||
|
|
28237
28262
|
!Number.isFinite(inboxValue) ||
|
|
@@ -28747,6 +28772,44 @@ function normalizeRouterOptions(options) {
|
|
|
28747
28772
|
return { welcomeService, prefix };
|
|
28748
28773
|
}
|
|
28749
28774
|
|
|
28775
|
+
/**
|
|
28776
|
+
* Fabric Registry
|
|
28777
|
+
*
|
|
28778
|
+
* Provides a mapping from nodes to their associated fabrics.
|
|
28779
|
+
* This allows agents to retrieve the fabric they were registered on
|
|
28780
|
+
* without relying on the global fabric stack.
|
|
28781
|
+
*/
|
|
28782
|
+
/**
|
|
28783
|
+
* WeakMap to store the node-to-fabric mapping.
|
|
28784
|
+
* Using WeakMap ensures that nodes can be garbage collected
|
|
28785
|
+
* when no longer referenced elsewhere.
|
|
28786
|
+
*/
|
|
28787
|
+
const nodeToFabric = new WeakMap();
|
|
28788
|
+
/**
|
|
28789
|
+
* @internal
|
|
28790
|
+
* Associates a node with its fabric. This should only be called
|
|
28791
|
+
* by fabric implementations when they create or adopt a node.
|
|
28792
|
+
*
|
|
28793
|
+
* @param node - The node to associate
|
|
28794
|
+
* @param fabric - The fabric that owns the node
|
|
28795
|
+
*/
|
|
28796
|
+
function _setFabricForNode(node, fabric) {
|
|
28797
|
+
nodeToFabric.set(node, fabric);
|
|
28798
|
+
}
|
|
28799
|
+
/**
|
|
28800
|
+
* Retrieves the fabric associated with a node.
|
|
28801
|
+
*
|
|
28802
|
+
* This is useful for agents that need to access the fabric they
|
|
28803
|
+
* were registered on, particularly in environments where multiple
|
|
28804
|
+
* fabrics exist (e.g., React with multiple FabricProviders).
|
|
28805
|
+
*
|
|
28806
|
+
* @param node - The node to look up
|
|
28807
|
+
* @returns The fabric associated with the node, or undefined if not found
|
|
28808
|
+
*/
|
|
28809
|
+
function getFabricForNode(node) {
|
|
28810
|
+
return nodeToFabric.get(node);
|
|
28811
|
+
}
|
|
28812
|
+
|
|
28750
28813
|
/**
|
|
28751
28814
|
* Browser-friendly entry point for Naylence Runtime.
|
|
28752
28815
|
*
|
|
@@ -28837,10 +28900,12 @@ class BroadcastChannelConnectorFactory extends ConnectorFactory {
|
|
|
28837
28900
|
type: BROADCAST_CHANNEL_CONNECTOR_TYPE,
|
|
28838
28901
|
};
|
|
28839
28902
|
const channelCandidate = record.channelName ?? record['channel_name'];
|
|
28840
|
-
if (typeof channelCandidate === 'string' &&
|
|
28903
|
+
if (typeof channelCandidate === 'string' &&
|
|
28904
|
+
channelCandidate.trim().length > 0) {
|
|
28841
28905
|
config.channelName = channelCandidate.trim();
|
|
28842
28906
|
}
|
|
28843
|
-
const inboxCandidate = record.inboxCapacity ??
|
|
28907
|
+
const inboxCandidate = record.inboxCapacity ??
|
|
28908
|
+
record['inbox_capacity'];
|
|
28844
28909
|
if (typeof inboxCandidate === 'number' &&
|
|
28845
28910
|
Number.isFinite(inboxCandidate) &&
|
|
28846
28911
|
inboxCandidate > 0) {
|
|
@@ -28864,9 +28929,11 @@ class BroadcastChannelConnectorFactory extends ConnectorFactory {
|
|
|
28864
28929
|
throw new Error('BroadcastChannelConnectorFactory requires a configuration');
|
|
28865
28930
|
}
|
|
28866
28931
|
const normalized = this._normalizeConfig(config);
|
|
28867
|
-
const options = (factoryArgs[0] ??
|
|
28932
|
+
const options = (factoryArgs[0] ??
|
|
28933
|
+
{});
|
|
28868
28934
|
const normalizedLocalNodeFromConfig = this._normalizeNodeId(normalized.localNodeId);
|
|
28869
|
-
const localNodeId = this._normalizeNodeId(options.localNodeId) ??
|
|
28935
|
+
const localNodeId = this._normalizeNodeId(options.localNodeId) ??
|
|
28936
|
+
normalizedLocalNodeFromConfig;
|
|
28870
28937
|
if (!localNodeId) {
|
|
28871
28938
|
throw new Error('BroadcastChannelConnectorFactory requires a localNodeId from config or create() options');
|
|
28872
28939
|
}
|
|
@@ -28891,6 +28958,7 @@ class BroadcastChannelConnectorFactory extends ConnectorFactory {
|
|
|
28891
28958
|
inboxCapacity,
|
|
28892
28959
|
localNodeId,
|
|
28893
28960
|
initialTargetNodeId: resolvedTarget,
|
|
28961
|
+
passive: normalized.passive,
|
|
28894
28962
|
};
|
|
28895
28963
|
const connector = new BroadcastChannelConnector(connectorConfig, baseConfig);
|
|
28896
28964
|
if (options.authorization) {
|
|
@@ -28929,6 +28997,9 @@ class BroadcastChannelConnectorFactory extends ConnectorFactory {
|
|
|
28929
28997
|
if (normalizedLocalNodeId) {
|
|
28930
28998
|
normalized.localNodeId = normalizedLocalNodeId;
|
|
28931
28999
|
}
|
|
29000
|
+
if (typeof candidate.passive === 'boolean') {
|
|
29001
|
+
normalized.passive = candidate.passive;
|
|
29002
|
+
}
|
|
28932
29003
|
if (typeof candidate.flowControl === 'boolean') {
|
|
28933
29004
|
normalized.flowControl = candidate.flowControl;
|
|
28934
29005
|
}
|
|
@@ -29009,7 +29080,9 @@ function normalizeConfig$r(config) {
|
|
|
29009
29080
|
: DEFAULT_CHANNEL$4;
|
|
29010
29081
|
const rawInbox = record.inboxCapacity ?? record['inbox_capacity'];
|
|
29011
29082
|
let inboxCapacity = DEFAULT_INBOX_CAPACITY$4;
|
|
29012
|
-
if (typeof rawInbox === 'number' &&
|
|
29083
|
+
if (typeof rawInbox === 'number' &&
|
|
29084
|
+
Number.isFinite(rawInbox) &&
|
|
29085
|
+
rawInbox > 0) {
|
|
29013
29086
|
inboxCapacity = Math.floor(rawInbox);
|
|
29014
29087
|
}
|
|
29015
29088
|
else if (typeof rawInbox === 'string') {
|
|
@@ -29526,7 +29599,8 @@ class InPageConnectorFactory extends ConnectorFactory {
|
|
|
29526
29599
|
const normalized = this._normalizeConfig(config);
|
|
29527
29600
|
const options = (factoryArgs[0] ?? {});
|
|
29528
29601
|
const normalizedLocalNodeFromConfig = this._normalizeNodeId(normalized.localNodeId);
|
|
29529
|
-
const localNodeId = this._normalizeNodeId(options.localNodeId) ??
|
|
29602
|
+
const localNodeId = this._normalizeNodeId(options.localNodeId) ??
|
|
29603
|
+
normalizedLocalNodeFromConfig;
|
|
29530
29604
|
if (!localNodeId) {
|
|
29531
29605
|
throw new Error('InPageConnectorFactory requires a localNodeId from config or create() options');
|
|
29532
29606
|
}
|
|
@@ -29676,7 +29750,9 @@ function normalizeConfig$p(config) {
|
|
|
29676
29750
|
: DEFAULT_CHANNEL$2;
|
|
29677
29751
|
const rawInbox = record.inboxCapacity ?? record['inbox_capacity'];
|
|
29678
29752
|
let inboxCapacity = DEFAULT_INBOX_CAPACITY$2;
|
|
29679
|
-
if (typeof rawInbox === 'number' &&
|
|
29753
|
+
if (typeof rawInbox === 'number' &&
|
|
29754
|
+
Number.isFinite(rawInbox) &&
|
|
29755
|
+
rawInbox > 0) {
|
|
29680
29756
|
inboxCapacity = Math.floor(rawInbox);
|
|
29681
29757
|
}
|
|
29682
29758
|
else if (typeof rawInbox === 'string') {
|
|
@@ -29704,9 +29780,7 @@ class InPageListenerFactory extends TransportListenerFactory {
|
|
|
29704
29780
|
}
|
|
29705
29781
|
async create(config, ...factoryArgs) {
|
|
29706
29782
|
const normalized = normalizeConfig$p(config);
|
|
29707
|
-
const [{ InPageListener }] = await Promise.all([
|
|
29708
|
-
getInPageListenerModule(),
|
|
29709
|
-
]);
|
|
29783
|
+
const [{ InPageListener }] = await Promise.all([getInPageListenerModule()]);
|
|
29710
29784
|
return new InPageListener({
|
|
29711
29785
|
channelName: normalized.channelName,
|
|
29712
29786
|
inboxCapacity: normalized.inboxCapacity,
|
|
@@ -30616,6 +30690,8 @@ class InProcessFameFabric extends FameFabric {
|
|
|
30616
30690
|
this._currentNode = await NodeLikeFactory.createNode(nodeConfig);
|
|
30617
30691
|
this._ownsNode = true;
|
|
30618
30692
|
}
|
|
30693
|
+
// Register this fabric in the registry so agents can look it up
|
|
30694
|
+
_setFabricForNode(this._currentNode, this);
|
|
30619
30695
|
if (this._ownsNode && !this._nodeStarted) {
|
|
30620
30696
|
await this.getRequiredNode().start();
|
|
30621
30697
|
this._nodeStarted = true;
|
|
@@ -32757,19 +32833,23 @@ function normalizeConfig$a(config) {
|
|
|
32757
32833
|
normalized.clientSecretConfig = normalizeSecretSource(clientSecretSource);
|
|
32758
32834
|
}
|
|
32759
32835
|
const audienceCandidate = candidate.audience ?? candidate.aud;
|
|
32760
|
-
if (typeof audienceCandidate === 'string' &&
|
|
32836
|
+
if (typeof audienceCandidate === 'string' &&
|
|
32837
|
+
audienceCandidate.trim().length > 0) {
|
|
32761
32838
|
normalized.audience = audienceCandidate.trim();
|
|
32762
32839
|
}
|
|
32763
32840
|
const codeChallengeMethod = candidate.codeChallengeMethod ?? candidate.code_challenge_method;
|
|
32764
|
-
if (typeof codeChallengeMethod === 'string' &&
|
|
32841
|
+
if (typeof codeChallengeMethod === 'string' &&
|
|
32842
|
+
codeChallengeMethod.trim().length > 0) {
|
|
32765
32843
|
normalized.codeChallengeMethod = codeChallengeMethod.trim();
|
|
32766
32844
|
}
|
|
32767
32845
|
const codeVerifierLength = candidate.codeVerifierLength ?? candidate.code_verifier_length;
|
|
32768
|
-
if (typeof codeVerifierLength === 'number' &&
|
|
32846
|
+
if (typeof codeVerifierLength === 'number' &&
|
|
32847
|
+
Number.isFinite(codeVerifierLength)) {
|
|
32769
32848
|
normalized.codeVerifierLength = codeVerifierLength;
|
|
32770
32849
|
}
|
|
32771
32850
|
const clockSkewSeconds = candidate.clockSkewSeconds ?? candidate.clock_skew_seconds;
|
|
32772
|
-
if (typeof clockSkewSeconds === 'number' &&
|
|
32851
|
+
if (typeof clockSkewSeconds === 'number' &&
|
|
32852
|
+
Number.isFinite(clockSkewSeconds)) {
|
|
32773
32853
|
normalized.clockSkewSeconds = clockSkewSeconds;
|
|
32774
32854
|
}
|
|
32775
32855
|
const loginHintParam = candidate.loginHintParam ?? candidate.login_hint_param;
|
|
@@ -32814,8 +32894,8 @@ class OAuth2PkceTokenProviderFactory extends TokenProviderFactory {
|
|
|
32814
32894
|
options.audience = normalized.audience;
|
|
32815
32895
|
}
|
|
32816
32896
|
if (normalized.codeChallengeMethod) {
|
|
32817
|
-
options.codeChallengeMethod =
|
|
32818
|
-
.toUpperCase();
|
|
32897
|
+
options.codeChallengeMethod =
|
|
32898
|
+
normalized.codeChallengeMethod.toUpperCase();
|
|
32819
32899
|
}
|
|
32820
32900
|
if (normalized.codeVerifierLength) {
|
|
32821
32901
|
options.codeVerifierLength = normalized.codeVerifierLength;
|
|
@@ -34572,14 +34652,14 @@ var eddsaEnvelopeVerifierFactory = /*#__PURE__*/Object.freeze({
|
|
|
34572
34652
|
|
|
34573
34653
|
const FACTORY_META$d = {
|
|
34574
34654
|
base: TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE,
|
|
34575
|
-
key:
|
|
34655
|
+
key: 'NoopTrustStoreProvider',
|
|
34576
34656
|
isDefault: true,
|
|
34577
34657
|
priority: 10,
|
|
34578
34658
|
};
|
|
34579
34659
|
class NoopTrustStoreProviderFactory extends TrustStoreProviderFactory {
|
|
34580
34660
|
constructor() {
|
|
34581
34661
|
super(...arguments);
|
|
34582
|
-
this.type =
|
|
34662
|
+
this.type = 'NoopTrustStoreProvider';
|
|
34583
34663
|
this.isDefault = true;
|
|
34584
34664
|
this.priority = 10;
|
|
34585
34665
|
}
|
|
@@ -36282,9 +36362,7 @@ const defaultGrantSelectionPolicy = new GrantSelectionPolicy();
|
|
|
36282
36362
|
const logger$a = getLogger('naylence.fame.connector.broadcast_channel_listener');
|
|
36283
36363
|
const DEFAULT_CHANNEL$1 = 'naylence-fabric';
|
|
36284
36364
|
const DEFAULT_INBOX_CAPACITY$1 = 2048;
|
|
36285
|
-
const RESPONSE_TYPE_MASK = FameResponseType.ACK |
|
|
36286
|
-
FameResponseType.REPLY |
|
|
36287
|
-
FameResponseType.STREAM;
|
|
36365
|
+
const RESPONSE_TYPE_MASK = FameResponseType.ACK | FameResponseType.REPLY | FameResponseType.STREAM;
|
|
36288
36366
|
const isBrowserEnvironment$2 = () => typeof window !== 'undefined' &&
|
|
36289
36367
|
typeof BroadcastChannel !== 'undefined' &&
|
|
36290
36368
|
typeof MessageEvent !== 'undefined';
|
|
@@ -36498,9 +36576,7 @@ class BroadcastChannelListener extends TransportListener {
|
|
|
36498
36576
|
return null;
|
|
36499
36577
|
}
|
|
36500
36578
|
})();
|
|
36501
|
-
if (error instanceof ZodError &&
|
|
36502
|
-
decoded &&
|
|
36503
|
-
decoded.length > 0) {
|
|
36579
|
+
if (error instanceof ZodError && decoded && decoded.length > 0) {
|
|
36504
36580
|
try {
|
|
36505
36581
|
const reparsed = JSON.parse(decoded);
|
|
36506
36582
|
const candidate = reparsed.rtype;
|
|
@@ -36723,11 +36799,19 @@ class BroadcastChannelListener extends TransportListener {
|
|
|
36723
36799
|
? Math.floor(initialWindowCandidate)
|
|
36724
36800
|
: undefined;
|
|
36725
36801
|
const initialTargetNodeId = this._normalizeNodeId(targetCandidate) ?? targetSystemId;
|
|
36802
|
+
const passive = typeof passiveCandidate === 'boolean' ? passiveCandidate : true;
|
|
36803
|
+
logger$a.debug('broadcast_channel_listener_building_connector_config', {
|
|
36804
|
+
system_id: systemId,
|
|
36805
|
+
channel_name: channelName,
|
|
36806
|
+
passive,
|
|
36807
|
+
has_base_config: !!baseConfig,
|
|
36808
|
+
passive_candidate: passiveCandidate,
|
|
36809
|
+
});
|
|
36726
36810
|
return {
|
|
36727
36811
|
type: BROADCAST_CHANNEL_CONNECTOR_TYPE,
|
|
36728
36812
|
channelName,
|
|
36729
36813
|
inboxCapacity,
|
|
36730
|
-
passive
|
|
36814
|
+
passive,
|
|
36731
36815
|
initialWindow,
|
|
36732
36816
|
localNodeId,
|
|
36733
36817
|
initialTargetNodeId,
|
|
@@ -37478,7 +37562,9 @@ class InPageListener extends TransportListener {
|
|
|
37478
37562
|
typeof channelCandidate === 'string' && channelCandidate.trim().length > 0
|
|
37479
37563
|
? channelCandidate.trim()
|
|
37480
37564
|
: DEFAULT_CHANNEL;
|
|
37481
|
-
const normalizedCapacity = typeof inboxCandidate === 'number' &&
|
|
37565
|
+
const normalizedCapacity = typeof inboxCandidate === 'number' &&
|
|
37566
|
+
Number.isFinite(inboxCandidate) &&
|
|
37567
|
+
inboxCandidate > 0
|
|
37482
37568
|
? Math.floor(inboxCandidate)
|
|
37483
37569
|
: DEFAULT_INBOX_CAPACITY;
|
|
37484
37570
|
this._inboxCapacity = normalizedCapacity;
|
|
@@ -37753,7 +37839,8 @@ class InPageListener extends TransportListener {
|
|
|
37753
37839
|
if (grant.type === INPAGE_CONNECTION_GRANT_TYPE) {
|
|
37754
37840
|
return inPageGrantToConnectorConfig(grant);
|
|
37755
37841
|
}
|
|
37756
|
-
if (typeof grant
|
|
37842
|
+
if (typeof grant
|
|
37843
|
+
?.toConnectorConfig === 'function') {
|
|
37757
37844
|
return grant.toConnectorConfig();
|
|
37758
37845
|
}
|
|
37759
37846
|
throw new Error(`Unsupported grant type: ${grant.type}`);
|
|
@@ -39291,8 +39378,7 @@ function normalizeOptions$2(raw) {
|
|
|
39291
39378
|
const scopes = normalizeScopes(camel.scopes) ??
|
|
39292
39379
|
normalizeScopes(snake.scopes ?? snake.scope) ??
|
|
39293
39380
|
DEFAULT_SCOPES.slice();
|
|
39294
|
-
const audience = coerceString(camel.audience) ??
|
|
39295
|
-
coerceString(snake.audience ?? snake.aud);
|
|
39381
|
+
const audience = coerceString(camel.audience) ?? coerceString(snake.audience ?? snake.aud);
|
|
39296
39382
|
const fetchImpl = (camel.fetchImpl ?? snake.fetch_impl);
|
|
39297
39383
|
const clockSkewSeconds = coerceNumber(camel.clockSkewSeconds) ??
|
|
39298
39384
|
coerceNumber(snake.clock_skew_seconds) ??
|
|
@@ -40784,4 +40870,4 @@ var websocketTransportProvisioner = /*#__PURE__*/Object.freeze({
|
|
|
40784
40870
|
WebSocketTransportProvisionerFactory: WebSocketTransportProvisionerFactory
|
|
40785
40871
|
});
|
|
40786
40872
|
|
|
40787
|
-
export { ADMISSION_CLIENT_FACTORY_BASE_TYPE, ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, AUTHORIZER_FACTORY_BASE_TYPE, AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, AnsiColor, AsyncLock, AttachmentKeyValidator, AuthInjectionStrategyFactory, AuthorizerFactory, BROADCAST_CHANNEL_CONNECTION_GRANT_TYPE, BackPressureFull, BaseAsyncConnector, BaseNodeEventListener, BindingManager, BindingStoreEntryRecord, BrowserAutoKeyCredentialProvider, BrowserWrappedKeyCredentialProvider, CERTIFICATE_MANAGER_FACTORY_BASE_TYPE, CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE, CRYPTO_LEVEL_SECURITY_ORDER, CertificateManagerFactory, ConnectorConfigDefaults, ConnectorFactory, ConsoleMetricsEmitter, CryptoLevel, FACTORY_META$$ as DEFAULT_WELCOME_FACTORY_META, DefaultCryptoProvider, DefaultKeyManager, DefaultSecurityManager, DefaultSecurityPolicy, DefaultWelcomeService, DefaultWelcomeServiceFactory, DevFixedKeyCredentialProvider, ENCRYPTION_MANAGER_FACTORY_BASE_TYPE, ENVELOPE_SIGNER_FACTORY_BASE_TYPE, ENVELOPE_VERIFIER_FACTORY_BASE_TYPE, ENV_VAR_DEFAULT_ENCRYPTION_LEVEL, ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$1 as ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_SHOW_ENVELOPES$1 as ENV_VAR_SHOW_ENVELOPES, EdDSAEnvelopeSigner, EncryptedKeyValueStore, EncryptedStorageProviderBase, EncryptedValue, EncryptionConfiguration, EncryptionManagerFactory, EncryptionResult, EncryptionStatus, EnvCredentialProvider, EnvelopeContext, EnvelopeListenerManager, EnvelopeSecurityHandler, EnvelopeSignerFactory, EnvelopeVerifierFactory, FACTORY_META$10 as FACTORY_META, FIXED_PREFIX_LEN, FameAuthorizedDeliveryContextSchema, FameConnectError, FameEnvironmentContext, FameError, FameMessageTooLarge, FameNode, FameNodeAuthorizationContextSchema, FameProtocolError, FameTransportClose, FlowController, GRANT_PURPOSE_NODE_ATTACH, HTTP_CONNECTION_GRANT_TYPE, HTTP_STATELESS_CONNECTOR_TYPE, INPAGE_CONNECTION_GRANT_TYPE, INPAGE_CONNECTOR_TYPE, InMemoryBinding, InMemoryFanoutBroker, InMemoryKeyValueStore, InMemoryReadWriteChannel, InMemoryStorageProvider, InPageConnector, IndexedDBKeyValueStore, IndexedDBStorageProvider, InvalidPassphraseError, JWKValidationError, KEY_MANAGER_FACTORY_BASE_TYPE, KEY_STORE_FACTORY_BASE_TYPE, KeyInfo, KeyManagementHandler, KeyManagerFactory, KeyStore, KeyStoreFactory, KeyValidationError, LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, LoadBalancerStickinessManagerFactory, LogLevel, LogLevelNames, MemoryMetricsEmitter, NODE_LIKE_FACTORY_BASE_TYPE, NODE_PLACEMENT_STRATEGY_FACTORY_BASE_TYPE, NoOpMetricsEmitter, NoSecurityPolicy, NodeFactory, NodePlacementStrategyFactory, NoneCredentialProvider, NoopEncryptionManager, NoopKeyValidator, NoopTrustStoreProvider, NotAuthorized, PROFILE_NAME_GATED, PROFILE_NAME_GATED_CALLBACK, PROFILE_NAME_OPEN$1 as PROFILE_NAME_OPEN, PROFILE_NAME_OVERLAY, PROFILE_NAME_OVERLAY_CALLBACK, PROFILE_NAME_STRICT_OVERLAY, PromptCredentialProvider, REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, REQUIRED_FIELDS_BY_KTY, ReplicaStickinessManagerFactory, RootSessionManager, RouteManager, RpcMixin, RpcProxy, SEALED_ENVELOPE_NONCE_LENGTH, SEALED_ENVELOPE_OVERHEAD, SEALED_ENVELOPE_PRIVATE_KEY_LENGTH, SEALED_ENVELOPE_PUBLIC_KEY_LENGTH, SEALED_ENVELOPE_TAG_LENGTH, SECURE_CHANNEL_MANAGER_FACTORY_BASE_TYPE, SECURITY_MANAGER_FACTORY_BASE_TYPE, SECURITY_POLICY_FACTORY_BASE_TYPE, STORAGE_PROVIDER_FACTORY_BASE_TYPE, SecretSource, SecretStoreCredentialProvider, SecureChannelFrameHandler, SecureChannelManagerFactory, SecurityAction, SecurityRequirements, Sentinel, SentinelFactory, SessionKeyCredentialProvider, SignaturePolicy, SigningConfig as SigningConfigClass, SigningConfiguration, SimpleLoadBalancerStickinessManager, SimpleLoadBalancerStickinessManagerFactory, StaticCredentialProvider, StorageAESEncryptionManager, TOKEN_ISSUER_FACTORY_BASE_TYPE, TOKEN_PROVIDER_FACTORY_BASE_TYPE, TOKEN_VERIFIER_FACTORY_BASE_TYPE, TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE, TaskSpawner, TokenIssuerFactory, TokenProviderFactory, TokenVerifierFactory, TransportProvisionerFactory, TrustStoreProviderFactory, TtlValidationError, UpstreamSessionManager, VALID_CURVES_BY_KTY, VALID_KEY_USES, VERSION, WEBSOCKET_CONNECTION_GRANT_TYPE, WELCOME_SERVICE_FACTORY_BASE_TYPE, WebSocketCloseCode, WebSocketConnector, WebSocketState, WelcomeServiceFactory, _NoopFlowController, __runtimePluginLoader, addEnvelopeFields, addLogLevel, addTimestamp, assertConnectionGrant, assertGrant, basicConfig, broadcastChannelGrantToConnectorConfig, camelToSnakeCase, canonicalJson, capitalizeFirstLetter, color, compareCryptoLevels, compiledPathPattern, consoleTransport, convertWildcardLogicalToDnsConstraint, createConnectorConfig, createEd25519Keypair, createHostLogicalUri, createLogicalUri, createNodeDeliveryContext, createResource, createRpcProxy, createRsaKeypair, createTransportCloseError, createX25519Keypair, credentialToString, currentTraceId$1 as currentTraceId, debounce, decodeBase64Url, decodeFameDataPayload, deepMerge, defaultJsonEncoder, delay, dropEmpty, enableLogging, encodeUtf8, ensureRuntimeFactoriesRegistered, extractId, extractPoolAddressBase, extractPoolBase, filterKeysByUse, formatTimestamp, formatTimestampForConsole$1 as formatTimestampForConsole, frameDigest, getCurrentEnvelope, getFameRoot, getKeyProvider, getKeyStore, getLogger, hasCryptoSupport, hostnameToLogical, hostnamesToLogicals, httpGrantToConnectorConfig, immutableHeaders, inPageGrantToConnectorConfig, isAuthInjectionStrategy, isBroadcastChannelConnectionGrant, isConnectionGrant, isConnectorConfig, isEnvelopeLoggingEnabled, isFameError, isFameErrorType, isGrant, isHttpConnectionGrant, isInPageConnectionGrant, isNodeLike, isPlainObject$3 as isPlainObject, isPoolAddress, isPoolLogical, isRegisterable, isTokenExpired, isTokenProvider, isTokenValid, isWebSocketConnectionGrant, jsonDumps, logicalPatternsToDnsConstraints, logicalToHostname, logicalsToHostnames, matchesPoolAddress, matchesPoolLogical, maybeAwait, nodeWelcomeRouter, nodeWelcomeRouterPlugin, normalizeBroadcastChannelConnectionGrant, normalizeEncryptionConfig, normalizeEnvelopeSnapshot, normalizeHttpConnectionGrant, normalizeInPageConnectionGrant, normalizeInboundCryptoRules, normalizeInboundSigningRules, normalizeOutboundCryptoRules, normalizeOutboundSigningRules, normalizePath, normalizeResponseCryptoRules, normalizeResponseSigningRules, normalizeSecretSource, normalizeSecurityRequirements, normalizeSigningConfig, normalizeWebSocketConnectionGrant, objectToBytes, operation, parseSealedEnvelope, pinoTransport, prettyModel$1 as prettyModel, registerDefaultFactories, registerDefaultKeyStoreFactory, registerNodePlacementStrategyFactory, registerRuntimeFactories, requireCryptoSupport, retryWithBackoff, safeColor, sealedDecrypt, sealedEncrypt, secureDigest, setKeyStore, showEnvelopes$1 as showEnvelopes, sleep, snakeToCamelCase, stringifyNonPrimitives, supportsColor, throttle, urlsafeBase64Decode, urlsafeBase64Encode, validateCacheTtlSec, validateEncryptionKey, validateHostLogical, validateHostLogicals, validateJwkComplete, validateJwkStructure, validateJwkUseField, validateJwtTokenTtlSec, validateKeyCorrelationTtlSec, validateLogical, validateLogicalSegment, validateOAuth2TtlSec, validateSigningKey, validateTtlSec, waitForAll, waitForAllSettled, waitForAny, websocketGrantToConnectorConfig, withEnvelopeContext, withEnvelopeContextAsync, withLegacySnakeCaseKeys, withLock, withTimeout };
|
|
40873
|
+
export { ADMISSION_CLIENT_FACTORY_BASE_TYPE, ATTACHMENT_KEY_VALIDATOR_FACTORY_BASE_TYPE, AUTHORIZER_FACTORY_BASE_TYPE, AUTH_INJECTION_STRATEGY_FACTORY_BASE_TYPE, AnsiColor, AsyncLock, AttachmentKeyValidator, AuthInjectionStrategyFactory, AuthorizerFactory, BROADCAST_CHANNEL_CONNECTION_GRANT_TYPE, BackPressureFull, BaseAsyncConnector, BaseNodeEventListener, BindingManager, BindingStoreEntryRecord, BrowserAutoKeyCredentialProvider, BrowserWrappedKeyCredentialProvider, CERTIFICATE_MANAGER_FACTORY_BASE_TYPE, CREDENTIAL_PROVIDER_FACTORY_BASE_TYPE, CRYPTO_LEVEL_SECURITY_ORDER, CertificateManagerFactory, ConnectorConfigDefaults, ConnectorFactory, ConsoleMetricsEmitter, CryptoLevel, FACTORY_META$$ as DEFAULT_WELCOME_FACTORY_META, DefaultCryptoProvider, DefaultKeyManager, DefaultSecurityManager, DefaultSecurityPolicy, DefaultWelcomeService, DefaultWelcomeServiceFactory, DevFixedKeyCredentialProvider, ENCRYPTION_MANAGER_FACTORY_BASE_TYPE, ENVELOPE_SIGNER_FACTORY_BASE_TYPE, ENVELOPE_VERIFIER_FACTORY_BASE_TYPE, ENV_VAR_DEFAULT_ENCRYPTION_LEVEL, ENV_VAR_HMAC_SECRET, ENV_VAR_JWKS_URL, ENV_VAR_JWT_ALGORITHM, ENV_VAR_JWT_AUDIENCE$1 as ENV_VAR_JWT_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_AUDIENCE, ENV_VAR_JWT_REVERSE_AUTH_TRUSTED_ISSUER, ENV_VAR_JWT_TRUSTED_ISSUER, ENV_VAR_SHOW_ENVELOPES$1 as ENV_VAR_SHOW_ENVELOPES, EdDSAEnvelopeSigner, EncryptedKeyValueStore, EncryptedStorageProviderBase, EncryptedValue, EncryptionConfiguration, EncryptionManagerFactory, EncryptionResult, EncryptionStatus, EnvCredentialProvider, EnvelopeContext, EnvelopeListenerManager, EnvelopeSecurityHandler, EnvelopeSignerFactory, EnvelopeVerifierFactory, FACTORY_META$10 as FACTORY_META, FIXED_PREFIX_LEN, FameAuthorizedDeliveryContextSchema, FameConnectError, FameEnvironmentContext, FameError, FameMessageTooLarge, FameNode, FameNodeAuthorizationContextSchema, FameProtocolError, FameTransportClose, FlowController, GRANT_PURPOSE_NODE_ATTACH, HTTP_CONNECTION_GRANT_TYPE, HTTP_STATELESS_CONNECTOR_TYPE, INPAGE_CONNECTION_GRANT_TYPE, INPAGE_CONNECTOR_TYPE, InMemoryBinding, InMemoryFanoutBroker, InMemoryKeyValueStore, InMemoryReadWriteChannel, InMemoryStorageProvider, InPageConnector, IndexedDBKeyValueStore, IndexedDBStorageProvider, InvalidPassphraseError, JWKValidationError, KEY_MANAGER_FACTORY_BASE_TYPE, KEY_STORE_FACTORY_BASE_TYPE, KeyInfo, KeyManagementHandler, KeyManagerFactory, KeyStore, KeyStoreFactory, KeyValidationError, LOAD_BALANCER_STICKINESS_MANAGER_FACTORY_BASE_TYPE, LoadBalancerStickinessManagerFactory, LogLevel, LogLevelNames, MemoryMetricsEmitter, NODE_LIKE_FACTORY_BASE_TYPE, NODE_PLACEMENT_STRATEGY_FACTORY_BASE_TYPE, NoOpMetricsEmitter, NoSecurityPolicy, NodeFactory, NodePlacementStrategyFactory, NoneCredentialProvider, NoopEncryptionManager, NoopKeyValidator, NoopTrustStoreProvider, NotAuthorized, PROFILE_NAME_GATED, PROFILE_NAME_GATED_CALLBACK, PROFILE_NAME_OPEN$1 as PROFILE_NAME_OPEN, PROFILE_NAME_OVERLAY, PROFILE_NAME_OVERLAY_CALLBACK, PROFILE_NAME_STRICT_OVERLAY, PromptCredentialProvider, REPLICA_STICKINESS_MANAGER_FACTORY_BASE_TYPE, REQUIRED_FIELDS_BY_KTY, ReplicaStickinessManagerFactory, RootSessionManager, RouteManager, RpcMixin, RpcProxy, SEALED_ENVELOPE_NONCE_LENGTH, SEALED_ENVELOPE_OVERHEAD, SEALED_ENVELOPE_PRIVATE_KEY_LENGTH, SEALED_ENVELOPE_PUBLIC_KEY_LENGTH, SEALED_ENVELOPE_TAG_LENGTH, SECURE_CHANNEL_MANAGER_FACTORY_BASE_TYPE, SECURITY_MANAGER_FACTORY_BASE_TYPE, SECURITY_POLICY_FACTORY_BASE_TYPE, STORAGE_PROVIDER_FACTORY_BASE_TYPE, SecretSource, SecretStoreCredentialProvider, SecureChannelFrameHandler, SecureChannelManagerFactory, SecurityAction, SecurityRequirements, Sentinel, SentinelFactory, SessionKeyCredentialProvider, SignaturePolicy, SigningConfig as SigningConfigClass, SigningConfiguration, SimpleLoadBalancerStickinessManager, SimpleLoadBalancerStickinessManagerFactory, StaticCredentialProvider, StorageAESEncryptionManager, TOKEN_ISSUER_FACTORY_BASE_TYPE, TOKEN_PROVIDER_FACTORY_BASE_TYPE, TOKEN_VERIFIER_FACTORY_BASE_TYPE, TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TRUST_STORE_PROVIDER_FACTORY_BASE_TYPE, TaskSpawner, TokenIssuerFactory, TokenProviderFactory, TokenVerifierFactory, TransportProvisionerFactory, TrustStoreProviderFactory, TtlValidationError, UpstreamSessionManager, VALID_CURVES_BY_KTY, VALID_KEY_USES, VERSION, WEBSOCKET_CONNECTION_GRANT_TYPE, WELCOME_SERVICE_FACTORY_BASE_TYPE, WebSocketCloseCode, WebSocketConnector, WebSocketState, WelcomeServiceFactory, _NoopFlowController, __runtimePluginLoader, addEnvelopeFields, addLogLevel, addTimestamp, assertConnectionGrant, assertGrant, basicConfig, broadcastChannelGrantToConnectorConfig, camelToSnakeCase, canonicalJson, capitalizeFirstLetter, color, compareCryptoLevels, compiledPathPattern, consoleTransport, convertWildcardLogicalToDnsConstraint, createConnectorConfig, createEd25519Keypair, createHostLogicalUri, createLogicalUri, createNodeDeliveryContext, createResource, createRpcProxy, createRsaKeypair, createTransportCloseError, createX25519Keypair, credentialToString, currentTraceId$1 as currentTraceId, debounce, decodeBase64Url, decodeFameDataPayload, deepMerge, defaultJsonEncoder, delay, dropEmpty, enableLogging, encodeUtf8, ensureRuntimeFactoriesRegistered, extractId, extractPoolAddressBase, extractPoolBase, filterKeysByUse, formatTimestamp, formatTimestampForConsole$1 as formatTimestampForConsole, frameDigest, getCurrentEnvelope, getFabricForNode, getFameRoot, getKeyProvider, getKeyStore, getLogger, hasCryptoSupport, hostnameToLogical, hostnamesToLogicals, httpGrantToConnectorConfig, immutableHeaders, inPageGrantToConnectorConfig, isAuthInjectionStrategy, isBroadcastChannelConnectionGrant, isConnectionGrant, isConnectorConfig, isEnvelopeLoggingEnabled, isFameError, isFameErrorType, isGrant, isHttpConnectionGrant, isInPageConnectionGrant, isNodeLike, isPlainObject$3 as isPlainObject, isPoolAddress, isPoolLogical, isRegisterable, isTokenExpired, isTokenProvider, isTokenValid, isWebSocketConnectionGrant, jsonDumps, logicalPatternsToDnsConstraints, logicalToHostname, logicalsToHostnames, matchesPoolAddress, matchesPoolLogical, maybeAwait, nodeWelcomeRouter, nodeWelcomeRouterPlugin, normalizeBroadcastChannelConnectionGrant, normalizeEncryptionConfig, normalizeEnvelopeSnapshot, normalizeHttpConnectionGrant, normalizeInPageConnectionGrant, normalizeInboundCryptoRules, normalizeInboundSigningRules, normalizeOutboundCryptoRules, normalizeOutboundSigningRules, normalizePath, normalizeResponseCryptoRules, normalizeResponseSigningRules, normalizeSecretSource, normalizeSecurityRequirements, normalizeSigningConfig, normalizeWebSocketConnectionGrant, objectToBytes, operation, parseSealedEnvelope, pinoTransport, prettyModel$1 as prettyModel, registerDefaultFactories, registerDefaultKeyStoreFactory, registerNodePlacementStrategyFactory, registerRuntimeFactories, requireCryptoSupport, retryWithBackoff, safeColor, safeImport, sealedDecrypt, sealedEncrypt, secureDigest, setKeyStore, showEnvelopes$1 as showEnvelopes, sleep, snakeToCamelCase, stringifyNonPrimitives, supportsColor, throttle, urlsafeBase64Decode, urlsafeBase64Encode, validateCacheTtlSec, validateEncryptionKey, validateHostLogical, validateHostLogicals, validateJwkComplete, validateJwkStructure, validateJwkUseField, validateJwtTokenTtlSec, validateKeyCorrelationTtlSec, validateLogical, validateLogicalSegment, validateOAuth2TtlSec, validateSigningKey, validateTtlSec, waitForAll, waitForAllSettled, waitForAny, websocketGrantToConnectorConfig, withEnvelopeContext, withEnvelopeContextAsync, withLegacySnakeCaseKeys, withLock, withTimeout };
|