@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
@@ -0,0 +1,42 @@
1
+ import { SimS3ObjectTagSet } from "../../object/s3-object-tags.js";
2
+ import { SimS3ObjectTaggingAccess, } from "../tagging/sim-s3-object-tagging-access.js";
3
+ /**
4
+ * Simulated S3 DeleteObjectTaggingCommand handler.
5
+ *
6
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteObjectTaggingCommand/
7
+ */
8
+ export class DeleteObjectTaggingCommandHandler {
9
+ access;
10
+ constructor(properties) {
11
+ this.access = new SimS3ObjectTaggingAccess(properties);
12
+ }
13
+ /**
14
+ * Take every tag off an Object, or off the version the request named.
15
+ *
16
+ * Real S3 removes the whole tag set and answers the same way whether or not
17
+ * the Object was carrying one, so an Object nobody had tagged is not an
18
+ * error. The event is raised either way, because the request is what real S3
19
+ * raises it for.
20
+ */
21
+ async handle(command, options) {
22
+ const { bucket, taggable, caller } = await this.access.reach({
23
+ commandName: "DeleteObjectTaggingCommand",
24
+ action: "s3:DeleteObjectTagging",
25
+ input: command.input,
26
+ }, options);
27
+ const object = await taggable.retag(SimS3ObjectTagSet.empty());
28
+ this.access.notifications.objectTagged({
29
+ bucket,
30
+ object,
31
+ caller,
32
+ eventName: "s3:ObjectTagging:Delete",
33
+ versionId: taggable.versionId,
34
+ });
35
+ return {
36
+ ...(taggable.versionId !== undefined && {
37
+ VersionId: taggable.versionId,
38
+ }),
39
+ $metadata: {},
40
+ };
41
+ }
42
+ }
@@ -0,0 +1,29 @@
1
+ import type { SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
2
+ import type { SimS3Bucket } from "../../bucket/sim-s3-bucket.js";
3
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
4
+ interface SimS3EncryptionAuthorizerProperties {
5
+ readonly iam: SimIamInterServiceAuthZ;
6
+ }
7
+ /**
8
+ * Applies IAM authorization to the S3 Bucket encryption commands.
9
+ *
10
+ * Two actions for three commands. Real S3 governs both applying and removing a
11
+ * default encryption configuration with s3:PutEncryptionConfiguration, since
12
+ * removing one is applying the default in its place.
13
+ */
14
+ export declare class SimS3EncryptionAuthorizer {
15
+ private static readonly readAction;
16
+ private static readonly writeAction;
17
+ private readonly iam;
18
+ constructor(properties: SimS3EncryptionAuthorizerProperties);
19
+ /**
20
+ * Ensure the caller may read the Bucket's default encryption.
21
+ */
22
+ authorizeRead(bucket: SimS3Bucket, options?: SimS3RequestOptions): void;
23
+ /**
24
+ * Ensure the caller may change the Bucket's default encryption.
25
+ */
26
+ authorizeWrite(bucket: SimS3Bucket, options?: SimS3RequestOptions): void;
27
+ private authorize;
28
+ }
29
+ export {};
@@ -0,0 +1,49 @@
1
+ import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
2
+ import { simS3BucketArn } from "../../bucket/sim-s3-bucket-arn.js";
3
+ import { simS3BucketResourcePolicies } from "../authorize/sim-s3-bucket-resource-policies.js";
4
+ import { simS3ConditionContext } from "../authorize/sim-s3-condition-context.js";
5
+ /**
6
+ * Applies IAM authorization to the S3 Bucket encryption commands.
7
+ *
8
+ * Two actions for three commands. Real S3 governs both applying and removing a
9
+ * default encryption configuration with s3:PutEncryptionConfiguration, since
10
+ * removing one is applying the default in its place.
11
+ */
12
+ export class SimS3EncryptionAuthorizer {
13
+ static readAction = "s3:GetEncryptionConfiguration";
14
+ static writeAction = "s3:PutEncryptionConfiguration";
15
+ iam;
16
+ constructor(properties) {
17
+ this.iam = properties.iam;
18
+ }
19
+ /**
20
+ * Ensure the caller may read the Bucket's default encryption.
21
+ */
22
+ authorizeRead(bucket, options) {
23
+ this.authorize(SimS3EncryptionAuthorizer.readAction, bucket, options);
24
+ }
25
+ /**
26
+ * Ensure the caller may change the Bucket's default encryption.
27
+ */
28
+ authorizeWrite(bucket, options) {
29
+ this.authorize(SimS3EncryptionAuthorizer.writeAction, bucket, options);
30
+ }
31
+ authorize(action, bucket, options) {
32
+ const resource = simS3BucketArn(bucket.bucketName);
33
+ const decision = this.iam.authorize({
34
+ action,
35
+ resource,
36
+ caller: options?.caller,
37
+ conditionContext: simS3ConditionContext(options),
38
+ resourcePolicies: simS3BucketResourcePolicies(bucket),
39
+ });
40
+ if (decision.isDenied) {
41
+ throw new SimIamAccessDenied({
42
+ principal: decision.caller.principal,
43
+ reason: decision.denialReason,
44
+ action,
45
+ resource,
46
+ });
47
+ }
48
+ }
49
+ }
@@ -0,0 +1,22 @@
1
+ import type { SimS3BucketCommandState } from "../sim-s3-bucket-command-state.js";
2
+ import type * as simS3Commands from "../sim-s3-command.types.js";
3
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
4
+ /**
5
+ * The default encryption commands of one simulated S3 scope.
6
+ */
7
+ export declare class SimS3EncryptionCommands {
8
+ private readonly state;
9
+ constructor(state: SimS3BucketCommandState);
10
+ /**
11
+ * Apply a Bucket's default encryption.
12
+ */
13
+ put(command: simS3Commands.SimPutBucketEncryptionCommand, options?: SimS3RequestOptions): Promise<simS3Commands.SimPutBucketEncryptionCommandOutput>;
14
+ /**
15
+ * Read a Bucket's default encryption.
16
+ */
17
+ get(command: simS3Commands.SimGetBucketEncryptionCommand, options?: SimS3RequestOptions): Promise<simS3Commands.SimGetBucketEncryptionCommandOutput>;
18
+ /**
19
+ * Put a Bucket back to the encryption every Bucket has.
20
+ */
21
+ delete(command: simS3Commands.SimDeleteBucketEncryptionCommand, options?: SimS3RequestOptions): Promise<simS3Commands.SimDeleteBucketEncryptionCommandOutput>;
22
+ }
@@ -0,0 +1,30 @@
1
+ import { DeleteBucketEncryptionCommandHandler } from "../delete-bucket-encryption/delete-bucket-encryption.handler.js";
2
+ import { GetBucketEncryptionCommandHandler } from "../get-bucket-encryption/get-bucket-encryption.handler.js";
3
+ import { PutBucketEncryptionCommandHandler } from "../put-bucket-encryption/put-bucket-encryption.handler.js";
4
+ /**
5
+ * The default encryption commands of one simulated S3 scope.
6
+ */
7
+ export class SimS3EncryptionCommands {
8
+ state;
9
+ constructor(state) {
10
+ this.state = state;
11
+ }
12
+ /**
13
+ * Apply a Bucket's default encryption.
14
+ */
15
+ async put(command, options) {
16
+ return await new PutBucketEncryptionCommandHandler(this.state).handle(command, options);
17
+ }
18
+ /**
19
+ * Read a Bucket's default encryption.
20
+ */
21
+ async get(command, options) {
22
+ return await new GetBucketEncryptionCommandHandler(this.state).handle(command, options);
23
+ }
24
+ /**
25
+ * Put a Bucket back to the encryption every Bucket has.
26
+ */
27
+ async delete(command, options) {
28
+ return await new DeleteBucketEncryptionCommandHandler(this.state).handle(command, options);
29
+ }
30
+ }
@@ -0,0 +1,24 @@
1
+ import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
+ import type { SimS3ServerSideEncryptionConfiguration } from "../../bucket/encryption/sim-s3-bucket-encryption.js";
3
+ /**
4
+ * Minimal structural sim S3 GetBucketEncryption command.
5
+ */
6
+ export interface SimGetBucketEncryptionCommand {
7
+ readonly input: SimGetBucketEncryptionCommandInput;
8
+ }
9
+ /**
10
+ * Minimal structural sim S3 GetBucketEncryption input.
11
+ */
12
+ export interface SimGetBucketEncryptionCommandInput {
13
+ readonly Bucket?: string | undefined;
14
+ }
15
+ /**
16
+ * Minimal structural sim S3 GetBucketEncryption output.
17
+ *
18
+ * A Bucket nobody has configured answers with the SSE-S3 rule real S3 applies
19
+ * to every Bucket, rather than with an error.
20
+ */
21
+ export interface SimGetBucketEncryptionCommandOutput {
22
+ readonly ServerSideEncryptionConfiguration?: SimS3ServerSideEncryptionConfiguration;
23
+ readonly $metadata: SimResponseMetadata;
24
+ }
@@ -0,0 +1,31 @@
1
+ import type { CommandHandler } from "../../../../command/command-handler.js";
2
+ import { type BackgroundScheduler } from "../../../../util/background/background.js";
3
+ import { type SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
4
+ import type { SimS3Bucket, SimS3BucketName } from "../../bucket/sim-s3-bucket.js";
5
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
6
+ import type { SimGetBucketEncryptionCommand, SimGetBucketEncryptionCommandOutput } from "./get-bucket-encryption.command.js";
7
+ interface GetBucketEncryptionHandlerProperties {
8
+ readonly buckets: Map<SimS3BucketName, SimS3Bucket>;
9
+ readonly iam?: SimIamInterServiceAuthZ;
10
+ readonly background?: BackgroundScheduler;
11
+ }
12
+ /**
13
+ * Simulated S3 GetBucketEncryptionCommand handler.
14
+ *
15
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketEncryptionCommand/
16
+ */
17
+ export declare class GetBucketEncryptionCommandHandler implements CommandHandler<SimGetBucketEncryptionCommand, SimGetBucketEncryptionCommandOutput> {
18
+ private readonly buckets;
19
+ private readonly authorizer;
20
+ private readonly background;
21
+ constructor(properties: GetBucketEncryptionHandlerProperties);
22
+ /**
23
+ * Authorize and report a Bucket's default encryption.
24
+ *
25
+ * A Bucket nobody has configured answers with the SSE-S3 rule rather than an
26
+ * error, which is what real S3 has answered since it began encrypting every
27
+ * Bucket by default.
28
+ */
29
+ handle(command: SimGetBucketEncryptionCommand, options?: SimS3RequestOptions): Promise<SimGetBucketEncryptionCommandOutput>;
30
+ }
31
+ export {};
@@ -0,0 +1,39 @@
1
+ import { BackgroundTasks, } from "../../../../util/background/background.js";
2
+ import { assertDefined } from "../../../../util/type-guard/defined.js";
3
+ import { SimIamAllowAllAuth, } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
4
+ import { SimS3EncryptionAuthorizer } from "../encryption/sim-s3-encryption-authorizer.js";
5
+ import { requireSimS3Bucket } from "../require-sim-s3-bucket.js";
6
+ /**
7
+ * Simulated S3 GetBucketEncryptionCommand handler.
8
+ *
9
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketEncryptionCommand/
10
+ */
11
+ export class GetBucketEncryptionCommandHandler {
12
+ buckets;
13
+ authorizer;
14
+ background;
15
+ constructor(properties) {
16
+ const { buckets, iam = new SimIamAllowAllAuth(), background = new BackgroundTasks(), } = properties;
17
+ this.buckets = buckets;
18
+ this.authorizer = new SimS3EncryptionAuthorizer({ iam });
19
+ this.background = background;
20
+ }
21
+ /**
22
+ * Authorize and report a Bucket's default encryption.
23
+ *
24
+ * A Bucket nobody has configured answers with the SSE-S3 rule rather than an
25
+ * error, which is what real S3 has answered since it began encrypting every
26
+ * Bucket by default.
27
+ */
28
+ async handle(command, options) {
29
+ assertDefined(command.input.Bucket, "GetBucketEncryptionCommand.input.Bucket");
30
+ const bucketName = command.input.Bucket;
31
+ const bucket = requireSimS3Bucket(this.buckets, bucketName);
32
+ await this.background.sequence();
33
+ this.authorizer.authorizeRead(bucket, options);
34
+ return {
35
+ ServerSideEncryptionConfiguration: bucket.getEncryption().configuration,
36
+ $metadata: {},
37
+ };
38
+ }
39
+ }
@@ -7,21 +7,24 @@ interface GetObjectAuthorizerProperties {
7
7
  /**
8
8
  * Applies IAM authorization to an S3 GetObject request.
9
9
  *
10
- * GetObject is authorized against the target Object ARN rather than the Bucket
11
- * ARN. An omitted caller is passed through to sim IAM so Account root fallback
12
- * behavior remains owned by IAM.
13
- *
14
- * The request's source ARN and source Account go in as condition keys, which is
15
- * what a Bucket policy written for a CloudFront origin access control is
16
- * conditioned on.
10
+ * A read is authorized against the target Object ARN. A read that finds
11
+ * nothing is authorized a second time, against the Bucket ARN, because real S3
12
+ * decides between AccessDenied and NoSuchKey on `s3:ListBucket`.
17
13
  */
18
14
  export declare class GetObjectAuthorizer {
19
- private static readonly action;
20
15
  private readonly iam;
21
16
  constructor(properties: GetObjectAuthorizerProperties);
22
17
  /**
23
18
  * Ensure the caller may read the requested S3 Object.
24
19
  */
25
20
  authorize(bucket: SimS3Bucket, key: string, options?: SimS3RequestOptions): void;
21
+ /**
22
+ * Ensure the caller may be told that the Bucket holds no such key.
23
+ *
24
+ * Which keys a Bucket holds is what a listing tells you. Real S3 admits the
25
+ * absence only to a caller holding `s3:ListBucket` on the Bucket. Everyone
26
+ * else gets the same AccessDenied whether the key is there or not.
27
+ */
28
+ authorizeMissingKey(bucket: SimS3Bucket, options?: SimS3RequestOptions): void;
26
29
  }
27
30
  export {};
@@ -1,18 +1,12 @@
1
- import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
2
- import { simS3ConditionContext } from "../authorize/sim-s3-condition-context.js";
1
+ import { simS3AuthorizeAction } from "../authorize/sim-s3-authorize-action.js";
3
2
  /**
4
3
  * Applies IAM authorization to an S3 GetObject request.
5
4
  *
6
- * GetObject is authorized against the target Object ARN rather than the Bucket
7
- * ARN. An omitted caller is passed through to sim IAM so Account root fallback
8
- * behavior remains owned by IAM.
9
- *
10
- * The request's source ARN and source Account go in as condition keys, which is
11
- * what a Bucket policy written for a CloudFront origin access control is
12
- * conditioned on.
5
+ * A read is authorized against the target Object ARN. A read that finds
6
+ * nothing is authorized a second time, against the Bucket ARN, because real S3
7
+ * decides between AccessDenied and NoSuchKey on `s3:ListBucket`.
13
8
  */
14
9
  export class GetObjectAuthorizer {
15
- static action = "s3:GetObject";
16
10
  iam;
17
11
  constructor(properties) {
18
12
  this.iam = properties.iam;
@@ -21,30 +15,28 @@ export class GetObjectAuthorizer {
21
15
  * Ensure the caller may read the requested S3 Object.
22
16
  */
23
17
  authorize(bucket, key, options) {
24
- const resource = `arn:aws:s3:::${bucket.bucketName}/${key}`;
25
- const policy = bucket.getPolicy();
26
- const decision = this.iam.authorize({
27
- action: GetObjectAuthorizer.action,
28
- resource,
29
- caller: options?.caller,
30
- conditionContext: simS3ConditionContext(options),
31
- resourcePolicies: policy === undefined
32
- ? []
33
- : [
34
- {
35
- document: policy,
36
- policyName: "BucketPolicy",
37
- resourceArn: `arn:aws:s3:::${bucket.bucketName}`,
38
- },
39
- ],
18
+ simS3AuthorizeAction({
19
+ iam: this.iam,
20
+ action: "s3:GetObject",
21
+ resource: `arn:aws:s3:::${bucket.bucketName}/${key}`,
22
+ bucket,
23
+ options,
24
+ });
25
+ }
26
+ /**
27
+ * Ensure the caller may be told that the Bucket holds no such key.
28
+ *
29
+ * Which keys a Bucket holds is what a listing tells you. Real S3 admits the
30
+ * absence only to a caller holding `s3:ListBucket` on the Bucket. Everyone
31
+ * else gets the same AccessDenied whether the key is there or not.
32
+ */
33
+ authorizeMissingKey(bucket, options) {
34
+ simS3AuthorizeAction({
35
+ iam: this.iam,
36
+ action: "s3:ListBucket",
37
+ resource: `arn:aws:s3:::${bucket.bucketName}`,
38
+ bucket,
39
+ options,
40
40
  });
41
- if (decision.isDenied) {
42
- throw new SimIamAccessDenied({
43
- principal: decision.caller.principal,
44
- reason: decision.denialReason,
45
- action: GetObjectAuthorizer.action,
46
- resource,
47
- });
48
- }
49
41
  }
50
42
  }
@@ -10,8 +10,8 @@ import type { SimGetObjectCommandOutput } from "./get-object.command.js";
10
10
  * This class owns both storage lookup and response conversion because the SDK
11
11
  * response is a representation of the stored Object:
12
12
  *
13
- * - a missing storage entry becomes the S3 NoSuchKey error, and a `VersionId`
14
- * naming a version the Bucket never issued becomes NoSuchVersion;
13
+ * - a `VersionId` naming a version the Bucket never issued becomes
14
+ * NoSuchVersion;
15
15
  * - the stored Buffer, or the part of it the read asked for, becomes the
16
16
  * readable response body;
17
17
  * - what S3 was told about the Object becomes the response's own fields, and
@@ -25,6 +25,10 @@ export declare class GetObjectLoader {
25
25
  /**
26
26
  * Read an Object, or the range of it that was asked for, from the resolved
27
27
  * Bucket, and build its SDK command output.
28
+ *
29
+ * Answering `undefined` means the key holds nothing. The command handler
30
+ * turns that into the error the caller's permissions allow, which for a
31
+ * missing key is a decision of its own.
28
32
  */
29
- load(bucket: SimS3Bucket, key: string, rangeHeader?: string, versionId?: string): Promise<SimGetObjectCommandOutput>;
33
+ load(bucket: SimS3Bucket, key: string, rangeHeader?: string, versionId?: string): Promise<SimGetObjectCommandOutput | undefined>;
30
34
  }
@@ -1,6 +1,6 @@
1
1
  import { Readable } from "node:stream";
2
- import { SimS3NoSuchKey } from "../../error/sim-s3.error.js";
3
2
  import { simS3QuotedETag } from "../../object/s3-object-etag.js";
3
+ import { simS3ObjectStorageReport } from "../../object/s3-object-storage-report.js";
4
4
  import { simS3ContentRange, simS3ReadObjectRange, } from "../../object/s3-object-range.js";
5
5
  import { simS3ReadObjectVersion } from "../object/sim-s3-read-object-version.js";
6
6
  /**
@@ -13,8 +13,8 @@ import { simS3ReadObjectVersion } from "../object/sim-s3-read-object-version.js"
13
13
  * This class owns both storage lookup and response conversion because the SDK
14
14
  * response is a representation of the stored Object:
15
15
  *
16
- * - a missing storage entry becomes the S3 NoSuchKey error, and a `VersionId`
17
- * naming a version the Bucket never issued becomes NoSuchVersion;
16
+ * - a `VersionId` naming a version the Bucket never issued becomes
17
+ * NoSuchVersion;
18
18
  * - the stored Buffer, or the part of it the read asked for, becomes the
19
19
  * readable response body;
20
20
  * - what S3 was told about the Object becomes the response's own fields, and
@@ -28,11 +28,15 @@ export class GetObjectLoader {
28
28
  /**
29
29
  * Read an Object, or the range of it that was asked for, from the resolved
30
30
  * Bucket, and build its SDK command output.
31
+ *
32
+ * Answering `undefined` means the key holds nothing. The command handler
33
+ * turns that into the error the caller's permissions allow, which for a
34
+ * missing key is a decision of its own.
31
35
  */
32
36
  async load(bucket, key, rangeHeader, versionId) {
33
37
  const read = await simS3ReadObjectVersion(bucket, key, versionId);
34
38
  if (read === undefined) {
35
- throw new SimS3NoSuchKey(`No S3 Object named ${key}`);
39
+ return undefined;
36
40
  }
37
41
  const object = read.object;
38
42
  const size = object.body.length;
@@ -51,6 +55,7 @@ export class GetObjectLoader {
51
55
  LastModified: object.lastModified,
52
56
  ContentLength: body.length,
53
57
  ...(read.versionId !== undefined && { VersionId: read.versionId }),
58
+ ...simS3ObjectStorageReport(object),
54
59
  ...read.lock?.reported,
55
60
  ...(range !== undefined && {
56
61
  ContentRange: simS3ContentRange(range, size),
@@ -1,6 +1,7 @@
1
1
  import type { Readable } from "node:stream";
2
2
  import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
3
3
  import type { SimS3ObjectLockOutput } from "../../bucket/lock/sim-s3-object-lock-output.js";
4
+ import type { SimS3ObjectStorageReport } from "../../object/s3-object-storage-report.js";
4
5
  import type { SimS3SystemMetadataOutput } from "../../object/s3-system-metadata-read.js";
5
6
  /**
6
7
  * Minimal structural sim S3 GetObject command.
@@ -41,7 +42,7 @@ export interface SimGetObjectCommandInput {
41
42
  * when it was written. `Metadata` is what the caller attached to it, and holds
42
43
  * nothing else.
43
44
  */
44
- export interface SimGetObjectCommandOutput extends SimS3SystemMetadataOutput, SimS3ObjectLockOutput {
45
+ export interface SimGetObjectCommandOutput extends SimS3SystemMetadataOutput, SimS3ObjectLockOutput, SimS3ObjectStorageReport {
45
46
  readonly Body?: Readable;
46
47
  readonly Metadata?: Record<string, string>;
47
48
  readonly ETag?: string;
@@ -33,6 +33,10 @@ export declare class GetObjectCommandHandler implements CommandHandler<SimGetObj
33
33
  *
34
34
  * A stated `Range` reaches the loader with the key, since which bytes of an
35
35
  * Object a caller may read is not something IAM decides.
36
+ *
37
+ * A key holding nothing goes back to authorization before the absence is
38
+ * reported. Real S3 tells a caller that a key is missing only where it may
39
+ * list the Bucket, and answers AccessDenied otherwise.
36
40
  */
37
41
  handle(command: SimGetObjectCommand, options?: SimS3RequestOptions): Promise<SimGetObjectCommandOutput>;
38
42
  }
@@ -1,7 +1,8 @@
1
1
  import { assertDefined } from "../../../../util/type-guard/defined.js";
2
- import { SimS3NoSuchBucket } from "../../error/sim-s3.error.js";
2
+ import { SimS3NoSuchKey } from "../../error/sim-s3.error.js";
3
3
  import { BackgroundTasks, } from "../../../../util/background/background.js";
4
4
  import { SimIamAllowAllAuth, } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
5
+ import { requireSimS3Bucket } from "../require-sim-s3-bucket.js";
5
6
  import { GetObjectAuthorizer } from "./get-object-authorizer.js";
6
7
  import { GetObjectLoader } from "./get-object-loader.js";
7
8
  /**
@@ -33,18 +34,23 @@ export class GetObjectCommandHandler {
33
34
  *
34
35
  * A stated `Range` reaches the loader with the key, since which bytes of an
35
36
  * Object a caller may read is not something IAM decides.
37
+ *
38
+ * A key holding nothing goes back to authorization before the absence is
39
+ * reported. Real S3 tells a caller that a key is missing only where it may
40
+ * list the Bucket, and answers AccessDenied otherwise.
36
41
  */
37
42
  async handle(command, options) {
38
43
  assertDefined(command.input.Bucket, "GetObjectCommand.input.Bucket");
39
44
  assertDefined(command.input.Key, "GetObjectCommand.input.Key");
40
- const bucketName = command.input.Bucket;
41
- const bucket = this.buckets.get(bucketName);
42
- if (bucket === undefined) {
43
- throw new SimS3NoSuchBucket(`No S3 Bucket named ${bucketName}`);
44
- }
45
+ const bucket = requireSimS3Bucket(this.buckets, command.input.Bucket);
45
46
  // Complete request sequencing before authorization and storage access.
46
47
  await this.background.sequence();
47
48
  this.authorizer.authorize(bucket, command.input.Key, options);
48
- return await this.loader.load(bucket, command.input.Key, command.input.Range, command.input.VersionId);
49
+ const output = await this.loader.load(bucket, command.input.Key, command.input.Range, command.input.VersionId);
50
+ if (output !== undefined) {
51
+ return output;
52
+ }
53
+ this.authorizer.authorizeMissingKey(bucket, options);
54
+ throw new SimS3NoSuchKey(`No S3 Object named ${command.input.Key}`);
49
55
  }
50
56
  }
@@ -0,0 +1,29 @@
1
+ import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
+ import type { SimS3ObjectTag } from "../../object/s3-object-tags.js";
3
+ /**
4
+ * Minimal structural sim S3 GetObjectTagging command.
5
+ */
6
+ export interface SimGetObjectTaggingCommand {
7
+ readonly input: SimGetObjectTaggingCommandInput;
8
+ }
9
+ /**
10
+ * Minimal structural sim S3 GetObjectTagging input.
11
+ */
12
+ export interface SimGetObjectTaggingCommandInput {
13
+ readonly Bucket?: string | undefined;
14
+ readonly Key?: string | undefined;
15
+ /** The version to read. A request naming none reads the current one. */
16
+ readonly VersionId?: string | undefined;
17
+ }
18
+ /**
19
+ * Minimal structural sim S3 GetObjectTagging output.
20
+ *
21
+ * `TagSet` is always present, and is empty for an Object nobody has tagged.
22
+ * Real S3 answers an untagged Object with an empty set rather than refusing,
23
+ * because having no tags is not the same as not existing.
24
+ */
25
+ export interface SimGetObjectTaggingCommandOutput {
26
+ readonly TagSet: readonly SimS3ObjectTag[];
27
+ readonly VersionId?: string | undefined;
28
+ readonly $metadata: SimResponseMetadata;
29
+ }
@@ -0,0 +1,21 @@
1
+ import type { CommandHandler } from "../../../../command/command-handler.js";
2
+ import { type SimS3ObjectTaggingAccessProperties } from "../tagging/sim-s3-object-tagging-access.js";
3
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
4
+ import type { SimGetObjectTaggingCommand, SimGetObjectTaggingCommandOutput } from "./get-object-tagging.command.js";
5
+ /**
6
+ * Simulated S3 GetObjectTaggingCommand handler.
7
+ *
8
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectTaggingCommand/
9
+ */
10
+ export declare class GetObjectTaggingCommandHandler implements CommandHandler<SimGetObjectTaggingCommand, SimGetObjectTaggingCommandOutput> {
11
+ private readonly access;
12
+ constructor(properties: SimS3ObjectTaggingAccessProperties);
13
+ /**
14
+ * Read the tags on an Object, or on the version the request named.
15
+ *
16
+ * An Object nobody has tagged answers with an empty set rather than a
17
+ * refusal, as real S3 does. Nothing is announced: real S3 raises a tagging
18
+ * event for a change to the tags, and a read changes nothing.
19
+ */
20
+ handle(command: SimGetObjectTaggingCommand, options?: SimS3RequestOptions): Promise<SimGetObjectTaggingCommandOutput>;
21
+ }
@@ -0,0 +1,33 @@
1
+ import { SimS3ObjectTaggingAccess, } from "../tagging/sim-s3-object-tagging-access.js";
2
+ /**
3
+ * Simulated S3 GetObjectTaggingCommand handler.
4
+ *
5
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectTaggingCommand/
6
+ */
7
+ export class GetObjectTaggingCommandHandler {
8
+ access;
9
+ constructor(properties) {
10
+ this.access = new SimS3ObjectTaggingAccess(properties);
11
+ }
12
+ /**
13
+ * Read the tags on an Object, or on the version the request named.
14
+ *
15
+ * An Object nobody has tagged answers with an empty set rather than a
16
+ * refusal, as real S3 does. Nothing is announced: real S3 raises a tagging
17
+ * event for a change to the tags, and a read changes nothing.
18
+ */
19
+ async handle(command, options) {
20
+ const { taggable } = await this.access.reach({
21
+ commandName: "GetObjectTaggingCommand",
22
+ action: "s3:GetObjectTagging",
23
+ input: command.input,
24
+ }, options);
25
+ return {
26
+ TagSet: taggable.tagSet.tags,
27
+ ...(taggable.versionId !== undefined && {
28
+ VersionId: taggable.versionId,
29
+ }),
30
+ $metadata: {},
31
+ };
32
+ }
33
+ }
@@ -1,5 +1,6 @@
1
1
  import { SimS3NotFound } from "../../error/sim-s3.error.js";
2
2
  import { simS3QuotedETag } from "../../object/s3-object-etag.js";
3
+ import { simS3ObjectStorageReport } from "../../object/s3-object-storage-report.js";
3
4
  import { simS3ReadObjectVersion } from "../object/sim-s3-read-object-version.js";
4
5
  /**
5
6
  * Describes an authorized S3 Object without reading it out.
@@ -26,6 +27,7 @@ export class HeadObjectLoader {
26
27
  ETag: simS3QuotedETag(object.etag),
27
28
  LastModified: object.lastModified,
28
29
  ...(read.versionId !== undefined && { VersionId: read.versionId }),
30
+ ...simS3ObjectStorageReport(object),
29
31
  ...read.lock?.reported,
30
32
  $metadata: {},
31
33
  };
@@ -1,5 +1,6 @@
1
1
  import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
2
  import type { SimS3ObjectLockOutput } from "../../bucket/lock/sim-s3-object-lock-output.js";
3
+ import type { SimS3ObjectStorageReport } from "../../object/s3-object-storage-report.js";
3
4
  import type { SimS3SystemMetadataOutput } from "../../object/s3-system-metadata-read.js";
4
5
  /**
5
6
  * Minimal structural sim S3 HeadObject command.
@@ -26,7 +27,7 @@ export interface SimHeadObjectCommandInput {
26
27
  * the Object itself, so this is a GetObject output without its body and with
27
28
  * the length that body would have had.
28
29
  */
29
- export interface SimHeadObjectCommandOutput extends SimS3SystemMetadataOutput, SimS3ObjectLockOutput {
30
+ export interface SimHeadObjectCommandOutput extends SimS3SystemMetadataOutput, SimS3ObjectLockOutput, SimS3ObjectStorageReport {
30
31
  readonly ContentLength?: number;
31
32
  readonly Metadata?: Record<string, string>;
32
33
  readonly ETag?: string;