@devskin/agent 1.0.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 (48) hide show
  1. package/README.md +156 -0
  2. package/dist/agent.d.ts +28 -0
  3. package/dist/agent.d.ts.map +1 -0
  4. package/dist/agent.js +221 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/api-client.d.ts +14 -0
  7. package/dist/api-client.d.ts.map +1 -0
  8. package/dist/api-client.js +102 -0
  9. package/dist/api-client.js.map +1 -0
  10. package/dist/index.d.ts +11 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +37 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/instrumentation/express.d.ts +5 -0
  15. package/dist/instrumentation/express.d.ts.map +1 -0
  16. package/dist/instrumentation/express.js +100 -0
  17. package/dist/instrumentation/express.js.map +1 -0
  18. package/dist/instrumentation/http.d.ts +3 -0
  19. package/dist/instrumentation/http.d.ts.map +1 -0
  20. package/dist/instrumentation/http.js +144 -0
  21. package/dist/instrumentation/http.js.map +1 -0
  22. package/dist/span.d.ts +21 -0
  23. package/dist/span.d.ts.map +1 -0
  24. package/dist/span.js +105 -0
  25. package/dist/span.js.map +1 -0
  26. package/dist/types.d.ts +75 -0
  27. package/dist/types.d.ts.map +1 -0
  28. package/dist/types.js +17 -0
  29. package/dist/types.js.map +1 -0
  30. package/dist/utils/context.d.ts +19 -0
  31. package/dist/utils/context.d.ts.map +1 -0
  32. package/dist/utils/context.js +42 -0
  33. package/dist/utils/context.js.map +1 -0
  34. package/dist/utils/id-generator.d.ts +4 -0
  35. package/dist/utils/id-generator.d.ts.map +1 -0
  36. package/dist/utils/id-generator.js +16 -0
  37. package/dist/utils/id-generator.js.map +1 -0
  38. package/package.json +46 -0
  39. package/src/agent.ts +276 -0
  40. package/src/api-client.ts +125 -0
  41. package/src/index.ts +32 -0
  42. package/src/instrumentation/express.ts +143 -0
  43. package/src/instrumentation/http.ts +180 -0
  44. package/src/span.ts +178 -0
  45. package/src/types.ts +128 -0
  46. package/src/utils/context.ts +87 -0
  47. package/src/utils/id-generator.ts +22 -0
  48. package/tsconfig.json +28 -0
package/README.md ADDED
@@ -0,0 +1,156 @@
1
+ # @devskin/agent
2
+
3
+ DevSkin APM Agent for Node.js - Automatic instrumentation for application performance monitoring.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @devskin/agent
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ### 1. Initialize the Agent
14
+
15
+ ```javascript
16
+ const { init, startAgent } = require('@devskin/agent');
17
+
18
+ const agent = init({
19
+ serverUrl: 'https://api-monitoring.devskin.com',
20
+ apiKey: 'your-api-key-here',
21
+ serviceName: 'my-api-service',
22
+ serviceVersion: '1.0.0',
23
+ environment: 'production',
24
+ sampleRate: 1.0,
25
+ });
26
+
27
+ startAgent();
28
+ ```
29
+
30
+ ### 2. With Express
31
+
32
+ ```javascript
33
+ const express = require('express');
34
+ const { init, startAgent, expressMiddleware, expressErrorHandler } = require('@devskin/agent');
35
+
36
+ const agent = init({
37
+ serverUrl: 'https://api-monitoring.devskin.com',
38
+ apiKey: 'your-api-key',
39
+ serviceName: 'my-express-app',
40
+ });
41
+
42
+ await startAgent();
43
+
44
+ const app = express();
45
+
46
+ // Add middleware BEFORE your routes
47
+ app.use(expressMiddleware(agent));
48
+
49
+ // Your routes
50
+ app.get('/api/users', async (req, res) => {
51
+ // Automatically traced!
52
+ const users = await getUsers();
53
+ res.json(users);
54
+ });
55
+
56
+ // Add error handler AFTER your routes
57
+ app.use(expressErrorHandler(agent));
58
+
59
+ app.listen(3000);
60
+ ```
61
+
62
+ ### 3. Manual Span Creation
63
+
64
+ ```javascript
65
+ const { SpanBuilder, SpanKind, getAgent } = require('@devskin/agent');
66
+
67
+ const agent = getAgent();
68
+
69
+ async function processOrder(orderId) {
70
+ const span = new SpanBuilder(
71
+ 'processOrder',
72
+ SpanKind.INTERNAL,
73
+ agent.getConfig().serviceName,
74
+ agent.getConfig().serviceVersion,
75
+ agent.getConfig().environment,
76
+ agent
77
+ );
78
+
79
+ span.setAttribute('order.id', orderId);
80
+
81
+ try {
82
+ // Your business logic
83
+ const order = await fetchOrder(orderId);
84
+ span.setAttribute('order.amount', order.amount);
85
+
86
+ return order;
87
+ } catch (error) {
88
+ span.recordError(error);
89
+ throw error;
90
+ } finally {
91
+ span.end();
92
+ }
93
+ }
94
+ ```
95
+
96
+ ## Configuration Options
97
+
98
+ | Option | Type | Default | Description |
99
+ |--------|------|---------|-------------|
100
+ | `serverUrl` | string | *required* | DevSkin backend URL |
101
+ | `apiKey` | string | *required* | API key for authentication |
102
+ | `serviceName` | string | *required* | Name of your service |
103
+ | `serviceVersion` | string | undefined | Version of your service |
104
+ | `environment` | string | undefined | Environment (production, staging, etc) |
105
+ | `enabled` | boolean | true | Enable/disable agent |
106
+ | `sampleRate` | number | 1.0 | Sample rate (0.0 to 1.0) |
107
+ | `instrumentHttp` | boolean | true | Auto-instrument HTTP |
108
+ | `instrumentExpress` | boolean | true | Auto-instrument Express |
109
+ | `batchSize` | number | 100 | Batch size before flushing |
110
+ | `flushInterval` | number | 10000 | Flush interval in ms |
111
+ | `debug` | boolean | false | Enable debug logging |
112
+
113
+ ## Features
114
+
115
+ - ✅ Automatic HTTP request/response tracing
116
+ - ✅ Express middleware for automatic route tracing
117
+ - ✅ Manual span creation
118
+ - ✅ Distributed tracing with trace ID propagation
119
+ - ✅ Error tracking and reporting
120
+ - ✅ Sampling support
121
+ - ✅ Async context propagation
122
+ - ✅ Service discovery
123
+
124
+ ## Best Practices
125
+
126
+ 1. **Initialize early**: Call `init()` and `startAgent()` as early as possible in your application
127
+ 2. **Use Express middleware**: For Express apps, use the provided middleware for automatic instrumentation
128
+ 3. **Sample in production**: Set `sampleRate` to a value < 1.0 in high-traffic production environments
129
+ 4. **Add context**: Use `span.setAttribute()` to add business context to your traces
130
+ 5. **Graceful shutdown**: Call `stopAgent()` before your application exits
131
+
132
+ ## Environment Variables
133
+
134
+ You can also configure the agent using environment variables:
135
+
136
+ ```bash
137
+ DEVSKIN_SERVER_URL=https://api-monitoring.devskin.com
138
+ DEVSKIN_API_KEY=your-api-key
139
+ DEVSKIN_SERVICE_NAME=my-service
140
+ DEVSKIN_ENVIRONMENT=production
141
+ DEVSKIN_SAMPLE_RATE=1.0
142
+ ```
143
+
144
+ ```javascript
145
+ const agent = init({
146
+ serverUrl: process.env.DEVSKIN_SERVER_URL,
147
+ apiKey: process.env.DEVSKIN_API_KEY,
148
+ serviceName: process.env.DEVSKIN_SERVICE_NAME,
149
+ environment: process.env.DEVSKIN_ENVIRONMENT,
150
+ sampleRate: parseFloat(process.env.DEVSKIN_SAMPLE_RATE || '1.0'),
151
+ });
152
+ ```
153
+
154
+ ## License
155
+
156
+ MIT
@@ -0,0 +1,28 @@
1
+ import { AgentConfig, Span, Transaction, LogEntry, ErrorData } from './types';
2
+ export declare class Agent {
3
+ private config;
4
+ private apiClient;
5
+ private spanBuffer;
6
+ private transactionBuffer;
7
+ private logBuffer;
8
+ private errorBuffer;
9
+ private flushTimer?;
10
+ private initialized;
11
+ constructor(config: AgentConfig);
12
+ start(): Promise<void>;
13
+ stop(): Promise<void>;
14
+ private initHttpInstrumentation;
15
+ private sendServiceMetadata;
16
+ reportSpan(span: Span): void;
17
+ reportTransaction(transaction: Transaction): void;
18
+ reportLog(log: LogEntry): void;
19
+ reportError(error: ErrorData): void;
20
+ flush(): Promise<void>;
21
+ getConfig(): AgentConfig;
22
+ shouldSample(): boolean;
23
+ }
24
+ export declare function init(config: AgentConfig): Agent;
25
+ export declare function getAgent(): Agent | null;
26
+ export declare function startAgent(): Promise<void>;
27
+ export declare function stopAgent(): Promise<void>;
28
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +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;IAgCzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAuBb,uBAAuB;YAYvB,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 ADDED
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Agent = void 0;
37
+ exports.init = init;
38
+ exports.getAgent = getAgent;
39
+ exports.startAgent = startAgent;
40
+ exports.stopAgent = stopAgent;
41
+ const api_client_1 = require("./api-client");
42
+ const id_generator_1 = require("./utils/id-generator");
43
+ class Agent {
44
+ constructor(config) {
45
+ this.spanBuffer = [];
46
+ this.transactionBuffer = [];
47
+ this.logBuffer = [];
48
+ this.errorBuffer = [];
49
+ this.initialized = false;
50
+ this.config = {
51
+ enabled: true,
52
+ sampleRate: 1.0,
53
+ instrumentHttp: true,
54
+ instrumentExpress: true,
55
+ batchSize: 100,
56
+ flushInterval: 10000,
57
+ debug: false,
58
+ ...config,
59
+ };
60
+ if (!this.config.enabled) {
61
+ console.log('[DevSkin Agent] Agent is disabled');
62
+ return;
63
+ }
64
+ if (!this.config.serverUrl || !this.config.apiKey || !this.config.serviceName) {
65
+ throw new Error('[DevSkin Agent] serverUrl, apiKey, and serviceName are required');
66
+ }
67
+ this.apiClient = new api_client_1.ApiClient(this.config.serverUrl, this.config.apiKey, this.config.serviceName, this.config.debug);
68
+ }
69
+ async start() {
70
+ if (!this.config.enabled)
71
+ return;
72
+ if (this.initialized)
73
+ return;
74
+ this.initialized = true;
75
+ if (this.config.debug) {
76
+ console.log('[DevSkin Agent] Starting agent for service:', this.config.serviceName);
77
+ }
78
+ this.flushTimer = setInterval(() => {
79
+ this.flush();
80
+ }, this.config.flushInterval);
81
+ await this.sendServiceMetadata();
82
+ if (this.config.instrumentHttp) {
83
+ await this.initHttpInstrumentation();
84
+ }
85
+ if (this.config.debug) {
86
+ console.log('[DevSkin Agent] Agent started successfully');
87
+ }
88
+ }
89
+ async stop() {
90
+ if (!this.config.enabled)
91
+ return;
92
+ if (this.config.debug) {
93
+ console.log('[DevSkin Agent] Stopping agent...');
94
+ }
95
+ if (this.flushTimer) {
96
+ clearInterval(this.flushTimer);
97
+ }
98
+ await this.flush();
99
+ this.initialized = false;
100
+ if (this.config.debug) {
101
+ console.log('[DevSkin Agent] Agent stopped');
102
+ }
103
+ }
104
+ async initHttpInstrumentation() {
105
+ try {
106
+ const { instrumentHttp } = await Promise.resolve().then(() => __importStar(require('./instrumentation/http')));
107
+ instrumentHttp(this);
108
+ }
109
+ catch (error) {
110
+ console.error('[DevSkin Agent] Failed to initialize HTTP instrumentation:', error.message);
111
+ }
112
+ }
113
+ async sendServiceMetadata() {
114
+ try {
115
+ await this.apiClient.sendServiceMetadata({
116
+ service_version: this.config.serviceVersion,
117
+ environment: this.config.environment,
118
+ language: 'node.js',
119
+ language_version: process.version,
120
+ metadata: {
121
+ platform: process.platform,
122
+ arch: process.arch,
123
+ node_version: process.version,
124
+ },
125
+ });
126
+ }
127
+ catch (error) {
128
+ if (this.config.debug) {
129
+ console.error('[DevSkin Agent] Failed to send service metadata:', error.message);
130
+ }
131
+ }
132
+ }
133
+ reportSpan(span) {
134
+ if (!this.config.enabled)
135
+ return;
136
+ this.spanBuffer.push(span);
137
+ if (this.spanBuffer.length >= this.config.batchSize) {
138
+ this.flush();
139
+ }
140
+ }
141
+ reportTransaction(transaction) {
142
+ if (!this.config.enabled)
143
+ return;
144
+ this.transactionBuffer.push(transaction);
145
+ if (this.transactionBuffer.length >= this.config.batchSize) {
146
+ this.flush();
147
+ }
148
+ }
149
+ reportLog(log) {
150
+ if (!this.config.enabled)
151
+ return;
152
+ this.logBuffer.push(log);
153
+ if (this.logBuffer.length >= this.config.batchSize) {
154
+ this.flush();
155
+ }
156
+ }
157
+ reportError(error) {
158
+ if (!this.config.enabled)
159
+ return;
160
+ this.errorBuffer.push(error);
161
+ if (this.errorBuffer.length >= this.config.batchSize) {
162
+ this.flush();
163
+ }
164
+ }
165
+ async flush() {
166
+ if (!this.config.enabled)
167
+ return;
168
+ const spans = [...this.spanBuffer];
169
+ const transactions = [...this.transactionBuffer];
170
+ const logs = [...this.logBuffer];
171
+ const errors = [...this.errorBuffer];
172
+ this.spanBuffer = [];
173
+ this.transactionBuffer = [];
174
+ this.logBuffer = [];
175
+ this.errorBuffer = [];
176
+ try {
177
+ await Promise.all([
178
+ this.apiClient.sendSpans(spans),
179
+ this.apiClient.sendTransactions(transactions),
180
+ this.apiClient.sendLogs(logs),
181
+ this.apiClient.sendErrors(errors),
182
+ ]);
183
+ }
184
+ catch (error) {
185
+ if (this.config.debug) {
186
+ console.error('[DevSkin Agent] Failed to flush data:', error.message);
187
+ }
188
+ }
189
+ }
190
+ getConfig() {
191
+ return this.config;
192
+ }
193
+ shouldSample() {
194
+ return (0, id_generator_1.shouldSample)(this.config.sampleRate || 1.0);
195
+ }
196
+ }
197
+ exports.Agent = Agent;
198
+ let globalAgent = null;
199
+ function init(config) {
200
+ if (globalAgent) {
201
+ console.warn('[DevSkin Agent] Agent already initialized');
202
+ return globalAgent;
203
+ }
204
+ globalAgent = new Agent(config);
205
+ return globalAgent;
206
+ }
207
+ function getAgent() {
208
+ return globalAgent;
209
+ }
210
+ async function startAgent() {
211
+ if (!globalAgent) {
212
+ throw new Error('[DevSkin Agent] Agent not initialized. Call init() first.');
213
+ }
214
+ await globalAgent.start();
215
+ }
216
+ async function stopAgent() {
217
+ if (globalAgent) {
218
+ await globalAgent.stop();
219
+ }
220
+ }
221
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Span, Transaction, LogEntry, ErrorData } from './types';
2
+ export declare class ApiClient {
3
+ private client;
4
+ private apiKey;
5
+ private serviceName;
6
+ private debug;
7
+ constructor(serverUrl: string, apiKey: string, serviceName: string, debug?: boolean);
8
+ sendSpans(spans: Span[]): Promise<void>;
9
+ sendTransactions(transactions: Transaction[]): Promise<void>;
10
+ sendLogs(logs: LogEntry[]): Promise<void>;
11
+ sendErrors(errors: ErrorData[]): Promise<void>;
12
+ sendServiceMetadata(metadata: Record<string, any>): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKjE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAU;gBAEX,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,UAAQ;IAkB3E,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvC,gBAAgB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB5D,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBzC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAcxE"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ApiClient = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ class ApiClient {
9
+ constructor(serverUrl, apiKey, serviceName, debug = false) {
10
+ this.apiKey = apiKey;
11
+ this.serviceName = serviceName;
12
+ this.debug = debug;
13
+ this.client = axios_1.default.create({
14
+ baseURL: serverUrl,
15
+ timeout: 30000,
16
+ headers: {
17
+ 'Content-Type': 'application/json',
18
+ 'X-DevSkin-API-Key': apiKey,
19
+ },
20
+ });
21
+ }
22
+ async sendSpans(spans) {
23
+ if (spans.length === 0)
24
+ return;
25
+ try {
26
+ if (this.debug) {
27
+ console.log(`[DevSkin Agent] Sending ${spans.length} spans`);
28
+ }
29
+ await this.client.post('/api/v1/apm/spans', {
30
+ service_name: this.serviceName,
31
+ spans,
32
+ });
33
+ }
34
+ catch (error) {
35
+ console.error('[DevSkin Agent] Failed to send spans:', error.message);
36
+ }
37
+ }
38
+ async sendTransactions(transactions) {
39
+ if (transactions.length === 0)
40
+ return;
41
+ try {
42
+ if (this.debug) {
43
+ console.log(`[DevSkin Agent] Sending ${transactions.length} transactions`);
44
+ }
45
+ await this.client.post('/api/v1/apm/transactions', {
46
+ service_name: this.serviceName,
47
+ transactions,
48
+ });
49
+ }
50
+ catch (error) {
51
+ console.error('[DevSkin Agent] Failed to send transactions:', error.message);
52
+ }
53
+ }
54
+ async sendLogs(logs) {
55
+ if (logs.length === 0)
56
+ return;
57
+ try {
58
+ if (this.debug) {
59
+ console.log(`[DevSkin Agent] Sending ${logs.length} logs`);
60
+ }
61
+ await this.client.post('/api/v1/logs/batch', {
62
+ service_name: this.serviceName,
63
+ logs,
64
+ });
65
+ }
66
+ catch (error) {
67
+ console.error('[DevSkin Agent] Failed to send logs:', error.message);
68
+ }
69
+ }
70
+ async sendErrors(errors) {
71
+ if (errors.length === 0)
72
+ return;
73
+ try {
74
+ if (this.debug) {
75
+ console.log(`[DevSkin Agent] Sending ${errors.length} errors`);
76
+ }
77
+ await this.client.post('/api/v1/apm/errors', {
78
+ service_name: this.serviceName,
79
+ errors,
80
+ });
81
+ }
82
+ catch (error) {
83
+ console.error('[DevSkin Agent] Failed to send errors:', error.message);
84
+ }
85
+ }
86
+ async sendServiceMetadata(metadata) {
87
+ try {
88
+ if (this.debug) {
89
+ console.log('[DevSkin Agent] Sending service metadata');
90
+ }
91
+ await this.client.post('/api/v1/apm/services', {
92
+ service_name: this.serviceName,
93
+ ...metadata,
94
+ });
95
+ }
96
+ catch (error) {
97
+ console.error('[DevSkin Agent] Failed to send service metadata:', error.message);
98
+ }
99
+ }
100
+ }
101
+ exports.ApiClient = ApiClient;
102
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export * from './types';
2
+ export * from './agent';
3
+ export * from './span';
4
+ export * from './api-client';
5
+ export * from './utils/context';
6
+ export * from './utils/id-generator';
7
+ export { expressMiddleware, expressErrorHandler } from './instrumentation/express';
8
+ export { init, getAgent, startAgent, stopAgent } from './agent';
9
+ export { SpanBuilder, TransactionBuilder } from './span';
10
+ export { Context } from './utils/context';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,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;AAGnF,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 ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.Context = exports.TransactionBuilder = exports.SpanBuilder = exports.stopAgent = exports.startAgent = exports.getAgent = exports.init = exports.expressErrorHandler = exports.expressMiddleware = void 0;
18
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./agent"), exports);
20
+ __exportStar(require("./span"), exports);
21
+ __exportStar(require("./api-client"), exports);
22
+ __exportStar(require("./utils/context"), exports);
23
+ __exportStar(require("./utils/id-generator"), exports);
24
+ var express_1 = require("./instrumentation/express");
25
+ Object.defineProperty(exports, "expressMiddleware", { enumerable: true, get: function () { return express_1.expressMiddleware; } });
26
+ Object.defineProperty(exports, "expressErrorHandler", { enumerable: true, get: function () { return express_1.expressErrorHandler; } });
27
+ var agent_1 = require("./agent");
28
+ Object.defineProperty(exports, "init", { enumerable: true, get: function () { return agent_1.init; } });
29
+ Object.defineProperty(exports, "getAgent", { enumerable: true, get: function () { return agent_1.getAgent; } });
30
+ Object.defineProperty(exports, "startAgent", { enumerable: true, get: function () { return agent_1.startAgent; } });
31
+ Object.defineProperty(exports, "stopAgent", { enumerable: true, get: function () { return agent_1.stopAgent; } });
32
+ var span_1 = require("./span");
33
+ Object.defineProperty(exports, "SpanBuilder", { enumerable: true, get: function () { return span_1.SpanBuilder; } });
34
+ Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return span_1.TransactionBuilder; } });
35
+ var context_1 = require("./utils/context");
36
+ Object.defineProperty(exports, "Context", { enumerable: true, get: function () { return context_1.Context; } });
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAoBA,0CAAwB;AACxB,0CAAwB;AACxB,yCAAuB;AACvB,+CAA6B;AAC7B,kDAAgC;AAChC,uDAAqC;AACrC,qDAAmF;AAA1E,4GAAA,iBAAiB,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAG/C,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"}
@@ -0,0 +1,5 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ import { Agent } from '../agent';
3
+ export declare function expressMiddleware(agent: Agent): (req: Request, res: Response, next: NextFunction) => void;
4
+ export declare function expressErrorHandler(agent: Agent): (err: Error, req: Request, res: Response, next: NextFunction) => void;
5
+ //# sourceMappingURL=express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/instrumentation/express.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAGpC,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,UAgGxD;AAKD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,IACtC,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,UA6BpE"}