@ldsg/opentelemetry-node 0.3.17 → 0.3.19

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.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const pino_logger_1 = require("../pino-logger");
4
- describe('pino-logger', () => {
4
+ describe("pino-logger", () => {
5
5
  let originalLogger;
6
6
  beforeEach(() => {
7
7
  // Store the current logger state before each test
@@ -11,42 +11,42 @@ describe('pino-logger', () => {
11
11
  // Restore the original logger state after each test
12
12
  (0, pino_logger_1.setLogger)(originalLogger);
13
13
  });
14
- describe('createPinoLogger', () => {
15
- it('should create a pino logger with default options', () => {
14
+ describe("createPinoLogger", () => {
15
+ it("should create a pino logger with default options", () => {
16
16
  const logger = (0, pino_logger_1.createPinoLogger)();
17
17
  expect(logger).toBeDefined();
18
- expect(typeof logger.info).toBe('function');
19
- expect(typeof logger.error).toBe('function');
18
+ expect(typeof logger.info).toBe("function");
19
+ expect(typeof logger.error).toBe("function");
20
20
  });
21
- it('should create a pino logger with custom options', () => {
21
+ it("should create a pino logger with custom options", () => {
22
22
  const options = {
23
- level: 'debug',
24
- serviceName: 'test-service',
25
- serviceVersion: '1.0.0'
23
+ level: "debug",
24
+ serviceName: "test-service",
25
+ serviceVersion: "1.0.0",
26
26
  };
27
27
  const logger = (0, pino_logger_1.createPinoLogger)(options);
28
28
  expect(logger).toBeDefined();
29
29
  });
30
- it('should create a pino logger with pretty print option (skipping due to missing pino-pretty)', () => {
30
+ it("should create a pino logger with pretty print option (skipping due to missing pino-pretty)", () => {
31
31
  // Note: This test is skipped if pino-pretty is not installed
32
32
  // In a real environment, you would install pino-pretty as a dev dependency
33
33
  const options = {
34
- level: 'info',
35
- prettyPrint: false // Disable pretty print in test
34
+ level: "info",
35
+ prettyPrint: false, // Disable pretty print in test
36
36
  };
37
37
  const logger = (0, pino_logger_1.createPinoLogger)(options);
38
38
  expect(logger).toBeDefined();
39
39
  });
40
40
  });
41
- describe('getLogger', () => {
42
- it('should return the same logger instance', () => {
41
+ describe("getLogger", () => {
42
+ it("should return the same logger instance", () => {
43
43
  // First call creates a new logger
44
44
  const logger1 = (0, pino_logger_1.getLogger)();
45
45
  // Second call returns the same logger
46
46
  const logger2 = (0, pino_logger_1.getLogger)();
47
47
  expect(logger1).toBe(logger2);
48
48
  });
49
- it('should create a new logger if none exists', () => {
49
+ it("should create a new logger if none exists", () => {
50
50
  // First ensure there's no logger
51
51
  (0, pino_logger_1.setLogger)(null);
52
52
  // Now getLogger should create a new one
@@ -54,28 +54,28 @@ describe('pino-logger', () => {
54
54
  expect(logger).toBeDefined();
55
55
  });
56
56
  });
57
- describe('setLogger', () => {
58
- it('should set a custom logger', () => {
57
+ describe("setLogger", () => {
58
+ it("should set a custom logger", () => {
59
59
  const mockLogger = {
60
60
  info: jest.fn(),
61
61
  warn: jest.fn(),
62
62
  error: jest.fn(),
63
63
  debug: jest.fn(),
64
- trace: jest.fn()
64
+ trace: jest.fn(),
65
65
  };
66
66
  (0, pino_logger_1.setLogger)(mockLogger);
67
67
  const logger = (0, pino_logger_1.getLogger)();
68
68
  expect(logger).toBe(mockLogger);
69
69
  });
70
70
  });
71
- describe('trace context injection', () => {
72
- it('should verify mixin function exists in pino options', () => {
71
+ describe("trace context injection", () => {
72
+ it("should verify mixin function exists in pino options", () => {
73
73
  // This test verifies the mixin function is set up correctly
74
74
  const logger = (0, pino_logger_1.createPinoLogger)();
75
75
  expect(logger).toBeDefined();
76
76
  // The pino logger itself doesn't expose the mixin directly,
77
77
  // but we can verify the logger was created successfully
78
- expect(typeof logger.info).toBe('function');
78
+ expect(typeof logger.info).toBe("function");
79
79
  });
80
80
  });
81
81
  });
@@ -4,13 +4,13 @@ const sdk_1 = require("../sdk");
4
4
  const sdk_node_1 = require("@opentelemetry/sdk-node");
5
5
  const pino_logger_1 = require("../pino-logger");
6
6
  // Mock NodeSDK to avoid actual network calls
7
- jest.mock('@opentelemetry/sdk-node', () => ({
7
+ jest.mock("@opentelemetry/sdk-node", () => ({
8
8
  NodeSDK: jest.fn().mockImplementation(() => ({
9
9
  start: jest.fn(),
10
- shutdown: jest.fn()
11
- }))
10
+ shutdown: jest.fn(),
11
+ })),
12
12
  }));
13
- describe('sdk', () => {
13
+ describe("sdk", () => {
14
14
  beforeEach(() => {
15
15
  (0, pino_logger_1.setLogger)(null);
16
16
  jest.clearAllMocks();
@@ -18,51 +18,51 @@ describe('sdk', () => {
18
18
  afterEach(() => {
19
19
  (0, pino_logger_1.setLogger)(null);
20
20
  });
21
- describe('createSDK', () => {
22
- it('should create SDK with default options', () => {
21
+ describe("createSDK", () => {
22
+ it("should create SDK with default options", () => {
23
23
  const { sdk, logger } = (0, sdk_1.createSDK)();
24
24
  expect(sdk).toBeDefined();
25
25
  expect(logger).toBeDefined();
26
26
  // NodeSDK should be called (but we won't verify exact parameters due to complexity)
27
27
  expect(sdk_node_1.NodeSDK).toHaveBeenCalled();
28
28
  });
29
- it('should create SDK with custom options', () => {
29
+ it("should create SDK with custom options", () => {
30
30
  const options = {
31
- url: 'https://custom-collector.com/v1/traces',
32
- headers: { 'X-Custom-Header': 'value' },
31
+ url: "https://custom-collector.com/v1/traces",
32
+ headers: { "X-Custom-Header": "value" },
33
33
  pinoOptions: {
34
- level: 'debug',
35
- serviceName: 'test-service',
36
- serviceVersion: '1.0.0'
34
+ level: "debug",
35
+ serviceName: "test-service",
36
+ serviceVersion: "1.0.0",
37
37
  },
38
- replaceConsole: true
38
+ replaceConsole: true,
39
39
  };
40
40
  const { sdk, logger } = (0, sdk_1.createSDK)(options);
41
41
  expect(sdk).toBeDefined();
42
42
  expect(logger).toBeDefined();
43
43
  expect(sdk_node_1.NodeSDK).toHaveBeenCalled();
44
44
  });
45
- it('should replace console methods when replaceConsole is true', () => {
45
+ it("should replace console methods when replaceConsole is true", () => {
46
46
  const originalLog = console.log;
47
47
  const originalInfo = console.info;
48
48
  const { logger } = (0, sdk_1.createSDK)({ replaceConsole: true });
49
49
  expect(console.log).not.toBe(originalLog);
50
50
  expect(console.info).not.toBe(originalInfo);
51
51
  // Test that console.log calls logger.info
52
- const mockInfo = jest.spyOn(logger, 'info').mockImplementation(() => { });
53
- console.log('test message');
54
- expect(mockInfo).toHaveBeenCalledWith('test message');
52
+ const mockInfo = jest.spyOn(logger, "info").mockImplementation(() => { });
53
+ console.log("test message");
54
+ expect(mockInfo).toHaveBeenCalledWith("test message");
55
55
  mockInfo.mockRestore();
56
56
  });
57
- it('should not replace console methods when replaceConsole is false', () => {
57
+ it("should not replace console methods when replaceConsole is false", () => {
58
58
  const originalLog = console.log;
59
59
  (0, sdk_1.createSDK)({ replaceConsole: false });
60
60
  // Console methods should remain unchanged
61
61
  expect(console.log).toBe(originalLog);
62
62
  });
63
63
  });
64
- describe('getPinoLogger', () => {
65
- it('should throw error if logger not initialized', () => {
64
+ describe("getPinoLogger", () => {
65
+ it("should throw error if logger not initialized", () => {
66
66
  (0, pino_logger_1.setLogger)(null);
67
67
  // The getPinoLogger function actually creates a new logger if none exists
68
68
  // so we need to mock the behavior or adjust our test
@@ -70,7 +70,7 @@ describe('sdk', () => {
70
70
  const logger = (0, sdk_1.getPinoLogger)();
71
71
  expect(logger).toBeDefined();
72
72
  });
73
- it('should return logger after createSDK is called', () => {
73
+ it("should return logger after createSDK is called", () => {
74
74
  const { logger } = (0, sdk_1.createSDK)();
75
75
  const retrievedLogger = (0, sdk_1.getPinoLogger)();
76
76
  expect(retrievedLogger).toBe(logger);
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { createSDK, getPinoLogger } from './sdk';
2
- export * from './methods';
3
- export * from './pino-logger';
4
- export * from './sdk';
1
+ import { createSDK, getPinoLogger } from "./sdk";
2
+ export * from "./methods";
3
+ export * from "./pino-logger";
4
+ export * from "./sdk";
5
5
  declare let logger: ReturnType<typeof getPinoLogger>;
6
- declare let sdk: ReturnType<typeof createSDK>['sdk'];
6
+ declare let sdk: ReturnType<typeof createSDK>["sdk"];
7
7
  export { logger, sdk };
8
8
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ let sdk;
24
24
  if (process.env.ENABLE_TELEMETRY) {
25
25
  // Initialize SDK with default configuration
26
26
  const createSDKRes = (0, sdk_1.createSDK)({
27
- replaceConsole: true
27
+ replaceConsole: true,
28
28
  });
29
29
  exports.logger = logger = createSDKRes.logger;
30
30
  exports.sdk = sdk = createSDKRes.sdk;
@@ -1,4 +1,4 @@
1
- import type { Logger } from 'pino';
1
+ import type { Logger } from "pino";
2
2
  export type PinoLogger = Logger;
3
3
  export interface PinoLoggerOptions {
4
4
  level?: string;
@@ -44,15 +44,15 @@ const pino_1 = __importDefault(require("pino"));
44
44
  const os = __importStar(require("os"));
45
45
  let loggerInstance = null;
46
46
  function createPinoLogger(options = {}) {
47
- const { level = 'info', prettyPrint = false, serviceName = 'unknown-service', serviceVersion = '0.0.0' } = options;
47
+ const { level = "info", prettyPrint = false, serviceName = "unknown-service", serviceVersion = "0.0.0", } = options;
48
48
  const transportConfig = prettyPrint
49
49
  ? {
50
- target: 'pino-pretty',
50
+ target: "pino-pretty",
51
51
  options: {
52
52
  colorize: true,
53
- translateTime: 'SYS:standard',
54
- ignore: 'pid,hostname'
55
- }
53
+ translateTime: "SYS:standard",
54
+ ignore: "pid,hostname",
55
+ },
56
56
  }
57
57
  : undefined;
58
58
  const logger = (0, pino_1.default)({
@@ -62,7 +62,7 @@ function createPinoLogger(options = {}) {
62
62
  serviceName,
63
63
  serviceVersion,
64
64
  pid: process.pid,
65
- hostname: os.hostname()
65
+ hostname: os.hostname(),
66
66
  },
67
67
  mixin() {
68
68
  const span = api_1.trace.getSpan(api_1.context.active());
@@ -71,11 +71,11 @@ function createPinoLogger(options = {}) {
71
71
  return {
72
72
  trace_id: spanContext.traceId,
73
73
  span_id: spanContext.spanId,
74
- trace_flags: spanContext.traceFlags
74
+ trace_flags: spanContext.traceFlags,
75
75
  };
76
76
  }
77
77
  return {};
78
- }
78
+ },
79
79
  });
80
80
  loggerInstance = logger;
81
81
  return logger;
package/dist/sdk.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { NodeSDK } from '@opentelemetry/sdk-node';
2
- import { type PinoLoggerOptions, type PinoLogger } from './pino-logger';
1
+ import { NodeSDK } from "@opentelemetry/sdk-node";
2
+ import { type PinoLoggerOptions, type PinoLogger } from "./pino-logger";
3
3
  export interface SDKOptions {
4
4
  url?: string;
5
5
  headers?: Record<string, string>;
@@ -11,5 +11,5 @@ export declare function createSDK(options?: SDKOptions): {
11
11
  logger: PinoLogger;
12
12
  };
13
13
  export declare function getPinoLogger(): PinoLogger;
14
- export { NodeSDK } from '@opentelemetry/sdk-node';
14
+ export { NodeSDK } from "@opentelemetry/sdk-node";
15
15
  //# sourceMappingURL=sdk.d.ts.map
package/dist/sdk.js CHANGED
@@ -34,37 +34,37 @@ function getServiceVersion() {
34
34
  }
35
35
  function createSDK(options = {}) {
36
36
  var _a, _b, _c;
37
- const { url = 'https://otel-collector.hfbdkj.com/v1/traces', headers = {}, pinoOptions = {}, replaceConsole = true } = options;
37
+ const { url = "https://otel-collector.hfbdkj.com/v1/traces", headers = {}, pinoOptions = {}, replaceConsole = true, } = options;
38
38
  const serviceName = (_a = pinoOptions.serviceName) !== null && _a !== void 0 ? _a : getServiceName();
39
39
  const serviceVersion = (_b = pinoOptions.serviceVersion) !== null && _b !== void 0 ? _b : getServiceVersion();
40
40
  // Create pino logger with trace context
41
41
  pinoInstance = (0, pino_logger_1.createPinoLogger)({
42
- level: (_c = pinoOptions.level) !== null && _c !== void 0 ? _c : 'info',
42
+ level: (_c = pinoOptions.level) !== null && _c !== void 0 ? _c : "info",
43
43
  prettyPrint: pinoOptions.prettyPrint,
44
44
  serviceName,
45
- serviceVersion
45
+ serviceVersion,
46
46
  });
47
47
  // Replace console methods with pino if enabled
48
48
  if (replaceConsole) {
49
- global.console.log = (...args) => pinoInstance.info(args.join(' '));
50
- global.console.info = (...args) => pinoInstance.info(args.join(' '));
51
- global.console.warn = (...args) => pinoInstance.warn(args.join(' '));
52
- global.console.error = (...args) => pinoInstance.error(args.join(' '));
53
- global.console.debug = (...args) => pinoInstance.debug(args.join(' '));
54
- global.console.trace = (...args) => pinoInstance.trace(args.join(' '));
49
+ global.console.log = (...args) => pinoInstance.info(args.join(" "));
50
+ global.console.info = (...args) => pinoInstance.info(args.join(" "));
51
+ global.console.warn = (...args) => pinoInstance.warn(args.join(" "));
52
+ global.console.error = (...args) => pinoInstance.error(args.join(" "));
53
+ global.console.debug = (...args) => pinoInstance.debug(args.join(" "));
54
+ global.console.trace = (...args) => pinoInstance.trace(args.join(" "));
55
55
  }
56
56
  const sdk = new sdk_node_1.NodeSDK({
57
57
  traceExporter: new exporter_trace_otlp_proto_1.OTLPTraceExporter({
58
58
  url,
59
- headers
59
+ headers,
60
60
  }),
61
- instrumentations: [(0, auto_instrumentations_node_1.getNodeAutoInstrumentations)()]
61
+ instrumentations: [(0, auto_instrumentations_node_1.getNodeAutoInstrumentations)()],
62
62
  });
63
63
  return { sdk, logger: pinoInstance };
64
64
  }
65
65
  function getPinoLogger() {
66
66
  if (!pinoInstance) {
67
- throw new Error('Pino logger not initialized. Call createSDK() first.');
67
+ throw new Error("Pino logger not initialized. Call createSDK() first.");
68
68
  }
69
69
  return pinoInstance;
70
70
  }
package/package.json CHANGED
@@ -1,14 +1,17 @@
1
1
  {
2
2
  "name": "@ldsg/opentelemetry-node",
3
- "version": "0.3.17",
3
+ "version": "0.3.19",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "author": "wanxger",
7
- "main": "dist/index.js",
8
- "types": "dist",
9
7
  "files": [
10
8
  "dist/"
11
9
  ],
10
+ "main": "dist/index.js",
11
+ "types": "dist",
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
12
15
  "dependencies": {
13
16
  "@opentelemetry/api": "~1.9.0",
14
17
  "@opentelemetry/auto-instrumentations-node": "~0.69.0",
@@ -29,6 +32,8 @@
29
32
  "@types/jest": "^29.5.14",
30
33
  "@types/node": "^22.1.0",
31
34
  "jest": "^29.7.0",
35
+ "oxfmt": "latest",
36
+ "oxlint": "latest",
32
37
  "ts-jest": "^29.2.5",
33
38
  "ts-loader": "^9.5.1",
34
39
  "ts-node": "~10.9.2",
@@ -36,12 +41,11 @@
36
41
  "tsx": "~4.21.0",
37
42
  "typescript": "^5.5.4"
38
43
  },
39
- "publishConfig": {
40
- "access": "public"
41
- },
42
44
  "scripts": {
43
45
  "build": "tsc --project tsconfig.build.json",
44
46
  "clean": "rm -rf dist",
47
+ "format": "oxfmt --write src/",
48
+ "lint": "oxlint src/",
45
49
  "test": "jest",
46
50
  "test:coverage": "jest --coverage",
47
51
  "test:watch": "jest --watch"