@deeptracer/core 0.5.1 → 0.6.1

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/README.md CHANGED
@@ -83,11 +83,10 @@ Pass a `LoggerConfig` object to `createLogger()`:
83
83
 
84
84
  ```ts
85
85
  const logger = createLogger({
86
- // Required
87
- service: "api", // Service name within the product
88
- environment: "production", // "production" or "staging"
89
- endpoint: "https://dt.co", // DeepTracer ingestion endpoint URL
90
- apiKey: "dt_xxx", // API key for authentication
86
+ apiKey: "dt_xxx", // API key (reads DEEPTRACER_KEY env var if omitted)
87
+ endpoint: "https://dt.co", // Ingestion endpoint (reads DEEPTRACER_ENDPOINT if omitted)
88
+ service: "api", // Service name (default: "server")
89
+ environment: "production", // Deployment environment (default: NODE_ENV or "production")
91
90
 
92
91
  // Optional
93
92
  batchSize: 50, // Logs to buffer before sending (default: 50)
@@ -96,15 +95,17 @@ const logger = createLogger({
96
95
  })
97
96
  ```
98
97
 
99
- | Field | Type | Required | Default | Description |
100
- |-------|------|----------|---------|-------------|
101
- | `service` | `string` | Yes | -- | Service name (e.g., `"api"`, `"worker"`, `"web"`) |
102
- | `environment` | `"production" \| "staging"` | Yes | -- | Deployment environment |
103
- | `endpoint` | `string` | Yes | -- | DeepTracer ingestion endpoint URL |
104
- | `apiKey` | `string` | Yes | -- | API key (prefix: `dt_`) |
105
- | `batchSize` | `number` | No | `50` | Number of log entries to buffer before flushing |
106
- | `flushIntervalMs` | `number` | No | `5000` | Milliseconds between automatic flushes |
107
- | `debug` | `boolean` | No | `false` | When `true`, all log calls also print to the console |
98
+ > **Graceful degradation:** If `apiKey` or `endpoint` is missing, `createLogger()` prints a warning and runs in local-only mode — all methods work but no data is sent. The SDK never throws on missing config.
99
+
100
+ | Field | Type | Default | Description |
101
+ |-------|------|---------|-------------|
102
+ | `apiKey` | `string` | `DEEPTRACER_KEY` env var | API key (prefix: `dt_`). If missing, runs in local-only mode (no data sent). |
103
+ | `endpoint` | `string` | `DEEPTRACER_ENDPOINT` env var | DeepTracer ingestion endpoint URL. If missing, runs in local-only mode. |
104
+ | `service` | `string` | `"server"` | Service name (e.g., `"api"`, `"worker"`, `"web"`) |
105
+ | `environment` | `string` | `NODE_ENV` / `"production"` | Deployment environment |
106
+ | `batchSize` | `number` | `50` | Number of log entries to buffer before flushing |
107
+ | `flushIntervalMs` | `number` | `5000` | Milliseconds between automatic flushes |
108
+ | `debug` | `boolean` | `false` | When `true`, all log calls also print to the console |
108
109
 
109
110
  ## API Reference
110
111
 
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var SDK_VERSION = "0.5.1";
2
+ var SDK_VERSION = "0.6.1";
3
3
  var SDK_NAME = "core";
4
4
 
5
5
  // src/transport.ts
package/dist/index.cjs CHANGED
@@ -23,7 +23,8 @@ __export(index_exports, {
23
23
  Logger: () => Logger,
24
24
  SDK_NAME: () => SDK_NAME,
25
25
  SDK_VERSION: () => SDK_VERSION,
26
- createLogger: () => createLogger
26
+ createLogger: () => createLogger,
27
+ noopLogger: () => noopLogger
27
28
  });
28
29
  module.exports = __toCommonJS(index_exports);
29
30
 
@@ -62,7 +63,7 @@ var Batcher = class {
62
63
  };
63
64
 
64
65
  // src/version.ts
65
- var SDK_VERSION = "0.5.1";
66
+ var SDK_VERSION = "0.6.1";
66
67
  var SDK_NAME = "core";
67
68
 
68
69
  // src/transport.ts
@@ -720,10 +721,64 @@ var Logger = class _Logger {
720
721
  function createLogger(config) {
721
722
  return new Logger(config);
722
723
  }
724
+
725
+ // src/noop-logger.ts
726
+ var NOOP_INACTIVE_SPAN = {
727
+ traceId: "0".repeat(32),
728
+ spanId: "0".repeat(16),
729
+ parentSpanId: "",
730
+ operation: "noop",
731
+ end: () => {
732
+ },
733
+ getHeaders: () => ({}),
734
+ startSpan: (_operation, fn) => fn(NOOP_SPAN),
735
+ startInactiveSpan: () => NOOP_INACTIVE_SPAN
736
+ };
737
+ var NOOP_SPAN = {
738
+ traceId: NOOP_INACTIVE_SPAN.traceId,
739
+ spanId: NOOP_INACTIVE_SPAN.spanId,
740
+ parentSpanId: NOOP_INACTIVE_SPAN.parentSpanId,
741
+ operation: NOOP_INACTIVE_SPAN.operation,
742
+ getHeaders: () => ({})
743
+ };
744
+ var noop = () => {
745
+ };
746
+ var noopLogger = {
747
+ // Logging — silent
748
+ debug: noop,
749
+ info: noop,
750
+ warn: noop,
751
+ error: noop,
752
+ // User context — silent
753
+ setUser: noop,
754
+ clearUser: noop,
755
+ // Tags & context — silent
756
+ setTags: noop,
757
+ clearTags: noop,
758
+ setContext: noop,
759
+ clearContext: noop,
760
+ // Breadcrumbs — silent
761
+ addBreadcrumb: noop,
762
+ // Child loggers — return self
763
+ withContext: () => noopLogger,
764
+ forRequest: () => noopLogger,
765
+ // Error capture — silent
766
+ captureError: noop,
767
+ // LLM usage — silent
768
+ llmUsage: noop,
769
+ // Tracing — call the callback, return its result
770
+ startSpan: (_operation, fn) => fn(NOOP_SPAN),
771
+ startInactiveSpan: () => NOOP_INACTIVE_SPAN,
772
+ wrap: (_operation, fn) => fn,
773
+ // Lifecycle — resolve immediately
774
+ flush: noop,
775
+ destroy: () => Promise.resolve()
776
+ };
723
777
  // Annotate the CommonJS export names for ESM import in node:
724
778
  0 && (module.exports = {
725
779
  Logger,
726
780
  SDK_NAME,
727
781
  SDK_VERSION,
728
- createLogger
782
+ createLogger,
783
+ noopLogger
729
784
  });
package/dist/index.d.cts CHANGED
@@ -1,7 +1,24 @@
1
- export { B as BeforeSendEvent, a as Breadcrumb, E as ErrorReport, I as InactiveSpan, L as LLMUsageReport, b as LogEntry, c as LogLevel, d as Logger, e as LoggerConfig, M as MiddlewareOptions, S as Span, f as SpanData, U as User, g as createLogger } from './logger-BzzHo1HP.cjs';
1
+ import { L as Logger } from './logger-CzZg2_vM.cjs';
2
+ export { B as BeforeSendEvent, a as Breadcrumb, E as ErrorReport, I as InactiveSpan, b as LLMUsageReport, c as LogEntry, d as LogLevel, e as LoggerConfig, M as MiddlewareOptions, S as Span, f as SpanData, U as User, g as createLogger } from './logger-CzZg2_vM.cjs';
3
+
4
+ /**
5
+ * A Logger-compatible object where every method is a silent no-op.
6
+ *
7
+ * Returned by `init()` when API key or endpoint is missing, and by
8
+ * `useLogger()` when the DeepTracer provider hasn't initialized yet (SSR/SSG).
9
+ *
10
+ * This ensures the SDK never crashes your app — if config is missing,
11
+ * all logging calls silently do nothing.
12
+ *
13
+ * - No timers, no Transport, no network requests, no console output
14
+ * - `withContext()` and `forRequest()` return the same noopLogger
15
+ * - `startSpan(op, fn)` still calls `fn` and returns its result
16
+ * - `flush()` and `destroy()` resolve immediately
17
+ */
18
+ declare const noopLogger: Logger;
2
19
 
3
20
  /** SDK version. Update on each release. */
4
- declare const SDK_VERSION = "0.5.1";
21
+ declare const SDK_VERSION = "0.6.1";
5
22
  declare const SDK_NAME = "core";
6
23
 
7
- export { SDK_NAME, SDK_VERSION };
24
+ export { Logger, SDK_NAME, SDK_VERSION, noopLogger };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,24 @@
1
- export { B as BeforeSendEvent, a as Breadcrumb, E as ErrorReport, I as InactiveSpan, L as LLMUsageReport, b as LogEntry, c as LogLevel, d as Logger, e as LoggerConfig, M as MiddlewareOptions, S as Span, f as SpanData, U as User, g as createLogger } from './logger-BzzHo1HP.js';
1
+ import { L as Logger } from './logger-CzZg2_vM.js';
2
+ export { B as BeforeSendEvent, a as Breadcrumb, E as ErrorReport, I as InactiveSpan, b as LLMUsageReport, c as LogEntry, d as LogLevel, e as LoggerConfig, M as MiddlewareOptions, S as Span, f as SpanData, U as User, g as createLogger } from './logger-CzZg2_vM.js';
3
+
4
+ /**
5
+ * A Logger-compatible object where every method is a silent no-op.
6
+ *
7
+ * Returned by `init()` when API key or endpoint is missing, and by
8
+ * `useLogger()` when the DeepTracer provider hasn't initialized yet (SSR/SSG).
9
+ *
10
+ * This ensures the SDK never crashes your app — if config is missing,
11
+ * all logging calls silently do nothing.
12
+ *
13
+ * - No timers, no Transport, no network requests, no console output
14
+ * - `withContext()` and `forRequest()` return the same noopLogger
15
+ * - `startSpan(op, fn)` still calls `fn` and returns its result
16
+ * - `flush()` and `destroy()` resolve immediately
17
+ */
18
+ declare const noopLogger: Logger;
2
19
 
3
20
  /** SDK version. Update on each release. */
4
- declare const SDK_VERSION = "0.5.1";
21
+ declare const SDK_VERSION = "0.6.1";
5
22
  declare const SDK_NAME = "core";
6
23
 
7
- export { SDK_NAME, SDK_VERSION };
24
+ export { Logger, SDK_NAME, SDK_VERSION, noopLogger };
package/dist/index.js CHANGED
@@ -3,10 +3,64 @@ import {
3
3
  SDK_NAME,
4
4
  SDK_VERSION,
5
5
  createLogger
6
- } from "./chunk-HOUMS3SU.js";
6
+ } from "./chunk-Y3RCGZ3H.js";
7
+
8
+ // src/noop-logger.ts
9
+ var NOOP_INACTIVE_SPAN = {
10
+ traceId: "0".repeat(32),
11
+ spanId: "0".repeat(16),
12
+ parentSpanId: "",
13
+ operation: "noop",
14
+ end: () => {
15
+ },
16
+ getHeaders: () => ({}),
17
+ startSpan: (_operation, fn) => fn(NOOP_SPAN),
18
+ startInactiveSpan: () => NOOP_INACTIVE_SPAN
19
+ };
20
+ var NOOP_SPAN = {
21
+ traceId: NOOP_INACTIVE_SPAN.traceId,
22
+ spanId: NOOP_INACTIVE_SPAN.spanId,
23
+ parentSpanId: NOOP_INACTIVE_SPAN.parentSpanId,
24
+ operation: NOOP_INACTIVE_SPAN.operation,
25
+ getHeaders: () => ({})
26
+ };
27
+ var noop = () => {
28
+ };
29
+ var noopLogger = {
30
+ // Logging — silent
31
+ debug: noop,
32
+ info: noop,
33
+ warn: noop,
34
+ error: noop,
35
+ // User context — silent
36
+ setUser: noop,
37
+ clearUser: noop,
38
+ // Tags & context — silent
39
+ setTags: noop,
40
+ clearTags: noop,
41
+ setContext: noop,
42
+ clearContext: noop,
43
+ // Breadcrumbs — silent
44
+ addBreadcrumb: noop,
45
+ // Child loggers — return self
46
+ withContext: () => noopLogger,
47
+ forRequest: () => noopLogger,
48
+ // Error capture — silent
49
+ captureError: noop,
50
+ // LLM usage — silent
51
+ llmUsage: noop,
52
+ // Tracing — call the callback, return its result
53
+ startSpan: (_operation, fn) => fn(NOOP_SPAN),
54
+ startInactiveSpan: () => NOOP_INACTIVE_SPAN,
55
+ wrap: (_operation, fn) => fn,
56
+ // Lifecycle — resolve immediately
57
+ flush: noop,
58
+ destroy: () => Promise.resolve()
59
+ };
7
60
  export {
8
61
  Logger,
9
62
  SDK_NAME,
10
63
  SDK_VERSION,
11
- createLogger
64
+ createLogger,
65
+ noopLogger
12
66
  };
package/dist/internal.cjs CHANGED
@@ -63,7 +63,7 @@ var Batcher = class {
63
63
  };
64
64
 
65
65
  // src/version.ts
66
- var SDK_VERSION = "0.5.1";
66
+ var SDK_VERSION = "0.6.1";
67
67
  var SDK_NAME = "core";
68
68
 
69
69
  // src/transport.ts
@@ -1,5 +1,5 @@
1
- import { e as LoggerConfig, b as LogEntry, E as ErrorReport, f as SpanData } from './logger-BzzHo1HP.cjs';
2
- export { d as Logger, h as LoggerState, M as MiddlewareOptions, _ as _originalConsole, p as parseTraceparent } from './logger-BzzHo1HP.cjs';
1
+ import { e as LoggerConfig, c as LogEntry, E as ErrorReport, f as SpanData } from './logger-CzZg2_vM.cjs';
2
+ export { L as Logger, h as LoggerState, M as MiddlewareOptions, _ as _originalConsole, p as parseTraceparent } from './logger-CzZg2_vM.cjs';
3
3
 
4
4
  /**
5
5
  * HTTP transport for sending data to the DeepTracer ingestion API.
@@ -1,5 +1,5 @@
1
- import { e as LoggerConfig, b as LogEntry, E as ErrorReport, f as SpanData } from './logger-BzzHo1HP.js';
2
- export { d as Logger, h as LoggerState, M as MiddlewareOptions, _ as _originalConsole, p as parseTraceparent } from './logger-BzzHo1HP.js';
1
+ import { e as LoggerConfig, c as LogEntry, E as ErrorReport, f as SpanData } from './logger-CzZg2_vM.js';
2
+ export { L as Logger, h as LoggerState, M as MiddlewareOptions, _ as _originalConsole, p as parseTraceparent } from './logger-CzZg2_vM.js';
3
3
 
4
4
  /**
5
5
  * HTTP transport for sending data to the DeepTracer ingestion API.
package/dist/internal.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  Transport,
4
4
  _originalConsole,
5
5
  parseTraceparent
6
- } from "./chunk-HOUMS3SU.js";
6
+ } from "./chunk-Y3RCGZ3H.js";
7
7
 
8
8
  // src/internal.ts
9
9
  function safeStringify(value) {
@@ -397,4 +397,4 @@ declare class Logger {
397
397
  /** Create a new DeepTracer logger instance. */
398
398
  declare function createLogger(config: LoggerConfig): Logger;
399
399
 
400
- export { type BeforeSendEvent as B, type ErrorReport as E, type InactiveSpan as I, type LLMUsageReport as L, type MiddlewareOptions as M, type Span as S, type User as U, _originalConsole as _, type Breadcrumb as a, type LogEntry as b, type LogLevel as c, Logger as d, type LoggerConfig as e, type SpanData as f, createLogger as g, type LoggerState as h, parseTraceparent as p };
400
+ export { type BeforeSendEvent as B, type ErrorReport as E, type InactiveSpan as I, Logger as L, type MiddlewareOptions as M, type Span as S, type User as U, _originalConsole as _, type Breadcrumb as a, type LLMUsageReport as b, type LogEntry as c, type LogLevel as d, type LoggerConfig as e, type SpanData as f, createLogger as g, type LoggerState as h, parseTraceparent as p };
@@ -397,4 +397,4 @@ declare class Logger {
397
397
  /** Create a new DeepTracer logger instance. */
398
398
  declare function createLogger(config: LoggerConfig): Logger;
399
399
 
400
- export { type BeforeSendEvent as B, type ErrorReport as E, type InactiveSpan as I, type LLMUsageReport as L, type MiddlewareOptions as M, type Span as S, type User as U, _originalConsole as _, type Breadcrumb as a, type LogEntry as b, type LogLevel as c, Logger as d, type LoggerConfig as e, type SpanData as f, createLogger as g, type LoggerState as h, parseTraceparent as p };
400
+ export { type BeforeSendEvent as B, type ErrorReport as E, type InactiveSpan as I, Logger as L, type MiddlewareOptions as M, type Span as S, type User as U, _originalConsole as _, type Breadcrumb as a, type LLMUsageReport as b, type LogEntry as c, type LogLevel as d, type LoggerConfig as e, type SpanData as f, createLogger as g, type LoggerState as h, parseTraceparent as p };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deeptracer/core",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "Core SDK for DeepTracer — Logger class, types, transport, batcher, tracing",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",