@kensio/yulin 1.21.2 → 1.21.4

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 (634) hide show
  1. package/dist/service/athena/engine/sim-athena-column-types.d.ts +2 -0
  2. package/dist/service/athena/engine/sim-athena-column-types.js +4 -0
  3. package/dist/service/athena/engine/sim-athena-delimited-format.d.ts +7 -0
  4. package/dist/service/athena/engine/sim-athena-delimited-format.js +51 -0
  5. package/dist/service/athena/engine/sim-athena-engine-result.js +5 -0
  6. package/dist/service/athena/engine/sim-athena-engine-run.d.ts +22 -2
  7. package/dist/service/athena/engine/sim-athena-engine-run.js +21 -31
  8. package/dist/service/athena/engine/sim-athena-loaded-tables.d.ts +10 -0
  9. package/dist/service/athena/engine/sim-athena-loaded-tables.js +35 -0
  10. package/dist/service/athena/engine/sim-athena-parquet-module.d.ts +25 -0
  11. package/dist/service/athena/engine/sim-athena-parquet-module.js +39 -0
  12. package/dist/service/athena/engine/sim-athena-parquet-records.d.ts +13 -0
  13. package/dist/service/athena/engine/sim-athena-parquet-records.js +57 -0
  14. package/dist/service/athena/engine/sim-athena-query-engine.d.ts +23 -5
  15. package/dist/service/athena/engine/sim-athena-query-engine.js +31 -10
  16. package/dist/service/athena/engine/sim-athena-record-reader.d.ts +12 -6
  17. package/dist/service/athena/engine/sim-athena-record-reader.js +28 -53
  18. package/dist/service/athena/engine/sim-athena-sql-translation.d.ts +15 -9
  19. package/dist/service/athena/engine/sim-athena-sql-translation.js +25 -13
  20. package/dist/service/athena/engine/sim-athena-sqlite-values.d.ts +5 -0
  21. package/dist/service/athena/engine/sim-athena-sqlite-values.js +24 -1
  22. package/dist/service/athena/engine/sim-athena-table-objects.d.ts +7 -2
  23. package/dist/service/athena/engine/sim-athena-table-objects.js +8 -4
  24. package/dist/service/athena/engine/sim-athena-table-rows.js +4 -3
  25. package/dist/service/athena/engine/sim-athena-turn-down.d.ts +26 -0
  26. package/dist/service/athena/engine/sim-athena-turn-down.js +43 -0
  27. package/dist/service/athena/execution/sim-athena-query-completion.d.ts +3 -1
  28. package/dist/service/athena/execution/sim-athena-query-completion.js +7 -1
  29. package/dist/service/athena/index.d.ts +1 -1
  30. package/dist/service/athena/index.js +1 -1
  31. package/dist/service/athena/result/sim-athena-query-answer.d.ts +12 -0
  32. package/dist/service/athena/result/sim-athena-query-answer.js +26 -4
  33. package/dist/service/athena/sim-athena-answered-query.fixture.d.ts +2 -0
  34. package/dist/service/athena/sim-athena-answered-query.fixture.js +1 -0
  35. package/dist/service/athena/sim-athena-engine.fixture.d.ts +20 -0
  36. package/dist/service/athena/sim-athena-engine.fixture.js +34 -0
  37. package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.d.ts +23 -0
  38. package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.js +37 -0
  39. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.d.ts +2 -0
  40. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.js +1 -0
  41. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.d.ts +7 -0
  42. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.js +13 -1
  43. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.d.ts +6 -0
  44. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.js +7 -1
  45. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.d.ts +50 -0
  46. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.js +71 -0
  47. package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.js +6 -1
  48. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.d.ts +5 -0
  49. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.js +7 -0
  50. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.d.ts +9 -0
  51. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.js +12 -0
  52. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.d.ts +42 -0
  53. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.js +69 -0
  54. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.d.ts +62 -0
  55. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.js +89 -0
  56. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.d.ts +31 -0
  57. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.js +59 -0
  58. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.d.ts +21 -0
  59. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.js +19 -0
  60. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.d.ts +17 -0
  61. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.js +18 -0
  62. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.d.ts +18 -0
  63. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.js +13 -0
  64. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.d.ts +45 -0
  65. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.js +52 -0
  66. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.d.ts +12 -0
  67. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.js +21 -0
  68. package/dist/service/cloudformation/changeset/sim-cfn-change-set.d.ts +54 -0
  69. package/dist/service/cloudformation/changeset/sim-cfn-change-set.js +49 -0
  70. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.d.ts +35 -0
  71. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.js +1 -0
  72. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.d.ts +53 -0
  73. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.js +83 -0
  74. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.d.ts +32 -0
  75. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.js +1 -0
  76. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.d.ts +38 -0
  77. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.js +80 -0
  78. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +12 -12
  79. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.d.ts +22 -0
  80. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.js +1 -0
  81. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.d.ts +27 -0
  82. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.js +35 -0
  83. package/dist/service/cloudformation/command/delete-stack/delete-stack.command.d.ts +6 -0
  84. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.d.ts +11 -0
  85. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.js +15 -1
  86. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.d.ts +48 -0
  87. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.js +1 -0
  88. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.d.ts +23 -0
  89. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.js +52 -0
  90. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.d.ts +3 -0
  91. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.js +8 -4
  92. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.d.ts +18 -6
  93. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.js +22 -7
  94. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-stack-describer.js +1 -1
  95. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.d.ts +25 -0
  96. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.js +1 -0
  97. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.d.ts +31 -0
  98. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.js +37 -0
  99. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.d.ts +36 -0
  100. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.js +1 -0
  101. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.d.ts +26 -0
  102. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.js +39 -0
  103. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.d.ts +31 -0
  104. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.js +52 -0
  105. package/dist/service/cloudformation/command/update-stack/update-stack-template.d.ts +22 -0
  106. package/dist/service/cloudformation/command/update-stack/update-stack-template.js +34 -0
  107. package/dist/service/cloudformation/command/update-stack/update-stack.command.d.ts +17 -1
  108. package/dist/service/cloudformation/command/update-stack/update-stack.handler.js +8 -15
  109. package/dist/service/cloudformation/error/sim-cloudformation.error.d.ts +21 -0
  110. package/dist/service/cloudformation/error/sim-cloudformation.error.js +25 -0
  111. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.d.ts +7 -0
  112. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.js +3 -1
  113. package/dist/service/cloudformation/parameters/sim-cfn-parameters.d.ts +9 -0
  114. package/dist/service/cloudformation/parameters/sim-cfn-parameters.js +12 -0
  115. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.d.ts +4 -0
  116. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.js +10 -0
  117. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.d.ts +44 -0
  118. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.js +33 -0
  119. package/dist/service/cloudformation/resource/factory/sim-cfn-resource-factory.type.d.ts +9 -0
  120. package/dist/service/cloudformation/resource/sim-cfn-resource-record.d.ts +15 -0
  121. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +21 -1
  122. package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts +9 -7
  123. package/dist/service/cloudformation/resource/sim-cfn-resource.js +11 -11
  124. package/dist/service/cloudformation/resource/sim-cfn-resource.type.d.ts +19 -0
  125. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.d.ts +3 -3
  126. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.js +3 -3
  127. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.d.ts +4 -0
  128. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.js +9 -0
  129. package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.d.ts +26 -0
  130. package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.js +55 -0
  131. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.d.ts +37 -0
  132. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.js +77 -0
  133. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.d.ts +51 -0
  134. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.js +10 -0
  135. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.d.ts +11 -0
  136. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.js +34 -0
  137. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.d.ts +21 -0
  138. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.js +31 -0
  139. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.d.ts +14 -0
  140. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.js +1 -0
  141. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.d.ts +26 -0
  142. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.js +58 -0
  143. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.d.ts +18 -0
  144. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.js +89 -0
  145. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.d.ts +15 -0
  146. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.js +65 -0
  147. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.d.ts +13 -0
  148. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.js +60 -0
  149. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.d.ts +13 -0
  150. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.js +50 -0
  151. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.d.ts +13 -0
  152. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.js +30 -0
  153. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.d.ts +26 -0
  154. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.js +44 -0
  155. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.d.ts +15 -0
  156. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.js +59 -0
  157. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.d.ts +11 -0
  158. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.js +43 -0
  159. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.d.ts +15 -0
  160. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.js +67 -0
  161. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.d.ts +26 -0
  162. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.js +61 -0
  163. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.d.ts +18 -0
  164. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.js +59 -0
  165. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api-template.factory.js +1 -1
  166. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.d.ts +4 -0
  167. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.js +12 -5
  168. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api-template.factory.js +1 -1
  169. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api.js +7 -3
  170. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-api-event.js +7 -3
  171. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.d.ts +26 -0
  172. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.js +88 -0
  173. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.d.ts +12 -0
  174. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.js +1 -0
  175. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-function-events.js +8 -5
  176. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-event.js +23 -1
  177. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.d.ts +9 -2
  178. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.js +5 -3
  179. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.d.ts +6 -1
  180. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.js +7 -1
  181. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.d.ts +19 -0
  182. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.js +69 -0
  183. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.d.ts +5 -0
  184. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.js +3 -1
  185. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.d.ts +8 -0
  186. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.js +8 -0
  187. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-url.js +1 -4
  188. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.d.ts +6 -4
  189. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.js +2 -4
  190. package/dist/service/cloudformation/sam/sim-cfn-sam-error.d.ts +31 -0
  191. package/dist/service/cloudformation/sam/sim-cfn-sam-error.js +17 -0
  192. package/dist/service/cloudformation/sam/sim-cfn-sam-expansion.js +11 -6
  193. package/dist/service/cloudformation/sdk/sim-cloudformation-sdk-command-router.js +20 -0
  194. package/dist/service/cloudformation/serve/sim-cloudformation-api.d.ts +4 -3
  195. package/dist/service/cloudformation/serve/sim-cloudformation-api.js +6 -3
  196. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.d.ts +10 -0
  197. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.js +94 -0
  198. package/dist/service/cloudformation/sim-cloudformation.d.ts +31 -0
  199. package/dist/service/cloudformation/sim-cloudformation.js +56 -9
  200. package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js +1 -0
  201. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.d.ts +20 -0
  202. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.js +23 -0
  203. package/dist/service/cloudformation/stack/sim-cfn-deployed-stack.type.d.ts +6 -0
  204. package/dist/service/cloudformation/stack/sim-cfn-stack-id.d.ts +30 -0
  205. package/dist/service/cloudformation/stack/sim-cfn-stack-id.js +24 -0
  206. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +51 -3
  207. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +84 -6
  208. package/dist/service/cloudformation/stack/sim-cfn-stack.d.ts +28 -16
  209. package/dist/service/cloudformation/stack/sim-cfn-stack.js +59 -32
  210. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +7 -1
  211. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.d.ts +7 -1
  212. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.js +3 -1
  213. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.d.ts +3 -0
  214. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.js +3 -0
  215. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.d.ts +3 -0
  216. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.js +2 -1
  217. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.d.ts +18 -0
  218. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.js +30 -0
  219. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.d.ts +9 -0
  220. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.js +14 -0
  221. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.d.ts +25 -14
  222. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.js +41 -24
  223. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.d.ts +16 -1
  224. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.js +27 -0
  225. package/dist/service/cloudformation/stack/update/sim-cfn-stack-updater.js +7 -1
  226. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.d.ts +12 -3
  227. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.js +29 -3
  228. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.d.ts +28 -0
  229. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.js +39 -0
  230. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts +25 -1
  231. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js +43 -11
  232. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.d.ts +7 -0
  233. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.js +29 -3
  234. package/dist/service/cloudformation/template/sim-cfn-command-template.d.ts +40 -0
  235. package/dist/service/cloudformation/template/sim-cfn-command-template.js +45 -0
  236. package/dist/service/cloudformation/template/sim-cfn-template.d.ts +7 -0
  237. package/dist/service/cloudformation/template/sim-cfn-template.js +15 -1
  238. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +2 -0
  239. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +49 -0
  240. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +1 -0
  241. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +1 -0
  242. package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +1 -1
  243. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.d.ts +5 -0
  244. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.js +17 -0
  245. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +5 -5
  246. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +24 -8
  247. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.d.ts +5 -0
  248. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.js +15 -0
  249. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.d.ts +24 -0
  250. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.js +38 -0
  251. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.d.ts +11 -8
  252. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.js +20 -8
  253. package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +2 -0
  254. package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
  255. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +14 -4
  256. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +16 -4
  257. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.d.ts +17 -0
  258. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.js +39 -0
  259. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.d.ts +28 -0
  260. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.js +50 -0
  261. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +12 -5
  262. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts +3 -3
  263. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +3 -4
  264. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.d.ts +5 -16
  265. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.js +4 -21
  266. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.d.ts +15 -0
  267. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.js +18 -1
  268. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.d.ts +13 -0
  269. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.js +15 -0
  270. package/dist/service/dynamodb/table/sim-dynamodb-index-update.js +1 -2
  271. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +2 -0
  272. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +5 -3
  273. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.d.ts +21 -0
  274. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.js +37 -0
  275. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.js +6 -0
  276. package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
  277. package/dist/service/lambda/command/create-function/create-function.handler.js +5 -1
  278. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.command.d.ts +2 -3
  279. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.handler.js +1 -0
  280. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +6 -0
  281. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +10 -0
  282. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +2 -6
  283. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +1 -0
  284. package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
  285. package/dist/service/lambda/command/function-url/function-url-cors-constraints.d.ts +25 -0
  286. package/dist/service/lambda/command/function-url/function-url-cors-constraints.js +49 -0
  287. package/dist/service/lambda/command/function-url/function-url-cors-input.d.ts +25 -0
  288. package/dist/service/lambda/command/function-url/function-url-cors-input.js +57 -0
  289. package/dist/service/lambda/command/function-url/function-url-input.d.ts +7 -0
  290. package/dist/service/lambda/command/function-url/function-url-input.js +9 -0
  291. package/dist/service/lambda/command/invoke/async/sim-lambda-async-invocation.js +10 -13
  292. package/dist/service/lambda/command/invoke/async/sim-lambda-async-outcome.js +2 -0
  293. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.d.ts +13 -0
  294. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.js +12 -0
  295. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.command.d.ts +2 -0
  296. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.handler.js +1 -0
  297. package/dist/service/lambda/destination/deliver/sim-lambda-destination-bus.js +1 -1
  298. package/dist/service/lambda/destination/deliver/sim-lambda-destination-function.js +8 -12
  299. package/dist/service/lambda/destination/deliver/sim-lambda-destination-queue.js +4 -3
  300. package/dist/service/lambda/destination/deliver/sim-lambda-destination-send.d.ts +2 -0
  301. package/dist/service/lambda/destination/deliver/sim-lambda-destination-topic.js +4 -3
  302. package/dist/service/lambda/destination/sim-aws-lambda-destinations.d.ts +4 -6
  303. package/dist/service/lambda/destination/sim-aws-lambda-destinations.js +6 -6
  304. package/dist/service/lambda/destination/sim-lambda-destination-targets.d.ts +3 -0
  305. package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +4 -9
  306. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +4 -9
  307. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +22 -3
  308. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +39 -9
  309. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +7 -6
  310. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +14 -12
  311. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +9 -15
  312. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +9 -16
  313. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +10 -6
  314. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +22 -12
  315. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.d.ts +23 -0
  316. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.js +18 -0
  317. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +12 -13
  318. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +24 -17
  319. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.d.ts +64 -0
  320. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.js +86 -0
  321. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +6 -0
  322. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +8 -1
  323. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +6 -0
  324. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +7 -0
  325. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +11 -1
  326. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +13 -0
  327. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.d.ts +39 -0
  328. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.js +46 -0
  329. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.d.ts +56 -0
  330. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.js +110 -0
  331. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.d.ts +5 -0
  332. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.js +7 -1
  333. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.d.ts +6 -0
  334. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.js +6 -0
  335. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +6 -1
  336. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +8 -6
  337. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +10 -8
  338. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +18 -1
  339. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +8 -2
  340. package/dist/service/lambda/function/code/sim-lambda-executable-code.js +2 -1
  341. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +2 -11
  342. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +13 -39
  343. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +7 -0
  344. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +13 -7
  345. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.d.ts +23 -0
  346. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.js +42 -0
  347. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.d.ts +12 -4
  348. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.js +15 -5
  349. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.d.ts +7 -0
  350. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.js +6 -2
  351. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.d.ts +26 -0
  352. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.js +84 -0
  353. package/dist/service/lambda/function/invoke/sim-lambda-invocation.d.ts +44 -0
  354. package/dist/service/lambda/function/invoke/sim-lambda-invocation.js +44 -0
  355. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.d.ts +6 -0
  356. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.js +1 -2
  357. package/dist/service/lambda/function/invoke/sim-lambda-process-output.d.ts +6 -1
  358. package/dist/service/lambda/function/invoke/sim-lambda-process-output.js +19 -6
  359. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.d.ts +15 -0
  360. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.js +18 -0
  361. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.d.ts +12 -0
  362. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.js +28 -0
  363. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.d.ts +46 -0
  364. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.js +104 -0
  365. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.d.ts +24 -0
  366. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.js +27 -0
  367. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.d.ts +43 -0
  368. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.js +112 -0
  369. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.d.ts +57 -0
  370. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.js +79 -0
  371. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.d.ts +10 -0
  372. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.js +15 -0
  373. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.d.ts +11 -0
  374. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.js +24 -0
  375. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.d.ts +50 -0
  376. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.js +43 -0
  377. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +17 -0
  378. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +12 -1
  379. package/dist/service/lambda/function/logging/sim-lambda-output.d.ts +56 -0
  380. package/dist/service/lambda/function/logging/sim-lambda-output.js +62 -0
  381. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.d.ts +8 -0
  382. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.js +27 -1
  383. package/dist/service/lambda/function/sim-lambda-function.d.ts +1 -1
  384. package/dist/service/lambda/function/sim-lambda-function.js +11 -9
  385. package/dist/service/lambda/function/sim-lambda-function.type.d.ts +15 -0
  386. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.d.ts +16 -0
  387. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.d.ts +22 -0
  388. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.js +17 -0
  389. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.js +1 -0
  390. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.d.ts +2 -0
  391. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.js +2 -1
  392. package/dist/service/lambda/function/url/sim-lambda-function-url-store.d.ts +2 -0
  393. package/dist/service/lambda/function/url/sim-lambda-function-url.d.ts +16 -0
  394. package/dist/service/lambda/function/url/sim-lambda-function-url.js +16 -1
  395. package/dist/service/lambda/index.d.ts +1 -0
  396. package/dist/service/lambda/index.js +1 -0
  397. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.d.ts +50 -0
  398. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.js +96 -0
  399. package/dist/service/lambda/serve/sim-lambda-controller.d.ts +14 -0
  400. package/dist/service/lambda/serve/sim-lambda-controller.js +27 -0
  401. package/dist/service/lambda/sim-lambda-commands.d.ts +10 -0
  402. package/dist/service/lambda/sim-lambda-commands.js +11 -0
  403. package/dist/service/lambda/sim-lambda.d.ts +12 -0
  404. package/dist/service/lambda/sim-lambda.js +13 -0
  405. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.d.ts +67 -0
  406. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.js +69 -0
  407. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +4 -31
  408. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +7 -6
  409. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +5 -0
  410. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +8 -4
  411. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +1 -14
  412. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +16 -8
  413. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.d.ts +41 -0
  414. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.js +1 -0
  415. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +14 -0
  416. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +32 -2
  417. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.d.ts +33 -0
  418. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.js +48 -0
  419. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.d.ts +16 -0
  420. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.js +44 -0
  421. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +8 -0
  422. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +27 -0
  423. package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
  424. package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +5 -0
  425. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +0 -3
  426. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +3 -0
  427. package/dist/service/s3/bucket/sim-s3-bucket-access.js +6 -2
  428. package/dist/service/s3/bucket/sim-s3-bucket-configuration.d.ts +84 -0
  429. package/dist/service/s3/bucket/sim-s3-bucket-configuration.js +115 -0
  430. package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +10 -0
  431. package/dist/service/s3/bucket/sim-s3-bucket-objects.js +18 -0
  432. package/dist/service/s3/bucket/sim-s3-bucket-properties.d.ts +41 -0
  433. package/dist/service/s3/bucket/sim-s3-bucket-properties.js +1 -0
  434. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +11 -83
  435. package/dist/service/s3/bucket/sim-s3-bucket.js +14 -83
  436. package/dist/service/s3/bucket/sim-s3-public-read.fixture.d.ts +6 -0
  437. package/dist/service/s3/bucket/sim-s3-public-read.fixture.js +20 -6
  438. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.d.ts +58 -0
  439. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.js +73 -0
  440. package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +19 -1
  441. package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +20 -0
  442. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.d.ts +21 -0
  443. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.js +44 -0
  444. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +6 -0
  445. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +5 -4
  446. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +12 -5
  447. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.d.ts +21 -0
  448. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.js +30 -0
  449. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +1 -0
  450. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +14 -1
  451. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +41 -16
  452. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +3 -5
  453. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +7 -10
  454. package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +6 -1
  455. package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +5 -0
  456. package/dist/service/s3/command/copy-object/copy-object-builder.d.ts +10 -1
  457. package/dist/service/s3/command/copy-object/copy-object-builder.js +17 -1
  458. package/dist/service/s3/command/copy-object/copy-object.command.d.ts +11 -1
  459. package/dist/service/s3/command/copy-object/copy-object.handler.js +2 -1
  460. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.command.d.ts +5 -1
  461. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.handler.js +7 -0
  462. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.d.ts +19 -0
  463. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.js +1 -0
  464. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.d.ts +30 -0
  465. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.js +38 -0
  466. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.d.ts +23 -0
  467. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.js +1 -0
  468. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.d.ts +22 -0
  469. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.js +42 -0
  470. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.d.ts +29 -0
  471. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.js +49 -0
  472. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.d.ts +22 -0
  473. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.js +30 -0
  474. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.d.ts +24 -0
  475. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.js +1 -0
  476. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.d.ts +31 -0
  477. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.js +39 -0
  478. package/dist/service/s3/command/get-object/get-object-authorizer.d.ts +11 -8
  479. package/dist/service/s3/command/get-object/get-object-authorizer.js +26 -34
  480. package/dist/service/s3/command/get-object/get-object-loader.d.ts +7 -3
  481. package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
  482. package/dist/service/s3/command/get-object/get-object.command.d.ts +2 -1
  483. package/dist/service/s3/command/get-object/get-object.handler.d.ts +4 -0
  484. package/dist/service/s3/command/get-object/get-object.handler.js +13 -7
  485. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.d.ts +29 -0
  486. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.js +1 -0
  487. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.d.ts +21 -0
  488. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.js +33 -0
  489. package/dist/service/s3/command/head-object/head-object-loader.js +2 -0
  490. package/dist/service/s3/command/head-object/head-object.command.d.ts +2 -1
  491. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +18 -0
  492. package/dist/service/s3/command/list-multipart-uploads/list-multipart-uploads.handler.js +1 -2
  493. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +1 -2
  494. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +5 -0
  495. package/dist/service/s3/command/list-objects/list-objects-page-builder.js +11 -6
  496. package/dist/service/s3/command/list-objects/list-objects.command.d.ts +5 -1
  497. package/dist/service/s3/command/list-objects/list-objects.handler.js +5 -0
  498. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +6 -0
  499. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +11 -5
  500. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +5 -1
  501. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +5 -0
  502. package/dist/service/s3/command/list-parts/list-parts.handler.js +3 -3
  503. package/dist/service/s3/command/multipart/sim-s3-multipart-access.js +1 -1
  504. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.d.ts +21 -0
  505. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.js +1 -0
  506. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.d.ts +31 -0
  507. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.js +41 -0
  508. package/dist/service/s3/command/put-object/put-object-builder.d.ts +5 -1
  509. package/dist/service/s3/command/put-object/put-object-builder.js +10 -1
  510. package/dist/service/s3/command/put-object/put-object.command.d.ts +5 -1
  511. package/dist/service/s3/command/put-object/put-object.handler.js +2 -1
  512. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.d.ts +37 -0
  513. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.js +1 -0
  514. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.d.ts +22 -0
  515. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.js +46 -0
  516. package/dist/service/s3/command/sim-s3-command.types.d.ts +6 -0
  517. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.d.ts +61 -0
  518. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.js +49 -0
  519. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.d.ts +30 -0
  520. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.js +27 -0
  521. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.d.ts +26 -0
  522. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.js +34 -0
  523. package/dist/service/s3/error/sim-s3-upload.error.d.ts +41 -0
  524. package/dist/service/s3/error/sim-s3-upload.error.js +47 -0
  525. package/dist/service/s3/error/sim-s3.error.d.ts +22 -34
  526. package/dist/service/s3/error/sim-s3.error.js +26 -40
  527. package/dist/service/s3/mount/sim-s3-mount.type.d.ts +10 -0
  528. package/dist/service/s3/notification/event/sim-s3-event-records.d.ts +3 -2
  529. package/dist/service/s3/notification/event/sim-s3-event-records.js +5 -3
  530. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +33 -8
  531. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +23 -9
  532. package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +5 -1
  533. package/dist/service/s3/notification/sim-s3-object-notifier.js +6 -0
  534. package/dist/service/s3/object/s3-key-encoding.d.ts +12 -0
  535. package/dist/service/s3/object/s3-key-encoding.js +14 -0
  536. package/dist/service/s3/object/s3-listing-encoding.d.ts +42 -0
  537. package/dist/service/s3/object/s3-listing-encoding.js +75 -0
  538. package/dist/service/s3/object/s3-object-response-headers.d.ts +40 -0
  539. package/dist/service/s3/object/s3-object-response-headers.js +49 -2
  540. package/dist/service/s3/object/s3-object-storage-report.d.ts +19 -0
  541. package/dist/service/s3/object/s3-object-storage-report.js +18 -0
  542. package/dist/service/s3/object/s3-object-summary.d.ts +2 -10
  543. package/dist/service/s3/object/s3-object-summary.js +1 -10
  544. package/dist/service/s3/object/s3-object-tags.d.ts +61 -0
  545. package/dist/service/s3/object/s3-object-tags.js +77 -0
  546. package/dist/service/s3/object/s3-object.d.ts +49 -0
  547. package/dist/service/s3/object/s3-object.js +52 -1
  548. package/dist/service/s3/object/s3-server-side-encryption.d.ts +30 -0
  549. package/dist/service/s3/object/s3-server-side-encryption.js +42 -0
  550. package/dist/service/s3/object/s3-storage-class.d.ts +45 -0
  551. package/dist/service/s3/object/s3-storage-class.js +67 -0
  552. package/dist/service/s3/object/s3-write-metadata.d.ts +17 -3
  553. package/dist/service/s3/object/s3-write-metadata.js +43 -0
  554. package/dist/service/s3/object/s3-write-storage.d.ts +27 -0
  555. package/dist/service/s3/object/s3-write-storage.js +21 -0
  556. package/dist/service/s3/object/s3-write-tagging.d.ts +24 -0
  557. package/dist/service/s3/object/s3-write-tagging.js +19 -0
  558. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +12 -0
  559. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +2 -0
  560. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.d.ts +9 -0
  561. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.js +23 -0
  562. package/dist/service/s3/serve/api/sim-s3-api-bucket-routes.js +22 -0
  563. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.d.ts +4 -0
  564. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.js +10 -0
  565. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.d.ts +7 -0
  566. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.js +30 -0
  567. package/dist/service/s3/serve/api/sim-s3-api-head-output.d.ts +4 -2
  568. package/dist/service/s3/serve/api/sim-s3-api-head-output.js +8 -2
  569. package/dist/service/s3/serve/api/sim-s3-api-input.d.ts +0 -6
  570. package/dist/service/s3/serve/api/sim-s3-api-input.js +2 -13
  571. package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts +5 -0
  572. package/dist/service/s3/serve/api/sim-s3-api-listing.js +5 -0
  573. package/dist/service/s3/serve/api/sim-s3-api-object-input.d.ts +16 -0
  574. package/dist/service/s3/serve/api/sim-s3-api-object-input.js +34 -7
  575. package/dist/service/s3/serve/api/sim-s3-api-object-output.d.ts +18 -1
  576. package/dist/service/s3/serve/api/sim-s3-api-object-output.js +21 -2
  577. package/dist/service/s3/serve/api/sim-s3-api-object-routes.js +22 -1
  578. package/dist/service/s3/serve/api/sim-s3-api-output.d.ts +5 -1
  579. package/dist/service/s3/serve/api/sim-s3-api-output.js +16 -5
  580. package/dist/service/s3/serve/api/sim-s3-api-request.d.ts +6 -5
  581. package/dist/service/s3/serve/api/sim-s3-api-request.js +55 -11
  582. package/dist/service/s3/serve/api/sim-s3-api-routes.js +2 -2
  583. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.d.ts +9 -0
  584. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.js +14 -0
  585. package/dist/service/s3/serve/api/sim-s3-api.d.ts +7 -1
  586. package/dist/service/s3/serve/api/sim-s3-api.js +7 -1
  587. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +1 -5
  588. package/dist/service/s3/serve/sim-s3-rest-controller.js +3 -17
  589. package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts +3 -0
  590. package/dist/service/s3/serve/sim-s3-rest-object-reader.js +8 -1
  591. package/dist/service/s3/serve/sim-s3-rest-upload.d.ts +20 -0
  592. package/dist/service/s3/serve/sim-s3-rest-upload.js +30 -0
  593. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +1 -0
  594. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +2 -0
  595. package/dist/service/s3/serve/website/sim-s3-website-object.js +3 -0
  596. package/dist/service/s3/sim-s3-commands.d.ts +4 -0
  597. package/dist/service/s3/sim-s3-commands.js +6 -0
  598. package/dist/service/s3/sim-s3-operations.d.ts +11 -4
  599. package/dist/service/s3/sim-s3-operations.js +17 -4
  600. package/dist/service/s3/sim-s3-tagging-operations.d.ts +21 -0
  601. package/dist/service/s3/sim-s3-tagging-operations.js +25 -0
  602. package/dist/service/s3/sim-s3.d.ts +12 -0
  603. package/dist/service/s3/sim-s3.js +13 -0
  604. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.d.ts +34 -0
  605. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.js +34 -0
  606. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.d.ts +9 -0
  607. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.js +24 -0
  608. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +5 -4
  609. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +5 -3
  610. package/dist/service/s3/upload/sim-s3-completed-upload.js +5 -1
  611. package/dist/service/s3/upload/sim-s3-multipart-upload.d.ts +18 -0
  612. package/dist/service/s3/upload/sim-s3-multipart-upload.js +8 -0
  613. package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +6 -0
  614. package/dist/service/s3/upload/sim-s3-multipart-uploads.js +5 -0
  615. package/dist/util/background/background-clock-waits.d.ts +52 -0
  616. package/dist/util/background/background-clock-waits.js +76 -0
  617. package/dist/util/background/background-jitter.js +1 -0
  618. package/dist/util/background/background-pending-tasks.d.ts +55 -0
  619. package/dist/util/background/background-pending-tasks.js +117 -0
  620. package/dist/util/background/background-settled-tasks.d.ts +4 -1
  621. package/dist/util/background/background-settled-tasks.js +4 -1
  622. package/dist/util/background/background.d.ts +43 -0
  623. package/dist/util/background/background.js +27 -19
  624. package/dist/util/background/non-deterministic-background.d.ts +12 -0
  625. package/dist/util/background/non-deterministic-background.js +24 -20
  626. package/dist/util/clock/sim-clock-control.js +23 -2
  627. package/docs/services/apigateway/README.md +3 -1
  628. package/docs/services/athena/README.md +126 -3
  629. package/docs/services/cloudformation/README.md +775 -65
  630. package/docs/services/cognito/README.md +5 -0
  631. package/docs/services/dynamodb/README.md +86 -11
  632. package/docs/services/lambda/README.md +603 -39
  633. package/docs/services/s3/README.md +688 -57
  634. package/package.json +8 -2
@@ -5,10 +5,11 @@
5
5
  * timing after it, where the request nests both. It carries the noncurrent
6
6
  * expiry both ways, as the nested object the request takes and as the older
7
7
  * `NoncurrentVersionExpirationInDays` beside it, which is what CDK's
8
- * `noncurrentVersionExpiration` synthesises. Everything absent from here,
9
- * `Status`, `Prefix`, `AbortIncompleteMultipartUpload`, `TagFilters` and the
10
- * object size bounds among them, is spelled the same way in both and goes
11
- * through untouched.
8
+ * `noncurrentVersionExpiration` synthesises. It also puts the tags a rule
9
+ * filters on beside the rule's `Prefix`, where the request holds both inside a
10
+ * `Filter`. Everything absent from here, `Status`,
11
+ * `AbortIncompleteMultipartUpload` and the object size bounds among them, is
12
+ * spelled the same way in both and goes through untouched.
12
13
  */
13
14
  export const simCfnS3TranslatedLifecycleFields = new Set([
14
15
  "Id",
@@ -17,6 +18,7 @@ export const simCfnS3TranslatedLifecycleFields = new Set([
17
18
  "ExpiredObjectDeleteMarker",
18
19
  "NoncurrentVersionExpiration",
19
20
  "NoncurrentVersionExpirationInDays",
21
+ "TagFilters",
20
22
  "Transition",
21
23
  "Transitions",
22
24
  ]);
@@ -50,7 +52,12 @@ export function simCfnS3StatedFields(fields) {
50
52
  * acts on anyway.
51
53
  */
52
54
  export function simCfnS3CarriedRuleFields(rule) {
53
- return Object.fromEntries(Object.entries(rule).filter(([name]) => !simCfnS3TranslatedLifecycleFields.has(name)));
55
+ // A rule filtering on tags carries its prefix inside the `Filter` built from
56
+ // them, and real S3 refuses a rule stating a `Prefix` alongside one.
57
+ const translated = rule["TagFilters"] === undefined
58
+ ? simCfnS3TranslatedLifecycleFields
59
+ : new Set([...simCfnS3TranslatedLifecycleFields, "Prefix"]);
60
+ return Object.fromEntries(Object.entries(rule).filter(([name]) => !translated.has(name)));
54
61
  }
55
62
  /**
56
63
  * The three flattened expiry fields, gathered under the one the request
@@ -0,0 +1,21 @@
1
+ import type { SimCfnTemplateValue, SimCfnTemplateValueRecord } from "../../../../cloudformation/template/value/sim-cfn-template-value.js";
2
+ import type { SimCfnValueShape } from "../../../../cloudformation/template/value/sim-cfn-value-shape.js";
3
+ interface SimCfnS3LifecycleFilterProperties {
4
+ readonly shape: SimCfnValueShape;
5
+ readonly rule: SimCfnTemplateValueRecord;
6
+ readonly path: string;
7
+ }
8
+ /**
9
+ * The `Filter` a rule's `TagFilters` states.
10
+ *
11
+ * CloudFormation puts the tags a rule filters on beside its `Prefix`, where the
12
+ * request holds both inside a `Filter`, so a rule stating tags is read into the
13
+ * shape the request takes. One tag and no prefix becomes a bare `Tag`, and
14
+ * anything more an `And` holding the prefix and the tags together, which is
15
+ * what real S3 requires of a rule scoped by more than one condition.
16
+ *
17
+ * A rule stating no tags keeps its `Prefix` where CloudFormation put it, and
18
+ * gets no `Filter` at all.
19
+ */
20
+ export declare function readSimCfnS3LifecycleFilter(properties: SimCfnS3LifecycleFilterProperties): SimCfnTemplateValue | undefined;
21
+ export {};
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The `Filter` a rule's `TagFilters` states.
3
+ *
4
+ * CloudFormation puts the tags a rule filters on beside its `Prefix`, where the
5
+ * request holds both inside a `Filter`, so a rule stating tags is read into the
6
+ * shape the request takes. One tag and no prefix becomes a bare `Tag`, and
7
+ * anything more an `And` holding the prefix and the tags together, which is
8
+ * what real S3 requires of a rule scoped by more than one condition.
9
+ *
10
+ * A rule stating no tags keeps its `Prefix` where CloudFormation put it, and
11
+ * gets no `Filter` at all.
12
+ */
13
+ export function readSimCfnS3LifecycleFilter(properties) {
14
+ const { shape, rule, path } = properties;
15
+ const declared = rule["TagFilters"];
16
+ if (declared === undefined) {
17
+ return undefined;
18
+ }
19
+ const tags = shape
20
+ .list(declared, `${path} TagFilters`)
21
+ .map((tag, index) => shape.record(tag, `${path} TagFilters[${index}]`));
22
+ const prefix = rule["Prefix"];
23
+ const only = tags.length === 1 ? tags[0] : undefined;
24
+ if (prefix === undefined && only !== undefined) {
25
+ return { Tag: only };
26
+ }
27
+ return {
28
+ And: { ...(prefix !== undefined && { Prefix: prefix }), Tags: tags },
29
+ };
30
+ }
@@ -43,6 +43,7 @@ export class SimCfnS3BucketConfigurator {
43
43
  await this.declared.applyVersioning();
44
44
  await this.declared.applyObjectLock();
45
45
  await this.declared.applyLifecycle();
46
+ await this.declared.applyEncryption();
46
47
  await this.configureNotifications();
47
48
  }
48
49
  /**
@@ -12,7 +12,7 @@ interface SimCfnS3BucketDeclaredConfigurationsProperties {
12
12
  * The AWS::S3::Bucket properties that are read straight off the Resource and
13
13
  * handed to a command.
14
14
  *
15
- * Five properties with one shape between them. Each is read from the Resource,
15
+ * Six properties with one shape between them. Each is read from the Resource,
16
16
  * left alone where the Resource omitted it, and otherwise applied through the
17
17
  * command an SDK caller would reach, so a template and an SDK caller are
18
18
  * validated identically. The event notification configuration is the one that
@@ -51,6 +51,19 @@ export declare class SimCfnS3BucketDeclaredConfigurations {
51
51
  * Apply the lifecycle rules the Resource declares.
52
52
  */
53
53
  applyLifecycle(): Promise<void>;
54
+ /**
55
+ * Apply the default encryption the Resource declares.
56
+ */
57
+ applyEncryption(): Promise<void>;
58
+ /**
59
+ * Apply one declared property, or leave the Bucket alone where the Resource
60
+ * omitted it.
61
+ *
62
+ * The one absence check for all six of them lives here. Each property is
63
+ * otherwise the same shape: read it off the Resource, and hand it to the
64
+ * command an SDK caller would reach.
65
+ */
66
+ private applyDeclared;
54
67
  /**
55
68
  * Read one declared property, or nothing where the Resource omitted it.
56
69
  *
@@ -1,3 +1,4 @@
1
+ import { SimCfnS3BucketEncryption } from "./encryption/sim-cfn-s3-bucket-encryption.js";
1
2
  import { SimCfnS3BucketLifecycleConfiguration } from "./lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js";
2
3
  import { SimCfnS3BucketObjectLockConfiguration } from "./lock/sim-cfn-s3-bucket-object-lock-configuration.js";
3
4
  import { SimCfnS3BucketPublicAccessConfiguration } from "./public-access/sim-cfn-s3-bucket-public-access-configuration.js";
@@ -7,7 +8,7 @@ import { SimCfnS3BucketWebsiteConfiguration } from "./website/sim-cfn-s3-bucket-
7
8
  * The AWS::S3::Bucket properties that are read straight off the Resource and
8
9
  * handed to a command.
9
10
  *
10
- * Five properties with one shape between them. Each is read from the Resource,
11
+ * Six properties with one shape between them. Each is read from the Resource,
11
12
  * left alone where the Resource omitted it, and otherwise applied through the
12
13
  * command an SDK caller would reach, so a template and an SDK caller are
13
14
  * validated identically. The event notification configuration is the one that
@@ -31,28 +32,27 @@ export class SimCfnS3BucketDeclaredConfigurations {
31
32
  * Apply the website configuration the Resource declares.
32
33
  */
33
34
  async applyWebsite() {
34
- const WebsiteConfiguration = this.read(SimCfnS3BucketWebsiteConfiguration);
35
- if (WebsiteConfiguration !== undefined) {
35
+ await this.applyDeclared(SimCfnS3BucketWebsiteConfiguration, async (WebsiteConfiguration) => {
36
36
  await this.simS3.putBucketWebsite({ input: { Bucket: this.bucketName, WebsiteConfiguration } }, this.options);
37
- }
37
+ });
38
38
  }
39
39
  /**
40
40
  * Apply the Block Public Access settings the Resource declares.
41
41
  */
42
42
  async applyPublicAccess() {
43
- const PublicAccessBlockConfiguration = this.read(SimCfnS3BucketPublicAccessConfiguration);
44
- if (PublicAccessBlockConfiguration !== undefined) {
45
- await this.simS3.putPublicAccessBlock({ input: { Bucket: this.bucketName, PublicAccessBlockConfiguration } }, this.options);
46
- }
43
+ await this.applyDeclared(SimCfnS3BucketPublicAccessConfiguration, async (PublicAccessBlockConfiguration) => {
44
+ await this.simS3.putPublicAccessBlock({
45
+ input: { Bucket: this.bucketName, PublicAccessBlockConfiguration },
46
+ }, this.options);
47
+ });
47
48
  }
48
49
  /**
49
50
  * Apply the versioning configuration the Resource declares.
50
51
  */
51
52
  async applyVersioning() {
52
- const VersioningConfiguration = this.read(SimCfnS3BucketVersioningConfiguration);
53
- if (VersioningConfiguration !== undefined) {
53
+ await this.applyDeclared(SimCfnS3BucketVersioningConfiguration, async (VersioningConfiguration) => {
54
54
  await this.simS3.putBucketVersioning({ input: { Bucket: this.bucketName, VersioningConfiguration } }, this.options);
55
- }
55
+ });
56
56
  }
57
57
  /**
58
58
  * Apply the Object Lock configuration the Resource declares.
@@ -63,18 +63,43 @@ export class SimCfnS3BucketDeclaredConfigurations {
63
63
  * the words an SDK caller is refused in.
64
64
  */
65
65
  async applyObjectLock() {
66
- const ObjectLockConfiguration = this.read(SimCfnS3BucketObjectLockConfiguration);
67
- if (ObjectLockConfiguration !== undefined) {
66
+ await this.applyDeclared(SimCfnS3BucketObjectLockConfiguration, async (ObjectLockConfiguration) => {
68
67
  await this.simS3.putObjectLockConfiguration({ input: { Bucket: this.bucketName, ObjectLockConfiguration } }, this.options);
69
- }
68
+ });
70
69
  }
71
70
  /**
72
71
  * Apply the lifecycle rules the Resource declares.
73
72
  */
74
73
  async applyLifecycle() {
75
- const LifecycleConfiguration = this.read(SimCfnS3BucketLifecycleConfiguration);
76
- if (LifecycleConfiguration !== undefined) {
74
+ await this.applyDeclared(SimCfnS3BucketLifecycleConfiguration, async (LifecycleConfiguration) => {
77
75
  await this.simS3.putBucketLifecycleConfiguration({ input: { Bucket: this.bucketName, LifecycleConfiguration } }, this.options);
76
+ });
77
+ }
78
+ /**
79
+ * Apply the default encryption the Resource declares.
80
+ */
81
+ async applyEncryption() {
82
+ await this.applyDeclared(SimCfnS3BucketEncryption, async (ServerSideEncryptionConfiguration) => {
83
+ await this.simS3.putBucketEncryption({
84
+ input: {
85
+ Bucket: this.bucketName,
86
+ ServerSideEncryptionConfiguration,
87
+ },
88
+ }, this.options);
89
+ });
90
+ }
91
+ /**
92
+ * Apply one declared property, or leave the Bucket alone where the Resource
93
+ * omitted it.
94
+ *
95
+ * The one absence check for all six of them lives here. Each property is
96
+ * otherwise the same shape: read it off the Resource, and hand it to the
97
+ * command an SDK caller would reach.
98
+ */
99
+ async applyDeclared(Reader, apply) {
100
+ const declared = this.read(Reader);
101
+ if (declared !== undefined) {
102
+ await apply(declared);
78
103
  }
79
104
  }
80
105
  /**
@@ -5,11 +5,9 @@ export declare const simulatedPropertyNames: ReadonlySet<string>;
5
5
  /**
6
6
  * Real AWS::S3::Bucket properties this simulation reads and does nothing with.
7
7
  *
8
- * Nothing this simulator models can tell the difference. There is no simulated
9
- * KMS and Object bytes are stored as they arrive, so an encrypted Bucket and an
10
- * unencrypted one answer every simulated command identically, and no simulated
11
- * service reads a Bucket tag. So these are not recorded as ignored either: a
12
- * report of differences that make no difference is one nobody can read.
8
+ * Nothing this simulator models can tell the difference. No simulated service
9
+ * reads a Bucket tag, so this is not recorded as ignored either: a report of
10
+ * differences that make no difference is one nobody can read.
13
11
  */
14
12
  export declare const inertPropertyNames: ReadonlySet<string>;
15
13
  import type { SimCfnSkippedPropertyRules } from "../../../cloudformation/resource/ignore/sim-cfn-skipped-property.type.js";
@@ -2,6 +2,7 @@
2
2
  * The AWS::S3::Bucket properties this simulation acts on.
3
3
  */
4
4
  export const simulatedPropertyNames = new Set([
5
+ "BucketEncryption",
5
6
  "BucketName",
6
7
  "LifecycleConfiguration",
7
8
  "ObjectLockConfiguration",
@@ -14,16 +15,11 @@ export const simulatedPropertyNames = new Set([
14
15
  /**
15
16
  * Real AWS::S3::Bucket properties this simulation reads and does nothing with.
16
17
  *
17
- * Nothing this simulator models can tell the difference. There is no simulated
18
- * KMS and Object bytes are stored as they arrive, so an encrypted Bucket and an
19
- * unencrypted one answer every simulated command identically, and no simulated
20
- * service reads a Bucket tag. So these are not recorded as ignored either: a
21
- * report of differences that make no difference is one nobody can read.
18
+ * Nothing this simulator models can tell the difference. No simulated service
19
+ * reads a Bucket tag, so this is not recorded as ignored either: a report of
20
+ * differences that make no difference is one nobody can read.
22
21
  */
23
- export const inertPropertyNames = new Set([
24
- "BucketEncryption",
25
- "Tags",
26
- ]);
22
+ export const inertPropertyNames = new Set(["Tags"]);
27
23
  import { validateSimCfnS3BucketReplication } from "./replication/sim-cfn-s3-bucket-replication-rules.js";
28
24
  /**
29
25
  * Real AWS::S3::Bucket properties this simulation does not model, with what
@@ -55,7 +51,8 @@ export const unsimulatedPropertyReasons = new Map([
55
51
  ],
56
52
  [
57
53
  "IntelligentTieringConfigurations",
58
- "storage classes are not simulated, so nothing transitions between them",
54
+ "Objects are not moved between storage classes by access pattern, and " +
55
+ "only a lifecycle rule transitions one",
59
56
  ],
60
57
  ["InventoryConfigurations", "Bucket inventory reports are not simulated"],
61
58
  ["LoggingConfiguration", "server access logging is not simulated"],
@@ -1,3 +1,4 @@
1
+ import type { SimAwsResolvedCaller } from "../../../aws/caller/sim-aws-caller-resolver.js";
1
2
  import type { SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
2
3
  import type { SimS3Bucket } from "../../bucket/sim-s3-bucket.js";
3
4
  import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
@@ -20,5 +21,9 @@ export interface SimS3AuthorizedAction {
20
21
  * supplied as the condition keys a Bucket policy is usually written against.
21
22
  * An omitted caller is passed through to sim IAM, so Account root fallback
22
23
  * stays owned by IAM.
24
+ *
25
+ * The resolved caller is answered rather than discarded, because this is the
26
+ * only point in a request where the principal has been worked out, and an
27
+ * Object event notification has to say who caused it.
23
28
  */
24
- export declare function simS3AuthorizeAction(request: SimS3AuthorizedAction): void;
29
+ export declare function simS3AuthorizeAction(request: SimS3AuthorizedAction): SimAwsResolvedCaller;
@@ -9,6 +9,10 @@ import { simS3ConditionContext } from "./sim-s3-condition-context.js";
9
9
  * supplied as the condition keys a Bucket policy is usually written against.
10
10
  * An omitted caller is passed through to sim IAM, so Account root fallback
11
11
  * stays owned by IAM.
12
+ *
13
+ * The resolved caller is answered rather than discarded, because this is the
14
+ * only point in a request where the principal has been worked out, and an
15
+ * Object event notification has to say who caused it.
12
16
  */
13
17
  export function simS3AuthorizeAction(request) {
14
18
  const { iam, action, resource, bucket, options } = request;
@@ -27,4 +31,5 @@ export function simS3AuthorizeAction(request) {
27
31
  resource,
28
32
  });
29
33
  }
34
+ return decision.caller;
30
35
  }
@@ -1,5 +1,6 @@
1
1
  import type { SimClock } from "../../../../util/clock/sim-clock.js";
2
2
  import { SimS3Object } from "../../object/s3-object.js";
3
+ import type { SimS3ServerSideEncryption } from "../../object/s3-server-side-encryption.js";
3
4
  import type { SimCopyObjectCommandInput } from "./copy-object.command.js";
4
5
  interface CopyObjectBuilderProperties {
5
6
  readonly clock: SimClock;
@@ -27,7 +28,15 @@ export declare class CopyObjectBuilder {
27
28
  * its own to carry. An Object uploaded in parts keeps the multipart ETag it
28
29
  * was given, and real S3 rewrites a copy of one as a single part. The copy's
29
30
  * ETag is therefore the plain digest of its bytes.
31
+ *
32
+ * The storage class and the encryption come from the request and the
33
+ * destination Bucket. Real S3 stores a copy in the default class where the
34
+ * request names none, whatever class the source was in.
35
+ *
36
+ * The tags come from the source unless the request asked to replace them,
37
+ * which is the other way round from the metadata: real S3 copies tags by
38
+ * default and takes `TaggingDirective: REPLACE` to be told otherwise.
30
39
  */
31
- build(input: SimCopyObjectCommandInput, key: string, source: SimS3Object): SimS3Object;
40
+ build(input: SimCopyObjectCommandInput, key: string, source: SimS3Object, destinationEncryption: SimS3ServerSideEncryption): SimS3Object;
32
41
  }
33
42
  export {};
@@ -1,5 +1,7 @@
1
1
  import { SimS3Object } from "../../object/s3-object.js";
2
2
  import { simS3WriteMetadata } from "../../object/s3-write-metadata.js";
3
+ import { simS3WriteEncryption, simS3WriteStorageClass, } from "../../object/s3-write-storage.js";
4
+ import { simS3WriteTags } from "../../object/s3-write-tagging.js";
3
5
  /**
4
6
  * Builds the Object a copy stores at its destination.
5
7
  *
@@ -25,15 +27,29 @@ export class CopyObjectBuilder {
25
27
  * its own to carry. An Object uploaded in parts keeps the multipart ETag it
26
28
  * was given, and real S3 rewrites a copy of one as a single part. The copy's
27
29
  * ETag is therefore the plain digest of its bytes.
30
+ *
31
+ * The storage class and the encryption come from the request and the
32
+ * destination Bucket. Real S3 stores a copy in the default class where the
33
+ * request names none, whatever class the source was in.
34
+ *
35
+ * The tags come from the source unless the request asked to replace them,
36
+ * which is the other way round from the metadata: real S3 copies tags by
37
+ * default and takes `TaggingDirective: REPLACE` to be told otherwise.
28
38
  */
29
- build(input, key, source) {
39
+ build(input, key, source, destinationEncryption) {
40
+ const storageClass = simS3WriteStorageClass(input, "CopyObjectCommand");
30
41
  return new SimS3Object({
31
42
  key,
32
43
  body: Buffer.from(source.body),
33
44
  metadata: input.MetadataDirective === "REPLACE"
34
45
  ? simS3WriteMetadata(input)
35
46
  : source.metadata,
47
+ tags: input.TaggingDirective === "REPLACE"
48
+ ? simS3WriteTags(input, "CopyObjectCommand")
49
+ : source.tags,
36
50
  lastModified: this.clock.now(),
51
+ ...(storageClass !== undefined && { storageClass }),
52
+ serverSideEncryption: simS3WriteEncryption(input, destinationEncryption, "CopyObjectCommand"),
37
53
  });
38
54
  }
39
55
  }
@@ -1,5 +1,7 @@
1
1
  import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
2
  import type { SimS3ObjectWriteMetadata } from "../../object/s3-write-metadata.js";
3
+ import type { SimS3ObjectWriteStorage } from "../../object/s3-write-storage.js";
4
+ import type { SimS3ObjectWriteTagging } from "../../object/s3-write-tagging.js";
3
5
  /**
4
6
  * Minimal structural sim S3 CopyObject command.
5
7
  */
@@ -13,12 +15,18 @@ export interface SimCopyObjectCommand {
13
15
  * apply to the destination Object under `MetadataDirective: REPLACE`. Under
14
16
  * the default `COPY` they are ignored, as real S3 ignores them.
15
17
  */
16
- export interface SimCopyObjectCommandInput extends SimS3ObjectWriteMetadata {
18
+ export interface SimCopyObjectCommandInput extends SimS3ObjectWriteMetadata, SimS3ObjectWriteStorage, SimS3ObjectWriteTagging {
17
19
  readonly Bucket?: string | undefined;
18
20
  readonly Key?: string | undefined;
19
21
  /** The source Object, as `sourceBucket/sourceKey`, URL-encoded. */
20
22
  readonly CopySource?: string | undefined;
21
23
  readonly MetadataDirective?: string | undefined;
24
+ /**
25
+ * Whether the copy carries the source Object's tags or the request's own.
26
+ * `REPLACE` takes the request's `Tagging`, and anything else leaves the copy
27
+ * carrying what the source carried.
28
+ */
29
+ readonly TaggingDirective?: string | undefined;
22
30
  }
23
31
  /**
24
32
  * Minimal structural sim S3 CopyObject output.
@@ -31,6 +39,8 @@ export interface SimCopyObjectCommandInput extends SimS3ObjectWriteMetadata {
31
39
  export interface SimCopyObjectCommandOutput {
32
40
  readonly CopyObjectResult?: SimCopyObjectResult;
33
41
  readonly VersionId?: string | undefined;
42
+ /** The encryption S3 stamped on the copy it stored. */
43
+ readonly ServerSideEncryption?: string | undefined;
34
44
  readonly $metadata: SimResponseMetadata;
35
45
  }
36
46
  /**
@@ -56,7 +56,7 @@ export class CopyObjectCommandHandler {
56
56
  this.sourceAuthorizer.authorize(source, from.key, options);
57
57
  const caller = this.destinationAuthorizer.authorize(destination, key, options);
58
58
  const stored = await simS3CopySourceObject(source, from.key);
59
- const object = this.objectBuilder.build(command.input, key, stored);
59
+ const object = this.objectBuilder.build(command.input, key, stored, destination.getEncryption().algorithm);
60
60
  const version = await destination.putObject(object);
61
61
  this.notifications.objectCreated({
62
62
  bucket: destination,
@@ -71,6 +71,7 @@ export class CopyObjectCommandHandler {
71
71
  LastModified: object.lastModified,
72
72
  },
73
73
  ...(version !== undefined && { VersionId: version.versionId }),
74
+ ServerSideEncryption: object.serverSideEncryption,
74
75
  $metadata: {},
75
76
  };
76
77
  }
@@ -1,5 +1,7 @@
1
1
  import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
2
  import type { SimS3ObjectWriteMetadata } from "../../object/s3-write-metadata.js";
3
+ import type { SimS3ObjectWriteStorage } from "../../object/s3-write-storage.js";
4
+ import type { SimS3ObjectWriteTagging } from "../../object/s3-write-tagging.js";
3
5
  /**
4
6
  * Minimal structural sim S3 CreateMultipartUpload command.
5
7
  */
@@ -12,7 +14,7 @@ export interface SimCreateMultipartUploadCommand {
12
14
  * This is the request that says what the Object will be, so it carries the same
13
15
  * metadata members a `PutObject` does. None of the Object's bytes arrive here.
14
16
  */
15
- export interface SimCreateMultipartUploadCommandInput extends SimS3ObjectWriteMetadata {
17
+ export interface SimCreateMultipartUploadCommandInput extends SimS3ObjectWriteMetadata, SimS3ObjectWriteStorage, SimS3ObjectWriteTagging {
16
18
  readonly Bucket?: string | undefined;
17
19
  readonly Key?: string | undefined;
18
20
  }
@@ -23,6 +25,8 @@ export interface SimCreateMultipartUploadCommandInput extends SimS3ObjectWriteMe
23
25
  */
24
26
  export interface SimCreateMultipartUploadCommandOutput {
25
27
  readonly Bucket?: string;
28
+ /** The encryption S3 will stamp on the Object the upload completes into. */
29
+ readonly ServerSideEncryption?: string | undefined;
26
30
  readonly Key?: string;
27
31
  readonly UploadId?: string;
28
32
  readonly $metadata: SimResponseMetadata;
@@ -1,5 +1,7 @@
1
1
  import { assertDefined } from "../../../../util/type-guard/defined.js";
2
2
  import { simS3WriteMetadata } from "../../object/s3-write-metadata.js";
3
+ import { simS3WriteEncryption, simS3WriteStorageClass, } from "../../object/s3-write-storage.js";
4
+ import { simS3WriteTags } from "../../object/s3-write-tagging.js";
3
5
  import { SimS3MultipartAccess, } from "../multipart/sim-s3-multipart-access.js";
4
6
  /**
5
7
  * Simulated S3 CreateMultipartUploadCommand handler.
@@ -22,15 +24,20 @@ export class CreateMultipartUploadCommandHandler {
22
24
  assertDefined(Bucket, "CreateMultipartUploadCommand.input.Bucket");
23
25
  assertDefined(Key, "CreateMultipartUploadCommand.input.Key");
24
26
  const { bucket } = await this.access.reach(Bucket, Key, options);
27
+ const storageClass = simS3WriteStorageClass(command.input, "CreateMultipartUploadCommand");
25
28
  const upload = bucket.getMultipartUploads().start({
26
29
  key: Key,
27
30
  metadata: simS3WriteMetadata(command.input),
31
+ tags: simS3WriteTags(command.input, "CreateMultipartUploadCommand"),
28
32
  initiated: this.access.now(),
33
+ ...(storageClass !== undefined && { storageClass }),
34
+ serverSideEncryption: simS3WriteEncryption(command.input, bucket.getEncryption().algorithm, "CreateMultipartUploadCommand"),
29
35
  });
30
36
  return {
31
37
  Bucket: bucket.bucketName,
32
38
  Key: upload.key,
33
39
  UploadId: upload.uploadId,
40
+ ServerSideEncryption: upload.serverSideEncryption,
34
41
  $metadata: {},
35
42
  };
36
43
  }
@@ -0,0 +1,19 @@
1
+ import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
+ /**
3
+ * Minimal structural sim S3 DeleteBucketEncryption command.
4
+ */
5
+ export interface SimDeleteBucketEncryptionCommand {
6
+ readonly input: SimDeleteBucketEncryptionCommandInput;
7
+ }
8
+ /**
9
+ * Minimal structural sim S3 DeleteBucketEncryption input.
10
+ */
11
+ export interface SimDeleteBucketEncryptionCommandInput {
12
+ readonly Bucket?: string | undefined;
13
+ }
14
+ /**
15
+ * Minimal structural sim S3 DeleteBucketEncryption output.
16
+ */
17
+ export interface SimDeleteBucketEncryptionCommandOutput {
18
+ readonly $metadata: SimResponseMetadata;
19
+ }
@@ -0,0 +1,30 @@
1
+ import type { CommandHandler } from "../../../../command/command-handler.js";
2
+ import { type BackgroundScheduler } from "../../../../util/background/background.js";
3
+ import { type SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
4
+ import type { SimS3Bucket, SimS3BucketName } from "../../bucket/sim-s3-bucket.js";
5
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
6
+ import type { SimDeleteBucketEncryptionCommand, SimDeleteBucketEncryptionCommandOutput } from "./delete-bucket-encryption.command.js";
7
+ interface DeleteBucketEncryptionHandlerProperties {
8
+ readonly buckets: Map<SimS3BucketName, SimS3Bucket>;
9
+ readonly iam?: SimIamInterServiceAuthZ;
10
+ readonly background?: BackgroundScheduler;
11
+ }
12
+ /**
13
+ * Simulated S3 DeleteBucketEncryptionCommand handler.
14
+ *
15
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketEncryptionCommand/
16
+ */
17
+ export declare class DeleteBucketEncryptionCommandHandler implements CommandHandler<SimDeleteBucketEncryptionCommand, SimDeleteBucketEncryptionCommandOutput> {
18
+ private readonly buckets;
19
+ private readonly authorizer;
20
+ private readonly background;
21
+ constructor(properties: DeleteBucketEncryptionHandlerProperties);
22
+ /**
23
+ * Authorize and put a Bucket back to the encryption every Bucket has.
24
+ *
25
+ * Real S3 leaves the Bucket SSE-S3 encrypted rather than unencrypted, and
26
+ * the request is idempotent, so this reports nothing about what was there.
27
+ */
28
+ handle(command: SimDeleteBucketEncryptionCommand, options?: SimS3RequestOptions): Promise<SimDeleteBucketEncryptionCommandOutput>;
29
+ }
30
+ export {};
@@ -0,0 +1,38 @@
1
+ import { BackgroundTasks, } from "../../../../util/background/background.js";
2
+ import { assertDefined } from "../../../../util/type-guard/defined.js";
3
+ import { SimIamAllowAllAuth, } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
4
+ import { SimS3EncryptionAuthorizer } from "../encryption/sim-s3-encryption-authorizer.js";
5
+ import { requireSimS3Bucket } from "../require-sim-s3-bucket.js";
6
+ /**
7
+ * Simulated S3 DeleteBucketEncryptionCommand handler.
8
+ *
9
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketEncryptionCommand/
10
+ */
11
+ export class DeleteBucketEncryptionCommandHandler {
12
+ buckets;
13
+ authorizer;
14
+ background;
15
+ constructor(properties) {
16
+ const { buckets, iam = new SimIamAllowAllAuth(), background = new BackgroundTasks(), } = properties;
17
+ this.buckets = buckets;
18
+ this.authorizer = new SimS3EncryptionAuthorizer({ iam });
19
+ this.background = background;
20
+ }
21
+ /**
22
+ * Authorize and put a Bucket back to the encryption every Bucket has.
23
+ *
24
+ * Real S3 leaves the Bucket SSE-S3 encrypted rather than unencrypted, and
25
+ * the request is idempotent, so this reports nothing about what was there.
26
+ */
27
+ async handle(command, options) {
28
+ assertDefined(command.input.Bucket, "DeleteBucketEncryptionCommand.input.Bucket");
29
+ const bucketName = command.input.Bucket;
30
+ const bucket = requireSimS3Bucket(this.buckets, bucketName);
31
+ await this.background.sequence();
32
+ this.authorizer.authorizeWrite(bucket, options);
33
+ bucket.deleteEncryption();
34
+ return {
35
+ $metadata: {},
36
+ };
37
+ }
38
+ }
@@ -0,0 +1,23 @@
1
+ import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
+ /**
3
+ * Minimal structural sim S3 DeleteObjectTagging command.
4
+ */
5
+ export interface SimDeleteObjectTaggingCommand {
6
+ readonly input: SimDeleteObjectTaggingCommandInput;
7
+ }
8
+ /**
9
+ * Minimal structural sim S3 DeleteObjectTagging input.
10
+ */
11
+ export interface SimDeleteObjectTaggingCommandInput {
12
+ readonly Bucket?: string | undefined;
13
+ readonly Key?: string | undefined;
14
+ /** The version to untag. A request naming none untags the current one. */
15
+ readonly VersionId?: string | undefined;
16
+ }
17
+ /**
18
+ * Minimal structural sim S3 DeleteObjectTagging output.
19
+ */
20
+ export interface SimDeleteObjectTaggingCommandOutput {
21
+ readonly VersionId?: string | undefined;
22
+ readonly $metadata: SimResponseMetadata;
23
+ }
@@ -0,0 +1,22 @@
1
+ import type { CommandHandler } from "../../../../command/command-handler.js";
2
+ import { type SimS3ObjectTaggingAccessProperties } from "../tagging/sim-s3-object-tagging-access.js";
3
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
4
+ import type { SimDeleteObjectTaggingCommand, SimDeleteObjectTaggingCommandOutput } from "./delete-object-tagging.command.js";
5
+ /**
6
+ * Simulated S3 DeleteObjectTaggingCommand handler.
7
+ *
8
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteObjectTaggingCommand/
9
+ */
10
+ export declare class DeleteObjectTaggingCommandHandler implements CommandHandler<SimDeleteObjectTaggingCommand, SimDeleteObjectTaggingCommandOutput> {
11
+ private readonly access;
12
+ constructor(properties: SimS3ObjectTaggingAccessProperties);
13
+ /**
14
+ * Take every tag off an Object, or off the version the request named.
15
+ *
16
+ * Real S3 removes the whole tag set and answers the same way whether or not
17
+ * the Object was carrying one, so an Object nobody had tagged is not an
18
+ * error. The event is raised either way, because the request is what real S3
19
+ * raises it for.
20
+ */
21
+ handle(command: SimDeleteObjectTaggingCommand, options?: SimS3RequestOptions): Promise<SimDeleteObjectTaggingCommandOutput>;
22
+ }