@techalmondsai/nodejs-monitoring 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,cAAc,SAAS,CAAC;AAGxB,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,gBAAgB,qBAoBlE"}
package/dist/index.js ADDED
@@ -0,0 +1,41 @@
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.ContainerDetector = exports.BuiltInProbes = exports.MonitoringService = void 0;
18
+ exports.setupMonitoring = setupMonitoring;
19
+ const MonitoringService_1 = require("./MonitoringService");
20
+ var MonitoringService_2 = require("./MonitoringService");
21
+ Object.defineProperty(exports, "MonitoringService", { enumerable: true, get: function () { return MonitoringService_2.MonitoringService; } });
22
+ var BuiltInProbes_1 = require("./probes/BuiltInProbes");
23
+ Object.defineProperty(exports, "BuiltInProbes", { enumerable: true, get: function () { return BuiltInProbes_1.BuiltInProbes; } });
24
+ var ContainerDetector_1 = require("./utils/ContainerDetector");
25
+ Object.defineProperty(exports, "ContainerDetector", { enumerable: true, get: function () { return ContainerDetector_1.ContainerDetector; } });
26
+ __exportStar(require("./types"), exports);
27
+ function setupMonitoring(app, config) {
28
+ const monitoring = MonitoringService_1.MonitoringService.getInstance(config);
29
+ app.use(monitoring.requestTrackingMiddleware());
30
+ if (config?.enableHealthRoute !== false) {
31
+ const healthPath = config?.healthRoutePath || "/health";
32
+ app.get(healthPath, monitoring.healthCheckHandler());
33
+ app.get(`${healthPath}/metrics`, monitoring.metricsHistoryHandler());
34
+ }
35
+ const livenessPath = config?.livenessPath || "/healthz";
36
+ const readinessPath = config?.readinessPath || "/readyz";
37
+ app.get(livenessPath, monitoring.livenessHandler());
38
+ app.get(readinessPath, monitoring.readinessHandler());
39
+ return monitoring;
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AASA,0CAoBC;AA7BD,2DAAwD;AAGxD,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,wDAAuD;AAA9C,8GAAA,aAAa,OAAA;AACtB,+DAA8D;AAArD,sHAAA,iBAAiB,OAAA;AAC1B,0CAAwB;AAGxB,SAAgB,eAAe,CAAC,GAAQ,EAAE,MAAyB;IACjE,MAAM,UAAU,GAAG,qCAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAGzD,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAGhD,IAAI,MAAM,EAAE,iBAAiB,KAAK,KAAK,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,EAAE,eAAe,IAAI,SAAS,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACrD,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,UAAU,EAAE,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACvE,CAAC;IAGD,MAAM,YAAY,GAAG,MAAM,EAAE,YAAY,IAAI,UAAU,CAAC;IACxD,MAAM,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,SAAS,CAAC;IACzD,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;IACpD,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEtD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { CustomProbe } from "../types";
2
+ export declare class BuiltInProbes {
3
+ static createMemoryProbe(threshold?: number): CustomProbe;
4
+ static createCpuProbe(threshold?: number): CustomProbe;
5
+ static createResponseTimeProbe(threshold?: number): CustomProbe;
6
+ static createErrorRateProbe(threshold?: number): CustomProbe;
7
+ static createUptimeProbe(): CustomProbe;
8
+ static createDiskSpaceProbe(path?: string, threshold?: number): CustomProbe;
9
+ private static getDiskUsage;
10
+ }
11
+ //# sourceMappingURL=BuiltInProbes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuiltInProbes.d.ts","sourceRoot":"","sources":["../../src/probes/BuiltInProbes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,UAAU,CAAC;AASpD,qBAAa,aAAa;IACxB,MAAM,CAAC,iBAAiB,CAAC,SAAS,GAAE,MAAW,GAAG,WAAW;IA8B7D,MAAM,CAAC,cAAc,CAAC,SAAS,GAAE,MAAW,GAAG,WAAW;IA8B1D,MAAM,CAAC,uBAAuB,CAAC,SAAS,GAAE,MAAa,GAAG,WAAW;IA8BrE,MAAM,CAAC,oBAAoB,CAAC,SAAS,GAAE,MAAW,GAAG,WAAW;IA8BhE,MAAM,CAAC,iBAAiB,IAAI,WAAW;IAiBvC,MAAM,CAAC,oBAAoB,CACzB,IAAI,GAAE,MAAY,EAClB,SAAS,GAAE,MAAW,GACrB,WAAW;mBAoDO,YAAY;CAoDlC"}
@@ -0,0 +1,256 @@
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.BuiltInProbes = void 0;
37
+ const SystemMetrics_1 = require("../collectors/SystemMetrics");
38
+ const RequestTracker_1 = require("../collectors/RequestTracker");
39
+ const fs = __importStar(require("fs"));
40
+ const child_process_1 = require("child_process");
41
+ const util_1 = require("util");
42
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
43
+ class BuiltInProbes {
44
+ static createMemoryProbe(threshold = 80) {
45
+ return {
46
+ name: "memory_usage",
47
+ check: async () => {
48
+ const metrics = SystemMetrics_1.SystemMetrics.getInstance().getMemoryMetrics();
49
+ const usage = metrics.percentage;
50
+ if (usage > threshold) {
51
+ return {
52
+ status: "critical",
53
+ message: `Memory usage is ${usage}% (threshold: ${threshold}%)`,
54
+ value: usage,
55
+ };
56
+ }
57
+ else if (usage > threshold * 0.8) {
58
+ return {
59
+ status: "warning",
60
+ message: `Memory usage is ${usage}% (approaching threshold)`,
61
+ value: usage,
62
+ };
63
+ }
64
+ return {
65
+ status: "healthy",
66
+ message: `Memory usage is ${usage}%`,
67
+ value: usage,
68
+ };
69
+ },
70
+ };
71
+ }
72
+ static createCpuProbe(threshold = 80) {
73
+ return {
74
+ name: "cpu_usage",
75
+ check: async () => {
76
+ const metrics = SystemMetrics_1.SystemMetrics.getInstance().getCpuMetrics();
77
+ const usage = metrics.usage;
78
+ if (usage > threshold) {
79
+ return {
80
+ status: "critical",
81
+ message: `CPU usage is ${usage}% (threshold: ${threshold}%)`,
82
+ value: usage,
83
+ };
84
+ }
85
+ else if (usage > threshold * 0.8) {
86
+ return {
87
+ status: "warning",
88
+ message: `CPU usage is ${usage}% (approaching threshold)`,
89
+ value: usage,
90
+ };
91
+ }
92
+ return {
93
+ status: "healthy",
94
+ message: `CPU usage is ${usage}%`,
95
+ value: usage,
96
+ };
97
+ },
98
+ };
99
+ }
100
+ static createResponseTimeProbe(threshold = 5000) {
101
+ return {
102
+ name: "response_time",
103
+ check: async () => {
104
+ const metrics = RequestTracker_1.RequestTracker.getInstance().getMetrics();
105
+ const avgTime = metrics.averageResponseTime;
106
+ if (avgTime > threshold) {
107
+ return {
108
+ status: "critical",
109
+ message: `Avg response time is ${avgTime}ms (threshold: ${threshold}ms)`,
110
+ value: avgTime,
111
+ };
112
+ }
113
+ else if (avgTime > threshold * 0.8) {
114
+ return {
115
+ status: "warning",
116
+ message: `Avg response time is ${avgTime}ms (approaching threshold)`,
117
+ value: avgTime,
118
+ };
119
+ }
120
+ return {
121
+ status: "healthy",
122
+ message: `Avg response time is ${avgTime}ms`,
123
+ value: avgTime,
124
+ };
125
+ },
126
+ };
127
+ }
128
+ static createErrorRateProbe(threshold = 10) {
129
+ return {
130
+ name: "error_rate",
131
+ check: async () => {
132
+ const metrics = RequestTracker_1.RequestTracker.getInstance().getMetrics();
133
+ const rate = metrics.errors.rate;
134
+ if (rate > threshold) {
135
+ return {
136
+ status: "critical",
137
+ message: `Error rate is ${rate}/min (threshold: ${threshold}/min)`,
138
+ value: rate,
139
+ };
140
+ }
141
+ else if (rate > threshold * 0.8) {
142
+ return {
143
+ status: "warning",
144
+ message: `Error rate is ${rate}/min (approaching threshold)`,
145
+ value: rate,
146
+ };
147
+ }
148
+ return {
149
+ status: "healthy",
150
+ message: `Error rate is ${rate}/min`,
151
+ value: rate,
152
+ };
153
+ },
154
+ };
155
+ }
156
+ static createUptimeProbe() {
157
+ return {
158
+ name: "uptime",
159
+ check: async () => {
160
+ const uptime = process.uptime();
161
+ const hours = Math.floor(uptime / 3600);
162
+ const minutes = Math.floor((uptime % 3600) / 60);
163
+ return {
164
+ status: "healthy",
165
+ message: `Application has been running for ${hours}h ${minutes}m`,
166
+ value: uptime,
167
+ };
168
+ },
169
+ };
170
+ }
171
+ static createDiskSpaceProbe(path = "/", threshold = 85) {
172
+ return {
173
+ name: "disk_space",
174
+ check: async () => {
175
+ try {
176
+ const diskInfo = await BuiltInProbes.getDiskUsage(path);
177
+ if (!diskInfo) {
178
+ return {
179
+ status: "healthy",
180
+ message: "Disk space check not available on this platform",
181
+ metadata: { path, accessible: true },
182
+ };
183
+ }
184
+ const usagePercent = diskInfo.usedPercent;
185
+ if (usagePercent > threshold) {
186
+ return {
187
+ status: "critical",
188
+ message: `Disk usage is ${usagePercent}% (threshold: ${threshold}%)`,
189
+ value: usagePercent,
190
+ metadata: diskInfo,
191
+ };
192
+ }
193
+ else if (usagePercent > threshold * 0.8) {
194
+ return {
195
+ status: "warning",
196
+ message: `Disk usage is ${usagePercent}% (approaching threshold)`,
197
+ value: usagePercent,
198
+ metadata: diskInfo,
199
+ };
200
+ }
201
+ return {
202
+ status: "healthy",
203
+ message: `Disk usage is ${usagePercent}%`,
204
+ value: usagePercent,
205
+ metadata: diskInfo,
206
+ };
207
+ }
208
+ catch (error) {
209
+ return {
210
+ status: "critical",
211
+ message: "Cannot access disk space",
212
+ metadata: {
213
+ error: error instanceof Error ? error.message : "Unknown error",
214
+ },
215
+ };
216
+ }
217
+ },
218
+ };
219
+ }
220
+ static async getDiskUsage(path) {
221
+ if (typeof fs.statfsSync === "function") {
222
+ try {
223
+ const stats = fs.statfsSync(path);
224
+ const blockSize = stats.bsize;
225
+ const totalMB = Math.round((stats.blocks * blockSize) / 1024 / 1024);
226
+ const availableMB = Math.round((stats.bavail * blockSize) / 1024 / 1024);
227
+ const usedMB = totalMB - availableMB;
228
+ const usedPercent = totalMB > 0 ? Math.round((usedMB / totalMB) * 100) : 0;
229
+ return { path, totalMB, usedMB, availableMB, usedPercent };
230
+ }
231
+ catch {
232
+ }
233
+ }
234
+ if (process.platform === "win32")
235
+ return null;
236
+ try {
237
+ const { stdout } = await execAsync(`df -k "${path}"`, {
238
+ timeout: 5000,
239
+ });
240
+ const lines = stdout.trim().split("\n");
241
+ if (lines.length < 2)
242
+ return null;
243
+ const parts = lines[1].split(/\s+/);
244
+ const totalMB = Math.round(parseInt(parts[1], 10) / 1024);
245
+ const usedMB = Math.round(parseInt(parts[2], 10) / 1024);
246
+ const availableMB = Math.round(parseInt(parts[3], 10) / 1024);
247
+ const usedPercent = totalMB > 0 ? Math.round((usedMB / totalMB) * 100) : 0;
248
+ return { path, totalMB, usedMB, availableMB, usedPercent };
249
+ }
250
+ catch {
251
+ return null;
252
+ }
253
+ }
254
+ }
255
+ exports.BuiltInProbes = BuiltInProbes;
256
+ //# sourceMappingURL=BuiltInProbes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuiltInProbes.js","sourceRoot":"","sources":["../../src/probes/BuiltInProbes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ export interface HealthMetrics {
2
+ timestamp: number;
3
+ uptime: number;
4
+ memory: {
5
+ used: number;
6
+ total: number;
7
+ percentage: number;
8
+ heap: {
9
+ used: number;
10
+ total: number;
11
+ percentage: number;
12
+ };
13
+ isContainerAware: boolean;
14
+ };
15
+ cpu: {
16
+ usage: number;
17
+ loadAverage: number[];
18
+ effectiveCpus: number;
19
+ isContainerAware: boolean;
20
+ };
21
+ process: {
22
+ pid: number;
23
+ version: string;
24
+ platform: string;
25
+ arch: string;
26
+ hostname: string;
27
+ };
28
+ requests: {
29
+ total: number;
30
+ active: number;
31
+ averageResponseTime: number;
32
+ };
33
+ errors: {
34
+ total: number;
35
+ rate: number;
36
+ };
37
+ }
38
+ export interface MonitoringConfig {
39
+ enableHealthRoute?: boolean;
40
+ healthRoutePath?: string;
41
+ enableMetricsCollection?: boolean;
42
+ metricsInterval?: number;
43
+ enableRequestTracking?: boolean;
44
+ enableErrorTracking?: boolean;
45
+ customProbes?: CustomProbe[];
46
+ alertThresholds?: AlertThresholds;
47
+ livenessPath?: string;
48
+ readinessPath?: string;
49
+ probeTimeout?: number;
50
+ }
51
+ export interface CustomProbe {
52
+ name: string;
53
+ check: () => Promise<ProbeResult>;
54
+ interval?: number;
55
+ }
56
+ export interface ProbeResult {
57
+ status: "healthy" | "warning" | "critical";
58
+ message?: string;
59
+ value?: number;
60
+ metadata?: Record<string, any>;
61
+ }
62
+ export interface AlertThresholds {
63
+ memoryUsage?: number;
64
+ cpuUsage?: number;
65
+ responseTime?: number;
66
+ errorRate?: number;
67
+ }
68
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ interface ContainerMemoryInfo {
2
+ used: number;
3
+ total: number;
4
+ }
5
+ interface ContainerCpuInfo {
6
+ quotaUs: number;
7
+ periodUs: number;
8
+ cpuCount: number;
9
+ }
10
+ export declare class ContainerDetector {
11
+ private static _isContainer;
12
+ private static _cgroupVersion;
13
+ private static _detectedAt;
14
+ private static readonly REDETECT_INTERVAL_MS;
15
+ private static _cachedCpuInfo;
16
+ private static _cachedMemoryLimit;
17
+ private static _cachedEffectiveCpus;
18
+ private static readonly CPU_CACHE_TTL_MS;
19
+ private static readonly MEM_LIMIT_CACHE_TTL_MS;
20
+ static isContainer(): boolean;
21
+ static getCgroupVersion(): 1 | 2 | null;
22
+ static getContainerMemory(): ContainerMemoryInfo | null;
23
+ private static getCachedMemoryLimit;
24
+ static getContainerCpuInfo(): ContainerCpuInfo | null;
25
+ static getEffectiveCpuCount(): number;
26
+ private static fileExists;
27
+ private static readCgroupFile;
28
+ static reset(): void;
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=ContainerDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContainerDetector.d.ts","sourceRoot":"","sources":["../../src/utils/ContainerDetector.ts"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAwB;IACnD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAsB;IACnD,OAAO,CAAC,MAAM,CAAC,WAAW,CAAa;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAGrD,OAAO,CAAC,MAAM,CAAC,cAAc,CACtB;IACP,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA2C;IAC5E,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAoC;IAGvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IAEpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAGvD,MAAM,CAAC,WAAW,IAAI,OAAO;IAgE7B,MAAM,CAAC,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;IAiBvC,MAAM,CAAC,kBAAkB,IAAI,mBAAmB,GAAG,IAAI;IAgCvD,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA8BnC,MAAM,CAAC,mBAAmB,IAAI,gBAAgB,GAAG,IAAI;IA6CrD,MAAM,CAAC,oBAAoB,IAAI,MAAM;IAkBrC,OAAO,CAAC,MAAM,CAAC,UAAU;IASzB,OAAO,CAAC,MAAM,CAAC,cAAc;IAS7B,MAAM,CAAC,KAAK,IAAI,IAAI;CAQrB"}