evlog 1.6.0 → 1.8.0

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 (136) hide show
  1. package/README.md +96 -0
  2. package/dist/_http-DVDwNag0.mjs +76 -0
  3. package/dist/_http-DVDwNag0.mjs.map +1 -0
  4. package/dist/_severity-CXfyvxQi.mjs +17 -0
  5. package/dist/_severity-CXfyvxQi.mjs.map +1 -0
  6. package/dist/adapters/axiom.d.mts +17 -15
  7. package/dist/adapters/axiom.d.mts.map +1 -0
  8. package/dist/adapters/axiom.mjs +91 -50
  9. package/dist/adapters/axiom.mjs.map +1 -0
  10. package/dist/adapters/better-stack.d.mts +63 -0
  11. package/dist/adapters/better-stack.d.mts.map +1 -0
  12. package/dist/adapters/better-stack.mjs +98 -0
  13. package/dist/adapters/better-stack.mjs.map +1 -0
  14. package/dist/adapters/otlp.d.mts +32 -30
  15. package/dist/adapters/otlp.d.mts.map +1 -0
  16. package/dist/adapters/otlp.mjs +181 -181
  17. package/dist/adapters/otlp.mjs.map +1 -0
  18. package/dist/adapters/posthog.d.mts +54 -19
  19. package/dist/adapters/posthog.d.mts.map +1 -0
  20. package/dist/adapters/posthog.mjs +156 -63
  21. package/dist/adapters/posthog.mjs.map +1 -0
  22. package/dist/adapters/sentry.d.mts +25 -23
  23. package/dist/adapters/sentry.d.mts.map +1 -0
  24. package/dist/adapters/sentry.mjs +198 -153
  25. package/dist/adapters/sentry.mjs.map +1 -0
  26. package/dist/browser.d.mts +63 -0
  27. package/dist/browser.d.mts.map +1 -0
  28. package/dist/browser.mjs +95 -0
  29. package/dist/browser.mjs.map +1 -0
  30. package/dist/enrichers.d.mts +74 -0
  31. package/dist/enrichers.d.mts.map +1 -0
  32. package/dist/enrichers.mjs +172 -0
  33. package/dist/enrichers.mjs.map +1 -0
  34. package/dist/error.d.mts +24 -22
  35. package/dist/error.d.mts.map +1 -0
  36. package/dist/error.mjs +107 -76
  37. package/dist/error.mjs.map +1 -0
  38. package/dist/index.d.mts +6 -5
  39. package/dist/index.mjs +6 -5
  40. package/dist/logger.d.mts +11 -5
  41. package/dist/logger.d.mts.map +1 -0
  42. package/dist/logger.mjs +255 -186
  43. package/dist/logger.mjs.map +1 -0
  44. package/dist/nitro/errorHandler.d.mts +4 -2
  45. package/dist/nitro/errorHandler.d.mts.map +1 -0
  46. package/dist/nitro/errorHandler.mjs +38 -38
  47. package/dist/nitro/errorHandler.mjs.map +1 -0
  48. package/dist/nitro/module.d.mts +11 -0
  49. package/dist/nitro/module.d.mts.map +1 -0
  50. package/dist/nitro/module.mjs +23 -0
  51. package/dist/nitro/module.mjs.map +1 -0
  52. package/dist/nitro/plugin.d.mts +4 -2
  53. package/dist/nitro/plugin.d.mts.map +1 -0
  54. package/dist/nitro/plugin.mjs +135 -140
  55. package/dist/nitro/plugin.mjs.map +1 -0
  56. package/dist/nitro/v3/errorHandler.d.mts +24 -0
  57. package/dist/nitro/v3/errorHandler.d.mts.map +1 -0
  58. package/dist/nitro/v3/errorHandler.mjs +36 -0
  59. package/dist/nitro/v3/errorHandler.mjs.map +1 -0
  60. package/dist/nitro/v3/index.d.mts +4 -0
  61. package/dist/nitro/v3/index.mjs +4 -0
  62. package/dist/nitro/v3/module.d.mts +10 -0
  63. package/dist/nitro/v3/module.d.mts.map +1 -0
  64. package/dist/nitro/v3/module.mjs +22 -0
  65. package/dist/nitro/v3/module.mjs.map +1 -0
  66. package/dist/nitro/v3/plugin.d.mts +14 -0
  67. package/dist/nitro/v3/plugin.d.mts.map +1 -0
  68. package/dist/nitro/v3/plugin.mjs +157 -0
  69. package/dist/nitro/v3/plugin.mjs.map +1 -0
  70. package/dist/nitro/v3/useLogger.d.mts +24 -0
  71. package/dist/nitro/v3/useLogger.d.mts.map +1 -0
  72. package/dist/nitro/v3/useLogger.mjs +27 -0
  73. package/dist/nitro/v3/useLogger.mjs.map +1 -0
  74. package/dist/nitro-D57TWGyN.mjs +73 -0
  75. package/dist/nitro-D57TWGyN.mjs.map +1 -0
  76. package/dist/nitro-D81NBVPi.d.mts +42 -0
  77. package/dist/nitro-D81NBVPi.d.mts.map +1 -0
  78. package/dist/nuxt/module.d.mts +155 -168
  79. package/dist/nuxt/module.d.mts.map +1 -0
  80. package/dist/nuxt/module.mjs +75 -65
  81. package/dist/nuxt/module.mjs.map +1 -0
  82. package/dist/pipeline.d.mts +46 -0
  83. package/dist/pipeline.d.mts.map +1 -0
  84. package/dist/pipeline.mjs +122 -0
  85. package/dist/pipeline.mjs.map +1 -0
  86. package/dist/runtime/client/log.d.mts +12 -7
  87. package/dist/runtime/client/log.d.mts.map +1 -0
  88. package/dist/runtime/client/log.mjs +72 -64
  89. package/dist/runtime/client/log.mjs.map +1 -0
  90. package/dist/runtime/client/plugin.d.mts +3 -1
  91. package/dist/runtime/client/plugin.d.mts.map +1 -0
  92. package/dist/runtime/client/plugin.mjs +14 -12
  93. package/dist/runtime/client/plugin.mjs.map +1 -0
  94. package/dist/runtime/server/routes/_evlog/ingest.post.d.mts +4 -2
  95. package/dist/runtime/server/routes/_evlog/ingest.post.d.mts.map +1 -0
  96. package/dist/runtime/server/routes/_evlog/ingest.post.mjs +113 -76
  97. package/dist/runtime/server/routes/_evlog/ingest.post.mjs.map +1 -0
  98. package/dist/runtime/server/useLogger.d.mts +14 -3
  99. package/dist/runtime/server/useLogger.d.mts.map +1 -0
  100. package/dist/runtime/server/useLogger.mjs +39 -10
  101. package/dist/runtime/server/useLogger.mjs.map +1 -0
  102. package/dist/runtime/utils/parseError.d.mts +5 -3
  103. package/dist/runtime/utils/parseError.d.mts.map +1 -0
  104. package/dist/runtime/utils/parseError.mjs +25 -26
  105. package/dist/runtime/utils/parseError.mjs.map +1 -0
  106. package/dist/types.d.mts +378 -246
  107. package/dist/types.d.mts.map +1 -0
  108. package/dist/types.mjs +1 -1
  109. package/dist/utils.d.mts +19 -14
  110. package/dist/utils.d.mts.map +1 -0
  111. package/dist/utils.mjs +59 -50
  112. package/dist/utils.mjs.map +1 -0
  113. package/dist/workers.d.mts +10 -9
  114. package/dist/workers.d.mts.map +1 -0
  115. package/dist/workers.mjs +68 -39
  116. package/dist/workers.mjs.map +1 -0
  117. package/package.json +55 -10
  118. package/dist/adapters/axiom.d.ts +0 -62
  119. package/dist/adapters/otlp.d.ts +0 -83
  120. package/dist/adapters/posthog.d.ts +0 -72
  121. package/dist/adapters/sentry.d.ts +0 -78
  122. package/dist/error.d.ts +0 -63
  123. package/dist/index.d.ts +0 -5
  124. package/dist/logger.d.ts +0 -40
  125. package/dist/nitro/errorHandler.d.ts +0 -13
  126. package/dist/nitro/plugin.d.ts +0 -5
  127. package/dist/nuxt/module.d.ts +0 -171
  128. package/dist/runtime/client/log.d.ts +0 -10
  129. package/dist/runtime/client/plugin.d.ts +0 -3
  130. package/dist/runtime/server/routes/_evlog/ingest.post.d.ts +0 -5
  131. package/dist/runtime/server/useLogger.d.ts +0 -28
  132. package/dist/runtime/utils/parseError.d.ts +0 -5
  133. package/dist/shared/evlog.Bc35pxiY.mjs +0 -10
  134. package/dist/types.d.ts +0 -364
  135. package/dist/utils.d.ts +0 -29
  136. package/dist/workers.d.ts +0 -45
@@ -1,73 +1,166 @@
1
- import { g as getRuntimeConfig } from '../shared/evlog.Bc35pxiY.mjs';
1
+ import { n as defineDrain, r as resolveAdapterConfig, t as httpPost } from "../_http-DVDwNag0.mjs";
2
+ import { sendBatchToOTLP } from "./otlp.mjs";
2
3
 
4
+ //#region src/adapters/posthog.ts
5
+ const POSTHOG_FIELDS = [
6
+ {
7
+ key: "apiKey",
8
+ env: ["NUXT_POSTHOG_API_KEY", "POSTHOG_API_KEY"]
9
+ },
10
+ {
11
+ key: "host",
12
+ env: ["NUXT_POSTHOG_HOST", "POSTHOG_HOST"]
13
+ },
14
+ { key: "eventName" },
15
+ { key: "distinctId" },
16
+ { key: "timeout" }
17
+ ];
18
+ /**
19
+ * Convert a WideEvent to a PostHog event format.
20
+ */
3
21
  function toPostHogEvent(event, config) {
4
- const { timestamp, level, service, ...rest } = event;
5
- return {
6
- event: config.eventName ?? "evlog_wide_event",
7
- distinct_id: config.distinctId ?? service,
8
- timestamp,
9
- properties: {
10
- level,
11
- service,
12
- ...rest
13
- }
14
- };
22
+ const { timestamp, level, service, ...rest } = event;
23
+ return {
24
+ event: config.eventName ?? "evlog_wide_event",
25
+ distinct_id: config.distinctId ?? (typeof event.userId === "string" ? event.userId : void 0) ?? service,
26
+ timestamp,
27
+ properties: {
28
+ level,
29
+ service,
30
+ ...rest
31
+ }
32
+ };
15
33
  }
34
+ /**
35
+ * Create a drain function for sending logs to PostHog.
36
+ *
37
+ * Configuration priority (highest to lowest):
38
+ * 1. Overrides passed to createPostHogDrain()
39
+ * 2. runtimeConfig.evlog.posthog
40
+ * 3. runtimeConfig.posthog
41
+ * 4. Environment variables: NUXT_POSTHOG_*, POSTHOG_*
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * // Zero config - just set NUXT_POSTHOG_API_KEY env var
46
+ * nitroApp.hooks.hook('evlog:drain', createPostHogDrain())
47
+ *
48
+ * // With overrides
49
+ * nitroApp.hooks.hook('evlog:drain', createPostHogDrain({
50
+ * apiKey: 'phc_...',
51
+ * host: 'https://eu.i.posthog.com',
52
+ * }))
53
+ * ```
54
+ */
16
55
  function createPostHogDrain(overrides) {
17
- return async (ctx) => {
18
- const runtimeConfig = getRuntimeConfig();
19
- const evlogPostHog = runtimeConfig?.evlog?.posthog;
20
- const rootPostHog = runtimeConfig?.posthog;
21
- const config = {
22
- apiKey: overrides?.apiKey ?? evlogPostHog?.apiKey ?? rootPostHog?.apiKey ?? process.env.NUXT_POSTHOG_API_KEY ?? process.env.POSTHOG_API_KEY,
23
- host: overrides?.host ?? evlogPostHog?.host ?? rootPostHog?.host ?? process.env.NUXT_POSTHOG_HOST ?? process.env.POSTHOG_HOST,
24
- eventName: overrides?.eventName ?? evlogPostHog?.eventName ?? rootPostHog?.eventName,
25
- distinctId: overrides?.distinctId ?? evlogPostHog?.distinctId ?? rootPostHog?.distinctId,
26
- timeout: overrides?.timeout ?? evlogPostHog?.timeout ?? rootPostHog?.timeout
27
- };
28
- if (!config.apiKey) {
29
- console.error("[evlog/posthog] Missing apiKey. Set NUXT_POSTHOG_API_KEY/POSTHOG_API_KEY env var or pass to createPostHogDrain()");
30
- return;
31
- }
32
- try {
33
- await sendToPostHog(ctx.event, config);
34
- } catch (error) {
35
- console.error("[evlog/posthog] Failed to send event:", error);
36
- }
37
- };
56
+ return defineDrain({
57
+ name: "posthog",
58
+ resolve: () => {
59
+ const config = resolveAdapterConfig("posthog", POSTHOG_FIELDS, overrides);
60
+ if (!config.apiKey) {
61
+ console.error("[evlog/posthog] Missing apiKey. Set NUXT_POSTHOG_API_KEY/POSTHOG_API_KEY env var or pass to createPostHogDrain()");
62
+ return null;
63
+ }
64
+ return config;
65
+ },
66
+ send: sendBatchToPostHog
67
+ });
38
68
  }
69
+ /**
70
+ * Send a single event to PostHog.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * await sendToPostHog(event, {
75
+ * apiKey: process.env.POSTHOG_API_KEY!,
76
+ * })
77
+ * ```
78
+ */
39
79
  async function sendToPostHog(event, config) {
40
- await sendBatchToPostHog([event], config);
80
+ await sendBatchToPostHog([event], config);
41
81
  }
82
+ /**
83
+ * Send a batch of events to PostHog.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * await sendBatchToPostHog(events, {
88
+ * apiKey: process.env.POSTHOG_API_KEY!,
89
+ * })
90
+ * ```
91
+ */
42
92
  async function sendBatchToPostHog(events, config) {
43
- if (events.length === 0) return;
44
- const host = (config.host ?? "https://us.i.posthog.com").replace(/\/$/, "");
45
- const timeout = config.timeout ?? 5e3;
46
- const url = `${host}/batch/`;
47
- const batch = events.map((event) => toPostHogEvent(event, config));
48
- const payload = {
49
- api_key: config.apiKey,
50
- batch
51
- };
52
- const controller = new AbortController();
53
- const timeoutId = setTimeout(() => controller.abort(), timeout);
54
- try {
55
- const response = await fetch(url, {
56
- method: "POST",
57
- headers: {
58
- "Content-Type": "application/json"
59
- },
60
- body: JSON.stringify(payload),
61
- signal: controller.signal
62
- });
63
- if (!response.ok) {
64
- const text = await response.text().catch(() => "Unknown error");
65
- const safeText = text.length > 200 ? `${text.slice(0, 200)}...[truncated]` : text;
66
- throw new Error(`PostHog API error: ${response.status} ${response.statusText} - ${safeText}`);
67
- }
68
- } finally {
69
- clearTimeout(timeoutId);
70
- }
93
+ if (events.length === 0) return;
94
+ const url = `${(config.host ?? "https://us.i.posthog.com").replace(/\/$/, "")}/batch/`;
95
+ const batch = events.map((event) => toPostHogEvent(event, config));
96
+ const payload = {
97
+ api_key: config.apiKey,
98
+ batch
99
+ };
100
+ await httpPost({
101
+ url,
102
+ headers: { "Content-Type": "application/json" },
103
+ body: JSON.stringify(payload),
104
+ timeout: config.timeout ?? 5e3,
105
+ label: "PostHog"
106
+ });
107
+ }
108
+ const POSTHOG_LOGS_FIELDS = [
109
+ {
110
+ key: "apiKey",
111
+ env: ["NUXT_POSTHOG_API_KEY", "POSTHOG_API_KEY"]
112
+ },
113
+ {
114
+ key: "host",
115
+ env: ["NUXT_POSTHOG_HOST", "POSTHOG_HOST"]
116
+ },
117
+ { key: "timeout" }
118
+ ];
119
+ /**
120
+ * Create a drain function for sending logs to PostHog Logs via OTLP.
121
+ *
122
+ * PostHog Logs uses the standard OTLP log format. This drain wraps
123
+ * `sendBatchToOTLP()` with PostHog-specific defaults (endpoint, auth).
124
+ *
125
+ * Configuration priority (highest to lowest):
126
+ * 1. Overrides passed to createPostHogLogsDrain()
127
+ * 2. runtimeConfig.evlog.posthog
128
+ * 3. runtimeConfig.posthog
129
+ * 4. Environment variables: NUXT_POSTHOG_*, POSTHOG_*
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * // Zero config - just set NUXT_POSTHOG_API_KEY env var
134
+ * nitroApp.hooks.hook('evlog:drain', createPostHogLogsDrain())
135
+ *
136
+ * // With overrides
137
+ * nitroApp.hooks.hook('evlog:drain', createPostHogLogsDrain({
138
+ * apiKey: 'phc_...',
139
+ * host: 'https://eu.i.posthog.com',
140
+ * }))
141
+ * ```
142
+ */
143
+ function createPostHogLogsDrain(overrides) {
144
+ return defineDrain({
145
+ name: "posthog",
146
+ resolve: () => {
147
+ const config = resolveAdapterConfig("posthog", POSTHOG_LOGS_FIELDS, overrides);
148
+ if (!config.apiKey) {
149
+ console.error("[evlog/posthog] Missing apiKey. Set NUXT_POSTHOG_API_KEY/POSTHOG_API_KEY env var or pass to createPostHogLogsDrain()");
150
+ return null;
151
+ }
152
+ return config;
153
+ },
154
+ send: async (events, config) => {
155
+ await sendBatchToOTLP(events, {
156
+ endpoint: `${(config.host ?? "https://us.i.posthog.com").replace(/\/$/, "")}/i`,
157
+ headers: { Authorization: `Bearer ${config.apiKey}` },
158
+ timeout: config.timeout
159
+ });
160
+ }
161
+ });
71
162
  }
72
163
 
73
- export { createPostHogDrain, sendBatchToPostHog, sendToPostHog, toPostHogEvent };
164
+ //#endregion
165
+ export { createPostHogDrain, createPostHogLogsDrain, sendBatchToPostHog, sendToPostHog, toPostHogEvent };
166
+ //# sourceMappingURL=posthog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posthog.mjs","names":[],"sources":["../../src/adapters/posthog.ts"],"sourcesContent":["import type { WideEvent } from '../types'\nimport type { ConfigField } from './_config'\nimport { resolveAdapterConfig } from './_config'\nimport { defineDrain } from './_drain'\nimport { httpPost } from './_http'\nimport { sendBatchToOTLP } from './otlp'\nimport type { OTLPConfig } from './otlp'\n\nexport interface PostHogConfig {\n /** PostHog project API key */\n apiKey: string\n /** PostHog host URL. Default: https://us.i.posthog.com */\n host?: string\n /** PostHog event name. Default: evlog_wide_event */\n eventName?: string\n /** Override distinct_id (defaults to event.service) */\n distinctId?: string\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n}\n\n/** PostHog event structure for the batch API */\nexport interface PostHogEvent {\n event: string\n distinct_id: string\n timestamp: string\n properties: Record<string, unknown>\n}\n\nconst POSTHOG_FIELDS: ConfigField<PostHogConfig>[] = [\n { key: 'apiKey', env: ['NUXT_POSTHOG_API_KEY', 'POSTHOG_API_KEY'] },\n { key: 'host', env: ['NUXT_POSTHOG_HOST', 'POSTHOG_HOST'] },\n { key: 'eventName' },\n { key: 'distinctId' },\n { key: 'timeout' },\n]\n\n/**\n * Convert a WideEvent to a PostHog event format.\n */\nexport function toPostHogEvent(event: WideEvent, config: PostHogConfig): PostHogEvent {\n const { timestamp, level, service, ...rest } = event\n\n return {\n event: config.eventName ?? 'evlog_wide_event',\n distinct_id: config.distinctId ?? (typeof event.userId === 'string' ? event.userId : undefined) ?? service,\n timestamp,\n properties: {\n level,\n service,\n ...rest,\n },\n }\n}\n\n/**\n * Create a drain function for sending logs to PostHog.\n *\n * Configuration priority (highest to lowest):\n * 1. Overrides passed to createPostHogDrain()\n * 2. runtimeConfig.evlog.posthog\n * 3. runtimeConfig.posthog\n * 4. Environment variables: NUXT_POSTHOG_*, POSTHOG_*\n *\n * @example\n * ```ts\n * // Zero config - just set NUXT_POSTHOG_API_KEY env var\n * nitroApp.hooks.hook('evlog:drain', createPostHogDrain())\n *\n * // With overrides\n * nitroApp.hooks.hook('evlog:drain', createPostHogDrain({\n * apiKey: 'phc_...',\n * host: 'https://eu.i.posthog.com',\n * }))\n * ```\n */\nexport function createPostHogDrain(overrides?: Partial<PostHogConfig>) {\n return defineDrain<PostHogConfig>({\n name: 'posthog',\n resolve: () => {\n const config = resolveAdapterConfig<PostHogConfig>('posthog', POSTHOG_FIELDS, overrides)\n if (!config.apiKey) {\n console.error('[evlog/posthog] Missing apiKey. Set NUXT_POSTHOG_API_KEY/POSTHOG_API_KEY env var or pass to createPostHogDrain()')\n return null\n }\n return config as PostHogConfig\n },\n send: sendBatchToPostHog,\n })\n}\n\n/**\n * Send a single event to PostHog.\n *\n * @example\n * ```ts\n * await sendToPostHog(event, {\n * apiKey: process.env.POSTHOG_API_KEY!,\n * })\n * ```\n */\nexport async function sendToPostHog(event: WideEvent, config: PostHogConfig): Promise<void> {\n await sendBatchToPostHog([event], config)\n}\n\n/**\n * Send a batch of events to PostHog.\n *\n * @example\n * ```ts\n * await sendBatchToPostHog(events, {\n * apiKey: process.env.POSTHOG_API_KEY!,\n * })\n * ```\n */\nexport async function sendBatchToPostHog(events: WideEvent[], config: PostHogConfig): Promise<void> {\n if (events.length === 0) return\n\n const host = (config.host ?? 'https://us.i.posthog.com').replace(/\\/$/, '')\n const url = `${host}/batch/`\n\n const batch = events.map(event => toPostHogEvent(event, config))\n\n const payload = {\n api_key: config.apiKey,\n batch,\n }\n\n await httpPost({\n url,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload),\n timeout: config.timeout ?? 5000,\n label: 'PostHog',\n })\n}\n\nexport interface PostHogLogsConfig {\n /** PostHog project API key */\n apiKey: string\n /** PostHog host URL. Default: https://us.i.posthog.com */\n host?: string\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n}\n\nconst POSTHOG_LOGS_FIELDS: ConfigField<PostHogLogsConfig>[] = [\n { key: 'apiKey', env: ['NUXT_POSTHOG_API_KEY', 'POSTHOG_API_KEY'] },\n { key: 'host', env: ['NUXT_POSTHOG_HOST', 'POSTHOG_HOST'] },\n { key: 'timeout' },\n]\n\n/**\n * Create a drain function for sending logs to PostHog Logs via OTLP.\n *\n * PostHog Logs uses the standard OTLP log format. This drain wraps\n * `sendBatchToOTLP()` with PostHog-specific defaults (endpoint, auth).\n *\n * Configuration priority (highest to lowest):\n * 1. Overrides passed to createPostHogLogsDrain()\n * 2. runtimeConfig.evlog.posthog\n * 3. runtimeConfig.posthog\n * 4. Environment variables: NUXT_POSTHOG_*, POSTHOG_*\n *\n * @example\n * ```ts\n * // Zero config - just set NUXT_POSTHOG_API_KEY env var\n * nitroApp.hooks.hook('evlog:drain', createPostHogLogsDrain())\n *\n * // With overrides\n * nitroApp.hooks.hook('evlog:drain', createPostHogLogsDrain({\n * apiKey: 'phc_...',\n * host: 'https://eu.i.posthog.com',\n * }))\n * ```\n */\nexport function createPostHogLogsDrain(overrides?: Partial<PostHogLogsConfig>) {\n return defineDrain<PostHogLogsConfig>({\n name: 'posthog',\n resolve: () => {\n const config = resolveAdapterConfig<PostHogLogsConfig>('posthog', POSTHOG_LOGS_FIELDS, overrides)\n if (!config.apiKey) {\n console.error('[evlog/posthog] Missing apiKey. Set NUXT_POSTHOG_API_KEY/POSTHOG_API_KEY env var or pass to createPostHogLogsDrain()')\n return null\n }\n return config as PostHogLogsConfig\n },\n send: async (events, config) => {\n const host = (config.host ?? 'https://us.i.posthog.com').replace(/\\/$/, '')\n const otlpConfig: OTLPConfig = {\n endpoint: `${host}/i`,\n headers: { Authorization: `Bearer ${config.apiKey}` },\n timeout: config.timeout,\n }\n await sendBatchToOTLP(events, otlpConfig)\n },\n })\n}\n"],"mappings":";;;;AA6BA,MAAM,iBAA+C;CACnD;EAAE,KAAK;EAAU,KAAK,CAAC,wBAAwB,kBAAkB;EAAE;CACnE;EAAE,KAAK;EAAQ,KAAK,CAAC,qBAAqB,eAAe;EAAE;CAC3D,EAAE,KAAK,aAAa;CACpB,EAAE,KAAK,cAAc;CACrB,EAAE,KAAK,WAAW;CACnB;;;;AAKD,SAAgB,eAAe,OAAkB,QAAqC;CACpF,MAAM,EAAE,WAAW,OAAO,SAAS,GAAG,SAAS;AAE/C,QAAO;EACL,OAAO,OAAO,aAAa;EAC3B,aAAa,OAAO,eAAe,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS,WAAc;EACnG;EACA,YAAY;GACV;GACA;GACA,GAAG;GACJ;EACF;;;;;;;;;;;;;;;;;;;;;;;AAwBH,SAAgB,mBAAmB,WAAoC;AACrE,QAAO,YAA2B;EAChC,MAAM;EACN,eAAe;GACb,MAAM,SAAS,qBAAoC,WAAW,gBAAgB,UAAU;AACxF,OAAI,CAAC,OAAO,QAAQ;AAClB,YAAQ,MAAM,mHAAmH;AACjI,WAAO;;AAET,UAAO;;EAET,MAAM;EACP,CAAC;;;;;;;;;;;;AAaJ,eAAsB,cAAc,OAAkB,QAAsC;AAC1F,OAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO;;;;;;;;;;;;AAa3C,eAAsB,mBAAmB,QAAqB,QAAsC;AAClG,KAAI,OAAO,WAAW,EAAG;CAGzB,MAAM,MAAM,IADE,OAAO,QAAQ,4BAA4B,QAAQ,OAAO,GAAG,CACvD;CAEpB,MAAM,QAAQ,OAAO,KAAI,UAAS,eAAe,OAAO,OAAO,CAAC;CAEhE,MAAM,UAAU;EACd,SAAS,OAAO;EAChB;EACD;AAED,OAAM,SAAS;EACb;EACA,SAAS,EAAE,gBAAgB,oBAAoB;EAC/C,MAAM,KAAK,UAAU,QAAQ;EAC7B,SAAS,OAAO,WAAW;EAC3B,OAAO;EACR,CAAC;;AAYJ,MAAM,sBAAwD;CAC5D;EAAE,KAAK;EAAU,KAAK,CAAC,wBAAwB,kBAAkB;EAAE;CACnE;EAAE,KAAK;EAAQ,KAAK,CAAC,qBAAqB,eAAe;EAAE;CAC3D,EAAE,KAAK,WAAW;CACnB;;;;;;;;;;;;;;;;;;;;;;;;;AA0BD,SAAgB,uBAAuB,WAAwC;AAC7E,QAAO,YAA+B;EACpC,MAAM;EACN,eAAe;GACb,MAAM,SAAS,qBAAwC,WAAW,qBAAqB,UAAU;AACjG,OAAI,CAAC,OAAO,QAAQ;AAClB,YAAQ,MAAM,uHAAuH;AACrI,WAAO;;AAET,UAAO;;EAET,MAAM,OAAO,QAAQ,WAAW;AAO9B,SAAM,gBAAgB,QALS;IAC7B,UAAU,IAFE,OAAO,QAAQ,4BAA4B,QAAQ,OAAO,GAAG,CAEvD;IAClB,SAAS,EAAE,eAAe,UAAU,OAAO,UAAU;IACrD,SAAS,OAAO;IACjB,CACwC;;EAE5C,CAAC"}
@@ -1,30 +1,32 @@
1
- import { DrainContext, WideEvent } from '../types.mjs';
1
+ import { DrainContext, WideEvent } from "../types.mjs";
2
+ import "../index.mjs";
2
3
 
4
+ //#region src/adapters/sentry.d.ts
3
5
  interface SentryConfig {
4
- /** Sentry DSN */
5
- dsn: string;
6
- /** Environment override (defaults to event.environment) */
7
- environment?: string;
8
- /** Release version override (defaults to event.version) */
9
- release?: string;
10
- /** Additional tags to attach as attributes */
11
- tags?: Record<string, string>;
12
- /** Request timeout in milliseconds. Default: 5000 */
13
- timeout?: number;
6
+ /** Sentry DSN */
7
+ dsn: string;
8
+ /** Environment override (defaults to event.environment) */
9
+ environment?: string;
10
+ /** Release version override (defaults to event.version) */
11
+ release?: string;
12
+ /** Additional tags to attach as attributes */
13
+ tags?: Record<string, string>;
14
+ /** Request timeout in milliseconds. Default: 5000 */
15
+ timeout?: number;
14
16
  }
15
17
  /** Sentry Log attribute value with type annotation */
16
18
  interface SentryAttributeValue {
17
- value: string | number | boolean;
18
- type: 'string' | 'integer' | 'double' | 'boolean';
19
+ value: string | number | boolean;
20
+ type: 'string' | 'integer' | 'double' | 'boolean';
19
21
  }
20
22
  /** Sentry Structured Log payload */
21
23
  interface SentryLog {
22
- timestamp: number;
23
- trace_id: string;
24
- level: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
25
- body: string;
26
- severity_number: number;
27
- attributes?: Record<string, SentryAttributeValue>;
24
+ timestamp: number;
25
+ trace_id: string;
26
+ level: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
27
+ body: string;
28
+ severity_number: number;
29
+ attributes?: Record<string, SentryAttributeValue>;
28
30
  }
29
31
  declare function toSentryLog(event: WideEvent, config: SentryConfig): SentryLog;
30
32
  /**
@@ -50,7 +52,7 @@ declare function toSentryLog(event: WideEvent, config: SentryConfig): SentryLog;
50
52
  * }))
51
53
  * ```
52
54
  */
53
- declare function createSentryDrain(overrides?: Partial<SentryConfig>): (ctx: DrainContext) => Promise<void>;
55
+ declare function createSentryDrain(overrides?: Partial<SentryConfig>): (ctx: DrainContext | DrainContext[]) => Promise<void>;
54
56
  /**
55
57
  * Send a single event to Sentry as a structured log.
56
58
  *
@@ -73,6 +75,6 @@ declare function sendToSentry(event: WideEvent, config: SentryConfig): Promise<v
73
75
  * ```
74
76
  */
75
77
  declare function sendBatchToSentry(events: WideEvent[], config: SentryConfig): Promise<void>;
76
-
77
- export { createSentryDrain, sendBatchToSentry, sendToSentry, toSentryLog };
78
- export type { SentryAttributeValue, SentryConfig, SentryLog };
78
+ //#endregion
79
+ export { SentryAttributeValue, SentryConfig, SentryLog, createSentryDrain, sendBatchToSentry, sendToSentry, toSentryLog };
80
+ //# sourceMappingURL=sentry.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.d.mts","names":[],"sources":["../../src/adapters/sentry.ts"],"mappings":";;;;UAOiB,YAAA;;EAEf,GAAA;EAFe;EAIf,WAAA;;EAEA,OAAA;EAJA;EAMA,IAAA,GAAO,MAAA;EAFP;EAIA,OAAA;AAAA;;UAIe,oBAAA;EACf,KAAA;EACA,IAAA;AAAA;;UAIe,SAAA;EACf,SAAA;EACA,QAAA;EACA,KAAA;EACA,IAAA;EACA,eAAA;EACA,UAAA,GAAa,MAAA,SAAe,oBAAA;AAAA;AAAA,iBA0Fd,WAAA,CAAY,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,YAAA,GAAe,SAAA;;;;;;;;AAArE;;;;;;;;;;;;;;;AAiGA;iBAAgB,iBAAA,CAAkB,SAAA,GAAY,OAAA,CAAQ,YAAA,KAAa,GAAA,EAAd,YAAA,GAAc,YAAA,OAAA,OAAA;;;;;;;;;;;iBAyB7C,YAAA,CAAa,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,YAAA,GAAe,OAAA;;;;;;;AAA5E;;;;iBAcsB,iBAAA,CAAkB,MAAA,EAAQ,SAAA,IAAa,MAAA,EAAQ,YAAA,GAAe,OAAA"}