@forinda/kickjs-devtools 1.3.1 → 1.4.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.
- package/dist/adapter.d.ts +109 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/devtools/index.html +575 -0
- package/dist/devtools/tailwind.global.js +897 -0
- package/dist/devtools/vue.global.min.js +25 -0
- package/dist/index.d.ts +3 -110
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +205 -1
- package/package.json +7 -6
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { type AppAdapter, type AdapterMiddleware, type Container, type Ref, type ComputedRef } from '@forinda/kickjs-core';
|
|
2
|
+
/** Per-route latency stats */
|
|
3
|
+
interface RouteStats {
|
|
4
|
+
count: number;
|
|
5
|
+
totalMs: number;
|
|
6
|
+
minMs: number;
|
|
7
|
+
maxMs: number;
|
|
8
|
+
}
|
|
9
|
+
export interface DevToolsOptions {
|
|
10
|
+
/** Base path for debug endpoints (default: '/_debug') */
|
|
11
|
+
basePath?: string;
|
|
12
|
+
/** Only enable when this is true (default: process.env.NODE_ENV !== 'production') */
|
|
13
|
+
enabled?: boolean;
|
|
14
|
+
/** Include environment variables (sanitized) at /_debug/config (default: false) */
|
|
15
|
+
exposeConfig?: boolean;
|
|
16
|
+
/** Env var prefixes to expose (default: ['APP_', 'NODE_ENV']). Others are redacted. */
|
|
17
|
+
configPrefixes?: string[];
|
|
18
|
+
/** Callback when error rate exceeds threshold */
|
|
19
|
+
onErrorRateExceeded?: (rate: number) => void;
|
|
20
|
+
/** Error rate threshold (default: 0.5 = 50%) */
|
|
21
|
+
errorRateThreshold?: number;
|
|
22
|
+
/** Other adapters to discover stats from (e.g., WsAdapter) */
|
|
23
|
+
adapters?: any[];
|
|
24
|
+
/**
|
|
25
|
+
* Secret token to guard DevTools access. When set, all requests must
|
|
26
|
+
* include this token as `x-devtools-token` header or `?token=` query param.
|
|
27
|
+
*
|
|
28
|
+
* Auto-generated on startup if not provided. The token is logged to the console.
|
|
29
|
+
* Set to `false` to disable the guard entirely (not recommended).
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* new DevToolsAdapter({ secret: process.env.DEVTOOLS_SECRET })
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
secret?: string | false;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* DevToolsAdapter — Vue-style reactive introspection for KickJS applications.
|
|
40
|
+
*
|
|
41
|
+
* Exposes debug endpoints powered by reactive state (ref, computed, watch):
|
|
42
|
+
* - `GET /_debug/routes` — all registered routes with middleware
|
|
43
|
+
* - `GET /_debug/container` — DI registry with scopes and instantiation status
|
|
44
|
+
* - `GET /_debug/metrics` — live request/error counts, error rate, uptime
|
|
45
|
+
* - `GET /_debug/health` — deep health check with adapter status
|
|
46
|
+
* - `GET /_debug/config` — sanitized environment variables (opt-in)
|
|
47
|
+
* - `GET /_debug/state` — full reactive state snapshot
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* import { DevToolsAdapter } from '@forinda/kickjs-devtools'
|
|
52
|
+
*
|
|
53
|
+
* bootstrap({
|
|
54
|
+
* modules: [UserModule],
|
|
55
|
+
* adapters: [
|
|
56
|
+
* new DevToolsAdapter({
|
|
57
|
+
* enabled: process.env.NODE_ENV !== 'production',
|
|
58
|
+
* exposeConfig: true,
|
|
59
|
+
* configPrefixes: ['APP_', 'DATABASE_'],
|
|
60
|
+
* }),
|
|
61
|
+
* ],
|
|
62
|
+
* })
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare class DevToolsAdapter implements AppAdapter {
|
|
66
|
+
readonly name = "DevToolsAdapter";
|
|
67
|
+
private basePath;
|
|
68
|
+
private enabled;
|
|
69
|
+
private exposeConfig;
|
|
70
|
+
private configPrefixes;
|
|
71
|
+
private errorRateThreshold;
|
|
72
|
+
private secret;
|
|
73
|
+
/** Total requests received */
|
|
74
|
+
readonly requestCount: Ref<number>;
|
|
75
|
+
/** Total responses with status >= 500 */
|
|
76
|
+
readonly errorCount: Ref<number>;
|
|
77
|
+
/** Total responses with status >= 400 and < 500 */
|
|
78
|
+
readonly clientErrorCount: Ref<number>;
|
|
79
|
+
/** Server start time */
|
|
80
|
+
readonly startedAt: Ref<number>;
|
|
81
|
+
/** Computed error rate (server errors / total requests) */
|
|
82
|
+
readonly errorRate: ComputedRef<number>;
|
|
83
|
+
/** Computed uptime in seconds */
|
|
84
|
+
readonly uptimeSeconds: ComputedRef<number>;
|
|
85
|
+
/** Per-route latency tracking */
|
|
86
|
+
readonly routeLatency: Record<string, RouteStats>;
|
|
87
|
+
private routes;
|
|
88
|
+
private container;
|
|
89
|
+
private appRef;
|
|
90
|
+
private adapterStatuses;
|
|
91
|
+
private stopErrorWatch;
|
|
92
|
+
private peerAdapters;
|
|
93
|
+
constructor(options?: DevToolsOptions);
|
|
94
|
+
/**
|
|
95
|
+
* Resolve peer adapters at request time. Prefers live adapters from the
|
|
96
|
+
* Application registry (survives HMR rebuild) and falls back to the
|
|
97
|
+
* constructor-provided refs.
|
|
98
|
+
*/
|
|
99
|
+
private getPeerAdapters;
|
|
100
|
+
beforeMount(app: any, container: Container): void;
|
|
101
|
+
middleware(): AdapterMiddleware[];
|
|
102
|
+
onRouteMount(controllerClass: any, mountPath: string): void;
|
|
103
|
+
afterStart(_server: any, _container: Container): void;
|
|
104
|
+
shutdown(): void;
|
|
105
|
+
/** Find the public/devtools directory relative to the built dist or source */
|
|
106
|
+
private resolvePublicDir;
|
|
107
|
+
}
|
|
108
|
+
export {};
|
|
109
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAOd,KAAK,GAAG,EACR,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAa7B,8BAA8B;AAC9B,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,iDAAiD;IACjD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAA;IAEhB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,CAAC,IAAI,qBAAoB;IAEjC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,MAAM,CAAgB;IAG9B,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAClC,yCAAyC;IACzC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,mDAAmD;IACnD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACtC,wBAAwB;IACxB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACvC,iCAAiC;IACjC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC3C,iCAAiC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAGjD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,YAAY,CAAY;gBAEpB,OAAO,GAAE,eAAoB;IAmDzC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IA4JjD,UAAU,IAAI,iBAAiB,EAAE;IAuCjC,YAAY,CAAC,eAAe,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA8B3D,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,GAAG,IAAI;IAQrD,QAAQ,IAAI,IAAI;IAKhB,8EAA8E;IAC9E,OAAO,CAAC,gBAAgB;CAYzB"}
|