@kensio/yulin 1.21.0 → 1.21.2

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 (529) hide show
  1. package/README.md +1 -0
  2. package/dist/sdk/router/resolve-sim-sdk-command-router.js +4 -0
  3. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
  4. package/dist/service/aws/factory/sim-aws-lambda-collaborators.d.ts +2 -0
  5. package/dist/service/aws/factory/sim-aws-lambda-collaborators.js +3 -0
  6. package/dist/service/aws/factory/sim-aws-logs-collaborators.d.ts +7 -0
  7. package/dist/service/aws/factory/sim-aws-logs-collaborators.js +10 -0
  8. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.d.ts +3 -0
  9. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.js +5 -0
  10. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +3 -0
  11. package/dist/service/aws/factory/sim-aws-service-factory.js +4 -0
  12. package/dist/service/aws/sim-aws-account-region-scope.d.ts +3 -0
  13. package/dist/service/aws/sim-aws-account-region-scope.js +4 -0
  14. package/dist/service/aws/sim-aws-account.d.ts +3 -0
  15. package/dist/service/aws/sim-aws-account.js +4 -0
  16. package/dist/service/aws/sim-aws-region.d.ts +3 -0
  17. package/dist/service/aws/sim-aws-region.js +4 -0
  18. package/dist/service/aws/sim-aws-service-accessors.d.ts +3 -0
  19. package/dist/service/aws/sim-aws-service-accessors.js +4 -0
  20. package/dist/service/backup/cfn/sim-backup-cfn-plan-creator.d.ts +6 -0
  21. package/dist/service/backup/cfn/sim-backup-cfn-plan-creator.js +12 -0
  22. package/dist/service/backup/cfn/sim-backup-cfn-resource-deleter.d.ts +12 -0
  23. package/dist/service/backup/cfn/sim-backup-cfn-resource-deleter.js +31 -0
  24. package/dist/service/backup/cfn/sim-backup-cfn-resource-factory.d.ts +15 -0
  25. package/dist/service/backup/cfn/sim-backup-cfn-resource-factory.js +38 -0
  26. package/dist/service/backup/cfn/sim-backup-cfn-selection-creator.d.ts +6 -0
  27. package/dist/service/backup/cfn/sim-backup-cfn-selection-creator.js +17 -0
  28. package/dist/service/backup/cfn/sim-backup-cfn-vault-creator.d.ts +6 -0
  29. package/dist/service/backup/cfn/sim-backup-cfn-vault-creator.js +29 -0
  30. package/dist/service/backup/cfn/sim-cfn-backup-plan-properties.d.ts +11 -0
  31. package/dist/service/backup/cfn/sim-cfn-backup-plan-properties.js +37 -0
  32. package/dist/service/backup/cfn/sim-cfn-backup-properties.d.ts +12 -0
  33. package/dist/service/backup/cfn/sim-cfn-backup-properties.js +37 -0
  34. package/dist/service/backup/cfn/sim-cfn-backup-property-reader.d.ts +17 -0
  35. package/dist/service/backup/cfn/sim-cfn-backup-property-reader.js +62 -0
  36. package/dist/service/backup/cfn/sim-cfn-backup-resource-error.d.ts +7 -0
  37. package/dist/service/backup/cfn/sim-cfn-backup-resource-error.js +22 -0
  38. package/dist/service/backup/command/sim-backup-authorizer.d.ts +11 -0
  39. package/dist/service/backup/command/sim-backup-authorizer.js +24 -0
  40. package/dist/service/backup/command/sim-backup-command.types.d.ts +238 -0
  41. package/dist/service/backup/command/sim-backup-command.types.js +1 -0
  42. package/dist/service/backup/command/sim-backup-configuration-commands.d.ts +32 -0
  43. package/dist/service/backup/command/sim-backup-configuration-commands.js +138 -0
  44. package/dist/service/backup/command/sim-backup-job-commands.d.ts +23 -0
  45. package/dist/service/backup/command/sim-backup-job-commands.js +52 -0
  46. package/dist/service/backup/command/sim-backup-recovery-point-commands.d.ts +18 -0
  47. package/dist/service/backup/command/sim-backup-recovery-point-commands.js +38 -0
  48. package/dist/service/backup/command/sim-backup-request-options.d.ts +4 -0
  49. package/dist/service/backup/command/sim-backup-request-options.js +1 -0
  50. package/dist/service/backup/command/sim-backup-required-string.d.ts +2 -0
  51. package/dist/service/backup/command/sim-backup-required-string.js +8 -0
  52. package/dist/service/backup/error/sim-backup.error.d.ts +38 -0
  53. package/dist/service/backup/error/sim-backup.error.js +50 -0
  54. package/dist/service/backup/index.d.ts +9 -0
  55. package/dist/service/backup/index.js +7 -0
  56. package/dist/service/backup/job/sim-backup-job-input.d.ts +11 -0
  57. package/dist/service/backup/job/sim-backup-job-input.js +1 -0
  58. package/dist/service/backup/job/sim-backup-job-page.d.ts +22 -0
  59. package/dist/service/backup/job/sim-backup-job-page.js +54 -0
  60. package/dist/service/backup/job/sim-backup-job.d.ts +25 -0
  61. package/dist/service/backup/job/sim-backup-job.factory.d.ts +10 -0
  62. package/dist/service/backup/job/sim-backup-job.factory.js +24 -0
  63. package/dist/service/backup/job/sim-backup-job.js +54 -0
  64. package/dist/service/backup/job/sim-backup-jobs.d.ts +18 -0
  65. package/dist/service/backup/job/sim-backup-jobs.js +33 -0
  66. package/dist/service/backup/plan/sim-backup-plan-schedules.d.ts +21 -0
  67. package/dist/service/backup/plan/sim-backup-plan-schedules.js +66 -0
  68. package/dist/service/backup/plan/sim-backup-plan.d.ts +22 -0
  69. package/dist/service/backup/plan/sim-backup-plan.js +37 -0
  70. package/dist/service/backup/plan/sim-backup-rule.d.ts +9 -0
  71. package/dist/service/backup/plan/sim-backup-rule.js +71 -0
  72. package/dist/service/backup/recovery-point/sim-backup-recovery-point.d.ts +28 -0
  73. package/dist/service/backup/recovery-point/sim-backup-recovery-point.factory.d.ts +9 -0
  74. package/dist/service/backup/recovery-point/sim-backup-recovery-point.factory.js +23 -0
  75. package/dist/service/backup/recovery-point/sim-backup-recovery-point.js +62 -0
  76. package/dist/service/backup/sdk/sim-backup-sdk-command-router.d.ts +9 -0
  77. package/dist/service/backup/sdk/sim-backup-sdk-command-router.js +37 -0
  78. package/dist/service/backup/selection/sim-backup-selection.d.ts +22 -0
  79. package/dist/service/backup/selection/sim-backup-selection.js +43 -0
  80. package/dist/service/backup/sim-backup-arn.d.ts +7 -0
  81. package/dist/service/backup/sim-backup-arn.js +12 -0
  82. package/dist/service/backup/sim-backup-properties.d.ts +8 -0
  83. package/dist/service/backup/sim-backup-properties.js +1 -0
  84. package/dist/service/backup/sim-backup-resource-resolver.d.ts +24 -0
  85. package/dist/service/backup/sim-backup-resource-resolver.js +44 -0
  86. package/dist/service/backup/sim-backup-store.d.ts +29 -0
  87. package/dist/service/backup/sim-backup-store.js +80 -0
  88. package/dist/service/backup/sim-backup.d.ts +48 -0
  89. package/dist/service/backup/sim-backup.js +139 -0
  90. package/dist/service/backup/vault/sim-backup-vault-description.d.ts +12 -0
  91. package/dist/service/backup/vault/sim-backup-vault-description.js +15 -0
  92. package/dist/service/backup/vault/sim-backup-vault-lock-configuration.d.ts +5 -0
  93. package/dist/service/backup/vault/sim-backup-vault-lock-configuration.js +31 -0
  94. package/dist/service/backup/vault/sim-backup-vault-lock.d.ts +15 -0
  95. package/dist/service/backup/vault/sim-backup-vault-lock.js +23 -0
  96. package/dist/service/backup/vault/sim-backup-vault-recovery-points.d.ts +12 -0
  97. package/dist/service/backup/vault/sim-backup-vault-recovery-points.js +30 -0
  98. package/dist/service/backup/vault/sim-backup-vault-retention.d.ts +4 -0
  99. package/dist/service/backup/vault/sim-backup-vault-retention.js +20 -0
  100. package/dist/service/backup/vault/sim-backup-vault.d.ts +33 -0
  101. package/dist/service/backup/vault/sim-backup-vault.js +49 -0
  102. package/dist/service/cloudformation/resource/cfn/backup/sim-backup-cfn-value-adapter.d.ts +3 -0
  103. package/dist/service/cloudformation/resource/cfn/backup/sim-backup-cfn-value-adapter.js +66 -0
  104. package/dist/service/cloudformation/resource/cfn/logs/sim-logs-cfn-value-adapter.js +6 -0
  105. package/dist/service/cloudformation/resource/cfn/logs/sim-logs-metric-filter-cfn.d.ts +23 -0
  106. package/dist/service/cloudformation/resource/cfn/logs/sim-logs-metric-filter-cfn.js +22 -0
  107. package/dist/service/cloudformation/resource/cfn/sim-cfn-service-value-adapters.js +2 -0
  108. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-properties.d.ts +49 -0
  109. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-properties.js +61 -0
  110. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-property.type.d.ts +51 -0
  111. package/dist/service/cloudformation/resource/ignore/sim-cfn-skipped-property.type.js +1 -0
  112. package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-factories.js +4 -0
  113. package/dist/service/cloudwatch/index.d.ts +1 -0
  114. package/dist/service/cloudwatch/index.js +1 -0
  115. package/dist/service/cloudwatch/sim-cloudwatch-commands.d.ts +2 -0
  116. package/dist/service/cloudwatch/sim-cloudwatch-commands.js +6 -0
  117. package/dist/service/cloudwatch/sim-cloudwatch.d.ts +9 -0
  118. package/dist/service/cloudwatch/sim-cloudwatch.js +10 -0
  119. package/dist/service/cloudwatch/write/sim-cloudwatch-service-writer.d.ts +58 -0
  120. package/dist/service/cloudwatch/write/sim-cloudwatch-service-writer.js +53 -0
  121. package/dist/service/cognito/command/auth/sim-cognito-admin-respond-to-challenge.d.ts +3 -0
  122. package/dist/service/cognito/command/auth/sim-cognito-admin-respond-to-challenge.js +8 -2
  123. package/dist/service/cognito/command/auth/sim-cognito-auth-commands.d.ts +3 -0
  124. package/dist/service/cognito/command/auth/sim-cognito-auth-commands.js +4 -0
  125. package/dist/service/cognito/command/auth/sim-cognito-auth-flow-runner.d.ts +11 -1
  126. package/dist/service/cognito/command/auth/sim-cognito-auth-flow-runner.js +13 -1
  127. package/dist/service/cognito/command/auth/sim-cognito-auth-resolver.d.ts +3 -0
  128. package/dist/service/cognito/command/auth/sim-cognito-auth-resolver.js +16 -4
  129. package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.d.ts +7 -0
  130. package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.js +11 -1
  131. package/dist/service/cognito/command/auth/sim-cognito-respond-to-challenge.d.ts +3 -0
  132. package/dist/service/cognito/command/auth/sim-cognito-respond-to-challenge.js +8 -2
  133. package/dist/service/cognito/command/hosted/hosted-auth.command.d.ts +19 -0
  134. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.d.ts +1 -1
  135. package/dist/service/cognito/command/hosted/sim-cognito-authorize-endpoint.js +3 -2
  136. package/dist/service/cognito/command/hosted/sim-cognito-hosted-commands.d.ts +8 -0
  137. package/dist/service/cognito/command/hosted/sim-cognito-hosted-commands.js +11 -3
  138. package/dist/service/cognito/command/hosted/sim-cognito-hosted-passkey-sign-in.d.ts +11 -1
  139. package/dist/service/cognito/command/hosted/sim-cognito-hosted-passkey-sign-in.js +13 -2
  140. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.d.ts +11 -1
  141. package/dist/service/cognito/command/hosted/sim-cognito-hosted-password-sign-in.js +11 -1
  142. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.d.ts +7 -1
  143. package/dist/service/cognito/command/hosted/sim-cognito-hosted-sign-in.js +18 -7
  144. package/dist/service/cognito/command/hosted/sim-cognito-hosted-signed-in.d.ts +20 -3
  145. package/dist/service/cognito/command/hosted/sim-cognito-hosted-signed-in.js +19 -3
  146. package/dist/service/cognito/command/hosted/sim-cognito-token-endpoint.d.ts +2 -0
  147. package/dist/service/cognito/command/hosted/sim-cognito-token-grants.d.ts +8 -0
  148. package/dist/service/cognito/command/hosted/sim-cognito-token-grants.js +13 -4
  149. package/dist/service/cognito/command/sim-cognito-commands.d.ts +5 -0
  150. package/dist/service/cognito/command/sim-cognito-commands.js +22 -2
  151. package/dist/service/cognito/command/user/sim-cognito-confirm-sign-up-commands.d.ts +74 -0
  152. package/dist/service/cognito/command/user/sim-cognito-confirm-sign-up-commands.js +110 -0
  153. package/dist/service/cognito/command/user/sim-cognito-sign-up-commands.d.ts +5 -49
  154. package/dist/service/cognito/command/user/sim-cognito-sign-up-commands.js +7 -87
  155. package/dist/service/cognito/command/user/sim-cognito-user-commands.d.ts +4 -0
  156. package/dist/service/cognito/command/user/sim-cognito-user-commands.js +38 -29
  157. package/dist/service/cognito/error/sim-cognito-managed-login.error.d.ts +23 -0
  158. package/dist/service/cognito/error/sim-cognito-managed-login.error.js +36 -0
  159. package/dist/service/cognito/error/sim-cognito-throttle.error.d.ts +13 -0
  160. package/dist/service/cognito/error/sim-cognito-throttle.error.js +15 -0
  161. package/dist/service/cognito/index.d.ts +2 -0
  162. package/dist/service/cognito/index.js +2 -0
  163. package/dist/service/cognito/metric/sim-cognito-counted-request.d.ts +50 -0
  164. package/dist/service/cognito/metric/sim-cognito-counted-request.js +51 -0
  165. package/dist/service/cognito/metric/sim-cognito-metrics.d.ts +22 -0
  166. package/dist/service/cognito/metric/sim-cognito-metrics.js +26 -0
  167. package/dist/service/cognito/metric/sim-cognito-pool-metrics.d.ts +40 -0
  168. package/dist/service/cognito/metric/sim-cognito-pool-metrics.js +51 -0
  169. package/dist/service/cognito/metric/sim-cognito-throttled-request.d.ts +11 -0
  170. package/dist/service/cognito/metric/sim-cognito-throttled-request.js +15 -0
  171. package/dist/service/cognito/serve/page/sim-cognito-managed-login.d.ts +1 -0
  172. package/dist/service/cognito/serve/page/sim-cognito-managed-login.js +6 -1
  173. package/dist/service/cognito/serve/page/sim-cognito-page-markup.d.ts +4 -1
  174. package/dist/service/cognito/serve/page/sim-cognito-page-markup.js +6 -2
  175. package/dist/service/cognito/serve/page/sim-cognito-provider-page.d.ts +35 -0
  176. package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +50 -0
  177. package/dist/service/cognito/sim-cognito-identity-provider.d.ts +6 -0
  178. package/dist/service/cognito/sim-cognito-identity-provider.js +1 -0
  179. package/dist/service/cognito/sim-cognito-user-directory.js +3 -3
  180. package/dist/service/cognito/user-pool/auth/sim-cognito-authorization-code.d.ts +9 -0
  181. package/dist/service/cognito/user-pool/auth/sim-cognito-authorization-code.js +2 -0
  182. package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.d.ts +8 -0
  183. package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.js +8 -0
  184. package/dist/service/cognito/user-pool/auth/sim-cognito-request-throttle.d.ts +36 -0
  185. package/dist/service/cognito/user-pool/auth/sim-cognito-request-throttle.js +45 -0
  186. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-sign-in.d.ts +42 -9
  187. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-sign-in.js +56 -27
  188. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-triggers.d.ts +52 -0
  189. package/dist/service/cognito/user-pool/idp/sim-cognito-federated-triggers.js +49 -0
  190. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +48 -0
  191. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +94 -0
  192. package/dist/service/cognito/user-pool/idp/sim-cognito-same-federated-identity.d.ts +13 -0
  193. package/dist/service/cognito/user-pool/idp/sim-cognito-same-federated-identity.js +19 -0
  194. package/dist/service/cognito/user-pool/idp/sim-cognito-user-pool-identity-provider.d.ts +7 -0
  195. package/dist/service/cognito/user-pool/idp/sim-cognito-user-pool-identity-provider.js +9 -0
  196. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-name.d.ts +3 -2
  197. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-name.js +3 -2
  198. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-occasion.d.ts +18 -1
  199. package/dist/service/cognito/user-pool/trigger/sim-cognito-trigger-occasion.js +35 -18
  200. package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
  201. package/dist/service/lambda/command/create-function/create-function.handler.js +4 -1
  202. package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
  203. package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +7 -11
  204. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +7 -8
  205. package/dist/service/lambda/event-source/poll/sim-lambda-stream-iterator-age.d.ts +11 -0
  206. package/dist/service/lambda/event-source/poll/sim-lambda-stream-iterator-age.js +31 -0
  207. package/dist/service/lambda/event-source/poll/sim-lambda-stream-sequence-numbers.d.ts +10 -0
  208. package/dist/service/lambda/event-source/poll/sim-lambda-stream-sequence-numbers.js +12 -0
  209. package/dist/service/lambda/function/sim-lambda-function.d.ts +3 -0
  210. package/dist/service/lambda/function/sim-lambda-function.js +6 -2
  211. package/dist/service/lambda/function/sim-lambda-function.type.d.ts +7 -0
  212. package/dist/service/lambda/metric/sim-lambda-function-metrics.d.ts +47 -0
  213. package/dist/service/lambda/metric/sim-lambda-function-metrics.js +83 -0
  214. package/dist/service/lambda/metric/sim-lambda-iterator-age.d.ts +29 -0
  215. package/dist/service/lambda/metric/sim-lambda-iterator-age.js +41 -0
  216. package/dist/service/lambda/metric/sim-lambda-metrics.d.ts +12 -0
  217. package/dist/service/lambda/metric/sim-lambda-metrics.js +13 -0
  218. package/dist/service/lambda/sim-lambda-commands.d.ts +2 -0
  219. package/dist/service/lambda/sim-lambda-commands.js +2 -1
  220. package/dist/service/logs/cfn/metric/sim-cfn-metric-dimension-values.d.ts +9 -0
  221. package/dist/service/logs/cfn/metric/sim-cfn-metric-dimension-values.js +25 -0
  222. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-creator.d.ts +30 -0
  223. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-creator.js +52 -0
  224. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-properties.d.ts +40 -0
  225. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-properties.js +66 -0
  226. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-property-rules.d.ts +19 -0
  227. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-property-rules.js +40 -0
  228. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-unsimulated-properties.d.ts +5 -0
  229. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-unsimulated-properties.js +23 -0
  230. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-value.d.ts +25 -0
  231. package/dist/service/logs/cfn/metric/sim-cfn-metric-filter-value.js +58 -0
  232. package/dist/service/logs/cfn/metric/sim-cfn-metric-transformation-values.d.ts +6 -0
  233. package/dist/service/logs/cfn/metric/sim-cfn-metric-transformation-values.js +19 -0
  234. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.d.ts +2 -0
  235. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +4 -0
  236. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +5 -3
  237. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +12 -3
  238. package/dist/service/logs/command/event/sim-logs-put-log-events.d.ts +3 -0
  239. package/dist/service/logs/command/event/sim-logs-put-log-events.js +3 -0
  240. package/dist/service/logs/command/group/sim-logs-log-group-commands.js +3 -3
  241. package/dist/service/logs/command/metric/metric-filter.command.d.ts +79 -0
  242. package/dist/service/logs/command/metric/metric-filter.command.js +1 -0
  243. package/dist/service/logs/command/metric/sim-logs-metric-filter-commands.d.ts +48 -0
  244. package/dist/service/logs/command/metric/sim-logs-metric-filter-commands.js +95 -0
  245. package/dist/service/logs/command/metric/sim-logs-metric-filter-input.d.ts +11 -0
  246. package/dist/service/logs/command/metric/sim-logs-metric-filter-input.js +79 -0
  247. package/dist/service/logs/command/sim-logs-command.types.d.ts +1 -0
  248. package/dist/service/logs/group/sim-logs-log-group.d.ts +6 -0
  249. package/dist/service/logs/group/sim-logs-log-group.js +6 -0
  250. package/dist/service/logs/index.d.ts +6 -0
  251. package/dist/service/logs/index.js +4 -0
  252. package/dist/service/logs/metric/cloudwatch/sim-aws-logs-metric-filter-metrics.d.ts +40 -0
  253. package/dist/service/logs/metric/cloudwatch/sim-aws-logs-metric-filter-metrics.js +78 -0
  254. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-datapoints.d.ts +25 -0
  255. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-datapoints.js +81 -0
  256. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-document.d.ts +57 -0
  257. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-document.js +85 -0
  258. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-json.d.ts +24 -0
  259. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-json.js +41 -0
  260. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-values.d.ts +20 -0
  261. package/dist/service/logs/metric/emf/sim-logs-embedded-metric-values.js +39 -0
  262. package/dist/service/logs/metric/sim-logs-metric-datapoint.d.ts +25 -0
  263. package/dist/service/logs/metric/sim-logs-metric-datapoint.js +1 -0
  264. package/dist/service/logs/metric/sim-logs-metric-fan-out.d.ts +62 -0
  265. package/dist/service/logs/metric/sim-logs-metric-fan-out.js +116 -0
  266. package/dist/service/logs/metric/sim-logs-metric-filter-selection.d.ts +17 -0
  267. package/dist/service/logs/metric/sim-logs-metric-filter-selection.js +17 -0
  268. package/dist/service/logs/metric/sim-logs-metric-filter-store.d.ts +35 -0
  269. package/dist/service/logs/metric/sim-logs-metric-filter-store.js +47 -0
  270. package/dist/service/logs/metric/sim-logs-metric-filter.d.ts +49 -0
  271. package/dist/service/logs/metric/sim-logs-metric-filter.js +95 -0
  272. package/dist/service/logs/metric/sim-logs-metric-publication-failure.d.ts +31 -0
  273. package/dist/service/logs/metric/sim-logs-metric-publication-failure.js +12 -0
  274. package/dist/service/logs/metric/sim-logs-metric-publications.d.ts +11 -0
  275. package/dist/service/logs/metric/sim-logs-metric-publications.js +1 -0
  276. package/dist/service/logs/metric/sim-logs-metric-transformation.d.ts +45 -0
  277. package/dist/service/logs/metric/sim-logs-metric-transformation.js +127 -0
  278. package/dist/service/logs/sdk/sim-logs-sdk-command-router.js +12 -0
  279. package/dist/service/logs/sim-logs-commands.d.ts +12 -0
  280. package/dist/service/logs/sim-logs-commands.js +17 -0
  281. package/dist/service/logs/sim-logs-metric-operations.d.ts +31 -0
  282. package/dist/service/logs/sim-logs-metric-operations.js +37 -0
  283. package/dist/service/logs/sim-logs.d.ts +4 -3
  284. package/dist/service/logs/sim-logs.js +4 -3
  285. package/dist/service/logs/write/sim-logs-service-writer.d.ts +3 -0
  286. package/dist/service/logs/write/sim-logs-service-writer.js +5 -1
  287. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +32 -0
  288. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +31 -1
  289. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +13 -2
  290. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +18 -1
  291. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +17 -1
  292. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +27 -3
  293. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +45 -0
  294. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +90 -0
  295. package/dist/service/s3/bucket/lock/sim-s3-bucket-object-lock.d.ts +42 -0
  296. package/dist/service/s3/bucket/lock/sim-s3-bucket-object-lock.js +59 -0
  297. package/dist/service/s3/bucket/lock/sim-s3-default-retention.d.ts +8 -0
  298. package/dist/service/s3/bucket/lock/sim-s3-default-retention.js +15 -0
  299. package/dist/service/s3/bucket/lock/sim-s3-object-lock-configuration.d.ts +49 -0
  300. package/dist/service/s3/bucket/lock/sim-s3-object-lock-configuration.js +102 -0
  301. package/dist/service/s3/bucket/lock/sim-s3-object-lock-output.d.ts +14 -0
  302. package/dist/service/s3/bucket/lock/sim-s3-object-lock-output.js +1 -0
  303. package/dist/service/s3/bucket/lock/sim-s3-object-lock.d.ts +62 -0
  304. package/dist/service/s3/bucket/lock/sim-s3-object-lock.js +100 -0
  305. package/dist/service/s3/bucket/lock/sim-s3-object-retention.d.ts +55 -0
  306. package/dist/service/s3/bucket/lock/sim-s3-object-retention.js +82 -0
  307. package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
  308. package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +9 -1
  309. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.d.ts +1 -1
  310. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +1 -2
  311. package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +114 -0
  312. package/dist/service/s3/bucket/sim-s3-bucket-objects.js +148 -0
  313. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +30 -29
  314. package/dist/service/s3/bucket/sim-s3-bucket.js +42 -45
  315. package/dist/service/s3/bucket/sim-s3-object-deletion.d.ts +30 -0
  316. package/dist/service/s3/bucket/sim-s3-object-deletion.js +29 -0
  317. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versioning.d.ts +61 -0
  318. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versioning.js +65 -0
  319. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versions.d.ts +97 -0
  320. package/dist/service/s3/bucket/versioning/sim-s3-bucket-versions.js +176 -0
  321. package/dist/service/s3/bucket/versioning/sim-s3-compare-keys.d.ts +10 -0
  322. package/dist/service/s3/bucket/versioning/sim-s3-compare-keys.js +16 -0
  323. package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +85 -0
  324. package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +101 -0
  325. package/dist/service/s3/bucket/versioning/sim-s3-object-versions.d.ts +52 -0
  326. package/dist/service/s3/bucket/versioning/sim-s3-object-versions.js +91 -0
  327. package/dist/service/s3/bucket/versioning/sim-s3-version-page.d.ts +32 -0
  328. package/dist/service/s3/bucket/versioning/sim-s3-version-page.js +45 -0
  329. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.d.ts +0 -5
  330. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +3 -14
  331. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +18 -1
  332. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +34 -1
  333. package/dist/service/s3/cfn/bucket/lock/sim-cfn-s3-bucket-object-lock-configuration.d.ts +37 -0
  334. package/dist/service/s3/cfn/bucket/lock/sim-cfn-s3-bucket-object-lock-configuration.js +78 -0
  335. package/dist/service/s3/cfn/bucket/replication/sim-cfn-s3-bucket-replication-rules.d.ts +20 -0
  336. package/dist/service/s3/cfn/bucket/replication/sim-cfn-s3-bucket-replication-rules.js +107 -0
  337. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.d.ts +14 -7
  338. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +29 -37
  339. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +62 -0
  340. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +89 -0
  341. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +9 -5
  342. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +16 -16
  343. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-rules.d.ts +9 -5
  344. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-rules.js +17 -6
  345. package/dist/service/s3/cfn/bucket/versioning/sim-cfn-s3-bucket-versioning-configuration.d.ts +19 -0
  346. package/dist/service/s3/cfn/bucket/versioning/sim-cfn-s3-bucket-versioning-configuration.js +28 -0
  347. package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +24 -0
  348. package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +30 -0
  349. package/dist/service/s3/command/complete-multipart-upload/complete-multipart-upload.command.d.ts +2 -0
  350. package/dist/service/s3/command/complete-multipart-upload/complete-multipart-upload.handler.js +3 -1
  351. package/dist/service/s3/command/copy-object/copy-object.command.d.ts +3 -1
  352. package/dist/service/s3/command/copy-object/copy-object.handler.js +3 -1
  353. package/dist/service/s3/command/delete-object/delete-object-version-removal.d.ts +50 -0
  354. package/dist/service/s3/command/delete-object/delete-object-version-removal.js +52 -0
  355. package/dist/service/s3/command/delete-object/delete-object.command.d.ts +19 -2
  356. package/dist/service/s3/command/delete-object/delete-object.handler.d.ts +7 -1
  357. package/dist/service/s3/command/delete-object/delete-object.handler.js +28 -16
  358. package/dist/service/s3/command/delete-object/sim-s3-notify-deleted.d.ts +24 -0
  359. package/dist/service/s3/command/delete-object/sim-s3-notify-deleted.js +32 -0
  360. package/dist/service/s3/command/delete-objects/delete-object-attempt.d.ts +6 -2
  361. package/dist/service/s3/command/delete-objects/delete-object-attempt.js +6 -2
  362. package/dist/service/s3/command/delete-objects/delete-objects-key-removal.js +10 -9
  363. package/dist/service/s3/command/delete-objects/delete-objects-outcome.js +9 -1
  364. package/dist/service/s3/command/delete-objects/delete-objects.command.d.ts +6 -0
  365. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.command.d.ts +23 -0
  366. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.command.js +1 -0
  367. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.handler.d.ts +31 -0
  368. package/dist/service/s3/command/get-bucket-versioning/get-bucket-versioning.handler.js +40 -0
  369. package/dist/service/s3/command/get-object/get-object-loader.d.ts +3 -2
  370. package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
  371. package/dist/service/s3/command/get-object/get-object.command.d.ts +9 -1
  372. package/dist/service/s3/command/get-object/get-object.handler.js +1 -1
  373. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.command.d.ts +25 -0
  374. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.command.js +1 -0
  375. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.handler.d.ts +31 -0
  376. package/dist/service/s3/command/get-object-lock-configuration/get-object-lock-configuration.handler.js +41 -0
  377. package/dist/service/s3/command/head-object/head-object-loader.d.ts +1 -1
  378. package/dist/service/s3/command/head-object/head-object-loader.js +7 -3
  379. package/dist/service/s3/command/head-object/head-object.command.d.ts +9 -1
  380. package/dist/service/s3/command/head-object/head-object.handler.js +1 -1
  381. package/dist/service/s3/command/list-object-versions/list-object-versions-listing.d.ts +31 -0
  382. package/dist/service/s3/command/list-object-versions/list-object-versions-listing.js +55 -0
  383. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.d.ts +17 -0
  384. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +34 -0
  385. package/dist/service/s3/command/list-object-versions/list-object-versions.command.d.ts +59 -0
  386. package/dist/service/s3/command/list-object-versions/list-object-versions.command.js +1 -0
  387. package/dist/service/s3/command/list-object-versions/list-object-versions.handler.d.ts +34 -0
  388. package/dist/service/s3/command/list-object-versions/list-object-versions.handler.js +62 -0
  389. package/dist/service/s3/command/object/sim-s3-read-object-version.d.ts +34 -0
  390. package/dist/service/s3/command/object/sim-s3-read-object-version.js +52 -0
  391. package/dist/service/s3/command/object-lock/sim-s3-locked-version.d.ts +11 -0
  392. package/dist/service/s3/command/object-lock/sim-s3-locked-version.js +27 -0
  393. package/dist/service/s3/command/object-lock/sim-s3-object-lock-authorizer.d.ts +42 -0
  394. package/dist/service/s3/command/object-lock/sim-s3-object-lock-authorizer.js +66 -0
  395. package/dist/service/s3/command/object-lock/sim-s3-object-lock-commands.d.ts +30 -0
  396. package/dist/service/s3/command/object-lock/sim-s3-object-lock-commands.js +41 -0
  397. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.command.d.ts +21 -0
  398. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.command.js +1 -0
  399. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.handler.d.ts +31 -0
  400. package/dist/service/s3/command/put-bucket-versioning/put-bucket-versioning.handler.js +44 -0
  401. package/dist/service/s3/command/put-object/put-object.command.d.ts +3 -0
  402. package/dist/service/s3/command/put-object/put-object.handler.js +10 -10
  403. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.command.d.ts +24 -0
  404. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.command.js +1 -0
  405. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.handler.d.ts +32 -0
  406. package/dist/service/s3/command/put-object-legal-hold/put-object-legal-hold.handler.js +41 -0
  407. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.command.d.ts +21 -0
  408. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.command.js +1 -0
  409. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.handler.d.ts +32 -0
  410. package/dist/service/s3/command/put-object-lock-configuration/put-object-lock-configuration.handler.js +47 -0
  411. package/dist/service/s3/command/put-object-retention/put-object-retention.command.d.ts +29 -0
  412. package/dist/service/s3/command/put-object-retention/put-object-retention.command.js +1 -0
  413. package/dist/service/s3/command/put-object-retention/put-object-retention.handler.d.ts +31 -0
  414. package/dist/service/s3/command/put-object-retention/put-object-retention.handler.js +42 -0
  415. package/dist/service/s3/command/sim-s3-command.types.d.ts +7 -0
  416. package/dist/service/s3/command/versioning/sim-s3-versioning-authorizer.d.ts +35 -0
  417. package/dist/service/s3/command/versioning/sim-s3-versioning-authorizer.js +57 -0
  418. package/dist/service/s3/command/versioning/sim-s3-versioning-commands.d.ts +26 -0
  419. package/dist/service/s3/command/versioning/sim-s3-versioning-commands.js +34 -0
  420. package/dist/service/s3/command/versioning/sim-s3-versioning-configuration-validation.d.ts +13 -0
  421. package/dist/service/s3/command/versioning/sim-s3-versioning-configuration-validation.js +28 -0
  422. package/dist/service/s3/error/sim-s3-object-lock.error.d.ts +22 -0
  423. package/dist/service/s3/error/sim-s3-object-lock.error.js +26 -0
  424. package/dist/service/s3/error/sim-s3.error.d.ts +22 -0
  425. package/dist/service/s3/error/sim-s3.error.js +26 -0
  426. package/dist/service/s3/notification/event/sim-s3-event-records.js +3 -0
  427. package/dist/service/s3/notification/event/sim-s3-event.type.d.ts +5 -3
  428. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +15 -0
  429. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +4 -1
  430. package/dist/service/s3/notification/event/sim-s3-object-event.d.ts +6 -0
  431. package/dist/service/s3/notification/event/sim-s3-object-event.js +2 -0
  432. package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +1 -1
  433. package/dist/service/s3/notification/sim-s3-object-notifier.js +2 -2
  434. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.d.ts +10 -0
  435. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +84 -0
  436. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +6 -132
  437. package/dist/service/s3/sdk/sim-s3-sdk-object-lock-routes.d.ts +10 -0
  438. package/dist/service/s3/sdk/sim-s3-sdk-object-lock-routes.js +28 -0
  439. package/dist/service/s3/sdk/sim-s3-sdk-object-routes.d.ts +7 -0
  440. package/dist/service/s3/sdk/sim-s3-sdk-object-routes.js +80 -0
  441. package/dist/service/s3/sim-s3-commands.d.ts +4 -0
  442. package/dist/service/s3/sim-s3-commands.js +6 -0
  443. package/dist/service/s3/sim-s3-operations.d.ts +5 -5
  444. package/dist/service/s3/sim-s3-operations.js +5 -6
  445. package/dist/service/s3/sim-s3-version-operations.d.ts +32 -0
  446. package/dist/service/s3/sim-s3-version-operations.js +45 -0
  447. package/dist/service/scheduler/command/schedule/schedule.command.d.ts +9 -2
  448. package/dist/service/scheduler/command/schedule/sim-scheduler-described-schedule.js +2 -0
  449. package/dist/service/scheduler/command/schedule/sim-scheduler-unsimulated-target.js +0 -6
  450. package/dist/service/scheduler/command/sim-scheduler-command.types.d.ts +1 -1
  451. package/dist/service/scheduler/command/sim-scheduler-commands.js +1 -0
  452. package/dist/service/scheduler/delivery/sim-aws-scheduler-dead-letters.d.ts +17 -0
  453. package/dist/service/scheduler/delivery/sim-aws-scheduler-dead-letters.js +29 -0
  454. package/dist/service/scheduler/delivery/sim-aws-scheduler-delivery-targets.d.ts +6 -1
  455. package/dist/service/scheduler/delivery/sim-aws-scheduler-delivery-targets.js +9 -0
  456. package/dist/service/scheduler/delivery/sim-scheduler-dead-letter-queue.d.ts +18 -0
  457. package/dist/service/scheduler/delivery/sim-scheduler-dead-letter-queue.js +62 -0
  458. package/dist/service/scheduler/delivery/sim-scheduler-delivery-attempt.d.ts +29 -0
  459. package/dist/service/scheduler/delivery/sim-scheduler-delivery-attempt.js +81 -0
  460. package/dist/service/scheduler/delivery/sim-scheduler-delivery-function.js +9 -5
  461. package/dist/service/scheduler/delivery/sim-scheduler-delivery.d.ts +11 -0
  462. package/dist/service/scheduler/delivery/sim-scheduler-no-delivery-targets.d.ts +5 -1
  463. package/dist/service/scheduler/delivery/sim-scheduler-no-delivery-targets.js +8 -0
  464. package/dist/service/scheduler/delivery/sim-scheduler-target-delivery.d.ts +4 -1
  465. package/dist/service/scheduler/delivery/sim-scheduler-target-delivery.js +20 -15
  466. package/dist/service/scheduler/index.d.ts +1 -1
  467. package/dist/service/scheduler/target/sim-scheduler-dead-letter-config.d.ts +15 -0
  468. package/dist/service/scheduler/target/sim-scheduler-dead-letter-config.js +24 -0
  469. package/dist/service/scheduler/target/sim-scheduler-retry-policy.d.ts +20 -0
  470. package/dist/service/scheduler/target/sim-scheduler-retry-policy.js +37 -0
  471. package/dist/service/scheduler/target/sim-scheduler-target.d.ts +6 -0
  472. package/dist/service/scheduler/target/sim-scheduler-target.js +12 -0
  473. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-commands.js +13 -5
  474. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-options.d.ts +1 -1
  475. package/dist/service/ses/command/configuration-set/sim-ses-configuration-set-options.js +9 -9
  476. package/dist/service/ses/command/send/send.command.d.ts +10 -1
  477. package/dist/service/ses/command/send/sim-ses-read-content.d.ts +2 -1
  478. package/dist/service/ses/command/send/sim-ses-send-email.js +1 -0
  479. package/dist/service/ses/command/send/sim-ses-service-send.js +1 -0
  480. package/dist/service/ses/command/send/sim-ses-simple-content.js +26 -5
  481. package/dist/service/ses/command/send/sim-ses-template-send.js +1 -0
  482. package/dist/service/ses/command/suppression/suppression.command.d.ts +3 -2
  483. package/dist/service/ses/configuration-set/sim-ses-configuration-set.d.ts +9 -10
  484. package/dist/service/ses/configuration-set/sim-ses-configuration-set.js +7 -8
  485. package/dist/service/ses/email/sim-ses-sent-email-store.d.ts +8 -0
  486. package/dist/service/ses/email/sim-ses-sent-email-store.js +17 -0
  487. package/dist/service/ses/email/sim-ses-sent-email.d.ts +18 -0
  488. package/dist/service/ses/email/sim-ses-sent-email.js +3 -0
  489. package/dist/service/ses/error/sim-ses.error.d.ts +10 -0
  490. package/dist/service/ses/error/sim-ses.error.js +10 -0
  491. package/dist/service/ses/feedback/sim-ses-feedback-recorder.d.ts +34 -0
  492. package/dist/service/ses/feedback/sim-ses-feedback-recorder.js +55 -0
  493. package/dist/service/ses/index.d.ts +3 -2
  494. package/dist/service/ses/index.js +2 -1
  495. package/dist/service/ses/sim-ses-commands.d.ts +2 -0
  496. package/dist/service/ses/sim-ses-commands.js +9 -0
  497. package/dist/service/ses/sim-ses-configuration-sets.d.ts +4 -4
  498. package/dist/service/ses/sim-ses-configuration-sets.js +4 -4
  499. package/dist/service/ses/sim-ses-suppression.d.ts +3 -2
  500. package/dist/service/ses/sim-ses-suppression.js +3 -2
  501. package/dist/service/ses/sim-ses-v2.d.ts +13 -0
  502. package/dist/service/ses/sim-ses-v2.js +13 -0
  503. package/dist/service/ses/suppression/sim-ses-suppressed-destination.d.ts +3 -4
  504. package/dist/service/ses/suppression/sim-ses-suppressed-destination.js +3 -4
  505. package/dist/service/ses/suppression/sim-ses-suppression-list.d.ts +4 -4
  506. package/dist/service/ses/suppression/sim-ses-suppression-list.js +4 -4
  507. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-encryption-rules.d.ts +15 -0
  508. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-encryption-rules.js +33 -0
  509. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.d.ts +16 -0
  510. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-properties.js +33 -1
  511. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-names.d.ts +12 -6
  512. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-names.js +18 -13
  513. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.d.ts +1 -0
  514. package/dist/service/sqs/cfn/queue/sim-cfn-sqs-queue-property-rules.js +9 -1
  515. package/dist/terraform/map/sim-tf-map-sqs-redrive.d.ts +4 -3
  516. package/dist/terraform/map/sim-tf-map-sqs-redrive.js +4 -3
  517. package/docs/README.md +1 -0
  518. package/docs/services/backup/README.md +553 -0
  519. package/docs/services/cloudformation/README.md +16 -6
  520. package/docs/services/cloudwatch/README.md +159 -3
  521. package/docs/services/cognito/README.md +370 -7
  522. package/docs/services/lambda/README.md +28 -0
  523. package/docs/services/logs/README.md +284 -3
  524. package/docs/services/s3/README.md +463 -20
  525. package/docs/services/scheduler/README.md +48 -9
  526. package/docs/services/ses/README.md +164 -41
  527. package/docs/services/sqs/README.md +47 -10
  528. package/llms.txt +1 -0
  529. package/package.json +7 -2
@@ -4,8 +4,11 @@
4
4
  export const simulatedPropertyNames = new Set([
5
5
  "BucketName",
6
6
  "LifecycleConfiguration",
7
+ "ObjectLockConfiguration",
8
+ "ObjectLockEnabled",
7
9
  "NotificationConfiguration",
8
10
  "PublicAccessBlockConfiguration",
11
+ "VersioningConfiguration",
9
12
  "WebsiteConfiguration",
10
13
  ]);
11
14
  /**
@@ -21,15 +24,19 @@ export const inertPropertyNames = new Set([
21
24
  "BucketEncryption",
22
25
  "Tags",
23
26
  ]);
27
+ import { validateSimCfnS3BucketReplication } from "./replication/sim-cfn-s3-bucket-replication-rules.js";
24
28
  /**
25
29
  * Real AWS::S3::Bucket properties this simulation does not model, with what
26
30
  * each of them would have changed.
27
31
  *
28
32
  * The Bucket is created without them and each one is recorded against the
29
- * Resource. A versioned Bucket, for instance, answers a delete with a delete
30
- * marker and an `ObjectRemoved:DeleteMarkerCreated` event, where this simulator
31
- * removes the Object and raises `ObjectRemoved:Delete`, so a test written
32
- * against versioning needs to find out that it was never configured.
33
+ * Resource. A Bucket declaring replication, for instance, copies nothing to
34
+ * the Bucket it names, so a test expecting an Object to arrive there needs to
35
+ * find out that nothing was ever going to send it.
36
+ *
37
+ * A property whose value real S3 answers with a 400 states what it has to
38
+ * satisfy here as well. Nothing acts on the value either way, and reading it
39
+ * this far is what keeps a template AWS refuses from deploying.
33
40
  */
34
41
  export const unsimulatedPropertyReasons = new Map([
35
42
  ["AbacStatus", "attribute-based access control is not simulated"],
@@ -55,19 +62,12 @@ export const unsimulatedPropertyReasons = new Map([
55
62
  ["MetadataConfiguration", "Bucket metadata tables are not simulated"],
56
63
  ["MetadataTableConfiguration", "Bucket metadata tables are not simulated"],
57
64
  ["MetricsConfigurations", "CloudWatch request metrics are not simulated"],
58
- [
59
- "ObjectLockConfiguration",
60
- "Object Lock is not simulated, so a retained Object can still be deleted",
61
- ],
62
- [
63
- "ObjectLockEnabled",
64
- "Object Lock is not simulated, so a retained Object can still be deleted",
65
- ],
66
65
  ["OwnershipControls", "Object ownership and ACLs are not simulated"],
67
- ["ReplicationConfiguration", "Bucket replication is not simulated"],
68
66
  [
69
- "VersioningConfiguration",
70
- "Object versions are not simulated, so a delete removes the Object and " +
71
- "raises ObjectRemoved:Delete rather than creating a delete marker",
67
+ "ReplicationConfiguration",
68
+ {
69
+ reason: "Bucket replication is not simulated",
70
+ constraint: validateSimCfnS3BucketReplication,
71
+ },
72
72
  ],
73
73
  ]);
@@ -10,9 +10,12 @@ interface SimCfnS3BucketPropertyRulesProperties {
10
10
  *
11
11
  * Simulated CloudFormation deploys what it can, so a property this simulation
12
12
  * cannot act on does not stop the Bucket being created. It is left out and
13
- * recorded against the Resource, where a test can find it. Refusing is kept for
14
- * the one case where there is nothing coherent to create: a BucketName that is
15
- * not a name.
13
+ * recorded against the Resource, where a test can find it.
14
+ *
15
+ * Refusing is kept for two cases. There is nothing coherent to create, as a
16
+ * BucketName that is not a name leaves. Or the value is one real S3 answers
17
+ * with a 400, which a skipped property can carry as readily as a simulated
18
+ * one, and deploying it here would report a template AWS refuses as working.
16
19
  *
17
20
  * A property this simulation has never heard of is treated the same way. It may
18
21
  * be a typo, or a property AWS added since this list was written, and a Bucket
@@ -23,10 +26,11 @@ export declare class SimCfnS3BucketPropertyRules {
23
26
  private readonly logicalId;
24
27
  private readonly properties;
25
28
  private readonly ignorer;
29
+ private readonly skipped;
26
30
  constructor(properties: SimCfnS3BucketPropertyRulesProperties);
27
31
  /**
28
- * Record everything about this Resource that is not simulated, refusing only
29
- * what leaves nothing to create.
32
+ * Record everything about this Resource that is not simulated, refusing
33
+ * what leaves nothing to create and what real S3 answers with a 400.
30
34
  */
31
35
  apply(): void;
32
36
  /**
@@ -1,3 +1,4 @@
1
+ import { SimCfnSkippedProperties } from "../../../cloudformation/resource/ignore/sim-cfn-skipped-properties.js";
1
2
  import { s3BucketResourceError } from "./error/sim-cfn-s3-bucket-error.js";
2
3
  import { inertPropertyNames, simulatedPropertyNames, unsimulatedPropertyReasons, } from "./sim-cfn-s3-bucket-property-names.js";
3
4
  /**
@@ -5,9 +6,12 @@ import { inertPropertyNames, simulatedPropertyNames, unsimulatedPropertyReasons,
5
6
  *
6
7
  * Simulated CloudFormation deploys what it can, so a property this simulation
7
8
  * cannot act on does not stop the Bucket being created. It is left out and
8
- * recorded against the Resource, where a test can find it. Refusing is kept for
9
- * the one case where there is nothing coherent to create: a BucketName that is
10
- * not a name.
9
+ * recorded against the Resource, where a test can find it.
10
+ *
11
+ * Refusing is kept for two cases. There is nothing coherent to create, as a
12
+ * BucketName that is not a name leaves. Or the value is one real S3 answers
13
+ * with a 400, which a skipped property can carry as readily as a simulated
14
+ * one, and deploying it here would report a template AWS refuses as working.
11
15
  *
12
16
  * A property this simulation has never heard of is treated the same way. It may
13
17
  * be a typo, or a property AWS added since this list was written, and a Bucket
@@ -18,17 +22,24 @@ export class SimCfnS3BucketPropertyRules {
18
22
  logicalId;
19
23
  properties;
20
24
  ignorer;
25
+ skipped;
21
26
  constructor(properties) {
22
27
  this.logicalId = properties.logicalId;
23
28
  this.properties = properties.properties;
24
29
  this.ignorer = properties.ignorer;
30
+ this.skipped = new SimCfnSkippedProperties({
31
+ rules: unsimulatedPropertyReasons,
32
+ properties: this.properties,
33
+ error: (reason) => s3BucketResourceError(this.logicalId, reason),
34
+ });
25
35
  }
26
36
  /**
27
- * Record everything about this Resource that is not simulated, refusing only
28
- * what leaves nothing to create.
37
+ * Record everything about this Resource that is not simulated, refusing
38
+ * what leaves nothing to create and what real S3 answers with a 400.
29
39
  */
30
40
  apply() {
31
41
  this.refuseUnusableBucketName();
42
+ this.skipped.assertConstraints();
32
43
  for (const name of Object.keys(this.properties)) {
33
44
  this.applyToProperty(name);
34
45
  }
@@ -52,7 +63,7 @@ export class SimCfnS3BucketPropertyRules {
52
63
  if (simulatedPropertyNames.has(name) || inertPropertyNames.has(name)) {
53
64
  return;
54
65
  }
55
- const unsimulatedReason = unsimulatedPropertyReasons.get(name);
66
+ const unsimulatedReason = this.skipped.reasonFor(name);
56
67
  if (unsimulatedReason !== undefined) {
57
68
  this.ignorer.ignoreProperty(name, `${name} is a real AWS::S3::Bucket property simulated S3 does not ` +
58
69
  `act on: ${unsimulatedReason}`);
@@ -0,0 +1,19 @@
1
+ import type { SimCfnTemplateValueRecord } from "../../../../cloudformation/template/value/sim-cfn-template-value.js";
2
+ import type { SimS3VersioningConfiguration } from "../../../bucket/versioning/sim-s3-bucket-versioning.js";
3
+ /**
4
+ * Reads the `VersioningConfiguration` property of an AWS::S3::Bucket Resource.
5
+ *
6
+ * CloudFormation names the status exactly as PutBucketVersioning does, so the
7
+ * property is handed to the command rather than translated here. The command
8
+ * is also what refuses a status S3 does not take, which keeps a template and
9
+ * an SDK caller answering alike.
10
+ */
11
+ export declare class SimCfnS3BucketVersioningConfiguration {
12
+ private readonly properties;
13
+ private readonly shape;
14
+ constructor(logicalId: string, properties: SimCfnTemplateValueRecord);
15
+ /**
16
+ * The configuration to apply, or nothing when the Resource declares none.
17
+ */
18
+ read(): SimS3VersioningConfiguration | undefined;
19
+ }
@@ -0,0 +1,28 @@
1
+ import { SimCfnValueShape } from "../../../../cloudformation/template/value/sim-cfn-value-shape.js";
2
+ import { s3BucketResourceError } from "../error/sim-cfn-s3-bucket-error.js";
3
+ /**
4
+ * Reads the `VersioningConfiguration` property of an AWS::S3::Bucket Resource.
5
+ *
6
+ * CloudFormation names the status exactly as PutBucketVersioning does, so the
7
+ * property is handed to the command rather than translated here. The command
8
+ * is also what refuses a status S3 does not take, which keeps a template and
9
+ * an SDK caller answering alike.
10
+ */
11
+ export class SimCfnS3BucketVersioningConfiguration {
12
+ properties;
13
+ shape;
14
+ constructor(logicalId, properties) {
15
+ this.properties = properties;
16
+ this.shape = new SimCfnValueShape((reason) => s3BucketResourceError(logicalId, reason));
17
+ }
18
+ /**
19
+ * The configuration to apply, or nothing when the Resource declares none.
20
+ */
21
+ read() {
22
+ const declared = this.properties["VersioningConfiguration"];
23
+ if (declared === undefined) {
24
+ return undefined;
25
+ }
26
+ return this.shape.record(declared, "VersioningConfiguration");
27
+ }
28
+ }
@@ -0,0 +1,24 @@
1
+ import type { SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
2
+ import type { SimS3Bucket } from "../../bucket/sim-s3-bucket.js";
3
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
4
+ /** One S3 request, as the decision to allow it is asked for. */
5
+ export interface SimS3AuthorizedAction {
6
+ readonly iam: SimIamInterServiceAuthZ;
7
+ /** The real IAM action, such as `s3:PutObjectRetention`. */
8
+ readonly action: string;
9
+ /** The Bucket ARN or the Object ARN, whichever the action is granted on. */
10
+ readonly resource: string;
11
+ /** The Bucket whose own policy is part of the decision. */
12
+ readonly bucket: SimS3Bucket;
13
+ readonly options: SimS3RequestOptions | undefined;
14
+ }
15
+ /**
16
+ * Ensure one caller may take one action on one S3 resource.
17
+ *
18
+ * The Bucket's own policy is part of every decision, alongside whatever the
19
+ * caller's identity policies say, and the request's source ARN and Account are
20
+ * supplied as the condition keys a Bucket policy is usually written against.
21
+ * An omitted caller is passed through to sim IAM, so Account root fallback
22
+ * stays owned by IAM.
23
+ */
24
+ export declare function simS3AuthorizeAction(request: SimS3AuthorizedAction): void;
@@ -0,0 +1,30 @@
1
+ import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
2
+ import { simS3BucketResourcePolicies } from "./sim-s3-bucket-resource-policies.js";
3
+ import { simS3ConditionContext } from "./sim-s3-condition-context.js";
4
+ /**
5
+ * Ensure one caller may take one action on one S3 resource.
6
+ *
7
+ * The Bucket's own policy is part of every decision, alongside whatever the
8
+ * caller's identity policies say, and the request's source ARN and Account are
9
+ * supplied as the condition keys a Bucket policy is usually written against.
10
+ * An omitted caller is passed through to sim IAM, so Account root fallback
11
+ * stays owned by IAM.
12
+ */
13
+ export function simS3AuthorizeAction(request) {
14
+ const { iam, action, resource, bucket, options } = request;
15
+ const decision = iam.authorize({
16
+ action,
17
+ resource,
18
+ caller: options?.caller,
19
+ conditionContext: simS3ConditionContext(options),
20
+ resourcePolicies: simS3BucketResourcePolicies(bucket),
21
+ });
22
+ if (decision.isDenied) {
23
+ throw new SimIamAccessDenied({
24
+ principal: decision.caller.principal,
25
+ reason: decision.denialReason,
26
+ action,
27
+ resource,
28
+ });
29
+ }
30
+ }
@@ -37,5 +37,7 @@ export interface SimCompleteMultipartUploadCommandOutput {
37
37
  readonly Bucket?: string;
38
38
  readonly Key?: string;
39
39
  readonly ETag?: string;
40
+ /** The version the assembled Object was written as, if the Bucket keeps them. */
41
+ readonly VersionId?: string | undefined;
40
42
  readonly $metadata: SimResponseMetadata;
41
43
  }
@@ -34,19 +34,21 @@ export class CompleteMultipartUploadCommandHandler {
34
34
  parts: namedParts(command.input.MultipartUpload?.Parts ?? []),
35
35
  completedAt: this.access.now(),
36
36
  });
37
- await bucket.putObject(object);
37
+ const version = await bucket.putObject(object);
38
38
  bucket.getMultipartUploads().discard(UploadId);
39
39
  this.notifications.objectCreated({
40
40
  bucket,
41
41
  object,
42
42
  caller,
43
43
  eventName: "s3:ObjectCreated:CompleteMultipartUpload",
44
+ versionId: version?.versionId,
44
45
  });
45
46
  return {
46
47
  Location: new URL(object.key, uploadedTo(bucket)).href,
47
48
  Bucket: bucket.bucketName,
48
49
  Key: object.key,
49
50
  ETag: simS3QuotedETag(object.etag),
51
+ ...(version !== undefined && { VersionId: version.versionId }),
50
52
  $metadata: {},
51
53
  };
52
54
  }
@@ -25,10 +25,12 @@ export interface SimCopyObjectCommandInput extends SimS3ObjectWriteMetadata {
25
25
  *
26
26
  * The copy's own ETag and write time arrive nested in `CopyObjectResult`
27
27
  * rather than at the top level, because real S3 sends them in the response
28
- * body and the top-level headers describe the request.
28
+ * body and the top-level headers describe the request. `VersionId` is the
29
+ * version the copy was written as, on a Bucket keeping versions.
29
30
  */
30
31
  export interface SimCopyObjectCommandOutput {
31
32
  readonly CopyObjectResult?: SimCopyObjectResult;
33
+ readonly VersionId?: string | undefined;
32
34
  readonly $metadata: SimResponseMetadata;
33
35
  }
34
36
  /**
@@ -57,18 +57,20 @@ export class CopyObjectCommandHandler {
57
57
  const caller = this.destinationAuthorizer.authorize(destination, key, options);
58
58
  const stored = await simS3CopySourceObject(source, from.key);
59
59
  const object = this.objectBuilder.build(command.input, key, stored);
60
- await destination.putObject(object);
60
+ const version = await destination.putObject(object);
61
61
  this.notifications.objectCreated({
62
62
  bucket: destination,
63
63
  object,
64
64
  caller,
65
65
  eventName: "s3:ObjectCreated:Copy",
66
+ versionId: version?.versionId,
66
67
  });
67
68
  return {
68
69
  CopyObjectResult: {
69
70
  ETag: simS3QuotedETag(object.etag),
70
71
  LastModified: object.lastModified,
71
72
  },
73
+ ...(version !== undefined && { VersionId: version.versionId }),
72
74
  $metadata: {},
73
75
  };
74
76
  }
@@ -0,0 +1,50 @@
1
+ import type { SimAwsResolvedCaller } from "../../../aws/caller/sim-aws-caller-resolver.js";
2
+ import type { SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
3
+ import type { SimS3Bucket } from "../../bucket/sim-s3-bucket.js";
4
+ import type { SimS3ObjectNotifier } from "../../notification/sim-s3-object-notifier.js";
5
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
6
+ import type { SimDeleteObjectCommandOutput } from "./delete-object.command.js";
7
+ interface DeleteObjectVersionRemovalProperties {
8
+ readonly notifications: SimS3ObjectNotifier;
9
+ readonly iam: SimIamInterServiceAuthZ;
10
+ }
11
+ /**
12
+ * One request to remove one named version.
13
+ */
14
+ export interface SimS3VersionRemoval {
15
+ readonly bucket: SimS3Bucket;
16
+ readonly key: string;
17
+ readonly versionId: string;
18
+ readonly caller: SimAwsResolvedCaller;
19
+ readonly bypassGovernance: boolean | undefined;
20
+ readonly options: SimS3RequestOptions | undefined;
21
+ }
22
+ /**
23
+ * Removes one named version of a key for good.
24
+ *
25
+ * Separate from the request-level delete because the two answer differently.
26
+ * A delete without a version id writes a marker over the current version and
27
+ * leaves the bytes where they are. This one takes a version away, and only
28
+ * this one can leave a key with nothing under it on a versioned Bucket. It is
29
+ * also the only one Object Lock has anything to say about.
30
+ */
31
+ export declare class DeleteObjectVersionRemoval {
32
+ private readonly notifications;
33
+ private readonly objectLock;
34
+ constructor(properties: DeleteObjectVersionRemovalProperties);
35
+ /**
36
+ * Remove the named version, reporting what went.
37
+ *
38
+ * Real S3 answers a version that was never there the same way it answers one
39
+ * it removed, so a version id nothing matches is reported back rather than
40
+ * raised. Removing a delete marker is reported as such, which is how a
41
+ * caller undoing a delete knows the marker was what went.
42
+ *
43
+ * A version Object Lock is holding is refused with `AccessDenied` before
44
+ * anything is removed. Naming `BypassGovernanceRetention` gets past a
45
+ * governance period, and needs `s3:BypassGovernanceRetention` as well as the
46
+ * `s3:DeleteObject` the request already needed.
47
+ */
48
+ remove(request: SimS3VersionRemoval): Promise<SimDeleteObjectCommandOutput>;
49
+ }
50
+ export {};
@@ -0,0 +1,52 @@
1
+ import { SimS3ObjectLockAuthorizer } from "../object-lock/sim-s3-object-lock-authorizer.js";
2
+ /**
3
+ * Removes one named version of a key for good.
4
+ *
5
+ * Separate from the request-level delete because the two answer differently.
6
+ * A delete without a version id writes a marker over the current version and
7
+ * leaves the bytes where they are. This one takes a version away, and only
8
+ * this one can leave a key with nothing under it on a versioned Bucket. It is
9
+ * also the only one Object Lock has anything to say about.
10
+ */
11
+ export class DeleteObjectVersionRemoval {
12
+ notifications;
13
+ objectLock;
14
+ constructor(properties) {
15
+ this.notifications = properties.notifications;
16
+ this.objectLock = new SimS3ObjectLockAuthorizer({ iam: properties.iam });
17
+ }
18
+ /**
19
+ * Remove the named version, reporting what went.
20
+ *
21
+ * Real S3 answers a version that was never there the same way it answers one
22
+ * it removed, so a version id nothing matches is reported back rather than
23
+ * raised. Removing a delete marker is reported as such, which is how a
24
+ * caller undoing a delete knows the marker was what went.
25
+ *
26
+ * A version Object Lock is holding is refused with `AccessDenied` before
27
+ * anything is removed. Naming `BypassGovernanceRetention` gets past a
28
+ * governance period, and needs `s3:BypassGovernanceRetention` as well as the
29
+ * `s3:DeleteObject` the request already needed.
30
+ */
31
+ async remove(request) {
32
+ const { bucket, key, versionId, caller } = request;
33
+ const bypassed = this.objectLock.authorizeBypass(bucket, key, request.bypassGovernance, request.options);
34
+ const removed = await bucket.deleteObjectVersion(key, versionId, bypassed);
35
+ if (removed !== undefined && !removed.isDeleteMarker) {
36
+ this.notifications.objectRemoved({
37
+ bucket,
38
+ key,
39
+ caller,
40
+ eventName: "s3:ObjectRemoved:Delete",
41
+ // A Bucket keeping no versions raises a record without one, as real S3
42
+ // does, even where the request named the null version to get here.
43
+ ...(bucket.getVersions().keepsVersions && { versionId }),
44
+ });
45
+ }
46
+ return {
47
+ ...(removed?.isDeleteMarker === true && { DeleteMarker: true }),
48
+ VersionId: versionId,
49
+ $metadata: {},
50
+ };
51
+ }
52
+ }
@@ -11,13 +11,30 @@ export interface SimDeleteObjectCommand {
11
11
  export interface SimDeleteObjectCommandInput {
12
12
  readonly Bucket?: string | undefined;
13
13
  readonly Key?: string | undefined;
14
+ /**
15
+ * The version to remove permanently.
16
+ *
17
+ * A request naming none asks for the current version, which a versioned
18
+ * Bucket answers by writing a delete marker rather than removing anything.
19
+ */
20
+ readonly VersionId?: string | undefined;
21
+ /**
22
+ * Whether to get past a governance retention period holding the named
23
+ * version, which the caller also needs `s3:BypassGovernanceRetention` for.
24
+ *
25
+ * A compliance period and a legal hold have no bypass, so this changes
26
+ * nothing for either.
27
+ */
28
+ readonly BypassGovernanceRetention?: boolean | undefined;
14
29
  }
15
30
  /**
16
31
  * Minimal structural sim S3 DeleteObject output.
17
32
  *
18
- * Real S3 reports `DeleteMarker` and `VersionId` on a versioned Bucket. Sim S3
19
- * does not model versioning, so neither appears here.
33
+ * `DeleteMarker` and `VersionId` describe what a versioned Bucket did. A
34
+ * Bucket without versioning carries neither, as real S3 does.
20
35
  */
21
36
  export interface SimDeleteObjectCommandOutput {
37
+ readonly DeleteMarker?: boolean | undefined;
38
+ readonly VersionId?: string | undefined;
22
39
  readonly $metadata: SimResponseMetadata;
23
40
  }
@@ -21,13 +21,19 @@ export declare class DeleteObjectCommandHandler implements CommandHandler<SimDel
21
21
  private readonly authorizer;
22
22
  private readonly background;
23
23
  private readonly notifications;
24
+ private readonly versionRemoval;
24
25
  constructor(properties: DeleteObjectCommandHandlerProperties);
25
26
  /**
26
27
  * Authorize and remove an Object from a Bucket.
27
28
  *
28
- * A missing Bucket is reported, but a missing key is not: real S3 answers a
29
+ * A missing Bucket is reported, but a missing key is not. Real S3 answers a
29
30
  * deletion the same way whether or not the Object was there, so code that
30
31
  * deletes something twice sees the same success both times.
32
+ *
33
+ * A `VersionId` asks for that one version and removes it for good. A request
34
+ * without one asks for the current version, which a versioned Bucket answers
35
+ * by writing a delete marker over it. Object Lock holds a named version and
36
+ * never the marker, since a marker hides an Object without losing it.
31
37
  */
32
38
  handle(command: SimDeleteObjectCommand, options?: SimS3RequestOptions): Promise<SimDeleteObjectCommandOutput>;
33
39
  }
@@ -3,6 +3,8 @@ import { assertDefined } from "../../../../util/type-guard/defined.js";
3
3
  import { SimIamAllowAllAuth, } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
4
4
  import { requireSimS3Bucket } from "../require-sim-s3-bucket.js";
5
5
  import { DeleteObjectAuthorizer } from "./delete-object-authorizer.js";
6
+ import { DeleteObjectVersionRemoval } from "./delete-object-version-removal.js";
7
+ import { simS3NotifyDeleted } from "./sim-s3-notify-deleted.js";
6
8
  /**
7
9
  * Simulated S3 DeleteObjectCommand handler.
8
10
  *
@@ -13,40 +15,50 @@ export class DeleteObjectCommandHandler {
13
15
  authorizer;
14
16
  background;
15
17
  notifications;
18
+ versionRemoval;
16
19
  constructor(properties) {
17
20
  const { buckets, iam = new SimIamAllowAllAuth(), background = new BackgroundTasks(), } = properties;
18
21
  this.buckets = buckets;
19
22
  this.authorizer = new DeleteObjectAuthorizer({ iam });
20
23
  this.background = background;
21
24
  this.notifications = properties.notifications;
25
+ this.versionRemoval = new DeleteObjectVersionRemoval({
26
+ notifications: properties.notifications,
27
+ iam,
28
+ });
22
29
  }
23
30
  /**
24
31
  * Authorize and remove an Object from a Bucket.
25
32
  *
26
- * A missing Bucket is reported, but a missing key is not: real S3 answers a
33
+ * A missing Bucket is reported, but a missing key is not. Real S3 answers a
27
34
  * deletion the same way whether or not the Object was there, so code that
28
35
  * deletes something twice sees the same success both times.
36
+ *
37
+ * A `VersionId` asks for that one version and removes it for good. A request
38
+ * without one asks for the current version, which a versioned Bucket answers
39
+ * by writing a delete marker over it. Object Lock holds a named version and
40
+ * never the marker, since a marker hides an Object without losing it.
29
41
  */
30
42
  async handle(command, options) {
31
- assertDefined(command.input.Bucket, "DeleteObjectCommand.input.Bucket");
32
- assertDefined(command.input.Key, "DeleteObjectCommand.input.Key");
33
- const bucketName = command.input.Bucket;
34
- const bucket = requireSimS3Bucket(this.buckets, bucketName);
43
+ const { Bucket, Key, VersionId, BypassGovernanceRetention } = command.input;
44
+ assertDefined(Bucket, "DeleteObjectCommand.input.Bucket");
45
+ assertDefined(Key, "DeleteObjectCommand.input.Key");
46
+ const bucket = requireSimS3Bucket(this.buckets, Bucket);
35
47
  await this.background.sequence();
36
- const caller = this.authorizer.authorize(bucket, command.input.Key, options);
37
- const removed = await bucket.deleteObject(command.input.Key);
38
- // A deletion that removed nothing is not an event: real S3 raises
39
- // ObjectRemoved for an Object that was deleted, not for a request to
40
- // delete one.
41
- if (removed) {
42
- this.notifications.objectRemoved({
48
+ const caller = this.authorizer.authorize(bucket, Key, options);
49
+ if (VersionId !== undefined) {
50
+ return await this.versionRemoval.remove({
43
51
  bucket,
44
- key: command.input.Key,
52
+ key: Key,
53
+ versionId: VersionId,
45
54
  caller,
55
+ bypassGovernance: BypassGovernanceRetention,
56
+ options,
46
57
  });
47
58
  }
48
- return {
49
- $metadata: {},
50
- };
59
+ const deletion = await bucket.deleteObject(Key);
60
+ const notifications = this.notifications;
61
+ simS3NotifyDeleted({ notifications, bucket, key: Key, caller, deletion });
62
+ return { ...deletion.reported, $metadata: {} };
51
63
  }
52
64
  }
@@ -0,0 +1,24 @@
1
+ import type { SimAwsResolvedCaller } from "../../../aws/caller/sim-aws-caller-resolver.js";
2
+ import type { SimS3Bucket } from "../../bucket/sim-s3-bucket.js";
3
+ import type { SimS3ObjectDeletion } from "../../bucket/sim-s3-object-deletion.js";
4
+ import type { SimS3ObjectNotifier } from "../../notification/sim-s3-object-notifier.js";
5
+ interface SimS3NotifyDeletedProperties {
6
+ readonly notifications: SimS3ObjectNotifier;
7
+ readonly bucket: SimS3Bucket;
8
+ readonly key: string;
9
+ readonly caller: SimAwsResolvedCaller;
10
+ readonly deletion: SimS3ObjectDeletion;
11
+ }
12
+ /**
13
+ * Raise the event a delete earned, if it earned one.
14
+ *
15
+ * Three outcomes and three different events, which is why every delete path
16
+ * comes through here rather than deciding for itself. A versioned Bucket wrote
17
+ * a marker, so the event is `s3:ObjectRemoved:DeleteMarkerCreated` and carries
18
+ * the marker's version id. A Bucket without versioning lost the Object, so it
19
+ * is `s3:ObjectRemoved:Delete`. A delete that removed nothing raises neither,
20
+ * because real S3 raises ObjectRemoved for an Object that was deleted rather
21
+ * than for a request to delete one.
22
+ */
23
+ export declare function simS3NotifyDeleted(properties: SimS3NotifyDeletedProperties): void;
24
+ export {};
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Raise the event a delete earned, if it earned one.
3
+ *
4
+ * Three outcomes and three different events, which is why every delete path
5
+ * comes through here rather than deciding for itself. A versioned Bucket wrote
6
+ * a marker, so the event is `s3:ObjectRemoved:DeleteMarkerCreated` and carries
7
+ * the marker's version id. A Bucket without versioning lost the Object, so it
8
+ * is `s3:ObjectRemoved:Delete`. A delete that removed nothing raises neither,
9
+ * because real S3 raises ObjectRemoved for an Object that was deleted rather
10
+ * than for a request to delete one.
11
+ */
12
+ export function simS3NotifyDeleted(properties) {
13
+ const { notifications, bucket, key, caller, deletion } = properties;
14
+ if (deletion.deleteMarker !== undefined) {
15
+ notifications.objectRemoved({
16
+ bucket,
17
+ key,
18
+ caller,
19
+ eventName: "s3:ObjectRemoved:DeleteMarkerCreated",
20
+ versionId: deletion.deleteMarker.versionId,
21
+ });
22
+ return;
23
+ }
24
+ if (deletion.removedObject) {
25
+ notifications.objectRemoved({
26
+ bucket,
27
+ key,
28
+ caller,
29
+ eventName: "s3:ObjectRemoved:Delete",
30
+ });
31
+ }
32
+ }
@@ -1,11 +1,15 @@
1
+ import type { SimS3ObjectVersion } from "../../bucket/versioning/sim-s3-object-version.js";
1
2
  /**
2
3
  * What one key of a DeleteObjects request came to.
3
4
  *
4
5
  * A batch deletion carries on past a key it could not remove, so the failure
5
- * travels with the key it belongs to rather than being raised.
6
+ * travels with the key it belongs to rather than being raised. So does the
7
+ * delete marker, which a versioned Bucket reports per key alongside the id it
8
+ * was written under.
6
9
  */
7
10
  export declare class DeleteObjectAttempt {
8
11
  readonly key: string;
9
12
  readonly error: unknown;
10
- constructor(key: string, error?: unknown);
13
+ readonly deleteMarker: SimS3ObjectVersion | undefined;
14
+ constructor(key: string, error?: unknown, deleteMarker?: SimS3ObjectVersion);
11
15
  }