apitally 0.25.0 → 0.25.2

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.
Files changed (121) hide show
  1. package/dist/adonisjs/configure.cjs +1 -1
  2. package/dist/adonisjs/index.cjs +1 -4
  3. package/dist/adonisjs/index.cjs.map +1 -1
  4. package/dist/adonisjs/index.d.cts +2 -2
  5. package/dist/adonisjs/index.d.ts +2 -2
  6. package/dist/adonisjs/index.js +0 -2
  7. package/dist/adonisjs/index.js.map +1 -1
  8. package/dist/adonisjs/middleware.cjs +3 -3
  9. package/dist/adonisjs/provider.cjs +3 -3
  10. package/dist/common/client.cjs +11 -11
  11. package/dist/common/client.cjs.map +1 -1
  12. package/dist/common/client.js +1 -1
  13. package/dist/common/client.js.map +1 -1
  14. package/dist/common/requestLogger.cjs +3 -3
  15. package/dist/common/requestLogger.d.cts +0 -2
  16. package/dist/common/requestLogger.d.ts +0 -2
  17. package/dist/common/serverErrorCounter.cjs +1 -1
  18. package/dist/common/spanCollector.cjs +21 -39
  19. package/dist/common/spanCollector.cjs.map +1 -1
  20. package/dist/common/spanCollector.d.cts +1 -6
  21. package/dist/common/spanCollector.d.ts +1 -6
  22. package/dist/common/spanCollector.js +20 -38
  23. package/dist/common/spanCollector.js.map +1 -1
  24. package/dist/elysia/index.cjs +1 -4
  25. package/dist/elysia/index.cjs.map +1 -1
  26. package/dist/elysia/index.d.cts +2 -2
  27. package/dist/elysia/index.d.ts +2 -2
  28. package/dist/elysia/index.js +0 -2
  29. package/dist/elysia/index.js.map +1 -1
  30. package/dist/elysia/plugin.cjs +7 -7
  31. package/dist/elysia/plugin.d.cts +2 -2
  32. package/dist/elysia/plugin.d.ts +2 -2
  33. package/dist/elysia/utils.cjs +1 -1
  34. package/dist/express/index.cjs +1 -4
  35. package/dist/express/index.cjs.map +1 -1
  36. package/dist/express/index.d.cts +2 -2
  37. package/dist/express/index.d.ts +2 -2
  38. package/dist/express/index.js +0 -2
  39. package/dist/express/index.js.map +1 -1
  40. package/dist/express/middleware.cjs +7 -7
  41. package/dist/express/middleware.d.cts +2 -2
  42. package/dist/express/middleware.d.ts +2 -2
  43. package/dist/fastify/index.cjs +1 -4
  44. package/dist/fastify/index.cjs.map +1 -1
  45. package/dist/fastify/index.d.cts +2 -2
  46. package/dist/fastify/index.d.ts +2 -2
  47. package/dist/fastify/index.js +0 -2
  48. package/dist/fastify/index.js.map +1 -1
  49. package/dist/fastify/plugin.cjs +6 -6
  50. package/dist/fastify/plugin.d.cts +2 -2
  51. package/dist/fastify/plugin.d.ts +2 -2
  52. package/dist/h3/index.cjs +1 -4
  53. package/dist/h3/index.cjs.map +1 -1
  54. package/dist/h3/index.d.cts +2 -2
  55. package/dist/h3/index.d.ts +2 -2
  56. package/dist/h3/index.js +0 -2
  57. package/dist/h3/index.js.map +1 -1
  58. package/dist/h3/plugin.cjs +7 -7
  59. package/dist/h3/plugin.d.cts +2 -2
  60. package/dist/h3/plugin.d.ts +2 -2
  61. package/dist/h3/utils.cjs +1 -1
  62. package/dist/hapi/index.cjs +1 -4
  63. package/dist/hapi/index.cjs.map +1 -1
  64. package/dist/hapi/index.d.cts +2 -2
  65. package/dist/hapi/index.d.ts +2 -2
  66. package/dist/hapi/index.js +0 -2
  67. package/dist/hapi/index.js.map +1 -1
  68. package/dist/hapi/plugin.cjs +5 -5
  69. package/dist/hapi/plugin.d.cts +2 -2
  70. package/dist/hapi/plugin.d.ts +2 -2
  71. package/dist/hapi/utils.cjs +1 -1
  72. package/dist/hono/index.cjs +1 -4
  73. package/dist/hono/index.cjs.map +1 -1
  74. package/dist/hono/index.d.cts +2 -2
  75. package/dist/hono/index.d.ts +2 -2
  76. package/dist/hono/index.js +0 -2
  77. package/dist/hono/index.js.map +1 -1
  78. package/dist/hono/middleware.cjs +7 -7
  79. package/dist/hono/middleware.d.cts +2 -2
  80. package/dist/hono/middleware.d.ts +2 -2
  81. package/dist/hono/utils.cjs +1 -1
  82. package/dist/hono/utils.d.cts +1 -1
  83. package/dist/hono/utils.d.ts +1 -1
  84. package/dist/koa/index.cjs +1 -4
  85. package/dist/koa/index.cjs.map +1 -1
  86. package/dist/koa/index.d.cts +2 -2
  87. package/dist/koa/index.d.ts +2 -2
  88. package/dist/koa/index.js +0 -2
  89. package/dist/koa/index.js.map +1 -1
  90. package/dist/koa/middleware.cjs +5 -5
  91. package/dist/koa/middleware.d.cts +2 -2
  92. package/dist/koa/middleware.d.ts +2 -2
  93. package/dist/loggers/console.d.cts +0 -2
  94. package/dist/loggers/console.d.ts +0 -2
  95. package/dist/loggers/hapi.d.cts +0 -2
  96. package/dist/loggers/hapi.d.ts +0 -2
  97. package/dist/loggers/index.cjs +5 -5
  98. package/dist/loggers/index.d.cts +0 -2
  99. package/dist/loggers/index.d.ts +0 -2
  100. package/dist/loggers/nestjs.cjs +1 -1
  101. package/dist/loggers/nestjs.d.cts +0 -2
  102. package/dist/loggers/nestjs.d.ts +0 -2
  103. package/dist/loggers/pino.cjs +1 -1
  104. package/dist/loggers/pino.d.cts +0 -2
  105. package/dist/loggers/pino.d.ts +0 -2
  106. package/dist/loggers/winston.cjs +1 -1
  107. package/dist/loggers/winston.d.cts +0 -2
  108. package/dist/loggers/winston.d.ts +0 -2
  109. package/dist/nestjs/index.cjs +0 -3
  110. package/dist/nestjs/index.cjs.map +1 -1
  111. package/dist/nestjs/index.d.cts +3 -3
  112. package/dist/nestjs/index.d.ts +3 -3
  113. package/dist/nestjs/index.js +0 -2
  114. package/dist/nestjs/index.js.map +1 -1
  115. package/dist/otel/index.cjs +29 -0
  116. package/dist/otel/index.cjs.map +1 -0
  117. package/dist/otel/index.d.cts +2 -0
  118. package/dist/otel/index.d.ts +2 -0
  119. package/dist/otel/index.js +5 -0
  120. package/dist/otel/index.js.map +1 -0
  121. package/package.json +16 -2
@@ -1,6 +1,4 @@
1
1
  import { SpanProcessor, Span, ReadableSpan } from '@opentelemetry/sdk-trace-base';
2
- import { Logger } from './logging.js';
3
- import 'winston';
4
2
 
5
3
  type SpanData = {
6
4
  spanId: string;
@@ -25,11 +23,8 @@ declare class SpanCollector implements SpanProcessor {
25
23
  private collectedSpans;
26
24
  private traceStartTimes;
27
25
  private maintainIntervalId?;
28
- private contextManager?;
29
26
  private tracer?;
30
- private logger?;
31
- constructor(enabled: boolean, logger?: Logger);
32
- private setupTracerProvider;
27
+ constructor(enabled: boolean);
33
28
  startSpan(): SpanHandle;
34
29
  private getAndClearSpans;
35
30
  onStart(span: Span): void;
@@ -1,15 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- var _a;
4
3
  import { context, SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
5
- import { AsyncLocalStorageContextManager as _AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
6
- import { BasicTracerProvider } from "@opentelemetry/sdk-trace-base";
7
4
  import { ApitallyClient } from "./client.js";
8
- let AsyncLocalStorageContextManager = (_a = class extends _AsyncLocalStorageContextManager {
9
- enterWith(ctx) {
10
- this._asyncLocalStorage.enterWith(ctx);
11
- }
12
- }, __name(_a, "AsyncLocalStorageContextManager"), _a);
13
5
  const TRACE_MAX_AGE = 5 * 60 * 1e3;
14
6
  const _SpanCollector = class _SpanCollector {
15
7
  enabled;
@@ -17,30 +9,16 @@ const _SpanCollector = class _SpanCollector {
17
9
  collectedSpans = /* @__PURE__ */ new Map();
18
10
  traceStartTimes = /* @__PURE__ */ new Map();
19
11
  maintainIntervalId;
20
- contextManager;
21
12
  tracer;
22
- logger;
23
- constructor(enabled, logger) {
13
+ constructor(enabled) {
24
14
  this.enabled = enabled;
25
- this.logger = logger;
26
15
  if (enabled) {
27
- this.setupTracerProvider();
16
+ this.tracer = trace.getTracer("apitally");
28
17
  this.maintainIntervalId = setInterval(() => {
29
18
  this.maintain();
30
19
  }, 6e4);
31
20
  }
32
21
  }
33
- setupTracerProvider() {
34
- this.contextManager = new AsyncLocalStorageContextManager();
35
- context.setGlobalContextManager(this.contextManager);
36
- const provider = new BasicTracerProvider({
37
- spanProcessors: [
38
- this
39
- ]
40
- });
41
- trace.setGlobalTracerProvider(provider);
42
- this.tracer = trace.getTracer("apitally");
43
- }
44
22
  startSpan() {
45
23
  if (!this.enabled || !this.tracer) {
46
24
  return {
@@ -71,8 +49,12 @@ const _SpanCollector = class _SpanCollector {
71
49
  return context.with(ctx, fn);
72
50
  }, "runInContext"),
73
51
  enterContext: /* @__PURE__ */ __name(() => {
74
- var _a2;
75
- (_a2 = this.contextManager) == null ? void 0 : _a2.enterWith(ctx);
52
+ var _a, _b, _c;
53
+ try {
54
+ const contextManager = (_b = (_a = context)._getContextManager) == null ? void 0 : _b.call(_a);
55
+ (_c = contextManager == null ? void 0 : contextManager._asyncLocalStorage) == null ? void 0 : _c.enterWith(ctx);
56
+ } catch {
57
+ }
76
58
  }, "enterContext"),
77
59
  end: /* @__PURE__ */ __name(() => {
78
60
  if (ended) return;
@@ -90,14 +72,14 @@ const _SpanCollector = class _SpanCollector {
90
72
  return spans;
91
73
  }
92
74
  onStart(span) {
93
- var _a2;
75
+ var _a;
94
76
  if (!this.enabled) return;
95
77
  const ctx = span.spanContext();
96
78
  const traceId = ctx.traceId;
97
79
  const spanId = ctx.spanId;
98
80
  const includedSpans = this.includedSpanIds.get(traceId);
99
81
  if (!includedSpans) return;
100
- const parentSpanId = (_a2 = span.parentSpanContext) == null ? void 0 : _a2.spanId;
82
+ const parentSpanId = (_a = span.parentSpanContext) == null ? void 0 : _a.spanId;
101
83
  if (parentSpanId && includedSpans.has(parentSpanId)) {
102
84
  includedSpans.add(spanId);
103
85
  }
@@ -115,11 +97,11 @@ const _SpanCollector = class _SpanCollector {
115
97
  }
116
98
  }
117
99
  serializeSpan(span) {
118
- var _a2;
100
+ var _a;
119
101
  const ctx = span.spanContext();
120
102
  const data = {
121
103
  spanId: ctx.spanId,
122
- parentSpanId: ((_a2 = span.parentSpanContext) == null ? void 0 : _a2.spanId) || null,
104
+ parentSpanId: ((_a = span.parentSpanContext) == null ? void 0 : _a.spanId) || null,
123
105
  name: span.name,
124
106
  kind: SpanKind[span.kind] ?? "INTERNAL",
125
107
  // HrTime is [seconds, nanoseconds], convert to nanoseconds as string to avoid precision loss
@@ -169,20 +151,20 @@ const _ApitallySpanProcessor = class _ApitallySpanProcessor {
169
151
  }
170
152
  }
171
153
  onStart(span) {
172
- var _a2;
173
- (_a2 = this.getCollector()) == null ? void 0 : _a2.onStart(span);
154
+ var _a;
155
+ (_a = this.getCollector()) == null ? void 0 : _a.onStart(span);
174
156
  }
175
157
  onEnd(span) {
176
- var _a2;
177
- (_a2 = this.getCollector()) == null ? void 0 : _a2.onEnd(span);
158
+ var _a;
159
+ (_a = this.getCollector()) == null ? void 0 : _a.onEnd(span);
178
160
  }
179
161
  async shutdown() {
180
- var _a2;
181
- (_a2 = this.getCollector()) == null ? void 0 : _a2.shutdown();
162
+ var _a;
163
+ (_a = this.getCollector()) == null ? void 0 : _a.shutdown();
182
164
  }
183
165
  async forceFlush() {
184
- var _a2;
185
- (_a2 = this.getCollector()) == null ? void 0 : _a2.forceFlush();
166
+ var _a;
167
+ (_a = this.getCollector()) == null ? void 0 : _a.forceFlush();
186
168
  }
187
169
  };
188
170
  __name(_ApitallySpanProcessor, "ApitallySpanProcessor");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/common/spanCollector.ts"],"sourcesContent":["import {\n context,\n type Context,\n SpanKind,\n SpanStatusCode,\n trace,\n type Tracer,\n} from \"@opentelemetry/api\";\nimport { AsyncLocalStorageContextManager as _AsyncLocalStorageContextManager } from \"@opentelemetry/context-async-hooks\";\nimport {\n BasicTracerProvider,\n type ReadableSpan,\n type Span,\n SpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\n\nimport { ApitallyClient } from \"./client.js\";\nimport { Logger } from \"./logging.js\";\n\n/**\n * Extends the official AsyncLocalStorageContextManager to add enterWith support\n * for frameworks that need to persist context across hook boundaries (e.g. Elysia).\n */\nclass AsyncLocalStorageContextManager extends _AsyncLocalStorageContextManager {\n enterWith(ctx: Context): void {\n // @ts-expect-error: _asyncLocalStorage is private\n this._asyncLocalStorage.enterWith(ctx);\n }\n}\n\nexport type SpanData = {\n spanId: string;\n parentSpanId: string | null;\n name: string;\n kind: string;\n startTime: string; // bigint as string\n endTime: string; // bigint as string\n status?: string;\n attributes?: Record<string, unknown>;\n};\n\nexport type SpanHandle = {\n traceId?: string;\n setName: (name: string) => void;\n runInContext: <T>(fn: () => T) => T;\n enterContext: () => void;\n end: () => SpanData[] | undefined;\n};\n\nconst TRACE_MAX_AGE = 5 * 60 * 1000; // 5 minutes\n\nexport default class SpanCollector implements SpanProcessor {\n public enabled: boolean;\n private includedSpanIds: Map<string, Set<string>> = new Map();\n private collectedSpans: Map<string, SpanData[]> = new Map();\n private traceStartTimes: Map<string, number> = new Map();\n private maintainIntervalId?: NodeJS.Timeout;\n private contextManager?: AsyncLocalStorageContextManager;\n private tracer?: Tracer;\n private logger?: Logger;\n\n constructor(enabled: boolean, logger?: Logger) {\n this.enabled = enabled;\n this.logger = logger;\n\n if (enabled) {\n this.setupTracerProvider();\n this.maintainIntervalId = setInterval(() => {\n this.maintain();\n }, 60_000);\n }\n }\n\n private setupTracerProvider() {\n this.contextManager = new AsyncLocalStorageContextManager();\n context.setGlobalContextManager(this.contextManager);\n\n const provider = new BasicTracerProvider({\n spanProcessors: [this],\n });\n trace.setGlobalTracerProvider(provider);\n this.tracer = trace.getTracer(\"apitally\");\n }\n\n startSpan(): SpanHandle {\n if (!this.enabled || !this.tracer) {\n return {\n setName: () => void 0,\n runInContext: <T>(fn: () => T): T => {\n return fn();\n },\n enterContext: () => void 0,\n end: () => undefined,\n };\n }\n\n const span = this.tracer.startSpan(\"root\");\n const spanCtx = span.spanContext();\n const traceId = spanCtx.traceId;\n const ctx = trace.setSpan(context.active(), span);\n let ended = false;\n\n this.includedSpanIds.set(traceId, new Set([spanCtx.spanId]));\n this.collectedSpans.set(traceId, []);\n this.traceStartTimes.set(traceId, Date.now());\n\n return {\n traceId,\n setName: (name: string) => {\n span.updateName(name);\n },\n runInContext: <T>(fn: () => T): T => {\n return context.with(ctx, fn);\n },\n enterContext: () => {\n this.contextManager?.enterWith(ctx);\n },\n end: () => {\n if (ended) return;\n span.end();\n ended = true;\n return this.getAndClearSpans(traceId);\n },\n };\n }\n\n private getAndClearSpans(traceId: string): SpanData[] {\n const spans = this.collectedSpans.get(traceId) ?? [];\n this.collectedSpans.delete(traceId);\n this.includedSpanIds.delete(traceId);\n this.traceStartTimes.delete(traceId);\n return spans;\n }\n\n onStart(span: Span): void {\n if (!this.enabled) return;\n\n const ctx = span.spanContext();\n const traceId = ctx.traceId;\n const spanId = ctx.spanId;\n\n const includedSpans = this.includedSpanIds.get(traceId);\n if (!includedSpans) return;\n\n const parentSpanId = span.parentSpanContext?.spanId;\n if (parentSpanId && includedSpans.has(parentSpanId)) {\n includedSpans.add(spanId);\n }\n }\n\n onEnd(span: ReadableSpan): void {\n if (!this.enabled) return;\n\n const ctx = span.spanContext();\n const traceId = ctx.traceId;\n const spanId = ctx.spanId;\n\n const includedSpans = this.includedSpanIds.get(traceId);\n if (!includedSpans || !includedSpans.has(spanId)) return;\n\n const spans = this.collectedSpans.get(traceId);\n if (spans) {\n spans.push(this.serializeSpan(span));\n }\n }\n\n private serializeSpan(span: ReadableSpan): SpanData {\n const ctx = span.spanContext();\n\n const data: SpanData = {\n spanId: ctx.spanId,\n parentSpanId: span.parentSpanContext?.spanId || null,\n name: span.name,\n kind: SpanKind[span.kind] ?? \"INTERNAL\",\n // HrTime is [seconds, nanoseconds], convert to nanoseconds as string to avoid precision loss\n startTime: (\n BigInt(span.startTime[0]) * 1_000_000_000n +\n BigInt(span.startTime[1])\n ).toString(),\n endTime: (\n BigInt(span.endTime[0]) * 1_000_000_000n +\n BigInt(span.endTime[1])\n ).toString(),\n };\n\n if (span.status.code !== SpanStatusCode.UNSET) {\n data.status = SpanStatusCode[span.status.code];\n }\n\n if (span.attributes && Object.keys(span.attributes).length > 0) {\n data.attributes = { ...span.attributes };\n }\n\n return data;\n }\n\n private maintain() {\n const now = Date.now();\n for (const [traceId, startTime] of this.traceStartTimes) {\n if (now - startTime > TRACE_MAX_AGE) {\n this.collectedSpans.delete(traceId);\n this.includedSpanIds.delete(traceId);\n this.traceStartTimes.delete(traceId);\n }\n }\n }\n\n async shutdown(): Promise<void> {\n this.enabled = false;\n this.includedSpanIds.clear();\n this.collectedSpans.clear();\n this.traceStartTimes.clear();\n if (this.maintainIntervalId) {\n clearInterval(this.maintainIntervalId);\n }\n }\n\n async forceFlush(): Promise<void> {\n // Nothing to flush since we collect spans synchronously\n }\n}\n\nexport class ApitallySpanProcessor implements SpanProcessor {\n private getCollector(): SpanCollector | undefined {\n try {\n return ApitallyClient.getInstance().spanCollector;\n } catch {\n return undefined;\n }\n }\n\n onStart(span: Span) {\n this.getCollector()?.onStart(span);\n }\n\n onEnd(span: ReadableSpan) {\n this.getCollector()?.onEnd(span);\n }\n\n async shutdown() {\n this.getCollector()?.shutdown();\n }\n\n async forceFlush() {\n this.getCollector()?.forceFlush();\n }\n}\n"],"mappings":"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","names":["context","SpanKind","SpanStatusCode","trace","AsyncLocalStorageContextManager","_AsyncLocalStorageContextManager","BasicTracerProvider","ApitallyClient","enterWith","ctx","_asyncLocalStorage","TRACE_MAX_AGE","SpanCollector","enabled","includedSpanIds","Map","collectedSpans","traceStartTimes","maintainIntervalId","contextManager","tracer","logger","setupTracerProvider","setInterval","maintain","setGlobalContextManager","provider","spanProcessors","setGlobalTracerProvider","getTracer","startSpan","setName","runInContext","fn","enterContext","end","undefined","span","spanCtx","spanContext","traceId","setSpan","active","ended","set","Set","spanId","Date","now","name","updateName","with","_a","getAndClearSpans","spans","get","delete","onStart","includedSpans","parentSpanId","parentSpanContext","has","add","onEnd","push","serializeSpan","data","kind","startTime","BigInt","toString","endTime","status","code","UNSET","attributes","Object","keys","length","shutdown","clear","clearInterval","forceFlush","ApitallySpanProcessor","getCollector","getInstance","spanCollector"]}
1
+ {"version":3,"sources":["../../src/common/spanCollector.ts"],"sourcesContent":["import {\n context,\n SpanKind,\n SpanStatusCode,\n trace,\n type Tracer,\n} from \"@opentelemetry/api\";\nimport {\n type ReadableSpan,\n type Span,\n SpanProcessor,\n} from \"@opentelemetry/sdk-trace-base\";\n\nimport { ApitallyClient } from \"./client.js\";\n\nexport type SpanData = {\n spanId: string;\n parentSpanId: string | null;\n name: string;\n kind: string;\n startTime: string; // bigint as string\n endTime: string; // bigint as string\n status?: string;\n attributes?: Record<string, unknown>;\n};\n\nexport type SpanHandle = {\n traceId?: string;\n setName: (name: string) => void;\n runInContext: <T>(fn: () => T) => T;\n enterContext: () => void;\n end: () => SpanData[] | undefined;\n};\n\nconst TRACE_MAX_AGE = 5 * 60 * 1000; // 5 minutes\n\nexport default class SpanCollector implements SpanProcessor {\n public enabled: boolean;\n private includedSpanIds: Map<string, Set<string>> = new Map();\n private collectedSpans: Map<string, SpanData[]> = new Map();\n private traceStartTimes: Map<string, number> = new Map();\n private maintainIntervalId?: NodeJS.Timeout;\n private tracer?: Tracer;\n\n constructor(enabled: boolean) {\n this.enabled = enabled;\n\n if (enabled) {\n this.tracer = trace.getTracer(\"apitally\");\n this.maintainIntervalId = setInterval(() => {\n this.maintain();\n }, 60_000);\n }\n }\n\n startSpan(): SpanHandle {\n if (!this.enabled || !this.tracer) {\n return {\n setName: () => void 0,\n runInContext: <T>(fn: () => T): T => {\n return fn();\n },\n enterContext: () => void 0,\n end: () => undefined,\n };\n }\n\n const span = this.tracer.startSpan(\"root\");\n const spanCtx = span.spanContext();\n const traceId = spanCtx.traceId;\n const ctx = trace.setSpan(context.active(), span);\n let ended = false;\n\n this.includedSpanIds.set(traceId, new Set([spanCtx.spanId]));\n this.collectedSpans.set(traceId, []);\n this.traceStartTimes.set(traceId, Date.now());\n\n return {\n traceId,\n setName: (name: string) => {\n span.updateName(name);\n },\n runInContext: <T>(fn: () => T): T => {\n return context.with(ctx, fn);\n },\n enterContext: () => {\n try {\n // Access the global context manager's internal AsyncLocalStorage\n const contextManager = (context as any)._getContextManager?.();\n contextManager?._asyncLocalStorage?.enterWith(ctx);\n } catch {\n // Ignore errors accessing internals\n }\n },\n end: () => {\n if (ended) return;\n span.end();\n ended = true;\n return this.getAndClearSpans(traceId);\n },\n };\n }\n\n private getAndClearSpans(traceId: string): SpanData[] {\n const spans = this.collectedSpans.get(traceId) ?? [];\n this.collectedSpans.delete(traceId);\n this.includedSpanIds.delete(traceId);\n this.traceStartTimes.delete(traceId);\n return spans;\n }\n\n onStart(span: Span): void {\n if (!this.enabled) return;\n\n const ctx = span.spanContext();\n const traceId = ctx.traceId;\n const spanId = ctx.spanId;\n\n const includedSpans = this.includedSpanIds.get(traceId);\n if (!includedSpans) return;\n\n const parentSpanId = span.parentSpanContext?.spanId;\n if (parentSpanId && includedSpans.has(parentSpanId)) {\n includedSpans.add(spanId);\n }\n }\n\n onEnd(span: ReadableSpan): void {\n if (!this.enabled) return;\n\n const ctx = span.spanContext();\n const traceId = ctx.traceId;\n const spanId = ctx.spanId;\n\n const includedSpans = this.includedSpanIds.get(traceId);\n if (!includedSpans || !includedSpans.has(spanId)) return;\n\n const spans = this.collectedSpans.get(traceId);\n if (spans) {\n spans.push(this.serializeSpan(span));\n }\n }\n\n private serializeSpan(span: ReadableSpan): SpanData {\n const ctx = span.spanContext();\n\n const data: SpanData = {\n spanId: ctx.spanId,\n parentSpanId: span.parentSpanContext?.spanId || null,\n name: span.name,\n kind: SpanKind[span.kind] ?? \"INTERNAL\",\n // HrTime is [seconds, nanoseconds], convert to nanoseconds as string to avoid precision loss\n startTime: (\n BigInt(span.startTime[0]) * 1_000_000_000n +\n BigInt(span.startTime[1])\n ).toString(),\n endTime: (\n BigInt(span.endTime[0]) * 1_000_000_000n +\n BigInt(span.endTime[1])\n ).toString(),\n };\n\n if (span.status.code !== SpanStatusCode.UNSET) {\n data.status = SpanStatusCode[span.status.code];\n }\n\n if (span.attributes && Object.keys(span.attributes).length > 0) {\n data.attributes = { ...span.attributes };\n }\n\n return data;\n }\n\n private maintain() {\n const now = Date.now();\n for (const [traceId, startTime] of this.traceStartTimes) {\n if (now - startTime > TRACE_MAX_AGE) {\n this.collectedSpans.delete(traceId);\n this.includedSpanIds.delete(traceId);\n this.traceStartTimes.delete(traceId);\n }\n }\n }\n\n async shutdown(): Promise<void> {\n this.enabled = false;\n this.includedSpanIds.clear();\n this.collectedSpans.clear();\n this.traceStartTimes.clear();\n if (this.maintainIntervalId) {\n clearInterval(this.maintainIntervalId);\n }\n }\n\n async forceFlush(): Promise<void> {\n // Nothing to flush since we collect spans synchronously\n }\n}\n\nexport class ApitallySpanProcessor implements SpanProcessor {\n private getCollector(): SpanCollector | undefined {\n try {\n return ApitallyClient.getInstance().spanCollector;\n } catch {\n return undefined;\n }\n }\n\n onStart(span: Span) {\n this.getCollector()?.onStart(span);\n }\n\n onEnd(span: ReadableSpan) {\n this.getCollector()?.onEnd(span);\n }\n\n async shutdown() {\n this.getCollector()?.shutdown();\n }\n\n async forceFlush() {\n this.getCollector()?.forceFlush();\n }\n}\n"],"mappings":"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","names":["context","SpanKind","SpanStatusCode","trace","ApitallyClient","TRACE_MAX_AGE","SpanCollector","enabled","includedSpanIds","Map","collectedSpans","traceStartTimes","maintainIntervalId","tracer","getTracer","setInterval","maintain","startSpan","setName","runInContext","fn","enterContext","end","undefined","span","spanCtx","spanContext","traceId","ctx","setSpan","active","ended","set","Set","spanId","Date","now","name","updateName","with","contextManager","_getContextManager","_asyncLocalStorage","enterWith","getAndClearSpans","spans","get","delete","onStart","includedSpans","parentSpanId","parentSpanContext","has","add","onEnd","push","serializeSpan","data","kind","startTime","BigInt","toString","endTime","status","code","UNSET","attributes","Object","keys","length","shutdown","clear","clearInterval","forceFlush","ApitallySpanProcessor","getCollector","getInstance","spanCollector"]}
@@ -28,15 +28,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var elysia_exports = {};
30
30
  __export(elysia_exports, {
31
- ApitallySpanProcessor: () => import_spanCollector.ApitallySpanProcessor,
32
31
  apitallyPlugin: () => import_plugin.default
33
32
  });
34
33
  module.exports = __toCommonJS(elysia_exports);
35
- var import_spanCollector = require("../common/spanCollector.js");
36
- var import_plugin = __toESM(require("./plugin.js"), 1);
34
+ var import_plugin = __toESM(require('./plugin.cjs'), 1);
37
35
  // Annotate the CommonJS export names for ESM import in node:
38
36
  0 && (module.exports = {
39
- ApitallySpanProcessor,
40
37
  apitallyPlugin
41
38
  });
42
39
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/elysia/index.ts"],"sourcesContent":["export { ApitallySpanProcessor } from \"../common/spanCollector.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { default as apitallyPlugin } from \"./plugin.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;2BAAsC;AAEtC,oBAA0C;","names":[]}
1
+ {"version":3,"sources":["../../src/elysia/index.ts"],"sourcesContent":["export type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { default as apitallyPlugin } from \"./plugin.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;;;;oBAA0C;","names":[]}
@@ -1,12 +1,12 @@
1
- export { ApitallySpanProcessor } from '../common/spanCollector.cjs';
2
1
  export { ApitallyConfig, ApitallyConsumer } from '../common/types.cjs';
3
2
  export { default as apitallyPlugin } from './plugin.cjs';
4
- import '@opentelemetry/sdk-trace-base';
5
3
  import '../common/logging.cjs';
6
4
  import 'winston';
7
5
  import '../common/requestLogger.cjs';
8
6
  import 'node:buffer';
9
7
  import 'node:http';
8
+ import '../common/spanCollector.cjs';
9
+ import '@opentelemetry/sdk-trace-base';
10
10
  import '../common/tempGzipFile.cjs';
11
11
  import 'elysia';
12
12
  import '../common/client.cjs';
@@ -1,12 +1,12 @@
1
- export { ApitallySpanProcessor } from '../common/spanCollector.js';
2
1
  export { ApitallyConfig, ApitallyConsumer } from '../common/types.js';
3
2
  export { default as apitallyPlugin } from './plugin.js';
4
- import '@opentelemetry/sdk-trace-base';
5
3
  import '../common/logging.js';
6
4
  import 'winston';
7
5
  import '../common/requestLogger.js';
8
6
  import 'node:buffer';
9
7
  import 'node:http';
8
+ import '../common/spanCollector.js';
9
+ import '@opentelemetry/sdk-trace-base';
10
10
  import '../common/tempGzipFile.js';
11
11
  import 'elysia';
12
12
  import '../common/client.js';
@@ -1,7 +1,5 @@
1
- import { ApitallySpanProcessor } from "../common/spanCollector.js";
2
1
  import { default as default2 } from "./plugin.js";
3
2
  export {
4
- ApitallySpanProcessor,
5
3
  default2 as apitallyPlugin
6
4
  };
7
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/elysia/index.ts"],"sourcesContent":["export { ApitallySpanProcessor } from \"../common/spanCollector.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { default as apitallyPlugin } from \"./plugin.js\";\n"],"mappings":"AAAA,SAASA,6BAA6B;AAEtC,SAAoBC,WAAXC,gBAAiC;","names":["ApitallySpanProcessor","apitallyPlugin","default"]}
1
+ {"version":3,"sources":["../../src/elysia/index.ts"],"sourcesContent":["export type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { default as apitallyPlugin } from \"./plugin.js\";\n"],"mappings":"AACA,SAAoBA,WAAXC,gBAAiC;","names":["apitallyPlugin","default"]}
@@ -25,13 +25,13 @@ module.exports = __toCommonJS(plugin_exports);
25
25
  var import_elysia = require("elysia");
26
26
  var import_node_async_hooks = require("node:async_hooks");
27
27
  var import_node_perf_hooks = require("node:perf_hooks");
28
- var import_client = require("../common/client.js");
29
- var import_consumerRegistry = require("../common/consumerRegistry.js");
30
- var import_headers = require("../common/headers.js");
31
- var import_requestLogger = require("../common/requestLogger.js");
32
- var import_response = require("../common/response.js");
33
- var import_loggers = require("../loggers/index.js");
34
- var import_utils = require("./utils.js");
28
+ var import_client = require('../common/client.cjs');
29
+ var import_consumerRegistry = require('../common/consumerRegistry.cjs');
30
+ var import_headers = require('../common/headers.cjs');
31
+ var import_requestLogger = require('../common/requestLogger.cjs');
32
+ var import_response = require('../common/response.cjs');
33
+ var import_loggers = require('../loggers/index.cjs');
34
+ var import_utils = require('./utils.cjs');
35
35
  const START_TIME_SYMBOL = /* @__PURE__ */ Symbol("apitally.startTime");
36
36
  const REQUEST_BODY_SYMBOL = /* @__PURE__ */ Symbol("apitally.requestBody");
37
37
  const RESPONSE_SYMBOL = /* @__PURE__ */ Symbol("apitally.response");
@@ -1,15 +1,15 @@
1
- import { SpanHandle } from '../common/spanCollector.cjs';
2
1
  import { ApitallyConfig, ApitallyConsumer } from '../common/types.cjs';
3
2
  import { Elysia } from 'elysia';
4
3
  import { ApitallyClient } from '../common/client.cjs';
5
4
  import { CapturedResponse } from '../common/response.cjs';
6
- import '@opentelemetry/sdk-trace-base';
5
+ import { SpanHandle } from '../common/spanCollector.cjs';
7
6
  import '../common/logging.cjs';
8
7
  import 'winston';
9
8
  import '../common/requestLogger.cjs';
10
9
  import 'node:buffer';
11
10
  import 'node:http';
12
11
  import '../common/tempGzipFile.cjs';
12
+ import '@opentelemetry/sdk-trace-base';
13
13
  import '../common/consumerRegistry.cjs';
14
14
  import '../common/requestCounter.cjs';
15
15
  import '../common/serverErrorCounter.cjs';
@@ -1,15 +1,15 @@
1
- import { SpanHandle } from '../common/spanCollector.js';
2
1
  import { ApitallyConfig, ApitallyConsumer } from '../common/types.js';
3
2
  import { Elysia } from 'elysia';
4
3
  import { ApitallyClient } from '../common/client.js';
5
4
  import { CapturedResponse } from '../common/response.js';
6
- import '@opentelemetry/sdk-trace-base';
5
+ import { SpanHandle } from '../common/spanCollector.js';
7
6
  import '../common/logging.js';
8
7
  import 'winston';
9
8
  import '../common/requestLogger.js';
10
9
  import 'node:buffer';
11
10
  import 'node:http';
12
11
  import '../common/tempGzipFile.js';
12
+ import '@opentelemetry/sdk-trace-base';
13
13
  import '../common/consumerRegistry.js';
14
14
  import '../common/requestCounter.js';
15
15
  import '../common/serverErrorCounter.js';
@@ -22,7 +22,7 @@ __export(utils_exports, {
22
22
  getAppInfo: () => getAppInfo
23
23
  });
24
24
  module.exports = __toCommonJS(utils_exports);
25
- var import_packageVersions = require("../common/packageVersions.js");
25
+ var import_packageVersions = require('../common/packageVersions.cjs');
26
26
  function getAppInfo(app, appVersion) {
27
27
  const versions = [];
28
28
  if (process.versions.node) {
@@ -18,16 +18,13 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var express_exports = {};
20
20
  __export(express_exports, {
21
- ApitallySpanProcessor: () => import_spanCollector.ApitallySpanProcessor,
22
21
  setConsumer: () => import_middleware.setConsumer,
23
22
  useApitally: () => import_middleware.useApitally
24
23
  });
25
24
  module.exports = __toCommonJS(express_exports);
26
- var import_spanCollector = require("../common/spanCollector.js");
27
- var import_middleware = require("./middleware.js");
25
+ var import_middleware = require('./middleware.cjs');
28
26
  // Annotate the CommonJS export names for ESM import in node:
29
27
  0 && (module.exports = {
30
- ApitallySpanProcessor,
31
28
  setConsumer,
32
29
  useApitally
33
30
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/express/index.ts"],"sourcesContent":["export { ApitallySpanProcessor } from \"../common/spanCollector.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { setConsumer, useApitally } from \"./middleware.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;2BAAsC;AAEtC,wBAAyC;","names":[]}
1
+ {"version":3,"sources":["../../src/express/index.ts"],"sourcesContent":["export type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { setConsumer, useApitally } from \"./middleware.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AACA;;;;;;wBAAyC;","names":[]}
@@ -1,11 +1,11 @@
1
- export { ApitallySpanProcessor } from '../common/spanCollector.cjs';
2
1
  export { ApitallyConfig, ApitallyConsumer } from '../common/types.cjs';
3
2
  export { setConsumer, useApitally } from './middleware.cjs';
4
- import '@opentelemetry/sdk-trace-base';
5
3
  import '../common/logging.cjs';
6
4
  import 'winston';
7
5
  import '../common/requestLogger.cjs';
8
6
  import 'node:buffer';
9
7
  import 'node:http';
8
+ import '../common/spanCollector.cjs';
9
+ import '@opentelemetry/sdk-trace-base';
10
10
  import '../common/tempGzipFile.cjs';
11
11
  import 'express';
@@ -1,11 +1,11 @@
1
- export { ApitallySpanProcessor } from '../common/spanCollector.js';
2
1
  export { ApitallyConfig, ApitallyConsumer } from '../common/types.js';
3
2
  export { setConsumer, useApitally } from './middleware.js';
4
- import '@opentelemetry/sdk-trace-base';
5
3
  import '../common/logging.js';
6
4
  import 'winston';
7
5
  import '../common/requestLogger.js';
8
6
  import 'node:buffer';
9
7
  import 'node:http';
8
+ import '../common/spanCollector.js';
9
+ import '@opentelemetry/sdk-trace-base';
10
10
  import '../common/tempGzipFile.js';
11
11
  import 'express';
@@ -1,7 +1,5 @@
1
- import { ApitallySpanProcessor } from "../common/spanCollector.js";
2
1
  import { setConsumer, useApitally } from "./middleware.js";
3
2
  export {
4
- ApitallySpanProcessor,
5
3
  setConsumer,
6
4
  useApitally
7
5
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/express/index.ts"],"sourcesContent":["export { ApitallySpanProcessor } from \"../common/spanCollector.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { setConsumer, useApitally } from \"./middleware.js\";\n"],"mappings":"AAAA,SAASA,6BAA6B;AAEtC,SAASC,aAAaC,mBAAmB;","names":["ApitallySpanProcessor","setConsumer","useApitally"]}
1
+ {"version":3,"sources":["../../src/express/index.ts"],"sourcesContent":["export type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { setConsumer, useApitally } from \"./middleware.js\";\n"],"mappings":"AACA,SAASA,aAAaC,mBAAmB;","names":["setConsumer","useApitally"]}
@@ -25,13 +25,13 @@ __export(middleware_exports, {
25
25
  module.exports = __toCommonJS(middleware_exports);
26
26
  var import_node_async_hooks = require("node:async_hooks");
27
27
  var import_node_perf_hooks = require("node:perf_hooks");
28
- var import_client = require("../common/client.js");
29
- var import_consumerRegistry = require("../common/consumerRegistry.js");
30
- var import_headers = require("../common/headers.js");
31
- var import_packageVersions = require("../common/packageVersions.js");
32
- var import_requestLogger = require("../common/requestLogger.js");
33
- var import_loggers = require("../loggers/index.js");
34
- var import_utils = require("./utils.js");
28
+ var import_client = require('../common/client.cjs');
29
+ var import_consumerRegistry = require('../common/consumerRegistry.cjs');
30
+ var import_headers = require('../common/headers.cjs');
31
+ var import_packageVersions = require('../common/packageVersions.cjs');
32
+ var import_requestLogger = require('../common/requestLogger.cjs');
33
+ var import_loggers = require('../loggers/index.cjs');
34
+ var import_utils = require('./utils.cjs');
35
35
  function useApitally(app, config) {
36
36
  const client = new import_client.ApitallyClient(config);
37
37
  const middleware = getMiddleware(app, client);
@@ -1,12 +1,12 @@
1
- import '../common/spanCollector.cjs';
2
1
  import { ApitallyConsumer, ApitallyConfig } from '../common/types.cjs';
3
2
  import { Request, Express, Router } from 'express';
4
- import '@opentelemetry/sdk-trace-base';
5
3
  import '../common/logging.cjs';
6
4
  import 'winston';
7
5
  import '../common/requestLogger.cjs';
8
6
  import 'node:buffer';
9
7
  import 'node:http';
8
+ import '../common/spanCollector.cjs';
9
+ import '@opentelemetry/sdk-trace-base';
10
10
  import '../common/tempGzipFile.cjs';
11
11
 
12
12
  declare module "express" {
@@ -1,12 +1,12 @@
1
- import '../common/spanCollector.js';
2
1
  import { ApitallyConsumer, ApitallyConfig } from '../common/types.js';
3
2
  import { Request, Express, Router } from 'express';
4
- import '@opentelemetry/sdk-trace-base';
5
3
  import '../common/logging.js';
6
4
  import 'winston';
7
5
  import '../common/requestLogger.js';
8
6
  import 'node:buffer';
9
7
  import 'node:http';
8
+ import '../common/spanCollector.js';
9
+ import '@opentelemetry/sdk-trace-base';
10
10
  import '../common/tempGzipFile.js';
11
11
 
12
12
  declare module "express" {
@@ -28,16 +28,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var fastify_exports = {};
30
30
  __export(fastify_exports, {
31
- ApitallySpanProcessor: () => import_spanCollector.ApitallySpanProcessor,
32
31
  apitallyPlugin: () => import_plugin.default,
33
32
  setConsumer: () => import_plugin.setConsumer
34
33
  });
35
34
  module.exports = __toCommonJS(fastify_exports);
36
- var import_spanCollector = require("../common/spanCollector.js");
37
- var import_plugin = __toESM(require("./plugin.js"), 1);
35
+ var import_plugin = __toESM(require('./plugin.cjs'), 1);
38
36
  // Annotate the CommonJS export names for ESM import in node:
39
37
  0 && (module.exports = {
40
- ApitallySpanProcessor,
41
38
  apitallyPlugin,
42
39
  setConsumer
43
40
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fastify/index.ts"],"sourcesContent":["export { ApitallySpanProcessor } from \"../common/spanCollector.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { default as apitallyPlugin, setConsumer } from \"./plugin.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;2BAAsC;AAEtC,oBAAuD;","names":[]}
1
+ {"version":3,"sources":["../../src/fastify/index.ts"],"sourcesContent":["export type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { default as apitallyPlugin, setConsumer } from \"./plugin.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;;;;;oBAAuD;","names":[]}
@@ -1,12 +1,12 @@
1
- export { ApitallySpanProcessor } from '../common/spanCollector.cjs';
2
1
  export { ApitallyConfig, ApitallyConsumer } from '../common/types.cjs';
3
2
  export { default as apitallyPlugin, setConsumer } from './plugin.cjs';
4
- import '@opentelemetry/sdk-trace-base';
5
3
  import '../common/logging.cjs';
6
4
  import 'winston';
7
5
  import '../common/requestLogger.cjs';
8
6
  import 'node:buffer';
9
7
  import 'node:http';
8
+ import '../common/spanCollector.cjs';
9
+ import '@opentelemetry/sdk-trace-base';
10
10
  import '../common/tempGzipFile.cjs';
11
11
  import 'fastify';
12
12
  import 'node:async_hooks';
@@ -1,12 +1,12 @@
1
- export { ApitallySpanProcessor } from '../common/spanCollector.js';
2
1
  export { ApitallyConfig, ApitallyConsumer } from '../common/types.js';
3
2
  export { default as apitallyPlugin, setConsumer } from './plugin.js';
4
- import '@opentelemetry/sdk-trace-base';
5
3
  import '../common/logging.js';
6
4
  import 'winston';
7
5
  import '../common/requestLogger.js';
8
6
  import 'node:buffer';
9
7
  import 'node:http';
8
+ import '../common/spanCollector.js';
9
+ import '@opentelemetry/sdk-trace-base';
10
10
  import '../common/tempGzipFile.js';
11
11
  import 'fastify';
12
12
  import 'node:async_hooks';
@@ -1,7 +1,5 @@
1
- import { ApitallySpanProcessor } from "../common/spanCollector.js";
2
1
  import { default as default2, setConsumer } from "./plugin.js";
3
2
  export {
4
- ApitallySpanProcessor,
5
3
  default2 as apitallyPlugin,
6
4
  setConsumer
7
5
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fastify/index.ts"],"sourcesContent":["export { ApitallySpanProcessor } from \"../common/spanCollector.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { default as apitallyPlugin, setConsumer } from \"./plugin.js\";\n"],"mappings":"AAAA,SAASA,6BAA6B;AAEtC,SAAoBC,WAAXC,UAA2BC,mBAAmB;","names":["ApitallySpanProcessor","apitallyPlugin","default","setConsumer"]}
1
+ {"version":3,"sources":["../../src/fastify/index.ts"],"sourcesContent":["export type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { default as apitallyPlugin, setConsumer } from \"./plugin.js\";\n"],"mappings":"AACA,SAAoBA,WAAXC,UAA2BC,mBAAmB;","names":["apitallyPlugin","default","setConsumer"]}
@@ -36,12 +36,12 @@ __export(plugin_exports, {
36
36
  module.exports = __toCommonJS(plugin_exports);
37
37
  var import_fastify_plugin = __toESM(require("fastify-plugin"), 1);
38
38
  var import_node_async_hooks = require("node:async_hooks");
39
- var import_client = require("../common/client.js");
40
- var import_consumerRegistry = require("../common/consumerRegistry.js");
41
- var import_headers = require("../common/headers.js");
42
- var import_packageVersions = require("../common/packageVersions.js");
43
- var import_requestLogger = require("../common/requestLogger.js");
44
- var import_loggers = require("../loggers/index.js");
39
+ var import_client = require('../common/client.cjs');
40
+ var import_consumerRegistry = require('../common/consumerRegistry.cjs');
41
+ var import_headers = require('../common/headers.cjs');
42
+ var import_packageVersions = require('../common/packageVersions.cjs');
43
+ var import_requestLogger = require('../common/requestLogger.cjs');
44
+ var import_loggers = require('../loggers/index.cjs');
45
45
  const LOGS_SYMBOL = /* @__PURE__ */ Symbol("apitally.logs");
46
46
  const ASYNC_RESOURCE_SYMBOL = /* @__PURE__ */ Symbol("apitally.asyncResource");
47
47
  const SPAN_HANDLE_SYMBOL = /* @__PURE__ */ Symbol("apitally.spanHandle");
@@ -1,13 +1,13 @@
1
- import { SpanHandle } from '../common/spanCollector.cjs';
2
1
  import { ApitallyConsumer, ApitallyConfig } from '../common/types.cjs';
3
2
  import { FastifyError, FastifyPluginAsync, FastifyRequest } from 'fastify';
4
3
  import { AsyncResource } from 'node:async_hooks';
5
4
  import { LogRecord } from '../common/requestLogger.cjs';
6
- import '@opentelemetry/sdk-trace-base';
5
+ import { SpanHandle } from '../common/spanCollector.cjs';
7
6
  import '../common/logging.cjs';
8
7
  import 'winston';
9
8
  import 'node:buffer';
10
9
  import 'node:http';
10
+ import '@opentelemetry/sdk-trace-base';
11
11
  import '../common/tempGzipFile.cjs';
12
12
 
13
13
  declare const LOGS_SYMBOL: unique symbol;
@@ -1,13 +1,13 @@
1
- import { SpanHandle } from '../common/spanCollector.js';
2
1
  import { ApitallyConsumer, ApitallyConfig } from '../common/types.js';
3
2
  import { FastifyError, FastifyPluginAsync, FastifyRequest } from 'fastify';
4
3
  import { AsyncResource } from 'node:async_hooks';
5
4
  import { LogRecord } from '../common/requestLogger.js';
6
- import '@opentelemetry/sdk-trace-base';
5
+ import { SpanHandle } from '../common/spanCollector.js';
7
6
  import '../common/logging.js';
8
7
  import 'winston';
9
8
  import 'node:buffer';
10
9
  import 'node:http';
10
+ import '@opentelemetry/sdk-trace-base';
11
11
  import '../common/tempGzipFile.js';
12
12
 
13
13
  declare const LOGS_SYMBOL: unique symbol;
package/dist/h3/index.cjs CHANGED
@@ -18,16 +18,13 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var h3_exports = {};
20
20
  __export(h3_exports, {
21
- ApitallySpanProcessor: () => import_spanCollector.ApitallySpanProcessor,
22
21
  apitallyPlugin: () => import_plugin.apitallyPlugin,
23
22
  setConsumer: () => import_plugin.setConsumer
24
23
  });
25
24
  module.exports = __toCommonJS(h3_exports);
26
- var import_spanCollector = require("../common/spanCollector.js");
27
- var import_plugin = require("./plugin.js");
25
+ var import_plugin = require('./plugin.cjs');
28
26
  // Annotate the CommonJS export names for ESM import in node:
29
27
  0 && (module.exports = {
30
- ApitallySpanProcessor,
31
28
  apitallyPlugin,
32
29
  setConsumer
33
30
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/h3/index.ts"],"sourcesContent":["export { ApitallySpanProcessor } from \"../common/spanCollector.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { apitallyPlugin, setConsumer } from \"./plugin.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;;;2BAAsC;AAEtC,oBAA4C;","names":[]}
1
+ {"version":3,"sources":["../../src/h3/index.ts"],"sourcesContent":["export type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { apitallyPlugin, setConsumer } from \"./plugin.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AACA;;;;;;oBAA4C;","names":[]}