@allthings/cloud-toolkit 5.3.0-beta.1 → 5.3.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.
package/README.md CHANGED
@@ -28,7 +28,7 @@ caller builds them. Every header is omitted when the value it needs is not given
28
28
  | `Content-Language` | `contentLanguage` |
29
29
  | `Feedback-ID` | `feedbackId` |
30
30
  | `List-Id` | `listId` |
31
- | `List-Unsubscribe` | `unsubscribeUrl`, `unsubscribeMailto` |
31
+ | `List-Unsubscribe` | `unsubscribeUrl` |
32
32
  | `List-Unsubscribe-Post` | `oneClickUnsubscribe` (default true, https target only) |
33
33
  | `Precedence: bulk` | `bulk` (default false) |
34
34
  | `X-Entity-Ref-ID` | `entityReferenceId` |
package/dist/lib.cjs.js CHANGED
@@ -908,39 +908,20 @@ const AUTO_RESPONSE_SUPPRESSION_HEADERS = {
908
908
  'Auto-Submitted': 'auto-generated',
909
909
  'X-Auto-Response-Suppress': 'OOF, AutoReply',
910
910
  };
911
- const nonBlank = (value) => value?.trim() ? value.trim() : undefined;
912
- const bareTarget = (value) => nonBlank(nonBlank(value)?.replace(/^[\s<]+|[\s>]+$/g, ''));
913
- const angleBracketed = (value) => `<${value}>`;
914
- const asMailto = (value) => /^mailto:/i.test(value) ? value : `mailto:${value}`;
915
- const emailHeaders = ({ bulk = false, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe = true, suppressAutoResponses = true, unsubscribeMailto, unsubscribeUrl, } = {}) => {
916
- const language = nonBlank(contentLanguage);
917
- const feedback = nonBlank(feedbackId);
918
- const list = bareTarget(listId);
919
- const entityReference = nonBlank(entityReferenceId);
920
- const httpsUnsubscribe = bareTarget(unsubscribeUrl);
921
- const mailtoUnsubscribe = bareTarget(unsubscribeMailto);
922
- const unsubscribeTargets = [
923
- ...(httpsUnsubscribe ? [angleBracketed(httpsUnsubscribe)] : []),
924
- ...(mailtoUnsubscribe ? [angleBracketed(asMailto(mailtoUnsubscribe))] : []),
925
- ];
926
- const supportsOneClick = oneClickUnsubscribe &&
927
- httpsUnsubscribe !== undefined &&
928
- /^https:/i.test(httpsUnsubscribe);
929
- return {
930
- ...(suppressAutoResponses ? AUTO_RESPONSE_SUPPRESSION_HEADERS : {}),
931
- ...(language ? { 'Content-Language': language } : {}),
932
- ...(feedback ? { 'Feedback-ID': feedback } : {}),
933
- ...(list ? { 'List-Id': angleBracketed(list) } : {}),
934
- ...(unsubscribeTargets.length > 0
935
- ? { 'List-Unsubscribe': unsubscribeTargets.join(', ') }
936
- : {}),
937
- ...(supportsOneClick
938
- ? { 'List-Unsubscribe-Post': 'List-Unsubscribe=One-Click' }
939
- : {}),
940
- ...(bulk ? { Precedence: 'bulk' } : {}),
941
- ...(entityReference ? { 'X-Entity-Ref-ID': entityReference } : {}),
942
- };
943
- };
911
+ const emailHeaders = ({ bulk = false, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe = true, suppressAutoResponses = true, unsubscribeUrl, } = {}) => Object.fromEntries(Object.entries({
912
+ ...(suppressAutoResponses ? AUTO_RESPONSE_SUPPRESSION_HEADERS : {}),
913
+ 'Content-Language': contentLanguage?.trim(),
914
+ 'Feedback-ID': feedbackId?.trim(),
915
+ 'List-Id': listId?.trim().replace(/^<*([^<>].*?)>*$/, '<$1>'),
916
+ 'List-Unsubscribe': unsubscribeUrl
917
+ ?.trim()
918
+ .replace(/^<*([^<>].*?)>*$/, '<$1>'),
919
+ 'List-Unsubscribe-Post': oneClickUnsubscribe &&
920
+ /^<?https:/i.test(unsubscribeUrl?.trim() ?? '') &&
921
+ 'List-Unsubscribe=One-Click',
922
+ Precedence: bulk && 'bulk',
923
+ 'X-Entity-Ref-ID': entityReferenceId?.trim(),
924
+ }).filter(([, value]) => value));
944
925
 
945
926
  const invokeLambda = async (lambdaClient, config, invocationType, payload) => {
946
927
  try {
@@ -1048,24 +1029,6 @@ const parameterStore = (userConfig) => {
1048
1029
  const DEFAULT_CLIENT_CONFIG = {
1049
1030
  clientConfig: { region: 'eu-west-1' },
1050
1031
  };
1051
- const toMailOptions = (options) => ({
1052
- attachments: options.attachments,
1053
- bcc: options.bcc,
1054
- cc: options.cc,
1055
- envelope: options.envelope,
1056
- from: options.from,
1057
- headers: options.headers,
1058
- html: options.html,
1059
- inReplyTo: options.inReplyTo,
1060
- messageId: options.messageId,
1061
- references: options.references,
1062
- replyTo: options.replyTo,
1063
- sender: options.sender,
1064
- ses: options.ses,
1065
- subject: options.subject,
1066
- text: options.text,
1067
- to: options.to,
1068
- });
1069
1032
  const sendMail = async (config, transport, options, responseCallback) => {
1070
1033
  try {
1071
1034
  if (!options.html && !options.text) {
@@ -1080,7 +1043,7 @@ const sendMail = async (config, transport, options, responseCallback) => {
1080
1043
  }
1081
1044
  return false;
1082
1045
  }
1083
- const transportResponse = await transport.sendMail(toMailOptions(options));
1046
+ const transportResponse = await transport.sendMail(options);
1084
1047
  if (responseCallback) {
1085
1048
  await responseCallback(transportResponse);
1086
1049
  }
package/dist/lib.esm.mjs CHANGED
@@ -886,39 +886,20 @@ const AUTO_RESPONSE_SUPPRESSION_HEADERS = {
886
886
  'Auto-Submitted': 'auto-generated',
887
887
  'X-Auto-Response-Suppress': 'OOF, AutoReply',
888
888
  };
889
- const nonBlank = (value) => value?.trim() ? value.trim() : undefined;
890
- const bareTarget = (value) => nonBlank(nonBlank(value)?.replace(/^[\s<]+|[\s>]+$/g, ''));
891
- const angleBracketed = (value) => `<${value}>`;
892
- const asMailto = (value) => /^mailto:/i.test(value) ? value : `mailto:${value}`;
893
- const emailHeaders = ({ bulk = false, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe = true, suppressAutoResponses = true, unsubscribeMailto, unsubscribeUrl, } = {}) => {
894
- const language = nonBlank(contentLanguage);
895
- const feedback = nonBlank(feedbackId);
896
- const list = bareTarget(listId);
897
- const entityReference = nonBlank(entityReferenceId);
898
- const httpsUnsubscribe = bareTarget(unsubscribeUrl);
899
- const mailtoUnsubscribe = bareTarget(unsubscribeMailto);
900
- const unsubscribeTargets = [
901
- ...(httpsUnsubscribe ? [angleBracketed(httpsUnsubscribe)] : []),
902
- ...(mailtoUnsubscribe ? [angleBracketed(asMailto(mailtoUnsubscribe))] : []),
903
- ];
904
- const supportsOneClick = oneClickUnsubscribe &&
905
- httpsUnsubscribe !== undefined &&
906
- /^https:/i.test(httpsUnsubscribe);
907
- return {
908
- ...(suppressAutoResponses ? AUTO_RESPONSE_SUPPRESSION_HEADERS : {}),
909
- ...(language ? { 'Content-Language': language } : {}),
910
- ...(feedback ? { 'Feedback-ID': feedback } : {}),
911
- ...(list ? { 'List-Id': angleBracketed(list) } : {}),
912
- ...(unsubscribeTargets.length > 0
913
- ? { 'List-Unsubscribe': unsubscribeTargets.join(', ') }
914
- : {}),
915
- ...(supportsOneClick
916
- ? { 'List-Unsubscribe-Post': 'List-Unsubscribe=One-Click' }
917
- : {}),
918
- ...(bulk ? { Precedence: 'bulk' } : {}),
919
- ...(entityReference ? { 'X-Entity-Ref-ID': entityReference } : {}),
920
- };
921
- };
889
+ const emailHeaders = ({ bulk = false, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe = true, suppressAutoResponses = true, unsubscribeUrl, } = {}) => Object.fromEntries(Object.entries({
890
+ ...(suppressAutoResponses ? AUTO_RESPONSE_SUPPRESSION_HEADERS : {}),
891
+ 'Content-Language': contentLanguage?.trim(),
892
+ 'Feedback-ID': feedbackId?.trim(),
893
+ 'List-Id': listId?.trim().replace(/^<*([^<>].*?)>*$/, '<$1>'),
894
+ 'List-Unsubscribe': unsubscribeUrl
895
+ ?.trim()
896
+ .replace(/^<*([^<>].*?)>*$/, '<$1>'),
897
+ 'List-Unsubscribe-Post': oneClickUnsubscribe &&
898
+ /^<?https:/i.test(unsubscribeUrl?.trim() ?? '') &&
899
+ 'List-Unsubscribe=One-Click',
900
+ Precedence: bulk && 'bulk',
901
+ 'X-Entity-Ref-ID': entityReferenceId?.trim(),
902
+ }).filter(([, value]) => value));
922
903
 
923
904
  const invokeLambda = async (lambdaClient, config, invocationType, payload) => {
924
905
  try {
@@ -1026,24 +1007,6 @@ const parameterStore = (userConfig) => {
1026
1007
  const DEFAULT_CLIENT_CONFIG = {
1027
1008
  clientConfig: { region: 'eu-west-1' },
1028
1009
  };
1029
- const toMailOptions = (options) => ({
1030
- attachments: options.attachments,
1031
- bcc: options.bcc,
1032
- cc: options.cc,
1033
- envelope: options.envelope,
1034
- from: options.from,
1035
- headers: options.headers,
1036
- html: options.html,
1037
- inReplyTo: options.inReplyTo,
1038
- messageId: options.messageId,
1039
- references: options.references,
1040
- replyTo: options.replyTo,
1041
- sender: options.sender,
1042
- ses: options.ses,
1043
- subject: options.subject,
1044
- text: options.text,
1045
- to: options.to,
1046
- });
1047
1010
  const sendMail = async (config, transport, options, responseCallback) => {
1048
1011
  try {
1049
1012
  if (!options.html && !options.text) {
@@ -1058,7 +1021,7 @@ const sendMail = async (config, transport, options, responseCallback) => {
1058
1021
  }
1059
1022
  return false;
1060
1023
  }
1061
- const transportResponse = await transport.sendMail(toMailOptions(options));
1024
+ const transportResponse = await transport.sendMail(options);
1062
1025
  if (responseCallback) {
1063
1026
  await responseCallback(transportResponse);
1064
1027
  }
package/dist/ses.cjs.js CHANGED
@@ -7,61 +7,24 @@ const AUTO_RESPONSE_SUPPRESSION_HEADERS = {
7
7
  'Auto-Submitted': 'auto-generated',
8
8
  'X-Auto-Response-Suppress': 'OOF, AutoReply',
9
9
  };
10
- const nonBlank = (value) => value?.trim() ? value.trim() : undefined;
11
- const bareTarget = (value) => nonBlank(nonBlank(value)?.replace(/^[\s<]+|[\s>]+$/g, ''));
12
- const angleBracketed = (value) => `<${value}>`;
13
- const asMailto = (value) => /^mailto:/i.test(value) ? value : `mailto:${value}`;
14
- const emailHeaders = ({ bulk = false, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe = true, suppressAutoResponses = true, unsubscribeMailto, unsubscribeUrl, } = {}) => {
15
- const language = nonBlank(contentLanguage);
16
- const feedback = nonBlank(feedbackId);
17
- const list = bareTarget(listId);
18
- const entityReference = nonBlank(entityReferenceId);
19
- const httpsUnsubscribe = bareTarget(unsubscribeUrl);
20
- const mailtoUnsubscribe = bareTarget(unsubscribeMailto);
21
- const unsubscribeTargets = [
22
- ...(httpsUnsubscribe ? [angleBracketed(httpsUnsubscribe)] : []),
23
- ...(mailtoUnsubscribe ? [angleBracketed(asMailto(mailtoUnsubscribe))] : []),
24
- ];
25
- const supportsOneClick = oneClickUnsubscribe &&
26
- httpsUnsubscribe !== undefined &&
27
- /^https:/i.test(httpsUnsubscribe);
28
- return {
29
- ...(suppressAutoResponses ? AUTO_RESPONSE_SUPPRESSION_HEADERS : {}),
30
- ...(language ? { 'Content-Language': language } : {}),
31
- ...(feedback ? { 'Feedback-ID': feedback } : {}),
32
- ...(list ? { 'List-Id': angleBracketed(list) } : {}),
33
- ...(unsubscribeTargets.length > 0
34
- ? { 'List-Unsubscribe': unsubscribeTargets.join(', ') }
35
- : {}),
36
- ...(supportsOneClick
37
- ? { 'List-Unsubscribe-Post': 'List-Unsubscribe=One-Click' }
38
- : {}),
39
- ...(bulk ? { Precedence: 'bulk' } : {}),
40
- ...(entityReference ? { 'X-Entity-Ref-ID': entityReference } : {}),
41
- };
42
- };
10
+ const emailHeaders = ({ bulk = false, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe = true, suppressAutoResponses = true, unsubscribeUrl, } = {}) => Object.fromEntries(Object.entries({
11
+ ...(suppressAutoResponses ? AUTO_RESPONSE_SUPPRESSION_HEADERS : {}),
12
+ 'Content-Language': contentLanguage?.trim(),
13
+ 'Feedback-ID': feedbackId?.trim(),
14
+ 'List-Id': listId?.trim().replace(/^<*([^<>].*?)>*$/, '<$1>'),
15
+ 'List-Unsubscribe': unsubscribeUrl
16
+ ?.trim()
17
+ .replace(/^<*([^<>].*?)>*$/, '<$1>'),
18
+ 'List-Unsubscribe-Post': oneClickUnsubscribe &&
19
+ /^<?https:/i.test(unsubscribeUrl?.trim() ?? '') &&
20
+ 'List-Unsubscribe=One-Click',
21
+ Precedence: bulk && 'bulk',
22
+ 'X-Entity-Ref-ID': entityReferenceId?.trim(),
23
+ }).filter(([, value]) => value));
43
24
 
44
25
  const DEFAULT_CLIENT_CONFIG = {
45
26
  clientConfig: { region: 'eu-west-1' },
46
27
  };
47
- const toMailOptions = (options) => ({
48
- attachments: options.attachments,
49
- bcc: options.bcc,
50
- cc: options.cc,
51
- envelope: options.envelope,
52
- from: options.from,
53
- headers: options.headers,
54
- html: options.html,
55
- inReplyTo: options.inReplyTo,
56
- messageId: options.messageId,
57
- references: options.references,
58
- replyTo: options.replyTo,
59
- sender: options.sender,
60
- ses: options.ses,
61
- subject: options.subject,
62
- text: options.text,
63
- to: options.to,
64
- });
65
28
  const sendMail = async (config, transport, options, responseCallback) => {
66
29
  try {
67
30
  if (!options.html && !options.text) {
@@ -76,7 +39,7 @@ const sendMail = async (config, transport, options, responseCallback) => {
76
39
  }
77
40
  return false;
78
41
  }
79
- const transportResponse = await transport.sendMail(toMailOptions(options));
42
+ const transportResponse = await transport.sendMail(options);
80
43
  if (responseCallback) {
81
44
  await responseCallback(transportResponse);
82
45
  }
package/dist/ses.esm.mjs CHANGED
@@ -5,61 +5,24 @@ const AUTO_RESPONSE_SUPPRESSION_HEADERS = {
5
5
  'Auto-Submitted': 'auto-generated',
6
6
  'X-Auto-Response-Suppress': 'OOF, AutoReply',
7
7
  };
8
- const nonBlank = (value) => value?.trim() ? value.trim() : undefined;
9
- const bareTarget = (value) => nonBlank(nonBlank(value)?.replace(/^[\s<]+|[\s>]+$/g, ''));
10
- const angleBracketed = (value) => `<${value}>`;
11
- const asMailto = (value) => /^mailto:/i.test(value) ? value : `mailto:${value}`;
12
- const emailHeaders = ({ bulk = false, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe = true, suppressAutoResponses = true, unsubscribeMailto, unsubscribeUrl, } = {}) => {
13
- const language = nonBlank(contentLanguage);
14
- const feedback = nonBlank(feedbackId);
15
- const list = bareTarget(listId);
16
- const entityReference = nonBlank(entityReferenceId);
17
- const httpsUnsubscribe = bareTarget(unsubscribeUrl);
18
- const mailtoUnsubscribe = bareTarget(unsubscribeMailto);
19
- const unsubscribeTargets = [
20
- ...(httpsUnsubscribe ? [angleBracketed(httpsUnsubscribe)] : []),
21
- ...(mailtoUnsubscribe ? [angleBracketed(asMailto(mailtoUnsubscribe))] : []),
22
- ];
23
- const supportsOneClick = oneClickUnsubscribe &&
24
- httpsUnsubscribe !== undefined &&
25
- /^https:/i.test(httpsUnsubscribe);
26
- return {
27
- ...(suppressAutoResponses ? AUTO_RESPONSE_SUPPRESSION_HEADERS : {}),
28
- ...(language ? { 'Content-Language': language } : {}),
29
- ...(feedback ? { 'Feedback-ID': feedback } : {}),
30
- ...(list ? { 'List-Id': angleBracketed(list) } : {}),
31
- ...(unsubscribeTargets.length > 0
32
- ? { 'List-Unsubscribe': unsubscribeTargets.join(', ') }
33
- : {}),
34
- ...(supportsOneClick
35
- ? { 'List-Unsubscribe-Post': 'List-Unsubscribe=One-Click' }
36
- : {}),
37
- ...(bulk ? { Precedence: 'bulk' } : {}),
38
- ...(entityReference ? { 'X-Entity-Ref-ID': entityReference } : {}),
39
- };
40
- };
8
+ const emailHeaders = ({ bulk = false, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe = true, suppressAutoResponses = true, unsubscribeUrl, } = {}) => Object.fromEntries(Object.entries({
9
+ ...(suppressAutoResponses ? AUTO_RESPONSE_SUPPRESSION_HEADERS : {}),
10
+ 'Content-Language': contentLanguage?.trim(),
11
+ 'Feedback-ID': feedbackId?.trim(),
12
+ 'List-Id': listId?.trim().replace(/^<*([^<>].*?)>*$/, '<$1>'),
13
+ 'List-Unsubscribe': unsubscribeUrl
14
+ ?.trim()
15
+ .replace(/^<*([^<>].*?)>*$/, '<$1>'),
16
+ 'List-Unsubscribe-Post': oneClickUnsubscribe &&
17
+ /^<?https:/i.test(unsubscribeUrl?.trim() ?? '') &&
18
+ 'List-Unsubscribe=One-Click',
19
+ Precedence: bulk && 'bulk',
20
+ 'X-Entity-Ref-ID': entityReferenceId?.trim(),
21
+ }).filter(([, value]) => value));
41
22
 
42
23
  const DEFAULT_CLIENT_CONFIG = {
43
24
  clientConfig: { region: 'eu-west-1' },
44
25
  };
45
- const toMailOptions = (options) => ({
46
- attachments: options.attachments,
47
- bcc: options.bcc,
48
- cc: options.cc,
49
- envelope: options.envelope,
50
- from: options.from,
51
- headers: options.headers,
52
- html: options.html,
53
- inReplyTo: options.inReplyTo,
54
- messageId: options.messageId,
55
- references: options.references,
56
- replyTo: options.replyTo,
57
- sender: options.sender,
58
- ses: options.ses,
59
- subject: options.subject,
60
- text: options.text,
61
- to: options.to,
62
- });
63
26
  const sendMail = async (config, transport, options, responseCallback) => {
64
27
  try {
65
28
  if (!options.html && !options.text) {
@@ -74,7 +37,7 @@ const sendMail = async (config, transport, options, responseCallback) => {
74
37
  }
75
38
  return false;
76
39
  }
77
- const transportResponse = await transport.sendMail(toMailOptions(options));
40
+ const transportResponse = await transport.sendMail(options);
78
41
  if (responseCallback) {
79
42
  await responseCallback(transportResponse);
80
43
  }
@@ -11,7 +11,6 @@ export interface IEmailHeaderOptions {
11
11
  readonly listId?: string;
12
12
  readonly oneClickUnsubscribe?: boolean;
13
13
  readonly suppressAutoResponses?: boolean;
14
- readonly unsubscribeMailto?: string;
15
14
  readonly unsubscribeUrl?: string;
16
15
  }
17
- export declare const emailHeaders: ({ bulk, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe, suppressAutoResponses, unsubscribeMailto, unsubscribeUrl, }?: IEmailHeaderOptions) => Headers;
16
+ export declare const emailHeaders: ({ bulk, contentLanguage, entityReferenceId, feedbackId, listId, oneClickUnsubscribe, suppressAutoResponses, unsubscribeUrl, }?: IEmailHeaderOptions) => Headers;
@@ -2,5 +2,5 @@ export { dynamodb, IDynamoDBConfig, IDynamoDBInstance, IUnprocessedItems, TBatch
2
2
  export { AUTO_RESPONSE_SUPPRESSION_HEADERS, emailHeaders, IEmailHeaderOptions, } from './emailHeaders';
3
3
  export { ILambda, ILambdaInstance, lambda, TInvokeLambda } from './lambda';
4
4
  export { DEFAULT_CLIENT_CONFIG as DEFAULT_PARAMETER_STORE_CLIENT_CONFIG, IParameterStore, IParameterStoreInstance, parameterStore, TGetSecret, TGetSecrets, } from './parameterStore';
5
- export { DEFAULT_CLIENT_CONFIG as DEFAULT_SES_CLIENT_CONFIG, IEmailAttachment, IEmailEnvelope, IEmailOptions, IEmailSESOptions, ISES, ISESInstance, ses, TSendMail, } from './ses';
5
+ export { DEFAULT_CLIENT_CONFIG as DEFAULT_SES_CLIENT_CONFIG, IEmailAttachment, IEmailOptions, ISES, ISESInstance, ses, TSendMail, } from './ses';
6
6
  export { ISQS, ISQSInstance, sqs, TDeleteQueueItem, TGetQueueItems, TGetQueueUrl, TSendMessage, } from './sqs';
@@ -1,4 +1,4 @@
1
- import { SendEmailCommandInput, SESv2ClientConfig } from '@aws-sdk/client-sesv2';
1
+ import { SESv2ClientConfig } from '@aws-sdk/client-sesv2';
2
2
  import { Headers } from 'nodemailer/lib/mailer';
3
3
  import { Logger } from 'winston';
4
4
  export interface ISES {
@@ -16,29 +16,14 @@ export interface IEmailAttachment {
16
16
  readonly contentType: string;
17
17
  readonly filename: string;
18
18
  }
19
- export interface IEmailEnvelope {
20
- readonly from?: string;
21
- readonly to?: string | readonly string[];
22
- }
23
- export interface IEmailSESOptions {
24
- readonly ConfigurationSetName?: SendEmailCommandInput['ConfigurationSetName'];
25
- readonly EmailTags?: SendEmailCommandInput['EmailTags'];
26
- readonly FeedbackForwardingEmailAddress?: SendEmailCommandInput['FeedbackForwardingEmailAddress'];
27
- }
28
19
  export interface IEmailOptions {
29
20
  readonly attachments?: readonly IEmailAttachment[];
30
21
  readonly bcc?: string | readonly string[];
31
22
  readonly cc?: string | readonly string[];
32
- readonly envelope?: IEmailEnvelope;
33
23
  readonly from: string;
34
24
  readonly headers?: Headers;
35
25
  readonly html?: string;
36
- readonly inReplyTo?: string;
37
- readonly messageId?: string;
38
- readonly references?: string | readonly string[];
39
26
  readonly replyTo?: string | readonly string[];
40
- readonly sender?: string;
41
- readonly ses?: IEmailSESOptions;
42
27
  readonly subject: string;
43
28
  readonly text?: string;
44
29
  readonly to: string | readonly string[];
@@ -1,5 +1,5 @@
1
1
  export { Alagarr, alagarr, ClientError, HandlerFunction, IInterfaceAlagarrOptions, IInterfaceHeaders, IInterfaceQueryParameters, IInterfaceRequest, IInterfaceResponse, ServerError, } from './alagarr';
2
- export { AUTO_RESPONSE_SUPPRESSION_HEADERS, DEFAULT_PARAMETER_STORE_CLIENT_CONFIG, DEFAULT_SES_CLIENT_CONFIG, dynamodb, emailHeaders, IDynamoDBConfig, IDynamoDBInstance, IEmailAttachment, IEmailEnvelope, IEmailHeaderOptions, IEmailOptions, IEmailSESOptions, ILambda, ILambdaInstance, IParameterStore, IParameterStoreInstance, ISES, ISESInstance, ISQS, ISQSInstance, IUnprocessedItems, lambda, parameterStore, ses, sqs, TBatchWriteItems, TDeleteItem, TDeleteQueueItem, TGetItem, TGetQueueItems, TGetQueueUrl, TGetSecret, TGetSecrets, TInvokeLambda, TPutItem, TQueryTable, TScanTable, TSendMail, TSendMessage, TUpdateItem, } from './aws';
2
+ export { AUTO_RESPONSE_SUPPRESSION_HEADERS, DEFAULT_PARAMETER_STORE_CLIENT_CONFIG, DEFAULT_SES_CLIENT_CONFIG, dynamodb, emailHeaders, IDynamoDBConfig, IDynamoDBInstance, IEmailAttachment, IEmailHeaderOptions, IEmailOptions, ILambda, ILambdaInstance, IParameterStore, IParameterStoreInstance, ISES, ISESInstance, ISQS, ISQSInstance, IUnprocessedItems, lambda, parameterStore, ses, sqs, TBatchWriteItems, TDeleteItem, TDeleteQueueItem, TGetItem, TGetQueueItems, TGetQueueUrl, TGetSecret, TGetSecrets, TInvokeLambda, TPutItem, TQueryTable, TScanTable, TSendMail, TSendMessage, TUpdateItem, } from './aws';
3
3
  export { atob, btoa } from './base64';
4
4
  export { logger } from './logger/logger';
5
5
  export { asyncReduce, deepFlatten, flatten, List, partial, splitEvery, times, until, } from './utils';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allthings/cloud-toolkit",
3
- "version": "5.3.0-beta.1",
3
+ "version": "5.3.0",
4
4
  "description": "",
5
5
  "author": "Allthings GmbH",
6
6
  "keywords": [