@openapi-typescript-infra/service 4.24.0 → 4.26.0
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/build/error.d.ts +2 -0
- package/build/error.js +2 -0
- package/build/error.js.map +1 -1
- package/build/telemetry/index.js +12 -1
- package/build/telemetry/index.js.map +1 -1
- package/build/telemetry/instrumentations.d.ts +0 -2
- package/build/telemetry/instrumentations.js +0 -21
- package/build/telemetry/instrumentations.js.map +1 -1
- package/build/telemetry/requestLogger.js +2 -0
- package/build/telemetry/requestLogger.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +28 -28
- package/src/error.ts +4 -0
- package/src/telemetry/index.ts +18 -2
- package/src/telemetry/instrumentations.ts +0 -31
- package/src/telemetry/requestLogger.ts +2 -0
package/build/error.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface ServiceErrorSpec {
|
|
|
7
7
|
display_message?: string;
|
|
8
8
|
log_stack?: boolean;
|
|
9
9
|
expected_error?: boolean;
|
|
10
|
+
client_metadata?: Record<string, unknown>;
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
13
|
* An error that gives more structured information to callers. Throw inside a handler as
|
|
@@ -21,6 +22,7 @@ export declare class ServiceError<SLocals extends AnyServiceLocals = ServiceLoca
|
|
|
21
22
|
domain: string;
|
|
22
23
|
display_message?: string;
|
|
23
24
|
log_stack?: boolean;
|
|
25
|
+
client_metadata?: Record<string, unknown>;
|
|
24
26
|
expected_error?: boolean;
|
|
25
27
|
constructor(app: ServiceLike<SLocals>, message: string, spec?: ServiceErrorSpec);
|
|
26
28
|
}
|
package/build/error.js
CHANGED
|
@@ -14,6 +14,8 @@ class ServiceError extends Error {
|
|
|
14
14
|
domain;
|
|
15
15
|
display_message;
|
|
16
16
|
log_stack;
|
|
17
|
+
// Additional data TO BE RETURNED TO THE CLIENT
|
|
18
|
+
client_metadata;
|
|
17
19
|
// If true, this shouldn't be logged as an error, but as an info log.
|
|
18
20
|
// This is common when the error needs to go to the client, but should not
|
|
19
21
|
// take up the valuable mental space of an error log.
|
package/build/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAaA;;;;;;GAMG;AACH,MAAa,YAEX,SAAQ,KAAK;IACN,MAAM,CAAqB;IAE3B,IAAI,CAAU;IAEd,MAAM,CAAS;IAEf,eAAe,CAAU;IAEzB,SAAS,CAAW;IAE3B,+CAA+C;IACxC,eAAe,CAA2B;IAEjD,qEAAqE;IACrE,0EAA0E;IAC1E,qDAAqD;IAC9C,cAAc,CAAW;IAEhC,YAAY,GAAyB,EAAE,OAAe,EAAE,IAAuB;QAC7E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF;AA1BD,oCA0BC"}
|
package/build/telemetry/index.js
CHANGED
|
@@ -28,6 +28,9 @@ exports.getGlobalPrometheusExporter = getGlobalPrometheusExporter;
|
|
|
28
28
|
exports.shutdownGlobalTelemetry = shutdownGlobalTelemetry;
|
|
29
29
|
exports.startWithTelemetry = startWithTelemetry;
|
|
30
30
|
const exporter_trace_otlp_proto_1 = require("@opentelemetry/exporter-trace-otlp-proto");
|
|
31
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
32
|
+
const resource_detector_container_1 = require("@opentelemetry/resource-detector-container");
|
|
33
|
+
const resource_detector_gcp_1 = require("@opentelemetry/resource-detector-gcp");
|
|
31
34
|
const opentelemetry = __importStar(require("@opentelemetry/sdk-node"));
|
|
32
35
|
const exporter_prometheus_1 = require("@opentelemetry/exporter-prometheus");
|
|
33
36
|
const instrumentations_1 = require("./instrumentations");
|
|
@@ -65,9 +68,17 @@ async function startGlobalTelemetry(serviceName) {
|
|
|
65
68
|
serviceName,
|
|
66
69
|
autoDetectResources: false,
|
|
67
70
|
traceExporter: getExporter(),
|
|
68
|
-
|
|
71
|
+
resourceDetectors: [
|
|
72
|
+
resources_1.envDetectorSync,
|
|
73
|
+
resources_1.hostDetectorSync,
|
|
74
|
+
resources_1.osDetectorSync,
|
|
75
|
+
resources_1.processDetectorSync,
|
|
76
|
+
resource_detector_container_1.containerDetector,
|
|
77
|
+
resource_detector_gcp_1.gcpDetector,
|
|
78
|
+
],
|
|
69
79
|
metricReader: prometheusExporter,
|
|
70
80
|
instrumentations,
|
|
81
|
+
logRecordProcessors: [],
|
|
71
82
|
views: [
|
|
72
83
|
new opentelemetry.metrics.View({
|
|
73
84
|
instrumentName: 'http_request_duration_seconds',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,oDAgCC;AAED,kEAEC;AAED,0DAIC;AAED,gDA2BC;AA9HD,wFAA6E;AAC7E,wDAKkC;AAClC,4FAA+E;AAC/E,gFAAmE;AACnE,uEAAyD;AACzD,4EAAwE;AAYxE,yDAA6D;AAC7D,mDAAoD;AAEpD,+DAA+D;AAC/D,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAEnH,SAAS,WAAW;IAClB,IACE,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB;QAClC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAC5B,CAAC;QACD,OAAO,IAAI,6CAAiB,CAAC;YAC3B,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,qCAAqC;SACxE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;QAC7C,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,iCAAiB,EAAE,CAAC;AACjC,CAAC;AAED,IAAI,kBAAkD,CAAC;AACvD,IAAI,YAA+C,CAAC;AAEpD;;;;;;;GAOG;AACI,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IAC5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,IAAI,wCAAkB,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,gBAAgB,GAAG,IAAA,0CAAuB,GAAE,CAAC;QACnD,YAAY,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC;YACvC,WAAW;YACX,mBAAmB,EAAE,KAAK;YAC1B,aAAa,EAAE,WAAW,EAAE;YAC5B,iBAAiB,EAAE;gBACjB,2BAAe;gBACf,4BAAgB;gBAChB,0BAAc;gBACd,+BAAmB;gBACnB,+CAAiB;gBACjB,mCAAW;aACZ;YACD,YAAY,EAAE,kBAAkB;YAChC,gBAAgB;YAChB,mBAAmB,EAAE,EAAE;YACvB,KAAK,EAAE;gBACL,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC7B,cAAc,EAAE,+BAA+B;oBAC/C,cAAc,EAAE,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS;oBAC9D,WAAW,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,kCAAkC,CACvE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAChC,IAAI,CACL;iBACF,CAAC;aACH;SACF,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAgB,2BAA2B;IACzC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAEM,KAAK,UAAU,uBAAuB;IAC3C,MAAM,YAAY,EAAE,QAAQ,EAAE,CAAC;IAC/B,YAAY,GAAG,SAAS,CAAC;IACzB,kBAAkB,GAAG,SAAS,CAAC;AACjC,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAGtC,OAAqC;IACrC,MAAM,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,oFAAoF;IACpF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAG3D,CAAC;IACF,yGAAyG;IACzG,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;IAC/D,MAAM,YAAY,GAAiC;QACjD,GAAG,OAAO;QACV,OAAO;QACP,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAsB;KAClD,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,uBAAuB,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -8,7 +8,6 @@ import { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis';
|
|
|
8
8
|
import { NetInstrumentation } from '@opentelemetry/instrumentation-net';
|
|
9
9
|
import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';
|
|
10
10
|
import { PinoInstrumentation } from '@opentelemetry/instrumentation-pino';
|
|
11
|
-
import { Resource } from '@opentelemetry/resources';
|
|
12
11
|
declare const InstrumentationMap: {
|
|
13
12
|
'@opentelemetry/instrumentation-http': typeof HttpInstrumentation;
|
|
14
13
|
'@opentelemetry/instrumentation-dns': typeof DnsInstrumentation;
|
|
@@ -25,5 +24,4 @@ export type InstrumentationConfigMap = {
|
|
|
25
24
|
[Name in keyof typeof InstrumentationMap]?: ConfigArg<(typeof InstrumentationMap)[Name]>;
|
|
26
25
|
};
|
|
27
26
|
export declare function getAutoInstrumentations(inputConfigs?: InstrumentationConfigMap): Instrumentation[];
|
|
28
|
-
export declare function getResource(): Promise<Resource>;
|
|
29
27
|
export {};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAutoInstrumentations = getAutoInstrumentations;
|
|
4
|
-
exports.getResource = getResource;
|
|
5
4
|
const instrumentation_dns_1 = require("@opentelemetry/instrumentation-dns");
|
|
6
5
|
const instrumentation_express_1 = require("@opentelemetry/instrumentation-express");
|
|
7
6
|
const instrumentation_undici_1 = require("@opentelemetry/instrumentation-undici");
|
|
@@ -11,9 +10,6 @@ const instrumentation_ioredis_1 = require("@opentelemetry/instrumentation-ioredi
|
|
|
11
10
|
const instrumentation_net_1 = require("@opentelemetry/instrumentation-net");
|
|
12
11
|
const instrumentation_pg_1 = require("@opentelemetry/instrumentation-pg");
|
|
13
12
|
const instrumentation_pino_1 = require("@opentelemetry/instrumentation-pino");
|
|
14
|
-
const resource_detector_container_1 = require("@opentelemetry/resource-detector-container");
|
|
15
|
-
const resource_detector_gcp_1 = require("@opentelemetry/resource-detector-gcp");
|
|
16
|
-
const resources_1 = require("@opentelemetry/resources");
|
|
17
13
|
const InstrumentationMap = {
|
|
18
14
|
'@opentelemetry/instrumentation-http': instrumentation_http_1.HttpInstrumentation,
|
|
19
15
|
'@opentelemetry/instrumentation-dns': instrumentation_dns_1.DnsInstrumentation,
|
|
@@ -43,21 +39,4 @@ function getAutoInstrumentations(inputConfigs = {}) {
|
|
|
43
39
|
})
|
|
44
40
|
.filter((i) => !!i);
|
|
45
41
|
}
|
|
46
|
-
// Async function to get combined resources
|
|
47
|
-
async function getResource() {
|
|
48
|
-
const syncDetectors = [
|
|
49
|
-
resources_1.envDetectorSync,
|
|
50
|
-
resources_1.hostDetectorSync,
|
|
51
|
-
resources_1.osDetectorSync,
|
|
52
|
-
resources_1.processDetectorSync,
|
|
53
|
-
];
|
|
54
|
-
const asyncDetectors = [
|
|
55
|
-
resource_detector_container_1.containerDetector,
|
|
56
|
-
resource_detector_gcp_1.gcpDetector,
|
|
57
|
-
];
|
|
58
|
-
const asyncResources = await (0, resources_1.detectResources)({ detectors: asyncDetectors });
|
|
59
|
-
const syncResources = (0, resources_1.detectResourcesSync)({ detectors: syncDetectors });
|
|
60
|
-
// Combine async and sync resources
|
|
61
|
-
return syncResources.merge(asyncResources);
|
|
62
|
-
}
|
|
63
42
|
//# sourceMappingURL=instrumentations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentations.js","sourceRoot":"","sources":["../../src/telemetry/instrumentations.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"instrumentations.js","sourceRoot":"","sources":["../../src/telemetry/instrumentations.ts"],"names":[],"mappings":";;AA6BA,0DAmBC;AA/CD,4EAAwE;AACxE,oFAAgF;AAChF,kFAA8E;AAC9E,8FAAyF;AACzF,8EAA0E;AAC1E,oFAAgF;AAChF,4EAAwE;AACxE,0EAAsE;AACtE,8EAA0E;AAE1E,MAAM,kBAAkB,GAAG;IACzB,qCAAqC,EAAE,0CAAmB;IAC1D,oCAAoC,EAAE,wCAAkB;IACxD,wCAAwC,EAAE,gDAAsB;IAChE,uCAAuC,EAAE,8CAAqB;IAC9D,6CAA6C,EAAE,yDAA0B;IACzE,wCAAwC,EAAE,gDAAsB;IAChE,oCAAoC,EAAE,wCAAkB;IACxD,mCAAmC,EAAE,sCAAiB;IACtD,qCAAqC,EAAE,0CAAmB;CAC3D,CAAC;AAQF,SAAgB,uBAAuB,CACrC,eAAyC,EAAE;IAE3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAA2C,CAAC;IACvF,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1C,qDAAqD;QACrD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5C,IAAI,CAAC;YACH,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAsB,CAAC;AAC7C,CAAC"}
|
|
@@ -146,6 +146,7 @@ function errorHandlerMiddleware(app, histogram, unnest, returnError) {
|
|
|
146
146
|
domain: body.domain,
|
|
147
147
|
code: body.code,
|
|
148
148
|
display_message: body.display_message,
|
|
149
|
+
...loggable.client_metadata,
|
|
149
150
|
};
|
|
150
151
|
}
|
|
151
152
|
// Set the status to error, even if we aren't going to render the error.
|
|
@@ -159,6 +160,7 @@ function errorHandlerMiddleware(app, histogram, unnest, returnError) {
|
|
|
159
160
|
message: loggable.message,
|
|
160
161
|
domain: loggable.domain,
|
|
161
162
|
display_message: loggable.display_message,
|
|
163
|
+
...loggable.client_metadata,
|
|
162
164
|
});
|
|
163
165
|
}
|
|
164
166
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestLogger.js","sourceRoot":"","sources":["../../src/telemetry/requestLogger.ts"],"names":[],"mappings":";;;;;AA+HA,4CA0DC;AAED,
|
|
1
|
+
{"version":3,"file":"requestLogger.js","sourceRoot":"","sources":["../../src/telemetry/requestLogger.ts"],"names":[],"mappings":"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"}
|