@shohaghinfo/aerojs 0.3.0 → 0.4.1

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 (112) hide show
  1. package/AGENTS.md +226 -0
  2. package/README.md +149 -9
  3. package/dist/audit/audit-trail.d.ts +5 -6
  4. package/dist/audit/audit-trail.d.ts.map +1 -1
  5. package/dist/audit/audit-trail.js +5 -6
  6. package/dist/audit/audit-trail.js.map +1 -1
  7. package/dist/auth/auth-manager.d.ts +5 -5
  8. package/dist/auth/auth-manager.js +5 -5
  9. package/dist/auth/bouncer.d.ts +8 -15
  10. package/dist/auth/bouncer.d.ts.map +1 -1
  11. package/dist/auth/bouncer.js +10 -17
  12. package/dist/auth/bouncer.js.map +1 -1
  13. package/dist/auth/guards/api-token-guard.d.ts +2 -4
  14. package/dist/auth/guards/api-token-guard.d.ts.map +1 -1
  15. package/dist/auth/guards/api-token-guard.js +2 -4
  16. package/dist/auth/guards/api-token-guard.js.map +1 -1
  17. package/dist/auth/guards/jwt-guard.d.ts +3 -4
  18. package/dist/auth/guards/jwt-guard.d.ts.map +1 -1
  19. package/dist/auth/guards/jwt-guard.js +2 -3
  20. package/dist/auth/guards/jwt-guard.js.map +1 -1
  21. package/dist/auth/guards/session-guard.d.ts +2 -4
  22. package/dist/auth/guards/session-guard.d.ts.map +1 -1
  23. package/dist/auth/guards/session-guard.js +2 -4
  24. package/dist/auth/guards/session-guard.js.map +1 -1
  25. package/dist/auth/policy.js +1 -1
  26. package/dist/auth/policy.js.map +1 -1
  27. package/dist/cli/commands/make.js +1 -1
  28. package/dist/cli/runner.js +1 -1
  29. package/dist/core/application.d.ts +10 -0
  30. package/dist/core/application.d.ts.map +1 -1
  31. package/dist/core/application.js +13 -0
  32. package/dist/core/application.js.map +1 -1
  33. package/dist/core/context.d.ts +1 -0
  34. package/dist/core/context.d.ts.map +1 -1
  35. package/dist/core/context.js +3 -0
  36. package/dist/core/context.js.map +1 -1
  37. package/dist/database/connection.d.ts +32 -0
  38. package/dist/database/connection.d.ts.map +1 -1
  39. package/dist/database/connection.js +51 -0
  40. package/dist/database/connection.js.map +1 -1
  41. package/dist/database/index.d.ts +1 -1
  42. package/dist/database/index.d.ts.map +1 -1
  43. package/dist/database/index.js +1 -1
  44. package/dist/database/index.js.map +1 -1
  45. package/dist/database/model-hooks.d.ts +5 -5
  46. package/dist/database/model-hooks.js +11 -11
  47. package/dist/database/model.d.ts +58 -58
  48. package/dist/database/model.d.ts.map +1 -1
  49. package/dist/database/model.js +133 -71
  50. package/dist/database/model.js.map +1 -1
  51. package/dist/database/query-builder.d.ts +24 -7
  52. package/dist/database/query-builder.d.ts.map +1 -1
  53. package/dist/database/query-builder.js +88 -37
  54. package/dist/database/query-builder.js.map +1 -1
  55. package/dist/events/event-bus.d.ts +47 -75
  56. package/dist/events/event-bus.d.ts.map +1 -1
  57. package/dist/events/event-bus.js +14 -23
  58. package/dist/events/event-bus.js.map +1 -1
  59. package/dist/index.d.ts +3 -3
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +6 -6
  62. package/dist/index.js.map +1 -1
  63. package/dist/notifications/notification-manager.d.ts +1 -1
  64. package/dist/notifications/notification-manager.js +1 -1
  65. package/dist/queue/dashboard.d.ts +30 -0
  66. package/dist/queue/dashboard.d.ts.map +1 -0
  67. package/dist/queue/dashboard.js +371 -0
  68. package/dist/queue/dashboard.js.map +1 -0
  69. package/dist/queue/index.d.ts +1 -0
  70. package/dist/queue/index.d.ts.map +1 -1
  71. package/dist/queue/index.js +1 -0
  72. package/dist/queue/index.js.map +1 -1
  73. package/dist/queue/queue-manager.d.ts +31 -1
  74. package/dist/queue/queue-manager.d.ts.map +1 -1
  75. package/dist/queue/queue-manager.js +60 -0
  76. package/dist/queue/queue-manager.js.map +1 -1
  77. package/dist/queue/worker.d.ts +3 -0
  78. package/dist/queue/worker.d.ts.map +1 -1
  79. package/dist/queue/worker.js +9 -0
  80. package/dist/queue/worker.js.map +1 -1
  81. package/dist/scheduler/scheduler.d.ts +5 -5
  82. package/dist/scheduler/scheduler.js +5 -5
  83. package/dist/security/encryption.d.ts +60 -0
  84. package/dist/security/encryption.d.ts.map +1 -0
  85. package/dist/security/encryption.js +120 -0
  86. package/dist/security/encryption.js.map +1 -0
  87. package/dist/security/fingerprint.d.ts +47 -0
  88. package/dist/security/fingerprint.d.ts.map +1 -0
  89. package/dist/security/fingerprint.js +83 -0
  90. package/dist/security/fingerprint.js.map +1 -0
  91. package/dist/security/index.d.ts +2 -0
  92. package/dist/security/index.d.ts.map +1 -1
  93. package/dist/security/index.js +2 -0
  94. package/dist/security/index.js.map +1 -1
  95. package/dist/session/cookie-session-driver.d.ts +34 -0
  96. package/dist/session/cookie-session-driver.d.ts.map +1 -0
  97. package/dist/session/cookie-session-driver.js +57 -0
  98. package/dist/session/cookie-session-driver.js.map +1 -0
  99. package/dist/session/index.d.ts +8 -0
  100. package/dist/session/index.d.ts.map +1 -0
  101. package/dist/session/index.js +8 -0
  102. package/dist/session/index.js.map +1 -0
  103. package/dist/session/session-driver.d.ts +2 -2
  104. package/dist/session/session-driver.js +2 -2
  105. package/dist/session/session-manager.d.ts +4 -4
  106. package/dist/session/session-manager.d.ts.map +1 -1
  107. package/dist/session/session-manager.js +10 -5
  108. package/dist/session/session-manager.js.map +1 -1
  109. package/dist/tcp/mllp.d.ts +1 -1
  110. package/dist/tcp/mllp.js +2 -2
  111. package/dist/tcp/mllp.js.map +1 -1
  112. package/package.json +1 -1
@@ -3,12 +3,11 @@
3
3
  * @description Domain Event Bus for AeroJS.
4
4
  * Implements the Reactive Event Bus pattern from Architecture Section 2.
5
5
  *
6
- * Hospital domain events flow:
6
+ * Enterprise domain events flow:
7
7
  * PaymentReceived → PostToGeneralLedgerListener, PrintReceiptListener
8
- * LabResultReady → SendLabResultSmsListener, NotifyDoctorListener
9
- * PatientAdmitted → AllocateBedListener, CreateEncounterListener
10
- * CodeBlueTriggered → BroadcastSosListener, LogResponseTimeListener
11
- * ShiftClosed → ReconcileCashDrawerListener, GenerateShiftReportListener
8
+ * UserRegistered → SendWelcomeEmailListener, AssignDefaultRoleListener
9
+ * OrderPlaced → ReserveInventoryListener, NotifyAdminListener
10
+ * RecordArchived → PurgeCacheListener, AuditComplianceListener
12
11
  */
13
12
  // ─── Base Event ───────────────────────────────────────────────────────────────
14
13
  export class DomainEvent {
@@ -98,7 +97,7 @@ export class EventBus {
98
97
  * Dispatches an event asynchronously in the background (fire-and-forget).
99
98
  * The current request does not wait for listeners to complete.
100
99
  *
101
- * Hospital use: After saving a payment, fire PostToGeneralLedgerEvent in background.
100
+ * Example: After saving a payment, fire PostToGeneralLedgerEvent in background.
102
101
  */
103
102
  emitAsync(event) {
104
103
  setImmediate(() => {
@@ -130,24 +129,24 @@ export class EventBus {
130
129
  }
131
130
  // ─── Singleton EventBus ───────────────────────────────────────────────────────
132
131
  export const Events = new EventBus();
133
- // ─── Hospital Domain Events ───────────────────────────────────────────────────
134
- /** Fired when a patient is registered or re-admitted. */
135
- export class PatientAdmittedEvent extends DomainEvent {
132
+ // ─── Canonical Domain Events ───────────────────────────────────────────────────
133
+ /** Fired when a user registers or is onboarded. */
134
+ export class UserRegisteredEvent extends DomainEvent {
136
135
  data;
137
136
  constructor(data) {
138
137
  super();
139
138
  this.data = data;
140
139
  }
141
140
  }
142
- /** Fired when a lab result is finalized and signed by pathologist. */
143
- export class LabResultReadyEvent extends DomainEvent {
141
+ /** Fired when an order or transaction is placed. */
142
+ export class OrderPlacedEvent extends DomainEvent {
144
143
  data;
145
144
  constructor(data) {
146
145
  super();
147
146
  this.data = data;
148
147
  }
149
148
  }
150
- /** Fired when a cash payment is received at any counter. */
149
+ /** Fired when a payment is processed. */
151
150
  export class PaymentReceivedEvent extends DomainEvent {
152
151
  data;
153
152
  constructor(data) {
@@ -155,23 +154,15 @@ export class PaymentReceivedEvent extends DomainEvent {
155
154
  this.data = data;
156
155
  }
157
156
  }
158
- /** Fired when a Code Blue emergency is triggered at any bed/floor. */
159
- export class CodeBlueTriggeredEvent extends DomainEvent {
157
+ /** Fired when a record or resource is archived. */
158
+ export class RecordArchivedEvent extends DomainEvent {
160
159
  data;
161
160
  constructor(data) {
162
161
  super();
163
162
  this.data = data;
164
163
  }
165
164
  }
166
- /** Fired when a cashier closes their shift. */
167
- export class ShiftClosedEvent extends DomainEvent {
168
- data;
169
- constructor(data) {
170
- super();
171
- this.data = data;
172
- }
173
- }
174
- /** Fired when a stock item falls below reorder level. */
165
+ /** Fired when a resource quantity or stock falls below threshold. */
175
166
  export class LowStockAlertEvent extends DomainEvent {
176
167
  data;
177
168
  constructor(data) {
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -23,7 +23,7 @@ export { serveStatic, getMimeType, type StaticOptions, } from './static/static.j
23
23
  export { cors, type CorsOptions, } from './middleware/cors.js';
24
24
  export { jwt, sign, verify, decode, jwtAuth, parseTimespan, JsonWebTokenError, TokenExpiredError, NotBeforeError, rateLimit, MemoryRateLimitStore, RedisRateLimitStore, TooManyRequestsError, securityHeaders, csrf, Hash, hash, hashVerify, type JwtAlgorithm, type JwtHeader, type JwtPayload, type JwtSignOptions, type JwtVerifyOptions, type JwtAuthOptions, type RateLimitOptions, type RateLimitStore, type RateLimitInfo, type SecurityHeadersOptions, type HstsOptions, type ContentSecurityPolicyDirectives, type CsrfOptions, type ScryptOptions, } from './security/index.js';
25
25
  export { AeroWebSocket, handleWebSocketUpgrade, type WebSocketUpgradeHandler, } from './ws/websocket.js';
26
- export { Database, DB, MemoryDatabaseAdapter, Model, Relation, computed, QueryBuilder, Schema, TableBlueprint, Migrator, getHookRegistry, registerHook, ModelHookRegistry, beforeCreate, afterCreate, beforeSave, afterSave, beforeUpdate, afterUpdate, beforeDelete, afterDelete, beforeFind, afterFind, beforeFetch, afterFetch, type DatabaseAdapter, type DatabaseRow, type WhereClause, type JoinClause, type PaginationResult, type RelationDefinition, type ManyToManyOptions, type HasManyThroughOptions, type ColumnDefinition, type Migration, type ModelHookEvent, type ModelHookHandler, Seeder, DatabaseSeeder, ModelFactory, type FactoryDefinition, } from './database/index.js';
26
+ export { Database, DB, MemoryDatabaseAdapter, Model, Relation, computed, encrypted, QueryBuilder, Schema, TableBlueprint, Migrator, getHookRegistry, registerHook, ModelHookRegistry, beforeCreate, afterCreate, beforeSave, afterSave, beforeUpdate, afterUpdate, beforeDelete, afterDelete, beforeFind, afterFind, beforeFetch, afterFetch, type DatabaseAdapter, type DatabaseRow, type WhereClause, type JoinClause, type PaginationResult, type RelationDefinition, type ManyToManyOptions, type HasManyThroughOptions, type ColumnDefinition, type Migration, type ModelHookEvent, type ModelHookHandler, Seeder, DatabaseSeeder, ModelFactory, type FactoryDefinition, } from './database/index.js';
27
27
  export { Logger, requestLogger, RequestContext, type LogLevel, type RequestStore, } from './logging/index.js';
28
28
  export { ViewEngine, SimpleViewDriver, createEdgeDriver, createEjsDriver, viewPlugin, type ViewDriver, } from './views/view.js';
29
29
  export { vite, type ViteOptions, } from './views/vite.js';
@@ -53,9 +53,9 @@ export { ApiTokenGuard, type ApiTokenGuardConfig, type ApiToken, type GeneratedT
53
53
  export { type GuardContract, type AuthUser, type LoginOptions, } from './auth/guards/guard.js';
54
54
  export { Bouncer, BouncerManager, bouncerManager, bouncerPlugin, requireRole, requirePermission, type PolicyContract, type PolicyConstructor, type PermissionStore, } from './auth/bouncer.js';
55
55
  export { SessionManager, sessionPlugin, type SessionConfig, } from './session/session-manager.js';
56
- export { MemorySessionDriver, FileSessionDriver, RedisSessionDriver, type SessionDriver, } from './session/session-driver.js';
56
+ export { MemorySessionDriver, FileSessionDriver, RedisSessionDriver, CookieSessionDriver, type SessionDriver, } from './session/index.js';
57
57
  export { AuditTrail, AuditTrailManager, DatabaseAuditDriver, MemoryAuditDriver, type AuditLogEntry, type AuditLogRecord, type AuditAction, type AuditDriver, } from './audit/audit-trail.js';
58
- export { Events, EventBus, DomainEvent, PatientAdmittedEvent, LabResultReadyEvent, PaymentReceivedEvent, CodeBlueTriggeredEvent, ShiftClosedEvent, LowStockAlertEvent, type EventListener, type EventListenerFn, } from './events/event-bus.js';
58
+ export { Events, EventBus, DomainEvent, UserRegisteredEvent, OrderPlacedEvent, PaymentReceivedEvent, RecordArchivedEvent, LowStockAlertEvent, type EventListener, type EventListenerFn, } from './events/event-bus.js';
59
59
  export { Schedule, Scheduler, TaskBuilder, type TaskDefinition, type TaskHandler, type TaskRunRecord, } from './scheduler/scheduler.js';
60
60
  export * from './cache/index.js';
61
61
  export * from './redis/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -25,7 +25,7 @@ export { serveStatic, getMimeType, } from './static/static.js';
25
25
  export { cors, } from './middleware/cors.js';
26
26
  export { jwt, sign, verify, decode, jwtAuth, parseTimespan, JsonWebTokenError, TokenExpiredError, NotBeforeError, rateLimit, MemoryRateLimitStore, RedisRateLimitStore, TooManyRequestsError, securityHeaders, csrf, Hash, hash, hashVerify, } from './security/index.js';
27
27
  export { AeroWebSocket, handleWebSocketUpgrade, } from './ws/websocket.js';
28
- export { Database, DB, MemoryDatabaseAdapter, Model, Relation, computed, QueryBuilder, Schema, TableBlueprint, Migrator,
28
+ export { Database, DB, MemoryDatabaseAdapter, Model, Relation, computed, encrypted, QueryBuilder, Schema, TableBlueprint, Migrator,
29
29
  // Lifecycle Hook System
30
30
  getHookRegistry, registerHook, ModelHookRegistry, beforeCreate, afterCreate, beforeSave, afterSave, beforeUpdate, afterUpdate, beforeDelete, afterDelete, beforeFind, afterFind, beforeFetch, afterFetch, Seeder, DatabaseSeeder, ModelFactory, } from './database/index.js';
31
31
  export { Logger, requestLogger, RequestContext, } from './logging/index.js';
@@ -49,7 +49,7 @@ export { Validator, VineHelper, defaultBengaliVineMessages, } from './validation
49
49
  export { UnprocessableEntityError, ValidationError, } from './core/errors.js';
50
50
  import { Aero } from './core/application.js';
51
51
  export default Aero;
52
- // ─── Hospital-Grade Enterprise Modules ───────────────────────────────────────
52
+ // ─── Enterprise Modules ───────────────────────────────────────────────────────
53
53
  // Auth System (Session + JWT + API Token Guards)
54
54
  export { Auth, AuthManager, authManager, authPlugin, auth, } from './auth/auth-manager.js';
55
55
  export { SessionGuard, } from './auth/guards/session-guard.js';
@@ -60,14 +60,14 @@ export {} from './auth/guards/guard.js';
60
60
  export { Bouncer, BouncerManager, bouncerManager, bouncerPlugin, requireRole, requirePermission, } from './auth/bouncer.js';
61
61
  // Session Management
62
62
  export { SessionManager, sessionPlugin, } from './session/session-manager.js';
63
- export { MemorySessionDriver, FileSessionDriver, RedisSessionDriver, } from './session/session-driver.js';
63
+ export { MemorySessionDriver, FileSessionDriver, RedisSessionDriver, CookieSessionDriver, } from './session/index.js';
64
64
  // Immutable Audit Trail (Section 38)
65
65
  export { AuditTrail, AuditTrailManager, DatabaseAuditDriver, MemoryAuditDriver, } from './audit/audit-trail.js';
66
66
  // Domain Event Bus (Section 2 — Reactive Event Bus)
67
67
  export { Events, EventBus, DomainEvent,
68
- // Hospital Domain Events
69
- PatientAdmittedEvent, LabResultReadyEvent, PaymentReceivedEvent, CodeBlueTriggeredEvent, ShiftClosedEvent, LowStockAlertEvent, } from './events/event-bus.js';
70
- // Cron Scheduler (Bank Reco, BMDC Alerts, Payroll triggers)
68
+ // Canonical Domain Events
69
+ UserRegisteredEvent, OrderPlacedEvent, PaymentReceivedEvent, RecordArchivedEvent, LowStockAlertEvent, } from './events/event-bus.js';
70
+ // Cron Task Scheduler
71
71
  export { Schedule, Scheduler, TaskBuilder, } from './scheduler/scheduler.js';
72
72
  export * from './cache/index.js';
73
73
  export * from './redis/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ export declare class NotificationManager {
32
32
  }
33
33
  export declare const Notifications: NotificationManager;
34
34
  /**
35
- * Mixin / Helper function to send notification from a user/patient model.
35
+ * Mixin / Helper function to send notification from a user model.
36
36
  * Example: notify(user, new InvoiceNotification(inv));
37
37
  */
38
38
  export declare function notify(notifiable: any, notification: Notification): Promise<void>;
@@ -121,7 +121,7 @@ export class NotificationManager {
121
121
  }
122
122
  export const Notifications = new NotificationManager();
123
123
  /**
124
- * Mixin / Helper function to send notification from a user/patient model.
124
+ * Mixin / Helper function to send notification from a user model.
125
125
  * Example: notify(user, new InvoiceNotification(inv));
126
126
  */
127
127
  export async function notify(notifiable, notification) {
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @file dashboard.ts
3
+ * @description Real-time interactive Queue & Job Monitoring Dashboard for AeroJS (Horizon-style).
4
+ * Features live metrics, failed job inspection, retry mechanisms, and a dark-mode GUI.
5
+ */
6
+ import type { AeroContext } from '../core/context.js';
7
+ export interface QueueDashboardOptions {
8
+ /**
9
+ * Optional authorization guard to restrict access to the dashboard.
10
+ * If returns false, 403 Forbidden is returned.
11
+ */
12
+ auth?: (ctx: AeroContext) => boolean | Promise<boolean>;
13
+ /**
14
+ * Custom title displayed on the dashboard header.
15
+ */
16
+ title?: string;
17
+ /**
18
+ * Auto-refresh polling interval in seconds (default: 3).
19
+ */
20
+ pollInterval?: number;
21
+ }
22
+ /**
23
+ * Renders the self-contained dark-mode single-page HTML dashboard for AeroJS Queue.
24
+ */
25
+ export declare function renderQueueDashboardHtml(basePath: string, options?: QueueDashboardOptions): string;
26
+ /**
27
+ * Registers the Queue Horizon dashboard GUI and REST API endpoints onto an Aero application.
28
+ */
29
+ export declare function registerQueueDashboard(app: any, basePath?: string, options?: QueueDashboardOptions): void;
30
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/queue/dashboard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAoStG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,EACR,QAAQ,SAAkB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAwEN"}
@@ -0,0 +1,371 @@
1
+ /**
2
+ * @file dashboard.ts
3
+ * @description Real-time interactive Queue & Job Monitoring Dashboard for AeroJS (Horizon-style).
4
+ * Features live metrics, failed job inspection, retry mechanisms, and a dark-mode GUI.
5
+ */
6
+ import { Router } from '../core/router.js';
7
+ import { Queue } from './queue-manager.js';
8
+ /**
9
+ * Renders the self-contained dark-mode single-page HTML dashboard for AeroJS Queue.
10
+ */
11
+ export function renderQueueDashboardHtml(basePath, options = {}) {
12
+ const title = options.title || 'AeroJS Queue Horizon';
13
+ const pollInterval = (options.pollInterval || 3) * 1000;
14
+ return `<!DOCTYPE html>
15
+ <html lang="en">
16
+ <head>
17
+ <meta charset="UTF-8">
18
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
19
+ <title>${title}</title>
20
+ <style>
21
+ :root {
22
+ --bg: #090d16;
23
+ --card-bg: rgba(22, 29, 47, 0.7);
24
+ --card-border: rgba(255, 255, 255, 0.08);
25
+ --text: #f3f4f6;
26
+ --text-muted: #94a3b8;
27
+ --accent: #3b82f6;
28
+ --accent-glow: rgba(59, 130, 246, 0.25);
29
+ --purple: #8b5cf6;
30
+ --success: #10b981;
31
+ --danger: #ef4444;
32
+ --warning: #f59e0b;
33
+ }
34
+ * { box-sizing: border-box; margin: 0; padding: 0; }
35
+ body {
36
+ background: var(--bg);
37
+ background-image: radial-gradient(circle at 50% 0%, #1e1b4b 0%, #090d16 65%);
38
+ color: var(--text);
39
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
40
+ min-height: 100vh;
41
+ padding: 2rem 1.5rem;
42
+ }
43
+ .container { max-width: 1200px; margin: 0 auto; }
44
+ header {
45
+ display: flex;
46
+ justify-content: space-between;
47
+ align-items: center;
48
+ margin-bottom: 2rem;
49
+ padding-bottom: 1.25rem;
50
+ border-bottom: 1px solid var(--card-border);
51
+ }
52
+ .logo-area { display: flex; align-items: center; gap: 0.85rem; }
53
+ .logo-badge {
54
+ background: linear-gradient(135deg, var(--accent), var(--purple));
55
+ color: #fff;
56
+ font-weight: 800;
57
+ font-size: 1.1rem;
58
+ padding: 0.4rem 0.85rem;
59
+ border-radius: 8px;
60
+ letter-spacing: 0.05em;
61
+ box-shadow: 0 0 20px var(--accent-glow);
62
+ }
63
+ h1 { font-size: 1.4rem; font-weight: 700; letter-spacing: -0.02em; }
64
+ .live-indicator {
65
+ display: flex;
66
+ align-items: center;
67
+ gap: 0.5rem;
68
+ font-size: 0.85rem;
69
+ color: var(--text-muted);
70
+ }
71
+ .pulse-dot {
72
+ width: 8px;
73
+ height: 8px;
74
+ border-radius: 50%;
75
+ background: var(--success);
76
+ box-shadow: 0 0 10px var(--success);
77
+ animation: pulse 2s infinite;
78
+ }
79
+ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
80
+
81
+ .stats-grid {
82
+ display: grid;
83
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
84
+ gap: 1.25rem;
85
+ margin-bottom: 2rem;
86
+ }
87
+ .stat-card {
88
+ background: var(--card-bg);
89
+ border: 1px solid var(--card-border);
90
+ border-radius: 12px;
91
+ padding: 1.25rem;
92
+ backdrop-filter: blur(12px);
93
+ transition: transform 0.2s, border-color 0.2s;
94
+ }
95
+ .stat-card:hover { transform: translateY(-2px); border-color: rgba(255, 255, 255, 0.18); }
96
+ .stat-title { font-size: 0.82rem; text-transform: uppercase; color: var(--text-muted); letter-spacing: 0.06em; margin-bottom: 0.5rem; }
97
+ .stat-val { font-size: 1.85rem; font-weight: 800; }
98
+ .stat-val.pending { color: var(--accent); }
99
+ .stat-val.completed { color: var(--success); }
100
+ .stat-val.failed { color: var(--danger); }
101
+ .stat-val.driver { color: var(--purple); font-size: 1.35rem; }
102
+
103
+ .card-panel {
104
+ background: var(--card-bg);
105
+ border: 1px solid var(--card-border);
106
+ border-radius: 14px;
107
+ padding: 1.5rem;
108
+ backdrop-filter: blur(12px);
109
+ margin-bottom: 2rem;
110
+ }
111
+ .panel-header {
112
+ display: flex;
113
+ justify-content: space-between;
114
+ align-items: center;
115
+ margin-bottom: 1.25rem;
116
+ }
117
+ .panel-title { font-size: 1.15rem; font-weight: 700; display: flex; align-items: center; gap: 0.5rem; }
118
+ .actions-bar { display: flex; gap: 0.75rem; }
119
+
120
+ .btn {
121
+ padding: 0.45rem 0.9rem;
122
+ border-radius: 7px;
123
+ font-size: 0.85rem;
124
+ font-weight: 600;
125
+ border: none;
126
+ cursor: pointer;
127
+ display: inline-flex;
128
+ align-items: center;
129
+ gap: 0.4rem;
130
+ transition: all 0.2s;
131
+ }
132
+ .btn-primary { background: var(--accent); color: #fff; }
133
+ .btn-primary:hover { background: #2563eb; }
134
+ .btn-danger { background: rgba(239, 68, 68, 0.18); color: var(--danger); border: 1px solid rgba(239, 68, 68, 0.35); }
135
+ .btn-danger:hover { background: var(--danger); color: #fff; }
136
+ .btn-sm { padding: 0.25rem 0.6rem; font-size: 0.78rem; }
137
+
138
+ table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
139
+ th { text-align: left; padding: 0.75rem 1rem; color: var(--text-muted); font-weight: 600; border-bottom: 1px solid var(--card-border); }
140
+ td { padding: 0.85rem 1rem; border-bottom: 1px solid rgba(255, 255, 255, 0.04); vertical-align: top; }
141
+ tr:hover td { background: rgba(255, 255, 255, 0.02); }
142
+ .badge { padding: 0.2rem 0.5rem; border-radius: 5px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; }
143
+ .badge-queue { background: rgba(139, 92, 246, 0.2); color: #c084fc; border: 1px solid rgba(139, 92, 246, 0.4); }
144
+ .badge-tries { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.4); }
145
+
146
+ pre.stack-trace {
147
+ background: #030712;
148
+ border: 1px solid rgba(255, 255, 255, 0.08);
149
+ border-radius: 6px;
150
+ padding: 0.6rem;
151
+ margin-top: 0.5rem;
152
+ font-size: 0.76rem;
153
+ color: #f87171;
154
+ max-height: 120px;
155
+ overflow-y: auto;
156
+ white-space: pre-wrap;
157
+ word-break: break-all;
158
+ }
159
+ .empty-state {
160
+ text-align: center;
161
+ padding: 3rem 1rem;
162
+ color: var(--text-muted);
163
+ }
164
+ </style>
165
+ </head>
166
+ <body>
167
+ <div class="container">
168
+ <header>
169
+ <div class="logo-area">
170
+ <div class="logo-badge">AERO</div>
171
+ <h1>${title}</h1>
172
+ </div>
173
+ <div class="live-indicator">
174
+ <div class="pulse-dot"></div>
175
+ <span>Live Polling (${pollInterval / 1000}s)</span>
176
+ </div>
177
+ </header>
178
+
179
+ <div class="stats-grid">
180
+ <div class="stat-card">
181
+ <div class="stat-title">Pending Jobs</div>
182
+ <div class="stat-val pending" id="stat-pending">0</div>
183
+ </div>
184
+ <div class="stat-card">
185
+ <div class="stat-title">Completed Jobs</div>
186
+ <div class="stat-val completed" id="stat-completed">0</div>
187
+ </div>
188
+ <div class="stat-card">
189
+ <div class="stat-title">Failed (Dead Letter)</div>
190
+ <div class="stat-val failed" id="stat-failed">0</div>
191
+ </div>
192
+ <div class="stat-card">
193
+ <div class="stat-title">Queue Driver</div>
194
+ <div class="stat-val driver" id="stat-driver">memory</div>
195
+ </div>
196
+ </div>
197
+
198
+ <div class="card-panel">
199
+ <div class="panel-header">
200
+ <div class="panel-title">
201
+ <span>Failed Jobs Management</span>
202
+ </div>
203
+ <div class="actions-bar">
204
+ <button class="btn btn-primary" onclick="retryAll()">Retry All</button>
205
+ <button class="btn btn-danger" onclick="purgeAll()">Purge All</button>
206
+ </div>
207
+ </div>
208
+
209
+ <div id="failed-jobs-container">
210
+ <div class="empty-state">Loading queue data...</div>
211
+ </div>
212
+ </div>
213
+ </div>
214
+
215
+ <script>
216
+ const basePath = '${basePath}';
217
+
218
+ async function fetchStats() {
219
+ try {
220
+ const res = await fetch(basePath + '/api/metrics');
221
+ const data = await res.json();
222
+ document.getElementById('stat-pending').innerText = data.pending ?? 0;
223
+ document.getElementById('stat-completed').innerText = data.completed ?? 0;
224
+ document.getElementById('stat-failed').innerText = data.failed ?? 0;
225
+ document.getElementById('stat-driver').innerText = data.connection ?? 'default';
226
+ } catch (err) {
227
+ console.error('Failed to fetch queue metrics', err);
228
+ }
229
+ }
230
+
231
+ async function fetchFailedJobs() {
232
+ try {
233
+ const res = await fetch(basePath + '/api/failed');
234
+ const jobs = await res.json();
235
+ renderFailedTable(jobs);
236
+ } catch (err) {
237
+ console.error('Failed to fetch failed jobs', err);
238
+ }
239
+ }
240
+
241
+ function renderFailedTable(jobs) {
242
+ const container = document.getElementById('failed-jobs-container');
243
+ if (!jobs || jobs.length === 0) {
244
+ container.innerHTML = '<div class="empty-state">All queues are healthy! No failed jobs.</div>';
245
+ return;
246
+ }
247
+
248
+ let html = '<table><thead><tr>' +
249
+ '<th>ID</th><th>Queue</th><th>Job Name</th><th>Failed At</th><th>Exception</th><th style="text-align:right">Actions</th>' +
250
+ '</tr></thead><tbody>';
251
+
252
+ for (const j of jobs) {
253
+ const dateStr = new Date(j.failedAt).toLocaleString();
254
+ html += '<tr>' +
255
+ '<td><code>#' + j.id + '</code></td>' +
256
+ '<td><span class="badge badge-queue">' + (j.queue || 'default') + '</span></td>' +
257
+ '<td><strong>' + (j.jobName || 'Anonymous') + '</strong></td>' +
258
+ '<td>' + dateStr + '</td>' +
259
+ '<td><pre class="stack-trace">' + (j.exception || 'No exception stack') + '</pre></td>' +
260
+ '<td style="text-align:right">' +
261
+ '<button class="btn btn-primary btn-sm" onclick="retryJob(\\'' + j.id + '\\')">Retry</button> ' +
262
+ '<button class="btn btn-danger btn-sm" onclick="deleteJob(\\'' + j.id + '\\')">Delete</button>' +
263
+ '</td>' +
264
+ '</tr>';
265
+ }
266
+
267
+ html += '</tbody></table>';
268
+ container.innerHTML = html;
269
+ }
270
+
271
+ async function retryJob(id) {
272
+ await fetch(basePath + '/api/retry/' + id, { method: 'POST' });
273
+ refresh();
274
+ }
275
+
276
+ async function deleteJob(id) {
277
+ await fetch(basePath + '/api/failed/' + id, { method: 'DELETE' });
278
+ refresh();
279
+ }
280
+
281
+ async function retryAll() {
282
+ await fetch(basePath + '/api/retry-all', { method: 'POST' });
283
+ refresh();
284
+ }
285
+
286
+ async function purgeAll() {
287
+ if (!confirm('Are you sure you want to purge all failed jobs?')) return;
288
+ await fetch(basePath + '/api/purge-all', { method: 'DELETE' });
289
+ refresh();
290
+ }
291
+
292
+ function refresh() {
293
+ fetchStats();
294
+ fetchFailedJobs();
295
+ }
296
+
297
+ refresh();
298
+ setInterval(refresh, ${pollInterval});
299
+ </script>
300
+ </body>
301
+ </html>`;
302
+ }
303
+ /**
304
+ * Registers the Queue Horizon dashboard GUI and REST API endpoints onto an Aero application.
305
+ */
306
+ export function registerQueueDashboard(app, basePath = '/__aero/queue', options = {}) {
307
+ const authMiddleware = async (ctx, next) => {
308
+ if (options.auth) {
309
+ const allowed = await options.auth(ctx);
310
+ if (!allowed) {
311
+ ctx.status(403).json({ error: 'Forbidden: Unauthorized access to Queue Dashboard' });
312
+ return;
313
+ }
314
+ }
315
+ await next();
316
+ };
317
+ const cleanBase = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
318
+ // HTML Dashboard
319
+ app.get(cleanBase, authMiddleware, async (ctx) => {
320
+ const accept = ctx.req.headers['accept'] || '';
321
+ if (accept.includes('application/json')) {
322
+ const metrics = await Queue.getMetrics();
323
+ const failed = Queue.getFailedJobs();
324
+ ctx.json({ metrics, failed });
325
+ return;
326
+ }
327
+ ctx.html(renderQueueDashboardHtml(cleanBase, options));
328
+ });
329
+ // REST API: Metrics
330
+ app.get(`${cleanBase}/api/metrics`, authMiddleware, async (ctx) => {
331
+ const queueName = ctx.query.queue || 'default';
332
+ const metrics = await Queue.getMetrics(queueName);
333
+ ctx.json(metrics);
334
+ });
335
+ // REST API: Failed Jobs List
336
+ app.get(`${cleanBase}/api/failed`, authMiddleware, async (ctx) => {
337
+ const failed = Queue.getFailedJobs();
338
+ ctx.json(failed);
339
+ });
340
+ // REST API: Retry Single Job
341
+ app.post(`${cleanBase}/api/retry/:id`, authMiddleware, async (ctx) => {
342
+ const id = ctx.params.id || '';
343
+ const ok = await Queue.retryFailedJob(id);
344
+ if (!ok) {
345
+ ctx.status(404).json({ success: false, message: `Failed job #${id} not found` });
346
+ return;
347
+ }
348
+ ctx.json({ success: true, message: `Job #${id} re-enqueued` });
349
+ });
350
+ // REST API: Delete Single Failed Job
351
+ app.delete(`${cleanBase}/api/failed/:id`, authMiddleware, async (ctx) => {
352
+ const id = ctx.params.id || '';
353
+ const ok = Queue.deleteFailedJob(id);
354
+ if (!ok) {
355
+ ctx.status(404).json({ success: false, message: `Failed job #${id} not found` });
356
+ return;
357
+ }
358
+ ctx.json({ success: true, message: `Failed job #${id} removed` });
359
+ });
360
+ // REST API: Retry All Failed Jobs
361
+ app.post(`${cleanBase}/api/retry-all`, authMiddleware, async (ctx) => {
362
+ const count = await Queue.retryAllFailedJobs();
363
+ ctx.json({ success: true, retriedCount: count });
364
+ });
365
+ // REST API: Purge All Failed Jobs
366
+ app.delete(`${cleanBase}/api/purge-all`, authMiddleware, async (ctx) => {
367
+ Queue.purgeAllFailedJobs();
368
+ ctx.json({ success: true, message: 'All failed jobs purged' });
369
+ });
370
+ }
371
+ //# sourceMappingURL=dashboard.js.map