@kensio/yulin 1.21.3 → 1.21.5

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