@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.
Files changed (40) hide show
  1. package/dist/client.d.ts +23 -1
  2. package/dist/client.js +139 -1
  3. package/dist/client.js.map +1 -1
  4. package/dist/integrations/axios-integration.d.ts +53 -0
  5. package/dist/integrations/axios-integration.js +217 -0
  6. package/dist/integrations/axios-integration.js.map +1 -0
  7. package/dist/integrations/drizzle.d.ts +54 -0
  8. package/dist/integrations/drizzle.js +236 -0
  9. package/dist/integrations/drizzle.js.map +1 -0
  10. package/dist/integrations/http.d.ts +3 -1
  11. package/dist/integrations/http.js +12 -1
  12. package/dist/integrations/http.js.map +1 -1
  13. package/dist/integrations/mongodb.d.ts +50 -0
  14. package/dist/integrations/mongodb.js +256 -0
  15. package/dist/integrations/mongodb.js.map +1 -0
  16. package/dist/integrations/mysql.d.ts +56 -0
  17. package/dist/integrations/mysql.js +298 -0
  18. package/dist/integrations/mysql.js.map +1 -0
  19. package/dist/integrations/next.d.ts +41 -0
  20. package/dist/integrations/next.js +204 -0
  21. package/dist/integrations/next.js.map +1 -1
  22. package/dist/integrations/pg.d.ts +31 -3
  23. package/dist/integrations/pg.js +100 -29
  24. package/dist/integrations/pg.js.map +1 -1
  25. package/dist/integrations/postgres-js.d.ts +57 -0
  26. package/dist/integrations/postgres-js.js +306 -0
  27. package/dist/integrations/postgres-js.js.map +1 -0
  28. package/dist/integrations/prisma.d.ts +54 -0
  29. package/dist/integrations/prisma.js +182 -0
  30. package/dist/integrations/prisma.js.map +1 -0
  31. package/dist/integrations/redis.d.ts +6 -0
  32. package/dist/integrations/redis.js +21 -35
  33. package/dist/integrations/redis.js.map +1 -1
  34. package/dist/integrations/upstash-redis.d.ts +43 -0
  35. package/dist/integrations/upstash-redis.js +166 -0
  36. package/dist/integrations/upstash-redis.js.map +1 -0
  37. package/dist/utils/safe-require.d.ts +22 -0
  38. package/dist/utils/safe-require.js +36 -0
  39. package/dist/utils/safe-require.js.map +1 -0
  40. 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
- * Activate the integration: load pg module and patch prototypes.
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 all patched functions to their originals.
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 _restoreOriginals;
163
+ private _restoreNeonOriginals;
136
164
  /**
137
165
  * Wrap pg.Client.prototype.query to create db.query spans.
138
166
  *
@@ -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
- // Store original functions for restoration
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
- * Activate the integration: load pg module and patch prototypes.
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
- // Dynamic require: pg is an optional peer dependency
238
- // eslint-disable-next-line @typescript-eslint/no-var-requires
239
- let pg;
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
- if (typeof console !== 'undefined') {
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
- this._enabled = true;
298
+ return true;
274
299
  }
275
- catch (error) {
276
- // Monkey-patching failed; fall back to no-op and restore any partial patches
277
- this._restoreOriginals();
278
- if (typeof console !== 'undefined') {
279
- console.warn('[JustAnalytics] Failed to enable PostgreSQL integration:', error instanceof Error ? error.message : String(error));
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._restoreOriginals();
345
+ this._restorePgOriginals();
346
+ this._restoreNeonOriginals();
347
+ this._instrumentedDriver = null;
292
348
  this._enabled = false;
293
349
  }
294
350
  /**
295
- * Restore all patched functions to their originals.
351
+ * Restore pg patched functions to their originals.
296
352
  */
297
- _restoreOriginals() {
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
  *