hono-status-monitor 1.0.1 → 1.0.3
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 +59 -2
- package/dist/dashboard.d.ts +13 -0
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +391 -0
- package/dist/dashboard.js.map +1 -1
- package/dist/index-edge.d.ts +58 -0
- package/dist/index-edge.d.ts.map +1 -0
- package/dist/index-edge.js +94 -0
- package/dist/index-edge.js.map +1 -0
- package/dist/index.d.ts +51 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +121 -13
- package/dist/index.js.map +1 -1
- package/dist/monitor-edge.d.ts +21 -0
- package/dist/monitor-edge.d.ts.map +1 -0
- package/dist/monitor-edge.js +376 -0
- package/dist/monitor-edge.js.map +1 -0
- package/dist/platform.d.ts +33 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +80 -0
- package/dist/platform.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +24 -6
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
|
-
import type { Server as HttpServer } from 'http';
|
|
3
2
|
import type { StatusMonitorConfig } from './types.js';
|
|
4
3
|
export * from './types.js';
|
|
4
|
+
export { generateDashboard, generateEdgeDashboard } from './dashboard.js';
|
|
5
|
+
export { createEdgeMonitor, type EdgeMonitor } from './monitor-edge.js';
|
|
6
|
+
export { detectPlatform, isNodeEnvironment, isCloudflareEnvironment, isEdgeEnvironment, getPlatformInfo } from './platform.js';
|
|
5
7
|
export { createMonitor, type Monitor } from './monitor.js';
|
|
6
8
|
export { createMiddleware } from './middleware.js';
|
|
7
|
-
export { generateDashboard } from './dashboard.js';
|
|
8
9
|
export { isClusterWorker, isClusterMaster, getWorkerId, createClusterAggregator } from './cluster.js';
|
|
9
10
|
/**
|
|
10
11
|
* Create a complete status monitor with routes, middleware, and WebSocket
|
|
12
|
+
* Automatically detects the runtime environment and uses the appropriate implementation
|
|
11
13
|
*
|
|
12
|
-
* @example
|
|
14
|
+
* @example Node.js
|
|
13
15
|
* ```typescript
|
|
14
16
|
* import { Hono } from 'hono';
|
|
15
17
|
* import { serve } from '@hono/node-server';
|
|
@@ -18,24 +20,58 @@ export { isClusterWorker, isClusterMaster, getWorkerId, createClusterAggregator
|
|
|
18
20
|
* const app = new Hono();
|
|
19
21
|
* const monitor = statusMonitor();
|
|
20
22
|
*
|
|
21
|
-
* // Add middleware to track all requests
|
|
22
23
|
* app.use('*', monitor.middleware);
|
|
23
|
-
*
|
|
24
|
-
* // Mount status routes
|
|
25
24
|
* app.route('/status', monitor.routes);
|
|
26
25
|
*
|
|
27
|
-
* // Start server and initialize WebSocket
|
|
28
26
|
* const server = serve({ fetch: app.fetch, port: 3000 });
|
|
29
27
|
* monitor.initSocket(server);
|
|
30
28
|
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example Cloudflare Workers
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { Hono } from 'hono';
|
|
33
|
+
* import { statusMonitor } from 'hono-status-monitor';
|
|
34
|
+
*
|
|
35
|
+
* const app = new Hono();
|
|
36
|
+
* const monitor = statusMonitor();
|
|
37
|
+
*
|
|
38
|
+
* app.use('*', monitor.middleware);
|
|
39
|
+
* app.route('/status', monitor.routes);
|
|
40
|
+
*
|
|
41
|
+
* export default app;
|
|
42
|
+
* ```
|
|
31
43
|
*/
|
|
32
44
|
export declare function statusMonitor(config?: StatusMonitorConfig): {
|
|
33
45
|
/** Hono middleware for tracking all requests */
|
|
34
|
-
middleware:
|
|
46
|
+
middleware: any;
|
|
35
47
|
/** Pre-configured Hono routes for dashboard and API */
|
|
36
48
|
routes: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
37
49
|
/** Initialize Socket.io on the HTTP server for real-time updates */
|
|
38
|
-
initSocket: (server:
|
|
50
|
+
initSocket: (server: import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>) => any;
|
|
51
|
+
/** Track rate limit events for the dashboard */
|
|
52
|
+
trackRateLimit: (blocked: boolean) => any;
|
|
53
|
+
/** Get current metrics snapshot */
|
|
54
|
+
getMetrics: () => any;
|
|
55
|
+
/** Get chart data for all metrics */
|
|
56
|
+
getCharts: () => any;
|
|
57
|
+
/** Stop metrics collection */
|
|
58
|
+
stop: () => any;
|
|
59
|
+
/** Access to the underlying monitor instance */
|
|
60
|
+
monitor: any;
|
|
61
|
+
/** Whether running in edge mode */
|
|
62
|
+
isEdgeMode: boolean;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Explicitly create an edge-compatible status monitor
|
|
66
|
+
* Use this when you want to force edge mode regardless of environment
|
|
67
|
+
*/
|
|
68
|
+
export declare function statusMonitorEdge(config?: StatusMonitorConfig): {
|
|
69
|
+
/** Hono middleware for tracking all requests */
|
|
70
|
+
middleware: (c: any, next: () => Promise<void>) => Promise<void>;
|
|
71
|
+
/** Pre-configured Hono routes for dashboard and API */
|
|
72
|
+
routes: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
73
|
+
/** Initialize Socket.io - not available in edge, returns null */
|
|
74
|
+
initSocket: () => any;
|
|
39
75
|
/** Track rate limit events for the dashboard */
|
|
40
76
|
trackRateLimit: (blocked: boolean) => void;
|
|
41
77
|
/** Get current metrics snapshot */
|
|
@@ -50,14 +86,17 @@ export declare function statusMonitor(config?: StatusMonitorConfig): {
|
|
|
50
86
|
trackRequest: (path: string, method: string) => void;
|
|
51
87
|
trackRequestComplete: (path: string, method: string, durationMs: number, statusCode: number) => void;
|
|
52
88
|
trackRateLimitEvent: (blocked: boolean) => void;
|
|
53
|
-
getMetricsSnapshot: (
|
|
89
|
+
getMetricsSnapshot: () => Promise<import("./types.js").MetricsSnapshot>;
|
|
54
90
|
getChartData: () => import("./types.js").ChartData;
|
|
55
91
|
start: () => void;
|
|
56
92
|
stop: () => void;
|
|
57
|
-
initSocket: (
|
|
93
|
+
initSocket: () => null;
|
|
58
94
|
formatUptime: (seconds: number) => string;
|
|
59
|
-
|
|
95
|
+
isEdgeMode: boolean;
|
|
96
|
+
readonly io: null;
|
|
60
97
|
};
|
|
98
|
+
/** Whether running in edge mode */
|
|
99
|
+
isEdgeMode: boolean;
|
|
61
100
|
};
|
|
62
101
|
export default statusMonitor;
|
|
63
102
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtD,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EAClB,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACH,eAAe,EACf,eAAe,EACf,WAAW,EACX,uBAAuB,EAC1B,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,mBAAwB;IAoDtD,gDAAgD;;IAEhD,uDAAuD;;IAEvD,oEAAoE;;IAEpE,gDAAgD;8BACtB,OAAO;IACjC,mCAAmC;;IAEnC,qCAAqC;;IAErC,8BAA8B;;IAE9B,gDAAgD;;IAEhD,mCAAmC;;EAxD1C;AAuID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,mBAAwB;IAzB1D,gDAAgD;oBA5CvB,GAAG,QAAQ,MAAM,OAAO,CAAC,IAAI,CAAC;IA8CvD,uDAAuD;;IAEvD,iEAAiE;sBACvC,GAAG;IAC7B,gDAAgD;8BACtB,OAAO;IACjC,mCAAmC;;IAEnC,qCAAqC;;IAErC,8BAA8B;;IAE9B,gDAAgD;;;;;;;;;;;;;;;IAEhD,mCAAmC;;EAW1C;AAGD,eAAe,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
2
|
// HONO STATUS MONITOR
|
|
3
3
|
// Real-time server monitoring dashboard for Hono.js with WebSocket updates
|
|
4
|
+
// Supports Node.js and Cloudflare Workers/Edge environments
|
|
4
5
|
// =============================================================================
|
|
5
6
|
import { Hono } from 'hono';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { generateDashboard } from './dashboard.js';
|
|
7
|
+
import { detectPlatform } from './platform.js';
|
|
8
|
+
import { createEdgeMonitor } from './monitor-edge.js';
|
|
9
|
+
import { generateDashboard, generateEdgeDashboard } from './dashboard.js';
|
|
9
10
|
// Re-export types
|
|
10
11
|
export * from './types.js';
|
|
12
|
+
export { generateDashboard, generateEdgeDashboard } from './dashboard.js';
|
|
13
|
+
export { createEdgeMonitor } from './monitor-edge.js';
|
|
14
|
+
export { detectPlatform, isNodeEnvironment, isCloudflareEnvironment, isEdgeEnvironment, getPlatformInfo } from './platform.js';
|
|
15
|
+
// Conditionally export Node.js-specific modules
|
|
16
|
+
// These will throw errors if imported in edge environments
|
|
11
17
|
export { createMonitor } from './monitor.js';
|
|
12
18
|
export { createMiddleware } from './middleware.js';
|
|
13
|
-
export { generateDashboard } from './dashboard.js';
|
|
14
19
|
export { isClusterWorker, isClusterMaster, getWorkerId, createClusterAggregator } from './cluster.js';
|
|
15
20
|
/**
|
|
16
21
|
* Create a complete status monitor with routes, middleware, and WebSocket
|
|
22
|
+
* Automatically detects the runtime environment and uses the appropriate implementation
|
|
17
23
|
*
|
|
18
|
-
* @example
|
|
24
|
+
* @example Node.js
|
|
19
25
|
* ```typescript
|
|
20
26
|
* import { Hono } from 'hono';
|
|
21
27
|
* import { serve } from '@hono/node-server';
|
|
@@ -24,23 +30,50 @@ export { isClusterWorker, isClusterMaster, getWorkerId, createClusterAggregator
|
|
|
24
30
|
* const app = new Hono();
|
|
25
31
|
* const monitor = statusMonitor();
|
|
26
32
|
*
|
|
27
|
-
* // Add middleware to track all requests
|
|
28
33
|
* app.use('*', monitor.middleware);
|
|
29
|
-
*
|
|
30
|
-
* // Mount status routes
|
|
31
34
|
* app.route('/status', monitor.routes);
|
|
32
35
|
*
|
|
33
|
-
* // Start server and initialize WebSocket
|
|
34
36
|
* const server = serve({ fetch: app.fetch, port: 3000 });
|
|
35
37
|
* monitor.initSocket(server);
|
|
36
38
|
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example Cloudflare Workers
|
|
41
|
+
* ```typescript
|
|
42
|
+
* import { Hono } from 'hono';
|
|
43
|
+
* import { statusMonitor } from 'hono-status-monitor';
|
|
44
|
+
*
|
|
45
|
+
* const app = new Hono();
|
|
46
|
+
* const monitor = statusMonitor();
|
|
47
|
+
*
|
|
48
|
+
* app.use('*', monitor.middleware);
|
|
49
|
+
* app.route('/status', monitor.routes);
|
|
50
|
+
*
|
|
51
|
+
* export default app;
|
|
52
|
+
* ```
|
|
37
53
|
*/
|
|
38
54
|
export function statusMonitor(config = {}) {
|
|
39
|
-
//
|
|
55
|
+
// Force platform check if specified in config
|
|
56
|
+
const platform = detectPlatform();
|
|
57
|
+
const useNodeVersion = platform === 'node';
|
|
58
|
+
if (useNodeVersion) {
|
|
59
|
+
// Node.js version with full features
|
|
60
|
+
return createNodeStatusMonitor(config);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Edge/Cloudflare version with limited features
|
|
64
|
+
return createEdgeStatusMonitor(config);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create a Node.js status monitor with full features
|
|
69
|
+
* Requires Node.js runtime with os, process, http modules
|
|
70
|
+
*/
|
|
71
|
+
function createNodeStatusMonitor(config = {}) {
|
|
72
|
+
// Dynamic import to avoid loading Node.js modules in edge
|
|
73
|
+
const { createMonitor } = require('./monitor.js');
|
|
74
|
+
const { createMiddleware } = require('./middleware.js');
|
|
40
75
|
const monitor = createMonitor(config);
|
|
41
|
-
// Create middleware
|
|
42
76
|
const middleware = createMiddleware(monitor);
|
|
43
|
-
// Create Hono routes
|
|
44
77
|
const routes = new Hono();
|
|
45
78
|
// Dashboard page
|
|
46
79
|
routes.get('/', async (c) => {
|
|
@@ -78,8 +111,83 @@ export function statusMonitor(config = {}) {
|
|
|
78
111
|
/** Stop metrics collection */
|
|
79
112
|
stop: () => monitor.stop(),
|
|
80
113
|
/** Access to the underlying monitor instance */
|
|
81
|
-
monitor
|
|
114
|
+
monitor,
|
|
115
|
+
/** Whether running in edge mode */
|
|
116
|
+
isEdgeMode: false
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create an edge-compatible status monitor with limited features
|
|
121
|
+
* Works in Cloudflare Workers, Vercel Edge, and other edge runtimes
|
|
122
|
+
*/
|
|
123
|
+
function createEdgeStatusMonitor(config = {}) {
|
|
124
|
+
const monitor = createEdgeMonitor(config);
|
|
125
|
+
const routes = new Hono();
|
|
126
|
+
// Create middleware for edge
|
|
127
|
+
const middleware = async (c, next) => {
|
|
128
|
+
const path = new URL(c.req.url).pathname;
|
|
129
|
+
const method = c.req.method;
|
|
130
|
+
// Skip status route itself
|
|
131
|
+
if (path.startsWith(config.path || '/status')) {
|
|
132
|
+
return next();
|
|
133
|
+
}
|
|
134
|
+
const start = performance.now();
|
|
135
|
+
monitor.trackRequest(path, method);
|
|
136
|
+
try {
|
|
137
|
+
await next();
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
const duration = performance.now() - start;
|
|
141
|
+
const status = c.res?.status || 200;
|
|
142
|
+
monitor.trackRequestComplete(path, method, duration, status);
|
|
143
|
+
}
|
|
82
144
|
};
|
|
145
|
+
// Dashboard page - uses polling mode
|
|
146
|
+
routes.get('/', async (c) => {
|
|
147
|
+
const snapshot = await monitor.getMetricsSnapshot();
|
|
148
|
+
const html = generateEdgeDashboard({
|
|
149
|
+
hostname: snapshot.hostname,
|
|
150
|
+
uptime: monitor.formatUptime(snapshot.uptime),
|
|
151
|
+
title: monitor.config.title
|
|
152
|
+
});
|
|
153
|
+
return c.html(html);
|
|
154
|
+
});
|
|
155
|
+
// JSON API endpoint
|
|
156
|
+
routes.get('/api/metrics', async (c) => {
|
|
157
|
+
return c.json({
|
|
158
|
+
snapshot: await monitor.getMetricsSnapshot(),
|
|
159
|
+
charts: monitor.getChartData()
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
// Start (no-op in edge mode)
|
|
163
|
+
monitor.start();
|
|
164
|
+
return {
|
|
165
|
+
/** Hono middleware for tracking all requests */
|
|
166
|
+
middleware,
|
|
167
|
+
/** Pre-configured Hono routes for dashboard and API */
|
|
168
|
+
routes,
|
|
169
|
+
/** Initialize Socket.io - not available in edge, returns null */
|
|
170
|
+
initSocket: () => null,
|
|
171
|
+
/** Track rate limit events for the dashboard */
|
|
172
|
+
trackRateLimit: (blocked) => monitor.trackRateLimitEvent(blocked),
|
|
173
|
+
/** Get current metrics snapshot */
|
|
174
|
+
getMetrics: () => monitor.getMetricsSnapshot(),
|
|
175
|
+
/** Get chart data for all metrics */
|
|
176
|
+
getCharts: () => monitor.getChartData(),
|
|
177
|
+
/** Stop metrics collection */
|
|
178
|
+
stop: () => monitor.stop(),
|
|
179
|
+
/** Access to the underlying monitor instance */
|
|
180
|
+
monitor,
|
|
181
|
+
/** Whether running in edge mode */
|
|
182
|
+
isEdgeMode: true
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Explicitly create an edge-compatible status monitor
|
|
187
|
+
* Use this when you want to force edge mode regardless of environment
|
|
188
|
+
*/
|
|
189
|
+
export function statusMonitorEdge(config = {}) {
|
|
190
|
+
return createEdgeStatusMonitor(config);
|
|
83
191
|
}
|
|
84
192
|
// Default export
|
|
85
193
|
export default statusMonitor;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,sBAAsB;AACtB,2EAA2E;AAC3E,gFAAgF;AAEhF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { StatusMonitorConfig, MetricsSnapshot, ChartData } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create an edge-compatible status monitor instance
|
|
4
|
+
* Works without Node.js APIs (os, process, cluster)
|
|
5
|
+
*/
|
|
6
|
+
export declare function createEdgeMonitor(userConfig?: StatusMonitorConfig): {
|
|
7
|
+
config: Required<StatusMonitorConfig>;
|
|
8
|
+
trackRequest: (path: string, method: string) => void;
|
|
9
|
+
trackRequestComplete: (path: string, method: string, durationMs: number, statusCode: number) => void;
|
|
10
|
+
trackRateLimitEvent: (blocked: boolean) => void;
|
|
11
|
+
getMetricsSnapshot: () => Promise<MetricsSnapshot>;
|
|
12
|
+
getChartData: () => ChartData;
|
|
13
|
+
start: () => void;
|
|
14
|
+
stop: () => void;
|
|
15
|
+
initSocket: () => null;
|
|
16
|
+
formatUptime: (seconds: number) => string;
|
|
17
|
+
isEdgeMode: boolean;
|
|
18
|
+
readonly io: null;
|
|
19
|
+
};
|
|
20
|
+
export type EdgeMonitor = ReturnType<typeof createEdgeMonitor>;
|
|
21
|
+
//# sourceMappingURL=monitor-edge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor-edge.d.ts","sourceRoot":"","sources":["../src/monitor-edge.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACR,mBAAmB,EAOnB,eAAe,EACf,SAAS,EACZ,MAAM,YAAY,CAAC;AAkCpB;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,GAAE,mBAAwB;;yBAyKtC,MAAM,UAAU,MAAM,KAAG,IAAI;iCA2B/C,MAAM,UACJ,MAAM,cACF,MAAM,cACN,MAAM,KACnB,IAAI;mCAkD+B,OAAO,KAAG,IAAI;8BAQf,OAAO,CAAC,eAAe,CAAC;wBAgEpC,SAAS;iBAgChB,IAAI;gBAKL,IAAI;sBAME,IAAI;4BA3BI,MAAM,KAAG,MAAM;;;EA8CjD;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|