@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
@@ -18,6 +18,7 @@ import type { SimLambdaVmSdkModuleProvider } from "./function/code/vm/sdk/sim-la
18
18
  import type { SimCloudWatchServiceWriter } from "../cloudwatch/write/sim-cloudwatch-service-writer.js";
19
19
  import type { SimLogsServiceWriter } from "../logs/write/sim-logs-service-writer.js";
20
20
  import type { SimLambdaOutboundHttp } from "./function/outbound/sim-lambda-outbound-http.js";
21
+ import { SimLambdaOutput } from "./function/logging/sim-lambda-output.js";
21
22
  import { SimLambdaEventInvokeConfigStore } from "./function/event-invoke/sim-lambda-event-invoke-config-store.js";
22
23
  import { type SimLambdaDestinationTargets } from "./destination/sim-lambda-destination-targets.js";
23
24
  import type { SimLambdaFunctionMap } from "./function/sim-lambda-function.js";
@@ -79,6 +80,15 @@ export declare class SimLambdaCommands {
79
80
  readonly functionUrlStore: SimLambdaFunctionUrlStore;
80
81
  readonly versionStore: SimLambdaFunctionVersionStore;
81
82
  readonly aliasStore: SimLambdaFunctionAliasStore;
83
+ /**
84
+ * Where this simulated Lambda's functions send what they print, besides
85
+ * their own log groups.
86
+ *
87
+ * Shared across every function so that one setting covers a simulation with
88
+ * several of them, and read as each line is written so that a function that
89
+ * has already cold started follows a change.
90
+ */
91
+ readonly output: SimLambdaOutput;
82
92
  readonly functionLookup: SimLambdaFunctionLookup;
83
93
  readonly eventInvokeConfigStore: SimLambdaEventInvokeConfigStore;
84
94
  readonly functions: SimLambdaFunctionCommands;
@@ -14,6 +14,7 @@ import { SimLambdaNoEventSourceStreams, } from "./event-source/stream/sim-lambda
14
14
  import { SimLambdaNoKinesisStreams } from "./event-source/stream/kinesis/sim-lambda-no-kinesis-streams.js";
15
15
  import { SimLambdaNoContainerImages, } from "./function/code/image/sim-lambda-container-images.js";
16
16
  import { SimLambdaEnvironmentConflicts } from "./function/environment/sim-lambda-environment-conflicts.js";
17
+ import { SimLambdaOutput } from "./function/logging/sim-lambda-output.js";
17
18
  import { SimLambdaEventInvokeConfigStore } from "./function/event-invoke/sim-lambda-event-invoke-config-store.js";
18
19
  import { SimLambdaNoDestinationTargets, } from "./destination/sim-lambda-destination-targets.js";
19
20
  import { SimLambdaFunctionLookup } from "./function/url/sim-lambda-function-lookup.js";
@@ -41,6 +42,15 @@ export class SimLambdaCommands {
41
42
  aliasStore = new SimLambdaFunctionAliasStore({
42
43
  versions: this.versionStore,
43
44
  });
45
+ /**
46
+ * Where this simulated Lambda's functions send what they print, besides
47
+ * their own log groups.
48
+ *
49
+ * Shared across every function so that one setting covers a simulation with
50
+ * several of them, and read as each line is written so that a function that
51
+ * has already cold started follows a change.
52
+ */
53
+ output = new SimLambdaOutput();
44
54
  functionLookup;
45
55
  eventInvokeConfigStore;
46
56
  functions;
@@ -142,6 +152,7 @@ export class SimLambdaCommands {
142
152
  containerImages,
143
153
  vmSdkModuleProvider,
144
154
  logs,
155
+ output: this.output,
145
156
  metrics,
146
157
  outboundHttp,
147
158
  });
@@ -1,6 +1,7 @@
1
1
  import type { SimSdkCommandRouter } from "../../sdk/index.js";
2
2
  import type { SimCfnServiceResourceFactory } from "../cloudformation/resource/factory/sim-cfn-resource-factory.type.js";
3
3
  import type { SimLambdaContainerImages } from "./function/code/image/sim-lambda-container-images.js";
4
+ import type { SimLambdaOutput } from "./function/logging/sim-lambda-output.js";
4
5
  import type { SimLambdaFunctionMap } from "./function/sim-lambda-function.js";
5
6
  import type * as simLambdaCommands from "./command/sim-lambda-command.types.js";
6
7
  import { SimLambdaCommands, type SimLambdaProperties } from "./sim-lambda-commands.js";
@@ -32,6 +33,17 @@ export declare class SimLambda extends SimLambdaEventInvokeOperations {
32
33
  * @internal
33
34
  */
34
35
  containerImages(): SimLambdaContainerImages;
36
+ /**
37
+ * Where this simulated Lambda's functions send what they print, besides the
38
+ * log group they always reach. The host console gets a copy until told
39
+ * otherwise, and these settings belong to one Account and Region as the
40
+ * functions do.
41
+ *
42
+ * ```typescript
43
+ * simAws.lambda().output().captureOnly();
44
+ * ```
45
+ */
46
+ output(): SimLambdaOutput;
35
47
  /** Handle a Create Function Command from the SDK. */
36
48
  createFunction(command: simLambdaCommands.SimCreateFunctionCommand, options?: SimLambdaRequestOptions): Promise<simLambdaCommands.SimCreateFunctionCommandOutput>;
37
49
  /** Handle a Get Function Command from the SDK. */
@@ -39,6 +39,19 @@ export class SimLambda extends SimLambdaEventInvokeOperations {
39
39
  containerImages() {
40
40
  return this.commands.containerImages;
41
41
  }
42
+ /**
43
+ * Where this simulated Lambda's functions send what they print, besides the
44
+ * log group they always reach. The host console gets a copy until told
45
+ * otherwise, and these settings belong to one Account and Region as the
46
+ * functions do.
47
+ *
48
+ * ```typescript
49
+ * simAws.lambda().output().captureOnly();
50
+ * ```
51
+ */
52
+ output() {
53
+ return this.commands.output;
54
+ }
42
55
  /** Handle a Create Function Command from the SDK. */
43
56
  async createFunction(command, options) {
44
57
  return await this.commands.functions.create(command, options);
@@ -0,0 +1,67 @@
1
+ import { type SimS3ServerSideEncryption } from "../../object/s3-server-side-encryption.js";
2
+ /**
3
+ * The encryption a Bucket applies to an Object whose write named none.
4
+ */
5
+ export interface SimS3ServerSideEncryptionByDefault {
6
+ readonly SSEAlgorithm?: string | undefined;
7
+ readonly KMSMasterKeyID?: string | undefined;
8
+ }
9
+ /**
10
+ * One rule of a Bucket's default encryption configuration.
11
+ *
12
+ * Real S3 takes exactly one. `BucketKeyEnabled` says whether S3 uses a bucket
13
+ * key to cut KMS calls, and is stored and read back here without acting.
14
+ */
15
+ export interface SimS3ServerSideEncryptionRule {
16
+ readonly ApplyServerSideEncryptionByDefault?: SimS3ServerSideEncryptionByDefault | undefined;
17
+ readonly BucketKeyEnabled?: boolean | undefined;
18
+ }
19
+ /**
20
+ * A Bucket's default encryption configuration, as a request states it.
21
+ */
22
+ export interface SimS3ServerSideEncryptionConfiguration {
23
+ readonly Rules?: readonly SimS3ServerSideEncryptionRule[] | undefined;
24
+ }
25
+ interface SimS3BucketEncryptionProperties {
26
+ readonly rules?: readonly SimS3ServerSideEncryptionRule[] | undefined;
27
+ }
28
+ /**
29
+ * The default encryption of one simulated S3 Bucket.
30
+ *
31
+ * Nothing is encrypted. The bytes of an Object are stored as they arrive, and
32
+ * its ETag stays the MD5 of them, which is what real S3 reports for an
33
+ * SSE-S3 Object as well. What this decides is the algorithm a write stamps on
34
+ * an Object when it names none itself, and what `GetBucketEncryption` answers.
35
+ *
36
+ * A Bucket nobody has configured is SSE-S3 encrypted. Real S3 has applied that
37
+ * default to every Bucket since January 2023, and answers a read of an
38
+ * unconfigured Bucket with the same `AES256` rule as one configured that way.
39
+ */
40
+ export declare class SimS3BucketEncryption {
41
+ private readonly storedRules;
42
+ constructor(properties?: SimS3BucketEncryptionProperties);
43
+ /**
44
+ * The encryption a Bucket nobody has configured has, which is what
45
+ * `DeleteBucketEncryption` puts a Bucket back to.
46
+ */
47
+ static default(): SimS3BucketEncryption;
48
+ /**
49
+ * The encryption a PutBucketEncryption request asks for.
50
+ *
51
+ * Every algorithm named is read here, before the Bucket is changed, so a
52
+ * configuration real S3 refuses leaves the Bucket as it was.
53
+ */
54
+ static fromConfiguration(configuration: SimS3ServerSideEncryptionConfiguration, bucketName: string): SimS3BucketEncryption;
55
+ /**
56
+ * The algorithm this Bucket stamps on an Object written without one.
57
+ */
58
+ get algorithm(): SimS3ServerSideEncryption;
59
+ /**
60
+ * The configuration a read of the Bucket answers with.
61
+ *
62
+ * Cloned on the way out, so a caller holding what it was given cannot change
63
+ * what the Bucket applies by mutating it.
64
+ */
65
+ get configuration(): SimS3ServerSideEncryptionConfiguration;
66
+ }
67
+ export {};
@@ -0,0 +1,69 @@
1
+ import { simS3DefaultServerSideEncryption, simS3ServerSideEncryptionFrom, } from "../../object/s3-server-side-encryption.js";
2
+ /**
3
+ * The default encryption of one simulated S3 Bucket.
4
+ *
5
+ * Nothing is encrypted. The bytes of an Object are stored as they arrive, and
6
+ * its ETag stays the MD5 of them, which is what real S3 reports for an
7
+ * SSE-S3 Object as well. What this decides is the algorithm a write stamps on
8
+ * an Object when it names none itself, and what `GetBucketEncryption` answers.
9
+ *
10
+ * A Bucket nobody has configured is SSE-S3 encrypted. Real S3 has applied that
11
+ * default to every Bucket since January 2023, and answers a read of an
12
+ * unconfigured Bucket with the same `AES256` rule as one configured that way.
13
+ */
14
+ export class SimS3BucketEncryption {
15
+ storedRules;
16
+ constructor(properties = {}) {
17
+ this.storedRules = structuredClone(properties.rules ?? defaultRules);
18
+ }
19
+ /**
20
+ * The encryption a Bucket nobody has configured has, which is what
21
+ * `DeleteBucketEncryption` puts a Bucket back to.
22
+ */
23
+ static default() {
24
+ return new SimS3BucketEncryption();
25
+ }
26
+ /**
27
+ * The encryption a PutBucketEncryption request asks for.
28
+ *
29
+ * Every algorithm named is read here, before the Bucket is changed, so a
30
+ * configuration real S3 refuses leaves the Bucket as it was.
31
+ */
32
+ static fromConfiguration(configuration, bucketName) {
33
+ const rules = configuration.Rules ?? [];
34
+ for (const rule of rules) {
35
+ simS3ServerSideEncryptionFrom(rule.ApplyServerSideEncryptionByDefault?.SSEAlgorithm, `the default encryption of Bucket ${bucketName}`);
36
+ }
37
+ return new SimS3BucketEncryption({ rules });
38
+ }
39
+ /**
40
+ * The algorithm this Bucket stamps on an Object written without one.
41
+ */
42
+ get algorithm() {
43
+ const named = this.storedRules
44
+ .map((rule) => rule.ApplyServerSideEncryptionByDefault?.SSEAlgorithm)
45
+ .find((algorithm) => algorithm !== undefined);
46
+ return (simS3ServerSideEncryptionFrom(named, "a stored Bucket configuration") ??
47
+ simS3DefaultServerSideEncryption);
48
+ }
49
+ /**
50
+ * The configuration a read of the Bucket answers with.
51
+ *
52
+ * Cloned on the way out, so a caller holding what it was given cannot change
53
+ * what the Bucket applies by mutating it.
54
+ */
55
+ get configuration() {
56
+ return { Rules: structuredClone(this.storedRules) };
57
+ }
58
+ }
59
+ /**
60
+ * The rule real S3 reports for a Bucket nobody has configured.
61
+ */
62
+ const defaultRules = [
63
+ {
64
+ ApplyServerSideEncryptionByDefault: {
65
+ SSEAlgorithm: simS3DefaultServerSideEncryption,
66
+ },
67
+ BucketKeyEnabled: false,
68
+ },
69
+ ];
@@ -1,36 +1,8 @@
1
1
  import type { SimS3LifecycleConfiguration as SimS3LifecycleConfigurationInput, SimS3LifecycleRule } from "../../command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.js";
2
+ import type { SimS3LifecycleNoncurrentVersion, SimS3LifecycleObject, SimS3LifecycleUpload } from "./sim-s3-lifecycle-subject.js";
2
3
  interface SimS3LifecycleConfigurationProperties {
3
4
  readonly rules?: readonly SimS3LifecycleRule[];
4
5
  }
5
- /**
6
- * An Object as a lifecycle rule reads it.
7
- */
8
- export interface SimS3LifecycleObject {
9
- readonly key: string;
10
- readonly size: number;
11
- readonly lastModified: Date;
12
- }
13
- /**
14
- * A noncurrent version as a lifecycle rule reads it.
15
- *
16
- * `newerVersionsAhead` is how many noncurrent versions of the same key are
17
- * newer than this one, which is what `NewerNoncurrentVersions` counts. The
18
- * current version is not one of them, since a rule for noncurrent versions
19
- * never reaches it.
20
- */
21
- export interface SimS3LifecycleNoncurrentVersion {
22
- readonly key: string;
23
- readonly size: number;
24
- readonly noncurrentSince: Date | undefined;
25
- readonly newerVersionsAhead: number;
26
- }
27
- /**
28
- * A multipart upload in progress as a lifecycle rule reads it.
29
- */
30
- export interface SimS3LifecycleUpload {
31
- readonly key: string;
32
- readonly initiated: Date;
33
- }
34
6
  /**
35
7
  * The lifecycle configuration of one simulated S3 Bucket.
36
8
  *
@@ -107,8 +79,9 @@ export declare class SimS3LifecycleConfiguration {
107
79
  *
108
80
  * Read from the stored rules rather than from `rules`, because every read of
109
81
  * a Bucket asks and cloning the whole configuration each time would be the
110
- * cost of having one.
82
+ * cost of having one. A transition is worked out from these by
83
+ * `simS3TransitionedObjectClass`.
111
84
  */
112
- private enabledRules;
85
+ get enabledRules(): readonly SimS3LifecycleRule[];
113
86
  }
114
87
  export {};
@@ -60,7 +60,7 @@ export class SimS3LifecycleConfiguration {
60
60
  * shortest one.
61
61
  */
62
62
  expires(object, now) {
63
- return this.enabledRules().some((rule) => rule.Expiration !== undefined &&
63
+ return this.enabledRules.some((rule) => rule.Expiration !== undefined &&
64
64
  simS3LifecycleRuleSelects(rule, object) &&
65
65
  simS3LifecycleReached(simS3ObjectExpiryInstant(rule.Expiration, object.lastModified), now));
66
66
  }
@@ -73,7 +73,7 @@ export class SimS3LifecycleConfiguration {
73
73
  * reaches the third and everything older.
74
74
  */
75
75
  expiresNoncurrent(version, now) {
76
- return this.enabledRules().some((rule) => {
76
+ return this.enabledRules.some((rule) => {
77
77
  const expiration = rule.NoncurrentVersionExpiration;
78
78
  return (expiration !== undefined &&
79
79
  version.newerVersionsAhead >=
@@ -91,7 +91,7 @@ export class SimS3LifecycleConfiguration {
91
91
  * key in a listing once its last version has gone.
92
92
  */
93
93
  expiresDeleteMarker(key) {
94
- return this.enabledRules().some((rule) => rule.Expiration?.ExpiredObjectDeleteMarker === true &&
94
+ return this.enabledRules.some((rule) => rule.Expiration?.ExpiredObjectDeleteMarker === true &&
95
95
  simS3LifecycleRuleSelects(rule, { key }));
96
96
  }
97
97
  /**
@@ -99,7 +99,7 @@ export class SimS3LifecycleConfiguration {
99
99
  * instant.
100
100
  */
101
101
  abandons(upload, now) {
102
- return this.enabledRules().some((rule) => rule.AbortIncompleteMultipartUpload !== undefined &&
102
+ return this.enabledRules.some((rule) => rule.AbortIncompleteMultipartUpload !== undefined &&
103
103
  simS3LifecycleRuleSelects(rule, { key: upload.key }) &&
104
104
  simS3LifecycleReached(simS3UploadAbortInstant(rule.AbortIncompleteMultipartUpload, upload.initiated), now));
105
105
  }
@@ -108,9 +108,10 @@ export class SimS3LifecycleConfiguration {
108
108
  *
109
109
  * Read from the stored rules rather than from `rules`, because every read of
110
110
  * a Bucket asks and cloning the whole configuration each time would be the
111
- * cost of having one.
111
+ * cost of having one. A transition is worked out from these by
112
+ * `simS3TransitionedObjectClass`.
112
113
  */
113
- enabledRules() {
114
+ get enabledRules() {
114
115
  return this.storedRules.filter((rule) => rule.Status === "Enabled");
115
116
  }
116
117
  }
@@ -32,3 +32,8 @@ export declare function simS3UploadAbortInstant(abort: SimS3LifecycleAbortIncomp
32
32
  * Whether simulated time has reached a boundary.
33
33
  */
34
34
  export declare function simS3LifecycleReached(boundary: Date | undefined, now: Date): boolean;
35
+ /**
36
+ * The instant a number of days after another one, which is how every lifecycle
37
+ * boundary measured in days is reached.
38
+ */
39
+ export declare function simS3LifecycleAfterDays(from: Date, days: number): Date;
@@ -14,7 +14,7 @@ const millisecondsPerDay = 24 * 60 * 60 * 1000;
14
14
  */
15
15
  export function simS3ObjectExpiryInstant(expiration, writtenAt) {
16
16
  if (expiration.Days !== undefined) {
17
- return afterDays(writtenAt, expiration.Days);
17
+ return simS3LifecycleAfterDays(writtenAt, expiration.Days);
18
18
  }
19
19
  if (expiration.Date !== undefined) {
20
20
  return new Date(expiration.Date);
@@ -35,7 +35,7 @@ export function simS3NoncurrentExpiryInstant(expiration, noncurrentSince) {
35
35
  expiration.NoncurrentDays === undefined) {
36
36
  return undefined;
37
37
  }
38
- return afterDays(noncurrentSince, expiration.NoncurrentDays);
38
+ return simS3LifecycleAfterDays(noncurrentSince, expiration.NoncurrentDays);
39
39
  }
40
40
  /**
41
41
  * The instant an `AbortIncompleteMultipartUpload` abandons an upload started
@@ -45,7 +45,7 @@ export function simS3UploadAbortInstant(abort, initiated) {
45
45
  if (abort.DaysAfterInitiation === undefined) {
46
46
  return undefined;
47
47
  }
48
- return afterDays(initiated, abort.DaysAfterInitiation);
48
+ return simS3LifecycleAfterDays(initiated, abort.DaysAfterInitiation);
49
49
  }
50
50
  /**
51
51
  * Whether simulated time has reached a boundary.
@@ -53,6 +53,10 @@ export function simS3UploadAbortInstant(abort, initiated) {
53
53
  export function simS3LifecycleReached(boundary, now) {
54
54
  return boundary !== undefined && now.getTime() >= boundary.getTime();
55
55
  }
56
- function afterDays(from, days) {
56
+ /**
57
+ * The instant a number of days after another one, which is how every lifecycle
58
+ * boundary measured in days is reached.
59
+ */
60
+ export function simS3LifecycleAfterDays(from, days) {
57
61
  return new Date(from.getTime() + days * millisecondsPerDay);
58
62
  }
@@ -1,23 +1,10 @@
1
1
  import type { SimS3LifecycleRule } from "../../command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.js";
2
- /**
3
- * What a lifecycle rule looks at to decide whether it selects something.
4
- *
5
- * An Object states its size and a multipart upload leaves it out. Half an
6
- * upload has no size for a rule to measure, and real S3 has no size to
7
- * measure either until the parts are joined.
8
- */
9
- export interface SimS3LifecycleSubject {
10
- readonly key: string;
11
- readonly size?: number | undefined;
12
- }
2
+ import type { SimS3LifecycleSubject } from "./sim-s3-lifecycle-subject.js";
13
3
  /**
14
4
  * Whether a rule selects the Object or upload a key names.
15
5
  *
16
6
  * A rule states its scope either as the older top-level `Prefix` or as a
17
7
  * `Filter`. A rule with no scope at all covers every key in the Bucket. Real
18
8
  * S3 refuses a rule stating both.
19
- *
20
- * Simulated S3 has no Object tags. A `Tag` or a `TagFilters` entry names a
21
- * condition the simulator has no answer for, and selects no key.
22
9
  */
23
10
  export declare function simS3LifecycleRuleSelects(rule: SimS3LifecycleRule, subject: SimS3LifecycleSubject): boolean;
@@ -4,9 +4,6 @@
4
4
  * A rule states its scope either as the older top-level `Prefix` or as a
5
5
  * `Filter`. A rule with no scope at all covers every key in the Bucket. Real
6
6
  * S3 refuses a rule stating both.
7
- *
8
- * Simulated S3 has no Object tags. A `Tag` or a `TagFilters` entry names a
9
- * condition the simulator has no answer for, and selects no key.
10
7
  */
11
8
  export function simS3LifecycleRuleSelects(rule, subject) {
12
9
  if (rule.Filter === undefined) {
@@ -19,16 +16,27 @@ function filterSelects(filter, subject) {
19
16
  return conjunctionSelects(filter.And, subject);
20
17
  }
21
18
  if (filter.Tag !== undefined) {
22
- return false;
19
+ // A bare `Tag` filter is scoped by the tag alone. It says nothing about
20
+ // the key, so every Object carrying the tag is selected wherever it is.
21
+ return tagsSelect([filter.Tag], subject);
23
22
  }
24
23
  return (subject.key.startsWith(filter.Prefix ?? "") && sizeWithin(filter, subject));
25
24
  }
26
25
  function conjunctionSelects(operator, subject) {
27
- if ((operator.Tags ?? []).length > 0) {
28
- return false;
29
- }
30
26
  return (subject.key.startsWith(operator.Prefix ?? "") &&
31
- sizeWithin(operator, subject));
27
+ sizeWithin(operator, subject) &&
28
+ tagsSelect(operator.Tags ?? [], subject));
29
+ }
30
+ /**
31
+ * Whether the subject carries every tag the filter names.
32
+ *
33
+ * Both halves of a tag have to match, because a rule for `archive=true` says
34
+ * nothing about an Object tagged `archive=false`. A subject carrying no tag
35
+ * set at all, meaning an upload in progress or a delete marker, matches no
36
+ * named tag and is selected only by a filter naming none.
37
+ */
38
+ function tagsSelect(tags, subject) {
39
+ return tags.every((tag) => subject.tags?.has(tag.Key ?? "", tag.Value ?? "") === true);
32
40
  }
33
41
  /**
34
42
  * Whether the subject's size falls inside the bounds a filter states.
@@ -0,0 +1,41 @@
1
+ import type { SimS3ObjectTagSet } from "../../object/s3-object-tags.js";
2
+ /**
3
+ * What a lifecycle rule looks at to decide whether it selects something.
4
+ *
5
+ * An Object states its size and its tags, and a multipart upload states
6
+ * neither. Half an upload has no size for a rule to measure, and real S3 has no
7
+ * size to measure either until the parts are joined. A delete marker holds no
8
+ * Object, so it carries no tags for a rule to match.
9
+ */
10
+ export interface SimS3LifecycleSubject {
11
+ readonly key: string;
12
+ readonly size?: number | undefined;
13
+ readonly tags?: SimS3ObjectTagSet | undefined;
14
+ }
15
+ /**
16
+ * An Object as a lifecycle rule reads it.
17
+ */
18
+ export interface SimS3LifecycleObject extends SimS3LifecycleSubject {
19
+ readonly size: number;
20
+ readonly lastModified: Date;
21
+ }
22
+ /**
23
+ * A noncurrent version as a lifecycle rule reads it.
24
+ *
25
+ * `newerVersionsAhead` is how many noncurrent versions of the same key are
26
+ * newer than this one, which is what `NewerNoncurrentVersions` counts. The
27
+ * current version is not one of them, since a rule for noncurrent versions
28
+ * never reaches it.
29
+ */
30
+ export interface SimS3LifecycleNoncurrentVersion extends SimS3LifecycleSubject {
31
+ readonly size: number;
32
+ readonly noncurrentSince: Date | undefined;
33
+ readonly newerVersionsAhead: number;
34
+ }
35
+ /**
36
+ * A multipart upload in progress as a lifecycle rule reads it.
37
+ */
38
+ export interface SimS3LifecycleUpload {
39
+ readonly key: string;
40
+ readonly initiated: Date;
41
+ }
@@ -14,6 +14,11 @@ import type { SimS3LifecycleConfiguration } from "./sim-s3-lifecycle-configurati
14
14
  * `simS3ObjectExpiryInstant` for why the boundary is a pure function of the
15
15
  * current time.
16
16
  *
17
+ * A transition is answered here as well. An Object past the day a
18
+ * `Transitions` rule names reads back in the class that rule moves it to, and
19
+ * the bytes stay where they are, which is all a transition does to an Object a
20
+ * caller can still read.
21
+ *
17
22
  * Nothing is announced. Real S3 raises `s3:LifecycleExpiration:Delete` for an
18
23
  * expiry, and that event family is among the ones simulated S3 leaves out.
19
24
  *
@@ -41,6 +46,15 @@ export declare class SimS3LifecycleSweep {
41
46
  * ones still there.
42
47
  */
43
48
  objects(objects: readonly SimS3Object[]): Promise<SimS3Object[]>;
49
+ /**
50
+ * The Object in the class the rules have transitioned it into.
51
+ *
52
+ * The class is worked out on each read rather than written back, for the
53
+ * same reason an expiry is: it is a pure function of the rules and the
54
+ * current time, and storage that maps Objects onto files has nowhere to
55
+ * record one. See `simS3ObjectExpiryInstant`.
56
+ */
57
+ private transitioned;
44
58
  /**
45
59
  * Take one expired key out of what a read of the Bucket can see.
46
60
  *
@@ -1,3 +1,4 @@
1
+ import { simS3TransitionedObjectClass } from "./sim-s3-lifecycle-transition.js";
1
2
  /**
2
3
  * One pass over what a Bucket's lifecycle rules have expired.
3
4
  *
@@ -10,6 +11,11 @@
10
11
  * `simS3ObjectExpiryInstant` for why the boundary is a pure function of the
11
12
  * current time.
12
13
  *
14
+ * A transition is answered here as well. An Object past the day a
15
+ * `Transitions` rule names reads back in the class that rule moves it to, and
16
+ * the bytes stay where they are, which is all a transition does to an Object a
17
+ * caller can still read.
18
+ *
13
19
  * Nothing is announced. Real S3 raises `s3:LifecycleExpiration:Delete` for an
14
20
  * expiry, and that event family is among the ones simulated S3 leaves out.
15
21
  *
@@ -37,9 +43,12 @@ export class SimS3LifecycleSweep {
37
43
  * so a read hands on whatever it gets. A key holding nothing stays nothing.
38
44
  */
39
45
  async object(object) {
40
- if (object === undefined || !this.expires(object)) {
46
+ if (object === undefined) {
41
47
  return object;
42
48
  }
49
+ if (!this.expires(object)) {
50
+ return this.transitioned(object);
51
+ }
43
52
  await this.expire(object.key);
44
53
  return undefined;
45
54
  }
@@ -55,7 +64,27 @@ export class SimS3LifecycleSweep {
55
64
  await Promise.all(expiredKeys.values().map(async (key) => {
56
65
  await this.expire(key);
57
66
  }));
58
- return objects.filter((object) => !expiredKeys.has(object.key));
67
+ return objects
68
+ .filter((object) => !expiredKeys.has(object.key))
69
+ .map((object) => this.transitioned(object));
70
+ }
71
+ /**
72
+ * The Object in the class the rules have transitioned it into.
73
+ *
74
+ * The class is worked out on each read rather than written back, for the
75
+ * same reason an expiry is: it is a pure function of the rules and the
76
+ * current time, and storage that maps Objects onto files has nowhere to
77
+ * record one. See `simS3ObjectExpiryInstant`.
78
+ */
79
+ transitioned(object) {
80
+ if (this.lifecycle.isEmpty) {
81
+ return object;
82
+ }
83
+ const storageClass = simS3TransitionedObjectClass(this.lifecycle.enabledRules, lifecycleObject(object), this.now);
84
+ if (storageClass === undefined || storageClass === object.storageClass) {
85
+ return object;
86
+ }
87
+ return object.withStorageClass(storageClass);
59
88
  }
60
89
  /**
61
90
  * Take one expired key out of what a read of the Bucket can see.
@@ -85,5 +114,6 @@ function lifecycleObject(object) {
85
114
  key: object.key,
86
115
  size: object.body.length,
87
116
  lastModified: object.lastModified,
117
+ tags: object.tags,
88
118
  };
89
119
  }
@@ -0,0 +1,33 @@
1
+ import type { SimS3LifecycleNoncurrentVersionTransition, SimS3LifecycleTransition } from "../../command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.js";
2
+ import { type SimS3StorageClass } from "../../object/s3-storage-class.js";
3
+ import type { SimS3LifecycleNoncurrentVersion } from "./sim-s3-lifecycle-subject.js";
4
+ /**
5
+ * One transition a rule has reached, as the class it moves an Object into and
6
+ * the instant it moved.
7
+ *
8
+ * The instant is what decides between two transitions that have both been
9
+ * reached. Real S3 walks an Object down the classes a rule lists as their days
10
+ * pass, so the one that came last is where the Object is now.
11
+ */
12
+ export interface SimS3ReachedTransition {
13
+ readonly storageClass: SimS3StorageClass;
14
+ readonly at: Date;
15
+ }
16
+ /**
17
+ * The transition a `Transitions` entry has made by an instant, if it has.
18
+ *
19
+ * `Days` counts from when the Object was written and `Date` names the day
20
+ * itself, the same two forms an `Expiration` takes. A transition naming
21
+ * neither, or naming no storage class, moves nothing.
22
+ */
23
+ export declare function simS3ReachedTransitionOf(transition: SimS3LifecycleTransition, writtenAt: Date, now: Date): SimS3ReachedTransition | undefined;
24
+ /**
25
+ * The transition a `NoncurrentVersionTransitions` entry has made by an
26
+ * instant, counted from when the version stopped being the current one.
27
+ *
28
+ * A version that is still current has no such instant, as it has none for a
29
+ * `NoncurrentVersionExpiration`. `NewerNoncurrentVersions` holds back the most
30
+ * recent noncurrent versions as it does for an expiry, so a rule keeping two
31
+ * reaches the third and everything older.
32
+ */
33
+ export declare function simS3ReachedNoncurrentTransitionOf(transition: SimS3LifecycleNoncurrentVersionTransition, version: SimS3LifecycleNoncurrentVersion, now: Date): SimS3ReachedTransition | undefined;