@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
@@ -1,4 +1,6 @@
1
1
  import { simS3ObjectETag } from "./s3-object-etag.js";
2
+ import { SimS3ObjectTagSet } from "./s3-object-tags.js";
3
+ import { simS3DefaultStorageClass, } from "./s3-storage-class.js";
2
4
  import { simS3SystemMetadataOutput, simS3UserDefinedMetadata, } from "./s3-system-metadata-read.js";
3
5
  /**
4
6
  * Simulated S3 object metadata.
@@ -33,16 +35,45 @@ export class SimS3Object {
33
35
  key;
34
36
  body;
35
37
  metadata;
38
+ storageClass;
39
+ serverSideEncryption;
40
+ tags;
36
41
  writtenAt;
37
42
  givenETag;
38
43
  constructor(properties = {}) {
39
- const { key = "object.json", body = Buffer.alloc(0), metadata = new SimS3ObjectMetadata(), lastModified = new Date(), } = properties;
44
+ const { key = "object.json", body = Buffer.alloc(0), metadata = new SimS3ObjectMetadata(), lastModified = new Date(), storageClass = simS3DefaultStorageClass, tags = SimS3ObjectTagSet.empty(), } = properties;
40
45
  this.key = key;
41
46
  this.body = body;
42
47
  this.metadata = metadata;
48
+ this.storageClass = storageClass;
49
+ this.serverSideEncryption = properties.serverSideEncryption;
50
+ this.tags = tags;
43
51
  this.writtenAt = new Date(lastModified);
44
52
  this.givenETag = properties.etag;
45
53
  }
54
+ /**
55
+ * The same Object in another storage class, for a lifecycle rule that has
56
+ * transitioned it.
57
+ *
58
+ * The bytes are shared with the Object this came from. A transition moves
59
+ * where S3 keeps an Object and leaves the Object itself alone, so its ETag,
60
+ * its metadata, its tags and the instant it was last written all carry over.
61
+ */
62
+ withStorageClass(storageClass) {
63
+ return this.with({ storageClass });
64
+ }
65
+ /**
66
+ * The same Object under another tag set, for a tagging request that has
67
+ * replaced the one it carried.
68
+ *
69
+ * Real S3 holds tags against an Object without rewriting it, so nothing else
70
+ * about it changes: the bytes, the ETag and the instant it was last written
71
+ * are the ones it already had. A read after tagging reports the same
72
+ * `LastModified` as a read before it.
73
+ */
74
+ withTags(tags) {
75
+ return this.with({ tags });
76
+ }
46
77
  /**
47
78
  * When S3 last wrote these bytes.
48
79
  *
@@ -74,4 +105,24 @@ export class SimS3Object {
74
105
  get etag() {
75
106
  return this.givenETag ?? simS3ObjectETag(this.body);
76
107
  }
108
+ /**
109
+ * The same Object with one thing about it replaced.
110
+ *
111
+ * Everything S3 remembers is carried over by hand rather than by copying the
112
+ * instance, because an Object holds its write time and its given ETag
113
+ * privately and a spread would lose both.
114
+ */
115
+ with(changed) {
116
+ return new SimS3Object({
117
+ key: this.key,
118
+ body: this.body,
119
+ metadata: this.metadata,
120
+ lastModified: this.writtenAt,
121
+ storageClass: this.storageClass,
122
+ serverSideEncryption: this.serverSideEncryption,
123
+ tags: this.tags,
124
+ ...(this.givenETag !== undefined && { etag: this.givenETag }),
125
+ ...changed,
126
+ });
127
+ }
77
128
  }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The server-side encryption algorithms S3 applies to an Object.
3
+ *
4
+ * https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html
5
+ */
6
+ export declare const simS3ServerSideEncryptionAlgorithms: readonly ["AES256", "aws:kms", "aws:kms:dsse"];
7
+ /**
8
+ * One server-side encryption algorithm.
9
+ */
10
+ export type SimS3ServerSideEncryption = (typeof simS3ServerSideEncryptionAlgorithms)[number];
11
+ /**
12
+ * The encryption every Bucket applies to an Object whose write named none.
13
+ *
14
+ * Real S3 has encrypted every new Object with SSE-S3 since January 2023, and
15
+ * reports `AES256` for one written into a Bucket carrying no default of its
16
+ * own. Nothing is encrypted here. The bytes are stored as they arrive, and this
17
+ * is what a read says about them.
18
+ */
19
+ export declare const simS3DefaultServerSideEncryption: SimS3ServerSideEncryption;
20
+ /**
21
+ * Read the encryption a request or a Bucket configuration named, refusing an
22
+ * algorithm S3 does not apply.
23
+ *
24
+ * Real S3 answers `InvalidArgument` for an unsupported algorithm on a write.
25
+ */
26
+ export declare function simS3ServerSideEncryptionFrom(value: string | undefined, context: string): SimS3ServerSideEncryption | undefined;
27
+ /**
28
+ * Whether a value names a server-side encryption algorithm.
29
+ */
30
+ export declare function isSimS3ServerSideEncryption(value: string): value is SimS3ServerSideEncryption;
@@ -0,0 +1,42 @@
1
+ import { SimS3InvalidArgument } from "../error/sim-s3.error.js";
2
+ /**
3
+ * The server-side encryption algorithms S3 applies to an Object.
4
+ *
5
+ * https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html
6
+ */
7
+ export const simS3ServerSideEncryptionAlgorithms = [
8
+ "AES256",
9
+ "aws:kms",
10
+ "aws:kms:dsse",
11
+ ];
12
+ /**
13
+ * The encryption every Bucket applies to an Object whose write named none.
14
+ *
15
+ * Real S3 has encrypted every new Object with SSE-S3 since January 2023, and
16
+ * reports `AES256` for one written into a Bucket carrying no default of its
17
+ * own. Nothing is encrypted here. The bytes are stored as they arrive, and this
18
+ * is what a read says about them.
19
+ */
20
+ export const simS3DefaultServerSideEncryption = "AES256";
21
+ /**
22
+ * Read the encryption a request or a Bucket configuration named, refusing an
23
+ * algorithm S3 does not apply.
24
+ *
25
+ * Real S3 answers `InvalidArgument` for an unsupported algorithm on a write.
26
+ */
27
+ export function simS3ServerSideEncryptionFrom(value, context) {
28
+ if (value === undefined) {
29
+ return undefined;
30
+ }
31
+ if (!isSimS3ServerSideEncryption(value)) {
32
+ throw new SimS3InvalidArgument(`${value} is not a server-side encryption algorithm for ${context}. ` +
33
+ `It is one of ${simS3ServerSideEncryptionAlgorithms.join(", ")}.`);
34
+ }
35
+ return value;
36
+ }
37
+ /**
38
+ * Whether a value names a server-side encryption algorithm.
39
+ */
40
+ export function isSimS3ServerSideEncryption(value) {
41
+ return simS3ServerSideEncryptionAlgorithms.includes(value);
42
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * The storage class S3 puts an Object in when the write names none.
3
+ *
4
+ * Reported rather than omitted from a listing, because a listing that leaves it
5
+ * out reads as an Object of unknown class. Real S3 answers `STANDARD` there and
6
+ * leaves the `x-amz-storage-class` header off a read of one, which is what
7
+ * `simS3ReportedStorageClass` is for.
8
+ */
9
+ export declare const simS3DefaultStorageClass = "STANDARD";
10
+ /**
11
+ * The storage classes an Object can be in.
12
+ *
13
+ * These are the ones a write can name or a lifecycle rule can transition to.
14
+ * Nothing here changes what a read costs or how long it takes, so the class is
15
+ * a fact about the Object that S3 reports and applies its rules to.
16
+ *
17
+ * https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html
18
+ */
19
+ export declare const simS3StorageClasses: readonly ["STANDARD", "REDUCED_REDUNDANCY", "STANDARD_IA", "ONEZONE_IA", "INTELLIGENT_TIERING", "GLACIER_IR", "GLACIER", "DEEP_ARCHIVE", "EXPRESS_ONEZONE", "OUTPOSTS", "SNOW"];
20
+ /**
21
+ * One storage class an Object can be in.
22
+ */
23
+ export type SimS3StorageClass = (typeof simS3StorageClasses)[number];
24
+ /**
25
+ * Read the storage class a request named, refusing one S3 has no such class
26
+ * for.
27
+ *
28
+ * A request naming none leaves the Object in the default class. Real S3
29
+ * answers `InvalidStorageClass` for a name it does not know, and does it
30
+ * before storing anything.
31
+ */
32
+ export declare function simS3StorageClassFrom(value: string | undefined, context: string): SimS3StorageClass | undefined;
33
+ /**
34
+ * The storage class a read of an Object reports, which is nothing for one in
35
+ * the default class.
36
+ *
37
+ * Real S3 leaves `x-amz-storage-class` off a `GetObject` or a `HeadObject`
38
+ * response for a Standard Object, and sets it for every other class. A listing
39
+ * is the other way around and always carries one.
40
+ */
41
+ export declare function simS3ReportedStorageClass(storageClass: SimS3StorageClass): SimS3StorageClass | undefined;
42
+ /**
43
+ * Whether a value names a storage class.
44
+ */
45
+ export declare function isSimS3StorageClass(value: string): value is SimS3StorageClass;
@@ -0,0 +1,67 @@
1
+ import { SimS3InvalidStorageClass } from "../error/sim-s3.error.js";
2
+ /**
3
+ * The storage class S3 puts an Object in when the write names none.
4
+ *
5
+ * Reported rather than omitted from a listing, because a listing that leaves it
6
+ * out reads as an Object of unknown class. Real S3 answers `STANDARD` there and
7
+ * leaves the `x-amz-storage-class` header off a read of one, which is what
8
+ * `simS3ReportedStorageClass` is for.
9
+ */
10
+ export const simS3DefaultStorageClass = "STANDARD";
11
+ /**
12
+ * The storage classes an Object can be in.
13
+ *
14
+ * These are the ones a write can name or a lifecycle rule can transition to.
15
+ * Nothing here changes what a read costs or how long it takes, so the class is
16
+ * a fact about the Object that S3 reports and applies its rules to.
17
+ *
18
+ * https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html
19
+ */
20
+ export const simS3StorageClasses = [
21
+ simS3DefaultStorageClass,
22
+ "REDUCED_REDUNDANCY",
23
+ "STANDARD_IA",
24
+ "ONEZONE_IA",
25
+ "INTELLIGENT_TIERING",
26
+ "GLACIER_IR",
27
+ "GLACIER",
28
+ "DEEP_ARCHIVE",
29
+ "EXPRESS_ONEZONE",
30
+ "OUTPOSTS",
31
+ "SNOW",
32
+ ];
33
+ /**
34
+ * Read the storage class a request named, refusing one S3 has no such class
35
+ * for.
36
+ *
37
+ * A request naming none leaves the Object in the default class. Real S3
38
+ * answers `InvalidStorageClass` for a name it does not know, and does it
39
+ * before storing anything.
40
+ */
41
+ export function simS3StorageClassFrom(value, context) {
42
+ if (value === undefined) {
43
+ return undefined;
44
+ }
45
+ if (!isSimS3StorageClass(value)) {
46
+ throw new SimS3InvalidStorageClass(`${value} is not an S3 storage class for ${context}. It is one of ` +
47
+ `${simS3StorageClasses.join(", ")}.`);
48
+ }
49
+ return value;
50
+ }
51
+ /**
52
+ * The storage class a read of an Object reports, which is nothing for one in
53
+ * the default class.
54
+ *
55
+ * Real S3 leaves `x-amz-storage-class` off a `GetObject` or a `HeadObject`
56
+ * response for a Standard Object, and sets it for every other class. A listing
57
+ * is the other way around and always carries one.
58
+ */
59
+ export function simS3ReportedStorageClass(storageClass) {
60
+ return storageClass === simS3DefaultStorageClass ? undefined : storageClass;
61
+ }
62
+ /**
63
+ * Whether a value names a storage class.
64
+ */
65
+ export function isSimS3StorageClass(value) {
66
+ return simS3StorageClasses.includes(value);
67
+ }
@@ -8,8 +8,9 @@ import { SimS3ObjectMetadata } from "./s3-object.js";
8
8
  * headers S3 remembers about an Object and returns on a read. There is one for
9
9
  * every entry in `simS3SystemMetadataHeaders`, which is what the conversion
10
10
  * below reads them by, so a header added to that list without a field here
11
- * fails to compile. `Expires` is a `Date` because the SDK takes one and formats
12
- * it as an HTTP date.
11
+ * fails to compile. `Expires` is a `Date` where the SDK takes one and formats
12
+ * it as an HTTP date, and the formatted string itself where the write arrived
13
+ * over HTTP with the date already written out.
13
14
  */
14
15
  export interface SimS3ObjectWriteMetadata {
15
16
  readonly Metadata?: Record<string, string> | undefined;
@@ -18,7 +19,7 @@ export interface SimS3ObjectWriteMetadata {
18
19
  readonly ContentEncoding?: string | undefined;
19
20
  readonly ContentLanguage?: string | undefined;
20
21
  readonly ContentType?: string | undefined;
21
- readonly Expires?: Date | undefined;
22
+ readonly Expires?: Date | string | undefined;
22
23
  }
23
24
  /**
24
25
  * Convert the metadata members of a write into what an Object stores.
@@ -34,3 +35,16 @@ export interface SimS3ObjectWriteMetadata {
34
35
  * write named it or not.
35
36
  */
36
37
  export declare function simS3WriteMetadata(input: SimS3ObjectWriteMetadata): SimS3ObjectMetadata;
38
+ /**
39
+ * Read the metadata headers of an upload into the members a write carries.
40
+ *
41
+ * A request arriving over HTTP states its metadata in the headers real S3
42
+ * carries it in, which is the form a `PutObjectCommand` is serialized into by
43
+ * the SDK. Reading them by the same list a write and a read agree on is what
44
+ * keeps an upload over an endpoint describing an Object exactly as an
45
+ * in-process one does.
46
+ *
47
+ * Every value stays a string, expiry included, because it arrives as the HTTP
48
+ * date S3 stores rather than as a `Date` waiting to be formatted.
49
+ */
50
+ export declare function simS3WriteMetadataHeaders(headers: Headers): SimS3ObjectWriteMetadata;
@@ -41,3 +41,46 @@ function metadataValue(value) {
41
41
  }
42
42
  return value;
43
43
  }
44
+ /**
45
+ * Read the metadata headers of an upload into the members a write carries.
46
+ *
47
+ * A request arriving over HTTP states its metadata in the headers real S3
48
+ * carries it in, which is the form a `PutObjectCommand` is serialized into by
49
+ * the SDK. Reading them by the same list a write and a read agree on is what
50
+ * keeps an upload over an endpoint describing an Object exactly as an
51
+ * in-process one does.
52
+ *
53
+ * Every value stays a string, expiry included, because it arrives as the HTTP
54
+ * date S3 stores rather than as a `Date` waiting to be formatted.
55
+ */
56
+ export function simS3WriteMetadataHeaders(headers) {
57
+ const written = {};
58
+ for (const header of simS3SystemMetadataHeaders) {
59
+ const value = headers.get(header.name);
60
+ if (value !== null) {
61
+ written[header.field] = value;
62
+ }
63
+ }
64
+ const attached = simS3AttachedMetadata(headers);
65
+ return attached === undefined ? written : { ...written, Metadata: attached };
66
+ }
67
+ /**
68
+ * The user-defined metadata an upload attached, or nothing where it attached
69
+ * none.
70
+ *
71
+ * S3 sends each entry as its own `x-amz-meta-` header and answers a read with
72
+ * the keys without the prefix, which is the form a write states them in. An
73
+ * upload that attached nothing leaves `Metadata` absent rather than empty, so
74
+ * a copy carrying the source's metadata is not handed an empty object to
75
+ * copy over it.
76
+ */
77
+ function simS3AttachedMetadata(headers) {
78
+ const attached = {};
79
+ for (const [name, value] of headers) {
80
+ if (name.toLowerCase().startsWith(simS3UserMetadataPrefix)) {
81
+ attached[name.slice(simS3UserMetadataPrefix.length).toLowerCase()] =
82
+ value;
83
+ }
84
+ }
85
+ return Object.keys(attached).length === 0 ? undefined : attached;
86
+ }
@@ -0,0 +1,27 @@
1
+ import { type SimS3ServerSideEncryption } from "./s3-server-side-encryption.js";
2
+ import { type SimS3StorageClass } from "./s3-storage-class.js";
3
+ /**
4
+ * The members of a request that say where and how S3 keeps an Object.
5
+ *
6
+ * `PutObject`, `CopyObject` and `CreateMultipartUpload` all carry these
7
+ * alongside the metadata that says what the Object is. Both are read before
8
+ * anything is stored, because real S3 refuses a write naming a storage class
9
+ * or an algorithm it has no such thing for.
10
+ */
11
+ export interface SimS3ObjectWriteStorage {
12
+ readonly StorageClass?: string | undefined;
13
+ readonly ServerSideEncryption?: string | undefined;
14
+ }
15
+ /**
16
+ * The storage class a write asks for, or nothing where it asks for none.
17
+ */
18
+ export declare function simS3WriteStorageClass(input: SimS3ObjectWriteStorage, context: string): SimS3StorageClass | undefined;
19
+ /**
20
+ * The encryption S3 stamps on the Object a write is storing.
21
+ *
22
+ * The write has the last word, the Bucket's default configuration comes next,
23
+ * and an Object written into a Bucket carrying neither is SSE-S3 encrypted.
24
+ * Real S3 has encrypted every new Object that way since January 2023, so
25
+ * `AES256` is what a read reports for one nobody configured anything for.
26
+ */
27
+ export declare function simS3WriteEncryption(input: SimS3ObjectWriteStorage, bucketDefault: SimS3ServerSideEncryption | undefined, context: string): SimS3ServerSideEncryption;
@@ -0,0 +1,21 @@
1
+ import { simS3DefaultServerSideEncryption, simS3ServerSideEncryptionFrom, } from "./s3-server-side-encryption.js";
2
+ import { simS3StorageClassFrom, } from "./s3-storage-class.js";
3
+ /**
4
+ * The storage class a write asks for, or nothing where it asks for none.
5
+ */
6
+ export function simS3WriteStorageClass(input, context) {
7
+ return simS3StorageClassFrom(input.StorageClass, context);
8
+ }
9
+ /**
10
+ * The encryption S3 stamps on the Object a write is storing.
11
+ *
12
+ * The write has the last word, the Bucket's default configuration comes next,
13
+ * and an Object written into a Bucket carrying neither is SSE-S3 encrypted.
14
+ * Real S3 has encrypted every new Object that way since January 2023, so
15
+ * `AES256` is what a read reports for one nobody configured anything for.
16
+ */
17
+ export function simS3WriteEncryption(input, bucketDefault, context) {
18
+ return (simS3ServerSideEncryptionFrom(input.ServerSideEncryption, context) ??
19
+ bucketDefault ??
20
+ simS3DefaultServerSideEncryption);
21
+ }
@@ -0,0 +1,24 @@
1
+ import { SimS3ObjectTagSet } from "./s3-object-tags.js";
2
+ /**
3
+ * The tagging members of a request that stores an Object.
4
+ *
5
+ * `PutObject`, `CopyObject` and `CreateMultipartUpload` all carry `Tagging`,
6
+ * and only a copy carries a directive, because only a copy has a source tag set
7
+ * to choose between.
8
+ */
9
+ export interface SimS3ObjectWriteTagging {
10
+ /**
11
+ * The tags to put on the Object, as the URL query string real S3 takes them
12
+ * in: `department=finance&retention=long`.
13
+ */
14
+ readonly Tagging?: string | undefined;
15
+ }
16
+ /**
17
+ * The tags a write asks S3 to put on the Object it is storing.
18
+ *
19
+ * Real S3 sends a tag set on a write as a query string rather than as a list,
20
+ * because it travels in the `x-amz-tagging` header where a list has nowhere to
21
+ * go. It is read the same way here, so an SDK caller and an HTTP one produce
22
+ * the same tag set. A write naming no tags stores an untagged Object.
23
+ */
24
+ export declare function simS3WriteTags(input: SimS3ObjectWriteTagging, context: string): SimS3ObjectTagSet;
@@ -0,0 +1,19 @@
1
+ import { SimS3ObjectTagSet } from "./s3-object-tags.js";
2
+ /**
3
+ * The tags a write asks S3 to put on the Object it is storing.
4
+ *
5
+ * Real S3 sends a tag set on a write as a query string rather than as a list,
6
+ * because it travels in the `x-amz-tagging` header where a list has nowhere to
7
+ * go. It is read the same way here, so an SDK caller and an HTTP one produce
8
+ * the same tag set. A write naming no tags stores an untagged Object.
9
+ */
10
+ export function simS3WriteTags(input, context) {
11
+ const tagging = input.Tagging;
12
+ if (tagging === undefined) {
13
+ return SimS3ObjectTagSet.empty();
14
+ }
15
+ return SimS3ObjectTagSet.from(new URLSearchParams(tagging)
16
+ .entries()
17
+ .map(([Key, Value]) => ({ Key, Value }))
18
+ .toArray(), context);
19
+ }
@@ -64,6 +64,18 @@ export function simS3SdkBucketRoutes(simS3) {
64
64
  "GetBucketVersioningCommand",
65
65
  async (command, context) => await simS3.getBucketVersioning(command, simSdkCallerOptions(context)),
66
66
  ],
67
+ [
68
+ "PutBucketEncryptionCommand",
69
+ async (command, context) => await simS3.putBucketEncryption(command, simSdkCallerOptions(context)),
70
+ ],
71
+ [
72
+ "GetBucketEncryptionCommand",
73
+ async (command, context) => await simS3.getBucketEncryption(command, simSdkCallerOptions(context)),
74
+ ],
75
+ [
76
+ "DeleteBucketEncryptionCommand",
77
+ async (command, context) => await simS3.deleteBucketEncryption(command, simSdkCallerOptions(context)),
78
+ ],
67
79
  [
68
80
  "PutBucketWebsiteCommand",
69
81
  async (command, context) => await simS3.putBucketWebsite(command, simSdkCallerOptions(context)),
@@ -1,6 +1,7 @@
1
1
  import { simS3SdkBucketRoutes } from "./sim-s3-sdk-bucket-routes.js";
2
2
  import { simS3SdkObjectLockRoutes } from "./sim-s3-sdk-object-lock-routes.js";
3
3
  import { simS3SdkObjectRoutes } from "./sim-s3-sdk-object-routes.js";
4
+ import { simS3SdkObjectTaggingRoutes } from "./sim-s3-sdk-object-tagging-routes.js";
4
5
  /**
5
6
  * Routes intercepted SDK Commands to one scoped simulated S3 instance.
6
7
  */
@@ -11,6 +12,7 @@ export class SimS3SdkCommandRouter {
11
12
  ...simS3SdkBucketRoutes(simS3),
12
13
  ...simS3SdkObjectRoutes(simS3),
13
14
  ...simS3SdkObjectLockRoutes(simS3),
15
+ ...simS3SdkObjectTaggingRoutes(simS3),
14
16
  ]);
15
17
  }
16
18
  /**
@@ -0,0 +1,9 @@
1
+ import type { SimSdkCommandRoute } from "../../../sdk/index.js";
2
+ import type { SimS3 } from "../sim-s3.js";
3
+ /**
4
+ * The SDK Commands that hold tags against an Object.
5
+ *
6
+ * They route together because each is granted by a permission of its own, and
7
+ * none of them is reachable through `PutObject` or `GetObject`.
8
+ */
9
+ export declare function simS3SdkObjectTaggingRoutes(simS3: SimS3): readonly (readonly [string, SimSdkCommandRoute])[];
@@ -0,0 +1,23 @@
1
+ import { simSdkCallerOptions } from "../../../sdk/index.js";
2
+ /**
3
+ * The SDK Commands that hold tags against an Object.
4
+ *
5
+ * They route together because each is granted by a permission of its own, and
6
+ * none of them is reachable through `PutObject` or `GetObject`.
7
+ */
8
+ export function simS3SdkObjectTaggingRoutes(simS3) {
9
+ return [
10
+ [
11
+ "PutObjectTaggingCommand",
12
+ async (command, context) => await simS3.putObjectTagging(command, simSdkCallerOptions(context)),
13
+ ],
14
+ [
15
+ "GetObjectTaggingCommand",
16
+ async (command, context) => await simS3.getObjectTagging(command, simSdkCallerOptions(context)),
17
+ ],
18
+ [
19
+ "DeleteObjectTaggingCommand",
20
+ async (command, context) => await simS3.deleteObjectTagging(command, simSdkCallerOptions(context)),
21
+ ],
22
+ ];
23
+ }
@@ -1,4 +1,5 @@
1
1
  import { readSimS3NotificationConfiguration } from "./sim-s3-api-notification-read.js";
2
+ import { readSimS3EncryptionConfiguration } from "./sim-s3-api-encryption-read.js";
2
3
  import { readSimS3DeleteRequest, readSimS3PublicAccessBlock, readSimS3WebsiteConfiguration, } from "./sim-s3-api-xml-read.js";
3
4
  import { bucketBodyInput, bucketInput, listBucketsInput, listObjectsInput, listObjectsV2Input, } from "./sim-s3-api-input.js";
4
5
  import { listMultipartUploadsInput } from "./sim-s3-api-multipart-input.js";
@@ -35,6 +36,13 @@ export const simS3BucketApiRoutes = [
35
36
  commandName: "GetPublicAccessBlockCommand",
36
37
  input: bucketInput,
37
38
  },
39
+ {
40
+ method: "GET",
41
+ target: "bucket",
42
+ subResource: "encryption",
43
+ commandName: "GetBucketEncryptionCommand",
44
+ input: bucketInput,
45
+ },
38
46
  {
39
47
  method: "GET",
40
48
  target: "bucket",
@@ -84,6 +92,13 @@ export const simS3BucketApiRoutes = [
84
92
  commandName: "PutPublicAccessBlockCommand",
85
93
  input: (request) => bucketBodyInput(request, "PublicAccessBlockConfiguration", readSimS3PublicAccessBlock),
86
94
  },
95
+ {
96
+ method: "PUT",
97
+ target: "bucket",
98
+ subResource: "encryption",
99
+ commandName: "PutBucketEncryptionCommand",
100
+ input: (request) => bucketBodyInput(request, "ServerSideEncryptionConfiguration", readSimS3EncryptionConfiguration),
101
+ },
87
102
  {
88
103
  method: "PUT",
89
104
  target: "bucket",
@@ -111,6 +126,13 @@ export const simS3BucketApiRoutes = [
111
126
  commandName: "DeleteBucketPolicyCommand",
112
127
  input: bucketInput,
113
128
  },
129
+ {
130
+ method: "DELETE",
131
+ target: "bucket",
132
+ subResource: "encryption",
133
+ commandName: "DeleteBucketEncryptionCommand",
134
+ input: bucketInput,
135
+ },
114
136
  {
115
137
  method: "DELETE",
116
138
  target: "bucket",
@@ -8,6 +8,10 @@
8
8
  * Write a Block Public Access configuration.
9
9
  */
10
10
  export declare function publicAccessBlockXml(output: Record<string, unknown>): string;
11
+ /**
12
+ * Write a Bucket's default encryption configuration.
13
+ */
14
+ export declare function encryptionConfigurationXml(output: Record<string, unknown>): string;
11
15
  /**
12
16
  * Write an event notification configuration.
13
17
  */
@@ -16,6 +16,16 @@ export function publicAccessBlockXml(output) {
16
16
  xmlValue("BlockPublicPolicy", configuration["BlockPublicPolicy"]) +
17
17
  xmlValue("RestrictPublicBuckets", configuration["RestrictPublicBuckets"]));
18
18
  }
19
+ /**
20
+ * Write a Bucket's default encryption configuration.
21
+ */
22
+ export function encryptionConfigurationXml(output) {
23
+ const configuration = (output["ServerSideEncryptionConfiguration"] ?? {});
24
+ return xmlDocument("ServerSideEncryptionConfiguration", (configuration.Rules ?? [])
25
+ .map((rule) => xmlElement("Rule", xmlElement("ApplyServerSideEncryptionByDefault", xmlValue("SSEAlgorithm", rule.ApplyServerSideEncryptionByDefault?.SSEAlgorithm) +
26
+ xmlValue("KMSMasterKeyID", rule.ApplyServerSideEncryptionByDefault?.KMSMasterKeyID)) + xmlValue("BucketKeyEnabled", rule.BucketKeyEnabled)))
27
+ .join(""));
28
+ }
19
29
  /**
20
30
  * Write an event notification configuration.
21
31
  */
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Read a default encryption configuration.
3
+ *
4
+ * Real S3 takes one rule and the SDK sends a list, so the list is read here
5
+ * and the Bucket decides what to do with more than one of them.
6
+ */
7
+ export declare function readSimS3EncryptionConfiguration(body: string): object;
@@ -0,0 +1,30 @@
1
+ import { parseXmlDocument, xmlBoolean, xmlChild, xmlChildren, xmlText, } from "../../../../util/xml/xml-document.js";
2
+ /**
3
+ * Read a default encryption configuration.
4
+ *
5
+ * Real S3 takes one rule and the SDK sends a list, so the list is read here
6
+ * and the Bucket decides what to do with more than one of them.
7
+ */
8
+ export function readSimS3EncryptionConfiguration(body) {
9
+ const root = parseXmlDocument(body);
10
+ return {
11
+ Rules: xmlChildren(root, "Rule").map((rule) => {
12
+ const byDefault = xmlChild(rule, "ApplyServerSideEncryptionByDefault");
13
+ return {
14
+ ...(byDefault !== undefined && {
15
+ ApplyServerSideEncryptionByDefault: {
16
+ ...defined("SSEAlgorithm", xmlText(byDefault, "SSEAlgorithm")),
17
+ ...defined("KMSMasterKeyID", xmlText(byDefault, "KMSMasterKeyID")),
18
+ },
19
+ }),
20
+ ...defined("BucketKeyEnabled", xmlBoolean(rule, "BucketKeyEnabled")),
21
+ };
22
+ }),
23
+ };
24
+ }
25
+ /**
26
+ * One member of a request document, or nothing where it was absent.
27
+ */
28
+ function defined(name, value) {
29
+ return value === undefined ? {} : { [name]: value };
30
+ }
@@ -9,9 +9,11 @@
9
9
  * Answer a HEAD with what a read would have said and none of the Object.
10
10
  *
11
11
  * The `content-length` describes the Object rather than the response, which is
12
- * what makes a HEAD worth sending.
12
+ * what makes a HEAD worth sending. A HEAD reads the same `response-` parameters
13
+ * a GET does, so a caller can see what a presigned URL would serve without
14
+ * fetching the Object.
13
15
  */
14
- export declare function simS3HeadObjectResponse(output: Record<string, unknown>): Response;
16
+ export declare function simS3HeadObjectResponse(output: Record<string, unknown>, overrides: Readonly<Record<string, string>>): Response;
15
17
  /**
16
18
  * Answer that a Bucket is there and reachable.
17
19
  *