@alepha/devtools 0.10.2
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/LICENSE +21 -0
- package/README.md +30 -0
- package/dist/index.d.ts +367 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +350 -0
- package/dist/index.js.map +1 -0
- package/package.json +58 -0
- package/src/DevCollectorProvider.ts +244 -0
- package/src/index.ts +35 -0
- package/src/schemas/DevActionMetadata.ts +22 -0
- package/src/schemas/DevBucketMetadata.ts +11 -0
- package/src/schemas/DevCacheMetadata.ts +10 -0
- package/src/schemas/DevLogEntry.ts +11 -0
- package/src/schemas/DevMetadata.ts +29 -0
- package/src/schemas/DevModuleMetadata.ts +8 -0
- package/src/schemas/DevPageMetadata.ts +21 -0
- package/src/schemas/DevProviderMetadata.ts +10 -0
- package/src/schemas/DevQueueMetadata.ts +10 -0
- package/src/schemas/DevRealmMetadata.ts +19 -0
- package/src/schemas/DevSchedulerMetadata.ts +11 -0
- package/src/schemas/DevTopicMetadata.ts +10 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import { $hook, $inject, $module, Alepha, t } from "@alepha/core";
|
|
2
|
+
import { $bucket } from "@alepha/bucket";
|
|
3
|
+
import { $cache } from "@alepha/cache";
|
|
4
|
+
import { $queue } from "@alepha/queue";
|
|
5
|
+
import { $page } from "@alepha/react";
|
|
6
|
+
import { $scheduler } from "@alepha/scheduler";
|
|
7
|
+
import { $realm } from "@alepha/security";
|
|
8
|
+
import { $action, $route } from "@alepha/server";
|
|
9
|
+
import { $topic } from "@alepha/topic";
|
|
10
|
+
|
|
11
|
+
//#region src/schemas/DevActionMetadata.ts
|
|
12
|
+
const devActionMetadataSchema = t.object({
|
|
13
|
+
name: t.string(),
|
|
14
|
+
group: t.string(),
|
|
15
|
+
method: t.string(),
|
|
16
|
+
path: t.string(),
|
|
17
|
+
prefix: t.string(),
|
|
18
|
+
fullPath: t.string(),
|
|
19
|
+
description: t.optional(t.string()),
|
|
20
|
+
summary: t.optional(t.string()),
|
|
21
|
+
disabled: t.optional(t.boolean()),
|
|
22
|
+
secure: t.optional(t.boolean()),
|
|
23
|
+
hide: t.optional(t.boolean()),
|
|
24
|
+
body: t.optional(t.any()),
|
|
25
|
+
params: t.optional(t.any()),
|
|
26
|
+
query: t.optional(t.any()),
|
|
27
|
+
response: t.optional(t.any()),
|
|
28
|
+
bodyContentType: t.optional(t.string())
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/schemas/DevBucketMetadata.ts
|
|
33
|
+
const devBucketMetadataSchema = t.object({
|
|
34
|
+
name: t.string(),
|
|
35
|
+
description: t.optional(t.string()),
|
|
36
|
+
mimeTypes: t.optional(t.array(t.string())),
|
|
37
|
+
maxSize: t.optional(t.number()),
|
|
38
|
+
provider: t.string()
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
//#region src/schemas/DevCacheMetadata.ts
|
|
43
|
+
const devCacheMetadataSchema = t.object({
|
|
44
|
+
name: t.string(),
|
|
45
|
+
ttl: t.optional(t.any()),
|
|
46
|
+
disabled: t.optional(t.boolean()),
|
|
47
|
+
provider: t.string()
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
//#endregion
|
|
51
|
+
//#region src/schemas/DevLogEntry.ts
|
|
52
|
+
const devLogEntrySchema = t.object({
|
|
53
|
+
formatted: t.string(),
|
|
54
|
+
entry: t.any()
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
//#endregion
|
|
58
|
+
//#region src/schemas/DevModuleMetadata.ts
|
|
59
|
+
const devModuleMetadataSchema = t.object({
|
|
60
|
+
name: t.string(),
|
|
61
|
+
providers: t.array(t.string())
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region src/schemas/DevPageMetadata.ts
|
|
66
|
+
const devPageMetadataSchema = t.object({
|
|
67
|
+
name: t.string(),
|
|
68
|
+
description: t.optional(t.string()),
|
|
69
|
+
path: t.optional(t.string()),
|
|
70
|
+
params: t.optional(t.any()),
|
|
71
|
+
query: t.optional(t.any()),
|
|
72
|
+
hasComponent: t.boolean(),
|
|
73
|
+
hasLazy: t.boolean(),
|
|
74
|
+
hasResolve: t.boolean(),
|
|
75
|
+
hasChildren: t.boolean(),
|
|
76
|
+
hasParent: t.boolean(),
|
|
77
|
+
hasErrorHandler: t.boolean(),
|
|
78
|
+
static: t.optional(t.boolean()),
|
|
79
|
+
cache: t.optional(t.any()),
|
|
80
|
+
client: t.optional(t.any()),
|
|
81
|
+
animation: t.optional(t.any())
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/schemas/DevProviderMetadata.ts
|
|
86
|
+
const devProviderMetadataSchema = t.object({
|
|
87
|
+
name: t.string(),
|
|
88
|
+
module: t.optional(t.string()),
|
|
89
|
+
dependencies: t.array(t.string()),
|
|
90
|
+
aliases: t.optional(t.array(t.string()))
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region src/schemas/DevQueueMetadata.ts
|
|
95
|
+
const devQueueMetadataSchema = t.object({
|
|
96
|
+
name: t.string(),
|
|
97
|
+
description: t.optional(t.string()),
|
|
98
|
+
schema: t.optional(t.any()),
|
|
99
|
+
provider: t.string()
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
//#endregion
|
|
103
|
+
//#region src/schemas/DevRealmMetadata.ts
|
|
104
|
+
const devRealmMetadataSchema = t.object({
|
|
105
|
+
name: t.string(),
|
|
106
|
+
description: t.optional(t.string()),
|
|
107
|
+
roles: t.optional(t.array(t.any())),
|
|
108
|
+
type: t.enum(["internal", "external"]),
|
|
109
|
+
settings: t.optional(t.object({
|
|
110
|
+
accessTokenExpiration: t.optional(t.any()),
|
|
111
|
+
refreshTokenExpiration: t.optional(t.any()),
|
|
112
|
+
hasOnCreateSession: t.boolean(),
|
|
113
|
+
hasOnRefreshSession: t.boolean(),
|
|
114
|
+
hasOnDeleteSession: t.boolean()
|
|
115
|
+
}))
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
//#endregion
|
|
119
|
+
//#region src/schemas/DevSchedulerMetadata.ts
|
|
120
|
+
const devSchedulerMetadataSchema = t.object({
|
|
121
|
+
name: t.string(),
|
|
122
|
+
description: t.optional(t.string()),
|
|
123
|
+
cron: t.optional(t.string()),
|
|
124
|
+
interval: t.optional(t.any()),
|
|
125
|
+
lock: t.optional(t.boolean())
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
//#endregion
|
|
129
|
+
//#region src/schemas/DevTopicMetadata.ts
|
|
130
|
+
const devTopicMetadataSchema = t.object({
|
|
131
|
+
name: t.string(),
|
|
132
|
+
description: t.optional(t.string()),
|
|
133
|
+
schema: t.optional(t.any()),
|
|
134
|
+
provider: t.string()
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
//#endregion
|
|
138
|
+
//#region src/schemas/DevMetadata.ts
|
|
139
|
+
const devMetadataSchema = t.object({
|
|
140
|
+
logs: t.array(devLogEntrySchema),
|
|
141
|
+
actions: t.array(devActionMetadataSchema),
|
|
142
|
+
queues: t.array(devQueueMetadataSchema),
|
|
143
|
+
schedulers: t.array(devSchedulerMetadataSchema),
|
|
144
|
+
topics: t.array(devTopicMetadataSchema),
|
|
145
|
+
buckets: t.array(devBucketMetadataSchema),
|
|
146
|
+
realms: t.array(devRealmMetadataSchema),
|
|
147
|
+
caches: t.array(devCacheMetadataSchema),
|
|
148
|
+
pages: t.array(devPageMetadataSchema),
|
|
149
|
+
providers: t.array(devProviderMetadataSchema),
|
|
150
|
+
modules: t.array(devModuleMetadataSchema)
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
//#endregion
|
|
154
|
+
//#region src/DevCollectorProvider.ts
|
|
155
|
+
var DevCollectorProvider = class {
|
|
156
|
+
alepha = $inject(Alepha);
|
|
157
|
+
logs = [];
|
|
158
|
+
maxLogs = 1e3;
|
|
159
|
+
onLog = $hook({
|
|
160
|
+
on: "log",
|
|
161
|
+
handler: (ev) => {
|
|
162
|
+
this.logs.push({
|
|
163
|
+
formatted: ev.message,
|
|
164
|
+
entry: ev.entry
|
|
165
|
+
});
|
|
166
|
+
if (this.logs.length > this.maxLogs) this.logs.shift();
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
getLogs() {
|
|
170
|
+
return this.logs;
|
|
171
|
+
}
|
|
172
|
+
getActions() {
|
|
173
|
+
const actionDescriptors = this.alepha.descriptors($action);
|
|
174
|
+
return actionDescriptors.map((action) => {
|
|
175
|
+
const schema = action.schema;
|
|
176
|
+
const options = action.options;
|
|
177
|
+
return {
|
|
178
|
+
name: action.name,
|
|
179
|
+
group: action.group,
|
|
180
|
+
method: action.method,
|
|
181
|
+
path: action.path,
|
|
182
|
+
prefix: action.prefix,
|
|
183
|
+
fullPath: action.route.path,
|
|
184
|
+
description: action.options.description,
|
|
185
|
+
summary: options.summary,
|
|
186
|
+
disabled: action.options.disabled,
|
|
187
|
+
secure: options.secure,
|
|
188
|
+
hide: options.hide,
|
|
189
|
+
body: schema?.body,
|
|
190
|
+
params: schema?.params,
|
|
191
|
+
query: schema?.query,
|
|
192
|
+
response: schema?.response,
|
|
193
|
+
bodyContentType: action.getBodyContentType()
|
|
194
|
+
};
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
getQueues() {
|
|
198
|
+
const queueDescriptors = this.alepha.descriptors($queue);
|
|
199
|
+
return queueDescriptors.map((queue) => ({
|
|
200
|
+
name: queue.name,
|
|
201
|
+
description: queue.options.description,
|
|
202
|
+
schema: queue.options.schema,
|
|
203
|
+
provider: this.getProviderName(queue.options.provider)
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
206
|
+
getSchedulers() {
|
|
207
|
+
const schedulerDescriptors = this.alepha.descriptors($scheduler);
|
|
208
|
+
return schedulerDescriptors.map((scheduler) => ({
|
|
209
|
+
name: scheduler.name,
|
|
210
|
+
description: scheduler.options.description,
|
|
211
|
+
cron: scheduler.options.cron,
|
|
212
|
+
interval: scheduler.options.interval,
|
|
213
|
+
lock: scheduler.options.lock
|
|
214
|
+
}));
|
|
215
|
+
}
|
|
216
|
+
getTopics() {
|
|
217
|
+
const topicDescriptors = this.alepha.descriptors($topic);
|
|
218
|
+
return topicDescriptors.map((topic) => ({
|
|
219
|
+
name: topic.name,
|
|
220
|
+
description: topic.options.description,
|
|
221
|
+
schema: topic.options.schema,
|
|
222
|
+
provider: this.getProviderName(topic.options.provider)
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
getBuckets() {
|
|
226
|
+
const bucketDescriptors = this.alepha.descriptors($bucket);
|
|
227
|
+
return bucketDescriptors.map((bucket) => ({
|
|
228
|
+
name: bucket.name,
|
|
229
|
+
description: bucket.options.description,
|
|
230
|
+
mimeTypes: bucket.options.mimeTypes,
|
|
231
|
+
maxSize: bucket.options.maxSize,
|
|
232
|
+
provider: this.getProviderName(bucket.options.provider)
|
|
233
|
+
}));
|
|
234
|
+
}
|
|
235
|
+
getRealms() {
|
|
236
|
+
const realmDescriptors = this.alepha.descriptors($realm);
|
|
237
|
+
return realmDescriptors.map((realm) => ({
|
|
238
|
+
name: realm.name,
|
|
239
|
+
description: realm.options.description,
|
|
240
|
+
roles: realm.options.roles,
|
|
241
|
+
type: "secret" in realm.options ? "internal" : "external",
|
|
242
|
+
settings: {
|
|
243
|
+
accessTokenExpiration: realm.options.settings?.accessToken?.expiration,
|
|
244
|
+
refreshTokenExpiration: realm.options.settings?.refreshToken?.expiration,
|
|
245
|
+
hasOnCreateSession: !!realm.options.settings?.onCreateSession,
|
|
246
|
+
hasOnRefreshSession: !!realm.options.settings?.onRefreshSession,
|
|
247
|
+
hasOnDeleteSession: !!realm.options.settings?.onDeleteSession
|
|
248
|
+
}
|
|
249
|
+
}));
|
|
250
|
+
}
|
|
251
|
+
getCaches() {
|
|
252
|
+
const cacheDescriptors = this.alepha.descriptors($cache);
|
|
253
|
+
return cacheDescriptors.map((cache) => ({
|
|
254
|
+
name: cache.container,
|
|
255
|
+
ttl: cache.options.ttl,
|
|
256
|
+
disabled: cache.options.disabled,
|
|
257
|
+
provider: this.getProviderName(cache.options.provider)
|
|
258
|
+
}));
|
|
259
|
+
}
|
|
260
|
+
getPages() {
|
|
261
|
+
const pageDescriptors = this.alepha.descriptors($page);
|
|
262
|
+
return pageDescriptors.map((page) => ({
|
|
263
|
+
name: page.name,
|
|
264
|
+
description: page.options.description,
|
|
265
|
+
path: page.options.path,
|
|
266
|
+
params: page.options.schema?.params,
|
|
267
|
+
query: page.options.schema?.query,
|
|
268
|
+
hasComponent: !!page.options.component,
|
|
269
|
+
hasLazy: !!page.options.lazy,
|
|
270
|
+
hasResolve: !!page.options.resolve,
|
|
271
|
+
hasChildren: !!page.options.children,
|
|
272
|
+
hasParent: !!page.options.parent,
|
|
273
|
+
hasErrorHandler: !!page.options.errorHandler,
|
|
274
|
+
static: typeof page.options.static === "boolean" ? page.options.static : !!page.options.static,
|
|
275
|
+
cache: page.options.cache,
|
|
276
|
+
client: page.options.client,
|
|
277
|
+
animation: page.options.animation
|
|
278
|
+
}));
|
|
279
|
+
}
|
|
280
|
+
getProviders() {
|
|
281
|
+
const graph = this.alepha.graph();
|
|
282
|
+
return Object.entries(graph).map(([name, info]) => ({
|
|
283
|
+
name,
|
|
284
|
+
module: info.module,
|
|
285
|
+
dependencies: info.from,
|
|
286
|
+
aliases: info.as
|
|
287
|
+
}));
|
|
288
|
+
}
|
|
289
|
+
getModules() {
|
|
290
|
+
const graph = this.alepha.graph();
|
|
291
|
+
const moduleMap = /* @__PURE__ */ new Map();
|
|
292
|
+
for (const [providerName, info] of Object.entries(graph)) if (info.module) {
|
|
293
|
+
if (!moduleMap.has(info.module)) moduleMap.set(info.module, /* @__PURE__ */ new Set());
|
|
294
|
+
moduleMap.get(info.module).add(providerName);
|
|
295
|
+
}
|
|
296
|
+
return Array.from(moduleMap.entries()).map(([name, providers]) => ({
|
|
297
|
+
name,
|
|
298
|
+
providers: Array.from(providers)
|
|
299
|
+
}));
|
|
300
|
+
}
|
|
301
|
+
getMetadata() {
|
|
302
|
+
return {
|
|
303
|
+
logs: this.getLogs(),
|
|
304
|
+
actions: this.getActions(),
|
|
305
|
+
queues: this.getQueues(),
|
|
306
|
+
schedulers: this.getSchedulers(),
|
|
307
|
+
topics: this.getTopics(),
|
|
308
|
+
buckets: this.getBuckets(),
|
|
309
|
+
realms: this.getRealms(),
|
|
310
|
+
caches: this.getCaches(),
|
|
311
|
+
pages: this.getPages(),
|
|
312
|
+
providers: this.getProviders(),
|
|
313
|
+
modules: this.getModules()
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
metadataRoute = $route({
|
|
317
|
+
method: "GET",
|
|
318
|
+
path: "/_devtools/metadata",
|
|
319
|
+
schema: { response: devMetadataSchema },
|
|
320
|
+
handler: () => {
|
|
321
|
+
return this.getMetadata();
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
getProviderName(provider) {
|
|
325
|
+
if (!provider) return "default";
|
|
326
|
+
if (provider === "memory") return "memory";
|
|
327
|
+
return provider.name || "custom";
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
//#endregion
|
|
332
|
+
//#region src/index.ts
|
|
333
|
+
/**
|
|
334
|
+
* Developer tools module for monitoring and debugging Alepha applications.
|
|
335
|
+
*
|
|
336
|
+
* This module provides comprehensive data collection capabilities for tracking application behavior,
|
|
337
|
+
* performance metrics, and debugging information in real-time.
|
|
338
|
+
*
|
|
339
|
+
* @see {@link DevCollectorProvider}
|
|
340
|
+
* @module alepha.devtools
|
|
341
|
+
*/
|
|
342
|
+
const AlephaDevtools = $module({
|
|
343
|
+
name: "alepha.devtools",
|
|
344
|
+
descriptors: [],
|
|
345
|
+
services: [DevCollectorProvider]
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
//#endregion
|
|
349
|
+
export { AlephaDevtools, DevCollectorProvider, devActionMetadataSchema, devBucketMetadataSchema, devCacheMetadataSchema, devLogEntrySchema, devMetadataSchema, devModuleMetadataSchema, devPageMetadataSchema, devProviderMetadataSchema, devQueueMetadataSchema, devRealmMetadataSchema, devSchedulerMetadataSchema, devTopicMetadataSchema };
|
|
350
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/schemas/DevActionMetadata.ts","../src/schemas/DevBucketMetadata.ts","../src/schemas/DevCacheMetadata.ts","../src/schemas/DevLogEntry.ts","../src/schemas/DevModuleMetadata.ts","../src/schemas/DevPageMetadata.ts","../src/schemas/DevProviderMetadata.ts","../src/schemas/DevQueueMetadata.ts","../src/schemas/DevRealmMetadata.ts","../src/schemas/DevSchedulerMetadata.ts","../src/schemas/DevTopicMetadata.ts","../src/schemas/DevMetadata.ts","../src/DevCollectorProvider.ts","../src/index.ts"],"sourcesContent":["import { type Static, t } from \"@alepha/core\";\n\nexport const devActionMetadataSchema = t.object({\n\tname: t.string(),\n\tgroup: t.string(),\n\tmethod: t.string(),\n\tpath: t.string(),\n\tprefix: t.string(),\n\tfullPath: t.string(),\n\tdescription: t.optional(t.string()),\n\tsummary: t.optional(t.string()),\n\tdisabled: t.optional(t.boolean()),\n\tsecure: t.optional(t.boolean()),\n\thide: t.optional(t.boolean()),\n\tbody: t.optional(t.any()),\n\tparams: t.optional(t.any()),\n\tquery: t.optional(t.any()),\n\tresponse: t.optional(t.any()),\n\tbodyContentType: t.optional(t.string()),\n});\n\nexport type DevActionMetadata = Static<typeof devActionMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\n\nexport const devBucketMetadataSchema = t.object({\n\tname: t.string(),\n\tdescription: t.optional(t.string()),\n\tmimeTypes: t.optional(t.array(t.string())),\n\tmaxSize: t.optional(t.number()),\n\tprovider: t.string(),\n});\n\nexport type DevBucketMetadata = Static<typeof devBucketMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\n\nexport const devCacheMetadataSchema = t.object({\n\tname: t.string(),\n\tttl: t.optional(t.any()),\n\tdisabled: t.optional(t.boolean()),\n\tprovider: t.string(),\n});\n\nexport type DevCacheMetadata = Static<typeof devCacheMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\nimport type { LogEntry } from \"@alepha/logger\";\n\nexport const devLogEntrySchema = t.object({\n\tformatted: t.string(),\n\tentry: t.any(), // Use any since LogEntry has Date instead of string for timestamp\n});\n\nexport type DevLogEntry = Static<typeof devLogEntrySchema> & {\n\tentry: LogEntry;\n};\n","import { type Static, t } from \"@alepha/core\";\n\nexport const devModuleMetadataSchema = t.object({\n\tname: t.string(),\n\tproviders: t.array(t.string()),\n});\n\nexport type DevModuleMetadata = Static<typeof devModuleMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\n\nexport const devPageMetadataSchema = t.object({\n\tname: t.string(),\n\tdescription: t.optional(t.string()),\n\tpath: t.optional(t.string()),\n\tparams: t.optional(t.any()),\n\tquery: t.optional(t.any()),\n\thasComponent: t.boolean(),\n\thasLazy: t.boolean(),\n\thasResolve: t.boolean(),\n\thasChildren: t.boolean(),\n\thasParent: t.boolean(),\n\thasErrorHandler: t.boolean(),\n\tstatic: t.optional(t.boolean()),\n\tcache: t.optional(t.any()),\n\tclient: t.optional(t.any()),\n\tanimation: t.optional(t.any()),\n});\n\nexport type DevPageMetadata = Static<typeof devPageMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\n\nexport const devProviderMetadataSchema = t.object({\n\tname: t.string(),\n\tmodule: t.optional(t.string()),\n\tdependencies: t.array(t.string()),\n\taliases: t.optional(t.array(t.string())),\n});\n\nexport type DevProviderMetadata = Static<typeof devProviderMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\n\nexport const devQueueMetadataSchema = t.object({\n\tname: t.string(),\n\tdescription: t.optional(t.string()),\n\tschema: t.optional(t.any()),\n\tprovider: t.string(),\n});\n\nexport type DevQueueMetadata = Static<typeof devQueueMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\n\nexport const devRealmMetadataSchema = t.object({\n\tname: t.string(),\n\tdescription: t.optional(t.string()),\n\troles: t.optional(t.array(t.any())),\n\ttype: t.enum([\"internal\", \"external\"]),\n\tsettings: t.optional(\n\t\tt.object({\n\t\t\taccessTokenExpiration: t.optional(t.any()),\n\t\t\trefreshTokenExpiration: t.optional(t.any()),\n\t\t\thasOnCreateSession: t.boolean(),\n\t\t\thasOnRefreshSession: t.boolean(),\n\t\t\thasOnDeleteSession: t.boolean(),\n\t\t}),\n\t),\n});\n\nexport type DevRealmMetadata = Static<typeof devRealmMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\n\nexport const devSchedulerMetadataSchema = t.object({\n\tname: t.string(),\n\tdescription: t.optional(t.string()),\n\tcron: t.optional(t.string()),\n\tinterval: t.optional(t.any()),\n\tlock: t.optional(t.boolean()),\n});\n\nexport type DevSchedulerMetadata = Static<typeof devSchedulerMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\n\nexport const devTopicMetadataSchema = t.object({\n\tname: t.string(),\n\tdescription: t.optional(t.string()),\n\tschema: t.optional(t.any()),\n\tprovider: t.string(),\n});\n\nexport type DevTopicMetadata = Static<typeof devTopicMetadataSchema>;\n","import { type Static, t } from \"@alepha/core\";\nimport { devActionMetadataSchema } from \"./DevActionMetadata.ts\";\nimport { devBucketMetadataSchema } from \"./DevBucketMetadata.ts\";\nimport { devCacheMetadataSchema } from \"./DevCacheMetadata.ts\";\nimport { devLogEntrySchema } from \"./DevLogEntry.ts\";\nimport { devModuleMetadataSchema } from \"./DevModuleMetadata.ts\";\nimport { devPageMetadataSchema } from \"./DevPageMetadata.ts\";\nimport { devProviderMetadataSchema } from \"./DevProviderMetadata.ts\";\nimport { devQueueMetadataSchema } from \"./DevQueueMetadata.ts\";\nimport { devRealmMetadataSchema } from \"./DevRealmMetadata.ts\";\nimport { devSchedulerMetadataSchema } from \"./DevSchedulerMetadata.ts\";\nimport { devTopicMetadataSchema } from \"./DevTopicMetadata.ts\";\n\nexport const devMetadataSchema = t.object({\n\tlogs: t.array(devLogEntrySchema),\n\tactions: t.array(devActionMetadataSchema),\n\tqueues: t.array(devQueueMetadataSchema),\n\tschedulers: t.array(devSchedulerMetadataSchema),\n\ttopics: t.array(devTopicMetadataSchema),\n\tbuckets: t.array(devBucketMetadataSchema),\n\trealms: t.array(devRealmMetadataSchema),\n\tcaches: t.array(devCacheMetadataSchema),\n\tpages: t.array(devPageMetadataSchema),\n\tproviders: t.array(devProviderMetadataSchema),\n\tmodules: t.array(devModuleMetadataSchema),\n\t// More metadata will be added here later\n});\n\nexport type DevMetadata = Static<typeof devMetadataSchema>;\n","import { $bucket } from \"@alepha/bucket\";\nimport { $cache } from \"@alepha/cache\";\nimport { $hook, $inject, Alepha } from \"@alepha/core\";\nimport type { LogEntry } from \"@alepha/logger\";\nimport { $queue } from \"@alepha/queue\";\nimport { $page } from \"@alepha/react\";\nimport { $scheduler } from \"@alepha/scheduler\";\nimport { $realm } from \"@alepha/security\";\nimport { $action, $route } from \"@alepha/server\";\nimport { $topic } from \"@alepha/topic\";\nimport type { DevActionMetadata } from \"./schemas/DevActionMetadata.ts\";\nimport type { DevBucketMetadata } from \"./schemas/DevBucketMetadata.ts\";\nimport type { DevCacheMetadata } from \"./schemas/DevCacheMetadata.ts\";\nimport type { DevLogEntry } from \"./schemas/DevLogEntry.ts\";\nimport { type DevMetadata, devMetadataSchema } from \"./schemas/DevMetadata.ts\";\nimport type { DevModuleMetadata } from \"./schemas/DevModuleMetadata.ts\";\nimport type { DevPageMetadata } from \"./schemas/DevPageMetadata.ts\";\nimport type { DevProviderMetadata } from \"./schemas/DevProviderMetadata.ts\";\nimport type { DevQueueMetadata } from \"./schemas/DevQueueMetadata.ts\";\nimport type { DevRealmMetadata } from \"./schemas/DevRealmMetadata.ts\";\nimport type { DevSchedulerMetadata } from \"./schemas/DevSchedulerMetadata.ts\";\nimport type { DevTopicMetadata } from \"./schemas/DevTopicMetadata.ts\";\n\nexport class DevCollectorProvider {\n\tprotected readonly alepha = $inject(Alepha);\n\tprotected readonly logs: DevLogEntry[] = [];\n\tprotected readonly maxLogs = 1000;\n\n\tprotected readonly onLog = $hook({\n\t\ton: \"log\",\n\t\thandler: (ev: { message: string; entry: LogEntry }) => {\n\t\t\tthis.logs.push({\n\t\t\t\tformatted: ev.message,\n\t\t\t\tentry: ev.entry,\n\t\t\t});\n\n\t\t\t// Keep only the last 1000 logs\n\t\t\tif (this.logs.length > this.maxLogs) {\n\t\t\t\tthis.logs.shift();\n\t\t\t}\n\t\t},\n\t});\n\n\tpublic getLogs(): DevLogEntry[] {\n\t\treturn this.logs;\n\t}\n\n\tpublic getActions(): DevActionMetadata[] {\n\t\tconst actionDescriptors = this.alepha.descriptors($action);\n\n\t\treturn actionDescriptors.map((action) => {\n\t\t\tconst schema = action.schema;\n\t\t\tconst options = action.options as any; // Allow accessing augmented properties\n\n\t\t\treturn {\n\t\t\t\tname: action.name,\n\t\t\t\tgroup: action.group,\n\t\t\t\tmethod: action.method,\n\t\t\t\tpath: action.path,\n\t\t\t\tprefix: action.prefix,\n\t\t\t\tfullPath: action.route.path,\n\t\t\t\tdescription: action.options.description,\n\t\t\t\tsummary: options.summary,\n\t\t\t\tdisabled: action.options.disabled,\n\t\t\t\tsecure: options.secure,\n\t\t\t\thide: options.hide,\n\t\t\t\tbody: schema?.body,\n\t\t\t\tparams: schema?.params,\n\t\t\t\tquery: schema?.query,\n\t\t\t\tresponse: schema?.response,\n\t\t\t\tbodyContentType: action.getBodyContentType(),\n\t\t\t};\n\t\t});\n\t}\n\n\tpublic getQueues(): DevQueueMetadata[] {\n\t\tconst queueDescriptors = this.alepha.descriptors($queue);\n\n\t\treturn queueDescriptors.map((queue) => ({\n\t\t\tname: queue.name,\n\t\t\tdescription: queue.options.description,\n\t\t\tschema: queue.options.schema,\n\t\t\tprovider: this.getProviderName(queue.options.provider),\n\t\t}));\n\t}\n\n\tpublic getSchedulers(): DevSchedulerMetadata[] {\n\t\tconst schedulerDescriptors = this.alepha.descriptors($scheduler);\n\n\t\treturn schedulerDescriptors.map((scheduler) => ({\n\t\t\tname: scheduler.name,\n\t\t\tdescription: scheduler.options.description,\n\t\t\tcron: scheduler.options.cron,\n\t\t\tinterval: scheduler.options.interval,\n\t\t\tlock: scheduler.options.lock,\n\t\t}));\n\t}\n\n\tpublic getTopics(): DevTopicMetadata[] {\n\t\tconst topicDescriptors = this.alepha.descriptors($topic);\n\n\t\treturn topicDescriptors.map((topic) => ({\n\t\t\tname: topic.name,\n\t\t\tdescription: topic.options.description,\n\t\t\tschema: topic.options.schema,\n\t\t\tprovider: this.getProviderName(topic.options.provider),\n\t\t}));\n\t}\n\n\tpublic getBuckets(): DevBucketMetadata[] {\n\t\tconst bucketDescriptors = this.alepha.descriptors($bucket);\n\n\t\treturn bucketDescriptors.map((bucket) => ({\n\t\t\tname: bucket.name,\n\t\t\tdescription: bucket.options.description,\n\t\t\tmimeTypes: bucket.options.mimeTypes,\n\t\t\tmaxSize: bucket.options.maxSize,\n\t\t\tprovider: this.getProviderName(bucket.options.provider),\n\t\t}));\n\t}\n\n\tpublic getRealms(): DevRealmMetadata[] {\n\t\tconst realmDescriptors = this.alepha.descriptors($realm);\n\n\t\treturn realmDescriptors.map((realm) => ({\n\t\t\tname: realm.name,\n\t\t\tdescription: realm.options.description,\n\t\t\troles: realm.options.roles,\n\t\t\ttype: \"secret\" in realm.options ? \"internal\" : \"external\",\n\t\t\tsettings: {\n\t\t\t\taccessTokenExpiration: realm.options.settings?.accessToken?.expiration,\n\t\t\t\trefreshTokenExpiration:\n\t\t\t\t\trealm.options.settings?.refreshToken?.expiration,\n\t\t\t\thasOnCreateSession: !!realm.options.settings?.onCreateSession,\n\t\t\t\thasOnRefreshSession: !!realm.options.settings?.onRefreshSession,\n\t\t\t\thasOnDeleteSession: !!realm.options.settings?.onDeleteSession,\n\t\t\t},\n\t\t}));\n\t}\n\n\tpublic getCaches(): DevCacheMetadata[] {\n\t\tconst cacheDescriptors = this.alepha.descriptors($cache);\n\n\t\treturn cacheDescriptors.map((cache) => ({\n\t\t\tname: cache.container,\n\t\t\tttl: cache.options.ttl,\n\t\t\tdisabled: cache.options.disabled,\n\t\t\tprovider: this.getProviderName(cache.options.provider),\n\t\t}));\n\t}\n\n\tpublic getPages(): DevPageMetadata[] {\n\t\tconst pageDescriptors = this.alepha.descriptors($page);\n\n\t\treturn pageDescriptors.map((page) => ({\n\t\t\tname: page.name,\n\t\t\tdescription: page.options.description,\n\t\t\tpath: page.options.path,\n\t\t\tparams: page.options.schema?.params,\n\t\t\tquery: page.options.schema?.query,\n\t\t\thasComponent: !!page.options.component,\n\t\t\thasLazy: !!page.options.lazy,\n\t\t\thasResolve: !!page.options.resolve,\n\t\t\thasChildren: !!page.options.children,\n\t\t\thasParent: !!page.options.parent,\n\t\t\thasErrorHandler: !!page.options.errorHandler,\n\t\t\tstatic:\n\t\t\t\ttypeof page.options.static === \"boolean\"\n\t\t\t\t\t? page.options.static\n\t\t\t\t\t: !!page.options.static,\n\t\t\tcache: page.options.cache,\n\t\t\tclient: page.options.client,\n\t\t\tanimation: page.options.animation,\n\t\t}));\n\t}\n\n\tpublic getProviders(): DevProviderMetadata[] {\n\t\tconst graph = this.alepha.graph();\n\n\t\treturn Object.entries(graph).map(([name, info]) => ({\n\t\t\tname,\n\t\t\tmodule: info.module,\n\t\t\tdependencies: info.from,\n\t\t\taliases: info.as,\n\t\t}));\n\t}\n\n\tpublic getModules(): DevModuleMetadata[] {\n\t\tconst graph = this.alepha.graph();\n\t\tconst moduleMap = new Map<string, Set<string>>();\n\n\t\t// Group providers by module\n\t\tfor (const [providerName, info] of Object.entries(graph)) {\n\t\t\tif (info.module) {\n\t\t\t\tif (!moduleMap.has(info.module)) {\n\t\t\t\t\tmoduleMap.set(info.module, new Set());\n\t\t\t\t}\n\t\t\t\tmoduleMap.get(info.module)!.add(providerName);\n\t\t\t}\n\t\t}\n\n\t\treturn Array.from(moduleMap.entries()).map(([name, providers]) => ({\n\t\t\tname,\n\t\t\tproviders: Array.from(providers),\n\t\t}));\n\t}\n\n\tpublic getMetadata(): DevMetadata {\n\t\treturn {\n\t\t\tlogs: this.getLogs(),\n\t\t\tactions: this.getActions(),\n\t\t\tqueues: this.getQueues(),\n\t\t\tschedulers: this.getSchedulers(),\n\t\t\ttopics: this.getTopics(),\n\t\t\tbuckets: this.getBuckets(),\n\t\t\trealms: this.getRealms(),\n\t\t\tcaches: this.getCaches(),\n\t\t\tpages: this.getPages(),\n\t\t\tproviders: this.getProviders(),\n\t\t\tmodules: this.getModules(),\n\t\t};\n\t}\n\n\tprotected readonly metadataRoute = $route({\n\t\tmethod: \"GET\",\n\t\tpath: \"/_devtools/metadata\",\n\t\tschema: {\n\t\t\tresponse: devMetadataSchema,\n\t\t},\n\t\thandler: () => {\n\t\t\treturn this.getMetadata();\n\t\t},\n\t});\n\n\tprotected getProviderName(provider?: \"memory\" | any): string {\n\t\tif (!provider) {\n\t\t\treturn \"default\";\n\t\t}\n\t\tif (provider === \"memory\") {\n\t\t\treturn \"memory\";\n\t\t}\n\t\treturn provider.name || \"custom\";\n\t}\n}\n","import { $module } from \"@alepha/core\";\nimport { DevCollectorProvider } from \"./DevCollectorProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./DevCollectorProvider.ts\";\nexport * from \"./schemas/DevActionMetadata.ts\";\nexport * from \"./schemas/DevBucketMetadata.ts\";\nexport * from \"./schemas/DevCacheMetadata.ts\";\nexport * from \"./schemas/DevLogEntry.ts\";\nexport * from \"./schemas/DevMetadata.ts\";\nexport * from \"./schemas/DevModuleMetadata.ts\";\nexport * from \"./schemas/DevPageMetadata.ts\";\nexport * from \"./schemas/DevProviderMetadata.ts\";\nexport * from \"./schemas/DevQueueMetadata.ts\";\nexport * from \"./schemas/DevRealmMetadata.ts\";\nexport * from \"./schemas/DevSchedulerMetadata.ts\";\nexport * from \"./schemas/DevTopicMetadata.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Developer tools module for monitoring and debugging Alepha applications.\n *\n * This module provides comprehensive data collection capabilities for tracking application behavior,\n * performance metrics, and debugging information in real-time.\n *\n * @see {@link DevCollectorProvider}\n * @module alepha.devtools\n */\nexport const AlephaDevtools = $module({\n\tname: \"alepha.devtools\",\n\tdescriptors: [],\n\tservices: [DevCollectorProvider],\n});\n"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@alepha/devtools",
|
|
3
|
+
"description": "Developer tools for monitoring and debugging Alepha applications.",
|
|
4
|
+
"version": "0.10.2",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=22.0.0"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"src"
|
|
15
|
+
],
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@alepha/bucket": "0.10.2",
|
|
18
|
+
"@alepha/cache": "0.10.2",
|
|
19
|
+
"@alepha/core": "0.10.2",
|
|
20
|
+
"@alepha/logger": "0.10.2",
|
|
21
|
+
"@alepha/queue": "0.10.2",
|
|
22
|
+
"@alepha/react": "0.10.2",
|
|
23
|
+
"@alepha/scheduler": "0.10.2",
|
|
24
|
+
"@alepha/security": "0.10.2",
|
|
25
|
+
"@alepha/server": "0.10.2",
|
|
26
|
+
"@alepha/topic": "0.10.2"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@biomejs/biome": "^2.2.4",
|
|
30
|
+
"tsdown": "^0.15.6",
|
|
31
|
+
"typescript": "^5.9.3",
|
|
32
|
+
"vitest": "^3.2.4"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"test": "vitest run",
|
|
36
|
+
"lint": "biome check --write --unsafe",
|
|
37
|
+
"build": "tsdown -c ../../tsdown.config.ts",
|
|
38
|
+
"check": "tsc"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/feunard/alepha",
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "git+https://github.com/feunard/alepha.git"
|
|
44
|
+
},
|
|
45
|
+
"keywords": [
|
|
46
|
+
"alepha",
|
|
47
|
+
"devtools",
|
|
48
|
+
"monitoring",
|
|
49
|
+
"debugging"
|
|
50
|
+
],
|
|
51
|
+
"module": "./dist/index.js",
|
|
52
|
+
"exports": {
|
|
53
|
+
".": {
|
|
54
|
+
"types": "./dist/index.d.ts",
|
|
55
|
+
"import": "./dist/index.js"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|