@justanalyticsapp/node 0.2.0 → 0.3.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/dist/client.d.ts +23 -1
- package/dist/client.js +140 -2
- package/dist/client.js.map +1 -1
- package/dist/integrations/axios-integration.d.ts +53 -0
- package/dist/integrations/axios-integration.js +221 -0
- package/dist/integrations/axios-integration.js.map +1 -0
- package/dist/integrations/drizzle.d.ts +54 -0
- package/dist/integrations/drizzle.js +245 -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 +260 -0
- package/dist/integrations/mongodb.js.map +1 -0
- package/dist/integrations/mysql.d.ts +56 -0
- package/dist/integrations/mysql.js +307 -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 +102 -22
- package/dist/integrations/pg.js.map +1 -1
- package/dist/integrations/postgres-js.d.ts +57 -0
- package/dist/integrations/postgres-js.js +311 -0
- package/dist/integrations/postgres-js.js.map +1 -0
- package/dist/integrations/prisma.d.ts +54 -0
- package/dist/integrations/prisma.js +186 -0
- package/dist/integrations/prisma.js.map +1 -0
- package/dist/integrations/redis.d.ts +6 -0
- package/dist/integrations/redis.js +16 -19
- package/dist/integrations/redis.js.map +1 -1
- package/dist/integrations/upstash-redis.d.ts +43 -0
- package/dist/integrations/upstash-redis.js +170 -0
- package/dist/integrations/upstash-redis.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":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;;AA2HH,8CA4DC;AAkBD,4BAWC;AAoBD,kDA0CC;AA8BD,kCA+DC;AA8BD,sDAgEC;AAiCD,oDAgCC;AA1gBD,yEAAyE;AACzE,yEAAyE;AACzE,6DAA6D;AAC7D,sCAAgD;AAEhD;;;;;;;GAOG;AACH,IAAI,OAAO,GAA+B,IAAI,CAAC;AAE/C;;;;GAIG;AACH,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC;AACjB,CAAC;AA2ED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,iBAAiB,CAAC,MAAiC;IACjE,IAAI,CAAC;QACH,8DAA8D;QAC9D,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;QACjG,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;QACjG,MAAM,cAAc,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3G,MAAM,cAAc,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1G,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAErF,+CAA+C;QAC/C,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,SAAS,IAAI,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,SAAS,IAAI,EAAE,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,cAAc,IAAI,UAAU,CAAC;QACxE,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,cAAc,IAAI,UAAU,IAAI,aAAa,CAAC;QACzF,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,MAAM,CAAC;QAE9C,2BAA2B;QAC3B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,oEAAoE,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,4BAAmB,EAAE,CAAC;QACtC,CAAC;QAED,wDAAwD;QACxD,MAAM,WAAW,GAAyB;YACxC,MAAM;YACN,MAAM;YACN,WAAW;YACX,WAAW;YACX,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,MAAM,EAAE,8BAA8B,KAAK,SAAS;gBACtD,CAAC,CAAC,EAAE,8BAA8B,EAAE,MAAM,CAAC,8BAA8B,EAAE;gBAC3E,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,MAAM,EAAE,+BAA+B,KAAK,SAAS;gBACvD,CAAC,CAAC,EAAE,+BAA+B,EAAE,MAAM,CAAC,+BAA+B,EAAE;gBAC7E,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ;IACtB,IAAI,CAAC;QACH,qDAAqD;QACrD,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;;;;;;;;;GAaG;AACH,SAAgB,mBAAmB,CAAC,GAAoB;IACtD,IAAI,CAAC;QACH,IAAI,OAAO,GAAkB,IAAI,CAAC;QAElC,mDAAmD;QACnD,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAC1B,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YACjC,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;oBACjD,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;gBACzB,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC;gBACpB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,GAAG,CAAC;YAChB,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,WAAW,CAAC,OAAyB;IACnD,OAAO,KAAK,UAAU,aAAa,CACjC,GAAoB,EACpB,OAAwD;QAExD,yCAAyC;QACzC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,YAAY,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,WAAW;gBAC5C,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,QAAQ,CAAC;gBACxC,CAAC,CAAC,QAAQ,CAAC;YAEb,OAAO,MAAM,MAAM,CAAC,SAAS,CAC3B,QAAQ,EACR,EAAE,IAAI,EAAE,QAAQ,EAAE,EAClB,KAAK,EAAE,IAAI,EAAE,EAAE;gBACb,kCAAkC;gBAClC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;gBAC7C,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBAE9C,IAAI,QAAkB,CAAC;gBACvB,IAAI,CAAC;oBACH,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACzC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,mEAAmE;oBACnE,MAAM,GAAG,CAAC;gBACZ,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACnC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;gBAElD,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;oBACtB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,UAAU,EAAE,CAAC,CAAC;gBAChD,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qEAAqE;YACrE,qEAAqE;YACrE,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,2DAA2D,EAAE,CAAC;gBACxG,OAAO,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,qBAAqB,CACnC,UAAkC;IAElC,OAAO,KAAK,UAAU,gBAAgB,CACpC,GAAoB;QAEpB,yCAAyC;QACzC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,OAAO,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,SAAS,CAC3B,YAAY,EACZ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAClB,KAAK,EAAE,IAAI,EAAE,EAAE;gBACb,qCAAqC;gBACrC,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBAE3C,IAAI,QAAqC,CAAC;gBAC1C,IAAI,CAAC;oBACH,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,sEAAsE;oBACtE,MAAM,GAAG,CAAC;gBACZ,CAAC;gBAED,sBAAsB;gBACtB,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACxC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACvD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;wBAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;gBAED,sCAAsC;gBACtC,IAAI,QAAQ,CAAC,OAAO,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;oBACnE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;oBAChE,IAAI,UAAU,EAAE,CAAC;wBACf,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;oBAC3D,CAAC;oBAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;oBAClE,IAAI,WAAW,EAAE,CAAC;wBAChB,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAC;oBAC7D,CAAC;gBACH,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wEAAwE;YACxE,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,2DAA2D,EAAE,CAAC;gBACxG,OAAO,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,oBAAoB,CAClC,IAAY,EACZ,EAA8B;IAE9B,yCAAyC;IACzC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,SAAS,CACrB,OAAO,IAAI,EAAE,EACb,EAAE,IAAI,EAAE,UAAU,EAAE,EACpB,CAAC,IAAI,EAAE,EAAE;YACP,6BAA6B;YAC7B,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAEpC,OAAO,EAAE,EAAE,CAAC;QACd,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6CAA6C;QAC7C,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,2DAA2D,EAAE,CAAC;YACxG,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
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
|
@@ -189,6 +189,9 @@ function normalizeQueryArgs(args) {
|
|
|
189
189
|
* pg.Pool.prototype.query, and pg.Pool.prototype.connect to auto-create
|
|
190
190
|
* db.query and db.connect spans for all PostgreSQL operations.
|
|
191
191
|
*
|
|
192
|
+
* Also supports @neondatabase/serverless which exposes a pg-compatible
|
|
193
|
+
* Client and Pool API over HTTP/WebSocket.
|
|
194
|
+
*
|
|
192
195
|
* Follows the same pattern as HttpIntegration (Story 036):
|
|
193
196
|
* - Constructor accepts serviceName, options, onSpanEnd callback
|
|
194
197
|
* - enable() patches, disable() restores
|
|
@@ -205,15 +208,24 @@ class PgIntegration {
|
|
|
205
208
|
*/
|
|
206
209
|
constructor(serviceName, options, onSpanEnd) {
|
|
207
210
|
this._enabled = false;
|
|
208
|
-
|
|
211
|
+
/** Which driver was actually instrumented (for logging) */
|
|
212
|
+
this._instrumentedDriver = null;
|
|
213
|
+
// Store original functions for restoration (pg)
|
|
209
214
|
this._originalClientQuery = null;
|
|
210
215
|
this._originalPoolQuery = null;
|
|
211
216
|
this._originalPoolConnect = null;
|
|
212
|
-
// Store references to prototypes for restoration
|
|
217
|
+
// Store references to prototypes for restoration (pg)
|
|
213
218
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
214
219
|
this._pgClient = null;
|
|
215
220
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
216
221
|
this._pgPool = null;
|
|
222
|
+
// Store original functions for restoration (@neondatabase/serverless)
|
|
223
|
+
this._originalNeonClientQuery = null;
|
|
224
|
+
this._originalNeonPoolQuery = null;
|
|
225
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
226
|
+
this._neonClient = null;
|
|
227
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
228
|
+
this._neonPool = null;
|
|
217
229
|
this._serviceName = serviceName;
|
|
218
230
|
this._onSpanEnd = onSpanEnd;
|
|
219
231
|
// Resolve options with defaults
|
|
@@ -224,7 +236,13 @@ class PgIntegration {
|
|
|
224
236
|
};
|
|
225
237
|
}
|
|
226
238
|
/**
|
|
227
|
-
*
|
|
239
|
+
* Get which driver was instrumented, or null if none.
|
|
240
|
+
*/
|
|
241
|
+
get instrumentedDriver() {
|
|
242
|
+
return this._instrumentedDriver;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Activate the integration: try pg first, then @neondatabase/serverless.
|
|
228
246
|
*
|
|
229
247
|
* Calling enable() when already enabled is a no-op (idempotent).
|
|
230
248
|
*/
|
|
@@ -233,27 +251,38 @@ class PgIntegration {
|
|
|
233
251
|
return;
|
|
234
252
|
if (!this._options.enabled)
|
|
235
253
|
return;
|
|
254
|
+
// Try pg first
|
|
255
|
+
if (this._tryPatchPg()) {
|
|
256
|
+
this._instrumentedDriver = 'pg';
|
|
257
|
+
this._enabled = true;
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
// Try @neondatabase/serverless
|
|
261
|
+
if (this._tryPatchNeon()) {
|
|
262
|
+
this._instrumentedDriver = '@neondatabase/serverless';
|
|
263
|
+
this._enabled = true;
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
// Neither found - no error, caller handles logging
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Try to load and patch the `pg` module.
|
|
270
|
+
* @returns true if patched successfully
|
|
271
|
+
*/
|
|
272
|
+
_tryPatchPg() {
|
|
236
273
|
try {
|
|
237
|
-
// Dynamic require: pg is an optional peer dependency
|
|
238
274
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
239
275
|
let pg;
|
|
240
276
|
try {
|
|
241
277
|
pg = require('pg');
|
|
242
278
|
}
|
|
243
279
|
catch {
|
|
244
|
-
|
|
245
|
-
if (typeof console !== 'undefined') {
|
|
246
|
-
console.debug('[JustAnalytics] pg module not found. Skipping PostgreSQL auto-instrumentation.');
|
|
247
|
-
}
|
|
248
|
-
return;
|
|
280
|
+
return false;
|
|
249
281
|
}
|
|
250
282
|
const Client = pg.Client;
|
|
251
283
|
const Pool = pg.Pool;
|
|
252
284
|
if (!Client || !Client.prototype) {
|
|
253
|
-
|
|
254
|
-
console.debug('[JustAnalytics] pg.Client not found. Skipping PostgreSQL auto-instrumentation.');
|
|
255
|
-
}
|
|
256
|
-
return;
|
|
285
|
+
return false;
|
|
257
286
|
}
|
|
258
287
|
// Store references for restoration
|
|
259
288
|
this._pgClient = Client.prototype;
|
|
@@ -270,14 +299,48 @@ class PgIntegration {
|
|
|
270
299
|
this._originalPoolConnect = Pool.prototype.connect;
|
|
271
300
|
Pool.prototype.connect = this._wrapPoolConnect(this._originalPoolConnect);
|
|
272
301
|
}
|
|
273
|
-
|
|
302
|
+
return true;
|
|
274
303
|
}
|
|
275
|
-
catch
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
304
|
+
catch {
|
|
305
|
+
this._restorePgOriginals();
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Try to load and patch `@neondatabase/serverless`.
|
|
311
|
+
* Neon's driver has a pg-compatible Client and Pool API.
|
|
312
|
+
* @returns true if patched successfully
|
|
313
|
+
*/
|
|
314
|
+
_tryPatchNeon() {
|
|
315
|
+
try {
|
|
316
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
317
|
+
let neon;
|
|
318
|
+
try {
|
|
319
|
+
neon = require('@neondatabase/serverless');
|
|
320
|
+
}
|
|
321
|
+
catch {
|
|
322
|
+
return false;
|
|
280
323
|
}
|
|
324
|
+
const Client = neon.Client;
|
|
325
|
+
const Pool = neon.Pool;
|
|
326
|
+
let patched = false;
|
|
327
|
+
if (Client && Client.prototype && Client.prototype.query) {
|
|
328
|
+
this._neonClient = Client.prototype;
|
|
329
|
+
this._originalNeonClientQuery = Client.prototype.query;
|
|
330
|
+
Client.prototype.query = this._wrapClientQuery(this._originalNeonClientQuery);
|
|
331
|
+
patched = true;
|
|
332
|
+
}
|
|
333
|
+
if (Pool && Pool.prototype && Pool.prototype.query) {
|
|
334
|
+
this._neonPool = Pool.prototype;
|
|
335
|
+
this._originalNeonPoolQuery = Pool.prototype.query;
|
|
336
|
+
Pool.prototype.query = this._wrapPoolQuery(this._originalNeonPoolQuery);
|
|
337
|
+
patched = true;
|
|
338
|
+
}
|
|
339
|
+
return patched;
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
this._restoreNeonOriginals();
|
|
343
|
+
return false;
|
|
281
344
|
}
|
|
282
345
|
}
|
|
283
346
|
/**
|
|
@@ -288,13 +351,15 @@ class PgIntegration {
|
|
|
288
351
|
disable() {
|
|
289
352
|
if (!this._enabled)
|
|
290
353
|
return;
|
|
291
|
-
this.
|
|
354
|
+
this._restorePgOriginals();
|
|
355
|
+
this._restoreNeonOriginals();
|
|
356
|
+
this._instrumentedDriver = null;
|
|
292
357
|
this._enabled = false;
|
|
293
358
|
}
|
|
294
359
|
/**
|
|
295
|
-
* Restore
|
|
360
|
+
* Restore pg patched functions to their originals.
|
|
296
361
|
*/
|
|
297
|
-
|
|
362
|
+
_restorePgOriginals() {
|
|
298
363
|
if (this._pgClient && this._originalClientQuery) {
|
|
299
364
|
this._pgClient.query = this._originalClientQuery;
|
|
300
365
|
this._originalClientQuery = null;
|
|
@@ -312,6 +377,21 @@ class PgIntegration {
|
|
|
312
377
|
this._pgPool = null;
|
|
313
378
|
}
|
|
314
379
|
}
|
|
380
|
+
/**
|
|
381
|
+
* Restore @neondatabase/serverless patched functions to their originals.
|
|
382
|
+
*/
|
|
383
|
+
_restoreNeonOriginals() {
|
|
384
|
+
if (this._neonClient && this._originalNeonClientQuery) {
|
|
385
|
+
this._neonClient.query = this._originalNeonClientQuery;
|
|
386
|
+
this._originalNeonClientQuery = null;
|
|
387
|
+
this._neonClient = null;
|
|
388
|
+
}
|
|
389
|
+
if (this._neonPool && this._originalNeonPoolQuery) {
|
|
390
|
+
this._neonPool.query = this._originalNeonPoolQuery;
|
|
391
|
+
this._originalNeonPoolQuery = null;
|
|
392
|
+
this._neonPool = null;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
315
395
|
/**
|
|
316
396
|
* Wrap pg.Client.prototype.query to create db.query spans.
|
|
317
397
|
*
|