@inference-net/otel-cf-workers 2.0.3 → 2.0.4
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/index.d.ts +6 -2
- package/dist/index.js +76 -13
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -522,7 +522,10 @@ export declare class WorkerLogger implements Logger {
|
|
|
522
522
|
private readonly name;
|
|
523
523
|
private readonly version?;
|
|
524
524
|
private readonly inheritedAttributes;
|
|
525
|
-
|
|
525
|
+
private readonly minSeverity;
|
|
526
|
+
constructor(name: string, processors: LogRecordProcessor[], resource: Resource, version?: string, inheritedAttributes?: LogAttributes, minLevel?: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal');
|
|
527
|
+
private levelToSeverity;
|
|
528
|
+
private shouldEmit;
|
|
526
529
|
emit(logRecord: Partial<LogRecord>): void;
|
|
527
530
|
trace(message: string, attributes?: LogAttributes): void;
|
|
528
531
|
debug(message: string, attributes?: LogAttributes): void;
|
|
@@ -542,7 +545,8 @@ export declare class WorkerLoggerProvider implements LoggerProvider {
|
|
|
542
545
|
private loggers;
|
|
543
546
|
private processors;
|
|
544
547
|
private resource;
|
|
545
|
-
|
|
548
|
+
private minLevel;
|
|
549
|
+
constructor(processors: LogRecordProcessor[], resource: Resource, minLevel?: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal');
|
|
546
550
|
getLogger(name: string, version?: string, options?: LoggerOptions): Logger;
|
|
547
551
|
register(): void;
|
|
548
552
|
shutdown(): Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -96,7 +96,7 @@ function passthroughGet(target, prop, thisArg) {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
const PACKAGE_VERSION = "2.0.
|
|
99
|
+
const PACKAGE_VERSION = "2.0.4";
|
|
100
100
|
const PACKAGE_NAME = "@inference-net/otel-cf-workers";
|
|
101
101
|
const ATTR_CLOUDFLARE_COLO = "cloudflare.colo";
|
|
102
102
|
const ATTR_CLOUDFLARE_RAY_ID = "cloudflare.ray_id";
|
|
@@ -1080,12 +1080,33 @@ class WorkerLogger {
|
|
|
1080
1080
|
name;
|
|
1081
1081
|
version;
|
|
1082
1082
|
inheritedAttributes;
|
|
1083
|
-
|
|
1083
|
+
minSeverity;
|
|
1084
|
+
constructor(name, processors, resource, version, inheritedAttributes, minLevel = "info") {
|
|
1084
1085
|
this.name = name;
|
|
1085
1086
|
this.processors = processors;
|
|
1086
1087
|
this.resource = resource;
|
|
1087
1088
|
this.version = version;
|
|
1088
1089
|
this.inheritedAttributes = inheritedAttributes || {};
|
|
1090
|
+
this.minSeverity = this.levelToSeverity(minLevel);
|
|
1091
|
+
}
|
|
1092
|
+
levelToSeverity(level) {
|
|
1093
|
+
switch (level) {
|
|
1094
|
+
case "trace":
|
|
1095
|
+
return SEVERITY_NUMBERS.TRACE;
|
|
1096
|
+
case "debug":
|
|
1097
|
+
return SEVERITY_NUMBERS.DEBUG;
|
|
1098
|
+
case "info":
|
|
1099
|
+
return SEVERITY_NUMBERS.INFO;
|
|
1100
|
+
case "warn":
|
|
1101
|
+
return SEVERITY_NUMBERS.WARN;
|
|
1102
|
+
case "error":
|
|
1103
|
+
return SEVERITY_NUMBERS.ERROR;
|
|
1104
|
+
case "fatal":
|
|
1105
|
+
return SEVERITY_NUMBERS.FATAL;
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
shouldEmit(severityNumber) {
|
|
1109
|
+
return severityNumber >= this.minSeverity;
|
|
1089
1110
|
}
|
|
1090
1111
|
emit(logRecord) {
|
|
1091
1112
|
const mergedAttributes = {
|
|
@@ -1107,6 +1128,7 @@ class WorkerLogger {
|
|
|
1107
1128
|
});
|
|
1108
1129
|
}
|
|
1109
1130
|
trace(message, attributes) {
|
|
1131
|
+
if (!this.shouldEmit(SEVERITY_NUMBERS.TRACE)) return;
|
|
1110
1132
|
this.emit({
|
|
1111
1133
|
severityNumber: SEVERITY_NUMBERS.TRACE,
|
|
1112
1134
|
severityText: "TRACE",
|
|
@@ -1115,6 +1137,7 @@ class WorkerLogger {
|
|
|
1115
1137
|
});
|
|
1116
1138
|
}
|
|
1117
1139
|
debug(message, attributes) {
|
|
1140
|
+
if (!this.shouldEmit(SEVERITY_NUMBERS.DEBUG)) return;
|
|
1118
1141
|
this.emit({
|
|
1119
1142
|
severityNumber: SEVERITY_NUMBERS.DEBUG,
|
|
1120
1143
|
severityText: "DEBUG",
|
|
@@ -1123,6 +1146,7 @@ class WorkerLogger {
|
|
|
1123
1146
|
});
|
|
1124
1147
|
}
|
|
1125
1148
|
info(message, attributes) {
|
|
1149
|
+
if (!this.shouldEmit(SEVERITY_NUMBERS.INFO)) return;
|
|
1126
1150
|
this.emit({
|
|
1127
1151
|
severityNumber: SEVERITY_NUMBERS.INFO,
|
|
1128
1152
|
severityText: "INFO",
|
|
@@ -1131,6 +1155,7 @@ class WorkerLogger {
|
|
|
1131
1155
|
});
|
|
1132
1156
|
}
|
|
1133
1157
|
warn(message, attributes) {
|
|
1158
|
+
if (!this.shouldEmit(SEVERITY_NUMBERS.WARN)) return;
|
|
1134
1159
|
this.emit({
|
|
1135
1160
|
severityNumber: SEVERITY_NUMBERS.WARN,
|
|
1136
1161
|
severityText: "WARN",
|
|
@@ -1139,6 +1164,7 @@ class WorkerLogger {
|
|
|
1139
1164
|
});
|
|
1140
1165
|
}
|
|
1141
1166
|
error(message, attributes) {
|
|
1167
|
+
if (!this.shouldEmit(SEVERITY_NUMBERS.ERROR)) return;
|
|
1142
1168
|
let body;
|
|
1143
1169
|
let attrs = { ...attributes };
|
|
1144
1170
|
if (message instanceof Error) {
|
|
@@ -1160,6 +1186,7 @@ class WorkerLogger {
|
|
|
1160
1186
|
});
|
|
1161
1187
|
}
|
|
1162
1188
|
fatal(message, attributes) {
|
|
1189
|
+
if (!this.shouldEmit(SEVERITY_NUMBERS.FATAL)) return;
|
|
1163
1190
|
this.emit({
|
|
1164
1191
|
severityNumber: SEVERITY_NUMBERS.FATAL,
|
|
1165
1192
|
severityText: "FATAL",
|
|
@@ -1180,7 +1207,14 @@ class WorkerLogger {
|
|
|
1180
1207
|
...this.inheritedAttributes,
|
|
1181
1208
|
...attributes
|
|
1182
1209
|
};
|
|
1183
|
-
|
|
1210
|
+
let minLevel = "info";
|
|
1211
|
+
if (this.minSeverity <= SEVERITY_NUMBERS.TRACE) minLevel = "trace";
|
|
1212
|
+
else if (this.minSeverity <= SEVERITY_NUMBERS.DEBUG) minLevel = "debug";
|
|
1213
|
+
else if (this.minSeverity <= SEVERITY_NUMBERS.INFO) minLevel = "info";
|
|
1214
|
+
else if (this.minSeverity <= SEVERITY_NUMBERS.WARN) minLevel = "warn";
|
|
1215
|
+
else if (this.minSeverity <= SEVERITY_NUMBERS.ERROR) minLevel = "error";
|
|
1216
|
+
else minLevel = "fatal";
|
|
1217
|
+
return new WorkerLogger(this.name, this.processors, this.resource, this.version, mergedAttributes, minLevel);
|
|
1184
1218
|
}
|
|
1185
1219
|
}
|
|
1186
1220
|
|
|
@@ -1195,14 +1229,16 @@ class WorkerLoggerProvider {
|
|
|
1195
1229
|
loggers = /* @__PURE__ */ new Map();
|
|
1196
1230
|
processors;
|
|
1197
1231
|
resource;
|
|
1198
|
-
|
|
1232
|
+
minLevel;
|
|
1233
|
+
constructor(processors, resource, minLevel = "info") {
|
|
1199
1234
|
this.processors = processors;
|
|
1200
1235
|
this.resource = resource;
|
|
1236
|
+
this.minLevel = minLevel;
|
|
1201
1237
|
}
|
|
1202
1238
|
getLogger(name, version, options) {
|
|
1203
1239
|
const key = `${name}@${version || ""}:${options?.schemaUrl || ""}`;
|
|
1204
1240
|
if (!this.loggers.has(key)) {
|
|
1205
|
-
this.loggers.set(key, new WorkerLogger(name, this.processors, this.resource, version));
|
|
1241
|
+
this.loggers.set(key, new WorkerLogger(name, this.processors, this.resource, version, void 0, this.minLevel));
|
|
1206
1242
|
}
|
|
1207
1243
|
return this.loggers.get(key);
|
|
1208
1244
|
}
|
|
@@ -2928,11 +2964,14 @@ const RPC_CONTEXT_MARKER = "__otel_rpc_ctx__";
|
|
|
2928
2964
|
function isRpcContextCarrier(obj) {
|
|
2929
2965
|
return typeof obj === "object" && obj !== null && RPC_CONTEXT_MARKER in obj && obj[RPC_CONTEXT_MARKER] === true;
|
|
2930
2966
|
}
|
|
2931
|
-
function injectRpcContext(ctx = context.active()) {
|
|
2967
|
+
function injectRpcContext(ctx = context.active(), doName) {
|
|
2932
2968
|
const carrier = {
|
|
2933
2969
|
[RPC_CONTEXT_MARKER]: true,
|
|
2934
2970
|
headers: {}
|
|
2935
2971
|
};
|
|
2972
|
+
if (doName) {
|
|
2973
|
+
carrier.doName = doName;
|
|
2974
|
+
}
|
|
2936
2975
|
propagation.inject(ctx, carrier.headers, {
|
|
2937
2976
|
set: (headers, key, value) => {
|
|
2938
2977
|
headers[key] = typeof value === "string" ? value : String(value);
|
|
@@ -2980,7 +3019,7 @@ function instrumentRpcMethod(method, methodName, nsName, stubId) {
|
|
|
2980
3019
|
const spanName = `RPC ${nsName}.${methodName}`;
|
|
2981
3020
|
return tracer.startActiveSpan(spanName, options, async (span) => {
|
|
2982
3021
|
try {
|
|
2983
|
-
const contextCarrier = injectRpcContext(context.active());
|
|
3022
|
+
const contextCarrier = injectRpcContext(context.active(), stubId.name);
|
|
2984
3023
|
const argsWithContext = [contextCarrier, ...argArray];
|
|
2985
3024
|
const result = await Reflect.apply(target, thisArg, argsWithContext);
|
|
2986
3025
|
span.setStatus({ code: SpanStatusCode.OK });
|
|
@@ -3029,12 +3068,24 @@ function instrumentBindingGet(getFn, nsName) {
|
|
|
3029
3068
|
};
|
|
3030
3069
|
return wrap(getFn, getHandler);
|
|
3031
3070
|
}
|
|
3071
|
+
function instrumentBindingGetByName(getByNameFn, nsName) {
|
|
3072
|
+
const getByNameHandler = {
|
|
3073
|
+
apply(target, thisArg, argArray) {
|
|
3074
|
+
const stub = Reflect.apply(target, thisArg, argArray);
|
|
3075
|
+
return instrumentBindingStub(stub, nsName);
|
|
3076
|
+
}
|
|
3077
|
+
};
|
|
3078
|
+
return wrap(getByNameFn, getByNameHandler);
|
|
3079
|
+
}
|
|
3032
3080
|
function instrumentDOBinding(ns, nsName) {
|
|
3033
3081
|
const nsHandler = {
|
|
3034
3082
|
get(target, prop, receiver) {
|
|
3035
3083
|
if (prop === "get") {
|
|
3036
3084
|
const fn = Reflect.get(ns, prop, receiver);
|
|
3037
3085
|
return instrumentBindingGet(fn, nsName);
|
|
3086
|
+
} else if (prop === "getByName") {
|
|
3087
|
+
const fn = Reflect.get(ns, prop, receiver);
|
|
3088
|
+
return instrumentBindingGetByName(fn, nsName);
|
|
3038
3089
|
} else {
|
|
3039
3090
|
return passthroughGet(target, prop, receiver);
|
|
3040
3091
|
}
|
|
@@ -3150,24 +3201,36 @@ function instrumentRpcHandlerMethod(fn, methodName, initialiser, env, id) {
|
|
|
3150
3201
|
thisArg = unwrap(thisArg);
|
|
3151
3202
|
const config = initialiser(env, "do-rpc");
|
|
3152
3203
|
const [extractedContext, cleanedArgs] = extractAndRemoveRpcContext(argArray);
|
|
3204
|
+
const carrierDoName = argArray.length > 0 && extractedContext ? argArray[0].doName : void 0;
|
|
3205
|
+
const doName = carrierDoName || id.name || void 0;
|
|
3206
|
+
console.log("[DO RPC Server]", {
|
|
3207
|
+
methodName,
|
|
3208
|
+
hasExtractedContext: !!extractedContext,
|
|
3209
|
+
carrierDoName,
|
|
3210
|
+
idName: id.name,
|
|
3211
|
+
finalDoName: doName,
|
|
3212
|
+
argArrayLength: argArray.length,
|
|
3213
|
+
cleanedArgsLength: cleanedArgs.length
|
|
3214
|
+
});
|
|
3153
3215
|
let context$1 = extractedContext || context.active();
|
|
3154
3216
|
context$1 = setConfig(config, context$1);
|
|
3155
3217
|
const tracer = trace.getTracer("do_rpc_handler");
|
|
3156
|
-
const doName = id.name || id.toString();
|
|
3157
3218
|
const executeRpc = async () => {
|
|
3158
3219
|
const attributes = {
|
|
3159
3220
|
[ATTR_RPC_SYSTEM]: "cloudflare_rpc",
|
|
3160
3221
|
[ATTR_RPC_METHOD]: methodName,
|
|
3161
3222
|
[ATTR_CLOUDFLARE_JSRPC_METHOD]: methodName,
|
|
3162
3223
|
[SemanticAttributes.FAAS_TRIGGER]: "rpc",
|
|
3163
|
-
"do.id": id.toString()
|
|
3164
|
-
"do.name": id.name
|
|
3224
|
+
"do.id": id.toString()
|
|
3165
3225
|
};
|
|
3226
|
+
if (doName) {
|
|
3227
|
+
attributes["do.name"] = doName;
|
|
3228
|
+
}
|
|
3166
3229
|
const options = {
|
|
3167
3230
|
kind: SpanKind.SERVER,
|
|
3168
3231
|
attributes
|
|
3169
3232
|
};
|
|
3170
|
-
const spanName =
|
|
3233
|
+
const spanName = doName ? `${doName}.${methodName}` : `${attributes["do.id"]}.${methodName}`;
|
|
3171
3234
|
return tracer.startActiveSpan(spanName, options, async (span) => {
|
|
3172
3235
|
try {
|
|
3173
3236
|
const bound = target.bind(thisArg);
|
|
@@ -3391,7 +3454,7 @@ function init(config, serviceConfig, propagator) {
|
|
|
3391
3454
|
traceProvider.register();
|
|
3392
3455
|
}
|
|
3393
3456
|
if (config.logs && config.logs.processors.length > 0) {
|
|
3394
|
-
const logsProvider = new WorkerLoggerProvider(config.logs.processors, resource);
|
|
3457
|
+
const logsProvider = new WorkerLoggerProvider(config.logs.processors, resource, config.logs.level);
|
|
3395
3458
|
logsProvider.register();
|
|
3396
3459
|
if (config.logs.instrumentation.instrumentConsole) {
|
|
3397
3460
|
import('./console-Cy5QdByD.js').then(({ instrumentConsole }) => {
|
|
@@ -3699,7 +3762,7 @@ class ConsoleTransport {
|
|
|
3699
3762
|
export(logs, callback) {
|
|
3700
3763
|
try {
|
|
3701
3764
|
for (const log of logs) {
|
|
3702
|
-
this.printLog(log);
|
|
3765
|
+
this.printLog(this.options.transformLog ? this.options.transformLog(log) : log);
|
|
3703
3766
|
}
|
|
3704
3767
|
callback({ code: ExportResultCode.SUCCESS });
|
|
3705
3768
|
} catch (error) {
|