@devskin/agent 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -109,6 +109,7 @@ async function processOrder(orderId) {
109
109
  | `sampleRate` | number | 1.0 | Sample rate (0.0 to 1.0) |
110
110
  | `instrumentHttp` | boolean | true | Auto-instrument HTTP |
111
111
  | `instrumentExpress` | boolean | true | Auto-instrument Express |
112
+ | `instrumentDatabase` | boolean | false | 🔥 **Auto-instrument MySQL/MySQL2/Prisma/Postgres/MongoDB** |
112
113
  | `batchSize` | number | 100 | Batch size before flushing |
113
114
  | `flushInterval` | number | 10000 | Flush interval in ms |
114
115
  | `debug` | boolean | false | Enable debug logging |
@@ -117,6 +118,7 @@ async function processOrder(orderId) {
117
118
 
118
119
  - ✅ Automatic HTTP request/response tracing
119
120
  - ✅ Express middleware for automatic route tracing
121
+ - ✅ **Database query instrumentation (MySQL, MySQL2, TypeORM, Prisma, Postgres, MongoDB)**
120
122
  - ✅ Manual span creation
121
123
  - ✅ Distributed tracing with trace ID propagation
122
124
  - ✅ Error tracking and reporting
@@ -124,13 +126,142 @@ async function processOrder(orderId) {
124
126
  - ✅ Async context propagation
125
127
  - ✅ Service discovery
126
128
 
129
+ ## Database Monitoring
130
+
131
+ Enable automatic database query instrumentation to track slow queries, errors, and performance:
132
+
133
+ ### MySQL/MySQL2 (Including TypeORM)
134
+
135
+ ```javascript
136
+ const { init, startAgent } = require('@devskin/agent');
137
+
138
+ // Initialize BEFORE requiring database modules
139
+ init({
140
+ serverUrl: 'http://localhost:3060',
141
+ apiKey: 'your-api-key',
142
+ applicationId: 'your-app-id',
143
+ serviceName: 'my-api',
144
+ instrumentDatabase: true, // 🔥 Enable database instrumentation
145
+ debug: false
146
+ });
147
+
148
+ startAgent();
149
+
150
+ // Now require your database modules
151
+ const mysql = require('mysql2/promise');
152
+ const { DataSource } = require('typeorm');
153
+
154
+ // All queries will be automatically traced
155
+ const connection = await mysql.createConnection({
156
+ host: 'localhost',
157
+ user: 'root',
158
+ database: 'mydb'
159
+ });
160
+
161
+ const [rows] = await connection.execute('SELECT * FROM users WHERE id = ?', [123]);
162
+ // ✅ Query automatically captured with execution time, errors, row count
163
+ ```
164
+
165
+ ### With TypeORM
166
+
167
+ ```javascript
168
+ const { init, startAgent } = require('@devskin/agent');
169
+
170
+ // IMPORTANT: Initialize agent BEFORE TypeORM
171
+ init({
172
+ serverUrl: 'http://localhost:3060',
173
+ apiKey: 'your-api-key',
174
+ applicationId: 'your-app-id',
175
+ serviceName: 'my-api',
176
+ instrumentDatabase: true,
177
+ });
178
+
179
+ startAgent();
180
+
181
+ // Now initialize TypeORM
182
+ const { DataSource } = require('typeorm');
183
+
184
+ const AppDataSource = new DataSource({
185
+ type: 'mysql',
186
+ host: 'localhost',
187
+ port: 3306,
188
+ username: 'root',
189
+ password: 'password',
190
+ database: 'mydb',
191
+ entities: [User],
192
+ synchronize: false,
193
+ });
194
+
195
+ await AppDataSource.initialize();
196
+
197
+ // All TypeORM queries are automatically traced
198
+ const users = await AppDataSource.getRepository(User).find();
199
+ // ✅ Captured: query text, execution time, rows affected, errors
200
+ ```
201
+
202
+ ### With Prisma
203
+
204
+ ```javascript
205
+ const { init, startAgent } = require('@devskin/agent');
206
+
207
+ // IMPORTANT: Initialize agent BEFORE creating PrismaClient
208
+ init({
209
+ serverUrl: 'http://localhost:3060',
210
+ apiKey: 'your-api-key',
211
+ applicationId: 'your-app-id',
212
+ serviceName: 'my-api',
213
+ instrumentDatabase: true, // 🔥 Enable Prisma instrumentation
214
+ });
215
+
216
+ startAgent();
217
+
218
+ // Now create PrismaClient
219
+ const { PrismaClient } = require('@prisma/client');
220
+ const prisma = new PrismaClient();
221
+
222
+ // All Prisma queries are automatically traced via middleware
223
+ const users = await prisma.user.findMany({
224
+ where: { status: 'active' },
225
+ include: { posts: true }
226
+ });
227
+ // ✅ Captured: operation name (findMany), model (User), args, execution time, errors
228
+ ```
229
+
230
+ **Important**: The agent automatically adds middleware to ALL PrismaClient instances created after `init()`. You don't need to manually add `$use()` middleware.
231
+
232
+ ### What Gets Tracked
233
+
234
+ Each database query span includes:
235
+ - **Query text**: Full SQL statement (truncated for security)
236
+ - **Query type**: SELECT, INSERT, UPDATE, DELETE, etc.
237
+ - **Database name**: Which database was queried
238
+ - **Execution time**: How long the query took (in ms)
239
+ - **Rows affected**: Number of rows returned/modified
240
+ - **Errors**: Stack trace if query failed
241
+ - **Connection info**: Host, port, user (password excluded)
242
+
243
+ ### View Database Monitoring
244
+
245
+ After deploying your instrumented app, view query analytics at:
246
+ ```
247
+ http://localhost:5173/apm/database
248
+ ```
249
+
250
+ Features:
251
+ - 📊 Slowest queries with P95/P99 percentiles
252
+ - 🔍 Query grouping and normalization
253
+ - ⚠️ Error tracking per query
254
+ - 📈 Query execution trends over time
255
+ - 🔥 Highlighting queries slower than 1 second
256
+
127
257
  ## Best Practices
128
258
 
129
- 1. **Initialize early**: Call `init()` and `startAgent()` as early as possible in your application
259
+ 1. **Initialize early**: Call `init()` and `startAgent()` BEFORE requiring database modules
130
260
  2. **Use Express middleware**: For Express apps, use the provided middleware for automatic instrumentation
131
261
  3. **Sample in production**: Set `sampleRate` to a value < 1.0 in high-traffic production environments
132
262
  4. **Add context**: Use `span.setAttribute()` to add business context to your traces
133
263
  5. **Graceful shutdown**: Call `stopAgent()` before your application exits
264
+ 6. **Database instrumentation**: Enable `instrumentDatabase: true` to track slow queries and errors
134
265
 
135
266
  ## Environment Variables
136
267
 
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAQ9E,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,WAAW;IAkCzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAuBb,uBAAuB;YAYvB,2BAA2B;YAgC3B,mBAAmB;IAuBjC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAa5B,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAajD,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAa9B,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAa7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B5B,SAAS,IAAI,WAAW;IAOxB,YAAY,IAAI,OAAO;CAGxB;AAUD,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAQ/C;AAKD,wBAAgB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAEvC;AAKD,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAKhD;AAKD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAI/C"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAQ9E,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,WAAW;IAkCzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAuBb,uBAAuB;YAYvB,2BAA2B;YAoC3B,mBAAmB;IAuBjC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAa5B,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAajD,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IAa9B,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAa7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B5B,SAAS,IAAI,WAAW;IAOxB,YAAY,IAAI,OAAO;CAGxB;AAUD,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAQ/C;AAKD,wBAAgB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAEvC;AAKD,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAKhD;AAKD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAI/C"}
package/dist/agent.js CHANGED
@@ -120,6 +120,8 @@ class Agent {
120
120
  instrumentMysql(this);
121
121
  const { instrumentPostgres } = require('./instrumentation/postgres');
122
122
  instrumentPostgres(this);
123
+ const { instrumentPrisma } = require('./instrumentation/prisma');
124
+ instrumentPrisma(this);
123
125
  const { instrumentMongoDB } = require('./instrumentation/mongodb');
124
126
  instrumentMongoDB(this);
125
127
  const { instrumentRedis } = require('./instrumentation/redis');
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from './utils/id-generator';
7
7
  export { expressMiddleware, expressErrorHandler } from './instrumentation/express';
8
8
  export { instrumentMysql } from './instrumentation/mysql';
9
9
  export { instrumentPostgres } from './instrumentation/postgres';
10
+ export { instrumentPrisma } from './instrumentation/prisma';
10
11
  export { init, getAgent, startAgent, stopAgent } from './agent';
11
12
  export { SpanBuilder, TransactionBuilder } from './span';
12
13
  export { Context } from './utils/context';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqBA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqBA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Context = exports.TransactionBuilder = exports.SpanBuilder = exports.stopAgent = exports.startAgent = exports.getAgent = exports.init = exports.instrumentPostgres = exports.instrumentMysql = exports.expressErrorHandler = exports.expressMiddleware = void 0;
17
+ exports.Context = exports.TransactionBuilder = exports.SpanBuilder = exports.stopAgent = exports.startAgent = exports.getAgent = exports.init = exports.instrumentPrisma = exports.instrumentPostgres = exports.instrumentMysql = exports.expressErrorHandler = exports.expressMiddleware = void 0;
18
18
  __exportStar(require("./types"), exports);
19
19
  __exportStar(require("./agent"), exports);
20
20
  __exportStar(require("./span"), exports);
@@ -28,6 +28,8 @@ var mysql_1 = require("./instrumentation/mysql");
28
28
  Object.defineProperty(exports, "instrumentMysql", { enumerable: true, get: function () { return mysql_1.instrumentMysql; } });
29
29
  var postgres_1 = require("./instrumentation/postgres");
30
30
  Object.defineProperty(exports, "instrumentPostgres", { enumerable: true, get: function () { return postgres_1.instrumentPostgres; } });
31
+ var prisma_1 = require("./instrumentation/prisma");
32
+ Object.defineProperty(exports, "instrumentPrisma", { enumerable: true, get: function () { return prisma_1.instrumentPrisma; } });
31
33
  var agent_1 = require("./agent");
32
34
  Object.defineProperty(exports, "init", { enumerable: true, get: function () { return agent_1.init; } });
33
35
  Object.defineProperty(exports, "getAgent", { enumerable: true, get: function () { return agent_1.getAgent; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqBA,0CAAwB;AACxB,0CAAwB;AACxB,yCAAuB;AACvB,+CAA6B;AAC7B,kDAAgC;AAChC,uDAAqC;AACrC,qDAAmF;AAA1E,4GAAA,iBAAiB,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAC/C,iDAA0D;AAAjD,wGAAA,eAAe,OAAA;AACxB,uDAAgE;AAAvD,8GAAA,kBAAkB,OAAA;AAG3B,iCAAgE;AAAvD,6FAAA,IAAI,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,kGAAA,SAAS,OAAA;AAC9C,+BAAyD;AAAhD,mGAAA,WAAW,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AACxC,2CAA0C;AAAjC,kGAAA,OAAO,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqBA,0CAAwB;AACxB,0CAAwB;AACxB,yCAAuB;AACvB,+CAA6B;AAC7B,kDAAgC;AAChC,uDAAqC;AACrC,qDAAmF;AAA1E,4GAAA,iBAAiB,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAC/C,iDAA0D;AAAjD,wGAAA,eAAe,OAAA;AACxB,uDAAgE;AAAvD,8GAAA,kBAAkB,OAAA;AAC3B,mDAA4D;AAAnD,0GAAA,gBAAgB,OAAA;AAGzB,iCAAgE;AAAvD,6FAAA,IAAI,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,kGAAA,SAAS,OAAA;AAC9C,+BAAyD;AAAhD,mGAAA,WAAW,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AACxC,2CAA0C;AAAjC,kGAAA,OAAO,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../src/instrumentation/mysql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAuDlD"}
1
+ {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../src/instrumentation/mysql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAsElD"}
@@ -10,16 +10,17 @@ function instrumentMysql(agent) {
10
10
  Module.prototype.require = function (id) {
11
11
  const module = originalRequire.apply(this, arguments);
12
12
  if (id === 'mysql2' && module.Connection && !module.__devskin_instrumented) {
13
- if (agent.getConfig().debug) {
14
- console.log('[DevSkin Agent] Intercepted mysql2 load, instrumenting...');
15
- }
16
13
  instrumentMysql2(agent, module);
17
14
  module.__devskin_instrumented = true;
18
15
  }
19
- if (id === 'mysql' && module.Connection && !module.__devskin_instrumented) {
20
- if (agent.getConfig().debug) {
21
- console.log('[DevSkin Agent] Intercepted mysql load, instrumenting...');
16
+ if (id === 'mysql2/promise') {
17
+ const mysql2Base = require('mysql2');
18
+ if (mysql2Base.Connection && !mysql2Base.__devskin_instrumented) {
19
+ instrumentMysql2(agent, mysql2Base);
20
+ mysql2Base.__devskin_instrumented = true;
22
21
  }
22
+ }
23
+ if (id === 'mysql' && module.Connection && !module.__devskin_instrumented) {
23
24
  instrumentMysqlLegacy(agent, module);
24
25
  module.__devskin_instrumented = true;
25
26
  }
@@ -32,7 +33,17 @@ function instrumentMysql(agent) {
32
33
  mysql2.__devskin_instrumented = true;
33
34
  }
34
35
  }
35
- catch {
36
+ catch (e) {
37
+ }
38
+ try {
39
+ const mysql2Promise = require('mysql2/promise');
40
+ const mysql2Base = require('mysql2');
41
+ if (mysql2Base && mysql2Base.Connection && !mysql2Base.__devskin_instrumented) {
42
+ instrumentMysql2(agent, mysql2Base);
43
+ mysql2Base.__devskin_instrumented = true;
44
+ }
45
+ }
46
+ catch (e) {
36
47
  }
37
48
  try {
38
49
  const mysql = require('mysql');
@@ -52,10 +63,12 @@ function instrumentMysql(agent) {
52
63
  }
53
64
  function instrumentMysql2(agent, mysql2) {
54
65
  const config = agent.getConfig();
55
- const originalQuery = mysql2.Connection.prototype.query;
66
+ const originalConnectionQuery = mysql2.Connection.prototype.query;
67
+ const originalPoolQuery = mysql2.Pool ? mysql2.Pool.prototype.query : null;
68
+ const originalPoolConnectionQuery = mysql2.PoolConnection ? mysql2.PoolConnection.prototype.query : null;
56
69
  mysql2.Connection.prototype.query = function (sql, values, callback) {
57
70
  if (!agent.shouldSample()) {
58
- return originalQuery.call(this, sql, values, callback);
71
+ return originalConnectionQuery.call(this, sql, values, callback);
59
72
  }
60
73
  let actualSql = sql;
61
74
  let actualValues = values;
@@ -112,10 +125,10 @@ function instrumentMysql2(agent, mysql2) {
112
125
  }
113
126
  };
114
127
  if (actualCallback) {
115
- return originalQuery.call(this, actualSql, actualValues, wrappedCallback);
128
+ return originalConnectionQuery.call(this, actualSql, actualValues, wrappedCallback);
116
129
  }
117
130
  else {
118
- const query = originalQuery.call(this, actualSql, actualValues);
131
+ const query = originalConnectionQuery.call(this, actualSql, actualValues);
119
132
  return query
120
133
  .then((results) => {
121
134
  const duration = Date.now() - startTime;
@@ -142,6 +155,100 @@ function instrumentMysql2(agent, mysql2) {
142
155
  });
143
156
  }
144
157
  };
158
+ if (mysql2.Pool && mysql2.Pool.prototype.query && originalPoolQuery) {
159
+ const originalPoolQueryMethod = originalPoolQuery;
160
+ mysql2.Pool.prototype.query = function (sql, values, callback) {
161
+ return originalPoolQueryMethod.call(this, sql, values, callback);
162
+ };
163
+ }
164
+ if (mysql2.PoolConnection && mysql2.PoolConnection.prototype.query && originalPoolConnectionQuery) {
165
+ mysql2.PoolConnection.prototype.query = function (sql, values, callback) {
166
+ if (!agent.shouldSample()) {
167
+ return originalPoolConnectionQuery.call(this, sql, values, callback);
168
+ }
169
+ let actualSql = sql;
170
+ let actualValues = values;
171
+ let actualCallback = callback;
172
+ if (typeof sql === 'object') {
173
+ actualSql = sql.sql;
174
+ actualValues = sql.values;
175
+ }
176
+ if (typeof values === 'function') {
177
+ actualCallback = values;
178
+ actualValues = undefined;
179
+ }
180
+ const connectionConfig = this.config;
181
+ const dbName = connectionConfig?.database || 'unknown';
182
+ const host = connectionConfig?.host || 'localhost';
183
+ const port = connectionConfig?.port || 3306;
184
+ const user = connectionConfig?.user;
185
+ const span = new span_1.SpanBuilder(`mysql.query`, types_1.SpanKind.CLIENT, config.serviceName, config.serviceVersion, config.environment, agent);
186
+ const queryType = extractQueryType(actualSql);
187
+ span.setAttributes({
188
+ 'db.system': 'mysql',
189
+ 'db.name': dbName,
190
+ 'db.statement': normalizeQuery(actualSql),
191
+ 'db.operation': queryType,
192
+ 'db.user': user,
193
+ 'net.peer.name': host,
194
+ 'net.peer.port': port,
195
+ 'db.connection_string': `mysql://${host}:${port}/${dbName}`,
196
+ });
197
+ span.setAttribute('span.kind', 'client');
198
+ const startTime = Date.now();
199
+ const wrappedCallback = (err, results, fields) => {
200
+ if (err) {
201
+ span.setStatus(types_1.SpanStatus.ERROR, err.message);
202
+ span.setAttribute('error', true);
203
+ span.setAttribute('error.message', err.message);
204
+ span.setAttribute('error.type', err.code || 'Error');
205
+ }
206
+ else {
207
+ span.setStatus(types_1.SpanStatus.OK);
208
+ if (results) {
209
+ if (Array.isArray(results)) {
210
+ span.setAttribute('db.rows_affected', results.length);
211
+ }
212
+ else if (results.affectedRows !== undefined) {
213
+ span.setAttribute('db.rows_affected', results.affectedRows);
214
+ }
215
+ }
216
+ }
217
+ span.end();
218
+ if (actualCallback) {
219
+ actualCallback(err, results, fields);
220
+ }
221
+ };
222
+ if (actualCallback) {
223
+ return originalPoolConnectionQuery.call(this, actualSql, actualValues, wrappedCallback);
224
+ }
225
+ else {
226
+ const query = originalPoolConnectionQuery.call(this, actualSql, actualValues);
227
+ return query
228
+ .then((results) => {
229
+ span.setStatus(types_1.SpanStatus.OK);
230
+ if (results && results[0]) {
231
+ if (Array.isArray(results[0])) {
232
+ span.setAttribute('db.rows_affected', results[0].length);
233
+ }
234
+ else if (results[0].affectedRows !== undefined) {
235
+ span.setAttribute('db.rows_affected', results[0].affectedRows);
236
+ }
237
+ }
238
+ span.end();
239
+ return results;
240
+ })
241
+ .catch((err) => {
242
+ span.setStatus(types_1.SpanStatus.ERROR, err.message);
243
+ span.setAttribute('error', true);
244
+ span.setAttribute('error.message', err.message);
245
+ span.setAttribute('error.type', err.code || 'Error');
246
+ span.end();
247
+ throw err;
248
+ });
249
+ }
250
+ };
251
+ }
145
252
  if (config.debug) {
146
253
  console.log('[DevSkin Agent] MySQL2 instrumentation enabled');
147
254
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/instrumentation/mysql.ts"],"names":[],"mappings":";;AAOA,0CAuDC;AA7DD,kCAAsC;AACtC,oCAAgD;AAKhD,SAAgB,eAAe,CAAC,KAAY;IAC1C,IAAI,CAAC;QAEH,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAEjD,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,EAAU;YAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAGtD,IAAI,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;gBAC3E,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;gBAC3E,CAAC;gBACD,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAChC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACvC,CAAC;YAGD,IAAI,EAAE,KAAK,OAAO,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;gBAC1E,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;gBAC1E,CAAC;gBACD,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACvC,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAGF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;gBAClE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAChC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;gBAC/D,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACpC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;AACH,CAAC;AAKD,SAAS,gBAAgB,CAAC,KAAY,EAAE,MAAW;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAGjC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IACxD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAQ,EAAE,MAAW,EAAE,QAAa;QAChF,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1B,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;QAGD,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,YAAY,GAAG,MAAM,CAAC;QAC1B,IAAI,cAAc,GAAG,QAAQ,CAAC;QAE9B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;YACpB,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,cAAc,GAAG,MAAM,CAAC;YACxB,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QAGD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,gBAAgB,EAAE,QAAQ,IAAI,SAAS,CAAC;QACvD,MAAM,IAAI,GAAG,gBAAgB,EAAE,IAAI,IAAI,WAAW,CAAC;QACnD,MAAM,IAAI,GAAG,gBAAgB,EAAE,IAAI,IAAI,IAAI,CAAC;QAC5C,MAAM,IAAI,GAAG,gBAAgB,EAAE,IAAI,CAAC;QAGpC,MAAM,IAAI,GAAG,IAAI,kBAAW,CAC1B,aAAa,EACb,gBAAQ,CAAC,MAAM,EACf,MAAM,CAAC,WAAY,EACnB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,WAAW,EAClB,KAAK,CACN,CAAC;QAGF,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAG9C,IAAI,CAAC,aAAa,CAAC;YACjB,WAAW,EAAE,OAAO;YACpB,SAAS,EAAE,MAAM;YACjB,cAAc,EAAE,cAAc,CAAC,SAAS,CAAC;YACzC,cAAc,EAAE,SAAS;YACzB,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,WAAW,IAAI,IAAI,IAAI,IAAI,MAAM,EAAE;SAC5D,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAG7B,MAAM,eAAe,GAAG,CAAC,GAAQ,EAAE,OAAY,EAAE,MAAW,EAAE,EAAE;YAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC,SAAS,CAAC,kBAAU,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,CAAC,kBAAU,CAAC,EAAE,CAAC,CAAC;gBAE9B,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;oBACxD,CAAC;yBAAM,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;wBAC9C,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;YAEX,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;QAGF,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YAEN,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAGhE,OAAO,KAAK;iBACT,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE;gBACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,CAAC,SAAS,CAAC,kBAAU,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9B,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC3D,CAAC;yBAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;wBACjD,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;gBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACxC,IAAI,CAAC,SAAS,CAAC,kBAAU,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;gBACrD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAKD,SAAS,qBAAqB,CAAC,KAAY,EAAE,KAAU;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAGjC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IACvD,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAQ,EAAE,MAAW,EAAE,QAAa;QAC/E,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1B,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,YAAY,GAAG,MAAM,CAAC;QAC1B,IAAI,cAAc,GAAG,QAAQ,CAAC;QAE9B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;YACpB,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,cAAc,GAAG,MAAM,CAAC;YACxB,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,gBAAgB,EAAE,QAAQ,IAAI,SAAS,CAAC;QACvD,MAAM,IAAI,GAAG,gBAAgB,EAAE,IAAI,IAAI,WAAW,CAAC;QACnD,MAAM,IAAI,GAAG,gBAAgB,EAAE,IAAI,IAAI,IAAI,CAAC;QAC5C,MAAM,IAAI,GAAG,gBAAgB,EAAE,IAAI,CAAC;QAEpC,MAAM,IAAI,GAAG,IAAI,kBAAW,CAC1B,aAAa,EACb,gBAAQ,CAAC,MAAM,EACf,MAAM,CAAC,WAAY,EACnB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,WAAW,EAClB,KAAK,CACN,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,CAAC,aAAa,CAAC;YACjB,WAAW,EAAE,OAAO;YACpB,SAAS,EAAE,MAAM;YACjB,cAAc,EAAE,cAAc,CAAC,SAAS,CAAC;YACzC,cAAc,EAAE,SAAS;YACzB,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;YACrB,sBAAsB,EAAE,WAAW,IAAI,IAAI,IAAI,IAAI,MAAM,EAAE;SAC5D,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,eAAe,GAAG,CAAC,GAAQ,EAAE,OAAY,EAAE,MAAW,EAAE,EAAE;YAC9D,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC,SAAS,CAAC,kBAAU,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,CAAC,kBAAU,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;oBACxD,CAAC;yBAAM,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;wBAC9C,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,CAAC;YAEX,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAKD,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAE9C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE5C,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACjD,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAEzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IAGhD,IAAI,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAGzC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEpD,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/instrumentation/mysql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Agent } from '../agent';
2
+ export declare function instrumentPrisma(agent: Agent): void;
3
+ //# sourceMappingURL=prisma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/instrumentation/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAiCnD"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.instrumentPrisma = instrumentPrisma;
4
+ const span_1 = require("../span");
5
+ const types_1 = require("../types");
6
+ function instrumentPrisma(agent) {
7
+ try {
8
+ const Module = require('module');
9
+ const originalRequire = Module.prototype.require;
10
+ Module.prototype.require = function (id) {
11
+ const module = originalRequire.apply(this, arguments);
12
+ if (id === '@prisma/client' && module.PrismaClient && !module.__devskin_instrumented) {
13
+ instrumentPrismaClient(agent, module);
14
+ module.__devskin_instrumented = true;
15
+ }
16
+ return module;
17
+ };
18
+ try {
19
+ const prismaModule = require('@prisma/client');
20
+ if (prismaModule && prismaModule.PrismaClient && !prismaModule.__devskin_instrumented) {
21
+ instrumentPrismaClient(agent, prismaModule);
22
+ prismaModule.__devskin_instrumented = true;
23
+ }
24
+ }
25
+ catch (e) {
26
+ }
27
+ }
28
+ catch (error) {
29
+ if (agent.getConfig().debug) {
30
+ console.error('[DevSkin Agent] Error instrumenting Prisma:', error.message);
31
+ }
32
+ }
33
+ }
34
+ function instrumentPrismaClient(agent, prismaModule) {
35
+ const originalPrismaClient = prismaModule.PrismaClient;
36
+ prismaModule.PrismaClient = function (...args) {
37
+ const client = new originalPrismaClient(...args);
38
+ client.$use(async (params, next) => {
39
+ const config = agent.getConfig();
40
+ const span = new span_1.SpanBuilder(`prisma.${params.model}.${params.action}`, types_1.SpanKind.CLIENT, config.serviceName, config.serviceVersion, config.environment, agent);
41
+ span.setAttribute('db.system', 'prisma');
42
+ span.setAttribute('db.operation', params.action);
43
+ if (params.model) {
44
+ span.setAttribute('db.sql.table', params.model);
45
+ }
46
+ if (params.args) {
47
+ const safeArgs = sanitizePrismaArgs(params.args);
48
+ if (Object.keys(safeArgs).length > 0) {
49
+ span.setAttribute('db.prisma.args', JSON.stringify(safeArgs).substring(0, 1000));
50
+ }
51
+ }
52
+ try {
53
+ const result = await next(params);
54
+ span.setStatus(types_1.SpanStatus.OK);
55
+ if (Array.isArray(result)) {
56
+ span.setAttribute('db.rows_affected', result.length);
57
+ }
58
+ return result;
59
+ }
60
+ catch (error) {
61
+ span.setStatus(types_1.SpanStatus.ERROR);
62
+ span.recordError(error);
63
+ throw error;
64
+ }
65
+ finally {
66
+ span.end();
67
+ }
68
+ });
69
+ return client;
70
+ };
71
+ Object.setPrototypeOf(prismaModule.PrismaClient, originalPrismaClient);
72
+ Object.setPrototypeOf(prismaModule.PrismaClient.prototype, originalPrismaClient.prototype);
73
+ }
74
+ function sanitizePrismaArgs(args) {
75
+ if (!args || typeof args !== 'object') {
76
+ return {};
77
+ }
78
+ const sanitized = {};
79
+ const safeFields = ['where', 'select', 'include', 'orderBy', 'take', 'skip'];
80
+ for (const field of safeFields) {
81
+ if (args[field] !== undefined) {
82
+ sanitized[field] = sanitizeValue(args[field]);
83
+ }
84
+ }
85
+ return sanitized;
86
+ }
87
+ function sanitizeValue(value, depth = 0) {
88
+ if (depth > 3)
89
+ return '[nested]';
90
+ if (value === null || value === undefined)
91
+ return value;
92
+ if (Array.isArray(value)) {
93
+ return value.slice(0, 5).map(v => sanitizeValue(v, depth + 1));
94
+ }
95
+ if (typeof value === 'object') {
96
+ const sanitized = {};
97
+ for (const key in value) {
98
+ if (key.toLowerCase().includes('password') || key.toLowerCase().includes('token') || key.toLowerCase().includes('secret')) {
99
+ sanitized[key] = '[REDACTED]';
100
+ }
101
+ else {
102
+ sanitized[key] = sanitizeValue(value[key], depth + 1);
103
+ }
104
+ }
105
+ return sanitized;
106
+ }
107
+ return value;
108
+ }
109
+ //# sourceMappingURL=prisma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma.js","sourceRoot":"","sources":["../../src/instrumentation/prisma.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devskin/agent",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "DevSkin Monitor Agent - JavaScript/Node.js Instrumentation SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,6 +17,7 @@
17
17
  "prepublishOnly": "npm run build"
18
18
  },
19
19
  "dependencies": {
20
+ "@devskin/agent": "^1.0.2",
20
21
  "axios": "^1.6.5",
21
22
  "uuid": "^9.0.1"
22
23
  },
package/src/agent.ts CHANGED
@@ -129,6 +129,10 @@ export class Agent {
129
129
  const { instrumentPostgres } = require('./instrumentation/postgres');
130
130
  instrumentPostgres(this);
131
131
 
132
+ // ORM Instrumentation
133
+ const { instrumentPrisma } = require('./instrumentation/prisma');
134
+ instrumentPrisma(this);
135
+
132
136
  // NoSQL Databases
133
137
  const { instrumentMongoDB } = require('./instrumentation/mongodb');
134
138
  instrumentMongoDB(this);
package/src/index.ts CHANGED
@@ -28,6 +28,7 @@ export * from './utils/id-generator';
28
28
  export { expressMiddleware, expressErrorHandler } from './instrumentation/express';
29
29
  export { instrumentMysql } from './instrumentation/mysql';
30
30
  export { instrumentPostgres } from './instrumentation/postgres';
31
+ export { instrumentPrisma } from './instrumentation/prisma';
31
32
 
32
33
  // Re-export commonly used functions
33
34
  export { init, getAgent, startAgent, stopAgent } from './agent';
@@ -14,20 +14,23 @@ export function instrumentMysql(agent: Agent): void {
14
14
  Module.prototype.require = function (id: string) {
15
15
  const module = originalRequire.apply(this, arguments);
16
16
 
17
- // Instrument mysql2 when it's loaded
17
+ // Instrument mysql2 (base module)
18
18
  if (id === 'mysql2' && module.Connection && !module.__devskin_instrumented) {
19
- if (agent.getConfig().debug) {
20
- console.log('[DevSkin Agent] Intercepted mysql2 load, instrumenting...');
21
- }
22
19
  instrumentMysql2(agent, module);
23
20
  module.__devskin_instrumented = true;
24
21
  }
25
22
 
23
+ // Instrument mysql2/promise (used by TypeORM) - instrument base mysql2
24
+ if (id === 'mysql2/promise') {
25
+ const mysql2Base = require('mysql2');
26
+ if (mysql2Base.Connection && !mysql2Base.__devskin_instrumented) {
27
+ instrumentMysql2(agent, mysql2Base);
28
+ mysql2Base.__devskin_instrumented = true;
29
+ }
30
+ }
31
+
26
32
  // Instrument mysql when it's loaded
27
33
  if (id === 'mysql' && module.Connection && !module.__devskin_instrumented) {
28
- if (agent.getConfig().debug) {
29
- console.log('[DevSkin Agent] Intercepted mysql load, instrumenting...');
30
- }
31
34
  instrumentMysqlLegacy(agent, module);
32
35
  module.__devskin_instrumented = true;
33
36
  }
@@ -42,10 +45,22 @@ export function instrumentMysql(agent: Agent): void {
42
45
  instrumentMysql2(agent, mysql2);
43
46
  mysql2.__devskin_instrumented = true;
44
47
  }
45
- } catch {
48
+ } catch (e) {
46
49
  // mysql2 not yet loaded
47
50
  }
48
51
 
52
+ // Also try mysql2/promise (used by TypeORM)
53
+ try {
54
+ const mysql2Promise = require('mysql2/promise');
55
+ const mysql2Base = require('mysql2');
56
+ if (mysql2Base && mysql2Base.Connection && !mysql2Base.__devskin_instrumented) {
57
+ instrumentMysql2(agent, mysql2Base);
58
+ mysql2Base.__devskin_instrumented = true;
59
+ }
60
+ } catch (e) {
61
+ // mysql2/promise not yet loaded
62
+ }
63
+
49
64
  try {
50
65
  const mysql = require('mysql');
51
66
  if (mysql && mysql.Connection && !mysql.__devskin_instrumented) {
@@ -68,11 +83,15 @@ export function instrumentMysql(agent: Agent): void {
68
83
  function instrumentMysql2(agent: Agent, mysql2: any): void {
69
84
  const config = agent.getConfig();
70
85
 
86
+ // Save original methods BEFORE patching
87
+ const originalConnectionQuery = mysql2.Connection.prototype.query;
88
+ const originalPoolQuery = mysql2.Pool ? mysql2.Pool.prototype.query : null;
89
+ const originalPoolConnectionQuery = mysql2.PoolConnection ? mysql2.PoolConnection.prototype.query : null;
90
+
71
91
  // Patch Connection.prototype.query
72
- const originalQuery = mysql2.Connection.prototype.query;
73
92
  mysql2.Connection.prototype.query = function (sql: any, values: any, callback: any) {
74
93
  if (!agent.shouldSample()) {
75
- return originalQuery.call(this, sql, values, callback);
94
+ return originalConnectionQuery.call(this, sql, values, callback);
76
95
  }
77
96
 
78
97
  // Handle different call signatures
@@ -156,10 +175,10 @@ function instrumentMysql2(agent: Agent, mysql2: any): void {
156
175
 
157
176
  // Call original query with wrapped callback
158
177
  if (actualCallback) {
159
- return originalQuery.call(this, actualSql, actualValues, wrappedCallback);
178
+ return originalConnectionQuery.call(this, actualSql, actualValues, wrappedCallback);
160
179
  } else {
161
180
  // Promise-based query
162
- const query = originalQuery.call(this, actualSql, actualValues);
181
+ const query = originalConnectionQuery.call(this, actualSql, actualValues);
163
182
 
164
183
  // Wrap promise
165
184
  return query
@@ -188,6 +207,116 @@ function instrumentMysql2(agent: Agent, mysql2: any): void {
188
207
  }
189
208
  };
190
209
 
210
+ // CRITICAL: Also patch Pool.query for TypeORM support
211
+ // TypeORM uses Pool.query() directly, not Connection instances
212
+ if (mysql2.Pool && mysql2.Pool.prototype.query && originalPoolQuery) {
213
+ const originalPoolQueryMethod = originalPoolQuery;
214
+ mysql2.Pool.prototype.query = function (sql: any, values: any, callback: any) {
215
+ // Pool.query internally gets a connection from the pool and calls connection.query()
216
+ // Since we already instrumented Connection.prototype.query, just call the original
217
+ // Pool.query and it will use an instrumented connection
218
+ return originalPoolQueryMethod.call(this, sql, values, callback);
219
+ };
220
+ }
221
+
222
+ // CRITICAL: PoolConnection has its own query() method - instrument it with full logic
223
+ if (mysql2.PoolConnection && mysql2.PoolConnection.prototype.query && originalPoolConnectionQuery) {
224
+ mysql2.PoolConnection.prototype.query = function (sql: any, values: any, callback: any) {
225
+ if (!agent.shouldSample()) {
226
+ return originalPoolConnectionQuery.call(this, sql, values, callback);
227
+ }
228
+
229
+ let actualSql = sql;
230
+ let actualValues = values;
231
+ let actualCallback = callback;
232
+ if (typeof sql === 'object') {
233
+ actualSql = sql.sql;
234
+ actualValues = sql.values;
235
+ }
236
+ if (typeof values === 'function') {
237
+ actualCallback = values;
238
+ actualValues = undefined;
239
+ }
240
+ const connectionConfig = (this as any).config;
241
+ const dbName = connectionConfig?.database || 'unknown';
242
+ const host = connectionConfig?.host || 'localhost';
243
+ const port = connectionConfig?.port || 3306;
244
+ const user = connectionConfig?.user;
245
+ const span = new SpanBuilder(
246
+ `mysql.query`,
247
+ SpanKind.CLIENT,
248
+ config.serviceName!,
249
+ config.serviceVersion,
250
+ config.environment,
251
+ agent
252
+ );
253
+ const queryType = extractQueryType(actualSql);
254
+ span.setAttributes({
255
+ 'db.system': 'mysql',
256
+ 'db.name': dbName,
257
+ 'db.statement': normalizeQuery(actualSql),
258
+ 'db.operation': queryType,
259
+ 'db.user': user,
260
+ 'net.peer.name': host,
261
+ 'net.peer.port': port,
262
+ 'db.connection_string': `mysql://${host}:${port}/${dbName}`,
263
+ });
264
+ span.setAttribute('span.kind', 'client');
265
+ const startTime = Date.now();
266
+ const wrappedCallback = (err: any, results: any, fields: any) => {
267
+ if (err) {
268
+ span.setStatus(SpanStatus.ERROR, err.message);
269
+ span.setAttribute('error', true);
270
+ span.setAttribute('error.message', err.message);
271
+ span.setAttribute('error.type', err.code || 'Error');
272
+ }
273
+ else {
274
+ span.setStatus(SpanStatus.OK);
275
+ if (results) {
276
+ if (Array.isArray(results)) {
277
+ span.setAttribute('db.rows_affected', results.length);
278
+ }
279
+ else if (results.affectedRows !== undefined) {
280
+ span.setAttribute('db.rows_affected', results.affectedRows);
281
+ }
282
+ }
283
+ }
284
+ span.end();
285
+ if (actualCallback) {
286
+ actualCallback(err, results, fields);
287
+ }
288
+ };
289
+ if (actualCallback) {
290
+ return originalPoolConnectionQuery.call(this, actualSql, actualValues, wrappedCallback);
291
+ }
292
+ else {
293
+ const query = originalPoolConnectionQuery.call(this, actualSql, actualValues);
294
+ return query
295
+ .then((results: any) => {
296
+ span.setStatus(SpanStatus.OK);
297
+ if (results && results[0]) {
298
+ if (Array.isArray(results[0])) {
299
+ span.setAttribute('db.rows_affected', results[0].length);
300
+ }
301
+ else if (results[0].affectedRows !== undefined) {
302
+ span.setAttribute('db.rows_affected', results[0].affectedRows);
303
+ }
304
+ }
305
+ span.end();
306
+ return results;
307
+ })
308
+ .catch((err: any) => {
309
+ span.setStatus(SpanStatus.ERROR, err.message);
310
+ span.setAttribute('error', true);
311
+ span.setAttribute('error.message', err.message);
312
+ span.setAttribute('error.type', err.code || 'Error');
313
+ span.end();
314
+ throw err;
315
+ });
316
+ }
317
+ };
318
+ }
319
+
191
320
  if (config.debug) {
192
321
  console.log('[DevSkin Agent] MySQL2 instrumentation enabled');
193
322
  }
@@ -0,0 +1,154 @@
1
+ import { Agent } from '../agent';
2
+ import { SpanBuilder } from '../span';
3
+ import { SpanKind, SpanStatus } from '../types';
4
+
5
+ /**
6
+ * Instrument Prisma Client for database monitoring
7
+ */
8
+ export function instrumentPrisma(agent: Agent): void {
9
+ try {
10
+ // Hook into Node's require system to intercept @prisma/client loads
11
+ const Module = require('module');
12
+ const originalRequire = Module.prototype.require;
13
+
14
+ Module.prototype.require = function (id: string) {
15
+ const module = originalRequire.apply(this, arguments);
16
+
17
+ // Instrument @prisma/client when it's loaded
18
+ if (id === '@prisma/client' && module.PrismaClient && !module.__devskin_instrumented) {
19
+ instrumentPrismaClient(agent, module);
20
+ module.__devskin_instrumented = true;
21
+ }
22
+
23
+ return module;
24
+ };
25
+
26
+ // Also try to instrument if already loaded
27
+ try {
28
+ const prismaModule = require('@prisma/client');
29
+ if (prismaModule && prismaModule.PrismaClient && !prismaModule.__devskin_instrumented) {
30
+ instrumentPrismaClient(agent, prismaModule);
31
+ prismaModule.__devskin_instrumented = true;
32
+ }
33
+ } catch (e) {
34
+ // @prisma/client not yet loaded or not installed
35
+ }
36
+ } catch (error: any) {
37
+ if (agent.getConfig().debug) {
38
+ console.error('[DevSkin Agent] Error instrumenting Prisma:', error.message);
39
+ }
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Instrument Prisma Client middleware
45
+ */
46
+ function instrumentPrismaClient(agent: Agent, prismaModule: any): void {
47
+ const originalPrismaClient = prismaModule.PrismaClient;
48
+
49
+ // Wrap PrismaClient constructor to add middleware automatically
50
+ prismaModule.PrismaClient = function (...args: any[]) {
51
+ const client = new originalPrismaClient(...args);
52
+
53
+ // Add middleware to intercept queries
54
+ client.$use(async (params: any, next: any) => {
55
+ const config = agent.getConfig();
56
+ const span = new SpanBuilder(
57
+ `prisma.${params.model}.${params.action}`,
58
+ SpanKind.CLIENT,
59
+ config.serviceName,
60
+ config.serviceVersion,
61
+ config.environment,
62
+ agent
63
+ );
64
+
65
+ // Add database attributes
66
+ span.setAttribute('db.system', 'prisma');
67
+ span.setAttribute('db.operation', params.action);
68
+ if (params.model) {
69
+ span.setAttribute('db.sql.table', params.model);
70
+ }
71
+
72
+ // Add query parameters (safely, without sensitive data)
73
+ if (params.args) {
74
+ const safeArgs = sanitizePrismaArgs(params.args);
75
+ if (Object.keys(safeArgs).length > 0) {
76
+ span.setAttribute('db.prisma.args', JSON.stringify(safeArgs).substring(0, 1000));
77
+ }
78
+ }
79
+
80
+ try {
81
+ const result = await next(params);
82
+ span.setStatus(SpanStatus.OK);
83
+
84
+ // Add result metadata if available
85
+ if (Array.isArray(result)) {
86
+ span.setAttribute('db.rows_affected', result.length);
87
+ }
88
+
89
+ return result;
90
+ } catch (error: any) {
91
+ span.setStatus(SpanStatus.ERROR);
92
+ span.recordError(error);
93
+ throw error;
94
+ } finally {
95
+ span.end();
96
+ }
97
+ });
98
+
99
+ return client;
100
+ };
101
+
102
+ // Copy over static properties
103
+ Object.setPrototypeOf(prismaModule.PrismaClient, originalPrismaClient);
104
+ Object.setPrototypeOf(prismaModule.PrismaClient.prototype, originalPrismaClient.prototype);
105
+ }
106
+
107
+ /**
108
+ * Sanitize Prisma args to remove sensitive data
109
+ */
110
+ function sanitizePrismaArgs(args: any): any {
111
+ if (!args || typeof args !== 'object') {
112
+ return {};
113
+ }
114
+
115
+ const sanitized: any = {};
116
+
117
+ // Include safe fields like where, select, include, orderBy
118
+ const safeFields = ['where', 'select', 'include', 'orderBy', 'take', 'skip'];
119
+ for (const field of safeFields) {
120
+ if (args[field] !== undefined) {
121
+ sanitized[field] = sanitizeValue(args[field]);
122
+ }
123
+ }
124
+
125
+ return sanitized;
126
+ }
127
+
128
+ /**
129
+ * Sanitize values to prevent sensitive data leakage
130
+ */
131
+ function sanitizeValue(value: any, depth = 0): any {
132
+ if (depth > 3) return '[nested]';
133
+
134
+ if (value === null || value === undefined) return value;
135
+
136
+ if (Array.isArray(value)) {
137
+ return value.slice(0, 5).map(v => sanitizeValue(v, depth + 1));
138
+ }
139
+
140
+ if (typeof value === 'object') {
141
+ const sanitized: any = {};
142
+ for (const key in value) {
143
+ // Skip password and sensitive fields
144
+ if (key.toLowerCase().includes('password') || key.toLowerCase().includes('token') || key.toLowerCase().includes('secret')) {
145
+ sanitized[key] = '[REDACTED]';
146
+ } else {
147
+ sanitized[key] = sanitizeValue(value[key], depth + 1);
148
+ }
149
+ }
150
+ return sanitized;
151
+ }
152
+
153
+ return value;
154
+ }