@pipeline-builder/api-server 3.4.108 → 3.4.110
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/lib/api/tracing.d.ts +0 -15
- package/lib/api/tracing.js +9 -61
- package/lib/index.d.ts +2 -2
- package/lib/index.js +3 -3
- package/lib/otel-bootstrap.js +4 -4
- package/package.json +15 -15
package/lib/api/tracing.d.ts
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Initialize OpenTelemetry tracing with OTLP HTTP exporter.
|
|
3
|
-
* Idempotent — safe to call multiple times. Called automatically by
|
|
4
|
-
* `createApp()` so every service gets tracing when `OTEL_TRACING_ENABLED=true`.
|
|
5
|
-
*
|
|
6
|
-
* Env vars:
|
|
7
|
-
* OTEL_TRACING_ENABLED=true|false — master switch
|
|
8
|
-
* OTEL_EXPORTER_OTLP_ENDPOINT=URL — collector endpoint (default http://localhost:4318/v1/traces)
|
|
9
|
-
* OTEL_SERVICE_NAME=my-service — overrides the service label
|
|
10
|
-
*
|
|
11
|
-
* When enabled, Node SDK registers W3C trace-context propagation by default.
|
|
12
|
-
* Outbound HTTP (fetch/axios/undici) carries `traceparent` automatically;
|
|
13
|
-
* inbound HTTP extracts + re-uses it so traces span services end-to-end.
|
|
14
|
-
*/
|
|
15
|
-
export declare function initTracing(serviceName: string): void;
|
|
16
1
|
/**
|
|
17
2
|
* Shutdown the OpenTelemetry SDK gracefully.
|
|
18
3
|
*/
|
package/lib/api/tracing.js
CHANGED
|
@@ -1,65 +1,14 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { trace } from '@opentelemetry/api';
|
|
4
|
-
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
|
|
5
|
-
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
6
|
-
import { resourceFromAttributes } from '@opentelemetry/resources';
|
|
7
4
|
import { NodeSDK } from '@opentelemetry/sdk-node';
|
|
8
5
|
import { createLogger } from '@pipeline-builder/api-core';
|
|
9
|
-
import { Config } from '@pipeline-builder/pipeline-core';
|
|
10
6
|
const logger = createLogger('tracing');
|
|
7
|
+
// Module-local SDK handle. Production services start tracing through the
|
|
8
|
+
// `otel-bootstrap.js` `--import` preload, which registers its own SDK on the
|
|
9
|
+
// global provider — so this stays null and `shutdownTracing()` is a no-op.
|
|
10
|
+
// It is retained because `server.ts` calls `shutdownTracing()` on shutdown.
|
|
11
11
|
let sdk = null;
|
|
12
|
-
/**
|
|
13
|
-
* Initialize OpenTelemetry tracing with OTLP HTTP exporter.
|
|
14
|
-
* Idempotent — safe to call multiple times. Called automatically by
|
|
15
|
-
* `createApp()` so every service gets tracing when `OTEL_TRACING_ENABLED=true`.
|
|
16
|
-
*
|
|
17
|
-
* Env vars:
|
|
18
|
-
* OTEL_TRACING_ENABLED=true|false — master switch
|
|
19
|
-
* OTEL_EXPORTER_OTLP_ENDPOINT=URL — collector endpoint (default http://localhost:4318/v1/traces)
|
|
20
|
-
* OTEL_SERVICE_NAME=my-service — overrides the service label
|
|
21
|
-
*
|
|
22
|
-
* When enabled, Node SDK registers W3C trace-context propagation by default.
|
|
23
|
-
* Outbound HTTP (fetch/axios/undici) carries `traceparent` automatically;
|
|
24
|
-
* inbound HTTP extracts + re-uses it so traces span services end-to-end.
|
|
25
|
-
*/
|
|
26
|
-
export function initTracing(serviceName) {
|
|
27
|
-
const { tracing } = Config.getAny('observability');
|
|
28
|
-
if (!tracing.enabled) {
|
|
29
|
-
logger.debug('OpenTelemetry tracing disabled (set OTEL_TRACING_ENABLED=true to enable)');
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
if (sdk) {
|
|
33
|
-
logger.debug('OpenTelemetry already initialized');
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const effectiveName = process.env.OTEL_SERVICE_NAME || serviceName;
|
|
37
|
-
sdk = new NodeSDK({
|
|
38
|
-
resource: resourceFromAttributes({
|
|
39
|
-
'service.name': effectiveName,
|
|
40
|
-
'service.namespace': 'pipeline-builder',
|
|
41
|
-
'deployment.environment': process.env.NODE_ENV ?? 'development',
|
|
42
|
-
}),
|
|
43
|
-
traceExporter: new OTLPTraceExporter({ url: tracing.endpoint }),
|
|
44
|
-
// Auto-instrument incoming/outgoing HTTP (and express) so every request
|
|
45
|
-
// gets a server span — that span's trace id is what `currentTraceId()`
|
|
46
|
-
// returns for enriching audit events + structured logs. `fs` is disabled
|
|
47
|
-
// because file-IO spans are pure noise for request-level correlation.
|
|
48
|
-
instrumentations: [
|
|
49
|
-
getNodeAutoInstrumentations({
|
|
50
|
-
'@opentelemetry/instrumentation-fs': { enabled: false },
|
|
51
|
-
}),
|
|
52
|
-
],
|
|
53
|
-
});
|
|
54
|
-
sdk.start();
|
|
55
|
-
logger.info(`OpenTelemetry tracing initialized for ${effectiveName}`, { endpoint: tracing.endpoint });
|
|
56
|
-
// Graceful shutdown on common signals so buffered spans flush before exit.
|
|
57
|
-
const shutdown = () => {
|
|
58
|
-
void shutdownTracing().catch(err => logger.warn('Tracing shutdown error', { error: String(err) }));
|
|
59
|
-
};
|
|
60
|
-
process.once('SIGTERM', shutdown);
|
|
61
|
-
process.once('SIGINT', shutdown);
|
|
62
|
-
}
|
|
63
12
|
/**
|
|
64
13
|
* Shutdown the OpenTelemetry SDK gracefully.
|
|
65
14
|
*/
|
|
@@ -76,11 +25,10 @@ export async function shutdownTracing() {
|
|
|
76
25
|
* operator can correlate a request across services via its trace ID.
|
|
77
26
|
*/
|
|
78
27
|
export function currentTraceId() {
|
|
79
|
-
// Read the globally-registered tracer provider's active span
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
// is no active span.
|
|
28
|
+
// Read the globally-registered tracer provider's active span. The SDK is
|
|
29
|
+
// started by the `otel-bootstrap.js` `--import` preload, which registers the
|
|
30
|
+
// global provider via @opentelemetry/api. Returns undefined when tracing is
|
|
31
|
+
// disabled / there is no active span.
|
|
84
32
|
return trace.getActiveSpan()?.spanContext()?.traceId;
|
|
85
33
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvdHJhY2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV2Qyx5RUFBeUU7QUFDekUsNkVBQTZFO0FBQzdFLDJFQUEyRTtBQUMzRSw0RUFBNEU7QUFDNUUsSUFBSSxHQUFHLEdBQW1CLElBQUksQ0FBQztBQUUvQjs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZTtJQUNuQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsTUFBTSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckIsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYztJQUM1Qix5RUFBeUU7SUFDekUsNkVBQTZFO0lBQzdFLDRFQUE0RTtJQUM1RSxzQ0FBc0M7SUFDdEMsT0FBTyxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgdHJhY2UgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuaW1wb3J0IHsgTm9kZVNESyB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Nkay1ub2RlJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCd0cmFjaW5nJyk7XG5cbi8vIE1vZHVsZS1sb2NhbCBTREsgaGFuZGxlLiBQcm9kdWN0aW9uIHNlcnZpY2VzIHN0YXJ0IHRyYWNpbmcgdGhyb3VnaCB0aGVcbi8vIGBvdGVsLWJvb3RzdHJhcC5qc2AgYC0taW1wb3J0YCBwcmVsb2FkLCB3aGljaCByZWdpc3RlcnMgaXRzIG93biBTREsgb24gdGhlXG4vLyBnbG9iYWwgcHJvdmlkZXIg4oCUIHNvIHRoaXMgc3RheXMgbnVsbCBhbmQgYHNodXRkb3duVHJhY2luZygpYCBpcyBhIG5vLW9wLlxuLy8gSXQgaXMgcmV0YWluZWQgYmVjYXVzZSBgc2VydmVyLnRzYCBjYWxscyBgc2h1dGRvd25UcmFjaW5nKClgIG9uIHNodXRkb3duLlxubGV0IHNkazogTm9kZVNESyB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIFNodXRkb3duIHRoZSBPcGVuVGVsZW1ldHJ5IFNESyBncmFjZWZ1bGx5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2h1dGRvd25UcmFjaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoc2RrKSB7XG4gICAgYXdhaXQgc2RrLnNodXRkb3duKCk7XG4gICAgc2RrID0gbnVsbDtcbiAgICBsb2dnZXIuaW5mbygnT3BlblRlbGVtZXRyeSB0cmFjaW5nIHNodXQgZG93bicpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCBhY3RpdmUgdHJhY2UgSUQsIG9yIHVuZGVmaW5lZCB3aGVuIHRyYWNpbmcgaXNcbiAqIGRpc2FibGVkIC8gbm8gYWN0aXZlIHNwYW4uIFVzZWZ1bCBmb3IgZW5yaWNoaW5nIHN0cnVjdHVyZWQgbG9ncyBzbyBhblxuICogb3BlcmF0b3IgY2FuIGNvcnJlbGF0ZSBhIHJlcXVlc3QgYWNyb3NzIHNlcnZpY2VzIHZpYSBpdHMgdHJhY2UgSUQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXJyZW50VHJhY2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyBSZWFkIHRoZSBnbG9iYWxseS1yZWdpc3RlcmVkIHRyYWNlciBwcm92aWRlcidzIGFjdGl2ZSBzcGFuLiBUaGUgU0RLIGlzXG4gIC8vIHN0YXJ0ZWQgYnkgdGhlIGBvdGVsLWJvb3RzdHJhcC5qc2AgYC0taW1wb3J0YCBwcmVsb2FkLCB3aGljaCByZWdpc3RlcnMgdGhlXG4gIC8vIGdsb2JhbCBwcm92aWRlciB2aWEgQG9wZW50ZWxlbWV0cnkvYXBpLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIHRyYWNpbmcgaXNcbiAgLy8gZGlzYWJsZWQgLyB0aGVyZSBpcyBubyBhY3RpdmUgc3Bhbi5cbiAgcmV0dXJuIHRyYWNlLmdldEFjdGl2ZVNwYW4oKT8uc3BhbkNvbnRleHQoKT8udHJhY2VJZDtcbn1cbiJdfQ==
|
package/lib/index.d.ts
CHANGED
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
* **Middleware**
|
|
11
11
|
* - attachRequestContext / createRequestContext — attaches identity + logging to each request
|
|
12
12
|
* - requireOrgId — validates organization ID is present on the request
|
|
13
|
+
* - withTenantContext — opens the RLS tenant scope for the request
|
|
13
14
|
* - checkQuota — quota enforcement middleware
|
|
14
|
-
* - etagMiddleware — ETag-based conditional response support
|
|
15
15
|
* - idempotencyMiddleware — idempotent request handling
|
|
16
|
-
* -
|
|
16
|
+
* - createProtectedRoute / createAuthenticatedWithOrgRoute — composable middleware chains
|
|
17
17
|
*
|
|
18
18
|
* **Route Helpers**
|
|
19
19
|
* - withRoute — wraps async route handlers with context extraction, orgId validation, and error handling
|
package/lib/index.js
CHANGED
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
* **Middleware**
|
|
13
13
|
* - attachRequestContext / createRequestContext — attaches identity + logging to each request
|
|
14
14
|
* - requireOrgId — validates organization ID is present on the request
|
|
15
|
+
* - withTenantContext — opens the RLS tenant scope for the request
|
|
15
16
|
* - checkQuota — quota enforcement middleware
|
|
16
|
-
* - etagMiddleware — ETag-based conditional response support
|
|
17
17
|
* - idempotencyMiddleware — idempotent request handling
|
|
18
|
-
* -
|
|
18
|
+
* - createProtectedRoute / createAuthenticatedWithOrgRoute — composable middleware chains
|
|
19
19
|
*
|
|
20
20
|
* **Route Helpers**
|
|
21
21
|
* - withRoute — wraps async route handlers with context extraction, orgId validation, and error handling
|
|
@@ -32,4 +32,4 @@
|
|
|
32
32
|
export * from './api/index.js';
|
|
33
33
|
// HTTP Utilities
|
|
34
34
|
export * from './http/index.js';
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgscUJBQXFCO0FBQ3JCLGNBQWMsZ0JBQWdCLENBQUM7QUFFL0IsaUJBQWlCO0FBQ2pCLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBAbW9kdWxlIEBwaXBlbGluZS1idWlsZGVyL2FwaS1zZXJ2ZXJcbiAqXG4gKiBFeHByZXNzIHNlcnZlciBpbmZyYXN0cnVjdHVyZSBhbmQgcmVxdWVzdCBsaWZlY3ljbGUgdXRpbGl0aWVzLlxuICpcbiAqICoqQXBwIEZhY3RvcnkqKlxuICogLSBjcmVhdGVBcHAg4oCUIGNyZWF0ZXMgYSBjb25maWd1cmVkIEV4cHJlc3MgYXBwIHdpdGggQ09SUywgSGVsbWV0LCByYXRlIGxpbWl0aW5nXG4gKiAtIHJ1blNlcnZlciwgc3RhcnRTZXJ2ZXIg4oCUIHNlcnZlciBsaWZlY3ljbGUgd2l0aCBncmFjZWZ1bCBzaHV0ZG93blxuICpcbiAqICoqTWlkZGxld2FyZSoqXG4gKiAtIGF0dGFjaFJlcXVlc3RDb250ZXh0IC8gY3JlYXRlUmVxdWVzdENvbnRleHQg4oCUIGF0dGFjaGVzIGlkZW50aXR5ICsgbG9nZ2luZyB0byBlYWNoIHJlcXVlc3RcbiAqIC0gcmVxdWlyZU9yZ0lkIOKAlCB2YWxpZGF0ZXMgb3JnYW5pemF0aW9uIElEIGlzIHByZXNlbnQgb24gdGhlIHJlcXVlc3RcbiAqIC0gd2l0aFRlbmFudENvbnRleHQg4oCUIG9wZW5zIHRoZSBSTFMgdGVuYW50IHNjb3BlIGZvciB0aGUgcmVxdWVzdFxuICogLSBjaGVja1F1b3RhIOKAlCBxdW90YSBlbmZvcmNlbWVudCBtaWRkbGV3YXJlXG4gKiAtIGlkZW1wb3RlbmN5TWlkZGxld2FyZSDigJQgaWRlbXBvdGVudCByZXF1ZXN0IGhhbmRsaW5nXG4gKiAtIGNyZWF0ZVByb3RlY3RlZFJvdXRlIC8gY3JlYXRlQXV0aGVudGljYXRlZFdpdGhPcmdSb3V0ZSDigJQgY29tcG9zYWJsZSBtaWRkbGV3YXJlIGNoYWluc1xuICpcbiAqICoqUm91dGUgSGVscGVycyoqXG4gKiAtIHdpdGhSb3V0ZSDigJQgd3JhcHMgYXN5bmMgcm91dGUgaGFuZGxlcnMgd2l0aCBjb250ZXh0IGV4dHJhY3Rpb24sIG9yZ0lkIHZhbGlkYXRpb24sIGFuZCBlcnJvciBoYW5kbGluZ1xuICogLSBnZXRDb250ZXh0IOKAlCByZXRyaWV2ZXMgUmVxdWVzdENvbnRleHQgZnJvbSB0aGUgRXhwcmVzcyByZXF1ZXN0XG4gKiAtIFJvdXRlQ29udGV4dCwgUmVxdWVzdENvbnRleHQg4oCUIHJvdXRlIGFuZCByZXF1ZXN0IGNvbnRleHQgdHlwZXNcbiAqXG4gKiAqKlNTRSoqXG4gKiAtIFNTRU1hbmFnZXIg4oCUIFNlcnZlci1TZW50IEV2ZW50cyBjb25uZWN0aW9uIG1hbmFnZXJcbiAqXG4gKiAqKk9ic2VydmFiaWxpdHkqKlxuICogLSBUcmFjaW5nIGFuZCBtZXRyaWNzIGNvbGxlY3Rpb24gdXRpbGl0aWVzXG4gKi9cblxuLy8gQVBJIEluZnJhc3RydWN0dXJlXG5leHBvcnQgKiBmcm9tICcuL2FwaS9pbmRleC5qcyc7XG5cbi8vIEhUVFAgVXRpbGl0aWVzXG5leHBvcnQgKiBmcm9tICcuL2h0dHAvaW5kZXguanMnOyJdfQ==
|
package/lib/otel-bootstrap.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* node --import @pipeline-builder/api-server/lib/otel-bootstrap.js index.js
|
|
9
9
|
* (see each service's Dockerfile CMD).
|
|
10
10
|
*
|
|
11
|
-
* Why a preload and not
|
|
11
|
+
* Why a preload and not a programmatic SDK start from createApp/index.ts:
|
|
12
12
|
* OpenTelemetry auto-instrumentation patches modules as they load. If
|
|
13
13
|
* `http`/`express` are already loaded when the SDK starts, the HTTP server is
|
|
14
14
|
* never wrapped, so no inbound server span — and therefore no trace id — is ever
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
* `process.env` directly. It must NOT import this package's own barrel (or
|
|
22
22
|
* api-core / pipeline-core), because those transitively require express — which
|
|
23
23
|
* would load express before the SDK starts and defeat the preload. This is why
|
|
24
|
-
* the bootstrap lives in its own entrypoint file rather than
|
|
25
|
-
*
|
|
24
|
+
* the bootstrap lives in its own entrypoint file rather than starting the SDK
|
|
25
|
+
* from within `api/tracing.ts`.
|
|
26
26
|
*
|
|
27
27
|
* No-op unless `OTEL_TRACING_ENABLED=true`. Service name comes from
|
|
28
28
|
* `OTEL_SERVICE_NAME` (falling back to `SERVICE_NAME`), which every service
|
|
@@ -72,4 +72,4 @@ if (process.env.OTEL_TRACING_ENABLED === 'true') {
|
|
|
72
72
|
process.once('SIGTERM', shutdown);
|
|
73
73
|
process.once('SIGINT', shutdown);
|
|
74
74
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RlbC1ib290c3RyYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvb3RlbC1ib290c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixLQUFLLE1BQU0sRUFBRSxDQUFDO0lBQ2hELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLElBQUksaUNBQWlDLENBQUM7SUFDOUYsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUM7SUFFdkYsZ0ZBQWdGO0lBQ2hGLHdFQUF3RTtJQUN4RSw4RUFBOEU7SUFDOUUsc0JBQXNCO0lBQ3RCLElBQUksQ0FBQztRQUNILFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2Isc0NBQXNDO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaURBQWlELEVBQUcsR0FBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUN0QixRQUFRLEVBQUUsc0JBQXNCLENBQUM7WUFDL0IsY0FBYyxFQUFFLFdBQVc7WUFDM0IsbUJBQW1CLEVBQUUsa0JBQWtCO1lBQ3ZDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLGFBQWE7U0FDaEUsQ0FBQztRQUNGLGFBQWEsRUFBRSxJQUFJLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ3ZELHNFQUFzRTtRQUN0RSwyRUFBMkU7UUFDM0Usd0VBQXdFO1FBQ3hFLGdCQUFnQixFQUFFO1lBQ2hCLDJCQUEyQixDQUFDO2dCQUMxQixtQ0FBbUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7YUFDeEQsQ0FBQztTQUNIO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ1osc0NBQXNDO0lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLFdBQVcsT0FBTyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNwQixLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNoYXJlZCBPcGVuVGVsZW1ldHJ5IHByZWxvYWQgYm9vdHN0cmFwIGZvciBldmVyeSBQaXBlbGluZSBCdWlsZGVyIHNlcnZpY2UuXG4gKlxuICogUHJlbG9hZCBpdCBCRUZPUkUgdGhlIGFwcCdzIG93biBjb2RlIHdpdGggKHNlcnZpY2VzIGFyZSBFU00sIHNvIGAtLWltcG9ydGAsXG4gKiBub3QgdGhlIENKUyBgLXJgKTpcbiAqICAgbm9kZSAtLWltcG9ydCBAcGlwZWxpbmUtYnVpbGRlci9hcGktc2VydmVyL2xpYi9vdGVsLWJvb3RzdHJhcC5qcyBpbmRleC5qc1xuICogKHNlZSBlYWNoIHNlcnZpY2UncyBEb2NrZXJmaWxlIENNRCkuXG4gKlxuICogV2h5IGEgcHJlbG9hZCBhbmQgbm90IGEgcHJvZ3JhbW1hdGljIFNESyBzdGFydCBmcm9tIGNyZWF0ZUFwcC9pbmRleC50czpcbiAqIE9wZW5UZWxlbWV0cnkgYXV0by1pbnN0cnVtZW50YXRpb24gcGF0Y2hlcyBtb2R1bGVzIGFzIHRoZXkgbG9hZC4gSWZcbiAqIGBodHRwYC9gZXhwcmVzc2AgYXJlIGFscmVhZHkgbG9hZGVkIHdoZW4gdGhlIFNESyBzdGFydHMsIHRoZSBIVFRQIHNlcnZlciBpc1xuICogbmV2ZXIgd3JhcHBlZCwgc28gbm8gaW5ib3VuZCBzZXJ2ZXIgc3BhbiDigJQgYW5kIHRoZXJlZm9yZSBubyB0cmFjZSBpZCDigJQgaXMgZXZlclxuICogY3JlYXRlZC4gVGhlIGAtLWltcG9ydGAgcHJlbG9hZCBydW5zIGZ1bGx5IGJlZm9yZSBgaW5kZXguanNgIGxvYWRzIGFueVxuICogaW5zdHJ1bWVudGVkIG1vZHVsZS4gQmVjYXVzZSB0aGUgc2VydmljZXMgYXJlIEVTTSwgd2UgYWxzbyByZWdpc3RlciB0aGVcbiAqIGltcG9ydC1pbi10aGUtbWlkZGxlIEVTTSBsb2FkZXIgaG9vayBiZWxvdyDigJQgcmVxdWlyZS1pbi10aGUtbWlkZGxlIGFsb25lIG9ubHlcbiAqIHBhdGNoZXMgQ0pTIGByZXF1aXJlKClgLCB3aGljaCBhbiBFU00gYXBwIG5ldmVyIHVzZXMuXG4gKlxuICogU2VsZi1jb250YWluZWQgb24gcHVycG9zZTogaXQgaW1wb3J0cyBPTkxZIE9wZW5UZWxlbWV0cnkgcGFja2FnZXMgYW5kIHJlYWRzXG4gKiBgcHJvY2Vzcy5lbnZgIGRpcmVjdGx5LiBJdCBtdXN0IE5PVCBpbXBvcnQgdGhpcyBwYWNrYWdlJ3Mgb3duIGJhcnJlbCAob3JcbiAqIGFwaS1jb3JlIC8gcGlwZWxpbmUtY29yZSksIGJlY2F1c2UgdGhvc2UgdHJhbnNpdGl2ZWx5IHJlcXVpcmUgZXhwcmVzcyDigJQgd2hpY2hcbiAqIHdvdWxkIGxvYWQgZXhwcmVzcyBiZWZvcmUgdGhlIFNESyBzdGFydHMgYW5kIGRlZmVhdCB0aGUgcHJlbG9hZC4gVGhpcyBpcyB3aHlcbiAqIHRoZSBib290c3RyYXAgbGl2ZXMgaW4gaXRzIG93biBlbnRyeXBvaW50IGZpbGUgcmF0aGVyIHRoYW4gc3RhcnRpbmcgdGhlIFNES1xuICogZnJvbSB3aXRoaW4gYGFwaS90cmFjaW5nLnRzYC5cbiAqXG4gKiBOby1vcCB1bmxlc3MgYE9URUxfVFJBQ0lOR19FTkFCTEVEPXRydWVgLiBTZXJ2aWNlIG5hbWUgY29tZXMgZnJvbVxuICogYE9URUxfU0VSVklDRV9OQU1FYCAoZmFsbGluZyBiYWNrIHRvIGBTRVJWSUNFX05BTUVgKSwgd2hpY2ggZXZlcnkgc2VydmljZVxuICogYWxyZWFkeSBzZXRzIGluIGl0cyBkZXBsb3kgZW52LlxuICovXG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gJ25vZGU6bW9kdWxlJztcbmltcG9ydCB7IGdldE5vZGVBdXRvSW5zdHJ1bWVudGF0aW9ucyB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2F1dG8taW5zdHJ1bWVudGF0aW9ucy1ub2RlJztcbmltcG9ydCB7IE9UTFBUcmFjZUV4cG9ydGVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvZXhwb3J0ZXItdHJhY2Utb3RscC1odHRwJztcbmltcG9ydCB7IHJlc291cmNlRnJvbUF0dHJpYnV0ZXMgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgTm9kZVNESyB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Nkay1ub2RlJztcblxuaWYgKHByb2Nlc3MuZW52Lk9URUxfVFJBQ0lOR19FTkFCTEVEID09PSAndHJ1ZScpIHtcbiAgY29uc3QgZW5kcG9pbnQgPSBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQgfHwgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS90cmFjZXMnO1xuICBjb25zdCBzZXJ2aWNlTmFtZSA9IHByb2Nlc3MuZW52Lk9URUxfU0VSVklDRV9OQU1FIHx8IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAnYXBpJztcblxuICAvLyBFbmFibGUgRVNNIGluc3RydW1lbnRhdGlvbjogcmVnaXN0ZXIgdGhlIGltcG9ydC1pbi10aGUtbWlkZGxlIGhvb2sgYmVmb3JlIGFueVxuICAvLyBpbnN0cnVtZW50ZWQgbW9kdWxlIGlzIGltcG9ydGVkLiBXcmFwcGVkIHNvIGEgaG9vay1yZXNvbHV0aW9uIGZhaWx1cmVcbiAgLy8gZGVncmFkZXMgdG8gbm8taW5zdHJ1bWVudGF0aW9uICh0b2RheSdzIGJlaGF2aW91cikgcmF0aGVyIHRoYW4gY3Jhc2hpbmcgdGhlXG4gIC8vIHNlcnZpY2Ugb24gc3RhcnR1cC5cbiAgdHJ5IHtcbiAgICByZWdpc3RlcignQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uL2hvb2subWpzJywgaW1wb3J0Lm1ldGEudXJsKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oJ1tvdGVsXSBFU00gaW5zdHJ1bWVudGF0aW9uIGhvb2sgbm90IHJlZ2lzdGVyZWQ6JywgKGVyciBhcyBFcnJvcikubWVzc2FnZSk7XG4gIH1cblxuICBjb25zdCBzZGsgPSBuZXcgTm9kZVNESyh7XG4gICAgcmVzb3VyY2U6IHJlc291cmNlRnJvbUF0dHJpYnV0ZXMoe1xuICAgICAgJ3NlcnZpY2UubmFtZSc6IHNlcnZpY2VOYW1lLFxuICAgICAgJ3NlcnZpY2UubmFtZXNwYWNlJzogJ3BpcGVsaW5lLWJ1aWxkZXInLFxuICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQnOiBwcm9jZXNzLmVudi5OT0RFX0VOViA/PyAnZGV2ZWxvcG1lbnQnLFxuICAgIH0pLFxuICAgIHRyYWNlRXhwb3J0ZXI6IG5ldyBPVExQVHJhY2VFeHBvcnRlcih7IHVybDogZW5kcG9pbnQgfSksXG4gICAgLy8gYGZzYCBzcGFucyBhcmUgbm9pc2UgZm9yIHJlcXVlc3QtbGV2ZWwgY29ycmVsYXRpb247IGV2ZXJ5dGhpbmcgZWxzZVxuICAgIC8vIChodHRwL2V4cHJlc3MvbW9uZ28vcGcv4oCmKSBpcyBhdXRvLWluc3RydW1lbnRlZCBzbyBpbmJvdW5kIHJlcXVlc3RzIGdldCBhXG4gICAgLy8gc2VydmVyIHNwYW4gd2hvc2UgdHJhY2UgaWQgZmxvd3Mgb250byBhdWRpdCBldmVudHMgKyBzdHJ1Y3R1cmVkIGxvZ3MuXG4gICAgaW5zdHJ1bWVudGF0aW9uczogW1xuICAgICAgZ2V0Tm9kZUF1dG9JbnN0cnVtZW50YXRpb25zKHtcbiAgICAgICAgJ0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1mcyc6IHsgZW5hYmxlZDogZmFsc2UgfSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIH0pO1xuXG4gIHNkay5zdGFydCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhgW290ZWxdIHRyYWNpbmcgaW5pdGlhbGl6ZWQgZm9yICR7c2VydmljZU5hbWV9IC0+ICR7ZW5kcG9pbnR9YCk7XG5cbiAgY29uc3Qgc2h1dGRvd24gPSAoKSA9PiB7XG4gICAgdm9pZCBzZGsuc2h1dGRvd24oKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9O1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBzaHV0ZG93bik7XG4gIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgc2h1dGRvd24pO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
"@types/compression": "1.8.1",
|
|
12
12
|
"@types/cors": "2.8.19",
|
|
13
13
|
"@types/express": "5.0.6",
|
|
14
|
-
"@types/express-serve-static-core": "5.1.
|
|
14
|
+
"@types/express-serve-static-core": "5.1.2",
|
|
15
15
|
"@types/jsonwebtoken": "9.0.10",
|
|
16
|
-
"@types/node": "
|
|
16
|
+
"@types/node": "26.1.1",
|
|
17
17
|
"@types/swagger-ui-express": "4.1.8",
|
|
18
18
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
19
19
|
"@typescript-eslint/parser": "^8",
|
|
@@ -27,25 +27,25 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@opentelemetry/api": "1.9.1",
|
|
30
|
-
"@opentelemetry/auto-instrumentations-node": "0.
|
|
31
|
-
"@opentelemetry/exporter-trace-otlp-http": "0.
|
|
32
|
-
"@opentelemetry/instrumentation": "0.
|
|
33
|
-
"@opentelemetry/resources": "2.
|
|
34
|
-
"@opentelemetry/sdk-node": "0.
|
|
30
|
+
"@opentelemetry/auto-instrumentations-node": "0.78.0",
|
|
31
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.220.0",
|
|
32
|
+
"@opentelemetry/instrumentation": "0.220.0",
|
|
33
|
+
"@opentelemetry/resources": "2.9.0",
|
|
34
|
+
"@opentelemetry/sdk-node": "0.220.0",
|
|
35
35
|
"compression": "1.8.1",
|
|
36
36
|
"cors": "2.8.6",
|
|
37
37
|
"express": "5.2.1",
|
|
38
|
-
"express-rate-limit": "8.
|
|
39
|
-
"helmet": "8.
|
|
38
|
+
"express-rate-limit": "8.6.0",
|
|
39
|
+
"helmet": "8.3.0",
|
|
40
40
|
"ioredis": "5.11.1",
|
|
41
41
|
"jsonwebtoken": "9.0.3",
|
|
42
42
|
"prom-client": "15.1.3",
|
|
43
|
-
"rate-limit-redis": "
|
|
43
|
+
"rate-limit-redis": "6.0.0",
|
|
44
44
|
"swagger-ui-express": "5.0.1",
|
|
45
|
-
"uuid": "14.0.
|
|
46
|
-
"@pipeline-builder/
|
|
47
|
-
"@pipeline-builder/
|
|
48
|
-
"@pipeline-builder/pipeline-data": "3.4.
|
|
45
|
+
"uuid": "14.0.1",
|
|
46
|
+
"@pipeline-builder/pipeline-core": "3.4.104",
|
|
47
|
+
"@pipeline-builder/api-core": "3.4.87",
|
|
48
|
+
"@pipeline-builder/pipeline-data": "3.4.90"
|
|
49
49
|
},
|
|
50
50
|
"keywords": [
|
|
51
51
|
"ci-cd",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"access": "public",
|
|
102
102
|
"registry": "https://registry.npmjs.org/"
|
|
103
103
|
},
|
|
104
|
-
"version": "3.4.
|
|
104
|
+
"version": "3.4.110",
|
|
105
105
|
"bugs": {
|
|
106
106
|
"url": "https://github.com/mwashburn160/pipeline-builder/issues"
|
|
107
107
|
},
|