@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
@@ -11,16 +11,22 @@ import { simS3SystemMetadataHeadersFrom } from "../../object/s3-system-metadata-
11
11
  * Answer a HEAD with what a read would have said and none of the Object.
12
12
  *
13
13
  * The `content-length` describes the Object rather than the response, which is
14
- * what makes a HEAD worth sending.
14
+ * what makes a HEAD worth sending. A HEAD reads the same `response-` parameters
15
+ * a GET does, so a caller can see what a presigned URL would serve without
16
+ * fetching the Object.
15
17
  */
16
- export function simS3HeadObjectResponse(output) {
18
+ export function simS3HeadObjectResponse(output, overrides) {
17
19
  return new Response(undefined, {
18
20
  status: 200,
19
21
  headers: simS3ObjectResponseHeaders({
20
22
  metadata: simS3SystemMetadataHeadersFrom(output),
23
+ userMetadata: output["Metadata"],
24
+ overrides,
21
25
  bodyLength: output["ContentLength"] ?? 0,
22
26
  etag: output["ETag"],
23
27
  lastModified: output["LastModified"],
28
+ storageClass: output["StorageClass"],
29
+ serverSideEncryption: output["ServerSideEncryption"],
24
30
  }),
25
31
  });
26
32
  }
@@ -26,12 +26,6 @@ export declare function listObjectsV2Input(request: SimS3ApiRequest): object;
26
26
  * The first ListObjects input, which pages by marker.
27
27
  */
28
28
  export declare function listObjectsInput(request: SimS3ApiRequest): object;
29
- /**
30
- * The user metadata an upload carried, which S3 sends as `x-amz-meta-` headers.
31
- */
32
- export declare function simS3UserMetadata(headers: Headers): {
33
- Metadata?: Record<string, string>;
34
- };
35
29
  /**
36
30
  * Include a member only when the request stated it, since an operation treats
37
31
  * an absent member and an empty one differently.
@@ -38,6 +38,7 @@ export function listObjectsV2Input(request) {
38
38
  ...optional("ContinuationToken", request.query.get("continuation-token")),
39
39
  ...optional("StartAfter", request.query.get("start-after")),
40
40
  ...optionalNumber("MaxKeys", request.query.get("max-keys")),
41
+ ...optional("EncodingType", request.query.get("encoding-type")),
41
42
  };
42
43
  }
43
44
  /**
@@ -50,21 +51,9 @@ export function listObjectsInput(request) {
50
51
  ...optional("Delimiter", request.query.get("delimiter")),
51
52
  ...optional("Marker", request.query.get("marker")),
52
53
  ...optionalNumber("MaxKeys", request.query.get("max-keys")),
54
+ ...optional("EncodingType", request.query.get("encoding-type")),
53
55
  };
54
56
  }
55
- /**
56
- * The user metadata an upload carried, which S3 sends as `x-amz-meta-` headers.
57
- */
58
- export function simS3UserMetadata(headers) {
59
- const prefix = "x-amz-meta-";
60
- const metadata = {};
61
- for (const [name, value] of headers) {
62
- if (name.toLowerCase().startsWith(prefix)) {
63
- metadata[name.slice(prefix.length).toLowerCase()] = value;
64
- }
65
- }
66
- return Object.keys(metadata).length === 0 ? {} : { Metadata: metadata };
67
- }
68
57
  /**
69
58
  * Include a member only when the request stated it, since an operation treats
70
59
  * an absent member and an empty one differently.
@@ -26,6 +26,7 @@ interface ListObjectsOutput {
26
26
  readonly StartAfter?: string | undefined;
27
27
  readonly Marker?: string | undefined;
28
28
  readonly NextMarker?: string | undefined;
29
+ readonly EncodingType?: string | undefined;
29
30
  }
30
31
  interface ListBucketsOutput {
31
32
  readonly Buckets?: readonly BucketSummary[] | undefined;
@@ -42,6 +43,10 @@ export declare function simS3ListBucketsXml(output: ListBucketsOutput): string;
42
43
  * Both listing versions answer in a `ListBucketResult`, and differ only in how
43
44
  * they say where the next page starts. The version is passed in because the
44
45
  * output alone cannot say which was asked for.
46
+ *
47
+ * The keys arrive encoded or not according to what the listing was asked for,
48
+ * so nothing is encoded here. `EncodingType` says which of the two a client is
49
+ * reading, and is absent from a listing that asked for no encoding.
45
50
  */
46
51
  export declare function simS3ListObjectsXml(output: ListObjectsOutput, version: 1 | 2): string;
47
52
  export {};
@@ -17,6 +17,10 @@ export function simS3ListBucketsXml(output) {
17
17
  * Both listing versions answer in a `ListBucketResult`, and differ only in how
18
18
  * they say where the next page starts. The version is passed in because the
19
19
  * output alone cannot say which was asked for.
20
+ *
21
+ * The keys arrive encoded or not according to what the listing was asked for,
22
+ * so nothing is encoded here. `EncodingType` says which of the two a client is
23
+ * reading, and is absent from a listing that asked for no encoding.
20
24
  */
21
25
  export function simS3ListObjectsXml(output, version) {
22
26
  const contents = (output.Contents ?? []).map(objectSummaryXml).join("");
@@ -26,6 +30,7 @@ export function simS3ListObjectsXml(output, version) {
26
30
  return xmlDocument("ListBucketResult", xmlValue("Name", output.Name) +
27
31
  xmlValue("Prefix", output.Prefix) +
28
32
  xmlValue("Delimiter", output.Delimiter) +
33
+ xmlValue("EncodingType", output.EncodingType) +
29
34
  xmlValue("MaxKeys", output.MaxKeys) +
30
35
  xmlValue("IsTruncated", output.IsTruncated ?? false) +
31
36
  pagingXml(output, version) +
@@ -15,6 +15,17 @@ export declare const simS3CopySourceHeader = "x-amz-copy-source";
15
15
  * The input of an operation naming one Object.
16
16
  */
17
17
  export declare function objectInput(request: SimS3ApiRequest): object;
18
+ /**
19
+ * The input of an operation naming one Object, or one version of it.
20
+ *
21
+ * Real S3 names the version in the query string alongside the sub-resource, so
22
+ * a request naming none acts on whatever a plain read of the key answers with.
23
+ */
24
+ export declare function versionedObjectInput(request: SimS3ApiRequest): object;
25
+ /**
26
+ * The input of a tagging write, which carries its tag set as a document.
27
+ */
28
+ export declare function putObjectTaggingInput(request: SimS3ApiRequest): object;
18
29
  /**
19
30
  * The input of a read, which can ask for part of an Object.
20
31
  */
@@ -36,5 +47,10 @@ export declare function copyObjectInput(request: SimS3ApiRequest): object;
36
47
  /**
37
48
  * The input of a request that describes an Object without carrying its bytes,
38
49
  * which is what starting a multipart upload is.
50
+ *
51
+ * The metadata headers are read by the list a write and a read share, so an
52
+ * upload over this endpoint describes an Object exactly as a `PutObjectCommand`
53
+ * does. Where S3 keeps the Object and how it encrypts it are read alongside
54
+ * them, being facts about the storage rather than metadata about the Object.
39
55
  */
40
56
  export declare function createMultipartUploadInput(request: SimS3ApiRequest): object;
@@ -1,4 +1,6 @@
1
- import { optional, simS3UserMetadata } from "./sim-s3-api-input.js";
1
+ import { simS3WriteMetadataHeaders } from "../../object/s3-write-metadata.js";
2
+ import { optional, utf8 } from "./sim-s3-api-input.js";
3
+ import { readSimS3Tagging } from "./sim-s3-api-tagging-read.js";
2
4
  /**
3
5
  * Reading the Object operations' inputs out of a request.
4
6
  *
@@ -17,6 +19,27 @@ export const simS3CopySourceHeader = "x-amz-copy-source";
17
19
  export function objectInput(request) {
18
20
  return { Bucket: request.bucketName, Key: request.objectKey };
19
21
  }
22
+ /**
23
+ * The input of an operation naming one Object, or one version of it.
24
+ *
25
+ * Real S3 names the version in the query string alongside the sub-resource, so
26
+ * a request naming none acts on whatever a plain read of the key answers with.
27
+ */
28
+ export function versionedObjectInput(request) {
29
+ return {
30
+ ...objectInput(request),
31
+ ...optional("VersionId", request.query.get("versionId")),
32
+ };
33
+ }
34
+ /**
35
+ * The input of a tagging write, which carries its tag set as a document.
36
+ */
37
+ export function putObjectTaggingInput(request) {
38
+ return {
39
+ ...versionedObjectInput(request),
40
+ Tagging: readSimS3Tagging(utf8(request.body)),
41
+ };
42
+ }
20
43
  /**
21
44
  * The input of a read, which can ask for part of an Object.
22
45
  */
@@ -46,21 +69,25 @@ export function copyObjectInput(request) {
46
69
  ...createMultipartUploadInput(request),
47
70
  ...optional("CopySource", request.headers.get(simS3CopySourceHeader)),
48
71
  ...optional("MetadataDirective", request.headers.get("x-amz-metadata-directive")),
72
+ ...optional("TaggingDirective", request.headers.get("x-amz-tagging-directive")),
49
73
  };
50
74
  }
51
75
  /**
52
76
  * The input of a request that describes an Object without carrying its bytes,
53
77
  * which is what starting a multipart upload is.
78
+ *
79
+ * The metadata headers are read by the list a write and a read share, so an
80
+ * upload over this endpoint describes an Object exactly as a `PutObjectCommand`
81
+ * does. Where S3 keeps the Object and how it encrypts it are read alongside
82
+ * them, being facts about the storage rather than metadata about the Object.
54
83
  */
55
84
  export function createMultipartUploadInput(request) {
56
85
  return {
57
86
  Bucket: request.bucketName,
58
87
  Key: request.objectKey,
59
- ...optional("ContentType", request.headers.get("content-type")),
60
- ...optional("CacheControl", request.headers.get("cache-control")),
61
- ...optional("ContentDisposition", request.headers.get("content-disposition")),
62
- ...optional("ContentEncoding", request.headers.get("content-encoding")),
63
- ...optional("ContentLanguage", request.headers.get("content-language")),
64
- ...simS3UserMetadata(request.headers),
88
+ ...simS3WriteMetadataHeaders(request.headers),
89
+ ...optional("StorageClass", request.headers.get("x-amz-storage-class")),
90
+ ...optional("Tagging", request.headers.get("x-amz-tagging")),
91
+ ...optional("ServerSideEncryption", request.headers.get("x-amz-server-side-encryption")),
65
92
  };
66
93
  }
@@ -11,13 +11,30 @@ interface CopyObjectOutput {
11
11
  * reads the new ETag and write time out of this body and nowhere else.
12
12
  */
13
13
  export declare function simS3CopyObjectXml(output: CopyObjectOutput): string;
14
+ interface TagSetOutput {
15
+ readonly TagSet?: readonly {
16
+ readonly Key?: string;
17
+ readonly Value?: string;
18
+ }[];
19
+ }
20
+ /**
21
+ * Write the tags on an Object as the document real S3 answers them with.
22
+ *
23
+ * An Object nobody has tagged answers with an empty `TagSet` element rather
24
+ * than none at all, which is what tells a client the Object exists and carries
25
+ * no tags.
26
+ */
27
+ export declare function simS3ObjectTaggingXml(output: TagSetOutput): string;
14
28
  /**
15
29
  * Answer a read with the Object itself, headers and all.
16
30
  *
31
+ * The headers the read named in its `response-` parameters are served in place
32
+ * of the Object's own, leaving what the Object was written with alone.
33
+ *
17
34
  * A read that asked for part of the Object is answered `206 Partial Content`
18
35
  * and says which part it carries, because a client reading a large Object in
19
36
  * pieces at once writes each response at the offset it asked for, and a `200`
20
37
  * carrying the whole Object would be written over its neighbours.
21
38
  */
22
- export declare function simS3GetObjectResponse(output: Record<string, unknown>): Promise<Response>;
39
+ export declare function simS3GetObjectResponse(output: Record<string, unknown>, overrides: Readonly<Record<string, string>>): Promise<Response>;
23
40
  export {};
@@ -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) {