@mavogel/awscdk-rootmail 0.1.8 → 0.1.9

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 (166) hide show
  1. package/.jsii +10 -10
  2. package/lib/rootmail.js +1 -1
  3. package/lib/ses-receive.js +1 -1
  4. package/node_modules/@aws-sdk/client-cloudwatch-logs/dist-cjs/index.js +5 -5
  5. package/node_modules/@aws-sdk/client-cloudwatch-logs/dist-es/schemas/schemas_0.js +4 -4
  6. package/node_modules/@aws-sdk/client-cloudwatch-logs/dist-types/commands/DescribeDeliveryDestinationsCommand.d.ts +1 -0
  7. package/node_modules/@aws-sdk/client-cloudwatch-logs/dist-types/commands/GetDeliveryDestinationCommand.d.ts +1 -0
  8. package/node_modules/@aws-sdk/client-cloudwatch-logs/dist-types/commands/PutAccountPolicyCommand.d.ts +4 -1
  9. package/node_modules/@aws-sdk/client-cloudwatch-logs/dist-types/commands/PutDeliveryDestinationCommand.d.ts +2 -0
  10. package/node_modules/@aws-sdk/client-cloudwatch-logs/dist-types/models/models_0.d.ts +80 -36
  11. package/node_modules/@aws-sdk/client-cloudwatch-logs/dist-types/ts3.4/models/models_0.d.ts +2 -0
  12. package/node_modules/@aws-sdk/client-cloudwatch-logs/package.json +1 -1
  13. package/node_modules/@aws-sdk/client-route-53/dist-cjs/index.js +1 -1
  14. package/node_modules/@aws-sdk/client-route-53/package.json +1 -1
  15. package/node_modules/@aws-sdk/client-s3/dist-cjs/index.js +2 -1
  16. package/node_modules/@aws-sdk/client-s3/dist-es/models/enums.js +1 -0
  17. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketInventoryConfigurationCommand.d.ts +1 -1
  18. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketInventoryConfigurationsCommand.d.ts +1 -1
  19. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketInventoryConfigurationCommand.d.ts +1 -1
  20. package/node_modules/@aws-sdk/client-s3/dist-types/models/enums.d.ts +1 -0
  21. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/enums.d.ts +1 -0
  22. package/node_modules/@aws-sdk/client-s3/package.json +2 -2
  23. package/node_modules/@aws-sdk/client-ses/dist-cjs/index.js +1 -1
  24. package/node_modules/@aws-sdk/client-ses/package.json +1 -1
  25. package/node_modules/@aws-sdk/client-ssm/dist-cjs/index.js +9 -3
  26. package/node_modules/@aws-sdk/client-ssm/dist-es/models/enums.js +4 -0
  27. package/node_modules/@aws-sdk/client-ssm/dist-es/schemas/schemas_0.js +3 -2
  28. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteResourcePolicyCommand.d.ts +6 -0
  29. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/PutResourcePolicyCommand.d.ts +12 -0
  30. package/node_modules/@aws-sdk/client-ssm/dist-types/models/enums.d.ts +12 -0
  31. package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_0.d.ts +20 -1
  32. package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_1.d.ts +2 -2
  33. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/enums.d.ts +5 -0
  34. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_0.d.ts +2 -0
  35. package/node_modules/@aws-sdk/client-ssm/package.json +1 -1
  36. package/node_modules/@zone-eu/mailsplit/lib/flowed-decoder.js +1 -5
  37. package/node_modules/@zone-eu/mailsplit/lib/headers.js +35 -25
  38. package/node_modules/@zone-eu/mailsplit/lib/message-splitter.js +126 -79
  39. package/node_modules/@zone-eu/mailsplit/lib/mime-node.js +27 -5
  40. package/node_modules/@zone-eu/mailsplit/lib/node-rewriter.js +3 -2
  41. package/node_modules/@zone-eu/mailsplit/lib/types.d.ts +0 -3
  42. package/node_modules/@zone-eu/mailsplit/package.json +5 -5
  43. package/node_modules/libbase64/.github/workflows/release.yaml +12 -10
  44. package/node_modules/libbase64/.ncurc.js +7 -1
  45. package/node_modules/libbase64/CHANGELOG.md +7 -0
  46. package/node_modules/libbase64/lib/libbase64.js +27 -0
  47. package/node_modules/libbase64/package.json +4 -4
  48. package/node_modules/libmime/CHANGELOG.md +14 -0
  49. package/node_modules/libmime/lib/libmime.js +41 -21
  50. package/node_modules/libmime/package.json +3 -3
  51. package/node_modules/libqp/.github/workflows/release.yaml +12 -10
  52. package/node_modules/libqp/CHANGELOG.md +7 -0
  53. package/node_modules/libqp/lib/libqp.js +6 -4
  54. package/node_modules/libqp/package.json +2 -2
  55. package/node_modules/libqp/test/libqp-test.js +71 -14
  56. package/node_modules/mailparser/.release-please-manifest.json +1 -1
  57. package/node_modules/mailparser/CHANGELOG.md +42 -0
  58. package/node_modules/mailparser/README.md +5 -0
  59. package/node_modules/mailparser/lib/mail-parser.js +107 -32
  60. package/node_modules/mailparser/lib/simple-parser.js +12 -0
  61. package/node_modules/mailparser/lib/stream-hash.js +1 -1
  62. package/node_modules/mailparser/package.json +6 -6
  63. package/node_modules/nodemailer/CHANGELOG.md +38 -0
  64. package/node_modules/nodemailer/README.md +1 -1
  65. package/node_modules/nodemailer/dist/cjs/addressparser/index.d.ts +16 -2
  66. package/node_modules/nodemailer/dist/cjs/addressparser/index.js +147 -28
  67. package/node_modules/nodemailer/dist/cjs/base64/index.js +2 -1
  68. package/node_modules/nodemailer/dist/cjs/dkim/index.d.ts +13 -1
  69. package/node_modules/nodemailer/dist/cjs/dkim/index.js +25 -8
  70. package/node_modules/nodemailer/dist/cjs/dkim/message-parser.d.ts +10 -1
  71. package/node_modules/nodemailer/dist/cjs/dkim/message-parser.js +28 -4
  72. package/node_modules/nodemailer/dist/cjs/dkim/relaxed-body.d.ts +10 -1
  73. package/node_modules/nodemailer/dist/cjs/dkim/sign.d.ts +3 -0
  74. package/node_modules/nodemailer/dist/cjs/dkim/sign.js +18 -1
  75. package/node_modules/nodemailer/dist/cjs/errors.d.ts +3 -2
  76. package/node_modules/nodemailer/dist/cjs/fetch/cookies.d.ts +12 -1
  77. package/node_modules/nodemailer/dist/cjs/fetch/index.d.ts +15 -1
  78. package/node_modules/nodemailer/dist/cjs/fetch/index.js +39 -64
  79. package/node_modules/nodemailer/dist/cjs/json-transport/index.d.ts +14 -4
  80. package/node_modules/nodemailer/dist/cjs/json-transport/index.js +2 -0
  81. package/node_modules/nodemailer/dist/cjs/mail-composer/index.d.ts +8 -3
  82. package/node_modules/nodemailer/dist/cjs/mailer/index.d.ts +43 -25
  83. package/node_modules/nodemailer/dist/cjs/mailer/mail-message.d.ts +11 -4
  84. package/node_modules/nodemailer/dist/cjs/mime-funcs/index.d.ts +7 -3
  85. package/node_modules/nodemailer/dist/cjs/mime-funcs/index.js +198 -84
  86. package/node_modules/nodemailer/dist/cjs/mime-node/index.d.ts +5 -2
  87. package/node_modules/nodemailer/dist/cjs/mime-node/index.js +2 -1
  88. package/node_modules/nodemailer/dist/cjs/nodemailer.d.ts +38 -16
  89. package/node_modules/nodemailer/dist/cjs/nodemailer.js +1 -0
  90. package/node_modules/nodemailer/dist/cjs/package-info.d.ts +1 -1
  91. package/node_modules/nodemailer/dist/cjs/package-info.js +1 -1
  92. package/node_modules/nodemailer/dist/cjs/punycode/index.js +1 -0
  93. package/node_modules/nodemailer/dist/cjs/qp/index.d.ts +2 -0
  94. package/node_modules/nodemailer/dist/cjs/qp/index.js +10 -1
  95. package/node_modules/nodemailer/dist/cjs/sendmail-transport/index.d.ts +2 -0
  96. package/node_modules/nodemailer/dist/cjs/ses-transport/index.d.ts +39 -2
  97. package/node_modules/nodemailer/dist/cjs/shared/index.d.ts +43 -7
  98. package/node_modules/nodemailer/dist/cjs/shared/index.js +5 -2
  99. package/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.d.ts +2 -1
  100. package/node_modules/nodemailer/dist/cjs/smtp-connection/data-stream.js +32 -24
  101. package/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.d.ts +13 -5
  102. package/node_modules/nodemailer/dist/cjs/smtp-connection/http-proxy-client.js +23 -11
  103. package/node_modules/nodemailer/dist/cjs/smtp-connection/index.d.ts +59 -24
  104. package/node_modules/nodemailer/dist/cjs/smtp-connection/index.js +156 -75
  105. package/node_modules/nodemailer/dist/cjs/smtp-pool/index.d.ts +12 -4
  106. package/node_modules/nodemailer/dist/cjs/smtp-pool/index.js +39 -11
  107. package/node_modules/nodemailer/dist/cjs/smtp-pool/pool-resource.js +27 -31
  108. package/node_modules/nodemailer/dist/cjs/smtp-transport/index.d.ts +19 -6
  109. package/node_modules/nodemailer/dist/cjs/smtp-transport/index.js +25 -33
  110. package/node_modules/nodemailer/dist/cjs/stream-transport/index.d.ts +2 -0
  111. package/node_modules/nodemailer/dist/cjs/well-known/services.js +6 -0
  112. package/node_modules/nodemailer/dist/cjs/xoauth2/index.d.ts +13 -3
  113. package/node_modules/nodemailer/dist/cjs/xoauth2/index.js +25 -13
  114. package/node_modules/nodemailer/dist/esm/addressparser/index.d.ts +16 -2
  115. package/node_modules/nodemailer/dist/esm/addressparser/index.js +147 -27
  116. package/node_modules/nodemailer/dist/esm/base64/index.js +2 -1
  117. package/node_modules/nodemailer/dist/esm/dkim/index.d.ts +13 -1
  118. package/node_modules/nodemailer/dist/esm/dkim/index.js +25 -8
  119. package/node_modules/nodemailer/dist/esm/dkim/message-parser.d.ts +10 -1
  120. package/node_modules/nodemailer/dist/esm/dkim/message-parser.js +30 -5
  121. package/node_modules/nodemailer/dist/esm/dkim/relaxed-body.d.ts +10 -1
  122. package/node_modules/nodemailer/dist/esm/dkim/relaxed-body.js +2 -1
  123. package/node_modules/nodemailer/dist/esm/dkim/sign.d.ts +3 -0
  124. package/node_modules/nodemailer/dist/esm/dkim/sign.js +18 -1
  125. package/node_modules/nodemailer/dist/esm/errors.d.ts +3 -2
  126. package/node_modules/nodemailer/dist/esm/fetch/cookies.d.ts +12 -1
  127. package/node_modules/nodemailer/dist/esm/fetch/cookies.js +2 -1
  128. package/node_modules/nodemailer/dist/esm/fetch/index.d.ts +15 -1
  129. package/node_modules/nodemailer/dist/esm/fetch/index.js +39 -64
  130. package/node_modules/nodemailer/dist/esm/json-transport/index.d.ts +14 -4
  131. package/node_modules/nodemailer/dist/esm/json-transport/index.js +2 -0
  132. package/node_modules/nodemailer/dist/esm/mail-composer/index.d.ts +8 -3
  133. package/node_modules/nodemailer/dist/esm/mailer/index.d.ts +43 -25
  134. package/node_modules/nodemailer/dist/esm/mailer/mail-message.d.ts +11 -4
  135. package/node_modules/nodemailer/dist/esm/mime-funcs/index.d.ts +7 -3
  136. package/node_modules/nodemailer/dist/esm/mime-funcs/index.js +198 -84
  137. package/node_modules/nodemailer/dist/esm/mime-node/index.d.ts +5 -2
  138. package/node_modules/nodemailer/dist/esm/mime-node/index.js +2 -1
  139. package/node_modules/nodemailer/dist/esm/nodemailer.d.ts +38 -16
  140. package/node_modules/nodemailer/dist/esm/package-info.d.ts +1 -1
  141. package/node_modules/nodemailer/dist/esm/package-info.js +1 -1
  142. package/node_modules/nodemailer/dist/esm/punycode/index.js +1 -0
  143. package/node_modules/nodemailer/dist/esm/qp/index.d.ts +2 -0
  144. package/node_modules/nodemailer/dist/esm/qp/index.js +10 -1
  145. package/node_modules/nodemailer/dist/esm/sendmail-transport/index.d.ts +2 -0
  146. package/node_modules/nodemailer/dist/esm/ses-transport/index.d.ts +39 -2
  147. package/node_modules/nodemailer/dist/esm/shared/index.d.ts +43 -7
  148. package/node_modules/nodemailer/dist/esm/shared/index.js +5 -2
  149. package/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.d.ts +2 -1
  150. package/node_modules/nodemailer/dist/esm/smtp-connection/data-stream.js +32 -24
  151. package/node_modules/nodemailer/dist/esm/smtp-connection/http-proxy-client.d.ts +13 -5
  152. package/node_modules/nodemailer/dist/esm/smtp-connection/http-proxy-client.js +23 -11
  153. package/node_modules/nodemailer/dist/esm/smtp-connection/index.d.ts +59 -24
  154. package/node_modules/nodemailer/dist/esm/smtp-connection/index.js +156 -75
  155. package/node_modules/nodemailer/dist/esm/smtp-pool/index.d.ts +12 -4
  156. package/node_modules/nodemailer/dist/esm/smtp-pool/index.js +39 -11
  157. package/node_modules/nodemailer/dist/esm/smtp-pool/pool-resource.js +27 -31
  158. package/node_modules/nodemailer/dist/esm/smtp-transport/index.d.ts +19 -6
  159. package/node_modules/nodemailer/dist/esm/smtp-transport/index.js +25 -33
  160. package/node_modules/nodemailer/dist/esm/stream-transport/index.d.ts +2 -0
  161. package/node_modules/nodemailer/dist/esm/well-known/services.js +6 -0
  162. package/node_modules/nodemailer/dist/esm/xoauth2/index.d.ts +13 -3
  163. package/node_modules/nodemailer/dist/esm/xoauth2/index.js +25 -13
  164. package/node_modules/nodemailer/dist/well-known/services.json +7 -0
  165. package/node_modules/nodemailer/package.json +16 -12
  166. package/package.json +16 -16
@@ -39,6 +39,11 @@ declare const DeleteResourcePolicyCommand_base: {
39
39
  * cross-account sharing of parameters, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-shared-parameters.html">Working with
40
40
  * shared parameters</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
41
41
  * </li>
42
+ * <li>
43
+ * <p>
44
+ * <code>Document</code> – Shares the document using Resource Access Manager (RAM). For more information about sharing documents, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-ssm-sharing.html">Sharing
45
+ * Systems Manager documents</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
46
+ * </li>
42
47
  * </ul>
43
48
  * @example
44
49
  * Use a bare-bones client and the command you need to make an API call.
@@ -52,6 +57,7 @@ declare const DeleteResourcePolicyCommand_base: {
52
57
  * ResourceArn: "STRING_VALUE", // required
53
58
  * PolicyId: "STRING_VALUE", // required
54
59
  * PolicyHash: "STRING_VALUE", // required
60
+ * DeletionMode: "RemoveSharing" || "RollbackMigration",
55
61
  * };
56
62
  * const command = new DeleteResourcePolicyCommand(input);
57
63
  * const response = await client.send(command);
@@ -55,7 +55,19 @@ declare const PutResourcePolicyCommand_base: {
55
55
  * </p>
56
56
  * </important>
57
57
  * </li>
58
+ * <li>
59
+ * <p>
60
+ * <code>Document</code> – Shares the document using Resource Access Manager (RAM). For more information about sharing documents, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-ssm-sharing.html">Sharing
61
+ * Systems Manager documents</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
62
+ * </li>
58
63
  * </ul>
64
+ * <important>
65
+ * <p>While you can share a document using the Systems Manager <code>PutResourcePolicy</code> operation, we
66
+ * recommend using Resource Access Manager (RAM) instead. Using
67
+ * <code>PutResourcePolicy</code> requires an extra step. You must promote the document to a
68
+ * standard RAM Resource Share using the RAM <a href="https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html">PromoteResourceShareCreatedFromPolicy</a> API operation. Otherwise, the Systems Manager <a href="https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_ListDocuments.html">ListDocuments</a> API operation won't return the document when filtering for shared
69
+ * documents. The Amazon Web Services Config <a href="https://docs.aws.amazon.com/config/latest/APIReference/API_PutRemediationConfigurations.html">PutRemediationConfigurations</a> API operation also can't use the document.</p>
70
+ * </important>
59
71
  * @example
60
72
  * Use a bare-bones client and the command you need to make an API call.
61
73
  * ```javascript
@@ -358,6 +358,18 @@ export declare const InventorySchemaDeleteOption: {
358
358
  * @public
359
359
  */
360
360
  export type InventorySchemaDeleteOption = (typeof InventorySchemaDeleteOption)[keyof typeof InventorySchemaDeleteOption];
361
+ /**
362
+ * @public
363
+ * @enum
364
+ */
365
+ export declare const DeletionMode: {
366
+ readonly RemoveSharing: "RemoveSharing";
367
+ readonly RollbackMigration: "RollbackMigration";
368
+ };
369
+ /**
370
+ * @public
371
+ */
372
+ export type DeletionMode = (typeof DeletionMode)[keyof typeof DeletionMode];
361
373
  /**
362
374
  * @public
363
375
  * @enum
@@ -1,4 +1,4 @@
1
- import type { AccessRequestStatus, AccessType, AssociationComplianceSeverity, AssociationExecutionFilterKey, AssociationExecutionTargetsFilterKey, AssociationFilterOperatorType, AssociationStatusName, AssociationSyncCompliance, AttachmentHashType, AttachmentsSourceKey, AutomationExecutionFilterKey, AutomationExecutionStatus, AutomationSubtype, AutomationType, CalendarState, CommandInvocationStatus, ConnectionStatus, DescribeActivationsFilterKeys, DocumentFormat, DocumentHashType, DocumentParameterType, DocumentPermissionType, DocumentStatus, DocumentType, ExecutionMode, ExecutionPreviewStatus, ExternalAlarmState, Fault, ImpactType, InstanceInformationFilterKey, InstancePatchStateOperatorType, InstancePropertyFilterKey, InstancePropertyFilterOperator, InventoryAttributeDataType, InventoryDeletionStatus, InventoryQueryOperatorType, InventorySchemaDeleteOption, MaintenanceWindowExecutionStatus, MaintenanceWindowResourceType, MaintenanceWindowTaskCutoffBehavior, MaintenanceWindowTaskType, NotificationEvent, NotificationType, OperatingSystem, OpsFilterOperatorType, OpsItemDataType, OpsItemFilterKey, OpsItemFilterOperator, OpsItemStatus, ParametersFilterKey, ParameterTier, ParameterType, PatchAction, PatchComplianceDataState, PatchComplianceLevel, PatchComplianceStatus, PatchDeploymentStatus, PatchFilterKey, PatchOperationType, PatchProperty, PatchSet, PingStatus, PlatformType, RebootOption, ResourceDataSyncS3Format, ResourceType, ResourceTypeForTagging, ReviewStatus, SessionFilterKey, SessionState, SessionStatus, SourceType, StepExecutionFilterKey } from "./enums";
1
+ import type { AccessRequestStatus, AccessType, AssociationComplianceSeverity, AssociationExecutionFilterKey, AssociationExecutionTargetsFilterKey, AssociationFilterOperatorType, AssociationStatusName, AssociationSyncCompliance, AttachmentHashType, AttachmentsSourceKey, AutomationExecutionFilterKey, AutomationExecutionStatus, AutomationSubtype, AutomationType, CalendarState, CommandInvocationStatus, ConnectionStatus, DeletionMode, DescribeActivationsFilterKeys, DocumentFormat, DocumentHashType, DocumentParameterType, DocumentPermissionType, DocumentStatus, DocumentType, ExecutionMode, ExecutionPreviewStatus, ExternalAlarmState, Fault, ImpactType, InstanceInformationFilterKey, InstancePatchStateOperatorType, InstancePropertyFilterKey, InstancePropertyFilterOperator, InventoryAttributeDataType, InventoryDeletionStatus, InventoryQueryOperatorType, InventorySchemaDeleteOption, MaintenanceWindowExecutionStatus, MaintenanceWindowResourceType, MaintenanceWindowTaskCutoffBehavior, MaintenanceWindowTaskType, NotificationEvent, NotificationType, OperatingSystem, OpsFilterOperatorType, OpsItemDataType, OpsItemFilterKey, OpsItemFilterOperator, OpsItemStatus, ParametersFilterKey, ParameterTier, ParameterType, PatchAction, PatchComplianceDataState, PatchComplianceLevel, PatchComplianceStatus, PatchDeploymentStatus, PatchFilterKey, PatchOperationType, PatchProperty, PatchSet, PingStatus, PlatformType, RebootOption, ResourceDataSyncS3Format, ResourceType, ResourceTypeForTagging, ReviewStatus, SessionFilterKey, SessionState, SessionStatus, SourceType, StepExecutionFilterKey } from "./enums";
2
2
  /**
3
3
  * <p>Information includes the Amazon Web Services account ID where the current document is shared and the
4
4
  * version shared with that account.</p>
@@ -3289,6 +3289,25 @@ export interface DeleteResourcePolicyRequest {
3289
3289
  * @public
3290
3290
  */
3291
3291
  PolicyHash: string | undefined;
3292
+ /**
3293
+ * <p>Specifies the intended outcome of the operation. Applies only to the <code>Document</code>
3294
+ * resource type. The operation ignores this parameter for other resource types. Optional. Defaults
3295
+ * to <code>RemoveSharing</code>.</p>
3296
+ * <ul>
3297
+ * <li>
3298
+ * <p>
3299
+ * <code>RemoveSharing</code> – Deletes the resource policy and removes sharing of the
3300
+ * document.</p>
3301
+ * </li>
3302
+ * <li>
3303
+ * <p>
3304
+ * <code>RollbackMigration</code> – Reverts the document to Custom sharing, preserving
3305
+ * existing consumer access, instead of removing the policy.</p>
3306
+ * </li>
3307
+ * </ul>
3308
+ * @public
3309
+ */
3310
+ DeletionMode?: DeletionMode | undefined;
3292
3311
  }
3293
3312
  /**
3294
3313
  * @public
@@ -5622,8 +5622,8 @@ export interface UpdateDocumentRequest {
5622
5622
  */
5623
5623
  DocumentVersion?: string | undefined;
5624
5624
  /**
5625
- * <p>Specify the document format for the new document version. Systems Manager supports JSON and YAML
5626
- * documents. JSON is the default format.</p>
5625
+ * <p>Specify the document format for the new document version. The document format can be JSON,
5626
+ * YAML, or TEXT. JSON is the default format.</p>
5627
5627
  * @public
5628
5628
  */
5629
5629
  DocumentFormat?: DocumentFormat | undefined;
@@ -198,6 +198,11 @@ export declare const InventorySchemaDeleteOption: {
198
198
  };
199
199
  export type InventorySchemaDeleteOption =
200
200
  (typeof InventorySchemaDeleteOption)[keyof typeof InventorySchemaDeleteOption];
201
+ export declare const DeletionMode: {
202
+ readonly RemoveSharing: "RemoveSharing";
203
+ readonly RollbackMigration: "RollbackMigration";
204
+ };
205
+ export type DeletionMode = (typeof DeletionMode)[keyof typeof DeletionMode];
201
206
  export declare const DescribeActivationsFilterKeys: {
202
207
  readonly ACTIVATION_IDS: "ActivationIds";
203
208
  readonly DEFAULT_INSTANCE_NAME: "DefaultInstanceName";
@@ -16,6 +16,7 @@ import {
16
16
  CalendarState,
17
17
  CommandInvocationStatus,
18
18
  ConnectionStatus,
19
+ DeletionMode,
19
20
  DescribeActivationsFilterKeys,
20
21
  DocumentFormat,
21
22
  DocumentHashType,
@@ -622,6 +623,7 @@ export interface DeleteResourcePolicyRequest {
622
623
  ResourceArn: string | undefined;
623
624
  PolicyId: string | undefined;
624
625
  PolicyHash: string | undefined;
626
+ DeletionMode?: DeletionMode | undefined;
625
627
  }
626
628
  export interface DeleteResourcePolicyResponse {}
627
629
  export interface DeregisterManagedInstanceRequest {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-ssm",
3
- "version": "3.1141.0",
3
+ "version": "3.1146.0",
4
4
  "description": "AWS SDK for JavaScript Ssm Client for Node.js, Browser and React Native",
5
5
  "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-ssm",
6
6
  "license": "Apache-2.0",
@@ -56,12 +56,8 @@ class FlowedDecoder extends Transform {
56
56
  */
57
57
  _flush(callback) {
58
58
  if (this.chunklen) {
59
+ // transfer decoding is done upstream by MimeNode.getDecoder()
59
60
  let currentBody = Buffer.concat(this.chunks, this.chunklen);
60
-
61
- if (this.config.encoding === 'base64') {
62
- currentBody = Buffer.from(currentBody.toString('binary'), 'base64');
63
- }
64
-
65
61
  let content = this.libmime.decodeFlowed(currentBody.toString('binary'), this.config.delSp);
66
62
  this.push(Buffer.from(content, 'binary'));
67
63
  }
@@ -365,39 +365,49 @@ class Headers {
365
365
  return;
366
366
  }
367
367
 
368
- /** @type {Array<string | HeaderLine>} */
369
- let lines = this.headers
368
+ let rawLines = this.headers
370
369
  .toString('binary')
371
370
  .replace(/[\r\n]+$/, '')
372
371
  .split(/\r?\n/);
373
372
 
374
- for (let i = lines.length - 1; i >= 0; i--) {
375
- let currentLine = /** @type {string} */ (lines[i]);
376
- if (i && this._isFoldingChar(currentLine.charAt(0))) {
377
- lines[i - 1] = /** @type {string} */ (lines[i - 1]) + '\r\n' + currentLine;
378
- lines.splice(i, 1);
379
- } else {
380
- let line = currentLine;
381
- if (!i && /^From /i.test(line)) {
382
- // mbox file
383
- this.mbox = line;
384
- lines.splice(i, 1);
385
- continue;
386
- } else if (!i && /^POST /i.test(line)) {
387
- // HTTP POST request
388
- this.http = line;
389
- lines.splice(i, 1);
390
- continue;
373
+ // Single forward pass. Splicing folded lines out of the source array in place was
374
+ // quadratic on a header block with many continuation lines.
375
+ let i = 1;
376
+
377
+ // The first logical line may be an mbox or HTTP POST preamble instead of a header
378
+ let first = rawLines[0];
379
+ while (i < rawLines.length && this._isFoldingChar(rawLines[i].charAt(0))) {
380
+ first += '\r\n' + rawLines[i++];
381
+ }
382
+
383
+ /** @type {HeaderLine[]} */
384
+ let lines = [];
385
+ if (/^From /i.test(first)) {
386
+ // mbox file
387
+ this.mbox = first;
388
+ } else if (/^POST /i.test(first)) {
389
+ // HTTP POST request
390
+ this.http = first;
391
+ } else {
392
+ lines.push({ key: this._normalizeHeader(first.substr(0, first.indexOf(':'))), line: first });
393
+ }
394
+
395
+ for (; i < rawLines.length; i++) {
396
+ let currentLine = rawLines[i];
397
+ if (this._isFoldingChar(currentLine.charAt(0))) {
398
+ // the loop starts on a non-folded line, so there is always a last entry here
399
+ let entry = lines[lines.length - 1];
400
+ entry.line += '\r\n' + currentLine;
401
+ if (!entry.key) {
402
+ // the key comes from the first colon, which may only appear in a continuation
403
+ entry.key = this._normalizeHeader(entry.line.substr(0, entry.line.indexOf(':')));
391
404
  }
392
- let key = this._normalizeHeader(line.substr(0, line.indexOf(':')));
393
- lines[i] = {
394
- key,
395
- line
396
- };
405
+ } else {
406
+ lines.push({ key: this._normalizeHeader(currentLine.substr(0, currentLine.indexOf(':'))), line: currentLine });
397
407
  }
398
408
  }
399
409
 
400
- this.lines = /** @type {HeaderLine[]} */ (lines);
410
+ this.lines = lines;
401
411
  this.parsed = true;
402
412
  }
403
413
 
@@ -28,6 +28,10 @@ const BOUNDARY_LINE_SUFFIX = 2 /* "--" prefix */ + 2 /* "--" suffix */ + 2; /* t
28
28
  // the longest a delimiter line can ever be once the boundary value is subtracted
29
29
  const BOUNDARY_LINE_OVERHEAD = BOUNDARY_LINE_SUFFIX + 2; /* leading <CR><LF> */
30
30
 
31
+ // Bytes of input split in one go before yielding to the event loop. Bytes rather than lines
32
+ // bound the work per batch whatever the line length: 16 KiB is at most 16k (empty) lines.
33
+ const YIELD_BYTES = 16 * 1024;
34
+
31
35
  const HEAD = 0x01;
32
36
  const BODY = 0x02;
33
37
 
@@ -153,6 +157,12 @@ class MessageSplitter extends Transform {
153
157
  };
154
158
  let groupstart = this.lineLength ? -this.lineLength : 0;
155
159
  let groupend = 0;
160
+ // input position where the current batch started
161
+ let yieldPos = 0;
162
+ // true while processLine() runs synchronously for the current line
163
+ let inLine = false;
164
+ // set when the current line finished synchronously and the batch may continue in place
165
+ let resumeInLine = false;
156
166
 
157
167
  /**
158
168
  * Removes a pending line break from body data that belongs to a following boundary.
@@ -187,96 +197,133 @@ class MessageSplitter extends Transform {
187
197
  }
188
198
  };
189
199
 
200
+ // assigned below, the line handlers and the batch loop call each other
201
+ /** @type {() => void} */
202
+ let iterateData;
203
+
190
204
  /**
191
- * Iterates the current input chunk line by line and emits parsed groups.
205
+ * Continues with the next line. Lines are processed in place and the event loop is
206
+ * only yielded to every YIELD_BYTES of input, a setImmediate per line made line-dense
207
+ * input very slow to split. A line that completed asynchronously always reschedules.
192
208
  *
193
209
  * @returns {void}
194
210
  */
195
- let iterateData = () => {
196
- for (let len = chunk.length; i < len; i++) {
197
- // find next <LF>
198
- if (chunk[i] === 0x0a) {
199
- // line end
211
+ let nextLine = () => {
212
+ if (inLine && i - yieldPos < YIELD_BYTES) {
213
+ resumeInLine = true;
214
+ return;
215
+ }
216
+ setImmediate(iterateData);
217
+ };
200
218
 
201
- let start = Math.max(pos, 0);
202
- pos = ++i;
219
+ /**
220
+ * Handles the result of processLine() for the line that ends at `i`. Defined once per
221
+ * write rather than once per line.
222
+ *
223
+ * @type {ProcessLineCallback}
224
+ */
225
+ let onLine = (err, data, flush) => {
226
+ if (err) {
227
+ this.hasFailed = true;
228
+ return setImmediate(() => callback(err));
229
+ }
203
230
 
204
- return this.processLine(chunk.slice(start, i), false, (err, data, flush) => {
205
- if (err) {
206
- this.hasFailed = true;
207
- return setImmediate(() => callback(err));
208
- }
231
+ if (!data) {
232
+ return nextLine();
233
+ }
209
234
 
210
- if (!data) {
211
- return setImmediate(iterateData);
235
+ if (flush) {
236
+ if (group && group.type !== 'none') {
237
+ // do not include the last line ending for body
238
+ groupend = trimBodyLineEnd(group, chunk, groupstart, groupend);
239
+ if (groupstart < groupend) {
240
+ // re-slice, the value the line was emitted with may
241
+ // still include the line ending we just trimmed
242
+ group.value = chunk.slice(groupstart, groupend);
243
+ if (groupend < i && 'value' in data) {
244
+ // the trimmed line ending belongs to the boundary line
245
+ data.value = chunk.slice(groupend, i);
212
246
  }
247
+ }
248
+ // the group is pushed even when nothing is left of it, so that a
249
+ // part whose whole body is a line ending still reports a body
250
+ this.push(group);
251
+ group = {
252
+ type: 'none'
253
+ };
254
+ groupstart = groupend = i;
255
+ }
256
+ this.push(data);
257
+ groupend = i;
258
+ return nextLine();
259
+ }
213
260
 
214
- if (flush) {
215
- if (group && group.type !== 'none') {
216
- // do not include the last line ending for body
217
- groupend = trimBodyLineEnd(group, chunk, groupstart, groupend);
218
- if (groupstart < groupend) {
219
- // re-slice, the value the line was emitted with may
220
- // still include the line ending we just trimmed
221
- group.value = chunk.slice(groupstart, groupend);
222
- if (groupend < i && 'value' in data) {
223
- // the trimmed line ending belongs to the boundary line
224
- data.value = chunk.slice(groupend, i);
225
- }
226
- }
227
- // the group is pushed even when nothing is left of it, so that a
228
- // part whose whole body is a line ending still reports a body
229
- this.push(group);
230
- group = {
231
- type: 'none'
232
- };
233
- groupstart = groupend = i;
234
- }
235
- this.push(data);
236
- groupend = i;
237
- return setImmediate(iterateData);
261
+ if (data.type === group.type) {
262
+ // shift slice end position forward
263
+ groupend = i;
264
+ } else {
265
+ // do not include the last line ending for body
266
+ groupend = trimBodyLineEnd(group, chunk, groupstart, groupend);
267
+
268
+ if (group.type !== 'none' && group.type !== 'node') {
269
+ // we have a previous data/body chunk to output
270
+ if (groupstart !== groupend) {
271
+ group.value = chunk.slice(groupstart, groupend);
272
+ if (group.value && group.value.length) {
273
+ this.push(group);
274
+ group = {
275
+ type: 'none'
276
+ };
238
277
  }
278
+ }
279
+ }
239
280
 
240
- if (data.type === group.type) {
241
- // shift slice end position forward
242
- groupend = i;
243
- } else {
244
- // do not include the last line ending for body
245
- groupend = trimBodyLineEnd(group, chunk, groupstart, groupend);
246
-
247
- if (group.type !== 'none' && group.type !== 'node') {
248
- // we have a previous data/body chunk to output
249
- if (groupstart !== groupend) {
250
- group.value = chunk.slice(groupstart, groupend);
251
- if (group.value && group.value.length) {
252
- this.push(group);
253
- group = {
254
- type: 'none'
255
- };
256
- }
257
- }
258
- }
259
-
260
- if (data.type === 'node') {
261
- this.push(data);
262
- groupstart = i;
263
- groupend = i;
264
- } else if (groupstart < 0) {
265
- groupstart = i;
266
- groupend = i;
267
- checkTrailingLinebreak(data);
268
- if (data.value && data.value.length) {
269
- this.push(data);
270
- }
271
- } else {
272
- // start new body/data chunk
273
- group = data;
274
- groupstart = groupend;
275
- groupend = i;
276
- }
277
- }
278
- return setImmediate(iterateData);
279
- });
281
+ if (data.type === 'node') {
282
+ this.push(data);
283
+ groupstart = i;
284
+ groupend = i;
285
+ } else if (groupstart < 0) {
286
+ groupstart = i;
287
+ groupend = i;
288
+ checkTrailingLinebreak(data);
289
+ if (data.value && data.value.length) {
290
+ this.push(data);
291
+ }
292
+ } else {
293
+ // start new body/data chunk
294
+ group = data;
295
+ groupstart = groupend;
296
+ groupend = i;
297
+ }
298
+ }
299
+ return nextLine();
300
+ };
301
+
302
+ /**
303
+ * Iterates the current input chunk line by line and emits parsed groups.
304
+ *
305
+ * @returns {void}
306
+ */
307
+ iterateData = () => {
308
+ yieldPos = i;
309
+ while (i < chunk.length) {
310
+ // find next <LF>
311
+ if (chunk[i] !== 0x0a) {
312
+ i++;
313
+ continue;
314
+ }
315
+
316
+ // line end
317
+ let start = Math.max(pos, 0);
318
+ pos = ++i;
319
+
320
+ inLine = true;
321
+ resumeInLine = false;
322
+ this.processLine(chunk.slice(start, i), false, onLine);
323
+ inLine = false;
324
+ if (!resumeInLine) {
325
+ // an error or a scheduled continuation takes over from here
326
+ return;
280
327
  }
281
328
  }
282
329
 
@@ -18,6 +18,32 @@ const pathlib = require('path');
18
18
 
19
19
  const Libmime = /** @type {any} */ (libmime.Libmime);
20
20
 
21
+ /**
22
+ * Removes everything from the first `(` to the last `)` of each line, the same result as
23
+ * `value.replace(/\(.*\)/g, '')`, but in linear time. The regex backtracks quadratically
24
+ * on a value with many `(` characters and no closing `)`.
25
+ *
26
+ * @param {string} value
27
+ * @returns {string}
28
+ */
29
+ function stripComments(value) {
30
+ if (value.indexOf('(') < 0) {
31
+ // the common case, nothing to strip
32
+ return value;
33
+ }
34
+ return value
35
+ .split(/([\n\r\u2028\u2029])/)
36
+ .map(part => {
37
+ let start = part.indexOf('(');
38
+ if (start < 0) {
39
+ return part;
40
+ }
41
+ let end = part.lastIndexOf(')');
42
+ return end > start ? part.slice(0, start) + part.slice(end + 1) : part;
43
+ })
44
+ .join('');
45
+ }
46
+
21
47
  /**
22
48
  * Parsed MIME node with mutable headers and transfer-encoding helpers.
23
49
  */
@@ -142,11 +168,7 @@ class MimeNode {
142
168
  this._parsedContentType = this.libmime.parseHeaderValue(contentHeader);
143
169
  let parsedContentType = /** @type {StructuredHeader} */ (this._parsedContentType);
144
170
 
145
- this.encoding = headers
146
- .getFirst('Content-Transfer-Encoding')
147
- .replace(/\(.*\)/g, '')
148
- .toLowerCase()
149
- .trim();
171
+ this.encoding = stripComments(headers.getFirst('Content-Transfer-Encoding')).toLowerCase().trim();
150
172
  this.contentType = (parsedContentType.value || '').toLowerCase().trim() || false;
151
173
  this.charset = parsedContentType.params.charset || false;
152
174
  this.disposition = (parsedContentDisposition.value || '').toLowerCase().trim() || false;
@@ -203,9 +203,10 @@ class NodeRewriter extends Transform {
203
203
  if (/^text\//.test(node.contentType || '') && node.flowed) {
204
204
  // text/plain; format=flowed is a special case
205
205
  let flowDecoder = decoder;
206
+ // the transfer encoding is already removed by node.getDecoder(), so the flowed
207
+ // decoder must not decode base64 a second time
206
208
  decoder = new FlowedDecoder({
207
- delSp: node.delSp,
208
- encoding: node.encoding || false
209
+ delSp: node.delSp
209
210
  });
210
211
  flowDecoder.on(
211
212
  'error',
@@ -41,9 +41,6 @@ export interface ChunkedPassthroughOptions {
41
41
  export interface FlowedDecoderOptions extends LibmimeOptions {
42
42
  /** Whether format=flowed uses RFC 3676 `DelSp=yes` space deletion semantics. */
43
43
  delSp?: boolean;
44
-
45
- /** Source Content-Transfer-Encoding hint used during format=flowed handling. */
46
- encoding?: string | false;
47
44
  }
48
45
 
49
46
  /** Parsed raw header line with a normalized lookup key. */
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zone-eu/mailsplit",
3
- "version": "5.4.17",
3
+ "version": "5.4.19",
4
4
  "description": "Split email messages into an object stream",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -15,9 +15,9 @@
15
15
  "author": "Andris Reinman",
16
16
  "license": "(MIT OR EUPL-1.1+)",
17
17
  "dependencies": {
18
- "libbase64": "1.3.0",
19
- "libmime": "5.4.4",
20
- "libqp": "2.1.1"
18
+ "libbase64": "1.3.1",
19
+ "libmime": "5.4.6",
20
+ "libqp": "2.1.2"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/eslint": "9.6.1",
@@ -25,7 +25,7 @@
25
25
  "@types/grunt": "0.4.32",
26
26
  "@types/libmime": "5.3.0",
27
27
  "@types/libqp": "1.1.3",
28
- "@types/node": "26.5.1",
28
+ "@types/node": "26.6.3",
29
29
  "eslint": "8.29.0",
30
30
  "eslint-config-nodemailer": "1.2.0",
31
31
  "eslint-config-prettier": "9.1.0",
@@ -2,6 +2,9 @@ on:
2
2
  push:
3
3
  branches:
4
4
  - master
5
+ # Manual run: publish the version currently on master (used when a release was cut
6
+ # but the publish step failed)
7
+ workflow_dispatch:
5
8
 
6
9
  permissions:
7
10
  contents: write
@@ -15,23 +18,22 @@ jobs:
15
18
  steps:
16
19
  - uses: google-github-actions/release-please-action@v3
17
20
  id: release
21
+ if: ${{ github.event_name == 'push' }}
18
22
  with:
19
23
  release-type: node
20
24
  package-name: ${{vars.NPM_MODULE_NAME}}
21
25
  pull-request-title-pattern: 'chore${scope}: release ${version} [skip-ci]'
22
- # The logic below handles the npm publication:
26
+ # The logic below handles the npm publication through npm trusted publishing
27
+ # (OIDC, no token secret): it runs when a new release is created, or on a
28
+ # manual dispatch.
23
29
  - uses: actions/checkout@v4
24
- # these if statements ensure that a publication only occurs when
25
- # a new release is created:
26
- if: ${{ steps.release.outputs.release_created }}
30
+ if: ${{ steps.release.outputs.release_created || github.event_name == 'workflow_dispatch' }}
27
31
  - uses: actions/setup-node@v4
28
32
  with:
29
- node-version: 20
33
+ node-version: 24
30
34
  registry-url: 'https://registry.npmjs.org'
31
- if: ${{ steps.release.outputs.release_created }}
35
+ if: ${{ steps.release.outputs.release_created || github.event_name == 'workflow_dispatch' }}
32
36
  - run: npm ci
33
- if: ${{ steps.release.outputs.release_created }}
37
+ if: ${{ steps.release.outputs.release_created || github.event_name == 'workflow_dispatch' }}
34
38
  - run: npm publish --provenance --access public
35
- env:
36
- NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
37
- if: ${{ steps.release.outputs.release_created }}
39
+ if: ${{ steps.release.outputs.release_created || github.event_name == 'workflow_dispatch' }}
@@ -1,7 +1,13 @@
1
1
  module.exports = {
2
2
  upgrade: true,
3
3
  reject: [
4
+ // 12 is esm only ("type": "module"), and grunt-mocha-test require()s it as a
5
+ // constructor - "Mocha is not a constructor". Node 24 hides this through
6
+ // require(esm); CI on Node 22 does not. Lift it when the runner drops grunt.
7
+ 'mocha',
4
8
  // 5x is esm only
5
- 'chai'
9
+ 'chai',
10
+ // api changes in newer eslint
11
+ 'grunt-eslint'
6
12
  ]
7
13
  };