@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
@@ -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;
@@ -0,0 +1,48 @@
1
+ import { simS3StorageClassFrom, } from "../../object/s3-storage-class.js";
2
+ import { simS3LifecycleAfterDays, simS3LifecycleReached, } from "./sim-s3-lifecycle-expiry.js";
3
+ /**
4
+ * The transition a `Transitions` entry has made by an instant, if it has.
5
+ *
6
+ * `Days` counts from when the Object was written and `Date` names the day
7
+ * itself, the same two forms an `Expiration` takes. A transition naming
8
+ * neither, or naming no storage class, moves nothing.
9
+ */
10
+ export function simS3ReachedTransitionOf(transition, writtenAt, now) {
11
+ return reached(transitionInstant(transition, writtenAt), transition.StorageClass, now);
12
+ }
13
+ /**
14
+ * The transition a `NoncurrentVersionTransitions` entry has made by an
15
+ * instant, counted from when the version stopped being the current one.
16
+ *
17
+ * A version that is still current has no such instant, as it has none for a
18
+ * `NoncurrentVersionExpiration`. `NewerNoncurrentVersions` holds back the most
19
+ * recent noncurrent versions as it does for an expiry, so a rule keeping two
20
+ * reaches the third and everything older.
21
+ */
22
+ export function simS3ReachedNoncurrentTransitionOf(transition, version, now) {
23
+ const { noncurrentSince } = version;
24
+ if (noncurrentSince === undefined ||
25
+ transition.NoncurrentDays === undefined ||
26
+ version.newerVersionsAhead < (transition.NewerNoncurrentVersions ?? 0)) {
27
+ return undefined;
28
+ }
29
+ return reached(simS3LifecycleAfterDays(noncurrentSince, transition.NoncurrentDays), transition.StorageClass, now);
30
+ }
31
+ function transitionInstant(transition, writtenAt) {
32
+ if (transition.Days !== undefined) {
33
+ return simS3LifecycleAfterDays(writtenAt, transition.Days);
34
+ }
35
+ if (transition.Date !== undefined) {
36
+ return new Date(transition.Date);
37
+ }
38
+ return undefined;
39
+ }
40
+ function reached(at, storageClass, now) {
41
+ const target = simS3StorageClassFrom(storageClass, "a lifecycle transition");
42
+ if (at === undefined || target === undefined) {
43
+ return undefined;
44
+ }
45
+ return simS3LifecycleReached(at, now)
46
+ ? { storageClass: target, at }
47
+ : undefined;
48
+ }
@@ -0,0 +1,16 @@
1
+ import type { SimS3LifecycleRule } 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, SimS3LifecycleObject } from "./sim-s3-lifecycle-subject.js";
4
+ /**
5
+ * The class the rules have transitioned an Object into by an instant.
6
+ *
7
+ * Every rule selecting the Object contributes the transitions it has reached,
8
+ * because real S3 applies the whole configuration to a key rather than the
9
+ * first rule that matches it.
10
+ */
11
+ export declare function simS3TransitionedObjectClass(rules: readonly SimS3LifecycleRule[], object: SimS3LifecycleObject, now: Date): SimS3StorageClass | undefined;
12
+ /**
13
+ * The class the rules have transitioned a noncurrent version into by an
14
+ * instant.
15
+ */
16
+ export declare function simS3TransitionedVersionClass(rules: readonly SimS3LifecycleRule[], version: SimS3LifecycleNoncurrentVersion, now: Date): SimS3StorageClass | undefined;
@@ -0,0 +1,44 @@
1
+ import { simS3ReachedNoncurrentTransitionOf, simS3ReachedTransitionOf, } from "./sim-s3-lifecycle-transition-instant.js";
2
+ import { simS3LifecycleRuleSelects } from "./sim-s3-lifecycle-selection.js";
3
+ /**
4
+ * The class the rules have transitioned an Object into by an instant.
5
+ *
6
+ * Every rule selecting the Object contributes the transitions it has reached,
7
+ * because real S3 applies the whole configuration to a key rather than the
8
+ * first rule that matches it.
9
+ */
10
+ export function simS3TransitionedObjectClass(rules, object, now) {
11
+ return latestReached(rules
12
+ .filter((rule) => simS3LifecycleRuleSelects(rule, object))
13
+ .flatMap((rule) => reachedTransitions(rule.Transitions, (transition) => simS3ReachedTransitionOf(transition, object.lastModified, now))));
14
+ }
15
+ /**
16
+ * The class the rules have transitioned a noncurrent version into by an
17
+ * instant.
18
+ */
19
+ export function simS3TransitionedVersionClass(rules, version, now) {
20
+ return latestReached(rules
21
+ .filter((rule) => simS3LifecycleRuleSelects(rule, version))
22
+ .flatMap((rule) => reachedTransitions(rule.NoncurrentVersionTransitions, (transition) => simS3ReachedNoncurrentTransitionOf(transition, version, now))));
23
+ }
24
+ /**
25
+ * The transitions among a rule's that have been reached.
26
+ */
27
+ function reachedTransitions(transitions, reach) {
28
+ return (transitions ?? [])
29
+ .map((transition) => reach(transition))
30
+ .filter((transition) => transition !== undefined);
31
+ }
32
+ /**
33
+ * The class an Object is in once every transition that has been reached has
34
+ * been applied, or nothing where none has.
35
+ *
36
+ * The latest one wins. Two reached at the same instant are settled by the
37
+ * order the rules list them in, so the last transition a configuration states
38
+ * is where an Object past all of them ends up.
39
+ */
40
+ function latestReached(transitions) {
41
+ return transitions
42
+ .toSorted((one, other) => one.at.getTime() - other.at.getTime())
43
+ .at(-1)?.storageClass;
44
+ }
@@ -41,5 +41,13 @@ export declare class SimS3NoncurrentSweep {
41
41
  * marker was the only thing left holding the key there.
42
42
  */
43
43
  private sweepDeleteMarker;
44
+ /**
45
+ * Move a surviving noncurrent version into the class the rules have
46
+ * transitioned it to.
47
+ *
48
+ * The current version and a delete marker are left alone. Neither is
49
+ * something a `NoncurrentVersionTransitions` rule reaches.
50
+ */
51
+ private transition;
44
52
  private expires;
45
53
  }
@@ -1,3 +1,4 @@
1
+ import { simS3TransitionedVersionClass } from "./sim-s3-lifecycle-transition.js";
1
2
  /**
2
3
  * One pass over what a Bucket's rules have expired in its version history.
3
4
  *
@@ -45,6 +46,7 @@ export class SimS3NoncurrentSweep {
45
46
  for (const [index, version] of held.entries()) {
46
47
  if (index === 0 || !this.expires(version, index - 1)) {
47
48
  kept.push(version);
49
+ this.transition(version, index - 1);
48
50
  continue;
49
51
  }
50
52
  versions.removeExpired(version.key, version.versionId);
@@ -66,12 +68,37 @@ export class SimS3NoncurrentSweep {
66
68
  versions.removeExpired(marker.key, marker.versionId);
67
69
  }
68
70
  }
71
+ /**
72
+ * Move a surviving noncurrent version into the class the rules have
73
+ * transitioned it to.
74
+ *
75
+ * The current version and a delete marker are left alone. Neither is
76
+ * something a `NoncurrentVersionTransitions` rule reaches.
77
+ */
78
+ transition(version, ahead) {
79
+ if (ahead < 0 || version.isDeleteMarker) {
80
+ return;
81
+ }
82
+ const storageClass = simS3TransitionedVersionClass(this.lifecycle.enabledRules, {
83
+ key: version.key,
84
+ size: version.object.body.length,
85
+ noncurrentSince: version.noncurrentSince,
86
+ newerVersionsAhead: ahead,
87
+ tags: version.object.tags,
88
+ }, this.now);
89
+ if (storageClass !== undefined) {
90
+ version.transitionTo(storageClass);
91
+ }
92
+ }
69
93
  expires(version, ahead) {
70
94
  return this.lifecycle.expiresNoncurrent({
71
95
  key: version.key,
72
96
  size: version.isDeleteMarker ? 0 : version.object.body.length,
73
97
  noncurrentSince: version.noncurrentSince,
74
98
  newerVersionsAhead: ahead,
99
+ // A delete marker holds no Object, so it carries no tags and a rule
100
+ // filtering on one leaves it alone.
101
+ tags: version.isDeleteMarker ? undefined : version.object.tags,
75
102
  }, this.now);
76
103
  }
77
104
  }
@@ -5,7 +5,7 @@
5
5
  * has many more, and the ones it has that this simulator cannot produce are
6
6
  * refused by name rather than accepted and never delivered.
7
7
  */
8
- export declare const SIM_S3_NOTIFICATION_EVENTS: readonly ["s3:ObjectCreated:Put", "s3:ObjectCreated:Copy", "s3:ObjectCreated:CompleteMultipartUpload", "s3:ObjectRemoved:Delete", "s3:ObjectRemoved:DeleteMarkerCreated"];
8
+ export declare const SIM_S3_NOTIFICATION_EVENTS: readonly ["s3:ObjectCreated:Put", "s3:ObjectCreated:Copy", "s3:ObjectCreated:CompleteMultipartUpload", "s3:ObjectRemoved:Delete", "s3:ObjectRemoved:DeleteMarkerCreated", "s3:ObjectTagging:Put", "s3:ObjectTagging:Delete"];
9
9
  export type SimS3NotificationEvent = (typeof SIM_S3_NOTIFICATION_EVENTS)[number];
10
10
  /**
11
11
  * The concrete events a configured event type covers.
@@ -13,6 +13,8 @@ export const SIM_S3_NOTIFICATION_EVENTS = [
13
13
  "s3:ObjectCreated:CompleteMultipartUpload",
14
14
  "s3:ObjectRemoved:Delete",
15
15
  "s3:ObjectRemoved:DeleteMarkerCreated",
16
+ "s3:ObjectTagging:Put",
17
+ "s3:ObjectTagging:Delete",
16
18
  ];
17
19
  /**
18
20
  * What each configurable event type expands to.
@@ -50,6 +52,9 @@ const eventExpansions = new Map([
50
52
  "s3:ObjectRemoved:DeleteMarkerCreated",
51
53
  ["s3:ObjectRemoved:DeleteMarkerCreated"],
52
54
  ],
55
+ ["s3:ObjectTagging:*", ["s3:ObjectTagging:Put", "s3:ObjectTagging:Delete"]],
56
+ ["s3:ObjectTagging:Put", ["s3:ObjectTagging:Put"]],
57
+ ["s3:ObjectTagging:Delete", ["s3:ObjectTagging:Delete"]],
53
58
  ]);
54
59
  /**
55
60
  * The concrete events a configured event type covers.
@@ -21,9 +21,6 @@ export const SIM_S3_UNSIMULATED_NOTIFICATION_EVENTS = new Set([
21
21
  "s3:ObjectRestore:Completed",
22
22
  "s3:ObjectRestore:Delete",
23
23
  "s3:ObjectRestore:Post",
24
- "s3:ObjectTagging:*",
25
- "s3:ObjectTagging:Delete",
26
- "s3:ObjectTagging:Put",
27
24
  "s3:ReducedRedundancyLostObject",
28
25
  "s3:Replication:*",
29
26
  "s3:Replication:OperationFailedReplication",
@@ -59,6 +59,9 @@ export declare class SimS3BucketAccess {
59
59
  * cached. A deployment into the same Bucket has already said it, so the mount
60
60
  * inherits what the Bucket was told, and `systemMetadata` is where it
61
61
  * declares the rest or answers differently.
62
+ *
63
+ * The Bucket serves and accepts writes but refuses a delete, since the files
64
+ * are the user's own. `allowDelete` is how a mount asks for one.
62
65
  */
63
66
  mountFilesystem(bucketName: SimS3BucketName | string, directoryPath: string, options?: SimS3MountFilesystemOptions): void;
64
67
  /**
@@ -1,5 +1,5 @@
1
1
  import { assertDefined } from "../../../util/type-guard/defined.js";
2
- import { FilesystemS3BucketStorage } from "../storage/filesystem/s3-filesystem-storage.js";
2
+ import { filesystemS3MountStorage } from "../storage/filesystem/s3-filesystem-deleting-storage.js";
3
3
  import { simS3BucketUrl, simS3ServiceUrl } from "./sim-s3-endpoint-url.js";
4
4
  import { SimS3DeclaredSystemMetadata } from "../object/s3-declared-system-metadata.js";
5
5
  import { SimS3MountWatches } from "../mount/sim-s3-mount-watches.js";
@@ -73,6 +73,9 @@ export class SimS3BucketAccess {
73
73
  * cached. A deployment into the same Bucket has already said it, so the mount
74
74
  * inherits what the Bucket was told, and `systemMetadata` is where it
75
75
  * declares the rest or answers differently.
76
+ *
77
+ * The Bucket serves and accepts writes but refuses a delete, since the files
78
+ * are the user's own. `allowDelete` is how a mount asks for one.
76
79
  */
77
80
  mountFilesystem(bucketName, directoryPath, options = {}) {
78
81
  const bucket = this.required(bucketName);
@@ -80,11 +83,12 @@ export class SimS3BucketAccess {
80
83
  inherited: bucket.getDeclaredSystemMetadata(),
81
84
  declarations: options.systemMetadata,
82
85
  });
83
- bucket.configureSimStorage(new FilesystemS3BucketStorage({
86
+ bucket.configureSimStorage(filesystemS3MountStorage({
84
87
  directoryPath,
85
88
  ...(options.additionalFileExtensions !== undefined && {
86
89
  additionalFileExtensions: options.additionalFileExtensions,
87
90
  }),
91
+ allowDelete: options.allowDelete,
88
92
  systemMetadata,
89
93
  }));
90
94
  this.mountWatches.register(bucketName, directoryPath, options);