@serve.zone/dcrouter 17.7.1 → 17.8.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 (77) hide show
  1. package/deno.json +1 -1
  2. package/dist_serve/bundle.js +410 -410
  3. package/dist_ts/00_commitinfo_data.js +1 -1
  4. package/dist_ts/classes.dcrouter.d.ts +2 -0
  5. package/dist_ts/classes.dcrouter.js +23 -1
  6. package/dist_ts/config/classes.gateway-client-manager.js +3 -1
  7. package/dist_ts/db/documents/classes.cached.email.d.ts +7 -0
  8. package/dist_ts/db/documents/classes.cached.email.js +52 -2
  9. package/dist_ts/db/documents/classes.webpush-admission.doc.d.ts +19 -0
  10. package/dist_ts/db/documents/classes.webpush-admission.doc.js +124 -0
  11. package/dist_ts/db/documents/classes.webpush-binding.doc.d.ts +65 -0
  12. package/dist_ts/db/documents/classes.webpush-binding.doc.js +205 -0
  13. package/dist_ts/db/documents/classes.webpush-spool.doc.d.ts +44 -0
  14. package/dist_ts/db/documents/classes.webpush-spool.doc.js +277 -0
  15. package/dist_ts/db/documents/index.d.ts +3 -0
  16. package/dist_ts/db/documents/index.js +5 -1
  17. package/dist_ts/email/classes.accepted-email-spool.d.ts +5 -0
  18. package/dist_ts/email/classes.accepted-email-spool.js +28 -3
  19. package/dist_ts/email/classes.workapp-mail-manager.d.ts +5 -1
  20. package/dist_ts/email/classes.workapp-mail-manager.js +87 -12
  21. package/dist_ts/index.d.ts +1 -0
  22. package/dist_ts/index.js +3 -1
  23. package/dist_ts/opsserver/classes.opsserver.d.ts +2 -0
  24. package/dist_ts/opsserver/classes.opsserver.js +5 -1
  25. package/dist_ts/opsserver/handlers/gatewayclient.handler.js +11 -5
  26. package/dist_ts/opsserver/handlers/index.d.ts +2 -0
  27. package/dist_ts/opsserver/handlers/index.js +3 -1
  28. package/dist_ts/opsserver/handlers/webpush-app.handler.d.ts +9 -0
  29. package/dist_ts/opsserver/handlers/webpush-app.handler.js +66 -0
  30. package/dist_ts/opsserver/handlers/webpush-control.handler.d.ts +14 -0
  31. package/dist_ts/opsserver/handlers/webpush-control.handler.js +163 -0
  32. package/dist_ts/plugins.d.ts +5 -2
  33. package/dist_ts/plugins.js +6 -3
  34. package/dist_ts/webpush/classes.webpush-crypto.d.ts +38 -0
  35. package/dist_ts/webpush/classes.webpush-crypto.js +231 -0
  36. package/dist_ts/webpush/classes.webpush-manager.d.ts +153 -0
  37. package/dist_ts/webpush/classes.webpush-manager.js +2374 -0
  38. package/dist_ts/webpush/classes.webpush-transport.d.ts +45 -0
  39. package/dist_ts/webpush/classes.webpush-transport.js +161 -0
  40. package/dist_ts/webpush/helpers.webpush-endpoint.d.ts +21 -0
  41. package/dist_ts/webpush/helpers.webpush-endpoint.js +111 -0
  42. package/dist_ts/webpush/index.d.ts +4 -0
  43. package/dist_ts/webpush/index.js +5 -0
  44. package/dist_ts/webpush/webpush-indexes.d.ts +11 -0
  45. package/dist_ts/webpush/webpush-indexes.js +123 -0
  46. package/dist_ts_interfaces/data/route-management.d.ts +2 -0
  47. package/dist_ts_interfaces/data/route-management.js +1 -1
  48. package/dist_ts_migrations/index.js +221 -11
  49. package/dist_ts_web/00_commitinfo_data.js +1 -1
  50. package/package.json +12 -8
  51. package/readme.md +27 -0
  52. package/third-party-notices.md +37 -0
  53. package/ts/00_commitinfo_data.ts +1 -1
  54. package/ts/classes.dcrouter.ts +29 -0
  55. package/ts/config/classes.gateway-client-manager.ts +2 -0
  56. package/ts/db/documents/classes.cached.email.ts +47 -0
  57. package/ts/db/documents/classes.webpush-admission.doc.ts +48 -0
  58. package/ts/db/documents/classes.webpush-binding.doc.ts +147 -0
  59. package/ts/db/documents/classes.webpush-spool.doc.ts +136 -0
  60. package/ts/db/documents/index.ts +5 -0
  61. package/ts/email/classes.accepted-email-spool.ts +41 -2
  62. package/ts/email/classes.workapp-mail-manager.ts +97 -10
  63. package/ts/index.ts +3 -0
  64. package/ts/opsserver/classes.opsserver.ts +4 -0
  65. package/ts/opsserver/handlers/gatewayclient.handler.ts +10 -3
  66. package/ts/opsserver/handlers/index.ts +2 -0
  67. package/ts/opsserver/handlers/webpush-app.handler.ts +105 -0
  68. package/ts/opsserver/handlers/webpush-control.handler.ts +257 -0
  69. package/ts/plugins.ts +6 -0
  70. package/ts/webpush/classes.webpush-crypto.ts +306 -0
  71. package/ts/webpush/classes.webpush-manager.ts +3173 -0
  72. package/ts/webpush/classes.webpush-transport.ts +241 -0
  73. package/ts/webpush/helpers.webpush-endpoint.ts +150 -0
  74. package/ts/webpush/index.ts +4 -0
  75. package/ts/webpush/webpush-indexes.ts +141 -0
  76. package/ts_web/00_commitinfo_data.ts +1 -1
  77. package/readme.plan.md +0 -22
@@ -10,6 +10,8 @@ const defaultCapabilities = {
10
10
  manageMail: false,
11
11
  readCertificates: false,
12
12
  requestCertificates: false,
13
+ readWebPush: false,
14
+ manageWebPush: false,
13
15
  };
14
16
  export class GatewayClientManager {
15
17
  async initialize() { }
@@ -462,4 +464,4 @@ export class GatewayClientManager {
462
464
  };
463
465
  }
464
466
  }
465
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5nYXRld2F5LWNsaWVudC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvY29uZmlnL2NsYXNzZXMuZ2F0ZXdheS1jbGllbnQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsZ0JBQWdCLEdBRWpCLE1BQU0sZ0JBQWdCLENBQUM7QUFxQnhCLE1BQU0sbUJBQW1CLEdBQW1DO0lBQzFELFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsVUFBVSxFQUFFLEtBQUs7SUFDakIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixtQkFBbUIsRUFBRSxLQUFLO0NBQzNCLENBQUM7QUFFRixNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLEtBQUssQ0FBQyxVQUFVLEtBQW1CLENBQUM7SUFFcEMsS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFVO1FBQy9CLE1BQU0sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0MsQ0FBQztJQUVN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
467
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5nYXRld2F5LWNsaWVudC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvY29uZmlnL2NsYXNzZXMuZ2F0ZXdheS1jbGllbnQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsZ0JBQWdCLEdBRWpCLE1BQU0sZ0JBQWdCLENBQUM7QUFxQnhCLE1BQU0sbUJBQW1CLEdBQW1DO0lBQzFELFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsVUFBVSxFQUFFLEtBQUs7SUFDakIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixtQkFBbUIsRUFBRSxLQUFLO0lBQzFCLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLGFBQWEsRUFBRSxLQUFLO0NBQ3JCLENBQUM7QUFFRixNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLEtBQUssQ0FBQyxVQUFVLEtBQW1CLENBQUM7SUFFcEMsS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFVO1FBQy9CLE1BQU0sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FB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
@@ -80,6 +80,12 @@ export declare class CachedEmail extends plugins.smartdata.SmartdataCachedDocume
80
80
  rawContentObjectKey?: string;
81
81
  /** Raw RFC822 message size in bytes. */
82
82
  rawContentSize: number;
83
+ /** Resolved outbound identity id that scopes a service-mail replay key. */
84
+ submissionCredentialId?: string;
85
+ /** Caller-supplied replay key. It must remain absent for non-idempotent mail. */
86
+ submissionIdempotencyKey?: string;
87
+ /** Digest of the exact authenticated outbound submission semantics. */
88
+ submissionDigest?: string;
83
89
  /** Bounded durable SMTP transaction history copied from SmartMTA. */
84
90
  smtpTransactions: ICachedEmailSmtpTransaction[];
85
91
  /**
@@ -148,6 +154,7 @@ export declare class CachedEmail extends plugins.smartdata.SmartdataCachedDocume
148
154
  dkimSigned: boolean;
149
155
  constructor();
150
156
  createSavableObject(): Promise<CachedEmail>;
157
+ static findBySubmissionIdempotencyKey(credentialIdArg: string, idempotencyKeyArg: string): Promise<CachedEmail | null>;
151
158
  /**
152
159
  * Create a new CachedEmail with a unique ID
153
160
  */
@@ -81,6 +81,15 @@ let CachedEmail = (() => {
81
81
  let _rawContentSize_decorators;
82
82
  let _rawContentSize_initializers = [];
83
83
  let _rawContentSize_extraInitializers = [];
84
+ let _submissionCredentialId_decorators;
85
+ let _submissionCredentialId_initializers = [];
86
+ let _submissionCredentialId_extraInitializers = [];
87
+ let _submissionIdempotencyKey_decorators;
88
+ let _submissionIdempotencyKey_initializers = [];
89
+ let _submissionIdempotencyKey_extraInitializers = [];
90
+ let _submissionDigest_decorators;
91
+ let _submissionDigest_initializers = [];
92
+ let _submissionDigest_extraInitializers = [];
84
93
  let _smtpTransactions_decorators;
85
94
  let _smtpTransactions_initializers = [];
86
95
  let _smtpTransactions_extraInitializers = [];
@@ -146,6 +155,9 @@ let CachedEmail = (() => {
146
155
  _rawContent_decorators = [plugins.smartdata.svDb()];
147
156
  _rawContentObjectKey_decorators = [plugins.smartdata.svDb()];
148
157
  _rawContentSize_decorators = [plugins.smartdata.svDb()];
158
+ _submissionCredentialId_decorators = [plugins.smartdata.svDb()];
159
+ _submissionIdempotencyKey_decorators = [plugins.smartdata.svDb()];
160
+ _submissionDigest_decorators = [plugins.smartdata.svDb()];
149
161
  _smtpTransactions_decorators = [plugins.smartdata.svDb()];
150
162
  _status_decorators = [plugins.smartdata.index(), plugins.smartdata.svDb()];
151
163
  _attachmentCount_decorators = [plugins.smartdata.svDb()];
@@ -173,6 +185,9 @@ let CachedEmail = (() => {
173
185
  __esDecorate(null, null, _rawContent_decorators, { kind: "field", name: "rawContent", static: false, private: false, access: { has: obj => "rawContent" in obj, get: obj => obj.rawContent, set: (obj, value) => { obj.rawContent = value; } }, metadata: _metadata }, _rawContent_initializers, _rawContent_extraInitializers);
174
186
  __esDecorate(null, null, _rawContentObjectKey_decorators, { kind: "field", name: "rawContentObjectKey", static: false, private: false, access: { has: obj => "rawContentObjectKey" in obj, get: obj => obj.rawContentObjectKey, set: (obj, value) => { obj.rawContentObjectKey = value; } }, metadata: _metadata }, _rawContentObjectKey_initializers, _rawContentObjectKey_extraInitializers);
175
187
  __esDecorate(null, null, _rawContentSize_decorators, { kind: "field", name: "rawContentSize", static: false, private: false, access: { has: obj => "rawContentSize" in obj, get: obj => obj.rawContentSize, set: (obj, value) => { obj.rawContentSize = value; } }, metadata: _metadata }, _rawContentSize_initializers, _rawContentSize_extraInitializers);
188
+ __esDecorate(null, null, _submissionCredentialId_decorators, { kind: "field", name: "submissionCredentialId", static: false, private: false, access: { has: obj => "submissionCredentialId" in obj, get: obj => obj.submissionCredentialId, set: (obj, value) => { obj.submissionCredentialId = value; } }, metadata: _metadata }, _submissionCredentialId_initializers, _submissionCredentialId_extraInitializers);
189
+ __esDecorate(null, null, _submissionIdempotencyKey_decorators, { kind: "field", name: "submissionIdempotencyKey", static: false, private: false, access: { has: obj => "submissionIdempotencyKey" in obj, get: obj => obj.submissionIdempotencyKey, set: (obj, value) => { obj.submissionIdempotencyKey = value; } }, metadata: _metadata }, _submissionIdempotencyKey_initializers, _submissionIdempotencyKey_extraInitializers);
190
+ __esDecorate(null, null, _submissionDigest_decorators, { kind: "field", name: "submissionDigest", static: false, private: false, access: { has: obj => "submissionDigest" in obj, get: obj => obj.submissionDigest, set: (obj, value) => { obj.submissionDigest = value; } }, metadata: _metadata }, _submissionDigest_initializers, _submissionDigest_extraInitializers);
176
191
  __esDecorate(null, null, _smtpTransactions_decorators, { kind: "field", name: "smtpTransactions", static: false, private: false, access: { has: obj => "smtpTransactions" in obj, get: obj => obj.smtpTransactions, set: (obj, value) => { obj.smtpTransactions = value; } }, metadata: _metadata }, _smtpTransactions_initializers, _smtpTransactions_extraInitializers);
177
192
  __esDecorate(null, null, _status_decorators, { kind: "field", name: "status", static: false, private: false, access: { has: obj => "status" in obj, get: obj => obj.status, set: (obj, value) => { obj.status = value; } }, metadata: _metadata }, _status_initializers, _status_extraInitializers);
178
193
  __esDecorate(null, null, _attachmentCount_decorators, { kind: "field", name: "attachmentCount", static: false, private: false, access: { has: obj => "attachmentCount" in obj, get: obj => obj.attachmentCount, set: (obj, value) => { obj.attachmentCount = value; } }, metadata: _metadata }, _attachmentCount_initializers, _attachmentCount_extraInitializers);
@@ -229,8 +244,14 @@ let CachedEmail = (() => {
229
244
  rawContentObjectKey = (__runInitializers(this, _rawContent_extraInitializers), __runInitializers(this, _rawContentObjectKey_initializers, void 0));
230
245
  /** Raw RFC822 message size in bytes. */
231
246
  rawContentSize = (__runInitializers(this, _rawContentObjectKey_extraInitializers), __runInitializers(this, _rawContentSize_initializers, 0));
247
+ /** Resolved outbound identity id that scopes a service-mail replay key. */
248
+ submissionCredentialId = (__runInitializers(this, _rawContentSize_extraInitializers), __runInitializers(this, _submissionCredentialId_initializers, void 0));
249
+ /** Caller-supplied replay key. It must remain absent for non-idempotent mail. */
250
+ submissionIdempotencyKey = (__runInitializers(this, _submissionCredentialId_extraInitializers), __runInitializers(this, _submissionIdempotencyKey_initializers, void 0));
251
+ /** Digest of the exact authenticated outbound submission semantics. */
252
+ submissionDigest = (__runInitializers(this, _submissionIdempotencyKey_extraInitializers), __runInitializers(this, _submissionDigest_initializers, void 0));
232
253
  /** Bounded durable SMTP transaction history copied from SmartMTA. */
233
- smtpTransactions = (__runInitializers(this, _rawContentSize_extraInitializers), __runInitializers(this, _smtpTransactions_initializers, []));
254
+ smtpTransactions = (__runInitializers(this, _submissionDigest_extraInitializers), __runInitializers(this, _smtpTransactions_initializers, []));
234
255
  /**
235
256
  * Current status of the email
236
257
  */
@@ -306,11 +327,40 @@ let CachedEmail = (() => {
306
327
  }
307
328
  async createSavableObject() {
308
329
  const savableObject = await super.createSavableObject();
330
+ const submissionFields = [
331
+ this.submissionCredentialId,
332
+ this.submissionIdempotencyKey,
333
+ this.submissionDigest,
334
+ ];
335
+ if (submissionFields.every((valueArg) => valueArg === undefined)) {
336
+ delete savableObject.submissionCredentialId;
337
+ delete savableObject.submissionIdempotencyKey;
338
+ delete savableObject.submissionDigest;
339
+ }
340
+ else if (typeof this.submissionCredentialId !== 'string'
341
+ || !/^[A-Za-z0-9][A-Za-z0-9._:-]{0,199}$/.test(this.submissionCredentialId)
342
+ || typeof this.submissionIdempotencyKey !== 'string'
343
+ || !/^[A-Za-z0-9][A-Za-z0-9:._/-]{0,199}$/.test(this.submissionIdempotencyKey)
344
+ || typeof this.submissionDigest !== 'string'
345
+ || !/^sha256:[a-f0-9]{64}$/.test(this.submissionDigest)) {
346
+ throw new Error('CachedEmail submission idempotency metadata is invalid');
347
+ }
309
348
  if (this.rawContentObjectKey) {
310
349
  delete savableObject.rawContent;
311
350
  }
312
351
  return savableObject;
313
352
  }
353
+ static async findBySubmissionIdempotencyKey(credentialIdArg, idempotencyKeyArg) {
354
+ if (typeof credentialIdArg !== 'string'
355
+ || !/^[A-Za-z0-9][A-Za-z0-9._:-]{0,199}$/.test(credentialIdArg)
356
+ || typeof idempotencyKeyArg !== 'string'
357
+ || !/^[A-Za-z0-9][A-Za-z0-9:._/-]{0,199}$/.test(idempotencyKeyArg))
358
+ throw new Error('CachedEmail submission idempotency selector is invalid');
359
+ return await CachedEmail.getInstance({
360
+ submissionCredentialId: credentialIdArg,
361
+ submissionIdempotencyKey: idempotencyKeyArg,
362
+ });
363
+ }
314
364
  /**
315
365
  * Create a new CachedEmail with a unique ID
316
366
  */
@@ -468,4 +518,4 @@ let CachedEmail = (() => {
468
518
  return CachedEmail = _classThis;
469
519
  })();
470
520
  export { CachedEmail };
471
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZWQuZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9kYi9kb2N1bWVudHMvY2xhc3Nlcy5jYWNoZWQuZW1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUM7QUE2RGpEOztHQUVHO0FBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBRXJEOzs7OztHQUtHO0lBRVUsV0FBVzs0QkFEdkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Ozs7c0JBQ1gsT0FBTyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBQWpELFNBQVEsV0FBc0Q7Ozs7OEJBSXBGLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQ3ZCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO3FDQU14QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtnQ0FNeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7OEJBTXhCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFOzhCQU14QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTsrQkFNeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7bUNBTXhC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
521
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZWQuZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9kYi9kb2N1bWVudHMvY2xhc3Nlcy5jYWNoZWQuZW1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUM7QUE2RGpEOztHQUVHO0FBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBRXJEOzs7OztHQUtHO0lBRVUsV0FBVzs0QkFEdkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Ozs7c0JBQ1gsT0FBTyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBQWpELFNBQVEsV0FBc0Q7Ozs7OEJBSXBGLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQ3ZCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO3FDQU14QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtnQ0FNeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7OEJBTXhCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFOzhCQU14QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTsrQkFNeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVB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
@@ -0,0 +1,19 @@
1
+ import * as plugins from '../../plugins.js';
2
+ /**
3
+ * Durable, binding-scoped Web Push admission counters.
4
+ *
5
+ * A credential rotation must not reset these counters, so the stable binding
6
+ * id and lifecycle generation are the authority rather than a credential id.
7
+ */
8
+ export declare class WebPushAdmissionDoc extends plugins.smartdata.SmartDataDbDoc<WebPushAdmissionDoc, WebPushAdmissionDoc> {
9
+ bindingId: string;
10
+ lifecycleGeneration: number;
11
+ shortWindowStartedAt: number;
12
+ shortWindowCount: number;
13
+ longWindowStartedAt: number;
14
+ longWindowCount: number;
15
+ revision: number;
16
+ updatedAt: number;
17
+ purgeAt: Date;
18
+ static getNativeCollection(): plugins.smartdata.SmartdataCollection<WebPushAdmissionDoc>['mongoDbCollection'];
19
+ }
@@ -0,0 +1,124 @@
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 { DcRouterDb } from '../classes.dcrouter-db.js';
37
+ const getDb = () => DcRouterDb.getInstance().getDb();
38
+ /**
39
+ * Durable, binding-scoped Web Push admission counters.
40
+ *
41
+ * A credential rotation must not reset these counters, so the stable binding
42
+ * id and lifecycle generation are the authority rather than a credential id.
43
+ */
44
+ let WebPushAdmissionDoc = (() => {
45
+ let _classDecorators = [plugins.smartdata.Collection(() => getDb())];
46
+ let _classDescriptor;
47
+ let _classExtraInitializers = [];
48
+ let _classThis;
49
+ let _classSuper = plugins.smartdata.SmartDataDbDoc;
50
+ let _bindingId_decorators;
51
+ let _bindingId_initializers = [];
52
+ let _bindingId_extraInitializers = [];
53
+ let _lifecycleGeneration_decorators;
54
+ let _lifecycleGeneration_initializers = [];
55
+ let _lifecycleGeneration_extraInitializers = [];
56
+ let _shortWindowStartedAt_decorators;
57
+ let _shortWindowStartedAt_initializers = [];
58
+ let _shortWindowStartedAt_extraInitializers = [];
59
+ let _shortWindowCount_decorators;
60
+ let _shortWindowCount_initializers = [];
61
+ let _shortWindowCount_extraInitializers = [];
62
+ let _longWindowStartedAt_decorators;
63
+ let _longWindowStartedAt_initializers = [];
64
+ let _longWindowStartedAt_extraInitializers = [];
65
+ let _longWindowCount_decorators;
66
+ let _longWindowCount_initializers = [];
67
+ let _longWindowCount_extraInitializers = [];
68
+ let _revision_decorators;
69
+ let _revision_initializers = [];
70
+ let _revision_extraInitializers = [];
71
+ let _updatedAt_decorators;
72
+ let _updatedAt_initializers = [];
73
+ let _updatedAt_extraInitializers = [];
74
+ let _purgeAt_decorators;
75
+ let _purgeAt_initializers = [];
76
+ let _purgeAt_extraInitializers = [];
77
+ var WebPushAdmissionDoc = class extends _classSuper {
78
+ static { _classThis = this; }
79
+ static {
80
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
81
+ _bindingId_decorators = [plugins.smartdata.svDb()];
82
+ _lifecycleGeneration_decorators = [plugins.smartdata.svDb()];
83
+ _shortWindowStartedAt_decorators = [plugins.smartdata.svDb()];
84
+ _shortWindowCount_decorators = [plugins.smartdata.svDb()];
85
+ _longWindowStartedAt_decorators = [plugins.smartdata.svDb()];
86
+ _longWindowCount_decorators = [plugins.smartdata.svDb()];
87
+ _revision_decorators = [plugins.smartdata.svDb()];
88
+ _updatedAt_decorators = [plugins.smartdata.svDb()];
89
+ _purgeAt_decorators = [plugins.smartdata.svDb()];
90
+ __esDecorate(null, null, _bindingId_decorators, { kind: "field", name: "bindingId", static: false, private: false, access: { has: obj => "bindingId" in obj, get: obj => obj.bindingId, set: (obj, value) => { obj.bindingId = value; } }, metadata: _metadata }, _bindingId_initializers, _bindingId_extraInitializers);
91
+ __esDecorate(null, null, _lifecycleGeneration_decorators, { kind: "field", name: "lifecycleGeneration", static: false, private: false, access: { has: obj => "lifecycleGeneration" in obj, get: obj => obj.lifecycleGeneration, set: (obj, value) => { obj.lifecycleGeneration = value; } }, metadata: _metadata }, _lifecycleGeneration_initializers, _lifecycleGeneration_extraInitializers);
92
+ __esDecorate(null, null, _shortWindowStartedAt_decorators, { kind: "field", name: "shortWindowStartedAt", static: false, private: false, access: { has: obj => "shortWindowStartedAt" in obj, get: obj => obj.shortWindowStartedAt, set: (obj, value) => { obj.shortWindowStartedAt = value; } }, metadata: _metadata }, _shortWindowStartedAt_initializers, _shortWindowStartedAt_extraInitializers);
93
+ __esDecorate(null, null, _shortWindowCount_decorators, { kind: "field", name: "shortWindowCount", static: false, private: false, access: { has: obj => "shortWindowCount" in obj, get: obj => obj.shortWindowCount, set: (obj, value) => { obj.shortWindowCount = value; } }, metadata: _metadata }, _shortWindowCount_initializers, _shortWindowCount_extraInitializers);
94
+ __esDecorate(null, null, _longWindowStartedAt_decorators, { kind: "field", name: "longWindowStartedAt", static: false, private: false, access: { has: obj => "longWindowStartedAt" in obj, get: obj => obj.longWindowStartedAt, set: (obj, value) => { obj.longWindowStartedAt = value; } }, metadata: _metadata }, _longWindowStartedAt_initializers, _longWindowStartedAt_extraInitializers);
95
+ __esDecorate(null, null, _longWindowCount_decorators, { kind: "field", name: "longWindowCount", static: false, private: false, access: { has: obj => "longWindowCount" in obj, get: obj => obj.longWindowCount, set: (obj, value) => { obj.longWindowCount = value; } }, metadata: _metadata }, _longWindowCount_initializers, _longWindowCount_extraInitializers);
96
+ __esDecorate(null, null, _revision_decorators, { kind: "field", name: "revision", static: false, private: false, access: { has: obj => "revision" in obj, get: obj => obj.revision, set: (obj, value) => { obj.revision = value; } }, metadata: _metadata }, _revision_initializers, _revision_extraInitializers);
97
+ __esDecorate(null, null, _updatedAt_decorators, { kind: "field", name: "updatedAt", static: false, private: false, access: { has: obj => "updatedAt" in obj, get: obj => obj.updatedAt, set: (obj, value) => { obj.updatedAt = value; } }, metadata: _metadata }, _updatedAt_initializers, _updatedAt_extraInitializers);
98
+ __esDecorate(null, null, _purgeAt_decorators, { kind: "field", name: "purgeAt", static: false, private: false, access: { has: obj => "purgeAt" in obj, get: obj => obj.purgeAt, set: (obj, value) => { obj.purgeAt = value; } }, metadata: _metadata }, _purgeAt_initializers, _purgeAt_extraInitializers);
99
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
100
+ WebPushAdmissionDoc = _classThis = _classDescriptor.value;
101
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
102
+ __runInitializers(_classThis, _classExtraInitializers);
103
+ }
104
+ bindingId = __runInitializers(this, _bindingId_initializers, void 0);
105
+ lifecycleGeneration = (__runInitializers(this, _bindingId_extraInitializers), __runInitializers(this, _lifecycleGeneration_initializers, void 0));
106
+ shortWindowStartedAt = (__runInitializers(this, _lifecycleGeneration_extraInitializers), __runInitializers(this, _shortWindowStartedAt_initializers, void 0));
107
+ shortWindowCount = (__runInitializers(this, _shortWindowStartedAt_extraInitializers), __runInitializers(this, _shortWindowCount_initializers, void 0));
108
+ longWindowStartedAt = (__runInitializers(this, _shortWindowCount_extraInitializers), __runInitializers(this, _longWindowStartedAt_initializers, void 0));
109
+ longWindowCount = (__runInitializers(this, _longWindowStartedAt_extraInitializers), __runInitializers(this, _longWindowCount_initializers, void 0));
110
+ revision = (__runInitializers(this, _longWindowCount_extraInitializers), __runInitializers(this, _revision_initializers, void 0));
111
+ updatedAt = (__runInitializers(this, _revision_extraInitializers), __runInitializers(this, _updatedAt_initializers, void 0));
112
+ purgeAt = (__runInitializers(this, _updatedAt_extraInitializers), __runInitializers(this, _purgeAt_initializers, void 0));
113
+ static getNativeCollection() {
114
+ return getDb().mongoDb.collection('WebPushAdmissionDoc');
115
+ }
116
+ constructor() {
117
+ super(...arguments);
118
+ __runInitializers(this, _purgeAt_extraInitializers);
119
+ }
120
+ };
121
+ return WebPushAdmissionDoc = _classThis;
122
+ })();
123
+ export { WebPushAdmissionDoc };
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy53ZWJwdXNoLWFkbWlzc2lvbi5kb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9kYi9kb2N1bWVudHMvY2xhc3Nlcy53ZWJwdXNoLWFkbWlzc2lvbi5kb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUVyRDs7Ozs7R0FLRztJQUVVLG1CQUFtQjs0QkFEL0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Ozs7c0JBQ0gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQUF4QyxTQUFRLFdBR3hDOzs7O3FDQUNFLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFOytDQUd4QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtnREFHeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7NENBR3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFOytDQUd4QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTsyQ0FHeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7b0NBR3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO3FDQUd4QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTttQ0FHeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUF2QnpCLDZLQUFPLFNBQVMsNkJBQVQsU0FBUyw2RkFBVTtZQUcxQiwyTUFBTyxtQkFBbUIsNkJBQW5CLG1CQUFtQixpSEFBVTtZQUdwQyw4TUFBTyxvQkFBb0IsNkJBQXBCLG9CQUFvQixtSEFBVTtZQUdyQyxrTUFBTyxnQkFBZ0IsNkJBQWhCLGdCQUFnQiwyR0FBVTtZQUdqQywyTUFBTyxtQkFBbUIsNkJBQW5CLG1CQUFtQixpSEFBVTtZQUdwQywrTEFBTyxlQUFlLDZCQUFmLGVBQWUseUdBQVU7WUFHaEMsMEtBQU8sUUFBUSw2QkFBUixRQUFRLDJGQUFVO1lBR3pCLDZLQUFPLFNBQVMsNkJBQVQsU0FBUyw2RkFBVTtZQUcxQix1S0FBTyxPQUFPLDZCQUFQLE9BQU8seUZBQVE7WUE3QnhCLDZLQW1DQzs7O1lBbkNZLHVEQUFtQjs7UUFLdkIsU0FBUyw0REFBVTtRQUduQixtQkFBbUIsK0hBQVU7UUFHN0Isb0JBQW9CLDBJQUFVO1FBRzlCLGdCQUFnQix1SUFBVTtRQUcxQixtQkFBbUIsc0lBQVU7UUFHN0IsZUFBZSxxSUFBVTtRQUd6QixRQUFRLDBIQUFVO1FBR2xCLFNBQVMsb0hBQVU7UUFHbkIsT0FBTyxtSEFBUTtRQUVmLE1BQU0sQ0FBQyxtQkFBbUI7WUFFL0IsT0FBTyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDM0QsQ0FBQzs7Ozs7Ozs7U0FsQ1UsbUJBQW1CIn0=
@@ -0,0 +1,65 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { IWebPushEncryptedEnvelope } from '../../webpush/classes.webpush-crypto.js';
3
+ export interface IWebPushStoredCredential {
4
+ id: string;
5
+ status: plugins.servezoneInterfaces.data.TWebPushCredentialStatus;
6
+ hmacKeyId: string;
7
+ secretHash?: string;
8
+ createdAt: number;
9
+ updatedAt: number;
10
+ lastRotatedAt: number | null;
11
+ validUntil: number | null;
12
+ }
13
+ export interface IWebPushStoredVapidKey {
14
+ id: string;
15
+ publicKey: string;
16
+ status: plugins.servezoneInterfaces.data.TWebPushVapidKeyStatus;
17
+ createdAt: number;
18
+ activatedAt: number | null;
19
+ retireAfter: number | null;
20
+ retiredAt: number | null;
21
+ privateKeyEnvelope?: IWebPushEncryptedEnvelope;
22
+ }
23
+ export interface IWebPushCredentialRotationRecovery {
24
+ requestedCredentialId: string;
25
+ resultingCredentialId: string;
26
+ lifecycleGeneration: number;
27
+ secretEnvelope: IWebPushEncryptedEnvelope;
28
+ createdAt: number;
29
+ expiresAt: number;
30
+ }
31
+ export type TWebPushControllerIntent = 'enabled' | 'disabled' | 'deleted';
32
+ export interface IWebPushStoredControllerFence {
33
+ id: string;
34
+ epoch: string;
35
+ generation: number;
36
+ operationId: string;
37
+ intent: TWebPushControllerIntent;
38
+ requestDigest: string;
39
+ appliedAt: number;
40
+ }
41
+ export declare class WebPushBindingDoc extends plugins.smartdata.SmartDataDbDoc<WebPushBindingDoc, WebPushBindingDoc> {
42
+ id: string;
43
+ ownerGatewayClientType: plugins.servezoneInterfaces.data.TGatewayClientType;
44
+ ownerGatewayClientId: string;
45
+ ownerAppInstanceId: string;
46
+ enabled: boolean;
47
+ status: plugins.servezoneInterfaces.data.TWebPushBindingStatus;
48
+ credential: IWebPushStoredCredential;
49
+ /** At most one still-valid overlap credential; expired entries are scrubbed. */
50
+ previousCredentials: IWebPushStoredCredential[];
51
+ /** MUST BE ABSENT outside the bounded idempotent credential-rotation replay window. */
52
+ credentialRotationRecovery?: IWebPushCredentialRotationRecovery;
53
+ vapidKeys: IWebPushStoredVapidKey[];
54
+ createdAt: number;
55
+ updatedAt: number;
56
+ createdBy: string;
57
+ mutationRevision: number;
58
+ lifecycleGeneration: number;
59
+ /** Highest durably applied controller mutation for this owner-reserving binding. */
60
+ controllerFence?: IWebPushStoredControllerFence;
61
+ /** MUST BE ABSENT unless this owner-reserving binding is a deletion tombstone. */
62
+ deletedAt?: number;
63
+ static getNativeCollection(): plugins.smartdata.SmartdataCollection<WebPushBindingDoc>['mongoDbCollection'];
64
+ createSavableObject(): Promise<WebPushBindingDoc>;
65
+ }