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.
- package/README.md +96 -0
- package/dist/_http-DVDwNag0.mjs +76 -0
- package/dist/_http-DVDwNag0.mjs.map +1 -0
- package/dist/_severity-CXfyvxQi.mjs +17 -0
- package/dist/_severity-CXfyvxQi.mjs.map +1 -0
- package/dist/adapters/axiom.d.mts +17 -15
- package/dist/adapters/axiom.d.mts.map +1 -0
- package/dist/adapters/axiom.mjs +91 -50
- package/dist/adapters/axiom.mjs.map +1 -0
- package/dist/adapters/better-stack.d.mts +63 -0
- package/dist/adapters/better-stack.d.mts.map +1 -0
- package/dist/adapters/better-stack.mjs +98 -0
- package/dist/adapters/better-stack.mjs.map +1 -0
- package/dist/adapters/otlp.d.mts +32 -30
- package/dist/adapters/otlp.d.mts.map +1 -0
- package/dist/adapters/otlp.mjs +181 -181
- package/dist/adapters/otlp.mjs.map +1 -0
- package/dist/adapters/posthog.d.mts +54 -19
- package/dist/adapters/posthog.d.mts.map +1 -0
- package/dist/adapters/posthog.mjs +156 -63
- package/dist/adapters/posthog.mjs.map +1 -0
- package/dist/adapters/sentry.d.mts +25 -23
- package/dist/adapters/sentry.d.mts.map +1 -0
- package/dist/adapters/sentry.mjs +198 -153
- package/dist/adapters/sentry.mjs.map +1 -0
- package/dist/browser.d.mts +63 -0
- package/dist/browser.d.mts.map +1 -0
- package/dist/browser.mjs +95 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/enrichers.d.mts +74 -0
- package/dist/enrichers.d.mts.map +1 -0
- package/dist/enrichers.mjs +172 -0
- package/dist/enrichers.mjs.map +1 -0
- package/dist/error.d.mts +24 -22
- package/dist/error.d.mts.map +1 -0
- package/dist/error.mjs +107 -76
- package/dist/error.mjs.map +1 -0
- package/dist/index.d.mts +6 -5
- package/dist/index.mjs +6 -5
- package/dist/logger.d.mts +11 -5
- package/dist/logger.d.mts.map +1 -0
- package/dist/logger.mjs +255 -186
- package/dist/logger.mjs.map +1 -0
- package/dist/nitro/errorHandler.d.mts +4 -2
- package/dist/nitro/errorHandler.d.mts.map +1 -0
- package/dist/nitro/errorHandler.mjs +38 -38
- package/dist/nitro/errorHandler.mjs.map +1 -0
- package/dist/nitro/module.d.mts +11 -0
- package/dist/nitro/module.d.mts.map +1 -0
- package/dist/nitro/module.mjs +23 -0
- package/dist/nitro/module.mjs.map +1 -0
- package/dist/nitro/plugin.d.mts +4 -2
- package/dist/nitro/plugin.d.mts.map +1 -0
- package/dist/nitro/plugin.mjs +135 -140
- package/dist/nitro/plugin.mjs.map +1 -0
- package/dist/nitro/v3/errorHandler.d.mts +24 -0
- package/dist/nitro/v3/errorHandler.d.mts.map +1 -0
- package/dist/nitro/v3/errorHandler.mjs +36 -0
- package/dist/nitro/v3/errorHandler.mjs.map +1 -0
- package/dist/nitro/v3/index.d.mts +4 -0
- package/dist/nitro/v3/index.mjs +4 -0
- package/dist/nitro/v3/module.d.mts +10 -0
- package/dist/nitro/v3/module.d.mts.map +1 -0
- package/dist/nitro/v3/module.mjs +22 -0
- package/dist/nitro/v3/module.mjs.map +1 -0
- package/dist/nitro/v3/plugin.d.mts +14 -0
- package/dist/nitro/v3/plugin.d.mts.map +1 -0
- package/dist/nitro/v3/plugin.mjs +157 -0
- package/dist/nitro/v3/plugin.mjs.map +1 -0
- package/dist/nitro/v3/useLogger.d.mts +24 -0
- package/dist/nitro/v3/useLogger.d.mts.map +1 -0
- package/dist/nitro/v3/useLogger.mjs +27 -0
- package/dist/nitro/v3/useLogger.mjs.map +1 -0
- package/dist/nitro-D57TWGyN.mjs +73 -0
- package/dist/nitro-D57TWGyN.mjs.map +1 -0
- package/dist/nitro-D81NBVPi.d.mts +42 -0
- package/dist/nitro-D81NBVPi.d.mts.map +1 -0
- package/dist/nuxt/module.d.mts +155 -168
- package/dist/nuxt/module.d.mts.map +1 -0
- package/dist/nuxt/module.mjs +75 -65
- package/dist/nuxt/module.mjs.map +1 -0
- package/dist/pipeline.d.mts +46 -0
- package/dist/pipeline.d.mts.map +1 -0
- package/dist/pipeline.mjs +122 -0
- package/dist/pipeline.mjs.map +1 -0
- package/dist/runtime/client/log.d.mts +12 -7
- package/dist/runtime/client/log.d.mts.map +1 -0
- package/dist/runtime/client/log.mjs +72 -64
- package/dist/runtime/client/log.mjs.map +1 -0
- package/dist/runtime/client/plugin.d.mts +3 -1
- package/dist/runtime/client/plugin.d.mts.map +1 -0
- package/dist/runtime/client/plugin.mjs +14 -12
- package/dist/runtime/client/plugin.mjs.map +1 -0
- package/dist/runtime/server/routes/_evlog/ingest.post.d.mts +4 -2
- package/dist/runtime/server/routes/_evlog/ingest.post.d.mts.map +1 -0
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs +113 -76
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs.map +1 -0
- package/dist/runtime/server/useLogger.d.mts +14 -3
- package/dist/runtime/server/useLogger.d.mts.map +1 -0
- package/dist/runtime/server/useLogger.mjs +39 -10
- package/dist/runtime/server/useLogger.mjs.map +1 -0
- package/dist/runtime/utils/parseError.d.mts +5 -3
- package/dist/runtime/utils/parseError.d.mts.map +1 -0
- package/dist/runtime/utils/parseError.mjs +25 -26
- package/dist/runtime/utils/parseError.mjs.map +1 -0
- package/dist/types.d.mts +378 -246
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +1 -1
- package/dist/utils.d.mts +19 -14
- package/dist/utils.d.mts.map +1 -0
- package/dist/utils.mjs +59 -50
- package/dist/utils.mjs.map +1 -0
- package/dist/workers.d.mts +10 -9
- package/dist/workers.d.mts.map +1 -0
- package/dist/workers.mjs +68 -39
- package/dist/workers.mjs.map +1 -0
- package/package.json +55 -10
- package/dist/adapters/axiom.d.ts +0 -62
- package/dist/adapters/otlp.d.ts +0 -83
- package/dist/adapters/posthog.d.ts +0 -72
- package/dist/adapters/sentry.d.ts +0 -78
- package/dist/error.d.ts +0 -63
- package/dist/index.d.ts +0 -5
- package/dist/logger.d.ts +0 -40
- package/dist/nitro/errorHandler.d.ts +0 -13
- package/dist/nitro/plugin.d.ts +0 -5
- package/dist/nuxt/module.d.ts +0 -171
- package/dist/runtime/client/log.d.ts +0 -10
- package/dist/runtime/client/plugin.d.ts +0 -3
- package/dist/runtime/server/routes/_evlog/ingest.post.d.ts +0 -5
- package/dist/runtime/server/useLogger.d.ts +0 -28
- package/dist/runtime/utils/parseError.d.ts +0 -5
- package/dist/shared/evlog.Bc35pxiY.mjs +0 -10
- package/dist/types.d.ts +0 -364
- package/dist/utils.d.ts +0 -29
- package/dist/workers.d.ts +0 -45
|
@@ -1,73 +1,166 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
+
value: string | number | boolean;
|
|
20
|
+
type: 'string' | 'integer' | 'double' | 'boolean';
|
|
19
21
|
}
|
|
20
22
|
/** Sentry Structured Log payload */
|
|
21
23
|
interface SentryLog {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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"}
|