velocious 1.0.596 → 1.0.597

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 (106) hide show
  1. package/README.md +16 -0
  2. package/build/background-jobs/pooled-runner-broker-identity.js +22 -4
  3. package/build/background-jobs/store.js +383 -9
  4. package/build/background-jobs/types.js +1 -0
  5. package/build/cli/commands/db/tenants/migrations/pending.js +45 -0
  6. package/build/configuration-types.js +3 -0
  7. package/build/configuration.js +5 -2
  8. package/build/database/drivers/sqlite/base.js +3 -3
  9. package/build/database/tenants/migration-pending-inspector.js +77 -0
  10. package/build/environment-handlers/base.js +8 -0
  11. package/build/environment-handlers/node.js +14 -0
  12. package/build/mailer/backends/resend-smtp.js +121 -0
  13. package/build/mailer/base.js +52 -22
  14. package/build/mailer/delivery-operation-store.js +152 -0
  15. package/build/mailer/delivery-operation.js +205 -0
  16. package/build/mailer/delivery.js +9 -4
  17. package/build/mailer/index.js +5 -1
  18. package/build/mailer.js +6 -1
  19. package/build/src/background-jobs/pooled-runner-broker-identity.d.ts +10 -1
  20. package/build/src/background-jobs/pooled-runner-broker-identity.d.ts.map +1 -1
  21. package/build/src/background-jobs/pooled-runner-broker-identity.js +23 -5
  22. package/build/src/background-jobs/store.d.ts +154 -0
  23. package/build/src/background-jobs/store.d.ts.map +1 -1
  24. package/build/src/background-jobs/store.js +350 -10
  25. package/build/src/background-jobs/types.d.ts +5 -0
  26. package/build/src/background-jobs/types.d.ts.map +1 -1
  27. package/build/src/background-jobs/types.js +2 -1
  28. package/build/src/cli/commands/db/tenants/migrations/pending.d.ts +15 -0
  29. package/build/src/cli/commands/db/tenants/migrations/pending.d.ts.map +1 -0
  30. package/build/src/cli/commands/db/tenants/migrations/pending.js +40 -0
  31. package/build/src/configuration-types.d.ts +20 -0
  32. package/build/src/configuration-types.d.ts.map +1 -1
  33. package/build/src/configuration-types.js +4 -1
  34. package/build/src/configuration.d.ts +2 -2
  35. package/build/src/configuration.d.ts.map +1 -1
  36. package/build/src/configuration.js +6 -3
  37. package/build/src/database/drivers/sqlite/base.js +4 -4
  38. package/build/src/database/tenants/migration-pending-inspector.d.ts +38 -0
  39. package/build/src/database/tenants/migration-pending-inspector.d.ts.map +1 -0
  40. package/build/src/database/tenants/migration-pending-inspector.js +70 -0
  41. package/build/src/environment-handlers/base.d.ts +10 -0
  42. package/build/src/environment-handlers/base.d.ts.map +1 -1
  43. package/build/src/environment-handlers/base.js +8 -1
  44. package/build/src/environment-handlers/node.d.ts +11 -0
  45. package/build/src/environment-handlers/node.d.ts.map +1 -1
  46. package/build/src/environment-handlers/node.js +14 -1
  47. package/build/src/mailer/backends/resend-smtp.d.ts +43 -0
  48. package/build/src/mailer/backends/resend-smtp.d.ts.map +1 -0
  49. package/build/src/mailer/backends/resend-smtp.js +106 -0
  50. package/build/src/mailer/base.d.ts +9 -2
  51. package/build/src/mailer/base.d.ts.map +1 -1
  52. package/build/src/mailer/base.js +41 -19
  53. package/build/src/mailer/delivery-operation-store.d.ts +52 -0
  54. package/build/src/mailer/delivery-operation-store.d.ts.map +1 -0
  55. package/build/src/mailer/delivery-operation-store.js +130 -0
  56. package/build/src/mailer/delivery-operation.d.ts +73 -0
  57. package/build/src/mailer/delivery-operation.d.ts.map +1 -0
  58. package/build/src/mailer/delivery-operation.js +185 -0
  59. package/build/src/mailer/delivery.d.ts +4 -2
  60. package/build/src/mailer/delivery.d.ts.map +1 -1
  61. package/build/src/mailer/delivery.js +9 -5
  62. package/build/src/mailer/index.d.ts +24 -1
  63. package/build/src/mailer/index.d.ts.map +1 -1
  64. package/build/src/mailer/index.js +6 -2
  65. package/build/src/mailer.d.ts +11 -13
  66. package/build/src/mailer.d.ts.map +1 -1
  67. package/build/src/mailer.js +7 -2
  68. package/build/src/sync/local-mutation-log.d.ts +5 -5
  69. package/build/src/sync/local-mutation-log.d.ts.map +1 -1
  70. package/build/src/sync/local-mutation-log.js +34 -10
  71. package/build/src/sync/stable-json.d.ts +1 -8
  72. package/build/src/sync/stable-json.d.ts.map +1 -1
  73. package/build/src/sync/stable-json.js +2 -27
  74. package/build/src/sync/sync-envelope-replay-service.d.ts +3 -2
  75. package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
  76. package/build/src/sync/sync-envelope-replay-service.js +12 -8
  77. package/build/src/utils/stable-json.d.ts +7 -0
  78. package/build/src/utils/stable-json.d.ts.map +1 -0
  79. package/build/src/utils/stable-json.js +25 -0
  80. package/build/sync/local-mutation-log.js +37 -6
  81. package/build/sync/stable-json.js +1 -28
  82. package/build/sync/sync-envelope-replay-service.js +11 -7
  83. package/build/tsconfig.tsbuildinfo +1 -1
  84. package/build/utils/stable-json.js +26 -0
  85. package/package.json +1 -1
  86. package/src/background-jobs/pooled-runner-broker-identity.js +22 -4
  87. package/src/background-jobs/store.js +383 -9
  88. package/src/background-jobs/types.js +1 -0
  89. package/src/cli/commands/db/tenants/migrations/pending.js +45 -0
  90. package/src/configuration-types.js +3 -0
  91. package/src/configuration.js +5 -2
  92. package/src/database/drivers/sqlite/base.js +3 -3
  93. package/src/database/tenants/migration-pending-inspector.js +77 -0
  94. package/src/environment-handlers/base.js +8 -0
  95. package/src/environment-handlers/node.js +14 -0
  96. package/src/mailer/backends/resend-smtp.js +121 -0
  97. package/src/mailer/base.js +52 -22
  98. package/src/mailer/delivery-operation-store.js +152 -0
  99. package/src/mailer/delivery-operation.js +205 -0
  100. package/src/mailer/delivery.js +9 -4
  101. package/src/mailer/index.js +5 -1
  102. package/src/mailer.js +6 -1
  103. package/src/sync/local-mutation-log.js +37 -6
  104. package/src/sync/stable-json.js +1 -28
  105. package/src/sync/sync-envelope-replay-service.js +11 -7
  106. package/src/utils/stable-json.js +26 -0
@@ -0,0 +1,73 @@
1
+ export declare const MAIL_DELIVERY_JOB_NAME = "MailDeliveryJob";
2
+ export declare const MAIL_DELIVERY_OPERATIONS_TABLE = "mailer_delivery_operations";
3
+ /**
4
+ * Reads and validates a backend's provider idempotency capability.
5
+ * @param {object} args - Capability input.
6
+ * @param {import("../configuration-types.js").MailerBackend | undefined} args.backend - Configured backend.
7
+ * @param {import("./index.js").MailerDeliveryOperationRequest | import("./index.js").MailerDeliveryOperation} args.deliveryOperation - Required operation.
8
+ * @param {import("./index.js").MailerDeliveryPayload} args.payload - Rendered or persisted payload.
9
+ * @returns {import("./index.js").MailerDeliveryIdempotencyCapability} - Capability.
10
+ */
11
+ export declare function requireDeliveryIdempotencyCapability({ backend, deliveryOperation, payload }: {
12
+ backend: import("../configuration-types.js").MailerBackend | undefined;
13
+ deliveryOperation: import("./index.js").MailerDeliveryOperationRequest | import("./index.js").MailerDeliveryOperation;
14
+ payload: import("./index.js").MailerDeliveryPayload;
15
+ }): import("./index.js").MailerDeliveryIdempotencyCapability;
16
+ /**
17
+ * Normalizes one public required operation into immutable payload metadata.
18
+ * @param {object} args - Preparation input.
19
+ * @param {import("./index.js").MailerDeliveryIdempotencyCapability} args.capability - Backend capability.
20
+ * @param {import("./index.js").MailerDeliveryOperationRequest} args.deliveryOperation - Public operation request.
21
+ * @param {import("./index.js").MailerDeliveryPayload} args.payload - Rendered payload.
22
+ * @returns {import("./index.js").MailerDeliveryPayload} - Payload with immutable operation metadata.
23
+ */
24
+ export declare function prepareRequiredDeliveryPayload({ capability, deliveryOperation, payload }: {
25
+ capability: import("./index.js").MailerDeliveryIdempotencyCapability;
26
+ deliveryOperation: import("./index.js").MailerDeliveryOperationRequest;
27
+ payload: import("./index.js").MailerDeliveryPayload;
28
+ }): import("./index.js").MailerDeliveryPayload;
29
+ /**
30
+ * Builds the versioned digest for every recipient-visible/provider-relevant payload field.
31
+ * @param {object} args - Digest input.
32
+ * @param {string} args.operationId - Stable operation id.
33
+ * @param {import("./index.js").MailerDeliveryPayload} args.payload - Rendered payload.
34
+ * @returns {string} - Versioned SHA-256 digest.
35
+ */
36
+ export declare function mailDeliveryPayloadDigest({ operationId, payload }: {
37
+ operationId: string;
38
+ payload: import("./index.js").MailerDeliveryPayload;
39
+ }): string;
40
+ /**
41
+ * Extracts validated persisted operation metadata from a payload.
42
+ * @param {import("./index.js").MailerDeliveryPayload} payload - Mail payload.
43
+ * @returns {import("./index.js").MailerDeliveryOperation | null} - Operation or null.
44
+ */
45
+ export declare function deliveryOperationFromPayload(payload: import("./index.js").MailerDeliveryPayload): import("./index.js").MailerDeliveryOperation | null;
46
+ /**
47
+ * Extracts a built-in mail operation from generic job arguments.
48
+ * @param {string} jobName - Job class name.
49
+ * @param {Array<ReturnType<typeof JSON.parse>>} args - Job arguments.
50
+ * @returns {{operation: import("./index.js").MailerDeliveryOperation, payload: import("./index.js").MailerDeliveryPayload} | null} - Mail operation input.
51
+ */
52
+ export declare function mailDeliveryOperationForJob(jobName: string, args: Array<ReturnType<typeof JSON.parse>>): {
53
+ operation: import("./index.js").MailerDeliveryOperation;
54
+ payload: import("./index.js").MailerDeliveryPayload;
55
+ } | null;
56
+ /**
57
+ * Fixed-size primary key for a potentially long operation id.
58
+ * @param {string} operationId - Operation id.
59
+ * @returns {string} - SHA-256 operation key.
60
+ */
61
+ export declare function mailDeliveryOperationKey(operationId: string): string;
62
+ /**
63
+ * Validates provider compatibility and payload integrity before an attempt.
64
+ * @param {object} args - Validation input.
65
+ * @param {import("./index.js").MailerDeliveryIdempotencyCapability} args.capability - Current backend capability.
66
+ * @param {import("./index.js").MailerDeliveryPayload} args.payload - Persisted payload.
67
+ * @returns {import("./index.js").MailerDeliveryOperation} - Persisted operation.
68
+ */
69
+ export declare function validateAttemptPayload({ capability, payload }: {
70
+ capability: import("./index.js").MailerDeliveryIdempotencyCapability;
71
+ payload: import("./index.js").MailerDeliveryPayload;
72
+ }): import("./index.js").MailerDeliveryOperation;
73
+ //# sourceMappingURL=delivery-operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-operation.d.ts","sourceRoot":"","sources":["../../../src/mailer/delivery-operation.js"],"names":[],"mappings":"AAMA,eAAO,MAAM,sBAAsB,oBAAoB,CAAA;AACvD,eAAO,MAAM,8BAA8B,+BAA+B,CAAA;AAG1E;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAAC,EAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAC,EALvF;IAA4E,OAAO,EAA3E,OAAO,2BAA2B,EAAE,aAAa,GAAG,SAAS,CACrE;IAAiH,iBAAiB,EAA1H,OAAO,YAAY,EAAE,8BAA8B,GAAG,OAAO,YAAY,EAAE,uBAAuB,CAC1G;IAAyD,OAAO,EAAxD,OAAO,YAAY,EAAE,qBAAqB,CAClD;CAEuF,GAF7E,OAAO,YAAY,EAAE,mCAAmC,CAuBpE;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,EAAC,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAC,EALpF;IAAuE,UAAU,EAAzE,OAAO,YAAY,EAAE,mCAAmC,CAChE;IAAkE,iBAAiB,EAA3E,OAAO,YAAY,EAAE,8BAA8B,CAC3D;IAAyD,OAAO,EAAxD,OAAO,YAAY,EAAE,qBAAqB,CAClD;CAEoF,GAF1E,OAAO,YAAY,EAAE,qBAAqB,CAgBtD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,EAAC,WAAW,EAAE,OAAO,EAAC,EAJ7D;IAAqB,WAAW,EAAxB,MAAM,CACd;IAAyD,OAAO,EAAxD,OAAO,YAAY,EAAE,qBAAqB,CAClD;CAE6D,GAFnD,MAAM,CAoBlB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAHzC,OAAO,YAAY,EAAE,qBAGoB,GAFvC,OAAO,YAAY,EAAE,uBAAuB,GAAG,IAAI,CAa/D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAJxC,MAIwC,EAAE,IAAI,EAH9C,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAGW,GAF5C;IAAC,SAAS,EAAE,OAAO,YAAY,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,OAAO,YAAY,EAAE,qBAAqB,CAAA;CAAC,GAAG,IAAI,CASjI;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAHzC,MAGyC,GAFvC,MAAM,CAIlB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,EAAC,UAAU,EAAE,OAAO,EAAC,EAJzD;IAAuE,UAAU,EAAzE,OAAO,YAAY,EAAE,mCAAmC,CAChE;IAAyD,OAAO,EAAxD,OAAO,YAAY,EAAE,qBAAqB,CAClD;CAEyD,GAF/C,OAAO,YAAY,EAAE,uBAAuB,CAqBxD"}
@@ -0,0 +1,185 @@
1
+ // @ts-check
2
+ import { createHash } from "crypto";
3
+ import VelociousError from "../velocious-error.js";
4
+ import stableJsonStringify from "../utils/stable-json.js";
5
+ export const MAIL_DELIVERY_JOB_NAME = "MailDeliveryJob";
6
+ export const MAIL_DELIVERY_OPERATIONS_TABLE = "mailer_delivery_operations";
7
+ const PAYLOAD_DIGEST_FORMAT = "velocious-mail-delivery-payload-v1";
8
+ /**
9
+ * Reads and validates a backend's provider idempotency capability.
10
+ * @param {object} args - Capability input.
11
+ * @param {import("../configuration-types.js").MailerBackend | undefined} args.backend - Configured backend.
12
+ * @param {import("./index.js").MailerDeliveryOperationRequest | import("./index.js").MailerDeliveryOperation} args.deliveryOperation - Required operation.
13
+ * @param {import("./index.js").MailerDeliveryPayload} args.payload - Rendered or persisted payload.
14
+ * @returns {import("./index.js").MailerDeliveryIdempotencyCapability} - Capability.
15
+ */
16
+ export function requireDeliveryIdempotencyCapability({ backend, deliveryOperation, payload }) {
17
+ if (!backend || typeof backend.deliveryIdempotencyCapability !== "function") {
18
+ throw VelociousError.safe("The configured mailer backend does not support required provider idempotency.", {
19
+ code: "mail-delivery-idempotency-unsupported"
20
+ });
21
+ }
22
+ const capability = backend.deliveryIdempotencyCapability();
23
+ if (!capability || typeof capability.providerKind !== "string" || capability.providerKind.length === 0) {
24
+ throw new Error("Mailer backend delivery idempotency capability requires a non-empty providerKind");
25
+ }
26
+ if (!Number.isSafeInteger(capability.retentionMs) || capability.retentionMs <= 0) {
27
+ throw new Error("Mailer backend delivery idempotency capability requires a positive safe-integer retentionMs");
28
+ }
29
+ if (typeof backend.validateDeliveryOperation === "function") {
30
+ backend.validateDeliveryOperation({ deliveryOperation, payload });
31
+ }
32
+ return capability;
33
+ }
34
+ /**
35
+ * Normalizes one public required operation into immutable payload metadata.
36
+ * @param {object} args - Preparation input.
37
+ * @param {import("./index.js").MailerDeliveryIdempotencyCapability} args.capability - Backend capability.
38
+ * @param {import("./index.js").MailerDeliveryOperationRequest} args.deliveryOperation - Public operation request.
39
+ * @param {import("./index.js").MailerDeliveryPayload} args.payload - Rendered payload.
40
+ * @returns {import("./index.js").MailerDeliveryPayload} - Payload with immutable operation metadata.
41
+ */
42
+ export function prepareRequiredDeliveryPayload({ capability, deliveryOperation, payload }) {
43
+ validateDeliveryOperationRequest(deliveryOperation);
44
+ const payloadDigest = mailDeliveryPayloadDigest({ operationId: deliveryOperation.id, payload });
45
+ return {
46
+ ...payload,
47
+ deliveryOperation: {
48
+ id: deliveryOperation.id,
49
+ idempotency: "required",
50
+ payloadDigest,
51
+ providerKind: capability.providerKind,
52
+ providerRetentionMs: capability.retentionMs
53
+ }
54
+ };
55
+ }
56
+ /**
57
+ * Builds the versioned digest for every recipient-visible/provider-relevant payload field.
58
+ * @param {object} args - Digest input.
59
+ * @param {string} args.operationId - Stable operation id.
60
+ * @param {import("./index.js").MailerDeliveryPayload} args.payload - Rendered payload.
61
+ * @returns {string} - Versioned SHA-256 digest.
62
+ */
63
+ export function mailDeliveryPayloadDigest({ operationId, payload }) {
64
+ const canonicalPayload = {
65
+ action: payload.action,
66
+ bcc: payload.bcc ?? null,
67
+ cc: payload.cc ?? null,
68
+ format: PAYLOAD_DIGEST_FORMAT,
69
+ from: payload.from ?? null,
70
+ headers: canonicalHeaders(payload.headers),
71
+ html: payload.html,
72
+ mailer: payload.mailer,
73
+ operationId,
74
+ replyTo: payload.replyTo ?? null,
75
+ subject: payload.subject,
76
+ to: payload.to
77
+ };
78
+ const digest = createHash("sha256").update(stableJsonStringify(canonicalPayload)).digest("hex");
79
+ return `sha256:v1:${digest}`;
80
+ }
81
+ /**
82
+ * Extracts validated persisted operation metadata from a payload.
83
+ * @param {import("./index.js").MailerDeliveryPayload} payload - Mail payload.
84
+ * @returns {import("./index.js").MailerDeliveryOperation | null} - Operation or null.
85
+ */
86
+ export function deliveryOperationFromPayload(payload) {
87
+ const operation = payload.deliveryOperation;
88
+ if (!operation)
89
+ return null;
90
+ if (operation.idempotency !== "required")
91
+ throw new Error("Persisted mail delivery operation idempotency must be required");
92
+ if (typeof operation.id !== "string" || operation.id.length === 0)
93
+ throw new Error("Persisted mail delivery operation requires an id");
94
+ if (typeof operation.payloadDigest !== "string" || !operation.payloadDigest.startsWith("sha256:v1:"))
95
+ throw new Error("Persisted mail delivery operation requires a versioned payload digest");
96
+ if (typeof operation.providerKind !== "string" || operation.providerKind.length === 0)
97
+ throw new Error("Persisted mail delivery operation requires a provider kind");
98
+ if (!Number.isSafeInteger(operation.providerRetentionMs) || operation.providerRetentionMs <= 0)
99
+ throw new Error("Persisted mail delivery operation requires a positive retention");
100
+ return operation;
101
+ }
102
+ /**
103
+ * Extracts a built-in mail operation from generic job arguments.
104
+ * @param {string} jobName - Job class name.
105
+ * @param {Array<ReturnType<typeof JSON.parse>>} args - Job arguments.
106
+ * @returns {{operation: import("./index.js").MailerDeliveryOperation, payload: import("./index.js").MailerDeliveryPayload} | null} - Mail operation input.
107
+ */
108
+ export function mailDeliveryOperationForJob(jobName, args) {
109
+ if (jobName !== MAIL_DELIVERY_JOB_NAME || !args[0] || typeof args[0] !== "object" || Array.isArray(args[0]))
110
+ return null;
111
+ const payload = /** @type {import("./index.js").MailerDeliveryPayload} */ (args[0]);
112
+ const operation = deliveryOperationFromPayload(payload);
113
+ return operation ? { operation, payload } : null;
114
+ }
115
+ /**
116
+ * Fixed-size primary key for a potentially long operation id.
117
+ * @param {string} operationId - Operation id.
118
+ * @returns {string} - SHA-256 operation key.
119
+ */
120
+ export function mailDeliveryOperationKey(operationId) {
121
+ return createHash("sha256").update(`velocious-mail-delivery-operation:${operationId}`).digest("hex");
122
+ }
123
+ /**
124
+ * Validates provider compatibility and payload integrity before an attempt.
125
+ * @param {object} args - Validation input.
126
+ * @param {import("./index.js").MailerDeliveryIdempotencyCapability} args.capability - Current backend capability.
127
+ * @param {import("./index.js").MailerDeliveryPayload} args.payload - Persisted payload.
128
+ * @returns {import("./index.js").MailerDeliveryOperation} - Persisted operation.
129
+ */
130
+ export function validateAttemptPayload({ capability, payload }) {
131
+ const operation = deliveryOperationFromPayload(payload);
132
+ if (!operation)
133
+ throw new Error("Expected a persisted mail delivery operation");
134
+ if (operation.providerKind !== capability.providerKind || operation.providerRetentionMs !== capability.retentionMs) {
135
+ throw VelociousError.safe("The configured mailer backend no longer matches the required delivery operation provider.", {
136
+ code: "mail-delivery-idempotency-provider-mismatch"
137
+ });
138
+ }
139
+ const currentDigest = mailDeliveryPayloadDigest({ operationId: operation.id, payload });
140
+ if (currentDigest !== operation.payloadDigest) {
141
+ throw VelociousError.safe("The persisted mail delivery payload digest does not match its required operation.", {
142
+ code: "mail-delivery-idempotency-payload-mismatch"
143
+ });
144
+ }
145
+ return operation;
146
+ }
147
+ /**
148
+ * Validates the public operation shape without accepting future semantics silently.
149
+ * @param {import("./index.js").MailerDeliveryOperationRequest} deliveryOperation - Public operation.
150
+ * @returns {void}
151
+ */
152
+ function validateDeliveryOperationRequest(deliveryOperation) {
153
+ if (!deliveryOperation || typeof deliveryOperation !== "object" || Array.isArray(deliveryOperation)) {
154
+ throw VelociousError.safe("deliveryOperation must be an object.", { code: "mail-delivery-operation-invalid" });
155
+ }
156
+ if (typeof deliveryOperation.id !== "string" || deliveryOperation.id.length === 0) {
157
+ throw VelociousError.safe("deliveryOperation.id must be a non-empty string.", { code: "mail-delivery-operation-invalid" });
158
+ }
159
+ if (deliveryOperation.idempotency !== "required") {
160
+ throw VelociousError.safe('deliveryOperation.idempotency must be "required".', { code: "mail-delivery-operation-invalid" });
161
+ }
162
+ const keys = Object.keys(deliveryOperation);
163
+ if (keys.some((key) => key !== "id" && key !== "idempotency")) {
164
+ throw VelociousError.safe("deliveryOperation contains unsupported fields.", { code: "mail-delivery-operation-invalid" });
165
+ }
166
+ }
167
+ /**
168
+ * Canonicalizes case-insensitive custom headers without exposing values.
169
+ * @param {Record<string, string> | undefined} headers - Custom headers.
170
+ * @returns {Array<[string, string]>} - Sorted header pairs.
171
+ */
172
+ function canonicalHeaders(headers) {
173
+ if (!headers)
174
+ return [];
175
+ const pairs = Object.entries(headers).map(([name, value]) => [name.toLowerCase(), value]);
176
+ const names = new Set();
177
+ for (const [name] of pairs) {
178
+ if (names.has(name)) {
179
+ throw VelociousError.safe("Mail headers contain duplicate case-insensitive names.", { code: "mail-delivery-headers-invalid" });
180
+ }
181
+ names.add(name);
182
+ }
183
+ return /** @type {Array<[string, string]>} */ (pairs.sort(([left], [right]) => left.localeCompare(right)));
184
+ }
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktb3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21haWxlci9kZWxpdmVyeS1vcGVyYXRpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxRQUFRLENBQUE7QUFDakMsT0FBTyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFDbEQsT0FBTyxtQkFBbUIsTUFBTSx5QkFBeUIsQ0FBQTtBQUV6RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxpQkFBaUIsQ0FBQTtBQUN2RCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyw0QkFBNEIsQ0FBQTtBQUMxRSxNQUFNLHFCQUFxQixHQUFHLG9DQUFvQyxDQUFBO0FBRWxFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsb0NBQW9DLENBQUMsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFDO0lBQ3hGLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLENBQUMsNkJBQTZCLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDNUUsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLCtFQUErRSxFQUFFO1lBQ3pHLElBQUksRUFBRSx1Q0FBdUM7U0FDOUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxDQUFBO0lBRTFELElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxVQUFVLENBQUMsWUFBWSxLQUFLLFFBQVEsSUFBSSxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2RyxNQUFNLElBQUksS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUE7SUFDckcsQ0FBQztJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxVQUFVLENBQUMs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LEVBQUMsSUFBSSxFQUFFLCtCQUErQixFQUFDLENBQUMsQ0FBQTtRQUM5SCxDQUFDO1FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBRUQsT0FBTyxzQ0FBc0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzVHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtjcmVhdGVIYXNofSBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCBWZWxvY2lvdXNFcnJvciBmcm9tIFwiLi4vdmVsb2Npb3VzLWVycm9yLmpzXCJcbmltcG9ydCBzdGFibGVKc29uU3RyaW5naWZ5IGZyb20gXCIuLi91dGlscy9zdGFibGUtanNvbi5qc1wiXG5cbmV4cG9ydCBjb25zdCBNQUlMX0RFTElWRVJZX0pPQl9OQU1FID0gXCJNYWlsRGVsaXZlcnlKb2JcIlxuZXhwb3J0IGNvbnN0IE1BSUxfREVMSVZFUllfT1BFUkFUSU9OU19UQUJMRSA9IFwibWFpbGVyX2RlbGl2ZXJ5X29wZXJhdGlvbnNcIlxuY29uc3QgUEFZTE9BRF9ESUdFU1RfRk9STUFUID0gXCJ2ZWxvY2lvdXMtbWFpbC1kZWxpdmVyeS1wYXlsb2FkLXYxXCJcblxuLyoqXG4gKiBSZWFkcyBhbmQgdmFsaWRhdGVzIGEgYmFja2VuZCdzIHByb3ZpZGVyIGlkZW1wb3RlbmN5IGNhcGFiaWxpdHkuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIENhcGFiaWxpdHkgaW5wdXQuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuTWFpbGVyQmFja2VuZCB8IHVuZGVmaW5lZH0gYXJncy5iYWNrZW5kIC0gQ29uZmlndXJlZCBiYWNrZW5kLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5T3BlcmF0aW9uUmVxdWVzdCB8IGltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlPcGVyYXRpb259IGFyZ3MuZGVsaXZlcnlPcGVyYXRpb24gLSBSZXF1aXJlZCBvcGVyYXRpb24uXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkfSBhcmdzLnBheWxvYWQgLSBSZW5kZXJlZCBvciBwZXJzaXN0ZWQgcGF5bG9hZC5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5SWRlbXBvdGVuY3lDYXBhYmlsaXR5fSAtIENhcGFiaWxpdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlRGVsaXZlcnlJZGVtcG90ZW5jeUNhcGFiaWxpdHkoe2JhY2tlbmQsIGRlbGl2ZXJ5T3BlcmF0aW9uLCBwYXlsb2FkfSkge1xuICBpZiAoIWJhY2tlbmQgfHwgdHlwZW9mIGJhY2tlbmQuZGVsaXZlcnlJZGVtcG90ZW5jeUNhcGFiaWxpdHkgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoXCJUaGUgY29uZmlndXJlZCBtYWlsZXIgYmFja2VuZCBkb2VzIG5vdCBzdXBwb3J0IHJlcXVpcmVkIHByb3ZpZGVyIGlkZW1wb3RlbmN5LlwiLCB7XG4gICAgICBjb2RlOiBcIm1haWwtZGVsaXZlcnktaWRlbXBvdGVuY3ktdW5zdXBwb3J0ZWRcIlxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjYXBhYmlsaXR5ID0gYmFja2VuZC5kZWxpdmVyeUlkZW1wb3RlbmN5Q2FwYWJpbGl0eSgpXG5cbiAgaWYgKCFjYXBhYmlsaXR5IHx8IHR5cGVvZiBjYXBhYmlsaXR5LnByb3ZpZGVyS2luZCAhPT0gXCJzdHJpbmdcIiB8fCBjYXBhYmlsaXR5LnByb3ZpZGVyS2luZC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNYWlsZXIgYmFja2VuZCBkZWxpdmVyeSBpZGVtcG90ZW5jeSBjYXBhYmlsaXR5IHJlcXVpcmVzIGEgbm9uLWVtcHR5IHByb3ZpZGVyS2luZFwiKVxuICB9XG4gIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIoY2FwYWJpbGl0eS5yZXRlbnRpb25NcykgfHwgY2FwYWJpbGl0eS5yZXRlbnRpb25NcyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTWFpbGVyIGJhY2tlbmQgZGVsaXZlcnkgaWRlbXBvdGVuY3kgY2FwYWJpbGl0eSByZXF1aXJlcyBhIHBvc2l0aXZlIHNhZmUtaW50ZWdlciByZXRlbnRpb25Nc1wiKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBiYWNrZW5kLnZhbGlkYXRlRGVsaXZlcnlPcGVyYXRpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGJhY2tlbmQudmFsaWRhdGVEZWxpdmVyeU9wZXJhdGlvbih7ZGVsaXZlcnlPcGVyYXRpb24sIHBheWxvYWR9KVxuICB9XG5cbiAgcmV0dXJuIGNhcGFiaWxpdHlcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIG9uZSBwdWJsaWMgcmVxdWlyZWQgb3BlcmF0aW9uIGludG8gaW1tdXRhYmxlIHBheWxvYWQgbWV0YWRhdGEuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFByZXBhcmF0aW9uIGlucHV0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5SWRlbXBvdGVuY3lDYXBhYmlsaXR5fSBhcmdzLmNhcGFiaWxpdHkgLSBCYWNrZW5kIGNhcGFiaWxpdHkuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlPcGVyYXRpb25SZXF1ZXN0fSBhcmdzLmRlbGl2ZXJ5T3BlcmF0aW9uIC0gUHVibGljIG9wZXJhdGlvbiByZXF1ZXN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZH0gYXJncy5wYXlsb2FkIC0gUmVuZGVyZWQgcGF5bG9hZC5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZH0gLSBQYXlsb2FkIHdpdGggaW1tdXRhYmxlIG9wZXJhdGlvbiBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVSZXF1aXJlZERlbGl2ZXJ5UGF5bG9hZCh7Y2FwYWJpbGl0eSwgZGVsaXZlcnlPcGVyYXRpb24sIHBheWxvYWR9KSB7XG4gIHZhbGlkYXRlRGVsaXZlcnlPcGVyYXRpb25SZXF1ZXN0KGRlbGl2ZXJ5T3BlcmF0aW9uKVxuICBjb25zdCBwYXlsb2FkRGlnZXN0ID0gbWFpbERlbGl2ZXJ5UGF5bG9hZERpZ2VzdCh7b3BlcmF0aW9uSWQ6IGRlbGl2ZXJ5T3BlcmF0aW9uLmlkLCBwYXlsb2FkfSlcblxuICByZXR1cm4ge1xuICAgIC4uLnBheWxvYWQsXG4gICAgZGVsaXZlcnlPcGVyYXRpb246IHtcbiAgICAgIGlkOiBkZWxpdmVyeU9wZXJhdGlvbi5pZCxcbiAgICAgIGlkZW1wb3RlbmN5OiBcInJlcXVpcmVkXCIsXG4gICAgICBwYXlsb2FkRGlnZXN0LFxuICAgICAgcHJvdmlkZXJLaW5kOiBjYXBhYmlsaXR5LnByb3ZpZGVyS2luZCxcbiAgICAgIHByb3ZpZGVyUmV0ZW50aW9uTXM6IGNhcGFiaWxpdHkucmV0ZW50aW9uTXNcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHZlcnNpb25lZCBkaWdlc3QgZm9yIGV2ZXJ5IHJlY2lwaWVudC12aXNpYmxlL3Byb3ZpZGVyLXJlbGV2YW50IHBheWxvYWQgZmllbGQuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIERpZ2VzdCBpbnB1dC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm9wZXJhdGlvbklkIC0gU3RhYmxlIG9wZXJhdGlvbiBpZC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9IGFyZ3MucGF5bG9hZCAtIFJlbmRlcmVkIHBheWxvYWQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFZlcnNpb25lZCBTSEEtMjU2IGRpZ2VzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1haWxEZWxpdmVyeVBheWxvYWREaWdlc3Qoe29wZXJhdGlvbklkLCBwYXlsb2FkfSkge1xuICBjb25zdCBjYW5vbmljYWxQYXlsb2FkID0ge1xuICAgIGFjdGlvbjogcGF5bG9hZC5hY3Rpb24sXG4gICAgYmNjOiBwYXlsb2FkLmJjYyA/PyBudWxsLFxuICAgIGNjOiBwYXlsb2FkLmNjID8/IG51bGwsXG4gICAgZm9ybWF0OiBQQVlMT0FEX0RJR0VTVF9GT1JNQVQsXG4gICAgZnJvbTogcGF5bG9hZC5mcm9tID8/IG51bGwsXG4gICAgaGVhZGVyczogY2Fub25pY2FsSGVhZGVycyhwYXlsb2FkLmhlYWRlcnMpLFxuICAgIGh0bWw6IHBheWxvYWQuaHRtbCxcbiAgICBtYWlsZXI6IHBheWxvYWQubWFpbGVyLFxuICAgIG9wZXJhdGlvbklkLFxuICAgIHJlcGx5VG86IHBheWxvYWQucmVwbHlUbyA/PyBudWxsLFxuICAgIHN1YmplY3Q6IHBheWxvYWQuc3ViamVjdCxcbiAgICB0bzogcGF5bG9hZC50b1xuICB9XG4gIGNvbnN0IGRpZ2VzdCA9IGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHN0YWJsZUpzb25TdHJpbmdpZnkoY2Fub25pY2FsUGF5bG9hZCkpLmRpZ2VzdChcImhleFwiKVxuXG4gIHJldHVybiBgc2hhMjU2OnYxOiR7ZGlnZXN0fWBcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB2YWxpZGF0ZWQgcGVyc2lzdGVkIG9wZXJhdGlvbiBtZXRhZGF0YSBmcm9tIGEgcGF5bG9hZC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9IHBheWxvYWQgLSBNYWlsIHBheWxvYWQuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeU9wZXJhdGlvbiB8IG51bGx9IC0gT3BlcmF0aW9uIG9yIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpdmVyeU9wZXJhdGlvbkZyb21QYXlsb2FkKHBheWxvYWQpIHtcbiAgY29uc3Qgb3BlcmF0aW9uID0gcGF5bG9hZC5kZWxpdmVyeU9wZXJhdGlvblxuXG4gIGlmICghb3BlcmF0aW9uKSByZXR1cm4gbnVsbFxuICBpZiAob3BlcmF0aW9uLmlkZW1wb3RlbmN5ICE9PSBcInJlcXVpcmVkXCIpIHRocm93IG5ldyBFcnJvcihcIlBlcnNpc3RlZCBtYWlsIGRlbGl2ZXJ5IG9wZXJhdGlvbiBpZGVtcG90ZW5jeSBtdXN0IGJlIHJlcXVpcmVkXCIpXG4gIGlmICh0eXBlb2Ygb3BlcmF0aW9uLmlkICE9PSBcInN0cmluZ1wiIHx8IG9wZXJhdGlvbi5pZC5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcihcIlBlcnNpc3RlZCBtYWlsIGRlbGl2ZXJ5IG9wZXJhdGlvbiByZXF1aXJlcyBhbiBpZFwiKVxuICBpZiAodHlwZW9mIG9wZXJhdGlvbi5wYXlsb2FkRGlnZXN0ICE9PSBcInN0cmluZ1wiIHx8ICFvcGVyYXRpb24ucGF5bG9hZERpZ2VzdC5zdGFydHNXaXRoKFwic2hhMjU2OnYxOlwiKSkgdGhyb3cgbmV3IEVycm9yKFwiUGVyc2lzdGVkIG1haWwgZGVsaXZlcnkgb3BlcmF0aW9uIHJlcXVpcmVzIGEgdmVyc2lvbmVkIHBheWxvYWQgZGlnZXN0XCIpXG4gIGlmICh0eXBlb2Ygb3BlcmF0aW9uLnByb3ZpZGVyS2luZCAhPT0gXCJzdHJpbmdcIiB8fCBvcGVyYXRpb24ucHJvdmlkZXJLaW5kLmxlbmd0aCA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiUGVyc2lzdGVkIG1haWwgZGVsaXZlcnkgb3BlcmF0aW9uIHJlcXVpcmVzIGEgcHJvdmlkZXIga2luZFwiKVxuICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKG9wZXJhdGlvbi5wcm92aWRlclJldGVudGlvbk1zKSB8fCBvcGVyYXRpb24ucHJvdmlkZXJSZXRlbnRpb25NcyA8PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJQZXJzaXN0ZWQgbWFpbCBkZWxpdmVyeSBvcGVyYXRpb24gcmVxdWlyZXMgYSBwb3NpdGl2ZSByZXRlbnRpb25cIilcblxuICByZXR1cm4gb3BlcmF0aW9uXG59XG5cbi8qKlxuICogRXh0cmFjdHMgYSBidWlsdC1pbiBtYWlsIG9wZXJhdGlvbiBmcm9tIGdlbmVyaWMgam9iIGFyZ3VtZW50cy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBqb2JOYW1lIC0gSm9iIGNsYXNzIG5hbWUuXG4gKiBAcGFyYW0ge0FycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gYXJncyAtIEpvYiBhcmd1bWVudHMuXG4gKiBAcmV0dXJucyB7e29wZXJhdGlvbjogaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeU9wZXJhdGlvbiwgcGF5bG9hZDogaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9IHwgbnVsbH0gLSBNYWlsIG9wZXJhdGlvbiBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1haWxEZWxpdmVyeU9wZXJhdGlvbkZvckpvYihqb2JOYW1lLCBhcmdzKSB7XG4gIGlmIChqb2JOYW1lICE9PSBNQUlMX0RFTElWRVJZX0pPQl9OQU1FIHx8ICFhcmdzWzBdIHx8IHR5cGVvZiBhcmdzWzBdICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoYXJnc1swXSkpIHJldHVybiBudWxsXG5cbiAgY29uc3QgcGF5bG9hZCA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9ICovIChhcmdzWzBdKVxuICBjb25zdCBvcGVyYXRpb24gPSBkZWxpdmVyeU9wZXJhdGlvbkZyb21QYXlsb2FkKHBheWxvYWQpXG5cbiAgcmV0dXJuIG9wZXJhdGlvbiA/IHtvcGVyYXRpb24sIHBheWxvYWR9IDogbnVsbFxufVxuXG4vKipcbiAqIEZpeGVkLXNpemUgcHJpbWFyeSBrZXkgZm9yIGEgcG90ZW50aWFsbHkgbG9uZyBvcGVyYXRpb24gaWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3BlcmF0aW9uSWQgLSBPcGVyYXRpb24gaWQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNIQS0yNTYgb3BlcmF0aW9uIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1haWxEZWxpdmVyeU9wZXJhdGlvbktleShvcGVyYXRpb25JZCkge1xuICByZXR1cm4gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoYHZlbG9jaW91cy1tYWlsLWRlbGl2ZXJ5LW9wZXJhdGlvbjoke29wZXJhdGlvbklkfWApLmRpZ2VzdChcImhleFwiKVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBwcm92aWRlciBjb21wYXRpYmlsaXR5IGFuZCBwYXlsb2FkIGludGVncml0eSBiZWZvcmUgYW4gYXR0ZW1wdC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gVmFsaWRhdGlvbiBpbnB1dC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeUlkZW1wb3RlbmN5Q2FwYWJpbGl0eX0gYXJncy5jYXBhYmlsaXR5IC0gQ3VycmVudCBiYWNrZW5kIGNhcGFiaWxpdHkuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkfSBhcmdzLnBheWxvYWQgLSBQZXJzaXN0ZWQgcGF5bG9hZC5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5T3BlcmF0aW9ufSAtIFBlcnNpc3RlZCBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUF0dGVtcHRQYXlsb2FkKHtjYXBhYmlsaXR5LCBwYXlsb2FkfSkge1xuICBjb25zdCBvcGVyYXRpb24gPSBkZWxpdmVyeU9wZXJhdGlvbkZyb21QYXlsb2FkKHBheWxvYWQpXG5cbiAgaWYgKCFvcGVyYXRpb24pIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGEgcGVyc2lzdGVkIG1haWwgZGVsaXZlcnkgb3BlcmF0aW9uXCIpXG4gIGlmIChvcGVyYXRpb24ucHJvdmlkZXJLaW5kICE9PSBjYXBhYmlsaXR5LnByb3ZpZGVyS2luZCB8fCBvcGVyYXRpb24ucHJvdmlkZXJSZXRlbnRpb25NcyAhPT0gY2FwYWJpbGl0eS5yZXRlbnRpb25Ncykge1xuICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoXCJUaGUgY29uZmlndXJlZCBtYWlsZXIgYmFja2VuZCBubyBsb25nZXIgbWF0Y2hlcyB0aGUgcmVxdWlyZWQgZGVsaXZlcnkgb3BlcmF0aW9uIHByb3ZpZGVyLlwiLCB7XG4gICAgICBjb2RlOiBcIm1haWwtZGVsaXZlcnktaWRlbXBvdGVuY3ktcHJvdmlkZXItbWlzbWF0Y2hcIlxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50RGlnZXN0ID0gbWFpbERlbGl2ZXJ5UGF5bG9hZERpZ2VzdCh7b3BlcmF0aW9uSWQ6IG9wZXJhdGlvbi5pZCwgcGF5bG9hZH0pXG5cbiAgaWYgKGN1cnJlbnREaWdlc3QgIT09IG9wZXJhdGlvbi5wYXlsb2FkRGlnZXN0KSB7XG4gICAgdGhyb3cgVmVsb2Npb3VzRXJyb3Iuc2FmZShcIlRoZSBwZXJzaXN0ZWQgbWFpbCBkZWxpdmVyeSBwYXlsb2FkIGRpZ2VzdCBkb2VzIG5vdCBtYXRjaCBpdHMgcmVxdWlyZWQgb3BlcmF0aW9uLlwiLCB7XG4gICAgICBjb2RlOiBcIm1haWwtZGVsaXZlcnktaWRlbXBvdGVuY3ktcGF5bG9hZC1taXNtYXRjaFwiXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBvcGVyYXRpb25cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHB1YmxpYyBvcGVyYXRpb24gc2hhcGUgd2l0aG91dCBhY2NlcHRpbmcgZnV0dXJlIHNlbWFudGljcyBzaWxlbnRseS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeU9wZXJhdGlvblJlcXVlc3R9IGRlbGl2ZXJ5T3BlcmF0aW9uIC0gUHVibGljIG9wZXJhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZURlbGl2ZXJ5T3BlcmF0aW9uUmVxdWVzdChkZWxpdmVyeU9wZXJhdGlvbikge1xuICBpZiAoIWRlbGl2ZXJ5T3BlcmF0aW9uIHx8IHR5cGVvZiBkZWxpdmVyeU9wZXJhdGlvbiAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGRlbGl2ZXJ5T3BlcmF0aW9uKSkge1xuICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoXCJkZWxpdmVyeU9wZXJhdGlvbiBtdXN0IGJlIGFuIG9iamVjdC5cIiwge2NvZGU6IFwibWFpbC1kZWxpdmVyeS1vcGVyYXRpb24taW52YWxpZFwifSlcbiAgfVxuICBpZiAodHlwZW9mIGRlbGl2ZXJ5T3BlcmF0aW9uLmlkICE9PSBcInN0cmluZ1wiIHx8IGRlbGl2ZXJ5T3BlcmF0aW9uLmlkLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoXCJkZWxpdmVyeU9wZXJhdGlvbi5pZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy5cIiwge2NvZGU6IFwibWFpbC1kZWxpdmVyeS1vcGVyYXRpb24taW52YWxpZFwifSlcbiAgfVxuICBpZiAoZGVsaXZlcnlPcGVyYXRpb24uaWRlbXBvdGVuY3kgIT09IFwicmVxdWlyZWRcIikge1xuICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoJ2RlbGl2ZXJ5T3BlcmF0aW9uLmlkZW1wb3RlbmN5IG11c3QgYmUgXCJyZXF1aXJlZFwiLicsIHtjb2RlOiBcIm1haWwtZGVsaXZlcnktb3BlcmF0aW9uLWludmFsaWRcIn0pXG4gIH1cblxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGVsaXZlcnlPcGVyYXRpb24pXG5cbiAgaWYgKGtleXMuc29tZSgoa2V5KSA9PiBrZXkgIT09IFwiaWRcIiAmJiBrZXkgIT09IFwiaWRlbXBvdGVuY3lcIikpIHtcbiAgICB0aHJvdyBWZWxvY2lvdXNFcnJvci5zYWZlKFwiZGVsaXZlcnlPcGVyYXRpb24gY29udGFpbnMgdW5zdXBwb3J0ZWQgZmllbGRzLlwiLCB7Y29kZTogXCJtYWlsLWRlbGl2ZXJ5LW9wZXJhdGlvbi1pbnZhbGlkXCJ9KVxuICB9XG59XG5cbi8qKlxuICogQ2Fub25pY2FsaXplcyBjYXNlLWluc2Vuc2l0aXZlIGN1c3RvbSBoZWFkZXJzIHdpdGhvdXQgZXhwb3NpbmcgdmFsdWVzLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkfSBoZWFkZXJzIC0gQ3VzdG9tIGhlYWRlcnMuXG4gKiBAcmV0dXJucyB7QXJyYXk8W3N0cmluZywgc3RyaW5nXT59IC0gU29ydGVkIGhlYWRlciBwYWlycy5cbiAqL1xuZnVuY3Rpb24gY2Fub25pY2FsSGVhZGVycyhoZWFkZXJzKSB7XG4gIGlmICghaGVhZGVycykgcmV0dXJuIFtdXG5cbiAgY29uc3QgcGFpcnMgPSBPYmplY3QuZW50cmllcyhoZWFkZXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IFtuYW1lLnRvTG93ZXJDYXNlKCksIHZhbHVlXSlcbiAgY29uc3QgbmFtZXMgPSBuZXcgU2V0KClcblxuICBmb3IgKGNvbnN0IFtuYW1lXSBvZiBwYWlycykge1xuICAgIGlmIChuYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoXCJNYWlsIGhlYWRlcnMgY29udGFpbiBkdXBsaWNhdGUgY2FzZS1pbnNlbnNpdGl2ZSBuYW1lcy5cIiwge2NvZGU6IFwibWFpbC1kZWxpdmVyeS1oZWFkZXJzLWludmFsaWRcIn0pXG4gICAgfVxuICAgIG5hbWVzLmFkZChuYW1lKVxuICB9XG5cbiAgcmV0dXJuIC8qKiBAdHlwZSB7QXJyYXk8W3N0cmluZywgc3RyaW5nXT59ICovIChwYWlycy5zb3J0KChbbGVmdF0sIFtyaWdodF0pID0+IGxlZnQubG9jYWxlQ29tcGFyZShyaWdodCkpKVxufVxuIl19
@@ -38,13 +38,15 @@ export default class MailerDelivery {
38
38
  deliverNow(): Promise<import("./index.js").MailerDeliveryPayload | ReturnType<typeof JSON.parse>>;
39
39
  /**
40
40
  * Runs deliver later.
41
+ * @param {import("./index.js").MailerDeliveryLaterOptions} [options] - Delivery execution options.
41
42
  * @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
42
43
  */
43
- deliverLater(): Promise<string | import("./index.js").MailerDeliveryPayload | null>;
44
+ deliverLater({ deliveryOperation, ...restArgs }?: import("./index.js").MailerDeliveryLaterOptions): Promise<string | import("./index.js").MailerDeliveryPayload | null>;
44
45
  /**
45
46
  * Runs deliver laver.
47
+ * @param {import("./index.js").MailerDeliveryLaterOptions} [options] - Delivery execution options.
46
48
  * @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
47
49
  */
48
- deliverLaver(): Promise<string | import("./index.js").MailerDeliveryPayload | null>;
50
+ deliverLaver(options?: import("./index.js").MailerDeliveryLaterOptions): Promise<string | import("./index.js").MailerDeliveryPayload | null>;
49
51
  }
50
52
  //# sourceMappingURL=delivery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../src/mailer/delivery.js"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC;;yDAEqD;IACrD,MAAM,EADI,OAAO,WAAW,EAAE,mBAAmB,CAC3C;IACN;;wDAEoD;IACpD,aAAa,EADH,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CACnC;IACb;;wBAEoB;IACpB,UAAU,EADA,MAAM,CACN;IAEV;;;;;;OAMG;IACH,YAAY,EAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAC,EAJ5C;QAAsD,MAAM,EAApD,OAAO,WAAW,EAAE,mBAAmB,CAC/C;QAAqD,aAAa,EAA1D,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAC9C;QAAqB,UAAU,EAAvB,MAAM,CAChB;KAC8C,EAI9C;IAED;;;OAGG;IACG,YAAY,IAFL,OAAO,CAAC,OAAO,YAAY,EAAE,qBAAqB,CAAC,CAM/D;IAED;;;OAGG;IACG,UAAU,IAFH,OAAO,CAAC,OAAO,YAAY,EAAE,qBAAqB,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAM/F;IAED;;;OAGG;IACG,YAAY,IAFL,OAAO,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAM/E;IAED;;;OAGG;IACG,YAAY,IAFL,OAAO,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAI/E;CACF"}
1
+ {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../src/mailer/delivery.js"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC;;yDAEqD;IACrD,MAAM,EADI,OAAO,WAAW,EAAE,mBAAmB,CAC3C;IACN;;wDAEoD;IACpD,aAAa,EADH,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CACnC;IACb;;wBAEoB;IACpB,UAAU,EADA,MAAM,CACN;IAEV;;;;;;OAMG;IACH,YAAY,EAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAC,EAJ5C;QAAsD,MAAM,EAApD,OAAO,WAAW,EAAE,mBAAmB,CAC/C;QAAqD,aAAa,EAA1D,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAC9C;QAAqB,UAAU,EAAvB,MAAM,CAChB;KAC8C,EAI9C;IAED;;;OAGG;IACG,YAAY,IAFL,OAAO,CAAC,OAAO,YAAY,EAAE,qBAAqB,CAAC,CAM/D;IAED;;;OAGG;IACG,UAAU,IAFH,OAAO,CAAC,OAAO,YAAY,EAAE,qBAAqB,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAM/F;IAED;;;;OAIG;IACG,YAAY,CAAC,EAAC,iBAAiB,EAAE,GAAG,QAAQ,EAAC,AAHhD,CACA,EADQ,OAAO,YAAY,EAAE,0BAGwB,GAF3C,OAAO,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAO/E;IAED;;;;OAIG;IACG,YAAY,CAAC,OAAO,AAHvB,CACA,EADQ,OAAO,YAAY,EAAE,0BAGN,GAFb,OAAO,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAI/E;CACF"}
@@ -1,4 +1,5 @@
1
1
  // @ts-check
2
+ import restArgsError from "../utils/rest-args-error.js";
2
3
  /**
3
4
  * Represents a prepared mail delivery.
4
5
  */
@@ -45,18 +46,21 @@ export default class MailerDelivery {
45
46
  }
46
47
  /**
47
48
  * Runs deliver later.
49
+ * @param {import("./index.js").MailerDeliveryLaterOptions} [options] - Delivery execution options.
48
50
  * @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
49
51
  */
50
- async deliverLater() {
52
+ async deliverLater({ deliveryOperation, ...restArgs } = {}) {
53
+ restArgsError(restArgs);
51
54
  const payload = await this.buildPayload();
52
- return await this.mailer._enqueuePayload(payload);
55
+ return await this.mailer._enqueuePayload(payload, { deliveryOperation });
53
56
  }
54
57
  /**
55
58
  * Runs deliver laver.
59
+ * @param {import("./index.js").MailerDeliveryLaterOptions} [options] - Delivery execution options.
56
60
  * @returns {Promise<string | import("./index.js").MailerDeliveryPayload | null>} - Job id or payload in test mode.
57
61
  */
58
- async deliverLaver() {
59
- return await this.deliverLater();
62
+ async deliverLaver(options) {
63
+ return await this.deliverLater(options);
60
64
  }
61
65
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFpbGVyL2RlbGl2ZXJ5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQUNqQzs7eURBRXFEO0lBQ3JELE1BQU0sQ0FBQTtJQUNOOzt3REFFb0Q7SUFDcEQsYUFBYSxDQUFBO0lBQ2I7O3dCQUVvQjtJQUNwQixVQUFVLENBQUE7SUFFVjs7Ozs7O09BTUc7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7SUFDOUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQTtRQUV4QixPQUFPLHlEQUF5RCxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDdEcsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFekMsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUV6QyxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE9BQU8sTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHByZXBhcmVkIG1haWwgZGVsaXZlcnkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1haWxlckRlbGl2ZXJ5IHtcbiAgLyoqXG4gICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICogQHR5cGUge2ltcG9ydChcIi4vYmFzZS5qc1wiKS5WZWxvY2lvdXNNYWlsZXJCYXNlfSAqL1xuICBtYWlsZXJcbiAgLyoqXG4gICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICogQHR5cGUge1Byb21pc2U8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+fSAqL1xuICBhY3Rpb25Qcm9taXNlXG4gIC8qKlxuICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGFjdGlvbk5hbWVcblxuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBDb25zdHJ1Y3RvciBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS5qc1wiKS5WZWxvY2lvdXNNYWlsZXJCYXNlfSBhcmdzLm1haWxlciAtIE1haWxlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtQcm9taXNlPFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gYXJncy5hY3Rpb25Qcm9taXNlIC0gQWN0aW9uIHByb21pc2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmFjdGlvbk5hbWUgLSBBY3Rpb24gbmFtZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttYWlsZXIsIGFjdGlvblByb21pc2UsIGFjdGlvbk5hbWV9KSB7XG4gICAgdGhpcy5tYWlsZXIgPSBtYWlsZXJcbiAgICB0aGlzLmFjdGlvblByb21pc2UgPSBhY3Rpb25Qcm9taXNlXG4gICAgdGhpcy5hY3Rpb25OYW1lID0gYWN0aW9uTmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYnVpbGQgcGF5bG9hZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWQ+fSAtIFJlbmRlcmVkIG1haWxlciBwYXlsb2FkLlxuICAgKi9cbiAgYXN5bmMgYnVpbGRQYXlsb2FkKCkge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9uUHJvbWlzZVxuXG4gICAgcmV0dXJuIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9ICovIChhd2FpdCB0aGlzLm1haWxlci5fYnVpbGRQYXlsb2FkKCkpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkZWxpdmVyIG5vdy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWQgfCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IC0gRGVsaXZlcmVkIHBheWxvYWQgb3IgaGFuZGxlciByZXN1bHQuXG4gICAqL1xuICBhc3luYyBkZWxpdmVyTm93KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCB0aGlzLmJ1aWxkUGF5bG9hZCgpXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5tYWlsZXIuX2RlbGl2ZXJQYXlsb2FkKHBheWxvYWQpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkZWxpdmVyIGxhdGVyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmcgfCBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZCB8IG51bGw+fSAtIEpvYiBpZCBvciBwYXlsb2FkIGluIHRlc3QgbW9kZS5cbiAgICovXG4gIGFzeW5jIGRlbGl2ZXJMYXRlcigpIHtcbiAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgdGhpcy5idWlsZFBheWxvYWQoKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubWFpbGVyLl9lbnF1ZXVlUGF5bG9hZChwYXlsb2FkKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZGVsaXZlciBsYXZlci5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nIHwgaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWQgfCBudWxsPn0gLSBKb2IgaWQgb3IgcGF5bG9hZCBpbiB0ZXN0IG1vZGUuXG4gICAqL1xuICBhc3luYyBkZWxpdmVyTGF2ZXIoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVsaXZlckxhdGVyKClcbiAgfVxufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFpbGVyL2RlbGl2ZXJ5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGFBQWEsTUFBTSw2QkFBNkIsQ0FBQTtBQUV2RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQUNqQzs7eURBRXFEO0lBQ3JELE1BQU0sQ0FBQTtJQUNOOzt3REFFb0Q7SUFDcEQsYUFBYSxDQUFBO0lBQ2I7O3dCQUVvQjtJQUNwQixVQUFVLENBQUE7SUFFVjs7Ozs7O09BTUc7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7SUFDOUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxZQUFZO1FBQ2hCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQTtRQUV4QixPQUFPLHlEQUF5RCxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDdEcsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFekMsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFDLGlCQUFpQixFQUFFLEdBQUcsUUFBUSxFQUFDLEdBQUcsRUFBRTtRQUN0RCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFekMsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxFQUFDLGlCQUFpQixFQUFDLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTztRQUN4QixPQUFPLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHByZXBhcmVkIG1haWwgZGVsaXZlcnkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1haWxlckRlbGl2ZXJ5IHtcbiAgLyoqXG4gICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICogQHR5cGUge2ltcG9ydChcIi4vYmFzZS5qc1wiKS5WZWxvY2lvdXNNYWlsZXJCYXNlfSAqL1xuICBtYWlsZXJcbiAgLyoqXG4gICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICogQHR5cGUge1Byb21pc2U8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+fSAqL1xuICBhY3Rpb25Qcm9taXNlXG4gIC8qKlxuICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGFjdGlvbk5hbWVcblxuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBDb25zdHJ1Y3RvciBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS5qc1wiKS5WZWxvY2lvdXNNYWlsZXJCYXNlfSBhcmdzLm1haWxlciAtIE1haWxlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtQcm9taXNlPFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gYXJncy5hY3Rpb25Qcm9taXNlIC0gQWN0aW9uIHByb21pc2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmFjdGlvbk5hbWUgLSBBY3Rpb24gbmFtZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttYWlsZXIsIGFjdGlvblByb21pc2UsIGFjdGlvbk5hbWV9KSB7XG4gICAgdGhpcy5tYWlsZXIgPSBtYWlsZXJcbiAgICB0aGlzLmFjdGlvblByb21pc2UgPSBhY3Rpb25Qcm9taXNlXG4gICAgdGhpcy5hY3Rpb25OYW1lID0gYWN0aW9uTmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYnVpbGQgcGF5bG9hZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWQ+fSAtIFJlbmRlcmVkIG1haWxlciBwYXlsb2FkLlxuICAgKi9cbiAgYXN5bmMgYnVpbGRQYXlsb2FkKCkge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9uUHJvbWlzZVxuXG4gICAgcmV0dXJuIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9ICovIChhd2FpdCB0aGlzLm1haWxlci5fYnVpbGRQYXlsb2FkKCkpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkZWxpdmVyIG5vdy5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWQgfCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IC0gRGVsaXZlcmVkIHBheWxvYWQgb3IgaGFuZGxlciByZXN1bHQuXG4gICAqL1xuICBhc3luYyBkZWxpdmVyTm93KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCB0aGlzLmJ1aWxkUGF5bG9hZCgpXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5tYWlsZXIuX2RlbGl2ZXJQYXlsb2FkKHBheWxvYWQpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkZWxpdmVyIGxhdGVyLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlMYXRlck9wdGlvbnN9IFtvcHRpb25zXSAtIERlbGl2ZXJ5IGV4ZWN1dGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmcgfCBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5UGF5bG9hZCB8IG51bGw+fSAtIEpvYiBpZCBvciBwYXlsb2FkIGluIHRlc3QgbW9kZS5cbiAgICovXG4gIGFzeW5jIGRlbGl2ZXJMYXRlcih7ZGVsaXZlcnlPcGVyYXRpb24sIC4uLnJlc3RBcmdzfSA9IHt9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcbiAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgdGhpcy5idWlsZFBheWxvYWQoKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubWFpbGVyLl9lbnF1ZXVlUGF5bG9hZChwYXlsb2FkLCB7ZGVsaXZlcnlPcGVyYXRpb259KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZGVsaXZlciBsYXZlci5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5TGF0ZXJPcHRpb25zfSBbb3B0aW9uc10gLSBEZWxpdmVyeSBleGVjdXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nIHwgaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWQgfCBudWxsPn0gLSBKb2IgaWQgb3IgcGF5bG9hZCBpbiB0ZXN0IG1vZGUuXG4gICAqL1xuICBhc3luYyBkZWxpdmVyTGF2ZXIob3B0aW9ucykge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlbGl2ZXJMYXRlcihvcHRpb25zKVxuICB9XG59XG4iXX0=
@@ -1,3 +1,21 @@
1
+ export type MailerDeliveryOperationRequest = {
2
+ id: string;
3
+ idempotency: "required";
4
+ };
5
+ export type MailerDeliveryOperation = {
6
+ id: string;
7
+ idempotency: "required";
8
+ payloadDigest: string;
9
+ providerKind: string;
10
+ providerRetentionMs: number;
11
+ };
12
+ export type MailerDeliveryIdempotencyCapability = {
13
+ providerKind: string;
14
+ retentionMs: number;
15
+ };
16
+ export type MailerDeliveryLaterOptions = {
17
+ deliveryOperation?: MailerDeliveryOperationRequest;
18
+ };
1
19
  export type MailerDeliveryPayload = {
2
20
  to: ReturnType<typeof JSON.parse>;
3
21
  subject: string;
@@ -9,8 +27,13 @@ export type MailerDeliveryPayload = {
9
27
  html: string;
10
28
  mailer: string;
11
29
  action: string;
30
+ deliveryOperation?: MailerDeliveryOperation;
12
31
  };
13
- /** @typedef {{to: ReturnType<typeof JSON.parse>, subject: string, from?: ReturnType<typeof JSON.parse>, cc?: ReturnType<typeof JSON.parse>, bcc?: ReturnType<typeof JSON.parse>, replyTo?: ReturnType<typeof JSON.parse>, headers?: Record<string, string>, html: string, mailer: string, action: string}} MailerDeliveryPayload */
32
+ /** @typedef {{id: string, idempotency: "required"}} MailerDeliveryOperationRequest */
33
+ /** @typedef {{id: string, idempotency: "required", payloadDigest: string, providerKind: string, providerRetentionMs: number}} MailerDeliveryOperation */
34
+ /** @typedef {{providerKind: string, retentionMs: number}} MailerDeliveryIdempotencyCapability */
35
+ /** @typedef {{deliveryOperation?: MailerDeliveryOperationRequest}} MailerDeliveryLaterOptions */
36
+ /** @typedef {{to: ReturnType<typeof JSON.parse>, subject: string, from?: ReturnType<typeof JSON.parse>, cc?: ReturnType<typeof JSON.parse>, bcc?: ReturnType<typeof JSON.parse>, replyTo?: ReturnType<typeof JSON.parse>, headers?: Record<string, string>, html: string, mailer: string, action: string, deliveryOperation?: MailerDeliveryOperation}} MailerDeliveryPayload */
14
37
  import { clearDeliveries, deliverPayload, deliveries, enqueuePayload, getDeliveryHandler, setDeliveryHandler, VelociousMailerBase } from "./base.js";
15
38
  export { VelociousMailerBase, clearDeliveries, deliverPayload, deliveries, enqueuePayload, getDeliveryHandler, setDeliveryHandler };
16
39
  export default VelociousMailerBase;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mailer/index.js"],"names":[],"mappings":"AAEI,YAAwS,qBAAqB,GAAnT;IAAC,EAAE,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAuB;AAAjU,oUAAoU;AAEpU,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EACnB,CAAA;eACc,mBAAmB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mailer/index.js"],"names":[],"mappings":"AAEI,YAAiD,8BAA8B,GAArE;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,UAAU,CAAA;CAAC,CAAgC;AAC/E,YAA2H,uBAAuB,GAAxI;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,UAAU,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAC,CAAyB;AAClJ,YAAuD,mCAAmC,GAAhF;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAC,CAAqC;AAC1F,YAAgE,0BAA0B,GAAhF;IAAC,iBAAiB,CAAC,EAAE,8BAA8B,CAAA;CAAC,CAA4B;AAC1F,YAAqV,qBAAqB,GAAhW;IAAC,EAAE,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAA;CAAC,CAAuB;AAJ9W,sFAAsF;AACtF,yJAAyJ;AACzJ,iGAAiG;AACjG,iGAAiG;AACjG,iXAAiX;AAEjX,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EACnB,CAAA;eACc,mBAAmB"}
@@ -1,6 +1,10 @@
1
1
  // @ts-check
2
- /** @typedef {{to: ReturnType<typeof JSON.parse>, subject: string, from?: ReturnType<typeof JSON.parse>, cc?: ReturnType<typeof JSON.parse>, bcc?: ReturnType<typeof JSON.parse>, replyTo?: ReturnType<typeof JSON.parse>, headers?: Record<string, string>, html: string, mailer: string, action: string}} MailerDeliveryPayload */
2
+ /** @typedef {{id: string, idempotency: "required"}} MailerDeliveryOperationRequest */
3
+ /** @typedef {{id: string, idempotency: "required", payloadDigest: string, providerKind: string, providerRetentionMs: number}} MailerDeliveryOperation */
4
+ /** @typedef {{providerKind: string, retentionMs: number}} MailerDeliveryIdempotencyCapability */
5
+ /** @typedef {{deliveryOperation?: MailerDeliveryOperationRequest}} MailerDeliveryLaterOptions */
6
+ /** @typedef {{to: ReturnType<typeof JSON.parse>, subject: string, from?: ReturnType<typeof JSON.parse>, cc?: ReturnType<typeof JSON.parse>, bcc?: ReturnType<typeof JSON.parse>, replyTo?: ReturnType<typeof JSON.parse>, headers?: Record<string, string>, html: string, mailer: string, action: string, deliveryOperation?: MailerDeliveryOperation}} MailerDeliveryPayload */
3
7
  import { clearDeliveries, deliverPayload, deliveries, enqueuePayload, getDeliveryHandler, setDeliveryHandler, VelociousMailerBase } from "./base.js";
4
8
  export { VelociousMailerBase, clearDeliveries, deliverPayload, deliveries, enqueuePayload, getDeliveryHandler, setDeliveryHandler };
5
9
  export default VelociousMailerBase;
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFpbGVyL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixvVUFBb1U7QUFFcFUsT0FBTyxFQUNMLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNwQixNQUFNLFdBQVcsQ0FBQTtBQUVsQixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ25CLENBQUE7QUFDRCxlQUFlLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKiBAdHlwZWRlZiB7e3RvOiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgc3ViamVjdDogc3RyaW5nLCBmcm9tPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIGNjPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIGJjYz86IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCByZXBseVRvPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBodG1sOiBzdHJpbmcsIG1haWxlcjogc3RyaW5nLCBhY3Rpb246IHN0cmluZ319IE1haWxlckRlbGl2ZXJ5UGF5bG9hZCAqL1xuXG5pbXBvcnQge1xuICBjbGVhckRlbGl2ZXJpZXMsXG4gIGRlbGl2ZXJQYXlsb2FkLFxuICBkZWxpdmVyaWVzLFxuICBlbnF1ZXVlUGF5bG9hZCxcbiAgZ2V0RGVsaXZlcnlIYW5kbGVyLFxuICBzZXREZWxpdmVyeUhhbmRsZXIsXG4gIFZlbG9jaW91c01haWxlckJhc2Vcbn0gZnJvbSBcIi4vYmFzZS5qc1wiXG5cbmV4cG9ydCB7XG4gIFZlbG9jaW91c01haWxlckJhc2UsXG4gIGNsZWFyRGVsaXZlcmllcyxcbiAgZGVsaXZlclBheWxvYWQsXG4gIGRlbGl2ZXJpZXMsXG4gIGVucXVldWVQYXlsb2FkLFxuICBnZXREZWxpdmVyeUhhbmRsZXIsXG4gIHNldERlbGl2ZXJ5SGFuZGxlclxufVxuZXhwb3J0IGRlZmF1bHQgVmVsb2Npb3VzTWFpbGVyQmFzZVxuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFpbGVyL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixzRkFBc0Y7QUFDdEYseUpBQXlKO0FBQ3pKLGlHQUFpRztBQUNqRyxpR0FBaUc7QUFDakcsaVhBQWlYO0FBRWpYLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLFVBQVUsRUFDVixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDcEIsTUFBTSxXQUFXLENBQUE7QUFFbEIsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsY0FBYyxFQUNkLFVBQVUsRUFDVixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNuQixDQUFBO0FBQ0QsZUFBZSxtQkFBbUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKiogQHR5cGVkZWYge3tpZDogc3RyaW5nLCBpZGVtcG90ZW5jeTogXCJyZXF1aXJlZFwifX0gTWFpbGVyRGVsaXZlcnlPcGVyYXRpb25SZXF1ZXN0ICovXG4vKiogQHR5cGVkZWYge3tpZDogc3RyaW5nLCBpZGVtcG90ZW5jeTogXCJyZXF1aXJlZFwiLCBwYXlsb2FkRGlnZXN0OiBzdHJpbmcsIHByb3ZpZGVyS2luZDogc3RyaW5nLCBwcm92aWRlclJldGVudGlvbk1zOiBudW1iZXJ9fSBNYWlsZXJEZWxpdmVyeU9wZXJhdGlvbiAqL1xuLyoqIEB0eXBlZGVmIHt7cHJvdmlkZXJLaW5kOiBzdHJpbmcsIHJldGVudGlvbk1zOiBudW1iZXJ9fSBNYWlsZXJEZWxpdmVyeUlkZW1wb3RlbmN5Q2FwYWJpbGl0eSAqL1xuLyoqIEB0eXBlZGVmIHt7ZGVsaXZlcnlPcGVyYXRpb24/OiBNYWlsZXJEZWxpdmVyeU9wZXJhdGlvblJlcXVlc3R9fSBNYWlsZXJEZWxpdmVyeUxhdGVyT3B0aW9ucyAqL1xuLyoqIEB0eXBlZGVmIHt7dG86IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCBzdWJqZWN0OiBzdHJpbmcsIGZyb20/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgY2M/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgYmNjPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIHJlcGx5VG8/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGh0bWw6IHN0cmluZywgbWFpbGVyOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBkZWxpdmVyeU9wZXJhdGlvbj86IE1haWxlckRlbGl2ZXJ5T3BlcmF0aW9ufX0gTWFpbGVyRGVsaXZlcnlQYXlsb2FkICovXG5cbmltcG9ydCB7XG4gIGNsZWFyRGVsaXZlcmllcyxcbiAgZGVsaXZlclBheWxvYWQsXG4gIGRlbGl2ZXJpZXMsXG4gIGVucXVldWVQYXlsb2FkLFxuICBnZXREZWxpdmVyeUhhbmRsZXIsXG4gIHNldERlbGl2ZXJ5SGFuZGxlcixcbiAgVmVsb2Npb3VzTWFpbGVyQmFzZVxufSBmcm9tIFwiLi9iYXNlLmpzXCJcblxuZXhwb3J0IHtcbiAgVmVsb2Npb3VzTWFpbGVyQmFzZSxcbiAgY2xlYXJEZWxpdmVyaWVzLFxuICBkZWxpdmVyUGF5bG9hZCxcbiAgZGVsaXZlcmllcyxcbiAgZW5xdWV1ZVBheWxvYWQsXG4gIGdldERlbGl2ZXJ5SGFuZGxlcixcbiAgc2V0RGVsaXZlcnlIYW5kbGVyXG59XG5leHBvcnQgZGVmYXVsdCBWZWxvY2lvdXNNYWlsZXJCYXNlXG4iXX0=
@@ -1,17 +1,15 @@
1
- export type MailerDeliveryPayload = {
2
- to: ReturnType<typeof JSON.parse>;
3
- subject: string;
4
- from?: ReturnType<typeof JSON.parse>;
5
- cc?: ReturnType<typeof JSON.parse>;
6
- bcc?: ReturnType<typeof JSON.parse>;
7
- replyTo?: ReturnType<typeof JSON.parse>;
8
- headers?: Record<string, string>;
9
- html: string;
10
- mailer: string;
11
- action: string;
12
- };
13
- /** @typedef {{to: ReturnType<typeof JSON.parse>, subject: string, from?: ReturnType<typeof JSON.parse>, cc?: ReturnType<typeof JSON.parse>, bcc?: ReturnType<typeof JSON.parse>, replyTo?: ReturnType<typeof JSON.parse>, headers?: Record<string, string>, html: string, mailer: string, action: string}} MailerDeliveryPayload */
1
+ export type MailerDeliveryOperationRequest = import("./mailer/index.js").MailerDeliveryOperationRequest;
2
+ export type MailerDeliveryOperation = import("./mailer/index.js").MailerDeliveryOperation;
3
+ export type MailerDeliveryIdempotencyCapability = import("./mailer/index.js").MailerDeliveryIdempotencyCapability;
4
+ export type MailerDeliveryLaterOptions = import("./mailer/index.js").MailerDeliveryLaterOptions;
5
+ export type MailerDeliveryPayload = import("./mailer/index.js").MailerDeliveryPayload;
6
+ /** @typedef {import("./mailer/index.js").MailerDeliveryOperationRequest} MailerDeliveryOperationRequest */
7
+ /** @typedef {import("./mailer/index.js").MailerDeliveryOperation} MailerDeliveryOperation */
8
+ /** @typedef {import("./mailer/index.js").MailerDeliveryIdempotencyCapability} MailerDeliveryIdempotencyCapability */
9
+ /** @typedef {import("./mailer/index.js").MailerDeliveryLaterOptions} MailerDeliveryLaterOptions */
10
+ /** @typedef {import("./mailer/index.js").MailerDeliveryPayload} MailerDeliveryPayload */
14
11
  export { VelociousMailerBase, clearDeliveries, deliverPayload, deliveries, enqueuePayload, getDeliveryHandler, setDeliveryHandler } from "./mailer/index.js";
15
12
  export { default as SmtpMailerBackend } from "./mailer/backends/smtp.js";
13
+ export { default as ResendSmtpMailerBackend } from "./mailer/backends/resend-smtp.js";
16
14
  export { default } from "./mailer/index.js";
17
15
  //# sourceMappingURL=mailer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.d.ts","sourceRoot":"","sources":["../../src/mailer.js"],"names":[],"mappings":"AAEI,YAAwS,qBAAqB,GAAnT;IAAC,EAAE,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAuB;AAAjU,oUAAoU;AAEpU,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"mailer.d.ts","sourceRoot":"","sources":["../../src/mailer.js"],"names":[],"mappings":"AAEI,YAAsE,8BAA8B,GAA1F,OAAO,mBAAmB,EAAE,8BAA8B,CAAgC;AACpG,YAA+D,uBAAuB,GAA5E,OAAO,mBAAmB,EAAE,uBAAuB,CAAyB;AACtF,YAA2E,mCAAmC,GAApG,OAAO,mBAAmB,EAAE,mCAAmC,CAAqC;AAC9G,YAAkE,0BAA0B,GAAlF,OAAO,mBAAmB,EAAE,0BAA0B,CAA4B;AAC5F,YAA6D,qBAAqB,GAAxE,OAAO,mBAAmB,EAAE,qBAAqB,CAAuB;AAJtF,2GAA2G;AAC3G,6FAA6F;AAC7F,qHAAqH;AACrH,mGAAmG;AACnG,yFAAyF;AAEzF,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAC,OAAO,IAAI,uBAAuB,EAAC,MAAM,kCAAkC,CAAA;AACnF,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA"}
@@ -1,6 +1,11 @@
1
1
  // @ts-check
2
- /** @typedef {{to: ReturnType<typeof JSON.parse>, subject: string, from?: ReturnType<typeof JSON.parse>, cc?: ReturnType<typeof JSON.parse>, bcc?: ReturnType<typeof JSON.parse>, replyTo?: ReturnType<typeof JSON.parse>, headers?: Record<string, string>, html: string, mailer: string, action: string}} MailerDeliveryPayload */
2
+ /** @typedef {import("./mailer/index.js").MailerDeliveryOperationRequest} MailerDeliveryOperationRequest */
3
+ /** @typedef {import("./mailer/index.js").MailerDeliveryOperation} MailerDeliveryOperation */
4
+ /** @typedef {import("./mailer/index.js").MailerDeliveryIdempotencyCapability} MailerDeliveryIdempotencyCapability */
5
+ /** @typedef {import("./mailer/index.js").MailerDeliveryLaterOptions} MailerDeliveryLaterOptions */
6
+ /** @typedef {import("./mailer/index.js").MailerDeliveryPayload} MailerDeliveryPayload */
3
7
  export { VelociousMailerBase, clearDeliveries, deliverPayload, deliveries, enqueuePayload, getDeliveryHandler, setDeliveryHandler } from "./mailer/index.js";
4
8
  export { default as SmtpMailerBackend } from "./mailer/backends/smtp.js";
9
+ export { default as ResendSmtpMailerBackend } from "./mailer/backends/resend-smtp.js";
5
10
  export { default } from "./mailer/index.js";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21haWxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosb1VBQW9VO0FBRXBVLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbkIsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUMsT0FBTyxJQUFJLGlCQUFpQixFQUFDLE1BQU0sMkJBQTJCLENBQUE7QUFDdEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKiBAdHlwZWRlZiB7e3RvOiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgc3ViamVjdDogc3RyaW5nLCBmcm9tPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIGNjPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIGJjYz86IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCByZXBseVRvPzogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4sIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBodG1sOiBzdHJpbmcsIG1haWxlcjogc3RyaW5nLCBhY3Rpb246IHN0cmluZ319IE1haWxlckRlbGl2ZXJ5UGF5bG9hZCAqL1xuXG5leHBvcnQge1xuICBWZWxvY2lvdXNNYWlsZXJCYXNlLFxuICBjbGVhckRlbGl2ZXJpZXMsXG4gIGRlbGl2ZXJQYXlsb2FkLFxuICBkZWxpdmVyaWVzLFxuICBlbnF1ZXVlUGF5bG9hZCxcbiAgZ2V0RGVsaXZlcnlIYW5kbGVyLFxuICBzZXREZWxpdmVyeUhhbmRsZXJcbn0gZnJvbSBcIi4vbWFpbGVyL2luZGV4LmpzXCJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBTbXRwTWFpbGVyQmFja2VuZH0gZnJvbSBcIi4vbWFpbGVyL2JhY2tlbmRzL3NtdHAuanNcIlxuZXhwb3J0IHtkZWZhdWx0fSBmcm9tIFwiLi9tYWlsZXIvaW5kZXguanNcIlxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21haWxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosMkdBQTJHO0FBQzNHLDZGQUE2RjtBQUM3RixxSEFBcUg7QUFDckgsbUdBQW1HO0FBQ25HLHlGQUF5RjtBQUV6RixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ25CLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFDLE9BQU8sSUFBSSxpQkFBaUIsRUFBQyxNQUFNLDJCQUEyQixDQUFBO0FBQ3RFLE9BQU8sRUFBQyxPQUFPLElBQUksdUJBQXVCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNuRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL21haWxlci9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeU9wZXJhdGlvblJlcXVlc3R9IE1haWxlckRlbGl2ZXJ5T3BlcmF0aW9uUmVxdWVzdCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL21haWxlci9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeU9wZXJhdGlvbn0gTWFpbGVyRGVsaXZlcnlPcGVyYXRpb24gKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi9tYWlsZXIvaW5kZXguanNcIikuTWFpbGVyRGVsaXZlcnlJZGVtcG90ZW5jeUNhcGFiaWxpdHl9IE1haWxlckRlbGl2ZXJ5SWRlbXBvdGVuY3lDYXBhYmlsaXR5ICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vbWFpbGVyL2luZGV4LmpzXCIpLk1haWxlckRlbGl2ZXJ5TGF0ZXJPcHRpb25zfSBNYWlsZXJEZWxpdmVyeUxhdGVyT3B0aW9ucyAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL21haWxlci9pbmRleC5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWR9IE1haWxlckRlbGl2ZXJ5UGF5bG9hZCAqL1xuXG5leHBvcnQge1xuICBWZWxvY2lvdXNNYWlsZXJCYXNlLFxuICBjbGVhckRlbGl2ZXJpZXMsXG4gIGRlbGl2ZXJQYXlsb2FkLFxuICBkZWxpdmVyaWVzLFxuICBlbnF1ZXVlUGF5bG9hZCxcbiAgZ2V0RGVsaXZlcnlIYW5kbGVyLFxuICBzZXREZWxpdmVyeUhhbmRsZXJcbn0gZnJvbSBcIi4vbWFpbGVyL2luZGV4LmpzXCJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBTbXRwTWFpbGVyQmFja2VuZH0gZnJvbSBcIi4vbWFpbGVyL2JhY2tlbmRzL3NtdHAuanNcIlxuZXhwb3J0IHtkZWZhdWx0IGFzIFJlc2VuZFNtdHBNYWlsZXJCYWNrZW5kfSBmcm9tIFwiLi9tYWlsZXIvYmFja2VuZHMvcmVzZW5kLXNtdHAuanNcIlxuZXhwb3J0IHtkZWZhdWx0fSBmcm9tIFwiLi9tYWlsZXIvaW5kZXguanNcIlxuIl19
@@ -37,7 +37,7 @@
37
37
  * @property {import("./device-identity.js").SignedSyncMutation} [signedMutation] - Original signed mutation envelope, retained for peer-forwarded mutations.
38
38
  * @property {number} sequence - Monotonic local sequence.
39
39
  * @property {LocalMutationStatus} status - Local replay/apply status.
40
- * @property {Record<string, import("../configuration-types.js").FrontendModelSyncJsonValue>} [syncResult] - Backend replay/result metadata.
40
+ * @property {Record<string, import("../frontend-models/base.js").FrontendModelTransportValue>} [syncResult] - Backend replay/result metadata. Stored as transport markers so Date (and other typed) values survive the durable JSON round trip and are restored on readback.
41
41
  * @property {string} updatedAt - ISO timestamp when the record was last changed.
42
42
  */
43
43
  export type LocalMutationLogRecordsOptions = {
@@ -113,9 +113,9 @@ export type LocalMutationLogRecord = {
113
113
  */
114
114
  status: LocalMutationStatus;
115
115
  /**
116
- * - Backend replay/result metadata.
116
+ * - Backend replay/result metadata. Stored as transport markers so Date (and other typed) values survive the durable JSON round trip and are restored on readback.
117
117
  */
118
- syncResult?: Record<string, import("../configuration-types.js").FrontendModelSyncJsonValue>;
118
+ syncResult?: Record<string, import("../frontend-models/base.js").FrontendModelTransportValue>;
119
119
  /**
120
120
  * - ISO timestamp when the record was last changed.
121
121
  */
@@ -169,13 +169,13 @@ export default class LocalMutationLog {
169
169
  * @param {object} args - Arguments.
170
170
  * @param {string} args.id - Record id.
171
171
  * @param {LocalMutationStatus} args.status - New status.
172
- * @param {Record<string, import("../configuration-types.js").FrontendModelSyncJsonValue>} [args.syncResult] - Result metadata.
172
+ * @param {Record<string, import("../frontend-models/base.js").FrontendModelTransportValue>} [args.syncResult] - Result metadata (may carry transport-restored typed values).
173
173
  * @returns {Promise<LocalMutationLogRecord>} - Updated record.
174
174
  */
175
175
  updateStatus({ id, status, syncResult }: {
176
176
  id: string;
177
177
  status: LocalMutationStatus;
178
- syncResult?: Record<string, import("../configuration-types.js").FrontendModelSyncJsonValue>;
178
+ syncResult?: Record<string, import("../frontend-models/base.js").FrontendModelTransportValue>;
179
179
  }): Promise<LocalMutationLogRecord>;
180
180
  /**
181
181
  * Replaces the mutation payload of a still-pending record. Used when an
@@ -1 +1 @@
1
- {"version":3,"file":"local-mutation-log.d.ts","sourceRoot":"","sources":["../../../src/sync/local-mutation-log.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-mutation-log.d.ts","sourceRoot":"","sources":["../../../src/sync/local-mutation-log.js"],"names":[],"mappings":"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"}