@justanalyticsapp/node 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +23 -1
- package/dist/client.js +139 -1
- package/dist/client.js.map +1 -1
- package/dist/integrations/axios-integration.d.ts +53 -0
- package/dist/integrations/axios-integration.js +217 -0
- package/dist/integrations/axios-integration.js.map +1 -0
- package/dist/integrations/drizzle.d.ts +54 -0
- package/dist/integrations/drizzle.js +236 -0
- package/dist/integrations/drizzle.js.map +1 -0
- package/dist/integrations/http.d.ts +3 -1
- package/dist/integrations/http.js +12 -1
- package/dist/integrations/http.js.map +1 -1
- package/dist/integrations/mongodb.d.ts +50 -0
- package/dist/integrations/mongodb.js +256 -0
- package/dist/integrations/mongodb.js.map +1 -0
- package/dist/integrations/mysql.d.ts +56 -0
- package/dist/integrations/mysql.js +298 -0
- package/dist/integrations/mysql.js.map +1 -0
- package/dist/integrations/next.d.ts +41 -0
- package/dist/integrations/next.js +204 -0
- package/dist/integrations/next.js.map +1 -1
- package/dist/integrations/pg.d.ts +31 -3
- package/dist/integrations/pg.js +100 -29
- package/dist/integrations/pg.js.map +1 -1
- package/dist/integrations/postgres-js.d.ts +57 -0
- package/dist/integrations/postgres-js.js +306 -0
- package/dist/integrations/postgres-js.js.map +1 -0
- package/dist/integrations/prisma.d.ts +54 -0
- package/dist/integrations/prisma.js +182 -0
- package/dist/integrations/prisma.js.map +1 -0
- package/dist/integrations/redis.d.ts +6 -0
- package/dist/integrations/redis.js +21 -35
- package/dist/integrations/redis.js.map +1 -1
- package/dist/integrations/upstash-redis.d.ts +43 -0
- package/dist/integrations/upstash-redis.js +166 -0
- package/dist/integrations/upstash-redis.js.map +1 -0
- package/dist/utils/safe-require.d.ts +22 -0
- package/dist/utils/safe-require.js +36 -0
- package/dist/utils/safe-require.js.map +1 -0
- package/package.json +1 -1
|
@@ -69,6 +69,47 @@
|
|
|
69
69
|
* - Next.js instrumentation.ts: https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation
|
|
70
70
|
*/
|
|
71
71
|
import { JustAnalyticsOptions } from '../client';
|
|
72
|
+
/**
|
|
73
|
+
* Context provided by Next.js for the onRequestError hook.
|
|
74
|
+
*/
|
|
75
|
+
export interface NextRequestErrorContext {
|
|
76
|
+
/** The route path (e.g., '/api/users/[id]') */
|
|
77
|
+
routePath?: string;
|
|
78
|
+
/** The route type ('pages', 'app-route', 'app-page', 'middleware') */
|
|
79
|
+
routeType?: string;
|
|
80
|
+
/** The rendering type ('ssr', 'ssg', etc.) */
|
|
81
|
+
renderType?: string;
|
|
82
|
+
/** The router kind ('App Router', 'Pages Router') */
|
|
83
|
+
routerKind?: string;
|
|
84
|
+
/** The rendering source ('react-server-components', etc.) */
|
|
85
|
+
renderSource?: string;
|
|
86
|
+
/** Revalidation reason */
|
|
87
|
+
revalidateReason?: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Next.js 15+ `onRequestError` instrumentation hook.
|
|
91
|
+
*
|
|
92
|
+
* Next.js calls this function for every unhandled error in:
|
|
93
|
+
* - Server Components
|
|
94
|
+
* - Route handlers
|
|
95
|
+
* - Middleware
|
|
96
|
+
* - Server Actions
|
|
97
|
+
*
|
|
98
|
+
* Export this from your `instrumentation.ts` to automatically capture
|
|
99
|
+
* server-side errors:
|
|
100
|
+
* ```typescript
|
|
101
|
+
* export { onRequestError } from '@justanalyticsapp/node/next';
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* @param error - The Error object
|
|
105
|
+
* @param request - Partial request info (method, url, headers)
|
|
106
|
+
* @param context - Next.js route context (routePath, routeType, etc.)
|
|
107
|
+
*/
|
|
108
|
+
export declare function onRequestError(error: unknown, request: {
|
|
109
|
+
method: string;
|
|
110
|
+
url: string;
|
|
111
|
+
headers: Record<string, string>;
|
|
112
|
+
}, context: NextRequestErrorContext): void;
|
|
72
113
|
/**
|
|
73
114
|
* Minimal NextRequest interface to avoid importing from 'next/server'.
|
|
74
115
|
* Follows the same pattern as express.ts's minimal Express types.
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
* - Next.js instrumentation.ts: https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation
|
|
71
71
|
*/
|
|
72
72
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
73
|
+
exports.onRequestError = onRequestError;
|
|
73
74
|
exports.withJustAnalytics = withJustAnalytics;
|
|
74
75
|
exports.register = register;
|
|
75
76
|
exports.extractRoutePattern = extractRoutePattern;
|
|
@@ -80,6 +81,10 @@ exports.traceServerComponent = traceServerComponent;
|
|
|
80
81
|
// and to ensure we use the singleton from index.ts. We import the client
|
|
81
82
|
// class directly since the singleton is created in index.ts.
|
|
82
83
|
const client_1 = require("../client");
|
|
84
|
+
const span_1 = require("../span");
|
|
85
|
+
const headers_1 = require("../utils/headers");
|
|
86
|
+
const context_1 = require("../context");
|
|
87
|
+
const id_1 = require("../utils/id");
|
|
83
88
|
/**
|
|
84
89
|
* Internal reference to the singleton SDK client.
|
|
85
90
|
*
|
|
@@ -98,6 +103,198 @@ function getClient() {
|
|
|
98
103
|
return _client;
|
|
99
104
|
}
|
|
100
105
|
// ---------------------------------------------------------------------------
|
|
106
|
+
// Global fetch patching for Next.js 15+ (server components, route handlers)
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
/** Configuration captured at init time for the fetch patch */
|
|
109
|
+
let _fetchPatchConfig = null;
|
|
110
|
+
/**
|
|
111
|
+
* Patch `globalThis.fetch` to create client spans for outgoing HTTP requests.
|
|
112
|
+
*
|
|
113
|
+
* Next.js 15+ uses `fetch` internally for server components and route handlers.
|
|
114
|
+
* The standard `http.request` patching in the HTTP integration does not cover
|
|
115
|
+
* these fetch-based calls because Next.js may use an internal undici-based fetch
|
|
116
|
+
* that bypasses Node.js `http` module entirely.
|
|
117
|
+
*
|
|
118
|
+
* This patch:
|
|
119
|
+
* - Creates a client span for each outgoing fetch call
|
|
120
|
+
* - Injects the W3C `traceparent` header for distributed trace propagation
|
|
121
|
+
* - Skips instrumentation calls to JustAnalytics ingestion endpoints
|
|
122
|
+
* - Is idempotent (safe to call multiple times)
|
|
123
|
+
*
|
|
124
|
+
* @param serviceName - Service name for span attribution
|
|
125
|
+
* @param serverUrl - JustAnalytics server URL (excluded from tracing)
|
|
126
|
+
* @param onSpan - Callback invoked when a span ends (enqueues to transport)
|
|
127
|
+
*/
|
|
128
|
+
function patchGlobalFetch(serviceName, serverUrl, onSpan) {
|
|
129
|
+
const originalFetch = globalThis.fetch;
|
|
130
|
+
if (!originalFetch || originalFetch.__ja_patched)
|
|
131
|
+
return;
|
|
132
|
+
_fetchPatchConfig = { serviceName, serverUrl };
|
|
133
|
+
// Use `any` for the fetch signature to avoid DOM type dependencies.
|
|
134
|
+
// Node.js 18+ and Next.js 15+ provide globalThis.fetch with compatible types.
|
|
135
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
136
|
+
globalThis.fetch = async function patchedFetch(input, init) {
|
|
137
|
+
// Extract URL string from the various input types
|
|
138
|
+
let url;
|
|
139
|
+
try {
|
|
140
|
+
if (typeof input === 'string') {
|
|
141
|
+
url = input;
|
|
142
|
+
}
|
|
143
|
+
else if (input instanceof URL) {
|
|
144
|
+
url = input.href;
|
|
145
|
+
}
|
|
146
|
+
else if (input && typeof input === 'object' && 'url' in input) {
|
|
147
|
+
url = input.url;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
url = String(input);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// If we can't extract the URL, pass through
|
|
155
|
+
return originalFetch(input, init);
|
|
156
|
+
}
|
|
157
|
+
// Skip our own ingestion calls, health checks, and internal Next.js requests
|
|
158
|
+
if (url.includes('/api/ingest/') ||
|
|
159
|
+
url.includes(serverUrl) ||
|
|
160
|
+
url.includes('/health') ||
|
|
161
|
+
url.includes('/ready') ||
|
|
162
|
+
url.includes('/live') ||
|
|
163
|
+
url.includes('/_next/')) {
|
|
164
|
+
return originalFetch(input, init);
|
|
165
|
+
}
|
|
166
|
+
// Get parent span context for trace propagation
|
|
167
|
+
const parentSpan = (0, context_1.getActiveSpan)();
|
|
168
|
+
const traceId = parentSpan?.traceId ?? (0, id_1.generateTraceId)();
|
|
169
|
+
const parentSpanId = parentSpan?.id ?? null;
|
|
170
|
+
// Parse URL for span naming
|
|
171
|
+
let hostname = 'unknown';
|
|
172
|
+
let pathname = '/';
|
|
173
|
+
try {
|
|
174
|
+
const parsed = new URL(url);
|
|
175
|
+
hostname = parsed.hostname;
|
|
176
|
+
pathname = parsed.pathname;
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
// Relative URL or malformed -- use the raw string
|
|
180
|
+
pathname = url;
|
|
181
|
+
}
|
|
182
|
+
const method = (init?.method || 'GET').toUpperCase();
|
|
183
|
+
// Create client span
|
|
184
|
+
const span = new span_1.Span({
|
|
185
|
+
operationName: `${method} ${hostname}${pathname}`,
|
|
186
|
+
serviceName,
|
|
187
|
+
kind: 'client',
|
|
188
|
+
traceId,
|
|
189
|
+
parentSpanId,
|
|
190
|
+
attributes: {
|
|
191
|
+
'http.method': method,
|
|
192
|
+
'http.url': url,
|
|
193
|
+
'http.host': hostname,
|
|
194
|
+
'fetch.patched': true,
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
// Inject traceparent header into the request
|
|
198
|
+
const traceparentValue = (0, headers_1.serializeTraceparent)(span.traceId, span.id);
|
|
199
|
+
// Build headers: copy existing and add traceparent
|
|
200
|
+
// Use a plain object to avoid dependency on global Headers constructor
|
|
201
|
+
let patchedHeaders = {};
|
|
202
|
+
if (init?.headers) {
|
|
203
|
+
if (typeof init.headers === 'object' && !Array.isArray(init.headers)) {
|
|
204
|
+
if (typeof init.headers.forEach === 'function') {
|
|
205
|
+
// Headers instance or Map-like
|
|
206
|
+
init.headers.forEach((value, key) => {
|
|
207
|
+
patchedHeaders[key] = value;
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
// Plain object
|
|
212
|
+
patchedHeaders = { ...init.headers };
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (!patchedHeaders['traceparent']) {
|
|
217
|
+
patchedHeaders['traceparent'] = traceparentValue;
|
|
218
|
+
}
|
|
219
|
+
const patchedInit = {
|
|
220
|
+
...init,
|
|
221
|
+
headers: patchedHeaders,
|
|
222
|
+
};
|
|
223
|
+
try {
|
|
224
|
+
const response = await originalFetch(input, patchedInit);
|
|
225
|
+
span.setAttribute('http.status_code', response.status);
|
|
226
|
+
if (response.status >= 400) {
|
|
227
|
+
span.setStatus('error', `HTTP ${response.status}`);
|
|
228
|
+
}
|
|
229
|
+
span.end();
|
|
230
|
+
onSpan(span);
|
|
231
|
+
return response;
|
|
232
|
+
}
|
|
233
|
+
catch (err) {
|
|
234
|
+
span.setStatus('error', err instanceof Error ? err.message : String(err));
|
|
235
|
+
span.end();
|
|
236
|
+
onSpan(span);
|
|
237
|
+
throw err;
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
globalThis.fetch.__ja_patched = true;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Next.js 15+ `onRequestError` instrumentation hook.
|
|
244
|
+
*
|
|
245
|
+
* Next.js calls this function for every unhandled error in:
|
|
246
|
+
* - Server Components
|
|
247
|
+
* - Route handlers
|
|
248
|
+
* - Middleware
|
|
249
|
+
* - Server Actions
|
|
250
|
+
*
|
|
251
|
+
* Export this from your `instrumentation.ts` to automatically capture
|
|
252
|
+
* server-side errors:
|
|
253
|
+
* ```typescript
|
|
254
|
+
* export { onRequestError } from '@justanalyticsapp/node/next';
|
|
255
|
+
* ```
|
|
256
|
+
*
|
|
257
|
+
* @param error - The Error object
|
|
258
|
+
* @param request - Partial request info (method, url, headers)
|
|
259
|
+
* @param context - Next.js route context (routePath, routeType, etc.)
|
|
260
|
+
*/
|
|
261
|
+
function onRequestError(error, request, context) {
|
|
262
|
+
try {
|
|
263
|
+
const client = getClient();
|
|
264
|
+
if (!client || !client.isInitialized())
|
|
265
|
+
return;
|
|
266
|
+
// Build tags from Next.js context
|
|
267
|
+
const tags = {
|
|
268
|
+
'error.mechanism': 'nextjs.onRequestError',
|
|
269
|
+
};
|
|
270
|
+
if (context.routePath)
|
|
271
|
+
tags['next.route'] = context.routePath;
|
|
272
|
+
if (context.routeType)
|
|
273
|
+
tags['next.routeType'] = context.routeType;
|
|
274
|
+
if (context.routerKind)
|
|
275
|
+
tags['next.routerKind'] = context.routerKind;
|
|
276
|
+
if (context.renderType)
|
|
277
|
+
tags['next.renderType'] = context.renderType;
|
|
278
|
+
if (context.renderSource)
|
|
279
|
+
tags['next.renderSource'] = context.renderSource;
|
|
280
|
+
if (request.method)
|
|
281
|
+
tags['http.method'] = request.method;
|
|
282
|
+
// Capture the error via the client
|
|
283
|
+
client.captureException(error, {
|
|
284
|
+
tags,
|
|
285
|
+
extra: {
|
|
286
|
+
url: request.url,
|
|
287
|
+
method: request.method,
|
|
288
|
+
routePath: context.routePath,
|
|
289
|
+
routeType: context.routeType,
|
|
290
|
+
},
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
// Never throw from the instrumentation hook
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// ---------------------------------------------------------------------------
|
|
101
298
|
// withJustAnalytics()
|
|
102
299
|
// ---------------------------------------------------------------------------
|
|
103
300
|
/**
|
|
@@ -167,6 +364,13 @@ function withJustAnalytics(config) {
|
|
|
167
364
|
: {}),
|
|
168
365
|
};
|
|
169
366
|
_client.init(initOptions);
|
|
367
|
+
// Patch globalThis.fetch for Next.js server components and route handlers.
|
|
368
|
+
// This must run AFTER init() so the transport is ready to receive spans.
|
|
369
|
+
const resolvedServerUrl = serverUrl || 'https://justanalytics.app';
|
|
370
|
+
const clientRef = _client;
|
|
371
|
+
patchGlobalFetch(serviceName, resolvedServerUrl, (span) => {
|
|
372
|
+
clientRef.enqueueSpan(span);
|
|
373
|
+
});
|
|
170
374
|
}
|
|
171
375
|
catch {
|
|
172
376
|
// Never throw from initialization -- the user's app must not be affected
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/integrations/next.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/integrations/next.ts"],"names":[],"mappings":"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"}
|
|
@@ -93,6 +93,9 @@ export declare function sanitizeConnectionString(connStr: string): string;
|
|
|
93
93
|
* pg.Pool.prototype.query, and pg.Pool.prototype.connect to auto-create
|
|
94
94
|
* db.query and db.connect spans for all PostgreSQL operations.
|
|
95
95
|
*
|
|
96
|
+
* Also supports @neondatabase/serverless which exposes a pg-compatible
|
|
97
|
+
* Client and Pool API over HTTP/WebSocket.
|
|
98
|
+
*
|
|
96
99
|
* Follows the same pattern as HttpIntegration (Story 036):
|
|
97
100
|
* - Constructor accepts serviceName, options, onSpanEnd callback
|
|
98
101
|
* - enable() patches, disable() restores
|
|
@@ -104,11 +107,17 @@ export declare class PgIntegration {
|
|
|
104
107
|
private _options;
|
|
105
108
|
private _serviceName;
|
|
106
109
|
private _onSpanEnd;
|
|
110
|
+
/** Which driver was actually instrumented (for logging) */
|
|
111
|
+
private _instrumentedDriver;
|
|
107
112
|
private _originalClientQuery;
|
|
108
113
|
private _originalPoolQuery;
|
|
109
114
|
private _originalPoolConnect;
|
|
110
115
|
private _pgClient;
|
|
111
116
|
private _pgPool;
|
|
117
|
+
private _originalNeonClientQuery;
|
|
118
|
+
private _originalNeonPoolQuery;
|
|
119
|
+
private _neonClient;
|
|
120
|
+
private _neonPool;
|
|
112
121
|
/**
|
|
113
122
|
* Create a new PgIntegration.
|
|
114
123
|
*
|
|
@@ -118,11 +127,26 @@ export declare class PgIntegration {
|
|
|
118
127
|
*/
|
|
119
128
|
constructor(serviceName: string, options: PgIntegrationOptions | undefined, onSpanEnd: (span: Span) => void);
|
|
120
129
|
/**
|
|
121
|
-
*
|
|
130
|
+
* Get which driver was instrumented, or null if none.
|
|
131
|
+
*/
|
|
132
|
+
get instrumentedDriver(): string | null;
|
|
133
|
+
/**
|
|
134
|
+
* Activate the integration: try pg first, then @neondatabase/serverless.
|
|
122
135
|
*
|
|
123
136
|
* Calling enable() when already enabled is a no-op (idempotent).
|
|
124
137
|
*/
|
|
125
138
|
enable(): void;
|
|
139
|
+
/**
|
|
140
|
+
* Try to load and patch the `pg` module.
|
|
141
|
+
* @returns true if patched successfully
|
|
142
|
+
*/
|
|
143
|
+
private _tryPatchPg;
|
|
144
|
+
/**
|
|
145
|
+
* Try to load and patch `@neondatabase/serverless`.
|
|
146
|
+
* Neon's driver has a pg-compatible Client and Pool API.
|
|
147
|
+
* @returns true if patched successfully
|
|
148
|
+
*/
|
|
149
|
+
private _tryPatchNeon;
|
|
126
150
|
/**
|
|
127
151
|
* Deactivate: restore original pg functions.
|
|
128
152
|
*
|
|
@@ -130,9 +154,13 @@ export declare class PgIntegration {
|
|
|
130
154
|
*/
|
|
131
155
|
disable(): void;
|
|
132
156
|
/**
|
|
133
|
-
* Restore
|
|
157
|
+
* Restore pg patched functions to their originals.
|
|
158
|
+
*/
|
|
159
|
+
private _restorePgOriginals;
|
|
160
|
+
/**
|
|
161
|
+
* Restore @neondatabase/serverless patched functions to their originals.
|
|
134
162
|
*/
|
|
135
|
-
private
|
|
163
|
+
private _restoreNeonOriginals;
|
|
136
164
|
/**
|
|
137
165
|
* Wrap pg.Client.prototype.query to create db.query spans.
|
|
138
166
|
*
|
package/dist/integrations/pg.js
CHANGED
|
@@ -34,6 +34,7 @@ exports.sanitizeConnectionString = sanitizeConnectionString;
|
|
|
34
34
|
const span_1 = require("../span");
|
|
35
35
|
const context_1 = require("../context");
|
|
36
36
|
const id_1 = require("../utils/id");
|
|
37
|
+
const safe_require_1 = require("../utils/safe-require");
|
|
37
38
|
// ============================================================================
|
|
38
39
|
// SQL Sanitization Utilities (exported for testing)
|
|
39
40
|
// ============================================================================
|
|
@@ -189,6 +190,9 @@ function normalizeQueryArgs(args) {
|
|
|
189
190
|
* pg.Pool.prototype.query, and pg.Pool.prototype.connect to auto-create
|
|
190
191
|
* db.query and db.connect spans for all PostgreSQL operations.
|
|
191
192
|
*
|
|
193
|
+
* Also supports @neondatabase/serverless which exposes a pg-compatible
|
|
194
|
+
* Client and Pool API over HTTP/WebSocket.
|
|
195
|
+
*
|
|
192
196
|
* Follows the same pattern as HttpIntegration (Story 036):
|
|
193
197
|
* - Constructor accepts serviceName, options, onSpanEnd callback
|
|
194
198
|
* - enable() patches, disable() restores
|
|
@@ -205,15 +209,24 @@ class PgIntegration {
|
|
|
205
209
|
*/
|
|
206
210
|
constructor(serviceName, options, onSpanEnd) {
|
|
207
211
|
this._enabled = false;
|
|
208
|
-
|
|
212
|
+
/** Which driver was actually instrumented (for logging) */
|
|
213
|
+
this._instrumentedDriver = null;
|
|
214
|
+
// Store original functions for restoration (pg)
|
|
209
215
|
this._originalClientQuery = null;
|
|
210
216
|
this._originalPoolQuery = null;
|
|
211
217
|
this._originalPoolConnect = null;
|
|
212
|
-
// Store references to prototypes for restoration
|
|
218
|
+
// Store references to prototypes for restoration (pg)
|
|
213
219
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
214
220
|
this._pgClient = null;
|
|
215
221
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
216
222
|
this._pgPool = null;
|
|
223
|
+
// Store original functions for restoration (@neondatabase/serverless)
|
|
224
|
+
this._originalNeonClientQuery = null;
|
|
225
|
+
this._originalNeonPoolQuery = null;
|
|
226
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
227
|
+
this._neonClient = null;
|
|
228
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
229
|
+
this._neonPool = null;
|
|
217
230
|
this._serviceName = serviceName;
|
|
218
231
|
this._onSpanEnd = onSpanEnd;
|
|
219
232
|
// Resolve options with defaults
|
|
@@ -224,7 +237,13 @@ class PgIntegration {
|
|
|
224
237
|
};
|
|
225
238
|
}
|
|
226
239
|
/**
|
|
227
|
-
*
|
|
240
|
+
* Get which driver was instrumented, or null if none.
|
|
241
|
+
*/
|
|
242
|
+
get instrumentedDriver() {
|
|
243
|
+
return this._instrumentedDriver;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Activate the integration: try pg first, then @neondatabase/serverless.
|
|
228
247
|
*
|
|
229
248
|
* Calling enable() when already enabled is a no-op (idempotent).
|
|
230
249
|
*/
|
|
@@ -233,27 +252,33 @@ class PgIntegration {
|
|
|
233
252
|
return;
|
|
234
253
|
if (!this._options.enabled)
|
|
235
254
|
return;
|
|
255
|
+
// Try pg first
|
|
256
|
+
if (this._tryPatchPg()) {
|
|
257
|
+
this._instrumentedDriver = 'pg';
|
|
258
|
+
this._enabled = true;
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
// Try @neondatabase/serverless
|
|
262
|
+
if (this._tryPatchNeon()) {
|
|
263
|
+
this._instrumentedDriver = '@neondatabase/serverless';
|
|
264
|
+
this._enabled = true;
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
// Neither found - no error, caller handles logging
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Try to load and patch the `pg` module.
|
|
271
|
+
* @returns true if patched successfully
|
|
272
|
+
*/
|
|
273
|
+
_tryPatchPg() {
|
|
236
274
|
try {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
try {
|
|
241
|
-
pg = require('pg');
|
|
242
|
-
}
|
|
243
|
-
catch {
|
|
244
|
-
// pg module is not installed -- silently skip
|
|
245
|
-
if (typeof console !== 'undefined') {
|
|
246
|
-
console.debug('[JustAnalytics] pg module not found. Skipping PostgreSQL auto-instrumentation.');
|
|
247
|
-
}
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
275
|
+
const pg = (0, safe_require_1.safeRequire)('pg');
|
|
276
|
+
if (!pg)
|
|
277
|
+
return false;
|
|
250
278
|
const Client = pg.Client;
|
|
251
279
|
const Pool = pg.Pool;
|
|
252
280
|
if (!Client || !Client.prototype) {
|
|
253
|
-
|
|
254
|
-
console.debug('[JustAnalytics] pg.Client not found. Skipping PostgreSQL auto-instrumentation.');
|
|
255
|
-
}
|
|
256
|
-
return;
|
|
281
|
+
return false;
|
|
257
282
|
}
|
|
258
283
|
// Store references for restoration
|
|
259
284
|
this._pgClient = Client.prototype;
|
|
@@ -270,14 +295,43 @@ class PgIntegration {
|
|
|
270
295
|
this._originalPoolConnect = Pool.prototype.connect;
|
|
271
296
|
Pool.prototype.connect = this._wrapPoolConnect(this._originalPoolConnect);
|
|
272
297
|
}
|
|
273
|
-
|
|
298
|
+
return true;
|
|
274
299
|
}
|
|
275
|
-
catch
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
300
|
+
catch {
|
|
301
|
+
this._restorePgOriginals();
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Try to load and patch `@neondatabase/serverless`.
|
|
307
|
+
* Neon's driver has a pg-compatible Client and Pool API.
|
|
308
|
+
* @returns true if patched successfully
|
|
309
|
+
*/
|
|
310
|
+
_tryPatchNeon() {
|
|
311
|
+
try {
|
|
312
|
+
const neon = (0, safe_require_1.safeRequire)('@neondatabase/serverless');
|
|
313
|
+
if (!neon)
|
|
314
|
+
return false;
|
|
315
|
+
const Client = neon.Client;
|
|
316
|
+
const Pool = neon.Pool;
|
|
317
|
+
let patched = false;
|
|
318
|
+
if (Client && Client.prototype && Client.prototype.query) {
|
|
319
|
+
this._neonClient = Client.prototype;
|
|
320
|
+
this._originalNeonClientQuery = Client.prototype.query;
|
|
321
|
+
Client.prototype.query = this._wrapClientQuery(this._originalNeonClientQuery);
|
|
322
|
+
patched = true;
|
|
323
|
+
}
|
|
324
|
+
if (Pool && Pool.prototype && Pool.prototype.query) {
|
|
325
|
+
this._neonPool = Pool.prototype;
|
|
326
|
+
this._originalNeonPoolQuery = Pool.prototype.query;
|
|
327
|
+
Pool.prototype.query = this._wrapPoolQuery(this._originalNeonPoolQuery);
|
|
328
|
+
patched = true;
|
|
280
329
|
}
|
|
330
|
+
return patched;
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
this._restoreNeonOriginals();
|
|
334
|
+
return false;
|
|
281
335
|
}
|
|
282
336
|
}
|
|
283
337
|
/**
|
|
@@ -288,13 +342,15 @@ class PgIntegration {
|
|
|
288
342
|
disable() {
|
|
289
343
|
if (!this._enabled)
|
|
290
344
|
return;
|
|
291
|
-
this.
|
|
345
|
+
this._restorePgOriginals();
|
|
346
|
+
this._restoreNeonOriginals();
|
|
347
|
+
this._instrumentedDriver = null;
|
|
292
348
|
this._enabled = false;
|
|
293
349
|
}
|
|
294
350
|
/**
|
|
295
|
-
* Restore
|
|
351
|
+
* Restore pg patched functions to their originals.
|
|
296
352
|
*/
|
|
297
|
-
|
|
353
|
+
_restorePgOriginals() {
|
|
298
354
|
if (this._pgClient && this._originalClientQuery) {
|
|
299
355
|
this._pgClient.query = this._originalClientQuery;
|
|
300
356
|
this._originalClientQuery = null;
|
|
@@ -312,6 +368,21 @@ class PgIntegration {
|
|
|
312
368
|
this._pgPool = null;
|
|
313
369
|
}
|
|
314
370
|
}
|
|
371
|
+
/**
|
|
372
|
+
* Restore @neondatabase/serverless patched functions to their originals.
|
|
373
|
+
*/
|
|
374
|
+
_restoreNeonOriginals() {
|
|
375
|
+
if (this._neonClient && this._originalNeonClientQuery) {
|
|
376
|
+
this._neonClient.query = this._originalNeonClientQuery;
|
|
377
|
+
this._originalNeonClientQuery = null;
|
|
378
|
+
this._neonClient = null;
|
|
379
|
+
}
|
|
380
|
+
if (this._neonPool && this._originalNeonPoolQuery) {
|
|
381
|
+
this._neonPool.query = this._originalNeonPoolQuery;
|
|
382
|
+
this._originalNeonPoolQuery = null;
|
|
383
|
+
this._neonPool = null;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
315
386
|
/**
|
|
316
387
|
* Wrap pg.Client.prototype.query to create db.query spans.
|
|
317
388
|
*
|