@naylence/runtime 0.3.5-test.929 → 0.3.5-test.930
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 +317 -302
- package/dist/browser/index.mjs +317 -302
- package/dist/cjs/naylence/fame/factory-manifest.js +4 -4
- package/dist/cjs/naylence/fame/telemetry/open-telemetry-trace-emitter-factory.js +11 -2
- package/dist/cjs/version.js +2 -2
- package/dist/esm/naylence/fame/factory-manifest.js +4 -4
- package/dist/esm/naylence/fame/telemetry/open-telemetry-trace-emitter-factory.js +10 -1
- package/dist/esm/version.js +2 -2
- package/dist/node/index.cjs +317 -302
- package/dist/node/index.mjs +317 -302
- package/dist/node/node.cjs +305 -290
- package/dist/node/node.mjs +305 -290
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/browser/index.mjs
CHANGED
|
@@ -96,12 +96,12 @@ installProcessEnvShim();
|
|
|
96
96
|
// --- END ENV SHIM ---
|
|
97
97
|
|
|
98
98
|
// This file is auto-generated during build - do not edit manually
|
|
99
|
-
// Generated from package.json version: 0.3.5-test.
|
|
99
|
+
// Generated from package.json version: 0.3.5-test.930
|
|
100
100
|
/**
|
|
101
101
|
* The package version, injected at build time.
|
|
102
102
|
* @internal
|
|
103
103
|
*/
|
|
104
|
-
const VERSION = '0.3.5-test.
|
|
104
|
+
const VERSION = '0.3.5-test.930';
|
|
105
105
|
|
|
106
106
|
/**
|
|
107
107
|
* Fame protocol specific error classes with WebSocket close codes and proper inheritance.
|
|
@@ -30093,239 +30093,10 @@ var noopTraceEmitterFactory = /*#__PURE__*/Object.freeze({
|
|
|
30093
30093
|
default: NoopTraceEmitterFactory
|
|
30094
30094
|
});
|
|
30095
30095
|
|
|
30096
|
-
const logger$n = getLogger('naylence.fame.telemetry.otel_setup');
|
|
30097
|
-
const stringFrom = (...codes) => String.fromCharCode(...codes);
|
|
30098
|
-
const OTEL_PREFIX = `${stringFrom(64, 111, 112, 101, 110, 116, 101, 108, 101, 109, 101, 116, 114, 121)}${stringFrom(47)}`;
|
|
30099
|
-
const OTEL_API_SPEC = `${OTEL_PREFIX}${stringFrom(97, 112, 105)}`;
|
|
30100
|
-
const OTEL_RESOURCES_SPEC = `${OTEL_PREFIX}${stringFrom(114, 101, 115, 111, 117, 114, 99, 101, 115)}`;
|
|
30101
|
-
const OTEL_TRACE_NODE_SPEC = `${OTEL_PREFIX}${stringFrom(115, 100, 107, 45, 116, 114, 97, 99, 101, 45, 110, 111, 100, 101)}`;
|
|
30102
|
-
const OTEL_TRACE_BASE_SPEC = `${OTEL_PREFIX}${stringFrom(115, 100, 107, 45, 116, 114, 97, 99, 101, 45, 98, 97, 115, 101)}`;
|
|
30103
|
-
const OTEL_EXPORTER_HTTP_SPEC = `${OTEL_PREFIX}${stringFrom(101, 120, 112, 111, 114, 116, 101, 114, 45, 116, 114, 97, 99, 101, 45, 111, 116, 108, 112, 45, 104, 116, 116, 112)}`;
|
|
30104
|
-
let registeredOtel = null;
|
|
30105
|
-
async function setupOtel(options) {
|
|
30106
|
-
const normalized = normalizeSetupOtelOptions(options);
|
|
30107
|
-
try {
|
|
30108
|
-
if (registeredOtel) {
|
|
30109
|
-
logger$n.debug('open_telemetry_reusing_provider', {
|
|
30110
|
-
service_name: normalized.serviceName,
|
|
30111
|
-
});
|
|
30112
|
-
return registeredOtel.control;
|
|
30113
|
-
}
|
|
30114
|
-
const [apiModule, resourcesModule, nodeModule, traceBaseModule] = await Promise.all([
|
|
30115
|
-
import(OTEL_API_SPEC),
|
|
30116
|
-
import(OTEL_RESOURCES_SPEC),
|
|
30117
|
-
import(OTEL_TRACE_NODE_SPEC),
|
|
30118
|
-
import(OTEL_TRACE_BASE_SPEC),
|
|
30119
|
-
]);
|
|
30120
|
-
const { trace } = apiModule;
|
|
30121
|
-
const { defaultResource, resourceFromAttributes } = resourcesModule;
|
|
30122
|
-
const { NodeTracerProvider } = nodeModule;
|
|
30123
|
-
const { BatchSpanProcessor, ConsoleSpanExporter, ParentBasedSampler, AlwaysOnSampler, AlwaysOffSampler, TraceIdRatioBasedSampler, } = traceBaseModule;
|
|
30124
|
-
const currentProvider = trace.getTracerProvider();
|
|
30125
|
-
if (currentProvider && currentProvider instanceof NodeTracerProvider) {
|
|
30126
|
-
return null;
|
|
30127
|
-
}
|
|
30128
|
-
if (currentProvider &&
|
|
30129
|
-
currentProvider.constructor?.name === 'NodeTracerProvider') {
|
|
30130
|
-
logger$n.debug('open_telemetry_existing_node_provider', {
|
|
30131
|
-
service_name: normalized.serviceName,
|
|
30132
|
-
});
|
|
30133
|
-
return null;
|
|
30134
|
-
}
|
|
30135
|
-
logger$n.debug('open_telemetry_initializing', {
|
|
30136
|
-
service_name: normalized.serviceName,
|
|
30137
|
-
endpoint: normalized.endpoint ?? null,
|
|
30138
|
-
environment: normalized.environment ?? null,
|
|
30139
|
-
sampler: normalized.sampler ?? null,
|
|
30140
|
-
headers_present: Boolean(normalized.headers && Object.keys(normalized.headers).length),
|
|
30141
|
-
});
|
|
30142
|
-
const sampler = resolveSampler(normalized.sampler, {
|
|
30143
|
-
ParentBasedSampler,
|
|
30144
|
-
AlwaysOnSampler,
|
|
30145
|
-
AlwaysOffSampler,
|
|
30146
|
-
TraceIdRatioBasedSampler,
|
|
30147
|
-
});
|
|
30148
|
-
const baseResource = defaultResource();
|
|
30149
|
-
const mergedResource = resourceFromAttributes({
|
|
30150
|
-
'service.name': normalized.serviceName,
|
|
30151
|
-
'service.instance.id': generateInstanceId(),
|
|
30152
|
-
'deployment.environment': normalized.environment ?? 'dev',
|
|
30153
|
-
});
|
|
30154
|
-
const resource = baseResource.merge(mergedResource);
|
|
30155
|
-
const exporter = await resolveExporter(normalized.endpoint ?? undefined, normalized.headers, ConsoleSpanExporter);
|
|
30156
|
-
const spanProcessor = new BatchSpanProcessor(exporter);
|
|
30157
|
-
const provider = new NodeTracerProvider({
|
|
30158
|
-
resource,
|
|
30159
|
-
sampler,
|
|
30160
|
-
spanProcessors: [spanProcessor],
|
|
30161
|
-
});
|
|
30162
|
-
provider.register();
|
|
30163
|
-
logger$n.debug('open_telemetry_initialized', {
|
|
30164
|
-
service_name: normalized.serviceName,
|
|
30165
|
-
exporter: exporter.constructor?.name ?? 'unknown_exporter',
|
|
30166
|
-
});
|
|
30167
|
-
const control = {
|
|
30168
|
-
forceFlush: async () => {
|
|
30169
|
-
try {
|
|
30170
|
-
await provider.forceFlush();
|
|
30171
|
-
}
|
|
30172
|
-
catch (flushError) {
|
|
30173
|
-
logger$n.warning('open_telemetry_force_flush_failed', {
|
|
30174
|
-
error: flushError instanceof Error
|
|
30175
|
-
? flushError.message
|
|
30176
|
-
: String(flushError),
|
|
30177
|
-
});
|
|
30178
|
-
}
|
|
30179
|
-
},
|
|
30180
|
-
shutdown: async () => {
|
|
30181
|
-
try {
|
|
30182
|
-
await provider.shutdown();
|
|
30183
|
-
}
|
|
30184
|
-
catch (shutdownError) {
|
|
30185
|
-
logger$n.warning('open_telemetry_shutdown_failed', {
|
|
30186
|
-
error: shutdownError instanceof Error
|
|
30187
|
-
? shutdownError.message
|
|
30188
|
-
: String(shutdownError),
|
|
30189
|
-
});
|
|
30190
|
-
}
|
|
30191
|
-
finally {
|
|
30192
|
-
registeredOtel = null;
|
|
30193
|
-
}
|
|
30194
|
-
},
|
|
30195
|
-
};
|
|
30196
|
-
registeredOtel = {
|
|
30197
|
-
provider,
|
|
30198
|
-
control,
|
|
30199
|
-
};
|
|
30200
|
-
return control;
|
|
30201
|
-
}
|
|
30202
|
-
catch (error) {
|
|
30203
|
-
logger$n.error('open_telemetry_not_available', {
|
|
30204
|
-
error: error instanceof Error ? error.message : String(error),
|
|
30205
|
-
stack: error instanceof Error && error.stack ? error.stack : undefined,
|
|
30206
|
-
});
|
|
30207
|
-
return null;
|
|
30208
|
-
}
|
|
30209
|
-
}
|
|
30210
|
-
function normalizeSetupOtelOptions(options) {
|
|
30211
|
-
const source = (options ?? {});
|
|
30212
|
-
const serviceName = extractNonEmptyString$1(pickFirst$2(source, ['serviceName', 'service_name'])) ??
|
|
30213
|
-
'naylence-service';
|
|
30214
|
-
const endpoint = extractNonEmptyString$1(pickFirst$2(source, ['endpoint', 'otlpEndpoint', 'otlp_endpoint'])) ?? null;
|
|
30215
|
-
const environment = extractNonEmptyString$1(pickFirst$2(source, [
|
|
30216
|
-
'environment',
|
|
30217
|
-
'deploymentEnvironment',
|
|
30218
|
-
'deployment_environment',
|
|
30219
|
-
])) ?? null;
|
|
30220
|
-
const sampler = extractNonEmptyString$1(pickFirst$2(source, ['sampler', 'samplingStrategy', 'sampling_strategy'])) ?? null;
|
|
30221
|
-
const headers = extractHeaders$1(pickFirst$2(source, ['headers', 'otlpHeaders', 'otlp_headers']));
|
|
30222
|
-
return {
|
|
30223
|
-
serviceName,
|
|
30224
|
-
endpoint,
|
|
30225
|
-
environment,
|
|
30226
|
-
sampler,
|
|
30227
|
-
headers: headers ?? undefined,
|
|
30228
|
-
};
|
|
30229
|
-
}
|
|
30230
|
-
function pickFirst$2(source, keys) {
|
|
30231
|
-
for (const key of keys) {
|
|
30232
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
30233
|
-
const value = source[key];
|
|
30234
|
-
if (value !== undefined) {
|
|
30235
|
-
return value;
|
|
30236
|
-
}
|
|
30237
|
-
}
|
|
30238
|
-
}
|
|
30239
|
-
return undefined;
|
|
30240
|
-
}
|
|
30241
|
-
function extractNonEmptyString$1(value) {
|
|
30242
|
-
if (typeof value === 'string') {
|
|
30243
|
-
const trimmed = value.trim();
|
|
30244
|
-
if (trimmed.length > 0) {
|
|
30245
|
-
return trimmed;
|
|
30246
|
-
}
|
|
30247
|
-
}
|
|
30248
|
-
return undefined;
|
|
30249
|
-
}
|
|
30250
|
-
function extractHeaders$1(value) {
|
|
30251
|
-
if (!value || typeof value !== 'object') {
|
|
30252
|
-
return null;
|
|
30253
|
-
}
|
|
30254
|
-
const headers = {};
|
|
30255
|
-
for (const [key, raw] of Object.entries(value)) {
|
|
30256
|
-
if (typeof raw === 'string') {
|
|
30257
|
-
headers[key] = raw;
|
|
30258
|
-
}
|
|
30259
|
-
}
|
|
30260
|
-
return Object.keys(headers).length > 0 ? headers : null;
|
|
30261
|
-
}
|
|
30262
|
-
function generateInstanceId() {
|
|
30263
|
-
try {
|
|
30264
|
-
if (typeof crypto !== 'undefined' &&
|
|
30265
|
-
typeof crypto.randomUUID === 'function') {
|
|
30266
|
-
return crypto.randomUUID().replace(/-/g, '');
|
|
30267
|
-
}
|
|
30268
|
-
}
|
|
30269
|
-
catch {
|
|
30270
|
-
// Ignore crypto availability errors
|
|
30271
|
-
}
|
|
30272
|
-
const random = Math.random().toString(16).slice(2);
|
|
30273
|
-
return random.padEnd(32, '0').slice(0, 32);
|
|
30274
|
-
}
|
|
30275
|
-
function resolveSampler(samplerSetting, samplers) {
|
|
30276
|
-
const normalized = (samplerSetting ?? 'parentbased_always_on').toLowerCase();
|
|
30277
|
-
let base;
|
|
30278
|
-
if (normalized === 'always_off') {
|
|
30279
|
-
base = new samplers.AlwaysOffSampler();
|
|
30280
|
-
}
|
|
30281
|
-
else if (normalized === 'always_on' ||
|
|
30282
|
-
normalized === 'parentbased_always_on') {
|
|
30283
|
-
base = new samplers.AlwaysOnSampler();
|
|
30284
|
-
}
|
|
30285
|
-
else if (normalized.startsWith('ratio:')) {
|
|
30286
|
-
const ratioValue = Number.parseFloat(normalized.slice('ratio:'.length));
|
|
30287
|
-
const ratio = Number.isFinite(ratioValue)
|
|
30288
|
-
? Math.min(Math.max(ratioValue, 0), 1)
|
|
30289
|
-
: 1;
|
|
30290
|
-
base = new samplers.TraceIdRatioBasedSampler(ratio);
|
|
30291
|
-
}
|
|
30292
|
-
else {
|
|
30293
|
-
base = new samplers.AlwaysOnSampler();
|
|
30294
|
-
}
|
|
30295
|
-
return new samplers.ParentBasedSampler({ root: base });
|
|
30296
|
-
}
|
|
30297
|
-
async function resolveExporter(endpoint, headers, ConsoleSpanExporter) {
|
|
30298
|
-
if (endpoint) {
|
|
30299
|
-
try {
|
|
30300
|
-
const exporterModule = await import(OTEL_EXPORTER_HTTP_SPEC);
|
|
30301
|
-
if ('OTLPTraceExporter' in exporterModule) {
|
|
30302
|
-
const { OTLPTraceExporter } = exporterModule;
|
|
30303
|
-
const exporterOptions = {
|
|
30304
|
-
url: endpoint,
|
|
30305
|
-
};
|
|
30306
|
-
if (headers && Object.keys(headers).length > 0) {
|
|
30307
|
-
exporterOptions.headers = headers;
|
|
30308
|
-
}
|
|
30309
|
-
logger$n.debug('open_telemetry_using_otlp_http_exporter', {
|
|
30310
|
-
endpoint,
|
|
30311
|
-
headers_present: Boolean(headers && Object.keys(headers).length),
|
|
30312
|
-
});
|
|
30313
|
-
return new OTLPTraceExporter(exporterOptions);
|
|
30314
|
-
}
|
|
30315
|
-
}
|
|
30316
|
-
catch (error) {
|
|
30317
|
-
logger$n.error('open_telemetry_exporter_not_available', {
|
|
30318
|
-
error: error instanceof Error ? error.message : String(error),
|
|
30319
|
-
});
|
|
30320
|
-
}
|
|
30321
|
-
}
|
|
30322
|
-
logger$n.warning('open_telemetry_falling_back_to_console_exporter');
|
|
30323
|
-
return new ConsoleSpanExporter();
|
|
30324
|
-
}
|
|
30325
|
-
|
|
30326
30096
|
let openTelemetryTraceEmitterModulePromise = null;
|
|
30327
30097
|
let otelApiModulePromise = null;
|
|
30328
|
-
|
|
30098
|
+
let otelSetupModulePromise = null;
|
|
30099
|
+
const logger$n = getLogger('naylence.fame.telemetry.open_telemetry_trace_emitter_factory');
|
|
30329
30100
|
const MISSING_OTEL_HELP_MESSAGE = 'Missing optional OpenTelemetry dependency. Install @opentelemetry/api (and related packages) to enable trace emission.';
|
|
30330
30101
|
function getOpenTelemetryTraceEmitterModule() {
|
|
30331
30102
|
if (!openTelemetryTraceEmitterModulePromise) {
|
|
@@ -30343,6 +30114,14 @@ function getOtelApiModule() {
|
|
|
30343
30114
|
}
|
|
30344
30115
|
return otelApiModulePromise;
|
|
30345
30116
|
}
|
|
30117
|
+
function getOtelSetupModule() {
|
|
30118
|
+
if (!otelSetupModulePromise) {
|
|
30119
|
+
otelSetupModulePromise = safeImport(() => Promise.resolve().then(function () { return otelSetup; }), '@opentelemetry/api', {
|
|
30120
|
+
helpMessage: MISSING_OTEL_HELP_MESSAGE,
|
|
30121
|
+
});
|
|
30122
|
+
}
|
|
30123
|
+
return otelSetupModulePromise;
|
|
30124
|
+
}
|
|
30346
30125
|
const FACTORY_META$V = {
|
|
30347
30126
|
base: TRACE_EMITTER_FACTORY_BASE_TYPE,
|
|
30348
30127
|
key: 'OpenTelemetryTraceEmitter',
|
|
@@ -30366,7 +30145,7 @@ class OpenTelemetryTraceEmitterFactory extends TraceEmitterFactory {
|
|
|
30366
30145
|
await AuthInjectionStrategyFactory.createAuthInjectionStrategy(normalized.auth);
|
|
30367
30146
|
try {
|
|
30368
30147
|
await authStrategy.apply(mergedHeaders);
|
|
30369
|
-
logger$
|
|
30148
|
+
logger$n.info('trace_emitter_auth_applied', {
|
|
30370
30149
|
service_name: normalized.serviceName,
|
|
30371
30150
|
});
|
|
30372
30151
|
}
|
|
@@ -30382,6 +30161,7 @@ class OpenTelemetryTraceEmitterFactory extends TraceEmitterFactory {
|
|
|
30382
30161
|
}
|
|
30383
30162
|
let lifecycle = null;
|
|
30384
30163
|
try {
|
|
30164
|
+
const { setupOtel } = await getOtelSetupModule();
|
|
30385
30165
|
lifecycle = await setupOtel({
|
|
30386
30166
|
serviceName: normalized.serviceName,
|
|
30387
30167
|
endpoint: normalized.endpoint,
|
|
@@ -30389,7 +30169,7 @@ class OpenTelemetryTraceEmitterFactory extends TraceEmitterFactory {
|
|
|
30389
30169
|
sampler: normalized.sampler,
|
|
30390
30170
|
headers: Object.keys(mergedHeaders).length > 0 ? mergedHeaders : undefined,
|
|
30391
30171
|
});
|
|
30392
|
-
logger$
|
|
30172
|
+
logger$n.debug('trace_emitter_lifecycle_acquired', {
|
|
30393
30173
|
service_name: normalized.serviceName,
|
|
30394
30174
|
lifecycle_available: Boolean(lifecycle),
|
|
30395
30175
|
});
|
|
@@ -30427,7 +30207,7 @@ class OpenTelemetryTraceEmitterFactory extends TraceEmitterFactory {
|
|
|
30427
30207
|
}
|
|
30428
30208
|
try {
|
|
30429
30209
|
const emitter = new OpenTelemetryTraceEmitter(emitterOptions);
|
|
30430
|
-
logger$
|
|
30210
|
+
logger$n.debug('trace_emitter_created', {
|
|
30431
30211
|
service_name: normalized.serviceName,
|
|
30432
30212
|
has_lifecycle: Boolean(lifecycle),
|
|
30433
30213
|
has_auth_strategy: Boolean(authStrategy),
|
|
@@ -30459,17 +30239,17 @@ function normalizeConfig$p(config) {
|
|
|
30459
30239
|
};
|
|
30460
30240
|
}
|
|
30461
30241
|
const candidate = config;
|
|
30462
|
-
const serviceName = extractString(pickFirst$
|
|
30242
|
+
const serviceName = extractString(pickFirst$2(candidate, ['serviceName', 'service_name'])) ??
|
|
30463
30243
|
'naylence-service';
|
|
30464
|
-
const endpoint = extractString(pickFirst$
|
|
30465
|
-
const environment = extractString(pickFirst$
|
|
30244
|
+
const endpoint = extractString(pickFirst$2(candidate, ['endpoint', 'otlpEndpoint', 'otlp_endpoint'])) ?? null;
|
|
30245
|
+
const environment = extractString(pickFirst$2(candidate, [
|
|
30466
30246
|
'environment',
|
|
30467
30247
|
'deploymentEnvironment',
|
|
30468
30248
|
'deployment_environment',
|
|
30469
30249
|
])) ?? null;
|
|
30470
|
-
const sampler = extractString(pickFirst$
|
|
30471
|
-
const headersFromConfig = extractHeaders(pickFirst$
|
|
30472
|
-
const authConfig = pickFirst$
|
|
30250
|
+
const sampler = extractString(pickFirst$2(candidate, ['sampler', 'samplingStrategy', 'sampling_strategy'])) ?? null;
|
|
30251
|
+
const headersFromConfig = extractHeaders$1(pickFirst$2(candidate, ['headers', 'otlpHeaders', 'otlp_headers']));
|
|
30252
|
+
const authConfig = pickFirst$2(candidate, [
|
|
30473
30253
|
'auth',
|
|
30474
30254
|
]);
|
|
30475
30255
|
return {
|
|
@@ -30487,7 +30267,7 @@ function extractString(value) {
|
|
|
30487
30267
|
}
|
|
30488
30268
|
return undefined;
|
|
30489
30269
|
}
|
|
30490
|
-
function pickFirst$
|
|
30270
|
+
function pickFirst$2(source, keys) {
|
|
30491
30271
|
for (const key of keys) {
|
|
30492
30272
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
30493
30273
|
const value = source[key];
|
|
@@ -30498,7 +30278,7 @@ function pickFirst$1(source, keys) {
|
|
|
30498
30278
|
}
|
|
30499
30279
|
return undefined;
|
|
30500
30280
|
}
|
|
30501
|
-
function extractHeaders(value) {
|
|
30281
|
+
function extractHeaders$1(value) {
|
|
30502
30282
|
if (!value || typeof value !== 'object') {
|
|
30503
30283
|
return null;
|
|
30504
30284
|
}
|
|
@@ -30518,7 +30298,7 @@ var openTelemetryTraceEmitterFactory = /*#__PURE__*/Object.freeze({
|
|
|
30518
30298
|
default: OpenTelemetryTraceEmitterFactory
|
|
30519
30299
|
});
|
|
30520
30300
|
|
|
30521
|
-
const logger$
|
|
30301
|
+
const logger$m = getLogger('naylence.fame.telemetry.trace_emitter_profile_factory');
|
|
30522
30302
|
const PROFILE_NAME_NOOP$1 = 'noop';
|
|
30523
30303
|
const PROFILE_NAME_OPEN_TELEMETRY = 'open-telemetry';
|
|
30524
30304
|
const ENV_VAR_TELEMETRY_SERVICE_NAME = 'FAME_TELEMETRY_SERVICE_NAME';
|
|
@@ -30546,7 +30326,7 @@ class TraceEmitterProfileFactory extends TraceEmitterFactory {
|
|
|
30546
30326
|
async create(config, ...factoryArgs) {
|
|
30547
30327
|
const normalized = normalizeTraceEmitterProfileConfig(config);
|
|
30548
30328
|
const profileConfig = resolveProfileConfig$2(normalized.profile);
|
|
30549
|
-
logger$
|
|
30329
|
+
logger$m.debug('enabling_trace_emitter_profile', {
|
|
30550
30330
|
profile: normalized.profile,
|
|
30551
30331
|
});
|
|
30552
30332
|
const traceEmitter = await TraceEmitterFactory.createTraceEmitter(profileConfig, {
|
|
@@ -30734,7 +30514,7 @@ var httpListenerFactory = /*#__PURE__*/Object.freeze({
|
|
|
30734
30514
|
default: HttpListenerFactory
|
|
30735
30515
|
});
|
|
30736
30516
|
|
|
30737
|
-
const logger$
|
|
30517
|
+
const logger$l = getLogger('naylence.fame.connector.http_stateless_connector');
|
|
30738
30518
|
class HttpStatelessConnector extends BaseAsyncConnector {
|
|
30739
30519
|
constructor(config, dependencies = {}) {
|
|
30740
30520
|
super(config);
|
|
@@ -30780,7 +30560,7 @@ class HttpStatelessConnector extends BaseAsyncConnector {
|
|
|
30780
30560
|
}
|
|
30781
30561
|
catch (error) {
|
|
30782
30562
|
if (error instanceof QueueFullError) {
|
|
30783
|
-
logger$
|
|
30563
|
+
logger$l.warning('receive_queue_full', {
|
|
30784
30564
|
url: this.url,
|
|
30785
30565
|
});
|
|
30786
30566
|
}
|
|
@@ -30802,7 +30582,7 @@ class HttpStatelessConnector extends BaseAsyncConnector {
|
|
|
30802
30582
|
});
|
|
30803
30583
|
if (!response.ok) {
|
|
30804
30584
|
const statusText = response.statusText || 'HTTP error';
|
|
30805
|
-
logger$
|
|
30585
|
+
logger$l.error('http_request_failed', {
|
|
30806
30586
|
url: this.url,
|
|
30807
30587
|
status: response.status,
|
|
30808
30588
|
statusText,
|
|
@@ -30814,7 +30594,7 @@ class HttpStatelessConnector extends BaseAsyncConnector {
|
|
|
30814
30594
|
if (error instanceof FameTransportClose) {
|
|
30815
30595
|
throw error;
|
|
30816
30596
|
}
|
|
30817
|
-
logger$
|
|
30597
|
+
logger$l.error('http_request_error', {
|
|
30818
30598
|
url: this.url,
|
|
30819
30599
|
error: error instanceof Error ? error.message : String(error),
|
|
30820
30600
|
});
|
|
@@ -31028,7 +30808,7 @@ var httpStatelessConnectorFactory = /*#__PURE__*/Object.freeze({
|
|
|
31028
30808
|
default: HttpStatelessConnectorFactory
|
|
31029
30809
|
});
|
|
31030
30810
|
|
|
31031
|
-
const logger$
|
|
30811
|
+
const logger$k = getLogger('naylence.fame.connector.websocket_connector_factory');
|
|
31032
30812
|
let sslLoader = null;
|
|
31033
30813
|
function setWebSocketConnectorSslLoader(loader) {
|
|
31034
30814
|
sslLoader = loader;
|
|
@@ -31312,7 +31092,7 @@ class WebSocketConnectorFactory extends ConnectorFactory {
|
|
|
31312
31092
|
}
|
|
31313
31093
|
async _defaultWebSocketClient(url, subprotocols, headers) {
|
|
31314
31094
|
try {
|
|
31315
|
-
logger$
|
|
31095
|
+
logger$k.debug('websocket_connector_connecting', { url, subprotocols });
|
|
31316
31096
|
if (typeof window !== 'undefined' &&
|
|
31317
31097
|
typeof window.WebSocket !== 'undefined') {
|
|
31318
31098
|
return await this._createBrowserWebSocket(url, subprotocols);
|
|
@@ -31395,7 +31175,7 @@ class WebSocketConnectorFactory extends ConnectorFactory {
|
|
|
31395
31175
|
await Promise.resolve().then(function () { return websocketConnectorNodeSsl; });
|
|
31396
31176
|
}
|
|
31397
31177
|
catch (error) {
|
|
31398
|
-
logger$
|
|
31178
|
+
logger$k.debug('ssl_certificate_loader_import_failed', {
|
|
31399
31179
|
error: error instanceof Error ? error.message : String(error),
|
|
31400
31180
|
});
|
|
31401
31181
|
}
|
|
@@ -31404,7 +31184,7 @@ class WebSocketConnectorFactory extends ConnectorFactory {
|
|
|
31404
31184
|
if (!loader) {
|
|
31405
31185
|
return undefined;
|
|
31406
31186
|
}
|
|
31407
|
-
return await loader(logger$
|
|
31187
|
+
return await loader(logger$k);
|
|
31408
31188
|
}
|
|
31409
31189
|
}
|
|
31410
31190
|
|
|
@@ -31739,7 +31519,7 @@ var atMostOnceDeliveryPolicyFactory = /*#__PURE__*/Object.freeze({
|
|
|
31739
31519
|
default: AtMostOnceDeliveryPolicyFactory
|
|
31740
31520
|
});
|
|
31741
31521
|
|
|
31742
|
-
const logger$
|
|
31522
|
+
const logger$j = getLogger('naylence.fame.delivery.delivery_profile_factory');
|
|
31743
31523
|
const PROFILE_NAME_AT_LEAST_ONCE = 'at-least-once';
|
|
31744
31524
|
const PROFILE_NAME_AT_MOST_ONCE = 'at-most-once';
|
|
31745
31525
|
const ENV_VAR_FAME_DELIVERY_MAX_RETRIES = 'FAME_DELIVERY_MAX_RETRIES';
|
|
@@ -31779,7 +31559,7 @@ class DeliveryProfileFactory extends DeliveryPolicyFactory {
|
|
|
31779
31559
|
async create(config) {
|
|
31780
31560
|
const normalized = normalizeDeliveryProfileConfig(config);
|
|
31781
31561
|
const profileConfig = resolveProfileConfig$1(normalized.profile);
|
|
31782
|
-
logger$
|
|
31562
|
+
logger$j.debug('enabling_delivery_profile', { profile: normalized.profile });
|
|
31783
31563
|
const policy = await DeliveryPolicyFactory.createDeliveryPolicy(profileConfig);
|
|
31784
31564
|
if (!policy) {
|
|
31785
31565
|
throw new Error(`Failed to create delivery policy for profile: ${normalized.profile}`);
|
|
@@ -31862,7 +31642,7 @@ function isSinkService(service) {
|
|
|
31862
31642
|
service.capabilities.includes(SINK_CAPABILITY));
|
|
31863
31643
|
}
|
|
31864
31644
|
|
|
31865
|
-
const logger$
|
|
31645
|
+
const logger$i = getLogger('naylence.fame.fabric.in_process');
|
|
31866
31646
|
function normalizeNodeConfig(config) {
|
|
31867
31647
|
if (config && typeof config === 'object' && !Array.isArray(config)) {
|
|
31868
31648
|
return config;
|
|
@@ -31886,13 +31666,13 @@ class InProcessFameFabric extends FameFabric {
|
|
|
31886
31666
|
this._versionLogged = true;
|
|
31887
31667
|
const version = await resolveRuntimeVersion();
|
|
31888
31668
|
if (version) {
|
|
31889
|
-
logger$
|
|
31669
|
+
logger$i.info('naylence_runtime_startup', {
|
|
31890
31670
|
version,
|
|
31891
31671
|
fabric_type: 'in_process',
|
|
31892
31672
|
});
|
|
31893
31673
|
}
|
|
31894
31674
|
else {
|
|
31895
|
-
logger$
|
|
31675
|
+
logger$i.warning('naylence_runtime_version_not_found', {
|
|
31896
31676
|
message: 'Could not determine package version',
|
|
31897
31677
|
fabric_type: 'in_process',
|
|
31898
31678
|
});
|
|
@@ -31917,7 +31697,7 @@ class InProcessFameFabric extends FameFabric {
|
|
|
31917
31697
|
return;
|
|
31918
31698
|
}
|
|
31919
31699
|
await this.logStartupVersion();
|
|
31920
|
-
logger$
|
|
31700
|
+
logger$i.debug('starting_fabric', { type: 'in_process' });
|
|
31921
31701
|
if (!this._currentNode) {
|
|
31922
31702
|
const nodeConfig = normalizeNodeConfig(this._config?.node ?? null);
|
|
31923
31703
|
this._currentNode = await NodeLikeFactory.createNode(nodeConfig);
|
|
@@ -32052,7 +31832,7 @@ var inProcessFameFabricFactory = /*#__PURE__*/Object.freeze({
|
|
|
32052
31832
|
default: InProcessFameFabricFactory
|
|
32053
31833
|
});
|
|
32054
31834
|
|
|
32055
|
-
const logger$
|
|
31835
|
+
const logger$h = getLogger('naylence.fame.node.admission.admission_profile_factory');
|
|
32056
31836
|
const ENV_VAR_IS_ROOT = 'FAME_ROOT';
|
|
32057
31837
|
const ENV_VAR_JWT_AUDIENCE = 'FAME_JWT_AUDIENCE';
|
|
32058
31838
|
const ENV_VAR_ADMISSION_TOKEN_URL = 'FAME_ADMISSION_TOKEN_URL';
|
|
@@ -32287,7 +32067,7 @@ class AdmissionProfileFactory extends AdmissionClientFactory {
|
|
|
32287
32067
|
async create(config) {
|
|
32288
32068
|
const normalized = normalizeConfig$m(config);
|
|
32289
32069
|
const profileConfig = resolveProfileConfig(normalized.profile);
|
|
32290
|
-
logger$
|
|
32070
|
+
logger$h.debug('enabling_admission_profile', { profile: normalized.profile });
|
|
32291
32071
|
return AdmissionClientFactory.createAdmissionClient(profileConfig);
|
|
32292
32072
|
}
|
|
32293
32073
|
}
|
|
@@ -32326,7 +32106,7 @@ var admissionProfileFactory = /*#__PURE__*/Object.freeze({
|
|
|
32326
32106
|
default: AdmissionProfileFactory
|
|
32327
32107
|
});
|
|
32328
32108
|
|
|
32329
|
-
const logger$
|
|
32109
|
+
const logger$g = getLogger('naylence.fame.node.admission.direct_admission_client');
|
|
32330
32110
|
class DirectAdmissionClient {
|
|
32331
32111
|
constructor(options) {
|
|
32332
32112
|
this.hasUpstream = true;
|
|
@@ -32351,7 +32131,7 @@ class DirectAdmissionClient {
|
|
|
32351
32131
|
}
|
|
32352
32132
|
}
|
|
32353
32133
|
async hello(systemId, instanceId, requestedLogicals) {
|
|
32354
|
-
logger$
|
|
32134
|
+
logger$g.debug('direct_admission_hello_start', {
|
|
32355
32135
|
providedSystemId: systemId,
|
|
32356
32136
|
instanceId,
|
|
32357
32137
|
requestedLogicals,
|
|
@@ -32359,7 +32139,7 @@ class DirectAdmissionClient {
|
|
|
32359
32139
|
const effectiveSystemId = systemId && systemId.trim().length > 0
|
|
32360
32140
|
? systemId
|
|
32361
32141
|
: await generateIdAsync({ mode: 'fingerprint' }).catch(async () => {
|
|
32362
|
-
logger$
|
|
32142
|
+
logger$g.debug('direct_admission_fingerprint_generation_failed', {
|
|
32363
32143
|
reason: 'falling back to random id',
|
|
32364
32144
|
});
|
|
32365
32145
|
return generateIdAsync({ mode: 'random' });
|
|
@@ -32381,7 +32161,7 @@ class DirectAdmissionClient {
|
|
|
32381
32161
|
const envelope = createFameEnvelope({
|
|
32382
32162
|
frame: welcomeFrame,
|
|
32383
32163
|
});
|
|
32384
|
-
logger$
|
|
32164
|
+
logger$g.debug('direct_admission_hello_success', {
|
|
32385
32165
|
systemId: welcomeFrame.systemId,
|
|
32386
32166
|
instanceId: welcomeFrame.instanceId,
|
|
32387
32167
|
acceptedLogicals: welcomeFrame.acceptedLogicals,
|
|
@@ -32558,7 +32338,7 @@ var noAuthInjectionStrategyFactory = /*#__PURE__*/Object.freeze({
|
|
|
32558
32338
|
default: NoAuthInjectionStrategyFactory
|
|
32559
32339
|
});
|
|
32560
32340
|
|
|
32561
|
-
const logger$
|
|
32341
|
+
const logger$f = getLogger('naylence.fame.node.admission.welcome_service_client');
|
|
32562
32342
|
class WelcomeServiceClient {
|
|
32563
32343
|
constructor(options) {
|
|
32564
32344
|
this.hasUpstream = options.hasUpstream ?? options.has_upstream ?? false;
|
|
@@ -32607,7 +32387,7 @@ class WelcomeServiceClient {
|
|
|
32607
32387
|
'Content-Type': 'application/json',
|
|
32608
32388
|
...authHeaders,
|
|
32609
32389
|
};
|
|
32610
|
-
logger$
|
|
32390
|
+
logger$f.debug('welcome_service_hello_request', {
|
|
32611
32391
|
url: this.url,
|
|
32612
32392
|
systemId,
|
|
32613
32393
|
instanceId,
|
|
@@ -32643,7 +32423,7 @@ class WelcomeServiceClient {
|
|
|
32643
32423
|
parsedEnvelope.frame.type !== 'NodeWelcome') {
|
|
32644
32424
|
throw new Error(`Unexpected frame type '${parsedEnvelope.frame?.type ?? 'unknown'}'`);
|
|
32645
32425
|
}
|
|
32646
|
-
logger$
|
|
32426
|
+
logger$f.debug('welcome_service_hello_success', {
|
|
32647
32427
|
systemId: parsedEnvelope.frame.systemId,
|
|
32648
32428
|
targetSystemId: parsedEnvelope.frame.targetSystemId,
|
|
32649
32429
|
assignedPath: parsedEnvelope.frame.assignedPath,
|
|
@@ -33779,7 +33559,7 @@ var noopTokenVerifierFactory = /*#__PURE__*/Object.freeze({
|
|
|
33779
33559
|
default: NoopTokenVerifierFactory
|
|
33780
33560
|
});
|
|
33781
33561
|
|
|
33782
|
-
const logger$
|
|
33562
|
+
const logger$e = getLogger('naylence.fame.security.auth.oauth2_authorizer_factory');
|
|
33783
33563
|
let oauth2AuthorizerModulePromise = null;
|
|
33784
33564
|
function getOAuth2AuthorizerModule() {
|
|
33785
33565
|
if (!oauth2AuthorizerModulePromise) {
|
|
@@ -33806,12 +33586,12 @@ class OAuth2AuthorizerFactory extends AuthorizerFactory {
|
|
|
33806
33586
|
if (normalized.tokenIssuerConfig) {
|
|
33807
33587
|
try {
|
|
33808
33588
|
tokenIssuer = await TokenIssuerFactory.createTokenIssuer(normalized.tokenIssuerConfig);
|
|
33809
|
-
logger$
|
|
33589
|
+
logger$e.debug('token_issuer_created_for_reverse_auth', {
|
|
33810
33590
|
issuer_type: normalized.tokenIssuerConfig.type,
|
|
33811
33591
|
});
|
|
33812
33592
|
}
|
|
33813
33593
|
catch (error) {
|
|
33814
|
-
logger$
|
|
33594
|
+
logger$e.warning('failed_to_create_token_issuer_for_reverse_auth', {
|
|
33815
33595
|
error: error instanceof Error ? error.message : String(error),
|
|
33816
33596
|
issuer_config: normalized.tokenIssuerConfig,
|
|
33817
33597
|
});
|
|
@@ -34764,7 +34544,7 @@ var sessionKeyCredentialProviderFactory = /*#__PURE__*/Object.freeze({
|
|
|
34764
34544
|
normalizeSessionKeyConfig: normalizeSessionKeyConfig
|
|
34765
34545
|
});
|
|
34766
34546
|
|
|
34767
|
-
const logger$
|
|
34547
|
+
const logger$d = getLogger('naylence.fame.security.default_security_manager_factory');
|
|
34768
34548
|
function normalizeDefaultSecurityManagerConfig(config) {
|
|
34769
34549
|
if (!config) {
|
|
34770
34550
|
return null;
|
|
@@ -34932,7 +34712,7 @@ class DefaultSecurityManagerFactory extends SecurityManagerFactory {
|
|
|
34932
34712
|
return await KeyStoreFactory.createKeyStore(value, createOptions ?? undefined);
|
|
34933
34713
|
}
|
|
34934
34714
|
catch (error) {
|
|
34935
|
-
logger$
|
|
34715
|
+
logger$d.error('failed_to_create_key_store_from_config', {
|
|
34936
34716
|
error: error instanceof Error ? error.message : String(error),
|
|
34937
34717
|
});
|
|
34938
34718
|
return null;
|
|
@@ -34968,7 +34748,7 @@ class DefaultSecurityManagerFactory extends SecurityManagerFactory {
|
|
|
34968
34748
|
return null;
|
|
34969
34749
|
}
|
|
34970
34750
|
const cryptoProvider = cryptoProviderOverride ?? null;
|
|
34971
|
-
logger$
|
|
34751
|
+
logger$d.debug('auto_create_envelope_signer', {
|
|
34972
34752
|
has_crypto_override: Boolean(cryptoProviderOverride),
|
|
34973
34753
|
override_constructor: cryptoProviderOverride
|
|
34974
34754
|
? (cryptoProviderOverride.constructor?.name ?? 'unknown')
|
|
@@ -34989,7 +34769,7 @@ class DefaultSecurityManagerFactory extends SecurityManagerFactory {
|
|
|
34989
34769
|
});
|
|
34990
34770
|
}
|
|
34991
34771
|
catch (error) {
|
|
34992
|
-
logger$
|
|
34772
|
+
logger$d.error('failed_to_auto_create_envelope_signer', {
|
|
34993
34773
|
error: error instanceof Error ? error.message : String(error),
|
|
34994
34774
|
exc_info: true,
|
|
34995
34775
|
});
|
|
@@ -35024,7 +34804,7 @@ class DefaultSecurityManagerFactory extends SecurityManagerFactory {
|
|
|
35024
34804
|
});
|
|
35025
34805
|
}
|
|
35026
34806
|
catch (error) {
|
|
35027
|
-
logger$
|
|
34807
|
+
logger$d.error('failed_to_auto_create_envelope_verifier', {
|
|
35028
34808
|
error: error instanceof Error ? error.message : String(error),
|
|
35029
34809
|
exc_info: true,
|
|
35030
34810
|
});
|
|
@@ -35036,7 +34816,7 @@ class DefaultSecurityManagerFactory extends SecurityManagerFactory {
|
|
|
35036
34816
|
if (encryptionConfig &&
|
|
35037
34817
|
DefaultSecurityManagerFactory.isConfigLike(encryptionConfig)) {
|
|
35038
34818
|
if (!keyManager) {
|
|
35039
|
-
logger$
|
|
34819
|
+
logger$d.warning('encryption_manager_config_requires_key_manager');
|
|
35040
34820
|
return { encryptionManager: null, secureChannelManager };
|
|
35041
34821
|
}
|
|
35042
34822
|
const manager = await EncryptionManagerFactory.createEncryptionManager(encryptionConfig, {
|
|
@@ -35073,7 +34853,7 @@ class DefaultSecurityManagerFactory extends SecurityManagerFactory {
|
|
|
35073
34853
|
return { encryptionManager: manager, secureChannelManager };
|
|
35074
34854
|
}
|
|
35075
34855
|
catch (error) {
|
|
35076
|
-
logger$
|
|
34856
|
+
logger$d.error('failed_to_auto_create_encryption_manager', {
|
|
35077
34857
|
error: error instanceof Error ? error.message : String(error),
|
|
35078
34858
|
exc_info: true,
|
|
35079
34859
|
});
|
|
@@ -35116,7 +34896,7 @@ class DefaultSecurityManagerFactory extends SecurityManagerFactory {
|
|
|
35116
34896
|
});
|
|
35117
34897
|
}
|
|
35118
34898
|
catch (error) {
|
|
35119
|
-
logger$
|
|
34899
|
+
logger$d.error('failed_to_auto_create_key_manager', {
|
|
35120
34900
|
error: error instanceof Error ? error.message : String(error),
|
|
35121
34901
|
exc_info: true,
|
|
35122
34902
|
});
|
|
@@ -35165,7 +34945,7 @@ class DefaultSecurityManagerFactory extends SecurityManagerFactory {
|
|
|
35165
34945
|
})) ?? null);
|
|
35166
34946
|
}
|
|
35167
34947
|
catch (error) {
|
|
35168
|
-
logger$
|
|
34948
|
+
logger$d.error('failed_to_auto_create_authorizer', {
|
|
35169
34949
|
error: error instanceof Error ? error.message : String(error),
|
|
35170
34950
|
exc_info: true,
|
|
35171
34951
|
});
|
|
@@ -35194,7 +34974,7 @@ class DefaultSecurityManagerFactory extends SecurityManagerFactory {
|
|
|
35194
34974
|
});
|
|
35195
34975
|
}
|
|
35196
34976
|
catch (error) {
|
|
35197
|
-
logger$
|
|
34977
|
+
logger$d.error('failed_to_auto_create_certificate_manager', {
|
|
35198
34978
|
error: error instanceof Error ? error.message : String(error),
|
|
35199
34979
|
exc_info: true,
|
|
35200
34980
|
});
|
|
@@ -35452,7 +35232,7 @@ var defaultKeyManagerFactory = /*#__PURE__*/Object.freeze({
|
|
|
35452
35232
|
default: DefaultKeyManagerFactory
|
|
35453
35233
|
});
|
|
35454
35234
|
|
|
35455
|
-
const logger$
|
|
35235
|
+
const logger$c = getLogger('naylence.fame.security.keys.in_memory_key_store');
|
|
35456
35236
|
class InMemoryKeyStore extends KeyStore {
|
|
35457
35237
|
constructor(initialKeys = null) {
|
|
35458
35238
|
super();
|
|
@@ -35474,7 +35254,7 @@ class InMemoryKeyStore extends KeyStore {
|
|
|
35474
35254
|
}
|
|
35475
35255
|
catch (error) {
|
|
35476
35256
|
if (error instanceof JWKValidationError) {
|
|
35477
|
-
logger$
|
|
35257
|
+
logger$c.warning('rejected_invalid_jwk_individual', {
|
|
35478
35258
|
kid,
|
|
35479
35259
|
error: error.message,
|
|
35480
35260
|
});
|
|
@@ -35518,7 +35298,7 @@ class InMemoryKeyStore extends KeyStore {
|
|
|
35518
35298
|
}
|
|
35519
35299
|
}
|
|
35520
35300
|
if (staleKeys.length > 0) {
|
|
35521
|
-
logger$
|
|
35301
|
+
logger$c.debug('removing_stale_keys_before_adding_new_key', {
|
|
35522
35302
|
new_kid: kid,
|
|
35523
35303
|
physical_path: physicalPath,
|
|
35524
35304
|
base_path: basePath,
|
|
@@ -35546,7 +35326,7 @@ class InMemoryKeyStore extends KeyStore {
|
|
|
35546
35326
|
}
|
|
35547
35327
|
keysByPath[path].push(existingKid);
|
|
35548
35328
|
}
|
|
35549
|
-
logger$
|
|
35329
|
+
logger$c.debug('key_lookup_failed', {
|
|
35550
35330
|
missing_kid: kid,
|
|
35551
35331
|
available_kids: Array.from(this.keys.keys()),
|
|
35552
35332
|
keys_by_path: keysByPath,
|
|
@@ -35595,7 +35375,7 @@ class InMemoryKeyStore extends KeyStore {
|
|
|
35595
35375
|
this.keys.delete(kid);
|
|
35596
35376
|
}
|
|
35597
35377
|
if (keysToRemove.length > 0) {
|
|
35598
|
-
logger$
|
|
35378
|
+
logger$c.debug('removed_keys_for_path', {
|
|
35599
35379
|
physical_path: physicalPath,
|
|
35600
35380
|
removed_key_ids: keysToRemove,
|
|
35601
35381
|
count: keysToRemove.length,
|
|
@@ -35606,7 +35386,7 @@ class InMemoryKeyStore extends KeyStore {
|
|
|
35606
35386
|
async removeKey(kid) {
|
|
35607
35387
|
const removed = this.keys.delete(kid);
|
|
35608
35388
|
if (removed) {
|
|
35609
|
-
logger$
|
|
35389
|
+
logger$c.debug('removed_individual_key', { kid });
|
|
35610
35390
|
}
|
|
35611
35391
|
return removed;
|
|
35612
35392
|
}
|
|
@@ -35972,7 +35752,7 @@ var capabilityAwareRoutingPolicyFactory = /*#__PURE__*/Object.freeze({
|
|
|
35972
35752
|
default: CapabilityAwareRoutingPolicyFactory
|
|
35973
35753
|
});
|
|
35974
35754
|
|
|
35975
|
-
const logger$
|
|
35755
|
+
const logger$b = getLogger('naylence.fame.sentinel.composite_routing_policy_factory');
|
|
35976
35756
|
const FACTORY_META$8 = {
|
|
35977
35757
|
base: ROUTING_POLICY_FACTORY_BASE,
|
|
35978
35758
|
key: 'CompositeRoutingPolicy',
|
|
@@ -35998,13 +35778,13 @@ class CompositeRoutingPolicyFactory extends RoutingPolicyFactory {
|
|
|
35998
35778
|
policies.push(policy);
|
|
35999
35779
|
}
|
|
36000
35780
|
else {
|
|
36001
|
-
logger$
|
|
35781
|
+
logger$b.warning('composite_policy_null_child', {
|
|
36002
35782
|
config: policyConfig,
|
|
36003
35783
|
});
|
|
36004
35784
|
}
|
|
36005
35785
|
}
|
|
36006
35786
|
catch (error) {
|
|
36007
|
-
logger$
|
|
35787
|
+
logger$b.warning('composite_policy_child_error', {
|
|
36008
35788
|
error: error instanceof Error ? error.message : String(error),
|
|
36009
35789
|
config: policyConfig,
|
|
36010
35790
|
});
|
|
@@ -36300,7 +36080,7 @@ var hrwLoadBalancingStrategyFactory = /*#__PURE__*/Object.freeze({
|
|
|
36300
36080
|
default: HRWLoadBalancingStrategyFactory
|
|
36301
36081
|
});
|
|
36302
36082
|
|
|
36303
|
-
const logger$
|
|
36083
|
+
const logger$a = getLogger('naylence.fame.sentinel.load_balancing.load_balancing_profile_factory');
|
|
36304
36084
|
const PROFILE_NAME_RANDOM = 'random';
|
|
36305
36085
|
const PROFILE_NAME_ROUND_ROBIN = 'round_robin';
|
|
36306
36086
|
const PROFILE_NAME_HRW = 'hrw';
|
|
@@ -36334,7 +36114,7 @@ class LoadBalancingProfileFactory extends LoadBalancingStrategyFactory {
|
|
|
36334
36114
|
async create(config, ...factoryArgs) {
|
|
36335
36115
|
const finalConfig = this.normalizeConfig(config);
|
|
36336
36116
|
const profileName = finalConfig.profile ?? PROFILE_NAME_DEVELOPMENT$1;
|
|
36337
|
-
logger$
|
|
36117
|
+
logger$a.debug('enabling_load_balancing_profile', { profile: profileName });
|
|
36338
36118
|
const strategyConfig = this.resolveProfile(profileName);
|
|
36339
36119
|
const strategy = await createResource$1(LOAD_BALANCING_STRATEGY_FACTORY_BASE, strategyConfig, { factoryArgs });
|
|
36340
36120
|
if (!strategy) {
|
|
@@ -36525,7 +36305,7 @@ var stickyLoadBalancingStrategyFactory = /*#__PURE__*/Object.freeze({
|
|
|
36525
36305
|
default: StickyLoadBalancingStrategyFactory
|
|
36526
36306
|
});
|
|
36527
36307
|
|
|
36528
|
-
const logger$
|
|
36308
|
+
const logger$9 = getLogger('naylence.fame.sentinel.routing_profile_factory');
|
|
36529
36309
|
const PROFILE_NAME_DEVELOPMENT = 'development';
|
|
36530
36310
|
const PROFILE_NAME_PRODUCTION = 'production';
|
|
36531
36311
|
const PROFILE_NAME_BASIC = 'basic';
|
|
@@ -36576,7 +36356,7 @@ class RoutingProfileFactory extends RoutingPolicyFactory {
|
|
|
36576
36356
|
}
|
|
36577
36357
|
async create(config, ...kwargs) {
|
|
36578
36358
|
const normalized = this.normalizeConfig(config);
|
|
36579
|
-
logger$
|
|
36359
|
+
logger$9.debug('enabling_routing_profile', { profile: normalized.profile });
|
|
36580
36360
|
const routingConfig = this.getProfileConfig(normalized.profile);
|
|
36581
36361
|
const policy = await createResource$1(ROUTING_POLICY_FACTORY_BASE, routingConfig, {
|
|
36582
36362
|
factoryArgs: kwargs,
|
|
@@ -36872,21 +36652,21 @@ class OpenTelemetryTraceEmitter extends BaseTraceEmitter {
|
|
|
36872
36652
|
}
|
|
36873
36653
|
function normalizeOpenTelemetryTraceEmitterOptions(input) {
|
|
36874
36654
|
const source = (input ?? {});
|
|
36875
|
-
const serviceName = extractNonEmptyString(pickFirst(source, ['serviceName', 'service_name'])) ?? 'naylence-service';
|
|
36876
|
-
const tracer = pickFirst(source, ['tracer']);
|
|
36877
|
-
const otelApi = pickFirst(source, [
|
|
36655
|
+
const serviceName = extractNonEmptyString$1(pickFirst$1(source, ['serviceName', 'service_name'])) ?? 'naylence-service';
|
|
36656
|
+
const tracer = pickFirst$1(source, ['tracer']);
|
|
36657
|
+
const otelApi = pickFirst$1(source, [
|
|
36878
36658
|
'otelApi',
|
|
36879
36659
|
'otel_api',
|
|
36880
36660
|
]);
|
|
36881
36661
|
if (!otelApi) {
|
|
36882
36662
|
throw new Error('OpenTelemetryTraceEmitter requires OpenTelemetry API bindings. Provide otelApi via options.');
|
|
36883
36663
|
}
|
|
36884
|
-
const lifecycle = pickFirst(source, [
|
|
36664
|
+
const lifecycle = pickFirst$1(source, [
|
|
36885
36665
|
'lifecycle',
|
|
36886
36666
|
'lifeCycle',
|
|
36887
36667
|
'life_cycle',
|
|
36888
36668
|
]) ?? null;
|
|
36889
|
-
const authStrategy = pickFirst(source, [
|
|
36669
|
+
const authStrategy = pickFirst$1(source, [
|
|
36890
36670
|
'authStrategy',
|
|
36891
36671
|
'auth_strategy',
|
|
36892
36672
|
]) ?? null;
|
|
@@ -36898,7 +36678,7 @@ function normalizeOpenTelemetryTraceEmitterOptions(input) {
|
|
|
36898
36678
|
authStrategy,
|
|
36899
36679
|
};
|
|
36900
36680
|
}
|
|
36901
|
-
function pickFirst(source, keys) {
|
|
36681
|
+
function pickFirst$1(source, keys) {
|
|
36902
36682
|
for (const key of keys) {
|
|
36903
36683
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
36904
36684
|
const value = source[key];
|
|
@@ -36909,7 +36689,7 @@ function pickFirst(source, keys) {
|
|
|
36909
36689
|
}
|
|
36910
36690
|
return undefined;
|
|
36911
36691
|
}
|
|
36912
|
-
function extractNonEmptyString(value) {
|
|
36692
|
+
function extractNonEmptyString$1(value) {
|
|
36913
36693
|
if (typeof value === 'string') {
|
|
36914
36694
|
const trimmed = value.trim();
|
|
36915
36695
|
if (trimmed.length > 0) {
|
|
@@ -36962,6 +36742,241 @@ var openTelemetryTraceEmitter = /*#__PURE__*/Object.freeze({
|
|
|
36962
36742
|
OpenTelemetryTraceEmitter: OpenTelemetryTraceEmitter
|
|
36963
36743
|
});
|
|
36964
36744
|
|
|
36745
|
+
const logger$8 = getLogger('naylence.fame.telemetry.otel_setup');
|
|
36746
|
+
const stringFrom = (...codes) => String.fromCharCode(...codes);
|
|
36747
|
+
const OTEL_PREFIX = `${stringFrom(64, 111, 112, 101, 110, 116, 101, 108, 101, 109, 101, 116, 114, 121)}${stringFrom(47)}`;
|
|
36748
|
+
const OTEL_API_SPEC = `${OTEL_PREFIX}${stringFrom(97, 112, 105)}`;
|
|
36749
|
+
const OTEL_RESOURCES_SPEC = `${OTEL_PREFIX}${stringFrom(114, 101, 115, 111, 117, 114, 99, 101, 115)}`;
|
|
36750
|
+
const OTEL_TRACE_NODE_SPEC = `${OTEL_PREFIX}${stringFrom(115, 100, 107, 45, 116, 114, 97, 99, 101, 45, 110, 111, 100, 101)}`;
|
|
36751
|
+
const OTEL_TRACE_BASE_SPEC = `${OTEL_PREFIX}${stringFrom(115, 100, 107, 45, 116, 114, 97, 99, 101, 45, 98, 97, 115, 101)}`;
|
|
36752
|
+
const OTEL_EXPORTER_HTTP_SPEC = `${OTEL_PREFIX}${stringFrom(101, 120, 112, 111, 114, 116, 101, 114, 45, 116, 114, 97, 99, 101, 45, 111, 116, 108, 112, 45, 104, 116, 116, 112)}`;
|
|
36753
|
+
let registeredOtel = null;
|
|
36754
|
+
async function setupOtel(options) {
|
|
36755
|
+
const normalized = normalizeSetupOtelOptions(options);
|
|
36756
|
+
try {
|
|
36757
|
+
if (registeredOtel) {
|
|
36758
|
+
logger$8.debug('open_telemetry_reusing_provider', {
|
|
36759
|
+
service_name: normalized.serviceName,
|
|
36760
|
+
});
|
|
36761
|
+
return registeredOtel.control;
|
|
36762
|
+
}
|
|
36763
|
+
const [apiModule, resourcesModule, nodeModule, traceBaseModule] = await Promise.all([
|
|
36764
|
+
import(OTEL_API_SPEC),
|
|
36765
|
+
import(OTEL_RESOURCES_SPEC),
|
|
36766
|
+
import(OTEL_TRACE_NODE_SPEC),
|
|
36767
|
+
import(OTEL_TRACE_BASE_SPEC),
|
|
36768
|
+
]);
|
|
36769
|
+
const { trace } = apiModule;
|
|
36770
|
+
const { defaultResource, resourceFromAttributes } = resourcesModule;
|
|
36771
|
+
const { NodeTracerProvider } = nodeModule;
|
|
36772
|
+
const { BatchSpanProcessor, ConsoleSpanExporter, ParentBasedSampler, AlwaysOnSampler, AlwaysOffSampler, TraceIdRatioBasedSampler, } = traceBaseModule;
|
|
36773
|
+
const currentProvider = trace.getTracerProvider();
|
|
36774
|
+
if (currentProvider && currentProvider instanceof NodeTracerProvider) {
|
|
36775
|
+
return null;
|
|
36776
|
+
}
|
|
36777
|
+
if (currentProvider &&
|
|
36778
|
+
currentProvider.constructor?.name === 'NodeTracerProvider') {
|
|
36779
|
+
logger$8.debug('open_telemetry_existing_node_provider', {
|
|
36780
|
+
service_name: normalized.serviceName,
|
|
36781
|
+
});
|
|
36782
|
+
return null;
|
|
36783
|
+
}
|
|
36784
|
+
logger$8.debug('open_telemetry_initializing', {
|
|
36785
|
+
service_name: normalized.serviceName,
|
|
36786
|
+
endpoint: normalized.endpoint ?? null,
|
|
36787
|
+
environment: normalized.environment ?? null,
|
|
36788
|
+
sampler: normalized.sampler ?? null,
|
|
36789
|
+
headers_present: Boolean(normalized.headers && Object.keys(normalized.headers).length),
|
|
36790
|
+
});
|
|
36791
|
+
const sampler = resolveSampler(normalized.sampler, {
|
|
36792
|
+
ParentBasedSampler,
|
|
36793
|
+
AlwaysOnSampler,
|
|
36794
|
+
AlwaysOffSampler,
|
|
36795
|
+
TraceIdRatioBasedSampler,
|
|
36796
|
+
});
|
|
36797
|
+
const baseResource = defaultResource();
|
|
36798
|
+
const mergedResource = resourceFromAttributes({
|
|
36799
|
+
'service.name': normalized.serviceName,
|
|
36800
|
+
'service.instance.id': generateInstanceId(),
|
|
36801
|
+
'deployment.environment': normalized.environment ?? 'dev',
|
|
36802
|
+
});
|
|
36803
|
+
const resource = baseResource.merge(mergedResource);
|
|
36804
|
+
const exporter = await resolveExporter(normalized.endpoint ?? undefined, normalized.headers, ConsoleSpanExporter);
|
|
36805
|
+
const spanProcessor = new BatchSpanProcessor(exporter);
|
|
36806
|
+
const provider = new NodeTracerProvider({
|
|
36807
|
+
resource,
|
|
36808
|
+
sampler,
|
|
36809
|
+
spanProcessors: [spanProcessor],
|
|
36810
|
+
});
|
|
36811
|
+
provider.register();
|
|
36812
|
+
logger$8.debug('open_telemetry_initialized', {
|
|
36813
|
+
service_name: normalized.serviceName,
|
|
36814
|
+
exporter: exporter.constructor?.name ?? 'unknown_exporter',
|
|
36815
|
+
});
|
|
36816
|
+
const control = {
|
|
36817
|
+
forceFlush: async () => {
|
|
36818
|
+
try {
|
|
36819
|
+
await provider.forceFlush();
|
|
36820
|
+
}
|
|
36821
|
+
catch (flushError) {
|
|
36822
|
+
logger$8.warning('open_telemetry_force_flush_failed', {
|
|
36823
|
+
error: flushError instanceof Error
|
|
36824
|
+
? flushError.message
|
|
36825
|
+
: String(flushError),
|
|
36826
|
+
});
|
|
36827
|
+
}
|
|
36828
|
+
},
|
|
36829
|
+
shutdown: async () => {
|
|
36830
|
+
try {
|
|
36831
|
+
await provider.shutdown();
|
|
36832
|
+
}
|
|
36833
|
+
catch (shutdownError) {
|
|
36834
|
+
logger$8.warning('open_telemetry_shutdown_failed', {
|
|
36835
|
+
error: shutdownError instanceof Error
|
|
36836
|
+
? shutdownError.message
|
|
36837
|
+
: String(shutdownError),
|
|
36838
|
+
});
|
|
36839
|
+
}
|
|
36840
|
+
finally {
|
|
36841
|
+
registeredOtel = null;
|
|
36842
|
+
}
|
|
36843
|
+
},
|
|
36844
|
+
};
|
|
36845
|
+
registeredOtel = {
|
|
36846
|
+
provider,
|
|
36847
|
+
control,
|
|
36848
|
+
};
|
|
36849
|
+
return control;
|
|
36850
|
+
}
|
|
36851
|
+
catch (error) {
|
|
36852
|
+
logger$8.error('open_telemetry_not_available', {
|
|
36853
|
+
error: error instanceof Error ? error.message : String(error),
|
|
36854
|
+
stack: error instanceof Error && error.stack ? error.stack : undefined,
|
|
36855
|
+
});
|
|
36856
|
+
return null;
|
|
36857
|
+
}
|
|
36858
|
+
}
|
|
36859
|
+
function normalizeSetupOtelOptions(options) {
|
|
36860
|
+
const source = (options ?? {});
|
|
36861
|
+
const serviceName = extractNonEmptyString(pickFirst(source, ['serviceName', 'service_name'])) ??
|
|
36862
|
+
'naylence-service';
|
|
36863
|
+
const endpoint = extractNonEmptyString(pickFirst(source, ['endpoint', 'otlpEndpoint', 'otlp_endpoint'])) ?? null;
|
|
36864
|
+
const environment = extractNonEmptyString(pickFirst(source, [
|
|
36865
|
+
'environment',
|
|
36866
|
+
'deploymentEnvironment',
|
|
36867
|
+
'deployment_environment',
|
|
36868
|
+
])) ?? null;
|
|
36869
|
+
const sampler = extractNonEmptyString(pickFirst(source, ['sampler', 'samplingStrategy', 'sampling_strategy'])) ?? null;
|
|
36870
|
+
const headers = extractHeaders(pickFirst(source, ['headers', 'otlpHeaders', 'otlp_headers']));
|
|
36871
|
+
return {
|
|
36872
|
+
serviceName,
|
|
36873
|
+
endpoint,
|
|
36874
|
+
environment,
|
|
36875
|
+
sampler,
|
|
36876
|
+
headers: headers ?? undefined,
|
|
36877
|
+
};
|
|
36878
|
+
}
|
|
36879
|
+
function pickFirst(source, keys) {
|
|
36880
|
+
for (const key of keys) {
|
|
36881
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
36882
|
+
const value = source[key];
|
|
36883
|
+
if (value !== undefined) {
|
|
36884
|
+
return value;
|
|
36885
|
+
}
|
|
36886
|
+
}
|
|
36887
|
+
}
|
|
36888
|
+
return undefined;
|
|
36889
|
+
}
|
|
36890
|
+
function extractNonEmptyString(value) {
|
|
36891
|
+
if (typeof value === 'string') {
|
|
36892
|
+
const trimmed = value.trim();
|
|
36893
|
+
if (trimmed.length > 0) {
|
|
36894
|
+
return trimmed;
|
|
36895
|
+
}
|
|
36896
|
+
}
|
|
36897
|
+
return undefined;
|
|
36898
|
+
}
|
|
36899
|
+
function extractHeaders(value) {
|
|
36900
|
+
if (!value || typeof value !== 'object') {
|
|
36901
|
+
return null;
|
|
36902
|
+
}
|
|
36903
|
+
const headers = {};
|
|
36904
|
+
for (const [key, raw] of Object.entries(value)) {
|
|
36905
|
+
if (typeof raw === 'string') {
|
|
36906
|
+
headers[key] = raw;
|
|
36907
|
+
}
|
|
36908
|
+
}
|
|
36909
|
+
return Object.keys(headers).length > 0 ? headers : null;
|
|
36910
|
+
}
|
|
36911
|
+
function generateInstanceId() {
|
|
36912
|
+
try {
|
|
36913
|
+
if (typeof crypto !== 'undefined' &&
|
|
36914
|
+
typeof crypto.randomUUID === 'function') {
|
|
36915
|
+
return crypto.randomUUID().replace(/-/g, '');
|
|
36916
|
+
}
|
|
36917
|
+
}
|
|
36918
|
+
catch {
|
|
36919
|
+
// Ignore crypto availability errors
|
|
36920
|
+
}
|
|
36921
|
+
const random = Math.random().toString(16).slice(2);
|
|
36922
|
+
return random.padEnd(32, '0').slice(0, 32);
|
|
36923
|
+
}
|
|
36924
|
+
function resolveSampler(samplerSetting, samplers) {
|
|
36925
|
+
const normalized = (samplerSetting ?? 'parentbased_always_on').toLowerCase();
|
|
36926
|
+
let base;
|
|
36927
|
+
if (normalized === 'always_off') {
|
|
36928
|
+
base = new samplers.AlwaysOffSampler();
|
|
36929
|
+
}
|
|
36930
|
+
else if (normalized === 'always_on' ||
|
|
36931
|
+
normalized === 'parentbased_always_on') {
|
|
36932
|
+
base = new samplers.AlwaysOnSampler();
|
|
36933
|
+
}
|
|
36934
|
+
else if (normalized.startsWith('ratio:')) {
|
|
36935
|
+
const ratioValue = Number.parseFloat(normalized.slice('ratio:'.length));
|
|
36936
|
+
const ratio = Number.isFinite(ratioValue)
|
|
36937
|
+
? Math.min(Math.max(ratioValue, 0), 1)
|
|
36938
|
+
: 1;
|
|
36939
|
+
base = new samplers.TraceIdRatioBasedSampler(ratio);
|
|
36940
|
+
}
|
|
36941
|
+
else {
|
|
36942
|
+
base = new samplers.AlwaysOnSampler();
|
|
36943
|
+
}
|
|
36944
|
+
return new samplers.ParentBasedSampler({ root: base });
|
|
36945
|
+
}
|
|
36946
|
+
async function resolveExporter(endpoint, headers, ConsoleSpanExporter) {
|
|
36947
|
+
if (endpoint) {
|
|
36948
|
+
try {
|
|
36949
|
+
const exporterModule = await import(OTEL_EXPORTER_HTTP_SPEC);
|
|
36950
|
+
if ('OTLPTraceExporter' in exporterModule) {
|
|
36951
|
+
const { OTLPTraceExporter } = exporterModule;
|
|
36952
|
+
const exporterOptions = {
|
|
36953
|
+
url: endpoint,
|
|
36954
|
+
};
|
|
36955
|
+
if (headers && Object.keys(headers).length > 0) {
|
|
36956
|
+
exporterOptions.headers = headers;
|
|
36957
|
+
}
|
|
36958
|
+
logger$8.debug('open_telemetry_using_otlp_http_exporter', {
|
|
36959
|
+
endpoint,
|
|
36960
|
+
headers_present: Boolean(headers && Object.keys(headers).length),
|
|
36961
|
+
});
|
|
36962
|
+
return new OTLPTraceExporter(exporterOptions);
|
|
36963
|
+
}
|
|
36964
|
+
}
|
|
36965
|
+
catch (error) {
|
|
36966
|
+
logger$8.error('open_telemetry_exporter_not_available', {
|
|
36967
|
+
error: error instanceof Error ? error.message : String(error),
|
|
36968
|
+
});
|
|
36969
|
+
}
|
|
36970
|
+
}
|
|
36971
|
+
logger$8.warning('open_telemetry_falling_back_to_console_exporter');
|
|
36972
|
+
return new ConsoleSpanExporter();
|
|
36973
|
+
}
|
|
36974
|
+
|
|
36975
|
+
var otelSetup = /*#__PURE__*/Object.freeze({
|
|
36976
|
+
__proto__: null,
|
|
36977
|
+
setupOtel: setupOtel
|
|
36978
|
+
});
|
|
36979
|
+
|
|
36965
36980
|
const logger$7 = getLogger('naylence.fame.connector.default_http_server');
|
|
36966
36981
|
function makeKey(host, port) {
|
|
36967
36982
|
return `${host}:${port}`;
|