@serve.zone/dcrouter 17.7.1 → 17.9.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 (94) hide show
  1. package/deno.json +1 -1
  2. package/dist_serve/bundle.js +712 -709
  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.db-seeder.js +9 -1
  7. package/dist_ts/config/classes.gateway-client-manager.js +3 -1
  8. package/dist_ts/config/helpers.http-redirects.js +28 -1
  9. package/dist_ts/config/helpers.special-forwards.js +12 -9
  10. package/dist_ts/db/documents/classes.cached.email.d.ts +7 -0
  11. package/dist_ts/db/documents/classes.cached.email.js +52 -2
  12. package/dist_ts/db/documents/classes.webpush-admission.doc.d.ts +19 -0
  13. package/dist_ts/db/documents/classes.webpush-admission.doc.js +124 -0
  14. package/dist_ts/db/documents/classes.webpush-binding.doc.d.ts +65 -0
  15. package/dist_ts/db/documents/classes.webpush-binding.doc.js +205 -0
  16. package/dist_ts/db/documents/classes.webpush-spool.doc.d.ts +44 -0
  17. package/dist_ts/db/documents/classes.webpush-spool.doc.js +277 -0
  18. package/dist_ts/db/documents/index.d.ts +3 -0
  19. package/dist_ts/db/documents/index.js +5 -1
  20. package/dist_ts/email/classes.accepted-email-spool.d.ts +5 -0
  21. package/dist_ts/email/classes.accepted-email-spool.js +28 -3
  22. package/dist_ts/email/classes.email-route-builder.js +5 -1
  23. package/dist_ts/email/classes.workapp-mail-manager.d.ts +5 -1
  24. package/dist_ts/email/classes.workapp-mail-manager.js +87 -12
  25. package/dist_ts/index.d.ts +1 -0
  26. package/dist_ts/index.js +3 -1
  27. package/dist_ts/opsserver/classes.opsserver.d.ts +2 -0
  28. package/dist_ts/opsserver/classes.opsserver.js +5 -1
  29. package/dist_ts/opsserver/handlers/gatewayclient.handler.js +33 -6
  30. package/dist_ts/opsserver/handlers/index.d.ts +2 -0
  31. package/dist_ts/opsserver/handlers/index.js +3 -1
  32. package/dist_ts/opsserver/handlers/webpush-app.handler.d.ts +9 -0
  33. package/dist_ts/opsserver/handlers/webpush-app.handler.js +66 -0
  34. package/dist_ts/opsserver/handlers/webpush-control.handler.d.ts +14 -0
  35. package/dist_ts/opsserver/handlers/webpush-control.handler.js +163 -0
  36. package/dist_ts/plugins.d.ts +5 -2
  37. package/dist_ts/plugins.js +6 -3
  38. package/dist_ts/remoteingress/edge-derivation-routes.js +5 -1
  39. package/dist_ts/security/classes.route-policy-augmenter.d.ts +10 -6
  40. package/dist_ts/security/classes.route-policy-augmenter.js +65 -51
  41. package/dist_ts/webpush/classes.webpush-crypto.d.ts +38 -0
  42. package/dist_ts/webpush/classes.webpush-crypto.js +231 -0
  43. package/dist_ts/webpush/classes.webpush-manager.d.ts +153 -0
  44. package/dist_ts/webpush/classes.webpush-manager.js +2374 -0
  45. package/dist_ts/webpush/classes.webpush-transport.d.ts +45 -0
  46. package/dist_ts/webpush/classes.webpush-transport.js +161 -0
  47. package/dist_ts/webpush/helpers.webpush-endpoint.d.ts +21 -0
  48. package/dist_ts/webpush/helpers.webpush-endpoint.js +111 -0
  49. package/dist_ts/webpush/index.d.ts +4 -0
  50. package/dist_ts/webpush/index.js +5 -0
  51. package/dist_ts/webpush/webpush-indexes.d.ts +11 -0
  52. package/dist_ts/webpush/webpush-indexes.js +123 -0
  53. package/dist_ts_interfaces/data/remoteingress.d.ts +14 -2
  54. package/dist_ts_interfaces/data/route-management.d.ts +2 -0
  55. package/dist_ts_interfaces/data/route-management.js +1 -1
  56. package/dist_ts_migrations/index.js +285 -11
  57. package/dist_ts_web/00_commitinfo_data.js +1 -1
  58. package/dist_ts_web/elements/network/ops-view-routes.js +41 -1
  59. package/dist_ts_web/elements/network/special-forward-dialog.js +2 -2
  60. package/package.json +14 -10
  61. package/readme.md +27 -0
  62. package/third-party-notices.md +37 -0
  63. package/ts/00_commitinfo_data.ts +1 -1
  64. package/ts/classes.dcrouter.ts +29 -0
  65. package/ts/config/classes.db-seeder.ts +8 -0
  66. package/ts/config/classes.gateway-client-manager.ts +2 -0
  67. package/ts/config/helpers.http-redirects.ts +31 -1
  68. package/ts/config/helpers.special-forwards.ts +11 -8
  69. package/ts/db/documents/classes.cached.email.ts +47 -0
  70. package/ts/db/documents/classes.webpush-admission.doc.ts +48 -0
  71. package/ts/db/documents/classes.webpush-binding.doc.ts +147 -0
  72. package/ts/db/documents/classes.webpush-spool.doc.ts +136 -0
  73. package/ts/db/documents/index.ts +5 -0
  74. package/ts/email/classes.accepted-email-spool.ts +41 -2
  75. package/ts/email/classes.email-route-builder.ts +4 -0
  76. package/ts/email/classes.workapp-mail-manager.ts +97 -10
  77. package/ts/index.ts +3 -0
  78. package/ts/opsserver/classes.opsserver.ts +4 -0
  79. package/ts/opsserver/handlers/gatewayclient.handler.ts +34 -4
  80. package/ts/opsserver/handlers/index.ts +2 -0
  81. package/ts/opsserver/handlers/webpush-app.handler.ts +105 -0
  82. package/ts/opsserver/handlers/webpush-control.handler.ts +257 -0
  83. package/ts/plugins.ts +6 -0
  84. package/ts/remoteingress/edge-derivation-routes.ts +4 -0
  85. package/ts/security/classes.route-policy-augmenter.ts +70 -57
  86. package/ts/webpush/classes.webpush-crypto.ts +306 -0
  87. package/ts/webpush/classes.webpush-manager.ts +3173 -0
  88. package/ts/webpush/classes.webpush-transport.ts +241 -0
  89. package/ts/webpush/helpers.webpush-endpoint.ts +150 -0
  90. package/ts/webpush/index.ts +4 -0
  91. package/ts/webpush/webpush-indexes.ts +141 -0
  92. package/ts_web/00_commitinfo_data.ts +1 -1
  93. package/ts_web/elements/network/ops-view-routes.ts +38 -0
  94. package/ts_web/elements/network/special-forward-dialog.ts +1 -1
@@ -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
+ }
@@ -0,0 +1,205 @@
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
+ let WebPushBindingDoc = (() => {
39
+ let _classDecorators = [plugins.smartdata.Collection(() => getDb())];
40
+ let _classDescriptor;
41
+ let _classExtraInitializers = [];
42
+ let _classThis;
43
+ let _classSuper = plugins.smartdata.SmartDataDbDoc;
44
+ let _id_decorators;
45
+ let _id_initializers = [];
46
+ let _id_extraInitializers = [];
47
+ let _ownerGatewayClientType_decorators;
48
+ let _ownerGatewayClientType_initializers = [];
49
+ let _ownerGatewayClientType_extraInitializers = [];
50
+ let _ownerGatewayClientId_decorators;
51
+ let _ownerGatewayClientId_initializers = [];
52
+ let _ownerGatewayClientId_extraInitializers = [];
53
+ let _ownerAppInstanceId_decorators;
54
+ let _ownerAppInstanceId_initializers = [];
55
+ let _ownerAppInstanceId_extraInitializers = [];
56
+ let _enabled_decorators;
57
+ let _enabled_initializers = [];
58
+ let _enabled_extraInitializers = [];
59
+ let _status_decorators;
60
+ let _status_initializers = [];
61
+ let _status_extraInitializers = [];
62
+ let _credential_decorators;
63
+ let _credential_initializers = [];
64
+ let _credential_extraInitializers = [];
65
+ let _previousCredentials_decorators;
66
+ let _previousCredentials_initializers = [];
67
+ let _previousCredentials_extraInitializers = [];
68
+ let _credentialRotationRecovery_decorators;
69
+ let _credentialRotationRecovery_initializers = [];
70
+ let _credentialRotationRecovery_extraInitializers = [];
71
+ let _vapidKeys_decorators;
72
+ let _vapidKeys_initializers = [];
73
+ let _vapidKeys_extraInitializers = [];
74
+ let _createdAt_decorators;
75
+ let _createdAt_initializers = [];
76
+ let _createdAt_extraInitializers = [];
77
+ let _updatedAt_decorators;
78
+ let _updatedAt_initializers = [];
79
+ let _updatedAt_extraInitializers = [];
80
+ let _createdBy_decorators;
81
+ let _createdBy_initializers = [];
82
+ let _createdBy_extraInitializers = [];
83
+ let _mutationRevision_decorators;
84
+ let _mutationRevision_initializers = [];
85
+ let _mutationRevision_extraInitializers = [];
86
+ let _lifecycleGeneration_decorators;
87
+ let _lifecycleGeneration_initializers = [];
88
+ let _lifecycleGeneration_extraInitializers = [];
89
+ let _controllerFence_decorators;
90
+ let _controllerFence_initializers = [];
91
+ let _controllerFence_extraInitializers = [];
92
+ let _deletedAt_decorators;
93
+ let _deletedAt_initializers = [];
94
+ let _deletedAt_extraInitializers = [];
95
+ var WebPushBindingDoc = class extends _classSuper {
96
+ static { _classThis = this; }
97
+ static {
98
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
99
+ _id_decorators = [plugins.smartdata.svDb()];
100
+ _ownerGatewayClientType_decorators = [plugins.smartdata.svDb()];
101
+ _ownerGatewayClientId_decorators = [plugins.smartdata.svDb()];
102
+ _ownerAppInstanceId_decorators = [plugins.smartdata.svDb()];
103
+ _enabled_decorators = [plugins.smartdata.svDb()];
104
+ _status_decorators = [plugins.smartdata.svDb()];
105
+ _credential_decorators = [plugins.smartdata.svDb()];
106
+ _previousCredentials_decorators = [plugins.smartdata.svDb()];
107
+ _credentialRotationRecovery_decorators = [plugins.smartdata.svDb()];
108
+ _vapidKeys_decorators = [plugins.smartdata.svDb()];
109
+ _createdAt_decorators = [plugins.smartdata.svDb()];
110
+ _updatedAt_decorators = [plugins.smartdata.svDb()];
111
+ _createdBy_decorators = [plugins.smartdata.svDb()];
112
+ _mutationRevision_decorators = [plugins.smartdata.svDb()];
113
+ _lifecycleGeneration_decorators = [plugins.smartdata.svDb()];
114
+ _controllerFence_decorators = [plugins.smartdata.svDb()];
115
+ _deletedAt_decorators = [plugins.smartdata.svDb()];
116
+ __esDecorate(null, null, _id_decorators, { kind: "field", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
117
+ __esDecorate(null, null, _ownerGatewayClientType_decorators, { kind: "field", name: "ownerGatewayClientType", static: false, private: false, access: { has: obj => "ownerGatewayClientType" in obj, get: obj => obj.ownerGatewayClientType, set: (obj, value) => { obj.ownerGatewayClientType = value; } }, metadata: _metadata }, _ownerGatewayClientType_initializers, _ownerGatewayClientType_extraInitializers);
118
+ __esDecorate(null, null, _ownerGatewayClientId_decorators, { kind: "field", name: "ownerGatewayClientId", static: false, private: false, access: { has: obj => "ownerGatewayClientId" in obj, get: obj => obj.ownerGatewayClientId, set: (obj, value) => { obj.ownerGatewayClientId = value; } }, metadata: _metadata }, _ownerGatewayClientId_initializers, _ownerGatewayClientId_extraInitializers);
119
+ __esDecorate(null, null, _ownerAppInstanceId_decorators, { kind: "field", name: "ownerAppInstanceId", static: false, private: false, access: { has: obj => "ownerAppInstanceId" in obj, get: obj => obj.ownerAppInstanceId, set: (obj, value) => { obj.ownerAppInstanceId = value; } }, metadata: _metadata }, _ownerAppInstanceId_initializers, _ownerAppInstanceId_extraInitializers);
120
+ __esDecorate(null, null, _enabled_decorators, { kind: "field", name: "enabled", static: false, private: false, access: { has: obj => "enabled" in obj, get: obj => obj.enabled, set: (obj, value) => { obj.enabled = value; } }, metadata: _metadata }, _enabled_initializers, _enabled_extraInitializers);
121
+ __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);
122
+ __esDecorate(null, null, _credential_decorators, { kind: "field", name: "credential", static: false, private: false, access: { has: obj => "credential" in obj, get: obj => obj.credential, set: (obj, value) => { obj.credential = value; } }, metadata: _metadata }, _credential_initializers, _credential_extraInitializers);
123
+ __esDecorate(null, null, _previousCredentials_decorators, { kind: "field", name: "previousCredentials", static: false, private: false, access: { has: obj => "previousCredentials" in obj, get: obj => obj.previousCredentials, set: (obj, value) => { obj.previousCredentials = value; } }, metadata: _metadata }, _previousCredentials_initializers, _previousCredentials_extraInitializers);
124
+ __esDecorate(null, null, _credentialRotationRecovery_decorators, { kind: "field", name: "credentialRotationRecovery", static: false, private: false, access: { has: obj => "credentialRotationRecovery" in obj, get: obj => obj.credentialRotationRecovery, set: (obj, value) => { obj.credentialRotationRecovery = value; } }, metadata: _metadata }, _credentialRotationRecovery_initializers, _credentialRotationRecovery_extraInitializers);
125
+ __esDecorate(null, null, _vapidKeys_decorators, { kind: "field", name: "vapidKeys", static: false, private: false, access: { has: obj => "vapidKeys" in obj, get: obj => obj.vapidKeys, set: (obj, value) => { obj.vapidKeys = value; } }, metadata: _metadata }, _vapidKeys_initializers, _vapidKeys_extraInitializers);
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, _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);
128
+ __esDecorate(null, null, _createdBy_decorators, { kind: "field", name: "createdBy", static: false, private: false, access: { has: obj => "createdBy" in obj, get: obj => obj.createdBy, set: (obj, value) => { obj.createdBy = value; } }, metadata: _metadata }, _createdBy_initializers, _createdBy_extraInitializers);
129
+ __esDecorate(null, null, _mutationRevision_decorators, { kind: "field", name: "mutationRevision", static: false, private: false, access: { has: obj => "mutationRevision" in obj, get: obj => obj.mutationRevision, set: (obj, value) => { obj.mutationRevision = value; } }, metadata: _metadata }, _mutationRevision_initializers, _mutationRevision_extraInitializers);
130
+ __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);
131
+ __esDecorate(null, null, _controllerFence_decorators, { kind: "field", name: "controllerFence", static: false, private: false, access: { has: obj => "controllerFence" in obj, get: obj => obj.controllerFence, set: (obj, value) => { obj.controllerFence = value; } }, metadata: _metadata }, _controllerFence_initializers, _controllerFence_extraInitializers);
132
+ __esDecorate(null, null, _deletedAt_decorators, { kind: "field", name: "deletedAt", static: false, private: false, access: { has: obj => "deletedAt" in obj, get: obj => obj.deletedAt, set: (obj, value) => { obj.deletedAt = value; } }, metadata: _metadata }, _deletedAt_initializers, _deletedAt_extraInitializers);
133
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
134
+ WebPushBindingDoc = _classThis = _classDescriptor.value;
135
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
136
+ __runInitializers(_classThis, _classExtraInitializers);
137
+ }
138
+ id = __runInitializers(this, _id_initializers, void 0);
139
+ ownerGatewayClientType = (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _ownerGatewayClientType_initializers, void 0));
140
+ ownerGatewayClientId = (__runInitializers(this, _ownerGatewayClientType_extraInitializers), __runInitializers(this, _ownerGatewayClientId_initializers, void 0));
141
+ ownerAppInstanceId = (__runInitializers(this, _ownerGatewayClientId_extraInitializers), __runInitializers(this, _ownerAppInstanceId_initializers, void 0));
142
+ enabled = (__runInitializers(this, _ownerAppInstanceId_extraInitializers), __runInitializers(this, _enabled_initializers, void 0));
143
+ status = (__runInitializers(this, _enabled_extraInitializers), __runInitializers(this, _status_initializers, void 0));
144
+ credential = (__runInitializers(this, _status_extraInitializers), __runInitializers(this, _credential_initializers, void 0));
145
+ /** At most one still-valid overlap credential; expired entries are scrubbed. */
146
+ previousCredentials = (__runInitializers(this, _credential_extraInitializers), __runInitializers(this, _previousCredentials_initializers, []));
147
+ /** MUST BE ABSENT outside the bounded idempotent credential-rotation replay window. */
148
+ credentialRotationRecovery = (__runInitializers(this, _previousCredentials_extraInitializers), __runInitializers(this, _credentialRotationRecovery_initializers, void 0));
149
+ vapidKeys = (__runInitializers(this, _credentialRotationRecovery_extraInitializers), __runInitializers(this, _vapidKeys_initializers, []));
150
+ createdAt = (__runInitializers(this, _vapidKeys_extraInitializers), __runInitializers(this, _createdAt_initializers, void 0));
151
+ updatedAt = (__runInitializers(this, _createdAt_extraInitializers), __runInitializers(this, _updatedAt_initializers, void 0));
152
+ createdBy = (__runInitializers(this, _updatedAt_extraInitializers), __runInitializers(this, _createdBy_initializers, void 0));
153
+ mutationRevision = (__runInitializers(this, _createdBy_extraInitializers), __runInitializers(this, _mutationRevision_initializers, void 0));
154
+ lifecycleGeneration = (__runInitializers(this, _mutationRevision_extraInitializers), __runInitializers(this, _lifecycleGeneration_initializers, void 0));
155
+ /** Highest durably applied controller mutation for this owner-reserving binding. */
156
+ controllerFence = (__runInitializers(this, _lifecycleGeneration_extraInitializers), __runInitializers(this, _controllerFence_initializers, void 0));
157
+ /** MUST BE ABSENT unless this owner-reserving binding is a deletion tombstone. */
158
+ deletedAt = (__runInitializers(this, _controllerFence_extraInitializers), __runInitializers(this, _deletedAt_initializers, void 0));
159
+ static getNativeCollection() {
160
+ return getDb().mongoDb.collection('WebPushBindingDoc');
161
+ }
162
+ async createSavableObject() {
163
+ const savable = await super.createSavableObject();
164
+ if (savable.credential.secretHash === undefined) {
165
+ delete savable.credential.secretHash;
166
+ }
167
+ savable.previousCredentials = (savable.previousCredentials || []).map((credentialArg) => ({
168
+ ...credentialArg,
169
+ lastRotatedAt: credentialArg.lastRotatedAt ?? null,
170
+ validUntil: credentialArg.validUntil ?? null,
171
+ })).map((credentialArg) => {
172
+ if (credentialArg.secretHash === undefined)
173
+ delete credentialArg.secretHash;
174
+ return credentialArg;
175
+ });
176
+ if (savable.credentialRotationRecovery === undefined) {
177
+ delete savable.credentialRotationRecovery;
178
+ }
179
+ if (savable.controllerFence === undefined)
180
+ delete savable.controllerFence;
181
+ savable.vapidKeys = (savable.vapidKeys || []).map((keyArg) => {
182
+ const normalized = {
183
+ ...keyArg,
184
+ activatedAt: keyArg.activatedAt ?? null,
185
+ retireAfter: keyArg.retireAfter ?? null,
186
+ retiredAt: keyArg.retiredAt ?? null,
187
+ };
188
+ if (normalized.privateKeyEnvelope === undefined) {
189
+ delete normalized.privateKeyEnvelope;
190
+ }
191
+ return normalized;
192
+ });
193
+ if (savable.deletedAt === undefined)
194
+ delete savable.deletedAt;
195
+ return savable;
196
+ }
197
+ constructor() {
198
+ super(...arguments);
199
+ __runInitializers(this, _deletedAt_extraInitializers);
200
+ }
201
+ };
202
+ return WebPushBindingDoc = _classThis;
203
+ })();
204
+ export { WebPushBindingDoc };
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy53ZWJwdXNoLWJpbmRpbmcuZG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHMvZGIvZG9jdW1lbnRzL2NsYXNzZXMud2VicHVzaC1iaW5kaW5nLmRvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUE4Q3ZELE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUd4QyxpQkFBaUI7NEJBRDdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDOzs7O3NCQUNMLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0FBeEMsU0FBUSxXQUd0Qzs7Ozs4QkFDRSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtrREFHeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7Z0RBR3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFOzhDQUd4QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTttQ0FHeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7a0NBR3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO3NDQUd4QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTsrQ0FJeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7c0RBSXhCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO3FDQUd4QixPQUFPLENBQUMsU0FBUyxDQUFD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
@@ -0,0 +1,44 @@
1
+ import * as plugins from '../../plugins.js';
2
+ import type { IWebPushEncryptedEnvelope } from '../../webpush/classes.webpush-crypto.js';
3
+ export declare class WebPushSpoolDoc extends plugins.smartdata.SmartDataDbDoc<WebPushSpoolDoc, WebPushSpoolDoc> {
4
+ id: string;
5
+ schemaVersion: 1;
6
+ bindingId: string;
7
+ lifecycleGeneration: number;
8
+ /** Credential that created this item; used only for the idempotency namespace. */
9
+ credentialId: string;
10
+ hmacKeyId: string;
11
+ idempotencyKeyDigest: string;
12
+ requestDigest: string;
13
+ subscriptionId: string;
14
+ endpointDigest: string;
15
+ vapidKeyId: string;
16
+ subscriptionEnvelope?: IWebPushEncryptedEnvelope;
17
+ payloadEnvelope?: IWebPushEncryptedEnvelope;
18
+ payloadBytes: number;
19
+ ttlSeconds: number;
20
+ urgency: plugins.servezoneInterfaces.data.TWebPushUrgency;
21
+ topic: string | null;
22
+ state: plugins.servezoneInterfaces.data.TWebPushDeliveryState;
23
+ attempts: number;
24
+ acceptedAt: number;
25
+ updatedAt: number;
26
+ nextAttemptAt: number;
27
+ expiresAt: number;
28
+ /** MUST BE ABSENT while the item is not leased. */
29
+ leaseToken?: string;
30
+ /** MUST BE ABSENT while the item is not leased. */
31
+ leaseExpiresAt?: number;
32
+ /** MUST BE ABSENT until cancellation races with an in-flight send. */
33
+ cancelRequestedAt?: number;
34
+ /** MUST BE ABSENT until an in-flight cancellation records its terminal reason. */
35
+ cancelErrorCode?: string;
36
+ /** MUST BE ABSENT before a terminal transition. */
37
+ terminalAt?: number;
38
+ pushServiceStatusCode: number | null;
39
+ errorCode: string | null;
40
+ /** MUST BE ABSENT until terminal retention begins. */
41
+ purgeAt?: Date;
42
+ static getNativeCollection(): plugins.smartdata.SmartdataCollection<WebPushSpoolDoc>['mongoDbCollection'];
43
+ createSavableObject(): Promise<WebPushSpoolDoc>;
44
+ }