@superdangerous/app-framework 4.14.0 → 4.15.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 (38) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/middleware/validation.d.ts +12 -12
  6. package/dist/services/emailService.d.ts +146 -0
  7. package/dist/services/emailService.d.ts.map +1 -0
  8. package/dist/services/emailService.js +649 -0
  9. package/dist/services/emailService.js.map +1 -0
  10. package/dist/services/index.d.ts +2 -0
  11. package/dist/services/index.d.ts.map +1 -1
  12. package/dist/services/index.js +2 -0
  13. package/dist/services/index.js.map +1 -1
  14. package/package.json +9 -1
  15. package/src/index.ts +14 -0
  16. package/src/services/emailService.ts +812 -0
  17. package/src/services/index.ts +14 -0
  18. package/ui/data-table/components/BatchActionsBar.tsx +53 -0
  19. package/ui/data-table/components/ColumnVisibility.tsx +111 -0
  20. package/ui/data-table/components/DataTable.tsx +492 -0
  21. package/ui/data-table/components/DataTablePage.tsx +238 -0
  22. package/ui/data-table/components/Pagination.tsx +203 -0
  23. package/ui/data-table/components/PaginationControls.tsx +122 -0
  24. package/ui/data-table/components/TableFilters.tsx +139 -0
  25. package/ui/data-table/components/index.ts +41 -0
  26. package/ui/data-table/components/types.ts +181 -0
  27. package/ui/data-table/hooks/index.ts +17 -0
  28. package/ui/data-table/hooks/useColumnOrder.ts +233 -0
  29. package/ui/data-table/hooks/useColumnVisibility.ts +128 -0
  30. package/ui/data-table/hooks/usePagination.ts +160 -0
  31. package/ui/data-table/hooks/useResizableColumns.ts +280 -0
  32. package/ui/data-table/index.ts +84 -0
  33. package/ui/dist/index.d.mts +207 -5
  34. package/ui/dist/index.d.ts +207 -5
  35. package/ui/dist/index.js +36 -43
  36. package/ui/dist/index.js.map +1 -1
  37. package/ui/dist/index.mjs +36 -43
  38. package/ui/dist/index.mjs.map +1 -1
package/dist/index.d.ts CHANGED
@@ -23,6 +23,8 @@ export type { LogEntry as RouterLogEntry, LogFile } from "./api/logsRouter.js";
23
23
  export * from "./desktop/index.js";
24
24
  export { getSystemMonitor } from "./services/systemMonitor.js";
25
25
  export type { SystemHealth, CPUInfo, MemoryInfo, DiskInfo, SystemInfo, ProcessInfo, } from "./services/systemMonitor.js";
26
+ export { EmailService, getEmailService, createEmailService, } from "./services/emailService.js";
27
+ export type { EmailConfig, EmailOptions, EmailServiceStatus, NotificationEvent, NotificationEventType, } from "./services/emailService.js";
26
28
  export { createHealthCheckRouter, getHealthCheckService, type SystemHealth as HealthStatus, type SystemMetrics, type HealthCheckOptions, type CustomHealthCheck, type HealthCheckResult, type DependencyHealth, } from "./core/healthCheck.js";
27
29
  export { createSettingsSchema, flattenSettings, unflattenSettings, flattenSettingsValues, unflattenSettingsValues, getRestartRequiredSettings, validateSettings, validateSetting, validateAllSettings, getSettingByKey, getDefaultSettingsValues, evaluateFieldVisibility, groupFields, applyToStorageTransform, applyFromStorageTransform, createSettingsFormState, Validators, type SettingsSchema, type SettingsCategory, type SettingDefinition, type SettingOption, type SettingsFormState, type SettingsValidationResult, } from "./settings/SettingsSchema.js";
28
30
  export { LogLevels, defaultLogViewerConfig, parseLogEntry, formatLogEntry, calculateLogStats, filterLogEntries, type LogCategory, type LogFilter, type LogViewerConfig, type LogEntry, type LogStats, } from "./logging/LogCategories.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EACL,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,aAAa,IAAI,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGvF,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChF,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,QAAQ,IAAI,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG/E,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EACV,YAAY,EACZ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,YAAY,IAAI,YAAY,EACjC,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,uBAAuB,EACvB,WAAW,EACX,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,QAAQ,GACd,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -28,6 +28,8 @@ export { default as logsRouter } from "./api/logsRouter.js";
28
28
  export * from "./desktop/index.js";
29
29
  // System monitoring exports
30
30
  export { getSystemMonitor } from "./services/systemMonitor.js";
31
+ // Email service exports
32
+ export { EmailService, getEmailService, createEmailService, } from "./services/emailService.js";
31
33
  // Health check exports
32
34
  export { createHealthCheckRouter, getHealthCheckService, } from "./core/healthCheck.js";
33
35
  // WebSocket Manager exports
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAe;AACf,cAAc,iBAAiB,CAAC;AAChC,oEAAoE;AACpE,OAAO,EACL,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,YAAY,EACZ,eAAe,GAIhB,MAAM,uBAAuB,CAAC;AAE/B,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,qBAAqB;AACrB,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAGjC,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,6CAA6C;AAC7C,OAAO,EAAE,YAAY,EAA8B,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE/D,oBAAoB;AACpB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,aAAa,GACd,MAAM,yBAAyB,CAAC;AAGjC,2BAA2B;AAC3B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG5D,8BAA8B;AAC9B,cAAc,oBAAoB,CAAC;AAEnC,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAU/D,uBAAuB;AACvB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GAOtB,MAAM,uBAAuB,CAAC;AAE/B,4BAA4B;AAE5B,yDAAyD;AAEzD,wDAAwD;AACxD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,uBAAuB,EACvB,WAAW,EACX,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,UAAU,GAOX,MAAM,8BAA8B,CAAC;AAEtC,yBAAyB;AACzB,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,GAMjB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAe;AACf,cAAc,iBAAiB,CAAC;AAChC,oEAAoE;AACpE,OAAO,EACL,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,YAAY,EACZ,eAAe,GAIhB,MAAM,uBAAuB,CAAC;AAE/B,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,qBAAqB;AACrB,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAGjC,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,6CAA6C;AAC7C,OAAO,EAAE,YAAY,EAA8B,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE/D,oBAAoB;AACpB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,aAAa,GACd,MAAM,yBAAyB,CAAC;AAGjC,2BAA2B;AAC3B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG5D,8BAA8B;AAC9B,cAAc,oBAAoB,CAAC;AAEnC,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAU/D,wBAAwB;AACxB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AASpC,uBAAuB;AACvB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GAOtB,MAAM,uBAAuB,CAAC;AAE/B,4BAA4B;AAE5B,yDAAyD;AAEzD,wDAAwD;AACxD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,uBAAuB,EACvB,WAAW,EACX,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,UAAU,GAOX,MAAM,8BAA8B,CAAC;AAEtC,yBAAyB;AACzB,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,GAMjB,MAAM,4BAA4B,CAAC"}
@@ -55,11 +55,11 @@ export declare const schemas: {
55
55
  category?: string | undefined;
56
56
  manufacturer?: string | undefined;
57
57
  version?: string | undefined;
58
+ tags?: string[] | undefined;
58
59
  models?: {
59
60
  name: string;
60
61
  variants?: string[] | undefined;
61
62
  }[] | undefined;
62
- tags?: string[] | undefined;
63
63
  lastUpdated?: string | undefined;
64
64
  author?: string | undefined;
65
65
  }, {
@@ -67,11 +67,11 @@ export declare const schemas: {
67
67
  category?: string | undefined;
68
68
  manufacturer?: string | undefined;
69
69
  version?: string | undefined;
70
+ tags?: string[] | undefined;
70
71
  models?: {
71
72
  name: string;
72
73
  variants?: string[] | undefined;
73
74
  }[] | undefined;
74
- tags?: string[] | undefined;
75
75
  lastUpdated?: string | undefined;
76
76
  author?: string | undefined;
77
77
  }>>;
@@ -245,11 +245,11 @@ export declare const schemas: {
245
245
  category?: string | undefined;
246
246
  manufacturer?: string | undefined;
247
247
  version?: string | undefined;
248
+ tags?: string[] | undefined;
248
249
  models?: {
249
250
  name: string;
250
251
  variants?: string[] | undefined;
251
252
  }[] | undefined;
252
- tags?: string[] | undefined;
253
253
  lastUpdated?: string | undefined;
254
254
  author?: string | undefined;
255
255
  } | undefined;
@@ -310,11 +310,11 @@ export declare const schemas: {
310
310
  category?: string | undefined;
311
311
  manufacturer?: string | undefined;
312
312
  version?: string | undefined;
313
+ tags?: string[] | undefined;
313
314
  models?: {
314
315
  name: string;
315
316
  variants?: string[] | undefined;
316
317
  }[] | undefined;
317
- tags?: string[] | undefined;
318
318
  lastUpdated?: string | undefined;
319
319
  author?: string | undefined;
320
320
  } | undefined;
@@ -607,14 +607,14 @@ export declare const schemas: {
607
607
  status?: "error" | "active" | "inactive" | undefined;
608
608
  search?: string | undefined;
609
609
  category?: string | undefined;
610
- protocol?: "modbus" | "bacnet" | undefined;
611
610
  tags?: string[] | undefined;
611
+ protocol?: "modbus" | "bacnet" | undefined;
612
612
  }, {
613
613
  status?: "error" | "active" | "inactive" | undefined;
614
614
  search?: string | undefined;
615
615
  category?: string | undefined;
616
- protocol?: "modbus" | "bacnet" | undefined;
617
616
  tags?: string[] | undefined;
617
+ protocol?: "modbus" | "bacnet" | undefined;
618
618
  }>;
619
619
  };
620
620
  /**
@@ -732,11 +732,11 @@ declare const _default: {
732
732
  category?: string | undefined;
733
733
  manufacturer?: string | undefined;
734
734
  version?: string | undefined;
735
+ tags?: string[] | undefined;
735
736
  models?: {
736
737
  name: string;
737
738
  variants?: string[] | undefined;
738
739
  }[] | undefined;
739
- tags?: string[] | undefined;
740
740
  lastUpdated?: string | undefined;
741
741
  author?: string | undefined;
742
742
  }, {
@@ -744,11 +744,11 @@ declare const _default: {
744
744
  category?: string | undefined;
745
745
  manufacturer?: string | undefined;
746
746
  version?: string | undefined;
747
+ tags?: string[] | undefined;
747
748
  models?: {
748
749
  name: string;
749
750
  variants?: string[] | undefined;
750
751
  }[] | undefined;
751
- tags?: string[] | undefined;
752
752
  lastUpdated?: string | undefined;
753
753
  author?: string | undefined;
754
754
  }>>;
@@ -922,11 +922,11 @@ declare const _default: {
922
922
  category?: string | undefined;
923
923
  manufacturer?: string | undefined;
924
924
  version?: string | undefined;
925
+ tags?: string[] | undefined;
925
926
  models?: {
926
927
  name: string;
927
928
  variants?: string[] | undefined;
928
929
  }[] | undefined;
929
- tags?: string[] | undefined;
930
930
  lastUpdated?: string | undefined;
931
931
  author?: string | undefined;
932
932
  } | undefined;
@@ -987,11 +987,11 @@ declare const _default: {
987
987
  category?: string | undefined;
988
988
  manufacturer?: string | undefined;
989
989
  version?: string | undefined;
990
+ tags?: string[] | undefined;
990
991
  models?: {
991
992
  name: string;
992
993
  variants?: string[] | undefined;
993
994
  }[] | undefined;
994
- tags?: string[] | undefined;
995
995
  lastUpdated?: string | undefined;
996
996
  author?: string | undefined;
997
997
  } | undefined;
@@ -1284,14 +1284,14 @@ declare const _default: {
1284
1284
  status?: "error" | "active" | "inactive" | undefined;
1285
1285
  search?: string | undefined;
1286
1286
  category?: string | undefined;
1287
- protocol?: "modbus" | "bacnet" | undefined;
1288
1287
  tags?: string[] | undefined;
1288
+ protocol?: "modbus" | "bacnet" | undefined;
1289
1289
  }, {
1290
1290
  status?: "error" | "active" | "inactive" | undefined;
1291
1291
  search?: string | undefined;
1292
1292
  category?: string | undefined;
1293
- protocol?: "modbus" | "bacnet" | undefined;
1294
1293
  tags?: string[] | undefined;
1294
+ protocol?: "modbus" | "bacnet" | undefined;
1295
1295
  }>;
1296
1296
  };
1297
1297
  compose: {
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Email Service supporting Resend API and Nodemailer SMTP
3
+ * A generic, reusable email service for the app framework.
4
+ * Resend is preferred when API key is configured.
5
+ */
6
+ import { EventEmitter } from "events";
7
+ export interface EmailOptions {
8
+ to: string | string[];
9
+ subject: string;
10
+ text?: string;
11
+ html?: string;
12
+ attachments?: Array<{
13
+ filename: string;
14
+ content?: string | Buffer;
15
+ path?: string;
16
+ }>;
17
+ }
18
+ export interface EmailConfig {
19
+ enabled?: boolean;
20
+ provider?: "resend" | "smtp";
21
+ resend?: {
22
+ apiKey: string;
23
+ };
24
+ smtp?: {
25
+ host: string;
26
+ port: number;
27
+ secure?: boolean;
28
+ auth?: {
29
+ user: string;
30
+ pass: string;
31
+ };
32
+ };
33
+ from?: string;
34
+ to?: string[];
35
+ appName?: string;
36
+ appTitle?: string;
37
+ logoUrl?: string;
38
+ brandColor?: string;
39
+ footerText?: string;
40
+ footerLink?: string;
41
+ }
42
+ export type NotificationEventType = "startup" | "shutdown" | "error" | "warning" | "info" | "success" | "custom";
43
+ export interface NotificationEvent {
44
+ type: NotificationEventType;
45
+ title?: string;
46
+ data: Record<string, unknown>;
47
+ timestamp: Date;
48
+ }
49
+ export interface EmailServiceStatus {
50
+ enabled: boolean;
51
+ provider: "Resend" | "SMTP" | "None";
52
+ recipients: string[];
53
+ }
54
+ export declare class EmailService extends EventEmitter {
55
+ private transporter?;
56
+ private resend?;
57
+ private enabled;
58
+ private useResend;
59
+ private notificationQueue;
60
+ private processingInterval?;
61
+ private fromAddress;
62
+ private defaultRecipients;
63
+ private config;
64
+ private appName;
65
+ private appTitle;
66
+ private logoUrl?;
67
+ private brandColor;
68
+ private footerText?;
69
+ private footerLink?;
70
+ constructor(config?: EmailConfig);
71
+ /**
72
+ * Initialize the email service
73
+ */
74
+ initialize(): Promise<void>;
75
+ /**
76
+ * Update branding configuration
77
+ */
78
+ setBranding(options: {
79
+ appName?: string;
80
+ appTitle?: string;
81
+ logoUrl?: string;
82
+ brandColor?: string;
83
+ footerText?: string;
84
+ footerLink?: string;
85
+ }): void;
86
+ /**
87
+ * Send an email
88
+ */
89
+ sendEmail(options: EmailOptions): Promise<void>;
90
+ /**
91
+ * Queue a notification event
92
+ */
93
+ queueNotification(event: NotificationEvent): void;
94
+ /**
95
+ * Send immediate notification (bypasses queue)
96
+ */
97
+ sendImmediateNotification(event: NotificationEvent): Promise<void>;
98
+ /**
99
+ * Send a notification with custom type and data
100
+ */
101
+ notify(type: NotificationEventType, title: string, data: Record<string, unknown>, immediate?: boolean): Promise<void>;
102
+ /**
103
+ * Send startup notification
104
+ */
105
+ notifyStartup(data?: Record<string, unknown>): Promise<void>;
106
+ /**
107
+ * Send error notification
108
+ */
109
+ notifyError(errorMessage: string, details?: Record<string, unknown>): Promise<void>;
110
+ /**
111
+ * Send test email
112
+ */
113
+ sendTestEmail(): Promise<void>;
114
+ /**
115
+ * Get service status
116
+ */
117
+ getStatus(): EmailServiceStatus;
118
+ /**
119
+ * Shutdown the service
120
+ */
121
+ shutdown(): Promise<void>;
122
+ private startNotificationProcessor;
123
+ private processNotificationQueue;
124
+ private groupNotificationsByType;
125
+ private sendNotificationEmail;
126
+ private getNotificationSubject;
127
+ private getNotificationIcon;
128
+ private getAccentColor;
129
+ private formatDateTime;
130
+ private formatEventDataHtml;
131
+ private formatNotificationHtml;
132
+ private formatNotificationText;
133
+ private formatEventDataText;
134
+ private getNotificationTitle;
135
+ private generateTestEmailHtml;
136
+ }
137
+ /**
138
+ * Get the email service instance (singleton)
139
+ */
140
+ export declare function getEmailService(): EmailService | null;
141
+ /**
142
+ * Create and initialize the email service
143
+ */
144
+ export declare function createEmailService(config: EmailConfig): Promise<EmailService>;
145
+ export default EmailService;
146
+ //# sourceMappingURL=emailService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailService.d.ts","sourceRoot":"","sources":["../../src/services/emailService.ts"],"names":[],"mappings":"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"}