@kensio/yulin 1.21.3 → 1.21.5

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 (650) 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/assets/sim-cdk-assets-publisher.d.ts +18 -13
  40. package/dist/service/cloudformation/cdk/assets/sim-cdk-assets-publisher.js +16 -24
  41. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.d.ts +2 -0
  42. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.js +1 -0
  43. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.d.ts +7 -0
  44. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.js +13 -1
  45. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.d.ts +6 -0
  46. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.js +7 -1
  47. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.d.ts +50 -0
  48. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.js +71 -0
  49. package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.js +6 -1
  50. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.d.ts +5 -0
  51. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.js +7 -0
  52. package/dist/service/cloudformation/cdk/sim-cdk-cloud-assembly.factory.d.ts +12 -0
  53. package/dist/service/cloudformation/cdk/sim-cdk-cloud-assembly.factory.js +16 -7
  54. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.d.ts +9 -0
  55. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.js +12 -0
  56. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.d.ts +42 -0
  57. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.js +69 -0
  58. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.d.ts +62 -0
  59. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.js +89 -0
  60. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.d.ts +31 -0
  61. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.js +59 -0
  62. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.d.ts +21 -0
  63. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.js +19 -0
  64. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.d.ts +17 -0
  65. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.js +18 -0
  66. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.d.ts +18 -0
  67. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.js +13 -0
  68. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.d.ts +45 -0
  69. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.js +52 -0
  70. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.d.ts +12 -0
  71. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.js +21 -0
  72. package/dist/service/cloudformation/changeset/sim-cfn-change-set.d.ts +54 -0
  73. package/dist/service/cloudformation/changeset/sim-cfn-change-set.js +49 -0
  74. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.d.ts +35 -0
  75. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.js +1 -0
  76. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.d.ts +53 -0
  77. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.js +83 -0
  78. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.d.ts +32 -0
  79. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.js +1 -0
  80. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.d.ts +38 -0
  81. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.js +80 -0
  82. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +3 -0
  83. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +16 -13
  84. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.d.ts +22 -0
  85. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.js +1 -0
  86. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.d.ts +27 -0
  87. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.js +35 -0
  88. package/dist/service/cloudformation/command/delete-stack/delete-stack.command.d.ts +6 -0
  89. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.d.ts +11 -0
  90. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.js +15 -1
  91. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.d.ts +48 -0
  92. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.js +1 -0
  93. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.d.ts +23 -0
  94. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.js +52 -0
  95. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.d.ts +3 -0
  96. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.js +8 -4
  97. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.d.ts +18 -6
  98. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.js +22 -7
  99. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-stack-describer.js +1 -1
  100. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.d.ts +25 -0
  101. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.js +1 -0
  102. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.d.ts +31 -0
  103. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.js +37 -0
  104. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.d.ts +36 -0
  105. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.js +1 -0
  106. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.d.ts +26 -0
  107. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.js +39 -0
  108. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.d.ts +31 -0
  109. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.js +52 -0
  110. package/dist/service/cloudformation/command/update-stack/update-stack-template.d.ts +22 -0
  111. package/dist/service/cloudformation/command/update-stack/update-stack-template.js +34 -0
  112. package/dist/service/cloudformation/command/update-stack/update-stack.command.d.ts +17 -1
  113. package/dist/service/cloudformation/command/update-stack/update-stack.handler.d.ts +6 -0
  114. package/dist/service/cloudformation/command/update-stack/update-stack.handler.js +15 -16
  115. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  116. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-options-deployed.d.ts +10 -0
  117. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-options-deployed.js +14 -0
  118. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -1
  119. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +3 -2
  120. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +5 -8
  121. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.js +0 -14
  122. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +9 -0
  123. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +2 -0
  124. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +10 -0
  125. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  126. package/dist/service/cloudformation/deploy/sim-cfn-template-file-updater.js +1 -0
  127. package/dist/service/cloudformation/error/sim-cloudformation.error.d.ts +21 -0
  128. package/dist/service/cloudformation/error/sim-cloudformation.error.js +25 -0
  129. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.d.ts +7 -0
  130. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.js +3 -1
  131. package/dist/service/cloudformation/parameters/sim-cfn-parameters.d.ts +9 -0
  132. package/dist/service/cloudformation/parameters/sim-cfn-parameters.js +12 -0
  133. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.d.ts +4 -0
  134. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.js +10 -0
  135. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.d.ts +44 -0
  136. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.js +33 -0
  137. package/dist/service/cloudformation/resource/sim-cfn-resource-record.d.ts +15 -0
  138. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +21 -1
  139. package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts +9 -7
  140. package/dist/service/cloudformation/resource/sim-cfn-resource.js +11 -11
  141. package/dist/service/cloudformation/resource/sim-cfn-resource.type.d.ts +8 -0
  142. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.d.ts +3 -3
  143. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.js +3 -3
  144. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.d.ts +4 -0
  145. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.js +9 -0
  146. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.d.ts +37 -0
  147. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.js +77 -0
  148. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.d.ts +51 -0
  149. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.js +10 -0
  150. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.d.ts +11 -0
  151. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.js +34 -0
  152. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.d.ts +21 -0
  153. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.js +31 -0
  154. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.d.ts +14 -0
  155. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.js +1 -0
  156. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.d.ts +26 -0
  157. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.js +58 -0
  158. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.d.ts +18 -0
  159. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.js +89 -0
  160. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.d.ts +15 -0
  161. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.js +65 -0
  162. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.d.ts +13 -0
  163. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.js +60 -0
  164. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.d.ts +13 -0
  165. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.js +50 -0
  166. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.d.ts +13 -0
  167. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.js +30 -0
  168. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.d.ts +26 -0
  169. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.js +44 -0
  170. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.d.ts +15 -0
  171. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.js +59 -0
  172. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.d.ts +11 -0
  173. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.js +43 -0
  174. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.d.ts +15 -0
  175. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.js +67 -0
  176. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.d.ts +26 -0
  177. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.js +61 -0
  178. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.d.ts +18 -0
  179. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.js +59 -0
  180. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api-template.factory.js +1 -1
  181. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.d.ts +4 -0
  182. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.js +12 -5
  183. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api-template.factory.js +1 -1
  184. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api.js +7 -3
  185. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-api-event.js +7 -3
  186. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.d.ts +26 -0
  187. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.js +88 -0
  188. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.d.ts +12 -0
  189. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.js +1 -0
  190. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-function-events.js +8 -5
  191. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-event.js +23 -1
  192. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.d.ts +9 -2
  193. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.js +5 -3
  194. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.d.ts +6 -1
  195. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.js +7 -1
  196. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.d.ts +19 -0
  197. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.js +69 -0
  198. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.d.ts +5 -0
  199. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.js +3 -1
  200. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.d.ts +8 -0
  201. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.js +8 -0
  202. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-url.js +1 -4
  203. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.d.ts +6 -4
  204. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.js +2 -4
  205. package/dist/service/cloudformation/sam/sim-cfn-sam-error.d.ts +31 -0
  206. package/dist/service/cloudformation/sam/sim-cfn-sam-error.js +17 -0
  207. package/dist/service/cloudformation/sam/sim-cfn-sam-expansion.js +11 -6
  208. package/dist/service/cloudformation/sdk/sim-cloudformation-sdk-command-router.js +20 -0
  209. package/dist/service/cloudformation/serve/sim-cloudformation-api.d.ts +4 -3
  210. package/dist/service/cloudformation/serve/sim-cloudformation-api.js +6 -3
  211. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.d.ts +10 -0
  212. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.js +94 -0
  213. package/dist/service/cloudformation/sim-cloudformation.d.ts +31 -0
  214. package/dist/service/cloudformation/sim-cloudformation.js +56 -9
  215. package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js +1 -0
  216. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.d.ts +20 -0
  217. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.js +23 -0
  218. package/dist/service/cloudformation/stack/sim-cfn-deployed-stack.type.d.ts +6 -0
  219. package/dist/service/cloudformation/stack/sim-cfn-stack-deploy-context.d.ts +47 -0
  220. package/dist/service/cloudformation/stack/sim-cfn-stack-deploy-context.js +46 -0
  221. package/dist/service/cloudformation/stack/sim-cfn-stack-id.d.ts +30 -0
  222. package/dist/service/cloudformation/stack/sim-cfn-stack-id.js +24 -0
  223. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +53 -20
  224. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +79 -32
  225. package/dist/service/cloudformation/stack/sim-cfn-stack.d.ts +28 -16
  226. package/dist/service/cloudformation/stack/sim-cfn-stack.js +60 -32
  227. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +21 -1
  228. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.d.ts +7 -1
  229. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.js +3 -1
  230. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.d.ts +3 -0
  231. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.js +3 -0
  232. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.d.ts +3 -0
  233. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.js +2 -1
  234. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.d.ts +18 -0
  235. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.js +30 -0
  236. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.d.ts +9 -0
  237. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.js +14 -0
  238. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.d.ts +25 -14
  239. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.js +41 -24
  240. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.d.ts +9 -0
  241. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.js +14 -0
  242. package/dist/service/cloudformation/stack/update/sim-cfn-stack-updater.js +6 -1
  243. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.d.ts +12 -3
  244. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.js +29 -3
  245. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.d.ts +28 -0
  246. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.js +39 -0
  247. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts +25 -1
  248. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js +43 -11
  249. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.d.ts +7 -0
  250. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.js +29 -3
  251. package/dist/service/cloudformation/template/sim-cfn-command-template.d.ts +40 -0
  252. package/dist/service/cloudformation/template/sim-cfn-command-template.js +45 -0
  253. package/dist/service/cloudformation/template/sim-cfn-template.d.ts +7 -0
  254. package/dist/service/cloudformation/template/sim-cfn-template.js +15 -1
  255. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +2 -0
  256. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +49 -0
  257. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +1 -0
  258. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +1 -0
  259. package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +1 -1
  260. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.d.ts +5 -0
  261. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.js +17 -0
  262. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +5 -5
  263. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +24 -8
  264. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.d.ts +11 -8
  265. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.js +20 -8
  266. package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +2 -0
  267. package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
  268. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +14 -4
  269. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +16 -4
  270. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.d.ts +17 -0
  271. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.js +39 -0
  272. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.d.ts +28 -0
  273. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.js +50 -0
  274. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +12 -5
  275. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts +3 -3
  276. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +3 -4
  277. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.d.ts +5 -16
  278. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.js +4 -21
  279. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.d.ts +15 -0
  280. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.js +18 -1
  281. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.d.ts +13 -0
  282. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.js +15 -0
  283. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +2 -0
  284. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +5 -3
  285. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.d.ts +21 -0
  286. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.js +37 -0
  287. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.js +6 -0
  288. package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
  289. package/dist/service/lambda/command/create-function/create-function.handler.js +5 -1
  290. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.command.d.ts +2 -3
  291. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.handler.js +1 -0
  292. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +6 -0
  293. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +10 -0
  294. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +2 -6
  295. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +1 -0
  296. package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
  297. package/dist/service/lambda/command/function-url/function-url-cors-constraints.d.ts +25 -0
  298. package/dist/service/lambda/command/function-url/function-url-cors-constraints.js +49 -0
  299. package/dist/service/lambda/command/function-url/function-url-cors-input.d.ts +25 -0
  300. package/dist/service/lambda/command/function-url/function-url-cors-input.js +57 -0
  301. package/dist/service/lambda/command/function-url/function-url-input.d.ts +7 -0
  302. package/dist/service/lambda/command/function-url/function-url-input.js +9 -0
  303. package/dist/service/lambda/command/invoke/async/sim-lambda-async-invocation.js +10 -13
  304. package/dist/service/lambda/command/invoke/async/sim-lambda-async-outcome.js +2 -0
  305. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.d.ts +13 -0
  306. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.js +12 -0
  307. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.command.d.ts +2 -0
  308. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.handler.js +1 -0
  309. package/dist/service/lambda/destination/deliver/sim-lambda-destination-bus.js +1 -1
  310. package/dist/service/lambda/destination/deliver/sim-lambda-destination-function.js +8 -12
  311. package/dist/service/lambda/destination/deliver/sim-lambda-destination-queue.js +4 -3
  312. package/dist/service/lambda/destination/deliver/sim-lambda-destination-send.d.ts +2 -0
  313. package/dist/service/lambda/destination/deliver/sim-lambda-destination-topic.js +4 -3
  314. package/dist/service/lambda/destination/sim-aws-lambda-destinations.d.ts +4 -6
  315. package/dist/service/lambda/destination/sim-aws-lambda-destinations.js +6 -6
  316. package/dist/service/lambda/destination/sim-lambda-destination-targets.d.ts +3 -0
  317. package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +4 -9
  318. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +4 -9
  319. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +22 -3
  320. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +39 -9
  321. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +7 -6
  322. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +14 -12
  323. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +9 -15
  324. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +9 -16
  325. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +10 -6
  326. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +22 -12
  327. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.d.ts +23 -0
  328. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.js +18 -0
  329. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +12 -13
  330. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +24 -17
  331. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.d.ts +64 -0
  332. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.js +86 -0
  333. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +6 -0
  334. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +8 -1
  335. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +6 -0
  336. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +7 -0
  337. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +11 -1
  338. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +13 -0
  339. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.d.ts +39 -0
  340. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.js +46 -0
  341. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.d.ts +56 -0
  342. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.js +110 -0
  343. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.d.ts +5 -0
  344. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.js +7 -1
  345. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.d.ts +6 -0
  346. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.js +6 -0
  347. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +6 -1
  348. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +8 -6
  349. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +10 -8
  350. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +18 -1
  351. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +8 -2
  352. package/dist/service/lambda/function/code/sim-lambda-executable-code.js +2 -1
  353. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +2 -11
  354. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +13 -39
  355. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +7 -0
  356. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +13 -7
  357. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.d.ts +23 -0
  358. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.js +42 -0
  359. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.d.ts +12 -4
  360. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.js +15 -5
  361. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.d.ts +7 -0
  362. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.js +6 -2
  363. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.d.ts +26 -0
  364. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.js +84 -0
  365. package/dist/service/lambda/function/invoke/sim-lambda-invocation.d.ts +44 -0
  366. package/dist/service/lambda/function/invoke/sim-lambda-invocation.js +44 -0
  367. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.d.ts +6 -0
  368. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.js +1 -2
  369. package/dist/service/lambda/function/invoke/sim-lambda-process-output.d.ts +6 -1
  370. package/dist/service/lambda/function/invoke/sim-lambda-process-output.js +19 -6
  371. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.d.ts +15 -0
  372. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.js +18 -0
  373. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.d.ts +12 -0
  374. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.js +28 -0
  375. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.d.ts +46 -0
  376. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.js +104 -0
  377. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.d.ts +24 -0
  378. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.js +27 -0
  379. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.d.ts +43 -0
  380. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.js +112 -0
  381. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.d.ts +57 -0
  382. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.js +79 -0
  383. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.d.ts +10 -0
  384. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.js +15 -0
  385. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.d.ts +11 -0
  386. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.js +24 -0
  387. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.d.ts +50 -0
  388. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.js +43 -0
  389. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +17 -0
  390. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +12 -1
  391. package/dist/service/lambda/function/logging/sim-lambda-output.d.ts +56 -0
  392. package/dist/service/lambda/function/logging/sim-lambda-output.js +62 -0
  393. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.d.ts +8 -0
  394. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.js +27 -1
  395. package/dist/service/lambda/function/sim-lambda-function.d.ts +1 -1
  396. package/dist/service/lambda/function/sim-lambda-function.js +11 -9
  397. package/dist/service/lambda/function/sim-lambda-function.type.d.ts +15 -0
  398. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.d.ts +16 -0
  399. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.d.ts +22 -0
  400. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.js +17 -0
  401. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.js +1 -0
  402. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.d.ts +2 -0
  403. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.js +2 -1
  404. package/dist/service/lambda/function/url/sim-lambda-function-url-store.d.ts +2 -0
  405. package/dist/service/lambda/function/url/sim-lambda-function-url.d.ts +16 -0
  406. package/dist/service/lambda/function/url/sim-lambda-function-url.js +16 -1
  407. package/dist/service/lambda/index.d.ts +1 -0
  408. package/dist/service/lambda/index.js +1 -0
  409. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.d.ts +50 -0
  410. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.js +96 -0
  411. package/dist/service/lambda/serve/sim-lambda-controller.d.ts +14 -0
  412. package/dist/service/lambda/serve/sim-lambda-controller.js +27 -0
  413. package/dist/service/lambda/sim-lambda-commands.d.ts +10 -0
  414. package/dist/service/lambda/sim-lambda-commands.js +11 -0
  415. package/dist/service/lambda/sim-lambda.d.ts +12 -0
  416. package/dist/service/lambda/sim-lambda.js +13 -0
  417. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.d.ts +67 -0
  418. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.js +69 -0
  419. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +4 -31
  420. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +7 -6
  421. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +5 -0
  422. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +8 -4
  423. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +1 -14
  424. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +16 -8
  425. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.d.ts +41 -0
  426. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.js +1 -0
  427. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +14 -0
  428. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +32 -2
  429. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.d.ts +33 -0
  430. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.js +48 -0
  431. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.d.ts +16 -0
  432. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.js +44 -0
  433. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +8 -0
  434. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +27 -0
  435. package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
  436. package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +5 -0
  437. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +0 -3
  438. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +3 -0
  439. package/dist/service/s3/bucket/sim-s3-bucket-access.js +6 -2
  440. package/dist/service/s3/bucket/sim-s3-bucket-configuration.d.ts +84 -0
  441. package/dist/service/s3/bucket/sim-s3-bucket-configuration.js +115 -0
  442. package/dist/service/s3/bucket/sim-s3-bucket-maker.d.ts +31 -0
  443. package/dist/service/s3/bucket/sim-s3-bucket-maker.js +41 -0
  444. package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +10 -0
  445. package/dist/service/s3/bucket/sim-s3-bucket-objects.js +18 -0
  446. package/dist/service/s3/bucket/sim-s3-bucket-properties.d.ts +41 -0
  447. package/dist/service/s3/bucket/sim-s3-bucket-properties.js +1 -0
  448. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +11 -83
  449. package/dist/service/s3/bucket/sim-s3-bucket.js +14 -83
  450. package/dist/service/s3/bucket/sim-s3-public-read.fixture.d.ts +6 -0
  451. package/dist/service/s3/bucket/sim-s3-public-read.fixture.js +20 -6
  452. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.d.ts +58 -0
  453. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.js +73 -0
  454. package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +19 -1
  455. package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +20 -0
  456. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.d.ts +21 -0
  457. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.js +44 -0
  458. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +6 -0
  459. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +5 -4
  460. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +12 -5
  461. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.d.ts +21 -0
  462. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.js +30 -0
  463. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +1 -0
  464. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +14 -1
  465. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +41 -16
  466. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +3 -5
  467. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +7 -10
  468. package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +6 -1
  469. package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +5 -0
  470. package/dist/service/s3/command/copy-object/copy-object-builder.d.ts +10 -1
  471. package/dist/service/s3/command/copy-object/copy-object-builder.js +17 -1
  472. package/dist/service/s3/command/copy-object/copy-object.command.d.ts +11 -1
  473. package/dist/service/s3/command/copy-object/copy-object.handler.js +2 -1
  474. package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts +2 -2
  475. package/dist/service/s3/command/create-bucket/create-bucket.handler.js +4 -12
  476. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.command.d.ts +5 -1
  477. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.handler.js +7 -0
  478. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.d.ts +19 -0
  479. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.js +1 -0
  480. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.d.ts +30 -0
  481. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.js +38 -0
  482. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.d.ts +23 -0
  483. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.js +1 -0
  484. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.d.ts +22 -0
  485. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.js +42 -0
  486. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.d.ts +29 -0
  487. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.js +49 -0
  488. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.d.ts +22 -0
  489. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.js +30 -0
  490. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.d.ts +24 -0
  491. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.js +1 -0
  492. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.d.ts +31 -0
  493. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.js +39 -0
  494. package/dist/service/s3/command/get-object/get-object-authorizer.d.ts +11 -8
  495. package/dist/service/s3/command/get-object/get-object-authorizer.js +26 -34
  496. package/dist/service/s3/command/get-object/get-object-loader.d.ts +7 -3
  497. package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
  498. package/dist/service/s3/command/get-object/get-object.command.d.ts +2 -1
  499. package/dist/service/s3/command/get-object/get-object.handler.d.ts +4 -0
  500. package/dist/service/s3/command/get-object/get-object.handler.js +13 -7
  501. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.d.ts +29 -0
  502. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.js +1 -0
  503. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.d.ts +21 -0
  504. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.js +33 -0
  505. package/dist/service/s3/command/head-object/head-object-loader.js +2 -0
  506. package/dist/service/s3/command/head-object/head-object.command.d.ts +2 -1
  507. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +18 -0
  508. package/dist/service/s3/command/list-multipart-uploads/list-multipart-uploads.handler.js +1 -2
  509. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +1 -2
  510. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +5 -0
  511. package/dist/service/s3/command/list-objects/list-objects-page-builder.js +11 -6
  512. package/dist/service/s3/command/list-objects/list-objects.command.d.ts +5 -1
  513. package/dist/service/s3/command/list-objects/list-objects.handler.js +5 -0
  514. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +6 -0
  515. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +11 -5
  516. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +5 -1
  517. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +5 -0
  518. package/dist/service/s3/command/list-parts/list-parts.handler.js +3 -3
  519. package/dist/service/s3/command/multipart/sim-s3-multipart-access.js +1 -1
  520. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.d.ts +21 -0
  521. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.js +1 -0
  522. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.d.ts +31 -0
  523. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.js +41 -0
  524. package/dist/service/s3/command/put-object/put-object-builder.d.ts +5 -1
  525. package/dist/service/s3/command/put-object/put-object-builder.js +10 -1
  526. package/dist/service/s3/command/put-object/put-object.command.d.ts +5 -1
  527. package/dist/service/s3/command/put-object/put-object.handler.js +2 -1
  528. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.d.ts +37 -0
  529. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.js +1 -0
  530. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.d.ts +22 -0
  531. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.js +46 -0
  532. package/dist/service/s3/command/sim-s3-command.types.d.ts +6 -0
  533. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.d.ts +61 -0
  534. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.js +49 -0
  535. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.d.ts +30 -0
  536. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.js +27 -0
  537. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.d.ts +26 -0
  538. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.js +34 -0
  539. package/dist/service/s3/error/sim-s3-upload.error.d.ts +41 -0
  540. package/dist/service/s3/error/sim-s3-upload.error.js +47 -0
  541. package/dist/service/s3/error/sim-s3.error.d.ts +22 -34
  542. package/dist/service/s3/error/sim-s3.error.js +26 -40
  543. package/dist/service/s3/mount/sim-s3-mount.type.d.ts +10 -0
  544. package/dist/service/s3/notification/event/sim-s3-event-records.d.ts +3 -2
  545. package/dist/service/s3/notification/event/sim-s3-event-records.js +5 -3
  546. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +33 -8
  547. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +23 -9
  548. package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +5 -1
  549. package/dist/service/s3/notification/sim-s3-object-notifier.js +6 -0
  550. package/dist/service/s3/object/s3-key-encoding.d.ts +12 -0
  551. package/dist/service/s3/object/s3-key-encoding.js +14 -0
  552. package/dist/service/s3/object/s3-listing-encoding.d.ts +42 -0
  553. package/dist/service/s3/object/s3-listing-encoding.js +75 -0
  554. package/dist/service/s3/object/s3-object-response-headers.d.ts +40 -0
  555. package/dist/service/s3/object/s3-object-response-headers.js +49 -2
  556. package/dist/service/s3/object/s3-object-storage-report.d.ts +19 -0
  557. package/dist/service/s3/object/s3-object-storage-report.js +18 -0
  558. package/dist/service/s3/object/s3-object-summary.d.ts +2 -10
  559. package/dist/service/s3/object/s3-object-summary.js +1 -10
  560. package/dist/service/s3/object/s3-object-tags.d.ts +61 -0
  561. package/dist/service/s3/object/s3-object-tags.js +77 -0
  562. package/dist/service/s3/object/s3-object.d.ts +49 -0
  563. package/dist/service/s3/object/s3-object.js +52 -1
  564. package/dist/service/s3/object/s3-server-side-encryption.d.ts +30 -0
  565. package/dist/service/s3/object/s3-server-side-encryption.js +42 -0
  566. package/dist/service/s3/object/s3-storage-class.d.ts +45 -0
  567. package/dist/service/s3/object/s3-storage-class.js +67 -0
  568. package/dist/service/s3/object/s3-write-metadata.d.ts +17 -3
  569. package/dist/service/s3/object/s3-write-metadata.js +43 -0
  570. package/dist/service/s3/object/s3-write-storage.d.ts +27 -0
  571. package/dist/service/s3/object/s3-write-storage.js +21 -0
  572. package/dist/service/s3/object/s3-write-tagging.d.ts +24 -0
  573. package/dist/service/s3/object/s3-write-tagging.js +19 -0
  574. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +12 -0
  575. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +2 -0
  576. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.d.ts +9 -0
  577. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.js +23 -0
  578. package/dist/service/s3/serve/api/sim-s3-api-bucket-routes.js +22 -0
  579. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.d.ts +4 -0
  580. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.js +10 -0
  581. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.d.ts +7 -0
  582. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.js +30 -0
  583. package/dist/service/s3/serve/api/sim-s3-api-head-output.d.ts +4 -2
  584. package/dist/service/s3/serve/api/sim-s3-api-head-output.js +8 -2
  585. package/dist/service/s3/serve/api/sim-s3-api-input.d.ts +0 -6
  586. package/dist/service/s3/serve/api/sim-s3-api-input.js +2 -13
  587. package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts +5 -0
  588. package/dist/service/s3/serve/api/sim-s3-api-listing.js +5 -0
  589. package/dist/service/s3/serve/api/sim-s3-api-object-input.d.ts +16 -0
  590. package/dist/service/s3/serve/api/sim-s3-api-object-input.js +34 -7
  591. package/dist/service/s3/serve/api/sim-s3-api-object-output.d.ts +18 -1
  592. package/dist/service/s3/serve/api/sim-s3-api-object-output.js +21 -2
  593. package/dist/service/s3/serve/api/sim-s3-api-object-routes.js +22 -1
  594. package/dist/service/s3/serve/api/sim-s3-api-output.d.ts +5 -1
  595. package/dist/service/s3/serve/api/sim-s3-api-output.js +16 -5
  596. package/dist/service/s3/serve/api/sim-s3-api-request.d.ts +6 -5
  597. package/dist/service/s3/serve/api/sim-s3-api-request.js +55 -11
  598. package/dist/service/s3/serve/api/sim-s3-api-routes.js +2 -2
  599. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.d.ts +9 -0
  600. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.js +14 -0
  601. package/dist/service/s3/serve/api/sim-s3-api.d.ts +7 -1
  602. package/dist/service/s3/serve/api/sim-s3-api.js +7 -1
  603. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +1 -5
  604. package/dist/service/s3/serve/sim-s3-rest-controller.js +3 -17
  605. package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts +3 -0
  606. package/dist/service/s3/serve/sim-s3-rest-object-reader.js +8 -1
  607. package/dist/service/s3/serve/sim-s3-rest-upload.d.ts +20 -0
  608. package/dist/service/s3/serve/sim-s3-rest-upload.js +30 -0
  609. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +1 -0
  610. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +2 -0
  611. package/dist/service/s3/serve/website/sim-s3-website-object.js +3 -0
  612. package/dist/service/s3/sim-s3-commands.d.ts +10 -0
  613. package/dist/service/s3/sim-s3-commands.js +13 -0
  614. package/dist/service/s3/sim-s3-operations.d.ts +11 -4
  615. package/dist/service/s3/sim-s3-operations.js +17 -4
  616. package/dist/service/s3/sim-s3-tagging-operations.d.ts +21 -0
  617. package/dist/service/s3/sim-s3-tagging-operations.js +25 -0
  618. package/dist/service/s3/sim-s3.d.ts +28 -0
  619. package/dist/service/s3/sim-s3.js +38 -0
  620. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.d.ts +34 -0
  621. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.js +34 -0
  622. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.d.ts +9 -0
  623. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.js +24 -0
  624. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +5 -4
  625. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +5 -3
  626. package/dist/service/s3/upload/sim-s3-completed-upload.js +5 -1
  627. package/dist/service/s3/upload/sim-s3-multipart-upload.d.ts +18 -0
  628. package/dist/service/s3/upload/sim-s3-multipart-upload.js +8 -0
  629. package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +6 -0
  630. package/dist/service/s3/upload/sim-s3-multipart-uploads.js +5 -0
  631. package/dist/util/background/background-clock-waits.d.ts +52 -0
  632. package/dist/util/background/background-clock-waits.js +76 -0
  633. package/dist/util/background/background-jitter.js +1 -0
  634. package/dist/util/background/background-pending-tasks.d.ts +55 -0
  635. package/dist/util/background/background-pending-tasks.js +117 -0
  636. package/dist/util/background/background-settled-tasks.d.ts +4 -1
  637. package/dist/util/background/background-settled-tasks.js +4 -1
  638. package/dist/util/background/background.d.ts +43 -0
  639. package/dist/util/background/background.js +27 -19
  640. package/dist/util/background/non-deterministic-background.d.ts +12 -0
  641. package/dist/util/background/non-deterministic-background.js +24 -20
  642. package/dist/util/clock/sim-clock-control.js +23 -2
  643. package/docs/services/apigateway/README.md +3 -1
  644. package/docs/services/athena/README.md +126 -3
  645. package/docs/services/cloudformation/README.md +831 -67
  646. package/docs/services/cognito/README.md +5 -0
  647. package/docs/services/dynamodb/README.md +86 -11
  648. package/docs/services/lambda/README.md +603 -39
  649. package/docs/services/s3/README.md +688 -57
  650. package/package.json +8 -2
@@ -1,4 +1,4 @@
1
- import { xmlDocument, xmlValue } from "../../../../util/xml/xml-writer.js";
1
+ import { xmlDocument, xmlElement, xmlValue, } from "../../../../util/xml/xml-writer.js";
2
2
  import { simS3ObjectResponseHeaders } from "../../object/s3-object-response-headers.js";
3
3
  import { simS3SystemMetadataHeadersFrom } from "../../object/s3-system-metadata-read.js";
4
4
  /**
@@ -12,25 +12,44 @@ export function simS3CopyObjectXml(output) {
12
12
  return xmlDocument("CopyObjectResult", xmlValue("ETag", result.ETag) +
13
13
  xmlValue("LastModified", result.LastModified));
14
14
  }
15
+ /**
16
+ * Write the tags on an Object as the document real S3 answers them with.
17
+ *
18
+ * An Object nobody has tagged answers with an empty `TagSet` element rather
19
+ * than none at all, which is what tells a client the Object exists and carries
20
+ * no tags.
21
+ */
22
+ export function simS3ObjectTaggingXml(output) {
23
+ return xmlDocument("Tagging", xmlElement("TagSet", (output.TagSet ?? [])
24
+ .map((tag) => xmlElement("Tag", xmlValue("Key", tag.Key) + xmlValue("Value", tag.Value)))
25
+ .join("")));
26
+ }
15
27
  /**
16
28
  * Answer a read with the Object itself, headers and all.
17
29
  *
30
+ * The headers the read named in its `response-` parameters are served in place
31
+ * of the Object's own, leaving what the Object was written with alone.
32
+ *
18
33
  * A read that asked for part of the Object is answered `206 Partial Content`
19
34
  * and says which part it carries, because a client reading a large Object in
20
35
  * pieces at once writes each response at the offset it asked for, and a `200`
21
36
  * carrying the whole Object would be written over its neighbours.
22
37
  */
23
- export async function simS3GetObjectResponse(output) {
38
+ export async function simS3GetObjectResponse(output, overrides) {
24
39
  const body = await objectBodyBytes(output["Body"]);
25
40
  const contentRange = output["ContentRange"];
26
41
  return new Response(body, {
27
42
  status: contentRange === undefined ? 200 : 206,
28
43
  headers: simS3ObjectResponseHeaders({
29
44
  metadata: simS3SystemMetadataHeadersFrom(output),
45
+ userMetadata: output["Metadata"],
46
+ overrides,
30
47
  bodyLength: body.length,
31
48
  etag: output["ETag"],
32
49
  lastModified: output["LastModified"],
33
50
  contentRange,
51
+ storageClass: output["StorageClass"],
52
+ serverSideEncryption: output["ServerSideEncryption"],
34
53
  }),
35
54
  });
36
55
  }
@@ -1,4 +1,4 @@
1
- import { copyObjectInput, createMultipartUploadInput, getObjectInput, objectInput, putObjectInput, simS3CopySourceHeader, } from "./sim-s3-api-object-input.js";
1
+ import { copyObjectInput, createMultipartUploadInput, getObjectInput, objectInput, putObjectInput, putObjectTaggingInput, simS3CopySourceHeader, versionedObjectInput, } from "./sim-s3-api-object-input.js";
2
2
  import { completeMultipartUploadInput, uploadInput, uploadPartInput, } from "./sim-s3-api-multipart-input.js";
3
3
  /**
4
4
  * The Object-level S3 operations this endpoint serves.
@@ -16,6 +16,13 @@ export const simS3ObjectApiRoutes = [
16
16
  commandName: "GetObjectCommand",
17
17
  input: getObjectInput,
18
18
  },
19
+ {
20
+ method: "GET",
21
+ target: "object",
22
+ subResource: "tagging",
23
+ commandName: "GetObjectTaggingCommand",
24
+ input: versionedObjectInput,
25
+ },
19
26
  {
20
27
  method: "GET",
21
28
  target: "object",
@@ -56,6 +63,13 @@ export const simS3ObjectApiRoutes = [
56
63
  commandName: "UploadPartCommand",
57
64
  input: uploadPartInput,
58
65
  },
66
+ {
67
+ method: "PUT",
68
+ target: "object",
69
+ subResource: "tagging",
70
+ commandName: "PutObjectTaggingCommand",
71
+ input: putObjectTaggingInput,
72
+ },
59
73
  {
60
74
  // A copy and an upload are both a `PUT` on an Object path, and the copy
61
75
  // names its source in a header. Matched first, so an upload carrying no
@@ -72,6 +86,13 @@ export const simS3ObjectApiRoutes = [
72
86
  commandName: "PutObjectCommand",
73
87
  input: putObjectInput,
74
88
  },
89
+ {
90
+ method: "DELETE",
91
+ target: "object",
92
+ subResource: "tagging",
93
+ commandName: "DeleteObjectTaggingCommand",
94
+ input: versionedObjectInput,
95
+ },
75
96
  {
76
97
  method: "DELETE",
77
98
  target: "object",
@@ -5,5 +5,9 @@
5
5
  * the operation rather than of its output: a listing answers in XML, a read
6
6
  * answers with the Object itself, and a write answers with a status and
7
7
  * headers alone.
8
+ *
9
+ * The request's query string is read alongside the output because a read can
10
+ * name the headers it wants served in place of the Object's own, and those are
11
+ * a property of the request rather than of what the operation answered.
8
12
  */
9
- export declare function simS3ApiResponse(commandName: string, output: unknown): Promise<Response>;
13
+ export declare function simS3ApiResponse(commandName: string, output: unknown, query: URLSearchParams): Promise<Response>;
@@ -1,8 +1,9 @@
1
- import { deleteResultXml, notificationConfigurationXml, publicAccessBlockXml, } from "./sim-s3-api-configuration-output.js";
1
+ import { deleteResultXml, encryptionConfigurationXml, notificationConfigurationXml, publicAccessBlockXml, } from "./sim-s3-api-configuration-output.js";
2
2
  import { simS3HeadBucketResponse, simS3HeadObjectResponse, } from "./sim-s3-api-head-output.js";
3
3
  import { simS3ListBucketsXml, simS3ListObjectsXml, } from "./sim-s3-api-listing.js";
4
4
  import { simS3MultipartResponse } from "./sim-s3-api-multipart-output.js";
5
- import { simS3CopyObjectXml, simS3GetObjectResponse, } from "./sim-s3-api-object-output.js";
5
+ import { simS3CopyObjectXml, simS3GetObjectResponse, simS3ObjectTaggingXml, } from "./sim-s3-api-object-output.js";
6
+ import { simS3ResponseHeaderOverrides } from "../../object/s3-object-response-headers.js";
6
7
  const xmlContentType = { "content-type": "application/xml" };
7
8
  /**
8
9
  * Build the HTTP response an S3 operation's output is sent as.
@@ -11,8 +12,12 @@ const xmlContentType = { "content-type": "application/xml" };
11
12
  * the operation rather than of its output: a listing answers in XML, a read
12
13
  * answers with the Object itself, and a write answers with a status and
13
14
  * headers alone.
15
+ *
16
+ * The request's query string is read alongside the output because a read can
17
+ * name the headers it wants served in place of the Object's own, and those are
18
+ * a property of the request rather than of what the operation answered.
14
19
  */
15
- export async function simS3ApiResponse(commandName, output) {
20
+ export async function simS3ApiResponse(commandName, output, query) {
16
21
  const value = output;
17
22
  switch (commandName) {
18
23
  case "ListBucketsCommand": {
@@ -25,7 +30,7 @@ export async function simS3ApiResponse(commandName, output) {
25
30
  return xml(simS3ListObjectsXml(value, 2));
26
31
  }
27
32
  case "GetObjectCommand": {
28
- return await simS3GetObjectResponse(value);
33
+ return await simS3GetObjectResponse(value, simS3ResponseHeaderOverrides(query));
29
34
  }
30
35
  case "GetBucketPolicyCommand": {
31
36
  // A Bucket policy is a JSON document, and real S3 answers this one
@@ -39,14 +44,20 @@ export async function simS3ApiResponse(commandName, output) {
39
44
  case "GetPublicAccessBlockCommand": {
40
45
  return xml(publicAccessBlockXml(value));
41
46
  }
47
+ case "GetBucketEncryptionCommand": {
48
+ return xml(encryptionConfigurationXml(value));
49
+ }
42
50
  case "GetBucketNotificationConfigurationCommand": {
43
51
  return xml(notificationConfigurationXml(value));
44
52
  }
53
+ case "GetObjectTaggingCommand": {
54
+ return xml(simS3ObjectTaggingXml(value));
55
+ }
45
56
  case "DeleteObjectsCommand": {
46
57
  return xml(deleteResultXml(value));
47
58
  }
48
59
  case "HeadObjectCommand": {
49
- return simS3HeadObjectResponse(value);
60
+ return simS3HeadObjectResponse(value, simS3ResponseHeaderOverrides(query));
50
61
  }
51
62
  case "HeadBucketCommand": {
52
63
  return simS3HeadBucketResponse(value);
@@ -17,12 +17,13 @@ export interface SimS3ApiRequest {
17
17
  readonly body: Uint8Array;
18
18
  }
19
19
  /**
20
- * Read a request that arrived at the served AWS API endpoint as an S3 request.
20
+ * Read a request addressed to the S3 REST API as an S3 request.
21
21
  *
22
- * Only path-style addressing is read here. A virtual-host request names its
23
- * Bucket in the hostname, and simulated Route 53 resolves that to the Bucket's
24
- * own endpoint before this endpoint is ever reached, so a request that gets
25
- * this far put its Bucket in the path.
22
+ * Both of the addressing styles real S3 offers are read, because both arrive
23
+ * here. A client given an endpoint URL sends path style, with the Bucket as
24
+ * the first path segment. An SDK resolving S3's own endpoint sends virtual
25
+ * host style, with the Bucket in the hostname, and function code bundling the
26
+ * SDK reaches this endpoint with exactly that.
26
27
  */
27
28
  export declare function readSimS3ApiRequest(request: Request, body: Uint8Array): SimS3ApiRequest;
28
29
  /**
@@ -1,19 +1,19 @@
1
1
  /**
2
- * Read a request that arrived at the served AWS API endpoint as an S3 request.
2
+ * The hostname label S3's own REST endpoints carry.
3
+ */
4
+ const s3EndpointLabel = "s3";
5
+ /**
6
+ * Read a request addressed to the S3 REST API as an S3 request.
3
7
  *
4
- * Only path-style addressing is read here. A virtual-host request names its
5
- * Bucket in the hostname, and simulated Route 53 resolves that to the Bucket's
6
- * own endpoint before this endpoint is ever reached, so a request that gets
7
- * this far put its Bucket in the path.
8
+ * Both of the addressing styles real S3 offers are read, because both arrive
9
+ * here. A client given an endpoint URL sends path style, with the Bucket as
10
+ * the first path segment. An SDK resolving S3's own endpoint sends virtual
11
+ * host style, with the Bucket in the hostname, and function code bundling the
12
+ * SDK reaches this endpoint with exactly that.
8
13
  */
9
14
  export function readSimS3ApiRequest(request, body) {
10
15
  const url = new URL(request.url);
11
- // The first segment is the Bucket and everything after it is the key, which
12
- // can itself contain slashes.
13
- const path = url.pathname.replace(/^\//, "");
14
- const separator = path.indexOf("/");
15
- const bucketName = separator === -1 ? path : path.slice(0, separator);
16
- const objectKey = separator === -1 ? "" : path.slice(separator + 1);
16
+ const { bucketName, objectKey } = simS3ApiRequestTargetNames(url.hostname, url.pathname.replace(/^\//, ""));
17
17
  return {
18
18
  method: request.method,
19
19
  bucketName: decodeURIComponent(bucketName),
@@ -23,6 +23,50 @@ export function readSimS3ApiRequest(request, body) {
23
23
  body,
24
24
  };
25
25
  }
26
+ /**
27
+ * Split what a request addressed into the Bucket it names and the Object key
28
+ * below it, still encoded as they were sent.
29
+ *
30
+ * A virtual host request names its Bucket in the hostname, which leaves its
31
+ * whole path as the key. A path style request names both in the path, where
32
+ * the first segment is the Bucket and everything after it is the key, which
33
+ * can itself contain slashes.
34
+ */
35
+ function simS3ApiRequestTargetNames(hostname, path) {
36
+ const hostedBucketName = simS3VirtualHostBucketName(hostname);
37
+ if (hostedBucketName !== undefined) {
38
+ return { bucketName: hostedBucketName, objectKey: path };
39
+ }
40
+ const separator = path.indexOf("/");
41
+ if (separator === -1) {
42
+ return { bucketName: path, objectKey: "" };
43
+ }
44
+ return {
45
+ bucketName: path.slice(0, separator),
46
+ objectKey: path.slice(separator + 1),
47
+ };
48
+ }
49
+ /**
50
+ * The Bucket a virtual host style hostname names, or nothing for a hostname
51
+ * that names none.
52
+ *
53
+ * S3's own endpoint hostnames carry an `s3` label, and virtual host style puts
54
+ * the Bucket in front of it, as in `<bucket>.s3.<region>.amazonaws.com`. Path
55
+ * style is the same hostname with nothing in front. The labels before the
56
+ * first `s3` label are the Bucket, and an empty set of them is path style.
57
+ *
58
+ * A Bucket name can contain dots. One Bucket is then several hostname labels,
59
+ * joined back together here.
60
+ *
61
+ * A hostname carrying no `s3` label names no Bucket. That covers the local
62
+ * endpoint an `--endpoint-url` client sends, which addresses every service on
63
+ * one hostname and can only be path style.
64
+ */
65
+ function simS3VirtualHostBucketName(hostname) {
66
+ const labels = hostname.split(".");
67
+ const endpoint = labels.indexOf(s3EndpointLabel);
68
+ return endpoint <= 0 ? undefined : labels.slice(0, endpoint).join(".");
69
+ }
26
70
  /**
27
71
  * Decode an Object key from the path it was sent in.
28
72
  *
@@ -13,6 +13,8 @@ const servedSubResources = [
13
13
  "delete",
14
14
  "uploads",
15
15
  "uploadId",
16
+ "encryption",
17
+ "tagging",
16
18
  ];
17
19
  /**
18
20
  * Every sub-resource S3 defines, served here or not.
@@ -29,7 +31,6 @@ const knownSubResources = new Set([
29
31
  "acl",
30
32
  "analytics",
31
33
  "cors",
32
- "encryption",
33
34
  "intelligent-tiering",
34
35
  "inventory",
35
36
  "legal-hold",
@@ -45,7 +46,6 @@ const knownSubResources = new Set([
45
46
  "restore",
46
47
  "retention",
47
48
  "select",
48
- "tagging",
49
49
  "torrent",
50
50
  "versioning",
51
51
  "versions",
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Read the tag set a PutObjectTagging body carries.
3
+ *
4
+ * This sits apart from the other request-body readers because it is the only
5
+ * one about an Object rather than about a Bucket's configuration. A tag naming
6
+ * no key comes through with none, so the tagging command refuses it rather than
7
+ * the reader silently dropping it.
8
+ */
9
+ export declare function readSimS3Tagging(body: string): object;
@@ -0,0 +1,14 @@
1
+ import { parseXmlDocument, xmlChild, xmlChildren, xmlText, } from "../../../../util/xml/xml-document.js";
2
+ /**
3
+ * Read the tag set a PutObjectTagging body carries.
4
+ *
5
+ * This sits apart from the other request-body readers because it is the only
6
+ * one about an Object rather than about a Bucket's configuration. A tag naming
7
+ * no key comes through with none, so the tagging command refuses it rather than
8
+ * the reader silently dropping it.
9
+ */
10
+ export function readSimS3Tagging(body) {
11
+ return {
12
+ TagSet: xmlChildren(xmlChild(parseXmlDocument(body), "TagSet"), "Tag").map((tag) => ({ Key: xmlText(tag, "Key"), Value: xmlText(tag, "Value") })),
13
+ };
14
+ }
@@ -22,7 +22,13 @@ export declare class SimS3ApiEndpoint {
22
22
  * The Region is the one the request was signed for, read from its credential
23
23
  * scope, so it arrives as whatever the client wrote rather than as a Region
24
24
  * the simulator has already recognised.
25
+ *
26
+ * A request nothing has authenticated arrives with no caller, and runs as
27
+ * the ambient caller of whatever sent it, in the same way an intercepted SDK
28
+ * client's Command does. A sim Lambda's outbound call relies on that. Its
29
+ * signature is over placeholder credentials, and the invocation is already
30
+ * running as the execution Role.
25
31
  */
26
- handle(request: Request, body: Uint8Array, caller: SimAwsCaller, regionName: string): Promise<Response>;
32
+ handle(request: Request, body: Uint8Array, caller: SimAwsCaller | undefined, regionName: string): Promise<Response>;
27
33
  }
28
34
  export {};
@@ -30,6 +30,12 @@ export class SimS3ApiEndpoint {
30
30
  * The Region is the one the request was signed for, read from its credential
31
31
  * scope, so it arrives as whatever the client wrote rather than as a Region
32
32
  * the simulator has already recognised.
33
+ *
34
+ * A request nothing has authenticated arrives with no caller, and runs as
35
+ * the ambient caller of whatever sent it, in the same way an intercepted SDK
36
+ * client's Command does. A sim Lambda's outbound call relies on that. Its
37
+ * signature is over placeholder credentials, and the invocation is already
38
+ * running as the execution Role.
33
39
  */
34
40
  async handle(request, body, caller, regionName) {
35
41
  const apiRequest = readSimS3ApiRequest(request, body);
@@ -47,7 +53,7 @@ export class SimS3ApiEndpoint {
47
53
  }
48
54
  try {
49
55
  const output = await this.dispatcher.dispatch(makeSimSdkWireCommand(route.commandName, route.input(apiRequest)), makeSimSdkWireClient(s3ServiceId, regionName), undefined, caller);
50
- return await simS3ApiResponse(route.commandName, output);
56
+ return await simS3ApiResponse(route.commandName, output, apiRequest.query);
51
57
  }
52
58
  catch (error) {
53
59
  if (error instanceof SimSdkUnsupportedCommandError) {
@@ -30,11 +30,7 @@ export declare class SimS3RestController {
30
30
  */
31
31
  private deleteObject;
32
32
  /**
33
- * Store an uploaded Object.
34
- *
35
- * The stated checksum is checked before anything is stored, as real S3 does,
36
- * so an upload that would be refused there is refused here rather than
37
- * quietly landing in the Bucket.
33
+ * Store an uploaded Object, as whatever the request said about it.
38
34
  */
39
35
  private putObject;
40
36
  private s3For;
@@ -1,6 +1,6 @@
1
1
  import { SimS3RestErrorResponse } from "./sim-s3-rest-error-response.js";
2
2
  import { SimS3RestObjectReader } from "./sim-s3-rest-object-reader.js";
3
- import { SimS3UploadChecksum } from "./sim-s3-upload-checksum.js";
3
+ import { simS3RestUploadInput } from "./sim-s3-rest-upload.js";
4
4
  /**
5
5
  * Serves Object requests that arrived at the simulated S3 REST endpoint.
6
6
  *
@@ -51,24 +51,10 @@ export class SimS3RestController {
51
51
  return new Response(undefined, { status: 204 });
52
52
  }
53
53
  /**
54
- * Store an uploaded Object.
55
- *
56
- * The stated checksum is checked before anything is stored, as real S3 does,
57
- * so an upload that would be refused there is refused here rather than
58
- * quietly landing in the Bucket.
54
+ * Store an uploaded Object, as whatever the request said about it.
59
55
  */
60
56
  async putObject(route, serviceRequest) {
61
- const { request, body } = serviceRequest;
62
- SimS3UploadChecksum.stated(new URL(request.url), request.headers)?.check(body);
63
- const contentType = request.headers.get("content-type") ?? undefined;
64
- await this.s3For(route).putObject({
65
- input: {
66
- Bucket: route.bucket.bucketName,
67
- Key: route.objectKey,
68
- Body: body ?? new Uint8Array(),
69
- ...(contentType !== undefined && { ContentType: contentType }),
70
- },
71
- }, { caller: serviceRequest.caller.toCaller() });
57
+ await this.s3For(route).putObject({ input: simS3RestUploadInput(route, serviceRequest) }, { caller: serviceRequest.caller.toCaller() });
72
58
  return new Response(undefined, { status: 200 });
73
59
  }
74
60
  s3For(route) {
@@ -8,6 +8,9 @@ import type { SimAwsServiceRequest } from "../../../serve/controller/sim-service
8
8
  * response real S3 stops short of sending, so they are read the same way here
9
9
  * and differ only in what comes back.
10
10
  *
11
+ * Either can name the headers it wants served in place of the Object's own,
12
+ * which is what a presigned URL handing a browser a download does.
13
+ *
11
14
  * A `GET` may ask for part of the Object, and is answered with that part and
12
15
  * `206 Partial Content`. A `HEAD` may not. Simulated S3 describes the whole
13
16
  * Object however it is asked about, and HeadObject does the same for an
@@ -1,4 +1,4 @@
1
- import { simS3ObjectResponseHeaders } from "../object/s3-object-response-headers.js";
1
+ import { simS3ObjectResponseHeaders, simS3ResponseHeaderOverrides, } from "../object/s3-object-response-headers.js";
2
2
  import { simS3SystemMetadataHeadersFrom } from "../object/s3-system-metadata-read.js";
3
3
  /**
4
4
  * Answers a `GET` or `HEAD` at the simulated S3 REST endpoint.
@@ -7,6 +7,9 @@ import { simS3SystemMetadataHeadersFrom } from "../object/s3-system-metadata-rea
7
7
  * response real S3 stops short of sending, so they are read the same way here
8
8
  * and differ only in what comes back.
9
9
  *
10
+ * Either can name the headers it wants served in place of the Object's own,
11
+ * which is what a presigned URL handing a browser a download does.
12
+ *
10
13
  * A `GET` may ask for part of the Object, and is answered with that part and
11
14
  * `206 Partial Content`. A `HEAD` may not. Simulated S3 describes the whole
12
15
  * Object however it is asked about, and HeadObject does the same for an
@@ -29,10 +32,14 @@ export class SimS3RestObjectReader {
29
32
  const body = await bodyBytes(output.Body);
30
33
  const headers = simS3ObjectResponseHeaders({
31
34
  metadata: simS3SystemMetadataHeadersFrom(output),
35
+ userMetadata: output.Metadata,
36
+ overrides: simS3ResponseHeaderOverrides(new URL(request.url).searchParams),
32
37
  bodyLength: body.length,
33
38
  etag: output.ETag,
34
39
  lastModified: output.LastModified,
35
40
  contentRange: output.ContentRange,
41
+ storageClass: output.StorageClass,
42
+ serverSideEncryption: output.ServerSideEncryption,
36
43
  });
37
44
  if (head) {
38
45
  return new Response(undefined, { status: 200, headers });
@@ -0,0 +1,20 @@
1
+ import type { SimAwsServiceRequest } from "../../../serve/controller/sim-service-controller.js";
2
+ import type { SimPutObjectCommandInput } from "../command/put-object/put-object.command.js";
3
+ import type { SimS3RestObjectRoute } from "./sim-s3-route.js";
4
+ /**
5
+ * The write an upload over the S3 REST endpoint asks for.
6
+ *
7
+ * A presigned `PUT` states everything about the Object in its headers, since
8
+ * that is the only place it has to put anything. The metadata headers are read
9
+ * by the same list a `PutObjectCommand` sets them with, so an upload here can
10
+ * describe an Object as fully as an in-process write can. A static site upload
11
+ * usually wants `cache-control` and `content-disposition`.
12
+ *
13
+ * The stated checksum is checked while the request is read, as real S3 checks
14
+ * it before storing anything, so an upload that would be refused there is
15
+ * refused here instead of quietly landing in the Bucket.
16
+ *
17
+ * `x-amz-tagging` is read alongside them, being the tags S3 holds against the
18
+ * Object rather than metadata it hands back on a read.
19
+ */
20
+ export declare function simS3RestUploadInput(route: SimS3RestObjectRoute, serviceRequest: SimAwsServiceRequest): SimPutObjectCommandInput;
@@ -0,0 +1,30 @@
1
+ import { simS3WriteMetadataHeaders } from "../object/s3-write-metadata.js";
2
+ import { SimS3UploadChecksum } from "./sim-s3-upload-checksum.js";
3
+ /**
4
+ * The write an upload over the S3 REST endpoint asks for.
5
+ *
6
+ * A presigned `PUT` states everything about the Object in its headers, since
7
+ * that is the only place it has to put anything. The metadata headers are read
8
+ * by the same list a `PutObjectCommand` sets them with, so an upload here can
9
+ * describe an Object as fully as an in-process write can. A static site upload
10
+ * usually wants `cache-control` and `content-disposition`.
11
+ *
12
+ * The stated checksum is checked while the request is read, as real S3 checks
13
+ * it before storing anything, so an upload that would be refused there is
14
+ * refused here instead of quietly landing in the Bucket.
15
+ *
16
+ * `x-amz-tagging` is read alongside them, being the tags S3 holds against the
17
+ * Object rather than metadata it hands back on a read.
18
+ */
19
+ export function simS3RestUploadInput(route, serviceRequest) {
20
+ const { request, body } = serviceRequest;
21
+ SimS3UploadChecksum.stated(new URL(request.url), request.headers)?.check(body);
22
+ const tagging = request.headers.get("x-amz-tagging");
23
+ return {
24
+ Bucket: route.bucket.bucketName,
25
+ Key: route.objectKey,
26
+ Body: body ?? new Uint8Array(),
27
+ ...simS3WriteMetadataHeaders(request.headers),
28
+ ...(tagging !== null && { Tagging: tagging }),
29
+ };
30
+ }
@@ -46,6 +46,7 @@ export class SimS3WebsiteObjectLoader {
46
46
  return new SimS3WebsiteObject({
47
47
  body: await simS3BodyToBuffer(output.Body),
48
48
  metadata: simS3SystemMetadataHeadersFrom(output),
49
+ userMetadata: output.Metadata,
49
50
  etag: output.ETag,
50
51
  lastModified: output.LastModified,
51
52
  });
@@ -1,6 +1,7 @@
1
1
  interface SimS3WebsiteObjectProperties {
2
2
  readonly body: Buffer;
3
3
  readonly metadata?: Readonly<Record<string, string>> | undefined;
4
+ readonly userMetadata?: Readonly<Record<string, string>> | undefined;
4
5
  readonly etag?: string | undefined;
5
6
  readonly lastModified?: Date | undefined;
6
7
  }
@@ -14,6 +15,7 @@ interface SimS3WebsiteObjectProperties {
14
15
  export declare class SimS3WebsiteObject {
15
16
  readonly body: Buffer;
16
17
  private readonly metadata;
18
+ private readonly userMetadata;
17
19
  private readonly etag;
18
20
  private readonly lastModified;
19
21
  constructor(properties: SimS3WebsiteObjectProperties);
@@ -9,11 +9,13 @@ import { simS3ObjectResponseHeaders } from "../../object/s3-object-response-head
9
9
  export class SimS3WebsiteObject {
10
10
  body;
11
11
  metadata;
12
+ userMetadata;
12
13
  etag;
13
14
  lastModified;
14
15
  constructor(properties) {
15
16
  this.body = properties.body;
16
17
  this.metadata = properties.metadata;
18
+ this.userMetadata = properties.userMetadata;
17
19
  this.etag = properties.etag;
18
20
  this.lastModified = properties.lastModified;
19
21
  }
@@ -23,6 +25,7 @@ export class SimS3WebsiteObject {
23
25
  headers() {
24
26
  return simS3ObjectResponseHeaders({
25
27
  metadata: this.metadata,
28
+ userMetadata: this.userMetadata,
26
29
  bodyLength: this.body.length,
27
30
  etag: this.etag,
28
31
  lastModified: this.lastModified,
@@ -4,11 +4,13 @@ import type { SimIamInterServiceAuthZ } from "../iam/authorize/sim-iam-inter-ser
4
4
  import type { SimS3Bucket, SimS3BucketName } from "./bucket/sim-s3-bucket.js";
5
5
  import { SimS3BucketCommands } from "./command/bucket/sim-s3-bucket-commands.js";
6
6
  import { SimS3BucketPolicyCommands } from "./command/bucket-policy/sim-s3-bucket-policy-commands.js";
7
+ import { SimS3EncryptionCommands } from "./command/encryption/sim-s3-encryption-commands.js";
7
8
  import { SimS3LifecycleCommands } from "./command/lifecycle/sim-s3-lifecycle-commands.js";
8
9
  import { SimS3MultipartCommands } from "./command/multipart/sim-s3-multipart-commands.js";
9
10
  import { SimS3NotificationCommands } from "./command/notification/sim-s3-notification-commands.js";
10
11
  import { SimS3ObjectCommands } from "./command/object/sim-s3-object-commands.js";
11
12
  import { SimS3ObjectLockCommands } from "./command/object-lock/sim-s3-object-lock-commands.js";
13
+ import { SimS3ObjectTaggingCommands } from "./command/tagging/sim-s3-object-tagging-commands.js";
12
14
  import { SimS3PublicAccessBlockCommands } from "./command/public-access-block/sim-s3-public-access-block-commands.js";
13
15
  import { SimS3VersioningCommands } from "./command/versioning/sim-s3-versioning-commands.js";
14
16
  import type { SimS3NotificationDestinations } from "./notification/destination/sim-s3-notification-destination.js";
@@ -55,10 +57,18 @@ export declare class SimS3Commands {
55
57
  readonly notifications: SimS3NotificationCommands;
56
58
  readonly lifecycles: SimS3LifecycleCommands;
57
59
  readonly versioning: SimS3VersioningCommands;
60
+ readonly encryption: SimS3EncryptionCommands;
58
61
  readonly objectLock: SimS3ObjectLockCommands;
59
62
  readonly objects: SimS3ObjectCommands;
63
+ readonly objectTagging: SimS3ObjectTaggingCommands;
60
64
  readonly multipartUploads: SimS3MultipartCommands;
61
65
  readonly objectNotifier: SimS3ObjectNotifier;
66
+ /**
67
+ * The scheduler and clock every command area here shares, which a
68
+ * simulator-only control on the service facade needs to hand a Bucket it
69
+ * makes outside the commands.
70
+ */
71
+ readonly background: BackgroundScheduler;
62
72
  constructor(properties: SimS3CommandsProperties);
63
73
  }
64
74
  export {};
@@ -2,11 +2,13 @@ import { BackgroundTasks, } from "../../util/background/background.js";
2
2
  import { simIamInRegion } from "../iam/authorize/sim-iam-region-auth-z.js";
3
3
  import { SimS3BucketCommands } from "./command/bucket/sim-s3-bucket-commands.js";
4
4
  import { SimS3BucketPolicyCommands } from "./command/bucket-policy/sim-s3-bucket-policy-commands.js";
5
+ import { SimS3EncryptionCommands } from "./command/encryption/sim-s3-encryption-commands.js";
5
6
  import { SimS3LifecycleCommands } from "./command/lifecycle/sim-s3-lifecycle-commands.js";
6
7
  import { SimS3MultipartCommands } from "./command/multipart/sim-s3-multipart-commands.js";
7
8
  import { SimS3NotificationCommands } from "./command/notification/sim-s3-notification-commands.js";
8
9
  import { SimS3ObjectCommands } from "./command/object/sim-s3-object-commands.js";
9
10
  import { SimS3ObjectLockCommands } from "./command/object-lock/sim-s3-object-lock-commands.js";
11
+ import { SimS3ObjectTaggingCommands } from "./command/tagging/sim-s3-object-tagging-commands.js";
10
12
  import { SimS3PublicAccessBlockCommands } from "./command/public-access-block/sim-s3-public-access-block-commands.js";
11
13
  import { SimS3VersioningCommands } from "./command/versioning/sim-s3-versioning-commands.js";
12
14
  import { SimS3NoNotificationDestinations } from "./notification/destination/sim-s3-service-notification-destinations.js";
@@ -27,12 +29,21 @@ export class SimS3Commands {
27
29
  notifications;
28
30
  lifecycles;
29
31
  versioning;
32
+ encryption;
30
33
  objectLock;
31
34
  objects;
35
+ objectTagging;
32
36
  multipartUploads;
33
37
  objectNotifier;
38
+ /**
39
+ * The scheduler and clock every command area here shares, which a
40
+ * simulator-only control on the service facade needs to hand a Bucket it
41
+ * makes outside the commands.
42
+ */
43
+ background;
34
44
  constructor(properties) {
35
45
  const { background = new BackgroundTasks(), notificationDestinations = new SimS3NoNotificationDestinations(), } = properties;
46
+ this.background = background;
36
47
  const iam = simIamInRegion(properties.iam, properties.accountRegionScope.regionName);
37
48
  this.objectNotifier = new SimS3ObjectNotifier({
38
49
  destinations: notificationDestinations,
@@ -56,8 +67,10 @@ export class SimS3Commands {
56
67
  this.notifications = new SimS3NotificationCommands(state);
57
68
  this.lifecycles = new SimS3LifecycleCommands(state);
58
69
  this.versioning = new SimS3VersioningCommands(state);
70
+ this.encryption = new SimS3EncryptionCommands(state);
59
71
  this.objectLock = new SimS3ObjectLockCommands(state);
60
72
  this.objects = new SimS3ObjectCommands(state);
73
+ this.objectTagging = new SimS3ObjectTaggingCommands(state);
61
74
  this.multipartUploads = new SimS3MultipartCommands(state);
62
75
  }
63
76
  }