@serve.zone/dcrouter 11.13.0 → 11.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/dist_serve/bundle.js +2 -2
  2. package/package.json +1 -1
  3. package/readme.md +107 -3
  4. package/ts/00_commitinfo_data.ts +1 -1
  5. package/ts_web/00_commitinfo_data.ts +1 -1
  6. package/ts_web/readme.md +17 -0
  7. package/ts_web/router.ts +1 -1
  8. package/dist_ts/00_commitinfo_data.d.ts +0 -8
  9. package/dist_ts/00_commitinfo_data.js +0 -9
  10. package/dist_ts/cache/classes.cache.cleaner.d.ts +0 -47
  11. package/dist_ts/cache/classes.cache.cleaner.js +0 -130
  12. package/dist_ts/cache/classes.cached.document.d.ts +0 -76
  13. package/dist_ts/cache/classes.cached.document.js +0 -100
  14. package/dist_ts/cache/classes.cachedb.d.ts +0 -60
  15. package/dist_ts/cache/classes.cachedb.js +0 -126
  16. package/dist_ts/cache/documents/classes.cached.email.d.ts +0 -125
  17. package/dist_ts/cache/documents/classes.cached.email.js +0 -337
  18. package/dist_ts/cache/documents/classes.cached.ip.reputation.d.ts +0 -119
  19. package/dist_ts/cache/documents/classes.cached.ip.reputation.js +0 -323
  20. package/dist_ts/cache/documents/index.d.ts +0 -2
  21. package/dist_ts/cache/documents/index.js +0 -3
  22. package/dist_ts/cache/index.d.ts +0 -4
  23. package/dist_ts/cache/index.js +0 -7
  24. package/dist_ts/classes.cert-provision-scheduler.d.ts +0 -54
  25. package/dist_ts/classes.cert-provision-scheduler.js +0 -118
  26. package/dist_ts/classes.dcrouter.d.ts +0 -386
  27. package/dist_ts/classes.dcrouter.js +0 -1682
  28. package/dist_ts/classes.storage-cert-manager.d.ts +0 -18
  29. package/dist_ts/classes.storage-cert-manager.js +0 -43
  30. package/dist_ts/config/classes.api-token-manager.d.ts +0 -46
  31. package/dist_ts/config/classes.api-token-manager.js +0 -150
  32. package/dist_ts/config/classes.route-config-manager.d.ts +0 -38
  33. package/dist_ts/config/classes.route-config-manager.js +0 -256
  34. package/dist_ts/config/index.d.ts +0 -3
  35. package/dist_ts/config/index.js +0 -5
  36. package/dist_ts/config/validator.d.ts +0 -104
  37. package/dist_ts/config/validator.js +0 -152
  38. package/dist_ts/errors/base.errors.d.ts +0 -224
  39. package/dist_ts/errors/base.errors.js +0 -320
  40. package/dist_ts/errors/error-handler.d.ts +0 -98
  41. package/dist_ts/errors/error-handler.js +0 -282
  42. package/dist_ts/errors/error.codes.d.ts +0 -115
  43. package/dist_ts/errors/error.codes.js +0 -136
  44. package/dist_ts/errors/index.d.ts +0 -54
  45. package/dist_ts/errors/index.js +0 -136
  46. package/dist_ts/errors/reputation.errors.d.ts +0 -183
  47. package/dist_ts/errors/reputation.errors.js +0 -292
  48. package/dist_ts/http3/http3-route-augmentation.d.ts +0 -50
  49. package/dist_ts/http3/http3-route-augmentation.js +0 -98
  50. package/dist_ts/http3/index.d.ts +0 -1
  51. package/dist_ts/http3/index.js +0 -2
  52. package/dist_ts/index.d.ts +0 -8
  53. package/dist_ts/index.js +0 -29
  54. package/dist_ts/logger.d.ts +0 -21
  55. package/dist_ts/logger.js +0 -81
  56. package/dist_ts/monitoring/classes.metricscache.d.ts +0 -32
  57. package/dist_ts/monitoring/classes.metricscache.js +0 -63
  58. package/dist_ts/monitoring/classes.metricsmanager.d.ts +0 -184
  59. package/dist_ts/monitoring/classes.metricsmanager.js +0 -744
  60. package/dist_ts/monitoring/index.d.ts +0 -1
  61. package/dist_ts/monitoring/index.js +0 -2
  62. package/dist_ts/opsserver/classes.opsserver.d.ts +0 -38
  63. package/dist_ts/opsserver/classes.opsserver.js +0 -87
  64. package/dist_ts/opsserver/handlers/admin.handler.d.ts +0 -31
  65. package/dist_ts/opsserver/handlers/admin.handler.js +0 -180
  66. package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
  67. package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
  68. package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -32
  69. package/dist_ts/opsserver/handlers/certificate.handler.js +0 -421
  70. package/dist_ts/opsserver/handlers/config.handler.d.ts +0 -7
  71. package/dist_ts/opsserver/handlers/config.handler.js +0 -192
  72. package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
  73. package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
  74. package/dist_ts/opsserver/handlers/index.d.ts +0 -12
  75. package/dist_ts/opsserver/handlers/index.js +0 -13
  76. package/dist_ts/opsserver/handlers/logs.handler.d.ts +0 -25
  77. package/dist_ts/opsserver/handlers/logs.handler.js +0 -256
  78. package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
  79. package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
  80. package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
  81. package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
  82. package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
  83. package/dist_ts/opsserver/handlers/route-management.handler.js +0 -117
  84. package/dist_ts/opsserver/handlers/security.handler.d.ts +0 -9
  85. package/dist_ts/opsserver/handlers/security.handler.js +0 -233
  86. package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
  87. package/dist_ts/opsserver/handlers/stats.handler.js +0 -403
  88. package/dist_ts/opsserver/handlers/vpn.handler.d.ts +0 -6
  89. package/dist_ts/opsserver/handlers/vpn.handler.js +0 -199
  90. package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
  91. package/dist_ts/opsserver/helpers/guards.js +0 -43
  92. package/dist_ts/opsserver/index.d.ts +0 -1
  93. package/dist_ts/opsserver/index.js +0 -2
  94. package/dist_ts/paths.d.ts +0 -26
  95. package/dist_ts/paths.js +0 -45
  96. package/dist_ts/plugins.d.ts +0 -81
  97. package/dist_ts/plugins.js +0 -115
  98. package/dist_ts/radius/classes.accounting.manager.d.ts +0 -231
  99. package/dist_ts/radius/classes.accounting.manager.js +0 -462
  100. package/dist_ts/radius/classes.radius.server.d.ts +0 -171
  101. package/dist_ts/radius/classes.radius.server.js +0 -386
  102. package/dist_ts/radius/classes.vlan.manager.d.ts +0 -128
  103. package/dist_ts/radius/classes.vlan.manager.js +0 -279
  104. package/dist_ts/radius/index.d.ts +0 -13
  105. package/dist_ts/radius/index.js +0 -14
  106. package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -94
  107. package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -271
  108. package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
  109. package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
  110. package/dist_ts/remoteingress/index.d.ts +0 -2
  111. package/dist_ts/remoteingress/index.js +0 -3
  112. package/dist_ts/security/classes.contentscanner.d.ts +0 -164
  113. package/dist_ts/security/classes.contentscanner.js +0 -642
  114. package/dist_ts/security/classes.ipreputationchecker.d.ts +0 -160
  115. package/dist_ts/security/classes.ipreputationchecker.js +0 -537
  116. package/dist_ts/security/classes.securitylogger.d.ts +0 -144
  117. package/dist_ts/security/classes.securitylogger.js +0 -235
  118. package/dist_ts/security/index.d.ts +0 -3
  119. package/dist_ts/security/index.js +0 -4
  120. package/dist_ts/sms/classes.smsservice.d.ts +0 -15
  121. package/dist_ts/sms/classes.smsservice.js +0 -72
  122. package/dist_ts/sms/config/sms.config.d.ts +0 -93
  123. package/dist_ts/sms/config/sms.config.js +0 -2
  124. package/dist_ts/sms/config/sms.schema.d.ts +0 -5
  125. package/dist_ts/sms/config/sms.schema.js +0 -121
  126. package/dist_ts/sms/index.d.ts +0 -1
  127. package/dist_ts/sms/index.js +0 -2
  128. package/dist_ts/storage/classes.storagemanager.d.ts +0 -83
  129. package/dist_ts/storage/classes.storagemanager.js +0 -348
  130. package/dist_ts/storage/index.d.ts +0 -1
  131. package/dist_ts/storage/index.js +0 -3
  132. package/dist_ts/vpn/classes.vpn-manager.d.ts +0 -113
  133. package/dist_ts/vpn/classes.vpn-manager.js +0 -297
  134. package/dist_ts/vpn/index.d.ts +0 -1
  135. package/dist_ts/vpn/index.js +0 -2
  136. package/dist_ts_apiclient/classes.apitoken.d.ts +0 -41
  137. package/dist_ts_apiclient/classes.apitoken.js +0 -115
  138. package/dist_ts_apiclient/classes.certificate.d.ts +0 -57
  139. package/dist_ts_apiclient/classes.certificate.js +0 -69
  140. package/dist_ts_apiclient/classes.config.d.ts +0 -7
  141. package/dist_ts_apiclient/classes.config.js +0 -11
  142. package/dist_ts_apiclient/classes.dcrouterapiclient.d.ts +0 -41
  143. package/dist_ts_apiclient/classes.dcrouterapiclient.js +0 -81
  144. package/dist_ts_apiclient/classes.email.d.ts +0 -30
  145. package/dist_ts_apiclient/classes.email.js +0 -52
  146. package/dist_ts_apiclient/classes.logs.d.ts +0 -21
  147. package/dist_ts_apiclient/classes.logs.js +0 -14
  148. package/dist_ts_apiclient/classes.radius.d.ts +0 -59
  149. package/dist_ts_apiclient/classes.radius.js +0 -95
  150. package/dist_ts_apiclient/classes.remoteingress.d.ts +0 -54
  151. package/dist_ts_apiclient/classes.remoteingress.js +0 -136
  152. package/dist_ts_apiclient/classes.route.d.ts +0 -42
  153. package/dist_ts_apiclient/classes.route.js +0 -154
  154. package/dist_ts_apiclient/classes.stats.d.ts +0 -47
  155. package/dist_ts_apiclient/classes.stats.js +0 -38
  156. package/dist_ts_apiclient/index.d.ts +0 -10
  157. package/dist_ts_apiclient/index.js +0 -14
  158. package/dist_ts_apiclient/plugins.d.ts +0 -3
  159. package/dist_ts_apiclient/plugins.js +0 -5
  160. package/dist_ts_web/00_commitinfo_data.d.ts +0 -8
  161. package/dist_ts_web/00_commitinfo_data.js +0 -9
  162. package/dist_ts_web/appstate.d.ts +0 -238
  163. package/dist_ts_web/appstate.js +0 -1174
  164. package/dist_ts_web/elements/index.d.ts +0 -13
  165. package/dist_ts_web/elements/index.js +0 -14
  166. package/dist_ts_web/elements/ops-dashboard.d.ts +0 -23
  167. package/dist_ts_web/elements/ops-dashboard.js +0 -323
  168. package/dist_ts_web/elements/ops-view-apitokens.d.ts +0 -13
  169. package/dist_ts_web/elements/ops-view-apitokens.js +0 -371
  170. package/dist_ts_web/elements/ops-view-certificates.d.ts +0 -22
  171. package/dist_ts_web/elements/ops-view-certificates.js +0 -528
  172. package/dist_ts_web/elements/ops-view-config.d.ts +0 -19
  173. package/dist_ts_web/elements/ops-view-config.js +0 -339
  174. package/dist_ts_web/elements/ops-view-emails.d.ts +0 -21
  175. package/dist_ts_web/elements/ops-view-emails.js +0 -165
  176. package/dist_ts_web/elements/ops-view-logs.d.ts +0 -13
  177. package/dist_ts_web/elements/ops-view-logs.js +0 -159
  178. package/dist_ts_web/elements/ops-view-network.d.ts +0 -71
  179. package/dist_ts_web/elements/ops-view-network.js +0 -764
  180. package/dist_ts_web/elements/ops-view-overview.d.ts +0 -22
  181. package/dist_ts_web/elements/ops-view-overview.js +0 -456
  182. package/dist_ts_web/elements/ops-view-remoteingress.d.ts +0 -20
  183. package/dist_ts_web/elements/ops-view-remoteingress.js +0 -494
  184. package/dist_ts_web/elements/ops-view-routes.d.ts +0 -12
  185. package/dist_ts_web/elements/ops-view-routes.js +0 -404
  186. package/dist_ts_web/elements/ops-view-security.d.ts +0 -21
  187. package/dist_ts_web/elements/ops-view-security.js +0 -574
  188. package/dist_ts_web/elements/ops-view-vpn.d.ts +0 -14
  189. package/dist_ts_web/elements/ops-view-vpn.js +0 -369
  190. package/dist_ts_web/elements/shared/css.d.ts +0 -1
  191. package/dist_ts_web/elements/shared/css.js +0 -10
  192. package/dist_ts_web/elements/shared/index.d.ts +0 -2
  193. package/dist_ts_web/elements/shared/index.js +0 -3
  194. package/dist_ts_web/elements/shared/ops-sectionheading.d.ts +0 -5
  195. package/dist_ts_web/elements/shared/ops-sectionheading.js +0 -82
  196. package/dist_ts_web/index.d.ts +0 -1
  197. package/dist_ts_web/index.js +0 -10
  198. package/dist_ts_web/plugins.d.ts +0 -6
  199. package/dist_ts_web/plugins.js +0 -11
  200. package/dist_ts_web/router.d.ts +0 -19
  201. package/dist_ts_web/router.js +0 -91
@@ -1,323 +0,0 @@
1
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
- var _, done = false;
7
- for (var i = decorators.length - 1; i >= 0; i--) {
8
- var context = {};
9
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
- if (kind === "accessor") {
14
- if (result === void 0) continue;
15
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
- if (_ = accept(result.get)) descriptor.get = _;
17
- if (_ = accept(result.set)) descriptor.set = _;
18
- if (_ = accept(result.init)) initializers.unshift(_);
19
- }
20
- else if (_ = accept(result)) {
21
- if (kind === "field") initializers.unshift(_);
22
- else descriptor[key] = _;
23
- }
24
- }
25
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
- done = true;
27
- };
28
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
- var useValue = arguments.length > 2;
30
- for (var i = 0; i < initializers.length; i++) {
31
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
- }
33
- return useValue ? value : void 0;
34
- };
35
- import * as plugins from '../../plugins.js';
36
- import { CachedDocument, TTL } from '../classes.cached.document.js';
37
- import { CacheDb } from '../classes.cachedb.js';
38
- /**
39
- * Helper to get the smartdata database instance
40
- */
41
- const getDb = () => CacheDb.getInstance().getDb();
42
- /**
43
- * CachedIPReputation - Stores IP reputation lookup results
44
- *
45
- * Caches the results of IP reputation checks to avoid repeated
46
- * external API calls. Default TTL is 24 hours.
47
- */
48
- let CachedIPReputation = (() => {
49
- let _classDecorators = [plugins.smartdata.Collection(() => getDb())];
50
- let _classDescriptor;
51
- let _classExtraInitializers = [];
52
- let _classThis;
53
- let _classSuper = CachedDocument;
54
- let _createdAt_decorators;
55
- let _createdAt_initializers = [];
56
- let _createdAt_extraInitializers = [];
57
- let _expiresAt_decorators;
58
- let _expiresAt_initializers = [];
59
- let _expiresAt_extraInitializers = [];
60
- let _lastAccessedAt_decorators;
61
- let _lastAccessedAt_initializers = [];
62
- let _lastAccessedAt_extraInitializers = [];
63
- let _ipAddress_decorators;
64
- let _ipAddress_initializers = [];
65
- let _ipAddress_extraInitializers = [];
66
- let _score_decorators;
67
- let _score_initializers = [];
68
- let _score_extraInitializers = [];
69
- let _isSpam_decorators;
70
- let _isSpam_initializers = [];
71
- let _isSpam_extraInitializers = [];
72
- let _isProxy_decorators;
73
- let _isProxy_initializers = [];
74
- let _isProxy_extraInitializers = [];
75
- let _isTor_decorators;
76
- let _isTor_initializers = [];
77
- let _isTor_extraInitializers = [];
78
- let _isVPN_decorators;
79
- let _isVPN_initializers = [];
80
- let _isVPN_extraInitializers = [];
81
- let _country_decorators;
82
- let _country_initializers = [];
83
- let _country_extraInitializers = [];
84
- let _asn_decorators;
85
- let _asn_initializers = [];
86
- let _asn_extraInitializers = [];
87
- let _org_decorators;
88
- let _org_initializers = [];
89
- let _org_extraInitializers = [];
90
- let _blacklists_decorators;
91
- let _blacklists_initializers = [];
92
- let _blacklists_extraInitializers = [];
93
- let _checkCount_decorators;
94
- let _checkCount_initializers = [];
95
- let _checkCount_extraInitializers = [];
96
- let _connectionCount_decorators;
97
- let _connectionCount_initializers = [];
98
- let _connectionCount_extraInitializers = [];
99
- let _emailCount_decorators;
100
- let _emailCount_initializers = [];
101
- let _emailCount_extraInitializers = [];
102
- let _spamCount_decorators;
103
- let _spamCount_initializers = [];
104
- let _spamCount_extraInitializers = [];
105
- var CachedIPReputation = class extends _classSuper {
106
- static { _classThis = this; }
107
- static {
108
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
109
- _createdAt_decorators = [plugins.smartdata.svDb()];
110
- _expiresAt_decorators = [plugins.smartdata.svDb()];
111
- _lastAccessedAt_decorators = [plugins.smartdata.svDb()];
112
- _ipAddress_decorators = [plugins.smartdata.unI(), plugins.smartdata.svDb()];
113
- _score_decorators = [plugins.smartdata.svDb()];
114
- _isSpam_decorators = [plugins.smartdata.svDb()];
115
- _isProxy_decorators = [plugins.smartdata.svDb()];
116
- _isTor_decorators = [plugins.smartdata.svDb()];
117
- _isVPN_decorators = [plugins.smartdata.svDb()];
118
- _country_decorators = [plugins.smartdata.svDb()];
119
- _asn_decorators = [plugins.smartdata.svDb()];
120
- _org_decorators = [plugins.smartdata.svDb()];
121
- _blacklists_decorators = [plugins.smartdata.svDb()];
122
- _checkCount_decorators = [plugins.smartdata.svDb()];
123
- _connectionCount_decorators = [plugins.smartdata.svDb()];
124
- _emailCount_decorators = [plugins.smartdata.svDb()];
125
- _spamCount_decorators = [plugins.smartdata.svDb()];
126
- __esDecorate(null, null, _createdAt_decorators, { kind: "field", name: "createdAt", static: false, private: false, access: { has: obj => "createdAt" in obj, get: obj => obj.createdAt, set: (obj, value) => { obj.createdAt = value; } }, metadata: _metadata }, _createdAt_initializers, _createdAt_extraInitializers);
127
- __esDecorate(null, null, _expiresAt_decorators, { kind: "field", name: "expiresAt", static: false, private: false, access: { has: obj => "expiresAt" in obj, get: obj => obj.expiresAt, set: (obj, value) => { obj.expiresAt = value; } }, metadata: _metadata }, _expiresAt_initializers, _expiresAt_extraInitializers);
128
- __esDecorate(null, null, _lastAccessedAt_decorators, { kind: "field", name: "lastAccessedAt", static: false, private: false, access: { has: obj => "lastAccessedAt" in obj, get: obj => obj.lastAccessedAt, set: (obj, value) => { obj.lastAccessedAt = value; } }, metadata: _metadata }, _lastAccessedAt_initializers, _lastAccessedAt_extraInitializers);
129
- __esDecorate(null, null, _ipAddress_decorators, { kind: "field", name: "ipAddress", static: false, private: false, access: { has: obj => "ipAddress" in obj, get: obj => obj.ipAddress, set: (obj, value) => { obj.ipAddress = value; } }, metadata: _metadata }, _ipAddress_initializers, _ipAddress_extraInitializers);
130
- __esDecorate(null, null, _score_decorators, { kind: "field", name: "score", static: false, private: false, access: { has: obj => "score" in obj, get: obj => obj.score, set: (obj, value) => { obj.score = value; } }, metadata: _metadata }, _score_initializers, _score_extraInitializers);
131
- __esDecorate(null, null, _isSpam_decorators, { kind: "field", name: "isSpam", static: false, private: false, access: { has: obj => "isSpam" in obj, get: obj => obj.isSpam, set: (obj, value) => { obj.isSpam = value; } }, metadata: _metadata }, _isSpam_initializers, _isSpam_extraInitializers);
132
- __esDecorate(null, null, _isProxy_decorators, { kind: "field", name: "isProxy", static: false, private: false, access: { has: obj => "isProxy" in obj, get: obj => obj.isProxy, set: (obj, value) => { obj.isProxy = value; } }, metadata: _metadata }, _isProxy_initializers, _isProxy_extraInitializers);
133
- __esDecorate(null, null, _isTor_decorators, { kind: "field", name: "isTor", static: false, private: false, access: { has: obj => "isTor" in obj, get: obj => obj.isTor, set: (obj, value) => { obj.isTor = value; } }, metadata: _metadata }, _isTor_initializers, _isTor_extraInitializers);
134
- __esDecorate(null, null, _isVPN_decorators, { kind: "field", name: "isVPN", static: false, private: false, access: { has: obj => "isVPN" in obj, get: obj => obj.isVPN, set: (obj, value) => { obj.isVPN = value; } }, metadata: _metadata }, _isVPN_initializers, _isVPN_extraInitializers);
135
- __esDecorate(null, null, _country_decorators, { kind: "field", name: "country", static: false, private: false, access: { has: obj => "country" in obj, get: obj => obj.country, set: (obj, value) => { obj.country = value; } }, metadata: _metadata }, _country_initializers, _country_extraInitializers);
136
- __esDecorate(null, null, _asn_decorators, { kind: "field", name: "asn", static: false, private: false, access: { has: obj => "asn" in obj, get: obj => obj.asn, set: (obj, value) => { obj.asn = value; } }, metadata: _metadata }, _asn_initializers, _asn_extraInitializers);
137
- __esDecorate(null, null, _org_decorators, { kind: "field", name: "org", static: false, private: false, access: { has: obj => "org" in obj, get: obj => obj.org, set: (obj, value) => { obj.org = value; } }, metadata: _metadata }, _org_initializers, _org_extraInitializers);
138
- __esDecorate(null, null, _blacklists_decorators, { kind: "field", name: "blacklists", static: false, private: false, access: { has: obj => "blacklists" in obj, get: obj => obj.blacklists, set: (obj, value) => { obj.blacklists = value; } }, metadata: _metadata }, _blacklists_initializers, _blacklists_extraInitializers);
139
- __esDecorate(null, null, _checkCount_decorators, { kind: "field", name: "checkCount", static: false, private: false, access: { has: obj => "checkCount" in obj, get: obj => obj.checkCount, set: (obj, value) => { obj.checkCount = value; } }, metadata: _metadata }, _checkCount_initializers, _checkCount_extraInitializers);
140
- __esDecorate(null, null, _connectionCount_decorators, { kind: "field", name: "connectionCount", static: false, private: false, access: { has: obj => "connectionCount" in obj, get: obj => obj.connectionCount, set: (obj, value) => { obj.connectionCount = value; } }, metadata: _metadata }, _connectionCount_initializers, _connectionCount_extraInitializers);
141
- __esDecorate(null, null, _emailCount_decorators, { kind: "field", name: "emailCount", static: false, private: false, access: { has: obj => "emailCount" in obj, get: obj => obj.emailCount, set: (obj, value) => { obj.emailCount = value; } }, metadata: _metadata }, _emailCount_initializers, _emailCount_extraInitializers);
142
- __esDecorate(null, null, _spamCount_decorators, { kind: "field", name: "spamCount", static: false, private: false, access: { has: obj => "spamCount" in obj, get: obj => obj.spamCount, set: (obj, value) => { obj.spamCount = value; } }, metadata: _metadata }, _spamCount_initializers, _spamCount_extraInitializers);
143
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
144
- CachedIPReputation = _classThis = _classDescriptor.value;
145
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
146
- __runInitializers(_classThis, _classExtraInitializers);
147
- }
148
- // TTL fields from base class (decorators required on concrete class)
149
- createdAt = __runInitializers(this, _createdAt_initializers, new Date());
150
- expiresAt = (__runInitializers(this, _createdAt_extraInitializers), __runInitializers(this, _expiresAt_initializers, new Date(Date.now() + TTL.HOURS_24)));
151
- lastAccessedAt = (__runInitializers(this, _expiresAt_extraInitializers), __runInitializers(this, _lastAccessedAt_initializers, new Date()));
152
- /**
153
- * IP address (unique identifier)
154
- */
155
- ipAddress = (__runInitializers(this, _lastAccessedAt_extraInitializers), __runInitializers(this, _ipAddress_initializers, void 0));
156
- /**
157
- * Reputation score (0-100, higher = better)
158
- */
159
- score = (__runInitializers(this, _ipAddress_extraInitializers), __runInitializers(this, _score_initializers, void 0));
160
- /**
161
- * Whether the IP is flagged as spam source
162
- */
163
- isSpam = (__runInitializers(this, _score_extraInitializers), __runInitializers(this, _isSpam_initializers, void 0));
164
- /**
165
- * Whether the IP is a known proxy
166
- */
167
- isProxy = (__runInitializers(this, _isSpam_extraInitializers), __runInitializers(this, _isProxy_initializers, void 0));
168
- /**
169
- * Whether the IP is a Tor exit node
170
- */
171
- isTor = (__runInitializers(this, _isProxy_extraInitializers), __runInitializers(this, _isTor_initializers, void 0));
172
- /**
173
- * Whether the IP is a VPN endpoint
174
- */
175
- isVPN = (__runInitializers(this, _isTor_extraInitializers), __runInitializers(this, _isVPN_initializers, void 0));
176
- /**
177
- * Country code (ISO 3166-1 alpha-2)
178
- */
179
- country = (__runInitializers(this, _isVPN_extraInitializers), __runInitializers(this, _country_initializers, void 0));
180
- /**
181
- * Autonomous System Number
182
- */
183
- asn = (__runInitializers(this, _country_extraInitializers), __runInitializers(this, _asn_initializers, void 0));
184
- /**
185
- * Organization name
186
- */
187
- org = (__runInitializers(this, _asn_extraInitializers), __runInitializers(this, _org_initializers, void 0));
188
- /**
189
- * List of blacklists the IP appears on
190
- */
191
- blacklists = (__runInitializers(this, _org_extraInitializers), __runInitializers(this, _blacklists_initializers, void 0));
192
- /**
193
- * Number of times this IP has been checked
194
- */
195
- checkCount = (__runInitializers(this, _blacklists_extraInitializers), __runInitializers(this, _checkCount_initializers, 0));
196
- /**
197
- * Number of connections from this IP
198
- */
199
- connectionCount = (__runInitializers(this, _checkCount_extraInitializers), __runInitializers(this, _connectionCount_initializers, 0));
200
- /**
201
- * Number of emails received from this IP
202
- */
203
- emailCount = (__runInitializers(this, _connectionCount_extraInitializers), __runInitializers(this, _emailCount_initializers, 0));
204
- /**
205
- * Number of spam emails from this IP
206
- */
207
- spamCount = (__runInitializers(this, _emailCount_extraInitializers), __runInitializers(this, _spamCount_initializers, 0));
208
- constructor() {
209
- super();
210
- __runInitializers(this, _spamCount_extraInitializers);
211
- this.setTTL(TTL.HOURS_24); // Default 24-hour TTL
212
- this.blacklists = [];
213
- this.score = 50; // Default neutral score
214
- this.isSpam = false;
215
- this.isProxy = false;
216
- this.isTor = false;
217
- this.isVPN = false;
218
- }
219
- /**
220
- * Create from reputation data
221
- */
222
- static fromReputationData(ipAddress, data) {
223
- const cached = new CachedIPReputation();
224
- cached.ipAddress = ipAddress;
225
- cached.score = data.score;
226
- cached.isSpam = data.isSpam;
227
- cached.isProxy = data.isProxy;
228
- cached.isTor = data.isTor;
229
- cached.isVPN = data.isVPN;
230
- cached.country = data.country || '';
231
- cached.asn = data.asn || '';
232
- cached.org = data.org || '';
233
- cached.blacklists = data.blacklists || [];
234
- cached.checkCount = 1;
235
- return cached;
236
- }
237
- /**
238
- * Convert to reputation data object
239
- */
240
- toReputationData() {
241
- this.touch();
242
- return {
243
- score: this.score,
244
- isSpam: this.isSpam,
245
- isProxy: this.isProxy,
246
- isTor: this.isTor,
247
- isVPN: this.isVPN,
248
- country: this.country,
249
- asn: this.asn,
250
- org: this.org,
251
- blacklists: this.blacklists,
252
- };
253
- }
254
- /**
255
- * Find by IP address
256
- */
257
- static async findByIP(ipAddress) {
258
- return await CachedIPReputation.getInstance({
259
- ipAddress,
260
- });
261
- }
262
- /**
263
- * Find all IPs flagged as spam
264
- */
265
- static async findSpamIPs() {
266
- return await CachedIPReputation.getInstances({
267
- isSpam: true,
268
- });
269
- }
270
- /**
271
- * Find IPs with score below threshold
272
- */
273
- static async findLowScoreIPs(threshold) {
274
- return await CachedIPReputation.getInstances({
275
- score: { $lt: threshold },
276
- });
277
- }
278
- /**
279
- * Record a connection from this IP
280
- */
281
- recordConnection() {
282
- this.connectionCount++;
283
- this.touch();
284
- }
285
- /**
286
- * Record an email from this IP
287
- */
288
- recordEmail(isSpam = false) {
289
- this.emailCount++;
290
- if (isSpam) {
291
- this.spamCount++;
292
- }
293
- this.touch();
294
- }
295
- /**
296
- * Update the reputation data
297
- */
298
- updateReputation(data) {
299
- this.score = data.score;
300
- this.isSpam = data.isSpam;
301
- this.isProxy = data.isProxy;
302
- this.isTor = data.isTor;
303
- this.isVPN = data.isVPN;
304
- this.country = data.country || this.country;
305
- this.asn = data.asn || this.asn;
306
- this.org = data.org || this.org;
307
- this.blacklists = data.blacklists || this.blacklists;
308
- this.checkCount++;
309
- this.touch();
310
- // Refresh TTL on update
311
- this.setTTL(TTL.HOURS_24);
312
- }
313
- /**
314
- * Check if this IP should be blocked
315
- */
316
- shouldBlock() {
317
- return this.isSpam || this.score < 20 || this.blacklists.length > 2;
318
- }
319
- };
320
- return CachedIPReputation = _classThis;
321
- })();
322
- export { CachedIPReputation };
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZWQuaXAucmVwdXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL2NhY2hlL2RvY3VtZW50cy9jbGFzc2VzLmNhY2hlZC5pcC5yZXB1dGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhEOztHQUVHO0FBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBaUJsRDs7Ozs7R0FLRztJQUVVLGtCQUFrQjs0QkFEOUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Ozs7c0JBQ0osY0FBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBdEIsU0FBUSxXQUFrQzs7OztxQ0FFdkUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7cUNBR3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFOzBDQUd4QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtxQ0FNeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFDdkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7aUNBTXhCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO2tDQU14QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTttQ0FNeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7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
@@ -1,2 +0,0 @@
1
- export * from './classes.cached.email.js';
2
- export * from './classes.cached.ip.reputation.js';
@@ -1,3 +0,0 @@
1
- export * from './classes.cached.email.js';
2
- export * from './classes.cached.ip.reputation.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9jYWNoZS9kb2N1bWVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1DQUFtQyxDQUFDIn0=
@@ -1,4 +0,0 @@
1
- export * from './classes.cachedb.js';
2
- export * from './classes.cached.document.js';
3
- export * from './classes.cache.cleaner.js';
4
- export * from './documents/index.js';
@@ -1,7 +0,0 @@
1
- // Core cache infrastructure
2
- export * from './classes.cachedb.js';
3
- export * from './classes.cached.document.js';
4
- export * from './classes.cache.cleaner.js';
5
- // Document classes
6
- export * from './documents/index.js';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jYWNoZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsbUJBQW1CO0FBQ25CLGNBQWMsc0JBQXNCLENBQUMifQ==
@@ -1,54 +0,0 @@
1
- import type { StorageManager } from './storage/index.js';
2
- /**
3
- * Manages certificate provisioning scheduling with:
4
- * - Per-domain exponential backoff persisted in StorageManager
5
- *
6
- * Note: Serial stagger queue was removed — smartacme v9 handles
7
- * concurrency, per-domain dedup, and rate limiting internally.
8
- */
9
- export declare class CertProvisionScheduler {
10
- private storageManager;
11
- private maxBackoffHours;
12
- private backoffCache;
13
- constructor(storageManager: StorageManager, options?: {
14
- maxBackoffHours?: number;
15
- });
16
- /**
17
- * Storage key for a domain's backoff entry
18
- */
19
- private backoffKey;
20
- /**
21
- * Load backoff entry from storage (with in-memory cache)
22
- */
23
- private loadBackoff;
24
- /**
25
- * Save backoff entry to both cache and storage
26
- */
27
- private saveBackoff;
28
- /**
29
- * Check if a domain is currently in backoff.
30
- * Expired entries are pruned from the cache to prevent unbounded growth.
31
- */
32
- isInBackoff(domain: string): Promise<boolean>;
33
- /**
34
- * Record a provisioning failure for a domain.
35
- * Sets exponential backoff: min(failures^2 * 1h, maxBackoffHours)
36
- */
37
- recordFailure(domain: string, error?: string): Promise<void>;
38
- /**
39
- * Clear backoff for a domain (on success or manual override)
40
- */
41
- clearBackoff(domain: string): Promise<void>;
42
- /**
43
- * Clear all in-memory backoff cache entries
44
- */
45
- clear(): void;
46
- /**
47
- * Get backoff info for UI display
48
- */
49
- getBackoffInfo(domain: string): Promise<{
50
- failures: number;
51
- retryAfter?: string;
52
- lastError?: string;
53
- } | null>;
54
- }
@@ -1,118 +0,0 @@
1
- import { logger } from './logger.js';
2
- /**
3
- * Manages certificate provisioning scheduling with:
4
- * - Per-domain exponential backoff persisted in StorageManager
5
- *
6
- * Note: Serial stagger queue was removed — smartacme v9 handles
7
- * concurrency, per-domain dedup, and rate limiting internally.
8
- */
9
- export class CertProvisionScheduler {
10
- storageManager;
11
- maxBackoffHours;
12
- // In-memory backoff cache (mirrors storage for fast lookups)
13
- backoffCache = new Map();
14
- constructor(storageManager, options) {
15
- this.storageManager = storageManager;
16
- this.maxBackoffHours = options?.maxBackoffHours ?? 24;
17
- }
18
- /**
19
- * Storage key for a domain's backoff entry
20
- */
21
- backoffKey(domain) {
22
- const clean = domain.replace(/\*/g, '_wildcard_').replace(/[^a-zA-Z0-9._-]/g, '_');
23
- return `/cert-backoff/${clean}`;
24
- }
25
- /**
26
- * Load backoff entry from storage (with in-memory cache)
27
- */
28
- async loadBackoff(domain) {
29
- const cached = this.backoffCache.get(domain);
30
- if (cached)
31
- return cached;
32
- const entry = await this.storageManager.getJSON(this.backoffKey(domain));
33
- if (entry) {
34
- this.backoffCache.set(domain, entry);
35
- }
36
- return entry;
37
- }
38
- /**
39
- * Save backoff entry to both cache and storage
40
- */
41
- async saveBackoff(domain, entry) {
42
- this.backoffCache.set(domain, entry);
43
- await this.storageManager.setJSON(this.backoffKey(domain), entry);
44
- }
45
- /**
46
- * Check if a domain is currently in backoff.
47
- * Expired entries are pruned from the cache to prevent unbounded growth.
48
- */
49
- async isInBackoff(domain) {
50
- const entry = await this.loadBackoff(domain);
51
- if (!entry)
52
- return false;
53
- const retryAfter = new Date(entry.retryAfter);
54
- if (retryAfter.getTime() > Date.now()) {
55
- return true;
56
- }
57
- // Backoff has expired — prune the stale entry
58
- this.backoffCache.delete(domain);
59
- return false;
60
- }
61
- /**
62
- * Record a provisioning failure for a domain.
63
- * Sets exponential backoff: min(failures^2 * 1h, maxBackoffHours)
64
- */
65
- async recordFailure(domain, error) {
66
- const existing = await this.loadBackoff(domain);
67
- const failures = (existing?.failures ?? 0) + 1;
68
- // Exponential backoff: failures^2 hours, capped
69
- const backoffHours = Math.min(failures * failures, this.maxBackoffHours);
70
- const retryAfter = new Date(Date.now() + backoffHours * 60 * 60 * 1000);
71
- const entry = {
72
- failures,
73
- lastFailure: new Date().toISOString(),
74
- retryAfter: retryAfter.toISOString(),
75
- lastError: error,
76
- };
77
- await this.saveBackoff(domain, entry);
78
- logger.log('warn', `Cert backoff for ${domain}: ${failures} failures, retry after ${retryAfter.toISOString()}`);
79
- }
80
- /**
81
- * Clear backoff for a domain (on success or manual override)
82
- */
83
- async clearBackoff(domain) {
84
- this.backoffCache.delete(domain);
85
- try {
86
- await this.storageManager.delete(this.backoffKey(domain));
87
- }
88
- catch {
89
- // Ignore delete errors (key may not exist)
90
- }
91
- }
92
- /**
93
- * Clear all in-memory backoff cache entries
94
- */
95
- clear() {
96
- this.backoffCache.clear();
97
- }
98
- /**
99
- * Get backoff info for UI display
100
- */
101
- async getBackoffInfo(domain) {
102
- const entry = await this.loadBackoff(domain);
103
- if (!entry)
104
- return null;
105
- // Only return if still in backoff — prune expired entries
106
- const retryAfter = new Date(entry.retryAfter);
107
- if (retryAfter.getTime() <= Date.now()) {
108
- this.backoffCache.delete(domain);
109
- return null;
110
- }
111
- return {
112
- failures: entry.failures,
113
- retryAfter: entry.retryAfter,
114
- lastError: entry.lastError,
115
- };
116
- }
117
- }
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jZXJ0LXByb3Zpc2lvbi1zY2hlZHVsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9jbGFzc2VzLmNlcnQtcHJvdmlzaW9uLXNjaGVkdWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBVXJDOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDekIsY0FBYyxDQUFpQjtJQUMvQixlQUFlLENBQVM7SUFFaEMsNkRBQTZEO0lBQ3JELFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztJQUV4RCxZQUNFLGNBQThCLEVBQzlCLE9BQXNDO1FBRXRDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssVUFBVSxDQUFDLE1BQWM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25GLE9BQU8saUJBQWlCLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYztRQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUUxQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFnQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDeEYsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElB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