@justanalyticsapp/node 0.2.1 → 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.
Files changed (37) 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 +221 -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 +245 -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 +260 -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 +307 -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 +102 -22
  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 +311 -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 +186 -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 +16 -19
  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 +170 -0
  36. package/dist/integrations/upstash-redis.js.map +1 -0
  37. 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
  *
@@ -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
- // Store original functions for restoration
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
- * Activate the integration: load pg module and patch prototypes.
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
- // 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;
280
+ return false;
249
281
  }
250
282
  const Client = pg.Client;
251
283
  const Pool = pg.Pool;
252
284
  if (!Client || !Client.prototype) {
253
- if (typeof console !== 'undefined') {
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
- this._enabled = true;
302
+ return true;
274
303
  }
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));
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._restoreOriginals();
354
+ this._restorePgOriginals();
355
+ this._restoreNeonOriginals();
356
+ this._instrumentedDriver = null;
292
357
  this._enabled = false;
293
358
  }
294
359
  /**
295
- * Restore all patched functions to their originals.
360
+ * Restore pg patched functions to their originals.
296
361
  */
297
- _restoreOriginals() {
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
  *