@serve.zone/dcrouter 13.43.5 → 13.44.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 (82) hide show
  1. package/deno.json +1 -1
  2. package/dist_serve/bundle.js +491 -436
  3. package/dist_ts/00_commitinfo_data.js +1 -1
  4. package/dist_ts/classes.dcrouter.d.ts +16 -13
  5. package/dist_ts/classes.dcrouter.js +320 -82
  6. package/dist_ts/config/classes.route-config-manager.d.ts +1 -0
  7. package/dist_ts/config/classes.route-config-manager.js +4 -1
  8. package/dist_ts/db/documents/classes.cached.email.d.ts +2 -5
  9. package/dist_ts/db/documents/classes.cached.email.js +4 -23
  10. package/dist_ts/db/documents/classes.cached.ip.reputation.d.ts +2 -5
  11. package/dist_ts/db/documents/classes.cached.ip.reputation.js +4 -23
  12. package/dist_ts/db/documents/classes.email-server-settings.doc.d.ts +14 -0
  13. package/dist_ts/db/documents/classes.email-server-settings.doc.js +103 -0
  14. package/dist_ts/db/documents/classes.remote-ingress-hub-settings.doc.d.ts +3 -0
  15. package/dist_ts/db/documents/classes.remote-ingress-hub-settings.doc.js +20 -2
  16. package/dist_ts/db/documents/index.d.ts +1 -0
  17. package/dist_ts/db/documents/index.js +2 -1
  18. package/dist_ts/db/index.d.ts +0 -1
  19. package/dist_ts/db/index.js +1 -3
  20. package/dist_ts/email/classes.email-domain.manager.d.ts +3 -1
  21. package/dist_ts/email/classes.email-domain.manager.js +6 -3
  22. package/dist_ts/email/classes.email-settings.manager.d.ts +25 -0
  23. package/dist_ts/email/classes.email-settings.manager.js +184 -0
  24. package/dist_ts/email/index.d.ts +1 -0
  25. package/dist_ts/email/index.js +2 -1
  26. package/dist_ts/opsserver/classes.opsserver.d.ts +1 -0
  27. package/dist_ts/opsserver/classes.opsserver.js +3 -1
  28. package/dist_ts/opsserver/handlers/config.handler.js +17 -14
  29. package/dist_ts/opsserver/handlers/email-settings.handler.d.ts +10 -0
  30. package/dist_ts/opsserver/handlers/email-settings.handler.js +57 -0
  31. package/dist_ts/opsserver/handlers/index.d.ts +1 -0
  32. package/dist_ts/opsserver/handlers/index.js +2 -1
  33. package/dist_ts/opsserver/handlers/remoteingress.handler.js +24 -6
  34. package/dist_ts/opsserver/handlers/workhoster.handler.js +2 -2
  35. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +4 -6
  36. package/dist_ts/remoteingress/classes.remoteingress-manager.js +58 -19
  37. package/dist_ts_interfaces/data/email-settings.d.ts +39 -0
  38. package/dist_ts_interfaces/data/email-settings.js +2 -0
  39. package/dist_ts_interfaces/data/index.d.ts +1 -0
  40. package/dist_ts_interfaces/data/index.js +2 -1
  41. package/dist_ts_interfaces/data/remoteingress.d.ts +7 -0
  42. package/dist_ts_interfaces/requests/email-settings.d.ts +26 -0
  43. package/dist_ts_interfaces/requests/email-settings.js +2 -0
  44. package/dist_ts_interfaces/requests/index.d.ts +1 -0
  45. package/dist_ts_interfaces/requests/index.js +2 -1
  46. package/dist_ts_interfaces/requests/remoteingress.d.ts +4 -1
  47. package/dist_ts_migrations/index.d.ts +14 -1
  48. package/dist_ts_migrations/index.js +107 -2
  49. package/dist_ts_web/00_commitinfo_data.js +1 -1
  50. package/dist_ts_web/appstate.d.ts +6 -1
  51. package/dist_ts_web/appstate.js +23 -1
  52. package/dist_ts_web/elements/email/ops-view-email-domains.d.ts +4 -0
  53. package/dist_ts_web/elements/email/ops-view-email-domains.js +122 -1
  54. package/dist_ts_web/elements/network/ops-view-remoteingress.d.ts +2 -1
  55. package/dist_ts_web/elements/network/ops-view-remoteingress.js +57 -17
  56. package/package.json +2 -2
  57. package/ts/00_commitinfo_data.ts +1 -1
  58. package/ts/classes.dcrouter.ts +361 -100
  59. package/ts/config/classes.route-config-manager.ts +4 -0
  60. package/ts/db/documents/classes.cached.email.ts +3 -12
  61. package/ts/db/documents/classes.cached.ip.reputation.ts +3 -12
  62. package/ts/db/documents/classes.email-server-settings.doc.ts +40 -0
  63. package/ts/db/documents/classes.remote-ingress-hub-settings.doc.ts +9 -0
  64. package/ts/db/documents/index.ts +1 -0
  65. package/ts/db/index.ts +0 -3
  66. package/ts/email/classes.email-domain.manager.ts +6 -2
  67. package/ts/email/classes.email-settings.manager.ts +221 -0
  68. package/ts/email/index.ts +1 -0
  69. package/ts/opsserver/classes.opsserver.ts +2 -0
  70. package/ts/opsserver/handlers/config.handler.ts +16 -13
  71. package/ts/opsserver/handlers/email-settings.handler.ts +72 -0
  72. package/ts/opsserver/handlers/index.ts +1 -0
  73. package/ts/opsserver/handlers/remoteingress.handler.ts +25 -5
  74. package/ts/opsserver/handlers/workhoster.handler.ts +1 -1
  75. package/ts/remoteingress/classes.remoteingress-manager.ts +65 -18
  76. package/ts_web/00_commitinfo_data.ts +1 -1
  77. package/ts_web/appstate.ts +33 -1
  78. package/ts_web/elements/email/ops-view-email-domains.ts +126 -0
  79. package/ts_web/elements/network/ops-view-remoteingress.ts +59 -17
  80. package/dist_ts/db/classes.cached.document.d.ts +0 -76
  81. package/dist_ts/db/classes.cached.document.js +0 -100
  82. package/ts/db/classes.cached.document.ts +0 -111
@@ -1,100 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- /**
3
- * Base class for all cached documents with TTL support
4
- *
5
- * Extends smartdata's SmartDataDbDoc to add:
6
- * - Automatic timestamps (createdAt, lastAccessedAt)
7
- * - TTL/expiration support (expiresAt)
8
- * - Helper methods for TTL management
9
- *
10
- * NOTE: Subclasses MUST add @svDb() decorators to createdAt, expiresAt, and lastAccessedAt
11
- * since decorators on abstract classes don't propagate correctly.
12
- */
13
- export class CachedDocument extends plugins.smartdata.SmartDataDbDoc {
14
- /**
15
- * Timestamp when the document was created
16
- * NOTE: Subclasses must add @svDb() decorator
17
- */
18
- createdAt = new Date();
19
- /**
20
- * Timestamp when the document expires and should be cleaned up
21
- * NOTE: Subclasses must add @svDb() decorator
22
- */
23
- expiresAt;
24
- /**
25
- * Timestamp of last access (for LRU-style eviction if needed)
26
- * NOTE: Subclasses must add @svDb() decorator
27
- */
28
- lastAccessedAt = new Date();
29
- /**
30
- * Set the TTL (time to live) for this document
31
- * @param ttlMs Time to live in milliseconds
32
- */
33
- setTTL(ttlMs) {
34
- this.expiresAt = new Date(Date.now() + ttlMs);
35
- }
36
- /**
37
- * Set TTL using days
38
- * @param days Number of days until expiration
39
- */
40
- setTTLDays(days) {
41
- this.setTTL(days * 24 * 60 * 60 * 1000);
42
- }
43
- /**
44
- * Set TTL using hours
45
- * @param hours Number of hours until expiration
46
- */
47
- setTTLHours(hours) {
48
- this.setTTL(hours * 60 * 60 * 1000);
49
- }
50
- /**
51
- * Check if this document has expired
52
- */
53
- isExpired() {
54
- if (!this.expiresAt) {
55
- return false; // No expiration set
56
- }
57
- return new Date() > this.expiresAt;
58
- }
59
- /**
60
- * Update the lastAccessedAt timestamp
61
- */
62
- touch() {
63
- this.lastAccessedAt = new Date();
64
- }
65
- /**
66
- * Get remaining TTL in milliseconds
67
- * Returns 0 if expired, -1 if no expiration set
68
- */
69
- getRemainingTTL() {
70
- if (!this.expiresAt) {
71
- return -1;
72
- }
73
- const remaining = this.expiresAt.getTime() - Date.now();
74
- return remaining > 0 ? remaining : 0;
75
- }
76
- /**
77
- * Extend the TTL by the specified milliseconds from now
78
- * @param ttlMs Additional time to live in milliseconds
79
- */
80
- extendTTL(ttlMs) {
81
- this.expiresAt = new Date(Date.now() + ttlMs);
82
- }
83
- /**
84
- * Set the document to never expire (100 years in the future)
85
- */
86
- setNeverExpires() {
87
- this.expiresAt = new Date(Date.now() + 100 * 365 * 24 * 60 * 60 * 1000);
88
- }
89
- }
90
- /**
91
- * TTL constants in milliseconds
92
- */
93
- export const TTL = {
94
- HOURS_1: 1 * 60 * 60 * 1000,
95
- HOURS_24: 24 * 60 * 60 * 1000,
96
- DAYS_7: 7 * 24 * 60 * 60 * 1000,
97
- DAYS_30: 30 * 24 * 60 * 60 * 1000,
98
- DAYS_90: 90 * 24 * 60 * 60 * 1000,
99
- };
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZWQuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9kYi9jbGFzc2VzLmNhY2hlZC5kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxPQUFnQixjQUE0QyxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBb0I7SUFDOUc7OztPQUdHO0lBQ0ksU0FBUyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7SUFFcEM7OztPQUdHO0lBQ0ksU0FBUyxDQUFRO0lBRXhCOzs7T0FHRztJQUNJLGNBQWMsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBRXpDOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDLG9CQUFvQjtRQUNwQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZUFBZTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEQsT0FBTyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHO0lBQ2pCLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQzNCLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQzdCLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSTtJQUMvQixPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUk7SUFDakMsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0NBQ3pCLENBQUMifQ==
@@ -1,111 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
-
3
- /**
4
- * Base class for all cached documents with TTL support
5
- *
6
- * Extends smartdata's SmartDataDbDoc to add:
7
- * - Automatic timestamps (createdAt, lastAccessedAt)
8
- * - TTL/expiration support (expiresAt)
9
- * - Helper methods for TTL management
10
- *
11
- * NOTE: Subclasses MUST add @svDb() decorators to createdAt, expiresAt, and lastAccessedAt
12
- * since decorators on abstract classes don't propagate correctly.
13
- */
14
- export abstract class CachedDocument<T extends CachedDocument<T>> extends plugins.smartdata.SmartDataDbDoc<T, T> {
15
- /**
16
- * Timestamp when the document was created
17
- * NOTE: Subclasses must add @svDb() decorator
18
- */
19
- public createdAt: Date = new Date();
20
-
21
- /**
22
- * Timestamp when the document expires and should be cleaned up
23
- * NOTE: Subclasses must add @svDb() decorator
24
- */
25
- public expiresAt!: Date;
26
-
27
- /**
28
- * Timestamp of last access (for LRU-style eviction if needed)
29
- * NOTE: Subclasses must add @svDb() decorator
30
- */
31
- public lastAccessedAt: Date = new Date();
32
-
33
- /**
34
- * Set the TTL (time to live) for this document
35
- * @param ttlMs Time to live in milliseconds
36
- */
37
- public setTTL(ttlMs: number): void {
38
- this.expiresAt = new Date(Date.now() + ttlMs);
39
- }
40
-
41
- /**
42
- * Set TTL using days
43
- * @param days Number of days until expiration
44
- */
45
- public setTTLDays(days: number): void {
46
- this.setTTL(days * 24 * 60 * 60 * 1000);
47
- }
48
-
49
- /**
50
- * Set TTL using hours
51
- * @param hours Number of hours until expiration
52
- */
53
- public setTTLHours(hours: number): void {
54
- this.setTTL(hours * 60 * 60 * 1000);
55
- }
56
-
57
- /**
58
- * Check if this document has expired
59
- */
60
- public isExpired(): boolean {
61
- if (!this.expiresAt) {
62
- return false; // No expiration set
63
- }
64
- return new Date() > this.expiresAt;
65
- }
66
-
67
- /**
68
- * Update the lastAccessedAt timestamp
69
- */
70
- public touch(): void {
71
- this.lastAccessedAt = new Date();
72
- }
73
-
74
- /**
75
- * Get remaining TTL in milliseconds
76
- * Returns 0 if expired, -1 if no expiration set
77
- */
78
- public getRemainingTTL(): number {
79
- if (!this.expiresAt) {
80
- return -1;
81
- }
82
- const remaining = this.expiresAt.getTime() - Date.now();
83
- return remaining > 0 ? remaining : 0;
84
- }
85
-
86
- /**
87
- * Extend the TTL by the specified milliseconds from now
88
- * @param ttlMs Additional time to live in milliseconds
89
- */
90
- public extendTTL(ttlMs: number): void {
91
- this.expiresAt = new Date(Date.now() + ttlMs);
92
- }
93
-
94
- /**
95
- * Set the document to never expire (100 years in the future)
96
- */
97
- public setNeverExpires(): void {
98
- this.expiresAt = new Date(Date.now() + 100 * 365 * 24 * 60 * 60 * 1000);
99
- }
100
- }
101
-
102
- /**
103
- * TTL constants in milliseconds
104
- */
105
- export const TTL = {
106
- HOURS_1: 1 * 60 * 60 * 1000,
107
- HOURS_24: 24 * 60 * 60 * 1000,
108
- DAYS_7: 7 * 24 * 60 * 60 * 1000,
109
- DAYS_30: 30 * 24 * 60 * 60 * 1000,
110
- DAYS_90: 90 * 24 * 60 * 60 * 1000,
111
- } as const;