@0xchain/telemetry 1.1.0-beta.2 → 1.1.0-beta.20
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/LICENSE +21 -0
- package/README.md +141 -5
- package/dist/Instrumentations.d.ts +5 -1
- package/dist/Instrumentations.d.ts.map +1 -1
- package/dist/Sampler.d.ts +20 -9
- package/dist/Sampler.d.ts.map +1 -1
- package/dist/ignore-BvHZTNsF.js +151 -0
- package/dist/ignore.d.ts +9 -0
- package/dist/ignore.d.ts.map +1 -0
- package/dist/index.d.ts +21 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +598 -87
- package/dist/instrumentation.d.ts +4 -0
- package/dist/instrumentation.d.ts.map +1 -0
- package/dist/instrumentation.js +8 -0
- package/dist/middleware.d.ts +24 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +43 -0
- package/dist/next.d.ts +24 -0
- package/dist/next.d.ts.map +1 -0
- package/dist/next.js +43 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +46 -10
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TelemetryConfig } from './types';
|
|
2
|
+
/** 在 Next.js instrumentation.ts 中注册追踪 */
|
|
3
|
+
export declare const registerTelemetry: (configOrProvider?: TelemetryConfig | (() => TelemetryConfig | Promise<TelemetryConfig>)) => Promise<void>;
|
|
4
|
+
//# sourceMappingURL=instrumentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,yCAAyC;AACzC,eAAO,MAAM,iBAAiB,GAC5B,mBAAmB,eAAe,GAAG,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,kBAKxF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { startTelemetry } from "./index.js";
|
|
2
|
+
const registerTelemetry = async (configOrProvider) => {
|
|
3
|
+
const resolvedConfig = typeof configOrProvider === "function" ? await configOrProvider() : configOrProvider;
|
|
4
|
+
await startTelemetry(resolvedConfig ?? {});
|
|
5
|
+
};
|
|
6
|
+
export {
|
|
7
|
+
registerTelemetry
|
|
8
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NextResponse, NextRequest, NextFetchEvent } from 'next/server';
|
|
2
|
+
import { TelemetryMiddlewareOptions } from './types';
|
|
3
|
+
export declare const defaultTelemetryMiddlewareConfig: {
|
|
4
|
+
matcher: string[];
|
|
5
|
+
};
|
|
6
|
+
export type NextMiddlewareResult = NextResponse | Response | null | undefined | void;
|
|
7
|
+
export type NextMiddleware = (request: NextRequest, event: NextFetchEvent) => NextMiddlewareResult | Promise<NextMiddlewareResult>;
|
|
8
|
+
/**
|
|
9
|
+
* Higher-order function to wrap existing middleware with telemetry support.
|
|
10
|
+
* This is less invasive than creating a separate middleware factory.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* export const middleware = withTelemetryMiddleware(async (req) => {
|
|
14
|
+
* // your existing middleware logic
|
|
15
|
+
* return NextResponse.next();
|
|
16
|
+
* });
|
|
17
|
+
*/
|
|
18
|
+
export declare const withTelemetryMiddleware: (middleware: NextMiddleware, options?: TelemetryMiddlewareOptions) => NextMiddleware;
|
|
19
|
+
/**
|
|
20
|
+
* Simplified Telemetry Middleware Creator (Factory Pattern)
|
|
21
|
+
* For users who don't have existing middleware or prefer this style.
|
|
22
|
+
*/
|
|
23
|
+
export declare const createTelemetryMiddleware: (options?: TelemetryMiddlewareOptions) => NextMiddleware;
|
|
24
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,gCAAgC;;CAI5C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAErF,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,cAAc,KAClB,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE1D;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GAClC,YAAY,cAAc,EAC1B,UAAS,0BAA+B,KACvC,cAqCF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAS,0BAA+B,mBAGjF,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from "next/server";
|
|
2
|
+
import { c as createIgnoreMatcher } from "./ignore-BvHZTNsF.js";
|
|
3
|
+
const defaultTelemetryMiddlewareConfig = {
|
|
4
|
+
matcher: [
|
|
5
|
+
"/((?!_next/static|_next/image|favicon.ico|robots.txt|sitemap.xml|.*\\.(?:css|js|mjs|cjs|png|jpg|jpeg|gif|svg|ico|webp|avif|woff|woff2|ttf|eot|map|txt|xml)).*)"
|
|
6
|
+
]
|
|
7
|
+
};
|
|
8
|
+
const withTelemetryMiddleware = (middleware, options = {}) => {
|
|
9
|
+
const shouldIgnore = createIgnoreMatcher(options.ignore);
|
|
10
|
+
const requestStartHeader = (options.requestStartHeader ?? "x-telemetry-start").toLowerCase();
|
|
11
|
+
const userTypeHeader = (options.userTypeHeader ?? "x-telemetry-user-type").toLowerCase();
|
|
12
|
+
const resolveUserType = options.resolveUserType;
|
|
13
|
+
return async (request, event) => {
|
|
14
|
+
const pathname = request.nextUrl.pathname;
|
|
15
|
+
if (shouldIgnore(pathname, request.method)) {
|
|
16
|
+
return middleware(request, event);
|
|
17
|
+
}
|
|
18
|
+
const headers = new Headers(request.headers);
|
|
19
|
+
const userType = resolveUserType?.(request) || headers.get(userTypeHeader);
|
|
20
|
+
if (userType) headers.set(userTypeHeader, userType);
|
|
21
|
+
headers.set(requestStartHeader, String(Date.now()));
|
|
22
|
+
const wrappedRequest = new NextRequest(request, {
|
|
23
|
+
headers
|
|
24
|
+
});
|
|
25
|
+
const response = await middleware(wrappedRequest, event);
|
|
26
|
+
if (!response) {
|
|
27
|
+
return NextResponse.next({
|
|
28
|
+
request: {
|
|
29
|
+
headers
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return response;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
const createTelemetryMiddleware = (options = {}) => {
|
|
37
|
+
return withTelemetryMiddleware(() => NextResponse.next(), options);
|
|
38
|
+
};
|
|
39
|
+
export {
|
|
40
|
+
createTelemetryMiddleware,
|
|
41
|
+
defaultTelemetryMiddlewareConfig,
|
|
42
|
+
withTelemetryMiddleware
|
|
43
|
+
};
|
package/dist/next.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NextResponse, NextRequest, NextFetchEvent } from 'next/server';
|
|
2
|
+
import { TelemetryMiddlewareOptions } from './types';
|
|
3
|
+
export declare const defaultTelemetryMiddlewareConfig: {
|
|
4
|
+
matcher: string[];
|
|
5
|
+
};
|
|
6
|
+
export type NextMiddlewareResult = NextResponse | Response | null | undefined | void;
|
|
7
|
+
export type NextMiddleware = (request: NextRequest, event: NextFetchEvent) => NextMiddlewareResult | Promise<NextMiddlewareResult>;
|
|
8
|
+
/**
|
|
9
|
+
* Higher-order function to wrap existing middleware with telemetry support.
|
|
10
|
+
* This is less invasive than creating a separate middleware factory.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* export const middleware = withTelemetryMiddleware(async (req) => {
|
|
14
|
+
* // your existing middleware logic
|
|
15
|
+
* return NextResponse.next();
|
|
16
|
+
* });
|
|
17
|
+
*/
|
|
18
|
+
export declare const withTelemetryMiddleware: (middleware: NextMiddleware, options?: TelemetryMiddlewareOptions) => NextMiddleware;
|
|
19
|
+
/**
|
|
20
|
+
* Simplified Telemetry Middleware Creator (Factory Pattern)
|
|
21
|
+
* For users who don't have existing middleware or prefer this style.
|
|
22
|
+
*/
|
|
23
|
+
export declare const createTelemetryMiddleware: (options?: TelemetryMiddlewareOptions) => NextMiddleware;
|
|
24
|
+
//# sourceMappingURL=next.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../src/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,gCAAgC;;CAI5C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAErF,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,cAAc,KAClB,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE1D;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GAClC,YAAY,cAAc,EAC1B,UAAS,0BAA+B,KACvC,cAqCF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAS,0BAA+B,mBAGjF,CAAC"}
|
package/dist/next.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from "next/server";
|
|
2
|
+
import { c as createIgnoreMatcher } from "./ignore-BvHZTNsF.js";
|
|
3
|
+
const defaultTelemetryMiddlewareConfig = {
|
|
4
|
+
matcher: [
|
|
5
|
+
"/((?!_next/static|_next/image|favicon.ico|robots.txt|sitemap.xml|.*\\.(?:css|js|mjs|cjs|png|jpg|jpeg|gif|svg|ico|webp|avif|woff|woff2|ttf|eot|map|txt|xml)).*)"
|
|
6
|
+
]
|
|
7
|
+
};
|
|
8
|
+
const withTelemetryMiddleware = (middleware, options = {}) => {
|
|
9
|
+
const shouldIgnore = createIgnoreMatcher(options.ignore);
|
|
10
|
+
const requestStartHeader = (options.requestStartHeader ?? "x-telemetry-start").toLowerCase();
|
|
11
|
+
const userTypeHeader = (options.userTypeHeader ?? "x-telemetry-user-type").toLowerCase();
|
|
12
|
+
const resolveUserType = options.resolveUserType;
|
|
13
|
+
return async (request, event) => {
|
|
14
|
+
const pathname = request.nextUrl.pathname;
|
|
15
|
+
if (shouldIgnore(pathname, request.method)) {
|
|
16
|
+
return middleware(request, event);
|
|
17
|
+
}
|
|
18
|
+
const headers = new Headers(request.headers);
|
|
19
|
+
const userType = resolveUserType?.(request) || headers.get(userTypeHeader);
|
|
20
|
+
if (userType) headers.set(userTypeHeader, userType);
|
|
21
|
+
headers.set(requestStartHeader, String(Date.now()));
|
|
22
|
+
const wrappedRequest = new NextRequest(request, {
|
|
23
|
+
headers
|
|
24
|
+
});
|
|
25
|
+
const response = await middleware(wrappedRequest, event);
|
|
26
|
+
if (!response) {
|
|
27
|
+
return NextResponse.next({
|
|
28
|
+
request: {
|
|
29
|
+
headers
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return response;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
const createTelemetryMiddleware = (options = {}) => {
|
|
37
|
+
return withTelemetryMiddleware(() => NextResponse.next(), options);
|
|
38
|
+
};
|
|
39
|
+
export {
|
|
40
|
+
createTelemetryMiddleware,
|
|
41
|
+
defaultTelemetryMiddlewareConfig,
|
|
42
|
+
withTelemetryMiddleware
|
|
43
|
+
};
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { OTLPExporterNodeConfigBase } from '@opentelemetry/otlp-exporter-base';
|
|
2
|
+
export type PathPattern = string | RegExp;
|
|
3
|
+
export interface IgnoreConfig {
|
|
4
|
+
paths?: PathPattern[];
|
|
5
|
+
extensions?: string[];
|
|
6
|
+
methods?: string[];
|
|
7
|
+
/** 需要忽略的 span 名称模式(用于过滤 Next.js 内部 span 等非 HTTP 请求) */
|
|
8
|
+
spanNames?: PathPattern[];
|
|
9
|
+
}
|
|
10
|
+
export interface SamplingRuleCondition {
|
|
11
|
+
path?: PathPattern[];
|
|
12
|
+
method?: string[];
|
|
13
|
+
userType?: string[];
|
|
14
|
+
statusCode?: number[];
|
|
15
|
+
minStatusCode?: number;
|
|
16
|
+
maxStatusCode?: number;
|
|
17
|
+
inspection?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface SamplingRule {
|
|
20
|
+
name?: string;
|
|
21
|
+
ratio: number;
|
|
22
|
+
when?: SamplingRuleCondition;
|
|
23
|
+
}
|
|
24
|
+
export interface LayeredSamplingConfig {
|
|
25
|
+
criticalPaths?: PathPattern[];
|
|
26
|
+
criticalUserTypes?: string[];
|
|
27
|
+
pathSampling?: Record<string, number>;
|
|
28
|
+
userTypeSampling?: Record<string, number>;
|
|
29
|
+
}
|
|
30
|
+
export interface TelemetryConfig extends OTLPExporterNodeConfigBase {
|
|
31
|
+
serviceName: string;
|
|
32
|
+
serviceVersion?: string;
|
|
33
|
+
environment?: string;
|
|
34
|
+
defaultSamplingRatio?: number;
|
|
35
|
+
samplingRules?: SamplingRule[];
|
|
36
|
+
layeredSampling?: LayeredSamplingConfig;
|
|
37
|
+
ignore?: IgnoreConfig;
|
|
38
|
+
inspectionHeader?: string;
|
|
39
|
+
userTypeHeader?: string;
|
|
40
|
+
requestStartHeader?: string;
|
|
41
|
+
exporterTimeoutMillis?: number;
|
|
42
|
+
maxQueueSize?: number;
|
|
43
|
+
maxExportBatchSize?: number;
|
|
44
|
+
scheduledDelayMillis?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface TelemetryRuntime {
|
|
47
|
+
getConfig: () => TelemetryConfig;
|
|
48
|
+
updateConfig: (partial: Partial<TelemetryConfig>) => void;
|
|
49
|
+
}
|
|
50
|
+
export interface TelemetryMiddlewareOptions {
|
|
51
|
+
ignore?: IgnoreConfig;
|
|
52
|
+
inspectionHeader?: string;
|
|
53
|
+
requestStartHeader?: string;
|
|
54
|
+
userTypeHeader?: string;
|
|
55
|
+
resolveUserType?: (request: import('next/server').NextRequest) => string | undefined;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,eAAgB,SAAQ,0BAA0B;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,eAAe,CAAC;IACjC,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,aAAa,EAAE,WAAW,KAAK,MAAM,GAAG,SAAS,CAAC;CACtF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xchain/telemetry",
|
|
3
|
-
"version": "1.1.0-beta.
|
|
3
|
+
"version": "1.1.0-beta.20",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -11,22 +11,58 @@
|
|
|
11
11
|
"types": "./dist/index.d.ts",
|
|
12
12
|
"import": "./dist/index.js",
|
|
13
13
|
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./middleware": {
|
|
16
|
+
"types": "./dist/middleware.d.ts",
|
|
17
|
+
"import": "./dist/middleware.js",
|
|
18
|
+
"require": "./dist/middleware.js",
|
|
19
|
+
"default": "./dist/middleware.js"
|
|
20
|
+
},
|
|
21
|
+
"./instrumentation": {
|
|
22
|
+
"types": "./dist/instrumentation.d.ts",
|
|
23
|
+
"import": "./dist/instrumentation.js",
|
|
24
|
+
"require": "./dist/instrumentation.js",
|
|
25
|
+
"default": "./dist/instrumentation.js"
|
|
26
|
+
},
|
|
27
|
+
"./next": {
|
|
28
|
+
"types": "./dist/next.d.ts",
|
|
29
|
+
"import": "./dist/next.js",
|
|
30
|
+
"require": "./dist/next.js",
|
|
31
|
+
"default": "./dist/next.js"
|
|
14
32
|
}
|
|
15
33
|
},
|
|
16
34
|
"files": [
|
|
17
35
|
"dist",
|
|
18
36
|
"!**/*.tsbuildinfo"
|
|
19
37
|
],
|
|
20
|
-
"
|
|
38
|
+
"peerDependencies": {
|
|
21
39
|
"@opentelemetry/api": "1.9.0",
|
|
22
|
-
"@opentelemetry/
|
|
23
|
-
"@opentelemetry/
|
|
24
|
-
"@opentelemetry/instrumentation-undici": "0.
|
|
25
|
-
"@opentelemetry/otlp-exporter-base": "0.
|
|
26
|
-
"@opentelemetry/resources": "2.
|
|
27
|
-
"@opentelemetry/sdk-node": "0.
|
|
28
|
-
"@opentelemetry/sdk-trace-base": "2.
|
|
29
|
-
"@opentelemetry/semantic-conventions": "1.
|
|
40
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.212.0",
|
|
41
|
+
"@opentelemetry/instrumentation-http": "0.212.0",
|
|
42
|
+
"@opentelemetry/instrumentation-undici": "0.22.0",
|
|
43
|
+
"@opentelemetry/otlp-exporter-base": "0.212.0",
|
|
44
|
+
"@opentelemetry/resources": "2.5.1",
|
|
45
|
+
"@opentelemetry/sdk-node": "0.212.0",
|
|
46
|
+
"@opentelemetry/sdk-trace-base": "2.5.1",
|
|
47
|
+
"@opentelemetry/semantic-conventions": "1.40.0",
|
|
48
|
+
"next": "16.1.6"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@opentelemetry/api": "1.9.0",
|
|
52
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.212.0",
|
|
53
|
+
"@opentelemetry/instrumentation-http": "0.212.0",
|
|
54
|
+
"@opentelemetry/instrumentation-undici": "0.22.0",
|
|
55
|
+
"@opentelemetry/otlp-exporter-base": "0.212.0",
|
|
56
|
+
"@opentelemetry/resources": "2.5.1",
|
|
57
|
+
"@opentelemetry/sdk-node": "0.212.0",
|
|
58
|
+
"@opentelemetry/sdk-trace-base": "2.5.1",
|
|
59
|
+
"@opentelemetry/semantic-conventions": "1.40.0",
|
|
60
|
+
"next": "16.1.6"
|
|
61
|
+
},
|
|
62
|
+
"nx": {
|
|
63
|
+
"tags": [
|
|
64
|
+
"type:util"
|
|
65
|
+
]
|
|
30
66
|
},
|
|
31
67
|
"publishConfig": {
|
|
32
68
|
"access": "public"
|