@kensio/yulin 1.21.2 → 1.21.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (634) hide show
  1. package/dist/service/athena/engine/sim-athena-column-types.d.ts +2 -0
  2. package/dist/service/athena/engine/sim-athena-column-types.js +4 -0
  3. package/dist/service/athena/engine/sim-athena-delimited-format.d.ts +7 -0
  4. package/dist/service/athena/engine/sim-athena-delimited-format.js +51 -0
  5. package/dist/service/athena/engine/sim-athena-engine-result.js +5 -0
  6. package/dist/service/athena/engine/sim-athena-engine-run.d.ts +22 -2
  7. package/dist/service/athena/engine/sim-athena-engine-run.js +21 -31
  8. package/dist/service/athena/engine/sim-athena-loaded-tables.d.ts +10 -0
  9. package/dist/service/athena/engine/sim-athena-loaded-tables.js +35 -0
  10. package/dist/service/athena/engine/sim-athena-parquet-module.d.ts +25 -0
  11. package/dist/service/athena/engine/sim-athena-parquet-module.js +39 -0
  12. package/dist/service/athena/engine/sim-athena-parquet-records.d.ts +13 -0
  13. package/dist/service/athena/engine/sim-athena-parquet-records.js +57 -0
  14. package/dist/service/athena/engine/sim-athena-query-engine.d.ts +23 -5
  15. package/dist/service/athena/engine/sim-athena-query-engine.js +31 -10
  16. package/dist/service/athena/engine/sim-athena-record-reader.d.ts +12 -6
  17. package/dist/service/athena/engine/sim-athena-record-reader.js +28 -53
  18. package/dist/service/athena/engine/sim-athena-sql-translation.d.ts +15 -9
  19. package/dist/service/athena/engine/sim-athena-sql-translation.js +25 -13
  20. package/dist/service/athena/engine/sim-athena-sqlite-values.d.ts +5 -0
  21. package/dist/service/athena/engine/sim-athena-sqlite-values.js +24 -1
  22. package/dist/service/athena/engine/sim-athena-table-objects.d.ts +7 -2
  23. package/dist/service/athena/engine/sim-athena-table-objects.js +8 -4
  24. package/dist/service/athena/engine/sim-athena-table-rows.js +4 -3
  25. package/dist/service/athena/engine/sim-athena-turn-down.d.ts +26 -0
  26. package/dist/service/athena/engine/sim-athena-turn-down.js +43 -0
  27. package/dist/service/athena/execution/sim-athena-query-completion.d.ts +3 -1
  28. package/dist/service/athena/execution/sim-athena-query-completion.js +7 -1
  29. package/dist/service/athena/index.d.ts +1 -1
  30. package/dist/service/athena/index.js +1 -1
  31. package/dist/service/athena/result/sim-athena-query-answer.d.ts +12 -0
  32. package/dist/service/athena/result/sim-athena-query-answer.js +26 -4
  33. package/dist/service/athena/sim-athena-answered-query.fixture.d.ts +2 -0
  34. package/dist/service/athena/sim-athena-answered-query.fixture.js +1 -0
  35. package/dist/service/athena/sim-athena-engine.fixture.d.ts +20 -0
  36. package/dist/service/athena/sim-athena-engine.fixture.js +34 -0
  37. package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.d.ts +23 -0
  38. package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.js +37 -0
  39. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.d.ts +2 -0
  40. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.js +1 -0
  41. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.d.ts +7 -0
  42. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.js +13 -1
  43. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.d.ts +6 -0
  44. package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.js +7 -1
  45. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.d.ts +50 -0
  46. package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.js +71 -0
  47. package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.js +6 -1
  48. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.d.ts +5 -0
  49. package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.js +7 -0
  50. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.d.ts +9 -0
  51. package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.js +12 -0
  52. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.d.ts +42 -0
  53. package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.js +69 -0
  54. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.d.ts +62 -0
  55. package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.js +89 -0
  56. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.d.ts +31 -0
  57. package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.js +59 -0
  58. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.d.ts +21 -0
  59. package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.js +19 -0
  60. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.d.ts +17 -0
  61. package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.js +18 -0
  62. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.d.ts +18 -0
  63. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.js +13 -0
  64. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.d.ts +45 -0
  65. package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.js +52 -0
  66. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.d.ts +12 -0
  67. package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.js +21 -0
  68. package/dist/service/cloudformation/changeset/sim-cfn-change-set.d.ts +54 -0
  69. package/dist/service/cloudformation/changeset/sim-cfn-change-set.js +49 -0
  70. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.d.ts +35 -0
  71. package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.js +1 -0
  72. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.d.ts +53 -0
  73. package/dist/service/cloudformation/changeset/sim-cfn-change-sets.js +83 -0
  74. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.d.ts +32 -0
  75. package/dist/service/cloudformation/command/create-change-set/create-change-set.command.js +1 -0
  76. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.d.ts +38 -0
  77. package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.js +80 -0
  78. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +12 -12
  79. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.d.ts +22 -0
  80. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.js +1 -0
  81. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.d.ts +27 -0
  82. package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.js +35 -0
  83. package/dist/service/cloudformation/command/delete-stack/delete-stack.command.d.ts +6 -0
  84. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.d.ts +11 -0
  85. package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.js +15 -1
  86. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.d.ts +48 -0
  87. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.js +1 -0
  88. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.d.ts +23 -0
  89. package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.js +52 -0
  90. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.d.ts +3 -0
  91. package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.js +8 -4
  92. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.d.ts +18 -6
  93. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.js +22 -7
  94. package/dist/service/cloudformation/command/describe-stacks/sim-cfn-stack-describer.js +1 -1
  95. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.d.ts +25 -0
  96. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.js +1 -0
  97. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.d.ts +31 -0
  98. package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.js +37 -0
  99. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.d.ts +36 -0
  100. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.js +1 -0
  101. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.d.ts +26 -0
  102. package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.js +39 -0
  103. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.d.ts +31 -0
  104. package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.js +52 -0
  105. package/dist/service/cloudformation/command/update-stack/update-stack-template.d.ts +22 -0
  106. package/dist/service/cloudformation/command/update-stack/update-stack-template.js +34 -0
  107. package/dist/service/cloudformation/command/update-stack/update-stack.command.d.ts +17 -1
  108. package/dist/service/cloudformation/command/update-stack/update-stack.handler.js +8 -15
  109. package/dist/service/cloudformation/error/sim-cloudformation.error.d.ts +21 -0
  110. package/dist/service/cloudformation/error/sim-cloudformation.error.js +25 -0
  111. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.d.ts +7 -0
  112. package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.js +3 -1
  113. package/dist/service/cloudformation/parameters/sim-cfn-parameters.d.ts +9 -0
  114. package/dist/service/cloudformation/parameters/sim-cfn-parameters.js +12 -0
  115. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.d.ts +4 -0
  116. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.js +10 -0
  117. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.d.ts +44 -0
  118. package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.js +33 -0
  119. package/dist/service/cloudformation/resource/factory/sim-cfn-resource-factory.type.d.ts +9 -0
  120. package/dist/service/cloudformation/resource/sim-cfn-resource-record.d.ts +15 -0
  121. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +21 -1
  122. package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts +9 -7
  123. package/dist/service/cloudformation/resource/sim-cfn-resource.js +11 -11
  124. package/dist/service/cloudformation/resource/sim-cfn-resource.type.d.ts +19 -0
  125. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.d.ts +3 -3
  126. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.js +3 -3
  127. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.d.ts +4 -0
  128. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.js +9 -0
  129. package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.d.ts +26 -0
  130. package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.js +55 -0
  131. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.d.ts +37 -0
  132. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.js +77 -0
  133. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.d.ts +51 -0
  134. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.js +10 -0
  135. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.d.ts +11 -0
  136. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.js +34 -0
  137. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.d.ts +21 -0
  138. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.js +31 -0
  139. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.d.ts +14 -0
  140. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.js +1 -0
  141. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.d.ts +26 -0
  142. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.js +58 -0
  143. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.d.ts +18 -0
  144. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.js +89 -0
  145. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.d.ts +15 -0
  146. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.js +65 -0
  147. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.d.ts +13 -0
  148. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.js +60 -0
  149. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.d.ts +13 -0
  150. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.js +50 -0
  151. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.d.ts +13 -0
  152. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.js +30 -0
  153. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.d.ts +26 -0
  154. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.js +44 -0
  155. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.d.ts +15 -0
  156. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.js +59 -0
  157. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.d.ts +11 -0
  158. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.js +43 -0
  159. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.d.ts +15 -0
  160. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.js +67 -0
  161. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.d.ts +26 -0
  162. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.js +61 -0
  163. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.d.ts +18 -0
  164. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.js +59 -0
  165. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api-template.factory.js +1 -1
  166. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.d.ts +4 -0
  167. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.js +12 -5
  168. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api-template.factory.js +1 -1
  169. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api.js +7 -3
  170. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-api-event.js +7 -3
  171. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.d.ts +26 -0
  172. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.js +88 -0
  173. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.d.ts +12 -0
  174. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.js +1 -0
  175. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-function-events.js +8 -5
  176. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-event.js +23 -1
  177. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.d.ts +9 -2
  178. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.js +5 -3
  179. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.d.ts +6 -1
  180. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.js +7 -1
  181. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.d.ts +19 -0
  182. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.js +69 -0
  183. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.d.ts +5 -0
  184. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.js +3 -1
  185. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.d.ts +8 -0
  186. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.js +8 -0
  187. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-url.js +1 -4
  188. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.d.ts +6 -4
  189. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.js +2 -4
  190. package/dist/service/cloudformation/sam/sim-cfn-sam-error.d.ts +31 -0
  191. package/dist/service/cloudformation/sam/sim-cfn-sam-error.js +17 -0
  192. package/dist/service/cloudformation/sam/sim-cfn-sam-expansion.js +11 -6
  193. package/dist/service/cloudformation/sdk/sim-cloudformation-sdk-command-router.js +20 -0
  194. package/dist/service/cloudformation/serve/sim-cloudformation-api.d.ts +4 -3
  195. package/dist/service/cloudformation/serve/sim-cloudformation-api.js +6 -3
  196. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.d.ts +10 -0
  197. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.js +94 -0
  198. package/dist/service/cloudformation/sim-cloudformation.d.ts +31 -0
  199. package/dist/service/cloudformation/sim-cloudformation.js +56 -9
  200. package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js +1 -0
  201. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.d.ts +20 -0
  202. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.js +23 -0
  203. package/dist/service/cloudformation/stack/sim-cfn-deployed-stack.type.d.ts +6 -0
  204. package/dist/service/cloudformation/stack/sim-cfn-stack-id.d.ts +30 -0
  205. package/dist/service/cloudformation/stack/sim-cfn-stack-id.js +24 -0
  206. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +51 -3
  207. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +84 -6
  208. package/dist/service/cloudformation/stack/sim-cfn-stack.d.ts +28 -16
  209. package/dist/service/cloudformation/stack/sim-cfn-stack.js +59 -32
  210. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +7 -1
  211. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.d.ts +7 -1
  212. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.js +3 -1
  213. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.d.ts +3 -0
  214. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.js +3 -0
  215. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.d.ts +3 -0
  216. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.js +2 -1
  217. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.d.ts +18 -0
  218. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.js +30 -0
  219. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.d.ts +9 -0
  220. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.js +14 -0
  221. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.d.ts +25 -14
  222. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.js +41 -24
  223. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.d.ts +16 -1
  224. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.js +27 -0
  225. package/dist/service/cloudformation/stack/update/sim-cfn-stack-updater.js +7 -1
  226. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.d.ts +12 -3
  227. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.js +29 -3
  228. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.d.ts +28 -0
  229. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.js +39 -0
  230. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts +25 -1
  231. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js +43 -11
  232. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.d.ts +7 -0
  233. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.js +29 -3
  234. package/dist/service/cloudformation/template/sim-cfn-command-template.d.ts +40 -0
  235. package/dist/service/cloudformation/template/sim-cfn-command-template.js +45 -0
  236. package/dist/service/cloudformation/template/sim-cfn-template.d.ts +7 -0
  237. package/dist/service/cloudformation/template/sim-cfn-template.js +15 -1
  238. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +2 -0
  239. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +49 -0
  240. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +1 -0
  241. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +1 -0
  242. package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +1 -1
  243. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.d.ts +5 -0
  244. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.js +17 -0
  245. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +5 -5
  246. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +24 -8
  247. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.d.ts +5 -0
  248. package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.js +15 -0
  249. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.d.ts +24 -0
  250. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.js +38 -0
  251. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.d.ts +11 -8
  252. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.js +20 -8
  253. package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +2 -0
  254. package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
  255. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +14 -4
  256. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +16 -4
  257. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.d.ts +17 -0
  258. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.js +39 -0
  259. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.d.ts +28 -0
  260. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.js +50 -0
  261. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +12 -5
  262. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts +3 -3
  263. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +3 -4
  264. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.d.ts +5 -16
  265. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.js +4 -21
  266. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.d.ts +15 -0
  267. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.js +18 -1
  268. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.d.ts +13 -0
  269. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.js +15 -0
  270. package/dist/service/dynamodb/table/sim-dynamodb-index-update.js +1 -2
  271. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +2 -0
  272. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +5 -3
  273. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.d.ts +21 -0
  274. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.js +37 -0
  275. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.js +6 -0
  276. package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
  277. package/dist/service/lambda/command/create-function/create-function.handler.js +5 -1
  278. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.command.d.ts +2 -3
  279. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.handler.js +1 -0
  280. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +6 -0
  281. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +10 -0
  282. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +2 -6
  283. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +1 -0
  284. package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
  285. package/dist/service/lambda/command/function-url/function-url-cors-constraints.d.ts +25 -0
  286. package/dist/service/lambda/command/function-url/function-url-cors-constraints.js +49 -0
  287. package/dist/service/lambda/command/function-url/function-url-cors-input.d.ts +25 -0
  288. package/dist/service/lambda/command/function-url/function-url-cors-input.js +57 -0
  289. package/dist/service/lambda/command/function-url/function-url-input.d.ts +7 -0
  290. package/dist/service/lambda/command/function-url/function-url-input.js +9 -0
  291. package/dist/service/lambda/command/invoke/async/sim-lambda-async-invocation.js +10 -13
  292. package/dist/service/lambda/command/invoke/async/sim-lambda-async-outcome.js +2 -0
  293. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.d.ts +13 -0
  294. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.js +12 -0
  295. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.command.d.ts +2 -0
  296. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.handler.js +1 -0
  297. package/dist/service/lambda/destination/deliver/sim-lambda-destination-bus.js +1 -1
  298. package/dist/service/lambda/destination/deliver/sim-lambda-destination-function.js +8 -12
  299. package/dist/service/lambda/destination/deliver/sim-lambda-destination-queue.js +4 -3
  300. package/dist/service/lambda/destination/deliver/sim-lambda-destination-send.d.ts +2 -0
  301. package/dist/service/lambda/destination/deliver/sim-lambda-destination-topic.js +4 -3
  302. package/dist/service/lambda/destination/sim-aws-lambda-destinations.d.ts +4 -6
  303. package/dist/service/lambda/destination/sim-aws-lambda-destinations.js +6 -6
  304. package/dist/service/lambda/destination/sim-lambda-destination-targets.d.ts +3 -0
  305. package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +4 -9
  306. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +4 -9
  307. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +22 -3
  308. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +39 -9
  309. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +7 -6
  310. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +14 -12
  311. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +9 -15
  312. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +9 -16
  313. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +10 -6
  314. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +22 -12
  315. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.d.ts +23 -0
  316. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.js +18 -0
  317. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +12 -13
  318. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +24 -17
  319. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.d.ts +64 -0
  320. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.js +86 -0
  321. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +6 -0
  322. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +8 -1
  323. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +6 -0
  324. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +7 -0
  325. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +11 -1
  326. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +13 -0
  327. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.d.ts +39 -0
  328. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.js +46 -0
  329. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.d.ts +56 -0
  330. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.js +110 -0
  331. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.d.ts +5 -0
  332. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.js +7 -1
  333. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.d.ts +6 -0
  334. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.js +6 -0
  335. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +6 -1
  336. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +8 -6
  337. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +10 -8
  338. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +18 -1
  339. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +8 -2
  340. package/dist/service/lambda/function/code/sim-lambda-executable-code.js +2 -1
  341. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +2 -11
  342. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +13 -39
  343. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +7 -0
  344. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +13 -7
  345. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.d.ts +23 -0
  346. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.js +42 -0
  347. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.d.ts +12 -4
  348. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.js +15 -5
  349. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.d.ts +7 -0
  350. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.js +6 -2
  351. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.d.ts +26 -0
  352. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.js +84 -0
  353. package/dist/service/lambda/function/invoke/sim-lambda-invocation.d.ts +44 -0
  354. package/dist/service/lambda/function/invoke/sim-lambda-invocation.js +44 -0
  355. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.d.ts +6 -0
  356. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.js +1 -2
  357. package/dist/service/lambda/function/invoke/sim-lambda-process-output.d.ts +6 -1
  358. package/dist/service/lambda/function/invoke/sim-lambda-process-output.js +19 -6
  359. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.d.ts +15 -0
  360. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.js +18 -0
  361. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.d.ts +12 -0
  362. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.js +28 -0
  363. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.d.ts +46 -0
  364. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.js +104 -0
  365. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.d.ts +24 -0
  366. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.js +27 -0
  367. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.d.ts +43 -0
  368. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.js +112 -0
  369. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.d.ts +57 -0
  370. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.js +79 -0
  371. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.d.ts +10 -0
  372. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.js +15 -0
  373. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.d.ts +11 -0
  374. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.js +24 -0
  375. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.d.ts +50 -0
  376. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.js +43 -0
  377. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +17 -0
  378. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +12 -1
  379. package/dist/service/lambda/function/logging/sim-lambda-output.d.ts +56 -0
  380. package/dist/service/lambda/function/logging/sim-lambda-output.js +62 -0
  381. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.d.ts +8 -0
  382. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.js +27 -1
  383. package/dist/service/lambda/function/sim-lambda-function.d.ts +1 -1
  384. package/dist/service/lambda/function/sim-lambda-function.js +11 -9
  385. package/dist/service/lambda/function/sim-lambda-function.type.d.ts +15 -0
  386. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.d.ts +16 -0
  387. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.d.ts +22 -0
  388. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.js +17 -0
  389. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.js +1 -0
  390. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.d.ts +2 -0
  391. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.js +2 -1
  392. package/dist/service/lambda/function/url/sim-lambda-function-url-store.d.ts +2 -0
  393. package/dist/service/lambda/function/url/sim-lambda-function-url.d.ts +16 -0
  394. package/dist/service/lambda/function/url/sim-lambda-function-url.js +16 -1
  395. package/dist/service/lambda/index.d.ts +1 -0
  396. package/dist/service/lambda/index.js +1 -0
  397. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.d.ts +50 -0
  398. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.js +96 -0
  399. package/dist/service/lambda/serve/sim-lambda-controller.d.ts +14 -0
  400. package/dist/service/lambda/serve/sim-lambda-controller.js +27 -0
  401. package/dist/service/lambda/sim-lambda-commands.d.ts +10 -0
  402. package/dist/service/lambda/sim-lambda-commands.js +11 -0
  403. package/dist/service/lambda/sim-lambda.d.ts +12 -0
  404. package/dist/service/lambda/sim-lambda.js +13 -0
  405. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.d.ts +67 -0
  406. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.js +69 -0
  407. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +4 -31
  408. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +7 -6
  409. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +5 -0
  410. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +8 -4
  411. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +1 -14
  412. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +16 -8
  413. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.d.ts +41 -0
  414. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.js +1 -0
  415. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +14 -0
  416. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +32 -2
  417. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.d.ts +33 -0
  418. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.js +48 -0
  419. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.d.ts +16 -0
  420. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.js +44 -0
  421. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +8 -0
  422. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +27 -0
  423. package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
  424. package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +5 -0
  425. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +0 -3
  426. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +3 -0
  427. package/dist/service/s3/bucket/sim-s3-bucket-access.js +6 -2
  428. package/dist/service/s3/bucket/sim-s3-bucket-configuration.d.ts +84 -0
  429. package/dist/service/s3/bucket/sim-s3-bucket-configuration.js +115 -0
  430. package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +10 -0
  431. package/dist/service/s3/bucket/sim-s3-bucket-objects.js +18 -0
  432. package/dist/service/s3/bucket/sim-s3-bucket-properties.d.ts +41 -0
  433. package/dist/service/s3/bucket/sim-s3-bucket-properties.js +1 -0
  434. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +11 -83
  435. package/dist/service/s3/bucket/sim-s3-bucket.js +14 -83
  436. package/dist/service/s3/bucket/sim-s3-public-read.fixture.d.ts +6 -0
  437. package/dist/service/s3/bucket/sim-s3-public-read.fixture.js +20 -6
  438. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.d.ts +58 -0
  439. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.js +73 -0
  440. package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +19 -1
  441. package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +20 -0
  442. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.d.ts +21 -0
  443. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.js +44 -0
  444. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +6 -0
  445. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +5 -4
  446. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +12 -5
  447. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.d.ts +21 -0
  448. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.js +30 -0
  449. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +1 -0
  450. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +14 -1
  451. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +41 -16
  452. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +3 -5
  453. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +7 -10
  454. package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +6 -1
  455. package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +5 -0
  456. package/dist/service/s3/command/copy-object/copy-object-builder.d.ts +10 -1
  457. package/dist/service/s3/command/copy-object/copy-object-builder.js +17 -1
  458. package/dist/service/s3/command/copy-object/copy-object.command.d.ts +11 -1
  459. package/dist/service/s3/command/copy-object/copy-object.handler.js +2 -1
  460. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.command.d.ts +5 -1
  461. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.handler.js +7 -0
  462. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.d.ts +19 -0
  463. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.js +1 -0
  464. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.d.ts +30 -0
  465. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.js +38 -0
  466. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.d.ts +23 -0
  467. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.js +1 -0
  468. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.d.ts +22 -0
  469. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.js +42 -0
  470. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.d.ts +29 -0
  471. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.js +49 -0
  472. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.d.ts +22 -0
  473. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.js +30 -0
  474. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.d.ts +24 -0
  475. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.js +1 -0
  476. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.d.ts +31 -0
  477. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.js +39 -0
  478. package/dist/service/s3/command/get-object/get-object-authorizer.d.ts +11 -8
  479. package/dist/service/s3/command/get-object/get-object-authorizer.js +26 -34
  480. package/dist/service/s3/command/get-object/get-object-loader.d.ts +7 -3
  481. package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
  482. package/dist/service/s3/command/get-object/get-object.command.d.ts +2 -1
  483. package/dist/service/s3/command/get-object/get-object.handler.d.ts +4 -0
  484. package/dist/service/s3/command/get-object/get-object.handler.js +13 -7
  485. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.d.ts +29 -0
  486. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.js +1 -0
  487. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.d.ts +21 -0
  488. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.js +33 -0
  489. package/dist/service/s3/command/head-object/head-object-loader.js +2 -0
  490. package/dist/service/s3/command/head-object/head-object.command.d.ts +2 -1
  491. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +18 -0
  492. package/dist/service/s3/command/list-multipart-uploads/list-multipart-uploads.handler.js +1 -2
  493. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +1 -2
  494. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +5 -0
  495. package/dist/service/s3/command/list-objects/list-objects-page-builder.js +11 -6
  496. package/dist/service/s3/command/list-objects/list-objects.command.d.ts +5 -1
  497. package/dist/service/s3/command/list-objects/list-objects.handler.js +5 -0
  498. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +6 -0
  499. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +11 -5
  500. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +5 -1
  501. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +5 -0
  502. package/dist/service/s3/command/list-parts/list-parts.handler.js +3 -3
  503. package/dist/service/s3/command/multipart/sim-s3-multipart-access.js +1 -1
  504. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.d.ts +21 -0
  505. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.js +1 -0
  506. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.d.ts +31 -0
  507. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.js +41 -0
  508. package/dist/service/s3/command/put-object/put-object-builder.d.ts +5 -1
  509. package/dist/service/s3/command/put-object/put-object-builder.js +10 -1
  510. package/dist/service/s3/command/put-object/put-object.command.d.ts +5 -1
  511. package/dist/service/s3/command/put-object/put-object.handler.js +2 -1
  512. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.d.ts +37 -0
  513. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.js +1 -0
  514. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.d.ts +22 -0
  515. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.js +46 -0
  516. package/dist/service/s3/command/sim-s3-command.types.d.ts +6 -0
  517. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.d.ts +61 -0
  518. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.js +49 -0
  519. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.d.ts +30 -0
  520. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.js +27 -0
  521. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.d.ts +26 -0
  522. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.js +34 -0
  523. package/dist/service/s3/error/sim-s3-upload.error.d.ts +41 -0
  524. package/dist/service/s3/error/sim-s3-upload.error.js +47 -0
  525. package/dist/service/s3/error/sim-s3.error.d.ts +22 -34
  526. package/dist/service/s3/error/sim-s3.error.js +26 -40
  527. package/dist/service/s3/mount/sim-s3-mount.type.d.ts +10 -0
  528. package/dist/service/s3/notification/event/sim-s3-event-records.d.ts +3 -2
  529. package/dist/service/s3/notification/event/sim-s3-event-records.js +5 -3
  530. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +33 -8
  531. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +23 -9
  532. package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +5 -1
  533. package/dist/service/s3/notification/sim-s3-object-notifier.js +6 -0
  534. package/dist/service/s3/object/s3-key-encoding.d.ts +12 -0
  535. package/dist/service/s3/object/s3-key-encoding.js +14 -0
  536. package/dist/service/s3/object/s3-listing-encoding.d.ts +42 -0
  537. package/dist/service/s3/object/s3-listing-encoding.js +75 -0
  538. package/dist/service/s3/object/s3-object-response-headers.d.ts +40 -0
  539. package/dist/service/s3/object/s3-object-response-headers.js +49 -2
  540. package/dist/service/s3/object/s3-object-storage-report.d.ts +19 -0
  541. package/dist/service/s3/object/s3-object-storage-report.js +18 -0
  542. package/dist/service/s3/object/s3-object-summary.d.ts +2 -10
  543. package/dist/service/s3/object/s3-object-summary.js +1 -10
  544. package/dist/service/s3/object/s3-object-tags.d.ts +61 -0
  545. package/dist/service/s3/object/s3-object-tags.js +77 -0
  546. package/dist/service/s3/object/s3-object.d.ts +49 -0
  547. package/dist/service/s3/object/s3-object.js +52 -1
  548. package/dist/service/s3/object/s3-server-side-encryption.d.ts +30 -0
  549. package/dist/service/s3/object/s3-server-side-encryption.js +42 -0
  550. package/dist/service/s3/object/s3-storage-class.d.ts +45 -0
  551. package/dist/service/s3/object/s3-storage-class.js +67 -0
  552. package/dist/service/s3/object/s3-write-metadata.d.ts +17 -3
  553. package/dist/service/s3/object/s3-write-metadata.js +43 -0
  554. package/dist/service/s3/object/s3-write-storage.d.ts +27 -0
  555. package/dist/service/s3/object/s3-write-storage.js +21 -0
  556. package/dist/service/s3/object/s3-write-tagging.d.ts +24 -0
  557. package/dist/service/s3/object/s3-write-tagging.js +19 -0
  558. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +12 -0
  559. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +2 -0
  560. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.d.ts +9 -0
  561. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.js +23 -0
  562. package/dist/service/s3/serve/api/sim-s3-api-bucket-routes.js +22 -0
  563. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.d.ts +4 -0
  564. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.js +10 -0
  565. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.d.ts +7 -0
  566. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.js +30 -0
  567. package/dist/service/s3/serve/api/sim-s3-api-head-output.d.ts +4 -2
  568. package/dist/service/s3/serve/api/sim-s3-api-head-output.js +8 -2
  569. package/dist/service/s3/serve/api/sim-s3-api-input.d.ts +0 -6
  570. package/dist/service/s3/serve/api/sim-s3-api-input.js +2 -13
  571. package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts +5 -0
  572. package/dist/service/s3/serve/api/sim-s3-api-listing.js +5 -0
  573. package/dist/service/s3/serve/api/sim-s3-api-object-input.d.ts +16 -0
  574. package/dist/service/s3/serve/api/sim-s3-api-object-input.js +34 -7
  575. package/dist/service/s3/serve/api/sim-s3-api-object-output.d.ts +18 -1
  576. package/dist/service/s3/serve/api/sim-s3-api-object-output.js +21 -2
  577. package/dist/service/s3/serve/api/sim-s3-api-object-routes.js +22 -1
  578. package/dist/service/s3/serve/api/sim-s3-api-output.d.ts +5 -1
  579. package/dist/service/s3/serve/api/sim-s3-api-output.js +16 -5
  580. package/dist/service/s3/serve/api/sim-s3-api-request.d.ts +6 -5
  581. package/dist/service/s3/serve/api/sim-s3-api-request.js +55 -11
  582. package/dist/service/s3/serve/api/sim-s3-api-routes.js +2 -2
  583. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.d.ts +9 -0
  584. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.js +14 -0
  585. package/dist/service/s3/serve/api/sim-s3-api.d.ts +7 -1
  586. package/dist/service/s3/serve/api/sim-s3-api.js +7 -1
  587. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +1 -5
  588. package/dist/service/s3/serve/sim-s3-rest-controller.js +3 -17
  589. package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts +3 -0
  590. package/dist/service/s3/serve/sim-s3-rest-object-reader.js +8 -1
  591. package/dist/service/s3/serve/sim-s3-rest-upload.d.ts +20 -0
  592. package/dist/service/s3/serve/sim-s3-rest-upload.js +30 -0
  593. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +1 -0
  594. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +2 -0
  595. package/dist/service/s3/serve/website/sim-s3-website-object.js +3 -0
  596. package/dist/service/s3/sim-s3-commands.d.ts +4 -0
  597. package/dist/service/s3/sim-s3-commands.js +6 -0
  598. package/dist/service/s3/sim-s3-operations.d.ts +11 -4
  599. package/dist/service/s3/sim-s3-operations.js +17 -4
  600. package/dist/service/s3/sim-s3-tagging-operations.d.ts +21 -0
  601. package/dist/service/s3/sim-s3-tagging-operations.js +25 -0
  602. package/dist/service/s3/sim-s3.d.ts +12 -0
  603. package/dist/service/s3/sim-s3.js +13 -0
  604. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.d.ts +34 -0
  605. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.js +34 -0
  606. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.d.ts +9 -0
  607. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.js +24 -0
  608. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +5 -4
  609. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +5 -3
  610. package/dist/service/s3/upload/sim-s3-completed-upload.js +5 -1
  611. package/dist/service/s3/upload/sim-s3-multipart-upload.d.ts +18 -0
  612. package/dist/service/s3/upload/sim-s3-multipart-upload.js +8 -0
  613. package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +6 -0
  614. package/dist/service/s3/upload/sim-s3-multipart-uploads.js +5 -0
  615. package/dist/util/background/background-clock-waits.d.ts +52 -0
  616. package/dist/util/background/background-clock-waits.js +76 -0
  617. package/dist/util/background/background-jitter.js +1 -0
  618. package/dist/util/background/background-pending-tasks.d.ts +55 -0
  619. package/dist/util/background/background-pending-tasks.js +117 -0
  620. package/dist/util/background/background-settled-tasks.d.ts +4 -1
  621. package/dist/util/background/background-settled-tasks.js +4 -1
  622. package/dist/util/background/background.d.ts +43 -0
  623. package/dist/util/background/background.js +27 -19
  624. package/dist/util/background/non-deterministic-background.d.ts +12 -0
  625. package/dist/util/background/non-deterministic-background.js +24 -20
  626. package/dist/util/clock/sim-clock-control.js +23 -2
  627. package/docs/services/apigateway/README.md +3 -1
  628. package/docs/services/athena/README.md +126 -3
  629. package/docs/services/cloudformation/README.md +775 -65
  630. package/docs/services/cognito/README.md +5 -0
  631. package/docs/services/dynamodb/README.md +86 -11
  632. package/docs/services/lambda/README.md +603 -39
  633. package/docs/services/s3/README.md +688 -57
  634. package/package.json +8 -2
@@ -1,7 +1,10 @@
1
1
  import { SimCdkAssetsPublisher } from "../cdk/assets/sim-cdk-assets-publisher.js";
2
+ import { SimCfnResourceRetention } from "../resource/delete/sim-cfn-resource-retention.js";
3
+ import { simCfnStackRetainedLogicalIds } from "./teardown/sim-cfn-stack-retained-logical-ids.js";
2
4
  import { SimCfnStackResourceCreator } from "./deploy/sim-cfn-stack-resource-creator.js";
3
5
  import { SimCfnStackResourceDeleter } from "./teardown/sim-cfn-stack-resource-deleter.js";
4
6
  import { SimCfnStackUpdater } from "./update/sim-cfn-stack-updater.js";
7
+ import { SimCfnResourceUpdateValidator } from "../resource/update/sim-cfn-resource-update-validator.js";
5
8
  /**
6
9
  * What a Stack can ask simulated AWS to do with its Resources.
7
10
  *
@@ -23,6 +26,15 @@ export class SimCfnStackResourceOperations {
23
26
  resourceOrder;
24
27
  cdkOutContext;
25
28
  caller;
29
+ /**
30
+ * Resources an update kept in simulated AWS.
31
+ *
32
+ * They are held here because the Stack cannot hold them. A replaced Resource
33
+ * gives its logical ID up to the Resource created in its place as soon as the
34
+ * update applies. A teardown's retained Resources are still on the Stack, and
35
+ * are read off it.
36
+ */
37
+ retainedByUpdates = [];
26
38
  constructor(properties) {
27
39
  const { simAws, accountRegionScope, stackName, cdkOutContext, bindings, caller, resourceOrder, } = properties;
28
40
  this.simAws = simAws;
@@ -64,18 +76,53 @@ export class SimCfnStackResourceOperations {
64
76
  await this.publishAssets();
65
77
  await this.creator(resources).create(creating);
66
78
  }
79
+ /** Resources an update kept in simulated AWS. */
80
+ get retainedResources() {
81
+ return this.retainedByUpdates;
82
+ }
67
83
  /**
68
- * Delete every Resource in the given Stack Resource map.
84
+ * Refuse a teardown that names a Resource the Stack does not have, before
85
+ * anything is deleted.
69
86
  */
70
- async deleteAll(resources) {
71
- await this.deleter(resources).deleteAll();
87
+ assertRetainable(resources, retainResources) {
88
+ this.teardownRetention(resources, retainResources);
89
+ }
90
+ /**
91
+ * Delete every Resource in the given Stack Resource map, apart from any the
92
+ * teardown named as ones to keep.
93
+ */
94
+ async deleteAll(resources, retainResources) {
95
+ await this.deleter(resources, this.teardownRetention(resources, retainResources)).deleteAll();
96
+ }
97
+ /**
98
+ * Take a record of the Resources an update kept, which the Stack is about to
99
+ * stop holding.
100
+ */
101
+ recordRetained(resources) {
102
+ this.retainedByUpdates.push(...resources);
72
103
  }
73
104
  /**
74
105
  * Delete the given Resources, in reverse dependency order among the whole
75
106
  * Stack.
76
107
  */
77
- async delete(resources, deleting) {
78
- await this.deleter(resources).delete(deleting);
108
+ async delete(resources, deleting, retention) {
109
+ await this.deleter(resources, retention).delete(deleting);
110
+ }
111
+ /**
112
+ * Validate every Resource replacement before the update changes the Stack.
113
+ */
114
+ async assertUpdatesAllowed(currentResources, updatedResources, replacements) {
115
+ await Promise.all(replacements.map(async ({ current, updated }) => {
116
+ await new SimCfnResourceUpdateValidator({
117
+ current,
118
+ updated,
119
+ }).assertAllowed({
120
+ simAws: this.simAws,
121
+ currentResources,
122
+ updatedResources,
123
+ caller: this.caller,
124
+ });
125
+ }));
79
126
  }
80
127
  /**
81
128
  * An update of this Stack from a changed template, in the same scope.
@@ -91,6 +138,36 @@ export class SimCfnStackResourceOperations {
91
138
  updated,
92
139
  });
93
140
  }
141
+ /**
142
+ * Put this Stack's Resources back on the template it was deployed from, over
143
+ * whatever a failed update left behind.
144
+ *
145
+ * The difference is worked out from the Resources the Stack holds now, not
146
+ * from either template. A failure part way through is reconciled from where
147
+ * it stopped. Nothing asserts that there is a change to make. An update that
148
+ * failed before it touched a Resource has nothing to undo, and that is a
149
+ * finished rollback.
150
+ *
151
+ * A Resource the failed update replaced is created again empty. The deployed
152
+ * one was deleted to make room for the replacement, and there is nothing left
153
+ * to put back.
154
+ */
155
+ async rollBack(properties) {
156
+ await this.updater(properties).apply();
157
+ }
158
+ /**
159
+ * What a teardown of these Resources is to leave behind: the ones it named,
160
+ * and the ones their own DeletionPolicy keeps.
161
+ */
162
+ teardownRetention(resources, retainResources) {
163
+ return new SimCfnResourceRetention({
164
+ named: simCfnStackRetainedLogicalIds({
165
+ stackName: this.stackName,
166
+ resources,
167
+ retainResources,
168
+ }),
169
+ });
170
+ }
94
171
  async publishAssets() {
95
172
  await new SimCdkAssetsPublisher({
96
173
  simAws: this.simAws,
@@ -111,12 +188,13 @@ export class SimCfnStackResourceOperations {
111
188
  resourceOrder: this.resourceOrder,
112
189
  });
113
190
  }
114
- deleter(resources) {
191
+ deleter(resources, retention) {
115
192
  return new SimCfnStackResourceDeleter({
116
193
  simAws: this.simAws,
117
194
  resources,
118
195
  stackName: this.stackName,
119
196
  caller: this.caller,
197
+ retention,
120
198
  });
121
199
  }
122
200
  }
@@ -6,6 +6,7 @@ import { SimCfnStackDeploymentLifecycle } from "./deploy/sim-cfn-stack-deploymen
6
6
  import { SimCfnStackUpdateLifecycle } from "./update/sim-cfn-stack-update-lifecycle.js";
7
7
  import type { SimCfnStackOutput } from "./output/sim-cfn-stack-output.js";
8
8
  import type { SimCfnDeployedStack } from "./sim-cfn-deployed-stack.type.js";
9
+ import type { SimCfnStackId } from "./sim-cfn-stack-id.js";
9
10
  import type { SimCloudFormationStackProperties, SimCloudFormationStackStatus, SimCfnStackUpdateProperties, SimCloudFormationStackName } from "./sim-cfn-stack.type.js";
10
11
  /**
11
12
  * Lightweight simulated CloudFormation Stack.
@@ -27,8 +28,8 @@ export declare class SimCfnStack implements SimCfnDeployedStack {
27
28
  readonly updating: SimCfnStackUpdateLifecycle;
28
29
  readonly deletion: SimCfnStackDeletionLifecycle;
29
30
  readonly stackName: SimCloudFormationStackName;
31
+ readonly stackId: SimCfnStackId;
30
32
  readonly resourceMap: Map<string, SimCfnResource>;
31
- template: CfnTemplateBodyRecord;
32
33
  outputs: Map<string, SimCfnStackOutput>;
33
34
  private readonly background;
34
35
  private readonly operations;
@@ -38,15 +39,15 @@ export declare class SimCfnStack implements SimCfnDeployedStack {
38
39
  constructor(properties: SimCloudFormationStackProperties);
39
40
  /** The externally visible Stack status. */
40
41
  get status(): SimCloudFormationStackStatus;
42
+ /** The parsed template this Stack is deployed from. */
43
+ get currentTemplate(): SimCfnTemplate;
44
+ /** The template body this Stack is deployed from. */
45
+ get template(): CfnTemplateBodyRecord;
41
46
  /** The error the operation the status reports failed with, if it failed. */
42
47
  get error(): Error | undefined;
43
- /**
44
- * Start deploying this simulated Stack into simulated AWS.
45
- */
48
+ /** Start deploying this simulated Stack into simulated AWS. */
46
49
  deploy(): Promise<void>;
47
- /**
48
- * Wait for the scheduled deployment task to finish.
49
- */
50
+ /** Wait for the scheduled deployment task to finish. */
50
51
  waitForDeployComplete(): Promise<void>;
51
52
  /**
52
53
  * Apply a changed template to this deployed Stack.
@@ -64,11 +65,13 @@ export declare class SimCfnStack implements SimCfnDeployedStack {
64
65
  * A template that came from a synthesis of its own brings the cloud assembly
65
66
  * it was written into with it, so Resources it replaces read the assets that
66
67
  * synthesis staged rather than the ones the Stack was deployed with.
68
+ *
69
+ * An update that fails is rolled back onto the template the Stack was
70
+ * deployed from, which the Stack goes on holding for as long as the update
71
+ * runs.
67
72
  */
68
73
  update(template: SimCfnTemplate, properties?: SimCfnStackUpdateProperties): Promise<void>;
69
- /**
70
- * Wait for the scheduled Stack update to finish.
71
- */
74
+ /** Wait for the scheduled Stack update to finish. */
72
75
  waitForUpdateComplete(): Promise<void>;
73
76
  /**
74
77
  * Start deleting this Stack from simulated AWS.
@@ -77,11 +80,18 @@ export declare class SimCfnStack implements SimCfnDeployedStack {
77
80
  * before the Resources have gone. The optional onDeleteComplete callback runs
78
81
  * once the teardown has finished successfully, which is when the Stack name
79
82
  * becomes free to use again.
83
+ *
84
+ * Resources named in retainResources are checked against the Stack before
85
+ * the teardown is scheduled. A caller naming one the Stack does not have is
86
+ * refused there, where a check in the background would only fail the
87
+ * deletion.
88
+ *
89
+ * The names are copied as the request is accepted. The teardown runs in the
90
+ * background, and a caller holding the array it passed could otherwise change
91
+ * which Resources are kept after the Stack agreed to keep them.
80
92
  */
81
93
  delete(properties?: SimCfnStackDeleteProperties): Promise<void>;
82
- /**
83
- * Wait for the scheduled Stack deletion to finish.
84
- */
94
+ /** Wait for the scheduled Stack deletion to finish. */
85
95
  waitForDeleteComplete(): Promise<void>;
86
96
  /**
87
97
  * Delete this Stack's Resources from simulated AWS, in reverse dependency
@@ -90,7 +100,7 @@ export declare class SimCfnStack implements SimCfnDeployedStack {
90
100
  * The Resource half of deleting a Stack, without the Stack-level status or
91
101
  * the Stack name release that delete() puts on top of it.
92
102
  */
93
- teardown(): Promise<void>;
103
+ teardown(properties?: SimCfnStackDeleteProperties): Promise<void>;
94
104
  /** Every Stack Resource, in the order the template declared them. */
95
105
  get resources(): readonly SimCfnResource[];
96
106
  /**
@@ -111,12 +121,14 @@ export declare class SimCfnStack implements SimCfnDeployedStack {
111
121
  get inertResources(): readonly SimCfnResource[];
112
122
  /** Resources a teardown recorded rather than deleted. */
113
123
  get skippedResourceDeletions(): readonly SimCfnResource[];
114
- /** Resources a teardown left in simulated AWS, as their policy says to. */
124
+ /**
125
+ * Resources left in simulated AWS, whether a teardown stepped over them or
126
+ * an update replaced them and kept the deployed one.
127
+ */
115
128
  get retainedResources(): readonly SimCfnResource[];
116
129
  /** Every property or Parameter that did not reach simulated AWS as written. */
117
130
  get ignoredProperties(): readonly SimCfnIgnoredProperty[];
118
131
  private get report();
119
- private createResources;
120
132
  private resolveOutputs;
121
133
  }
122
134
  export { type SimCfnStackUpdateProperties, type SimCloudFormationStackName, type SimCloudFormationStackStatus, } from "./sim-cfn-stack.type.js";
@@ -29,8 +29,8 @@ export class SimCfnStack {
29
29
  updating;
30
30
  deletion;
31
31
  stackName;
32
+ stackId;
32
33
  resourceMap;
33
- template;
34
34
  outputs = new Map();
35
35
  background;
36
36
  operations;
@@ -38,12 +38,12 @@ export class SimCfnStack {
38
38
  stackOutputs;
39
39
  cfnTemplate;
40
40
  constructor(properties) {
41
- const { simAws, accountRegionScope, background, stackName, template, cdkOutContext, bindings, caller, resourceOrder, exports, } = properties;
41
+ const { simAws, accountRegionScope, background, stackName, stackId, template, cdkOutContext, bindings, caller, resourceOrder, exports, } = properties;
42
42
  this.background = background;
43
43
  this.stackName = stackName;
44
+ this.stackId = stackId;
44
45
  this.stackOutputs = new SimCfnStackOutputs({ stackName, exports });
45
46
  this.cfnTemplate = template;
46
- this.template = this.cfnTemplate.template;
47
47
  this.resourceMap = makeSimCfnStackResourceMap({
48
48
  accountRegionScope,
49
49
  background,
@@ -67,14 +67,15 @@ export class SimCfnStack {
67
67
  background,
68
68
  stackName,
69
69
  runDeployment: async () => {
70
- await this.createResources();
70
+ await this.operations.createAll(this.resourceMap);
71
+ this.resolveOutputs();
71
72
  },
72
73
  });
73
74
  this.updating = new SimCfnStackUpdateLifecycle({ background, stackName });
74
75
  this.deletion = new SimCfnStackDeletionLifecycle({
75
76
  background,
76
- runTeardown: async () => {
77
- await this.teardown();
77
+ runTeardown: async (deleteProperties) => {
78
+ await this.teardown(deleteProperties);
78
79
  },
79
80
  });
80
81
  this.operationStatus = new SimCfnStackOperationStatus({
@@ -87,19 +88,23 @@ export class SimCfnStack {
87
88
  get status() {
88
89
  return this.operationStatus.status;
89
90
  }
91
+ /** The parsed template this Stack is deployed from. */
92
+ get currentTemplate() {
93
+ return this.cfnTemplate;
94
+ }
95
+ /** The template body this Stack is deployed from. */
96
+ get template() {
97
+ return this.cfnTemplate.template;
98
+ }
90
99
  /** The error the operation the status reports failed with, if it failed. */
91
100
  get error() {
92
101
  return this.operationStatus.error;
93
102
  }
94
- /**
95
- * Start deploying this simulated Stack into simulated AWS.
96
- */
103
+ /** Start deploying this simulated Stack into simulated AWS. */
97
104
  async deploy() {
98
105
  await this.lifecycle.deploy();
99
106
  }
100
- /**
101
- * Wait for the scheduled deployment task to finish.
102
- */
107
+ /** Wait for the scheduled deployment task to finish. */
103
108
  async waitForDeployComplete() {
104
109
  await this.lifecycle.waitForComplete();
105
110
  }
@@ -119,13 +124,18 @@ export class SimCfnStack {
119
124
  * A template that came from a synthesis of its own brings the cloud assembly
120
125
  * it was written into with it, so Resources it replaces read the assets that
121
126
  * synthesis staged rather than the ones the Stack was deployed with.
127
+ *
128
+ * An update that fails is rolled back onto the template the Stack was
129
+ * deployed from, which the Stack goes on holding for as long as the update
130
+ * runs.
122
131
  */
123
132
  async update(template, properties = {}) {
124
133
  this.updating.assertNotUpdating();
134
+ const deployed = this.cfnTemplate;
125
135
  const updater = this.operations.updater({
126
136
  background: this.background,
127
137
  resources: this.resourceMap,
128
- current: this.cfnTemplate,
138
+ current: deployed,
129
139
  updated: template,
130
140
  });
131
141
  updater.assertHasChanges();
@@ -134,15 +144,24 @@ export class SimCfnStack {
134
144
  // deployed it.
135
145
  this.operations.useUpdate(properties);
136
146
  this.cfnTemplate = template;
137
- this.template = template.template;
138
- await this.updating.update(async () => {
139
- await updater.apply();
140
- this.resolveOutputs();
147
+ await this.updating.update({
148
+ apply: async () => {
149
+ await updater.apply();
150
+ this.resolveOutputs();
151
+ },
152
+ rollBack: async () => {
153
+ await this.operations.rollBack({
154
+ background: this.background,
155
+ resources: this.resourceMap,
156
+ current: this.cfnTemplate,
157
+ updated: deployed,
158
+ });
159
+ this.cfnTemplate = deployed;
160
+ this.resolveOutputs();
161
+ },
141
162
  });
142
163
  }
143
- /**
144
- * Wait for the scheduled Stack update to finish.
145
- */
164
+ /** Wait for the scheduled Stack update to finish. */
146
165
  async waitForUpdateComplete() {
147
166
  await this.updating.waitForComplete();
148
167
  }
@@ -153,13 +172,22 @@ export class SimCfnStack {
153
172
  * before the Resources have gone. The optional onDeleteComplete callback runs
154
173
  * once the teardown has finished successfully, which is when the Stack name
155
174
  * becomes free to use again.
175
+ *
176
+ * Resources named in retainResources are checked against the Stack before
177
+ * the teardown is scheduled. A caller naming one the Stack does not have is
178
+ * refused there, where a check in the background would only fail the
179
+ * deletion.
180
+ *
181
+ * The names are copied as the request is accepted. The teardown runs in the
182
+ * background, and a caller holding the array it passed could otherwise change
183
+ * which Resources are kept after the Stack agreed to keep them.
156
184
  */
157
185
  async delete(properties = {}) {
158
- await this.deletion.delete(properties);
186
+ const retainResources = [...(properties.retainResources ?? [])];
187
+ this.operations.assertRetainable(this.resourceMap, retainResources);
188
+ await this.deletion.delete({ ...properties, retainResources });
159
189
  }
160
- /**
161
- * Wait for the scheduled Stack deletion to finish.
162
- */
190
+ /** Wait for the scheduled Stack deletion to finish. */
163
191
  async waitForDeleteComplete() {
164
192
  await this.deletion.waitForComplete();
165
193
  }
@@ -170,8 +198,8 @@ export class SimCfnStack {
170
198
  * The Resource half of deleting a Stack, without the Stack-level status or
171
199
  * the Stack name release that delete() puts on top of it.
172
200
  */
173
- async teardown() {
174
- await this.operations.deleteAll(this.resourceMap);
201
+ async teardown(properties = {}) {
202
+ await this.operations.deleteAll(this.resourceMap, properties.retainResources);
175
203
  this.stackOutputs.release();
176
204
  }
177
205
  /** Every Stack Resource, in the order the template declared them. */
@@ -209,9 +237,12 @@ export class SimCfnStack {
209
237
  get skippedResourceDeletions() {
210
238
  return this.report.deletionSkipped;
211
239
  }
212
- /** Resources a teardown left in simulated AWS, as their policy says to. */
240
+ /**
241
+ * Resources left in simulated AWS, whether a teardown stepped over them or
242
+ * an update replaced them and kept the deployed one.
243
+ */
213
244
  get retainedResources() {
214
- return this.report.retained;
245
+ return [...this.report.retained, ...this.operations.retainedResources];
215
246
  }
216
247
  /** Every property or Parameter that did not reach simulated AWS as written. */
217
248
  get ignoredProperties() {
@@ -220,10 +251,6 @@ export class SimCfnStack {
220
251
  get report() {
221
252
  return new SimCfnStackResourceReport(this.resourceMap, this.cfnTemplate);
222
253
  }
223
- async createResources() {
224
- await this.operations.createAll(this.resourceMap);
225
- this.resolveOutputs();
226
- }
227
254
  resolveOutputs() {
228
255
  this.outputs = this.stackOutputs.resolve(this.cfnTemplate, this.resourceMap);
229
256
  }
@@ -8,8 +8,9 @@ import type { SimCdkOutContext } from "../cdk/sim-cdk-out-context.js";
8
8
  import type { SimCfnBinding } from "../bind/sim-cfn-binding.js";
9
9
  import type { SimCfnExports } from "../export/sim-cfn-exports.js";
10
10
  import type { SimCfnResourceOrder } from "./deploy/sim-cfn-resource-order.js";
11
+ import type { SimCfnStackId } from "./sim-cfn-stack-id.js";
11
12
  export type SimCloudFormationStackName = Brand<string, "SimCloudFormationStackName">;
12
- export type SimCloudFormationStackStatus = "REVIEW_IN_PROGRESS" | "CREATE_IN_PROGRESS" | "CREATE_COMPLETE" | "CREATE_FAILED" | "UPDATE_IN_PROGRESS" | "UPDATE_COMPLETE" | "UPDATE_FAILED" | "DELETE_IN_PROGRESS" | "DELETE_COMPLETE" | "DELETE_FAILED";
13
+ export type SimCloudFormationStackStatus = "REVIEW_IN_PROGRESS" | "CREATE_IN_PROGRESS" | "CREATE_COMPLETE" | "CREATE_FAILED" | "UPDATE_IN_PROGRESS" | "UPDATE_COMPLETE" | "UPDATE_FAILED" | "UPDATE_ROLLBACK_IN_PROGRESS" | "UPDATE_ROLLBACK_COMPLETE" | "UPDATE_ROLLBACK_FAILED" | "DELETE_IN_PROGRESS" | "DELETE_COMPLETE" | "DELETE_FAILED";
13
14
  export interface SimCfnStackUpdateProperties {
14
15
  /**
15
16
  * The CDK cloud assembly the new template was synthesized into, when it came
@@ -29,6 +30,11 @@ export interface SimCloudFormationStackProperties {
29
30
  readonly accountRegionScope: SimAwsAccountRegionScope;
30
31
  readonly background: BackgroundScheduler;
31
32
  readonly stackName: SimCloudFormationStackName;
33
+ /**
34
+ * The unique ID this Stack was created with, which is what a deleted Stack
35
+ * is still described by once its name has gone back into circulation.
36
+ */
37
+ readonly stackId: SimCfnStackId;
32
38
  readonly template: SimCfnTemplate;
33
39
  readonly cdkOutContext?: SimCdkOutContext | undefined;
34
40
  readonly bindings?: readonly SimCfnBinding[] | undefined;
@@ -10,7 +10,7 @@ interface SimCfnStackDeletionLifecycleProperties {
10
10
  * stays outside this class, while status, error and completion handling stay
11
11
  * inside it.
12
12
  */
13
- readonly runTeardown: () => Promise<void>;
13
+ readonly runTeardown: (properties: SimCfnStackDeleteProperties) => Promise<void>;
14
14
  }
15
15
  export interface SimCfnStackDeleteProperties {
16
16
  /**
@@ -20,6 +20,12 @@ export interface SimCfnStackDeleteProperties {
20
20
  * lifecycle only says when the name is free rather than freeing it.
21
21
  */
22
22
  readonly onDeleteComplete?: (() => void) | undefined;
23
+ /**
24
+ * Resources to leave in simulated AWS, named by logical ID or CDK construct
25
+ * ID. What DeleteStack RetainResources asks for, and it overrides whatever
26
+ * the Resource's own DeletionPolicy says.
27
+ */
28
+ readonly retainResources?: readonly string[] | undefined;
23
29
  }
24
30
  /**
25
31
  * Owns the simulated CloudFormation Stack deletion lifecycle state.
@@ -58,7 +58,9 @@ export class SimCfnStackDeletionLifecycle {
58
58
  });
59
59
  await scheduler.sequence();
60
60
  this.completePromise = scheduler.schedule({
61
- operation: this.runTeardown,
61
+ operation: async () => {
62
+ await this.runTeardown(properties);
63
+ },
62
64
  onSuccess: () => {
63
65
  this.#status = "DELETE_COMPLETE";
64
66
  properties.onDeleteComplete?.();
@@ -1,10 +1,12 @@
1
1
  import type { SimAws } from "../../../aws/sim-aws.js";
2
2
  import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
3
3
  import type { SimCfnResource } from "../../resource/sim-cfn-resource.js";
4
+ import type { SimCfnResourceRetention } from "../../resource/delete/sim-cfn-resource-retention.js";
4
5
  interface SimCfnStackResourceBatchDeleterProperties {
5
6
  readonly simAws: SimAws;
6
7
  readonly resources: ReadonlyMap<string, SimCfnResource>;
7
8
  readonly caller?: SimAwsCaller | undefined;
9
+ readonly retention?: SimCfnResourceRetention | undefined;
8
10
  }
9
11
  /**
10
12
  * Deletes one batch of Stack Resources nothing still depends on.
@@ -20,6 +22,7 @@ export declare class SimCfnStackResourceBatchDeleter {
20
22
  private readonly simAws;
21
23
  private readonly resources;
22
24
  private readonly caller;
25
+ private readonly retention;
23
26
  constructor(properties: SimCfnStackResourceBatchDeleterProperties);
24
27
  /**
25
28
  * Delete the supplied Resources concurrently.
@@ -12,10 +12,12 @@ export class SimCfnStackResourceBatchDeleter {
12
12
  simAws;
13
13
  resources;
14
14
  caller;
15
+ retention;
15
16
  constructor(properties) {
16
17
  this.simAws = properties.simAws;
17
18
  this.resources = properties.resources;
18
19
  this.caller = properties.caller;
20
+ this.retention = properties.retention;
19
21
  }
20
22
  /**
21
23
  * Delete the supplied Resources concurrently.
@@ -28,6 +30,7 @@ export class SimCfnStackResourceBatchDeleter {
28
30
  simAws: this.simAws,
29
31
  resources: this.resources,
30
32
  caller: this.caller,
33
+ retention: this.retention,
31
34
  });
32
35
  }));
33
36
  }
@@ -1,11 +1,14 @@
1
1
  import type { SimAws } from "../../../aws/sim-aws.js";
2
2
  import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
3
3
  import type { SimCfnResource } from "../../resource/sim-cfn-resource.js";
4
+ import type { SimCfnResourceRetention } from "../../resource/delete/sim-cfn-resource-retention.js";
4
5
  interface SimCfnStackResourceDeleterProperties {
5
6
  readonly simAws: SimAws;
6
7
  readonly resources: ReadonlyMap<string, SimCfnResource>;
7
8
  readonly stackName: string;
8
9
  readonly caller?: SimAwsCaller | undefined;
10
+ /** Which of the Resources being deleted are to be left in simulated AWS. */
11
+ readonly retention?: SimCfnResourceRetention | undefined;
9
12
  }
10
13
  /**
11
14
  * Orchestrates reverse-dependency-ordered deletion of a Stack's Resources.
@@ -20,13 +20,14 @@ export class SimCfnStackResourceDeleter {
20
20
  stackName;
21
21
  batchDeleter;
22
22
  constructor(properties) {
23
- const { simAws, resources, stackName, caller } = properties;
23
+ const { simAws, resources, stackName, caller, retention } = properties;
24
24
  this.resources = resources;
25
25
  this.stackName = stackName;
26
26
  this.batchDeleter = new SimCfnStackResourceBatchDeleter({
27
27
  simAws,
28
28
  resources,
29
29
  caller,
30
+ retention,
30
31
  });
31
32
  }
32
33
  /**
@@ -0,0 +1,18 @@
1
+ import type { SimCfnResource } from "../../resource/sim-cfn-resource.js";
2
+ interface SimCfnStackRetainedLogicalIdsProperties {
3
+ readonly stackName: string;
4
+ readonly resources: ReadonlyMap<string, SimCfnResource>;
5
+ /** The identifiers DeleteStack named in RetainResources. */
6
+ readonly retainResources?: readonly string[] | undefined;
7
+ }
8
+ /**
9
+ * The logical IDs a DeleteStack call asked to keep, resolved against the Stack.
10
+ *
11
+ * An identifier the Stack has no Resource for is refused, as CloudFormation
12
+ * refuses one. A caller who misspells the Resource they meant to keep would
13
+ * otherwise watch it go. CDK construct IDs resolve here as well as logical IDs,
14
+ * the same way `getResource(...)` takes either. A test written against a
15
+ * synthesized template then needs no hashed logical ID.
16
+ */
17
+ export declare function simCfnStackRetainedLogicalIds(properties: SimCfnStackRetainedLogicalIdsProperties): ReadonlySet<string>;
18
+ export {};
@@ -0,0 +1,30 @@
1
+ import { SimCloudFormationValidationError } from "../../error/sim-cloudformation.error.js";
2
+ import { SimCfnStackResourceLookup } from "../resource-map/sim-cfn-stack-resource-lookup.js";
3
+ /**
4
+ * The logical IDs a DeleteStack call asked to keep, resolved against the Stack.
5
+ *
6
+ * An identifier the Stack has no Resource for is refused, as CloudFormation
7
+ * refuses one. A caller who misspells the Resource they meant to keep would
8
+ * otherwise watch it go. CDK construct IDs resolve here as well as logical IDs,
9
+ * the same way `getResource(...)` takes either. A test written against a
10
+ * synthesized template then needs no hashed logical ID.
11
+ */
12
+ export function simCfnStackRetainedLogicalIds(properties) {
13
+ const { stackName, resources, retainResources = [] } = properties;
14
+ const lookup = new SimCfnStackResourceLookup(resources);
15
+ const retained = new Set();
16
+ const missing = [];
17
+ for (const identifier of retainResources) {
18
+ const resource = lookup.find(identifier);
19
+ if (resource === undefined) {
20
+ missing.push(identifier);
21
+ }
22
+ else {
23
+ retained.add(resource.logicalId);
24
+ }
25
+ }
26
+ if (missing.length > 0) {
27
+ throw new SimCloudFormationValidationError(`Invalid RetainResources: [${missing.join(", ")}] not found in Stack ${stackName}`);
28
+ }
29
+ return retained;
30
+ }
@@ -0,0 +1,9 @@
1
+ import type { SimCloudFormationStackName, SimCloudFormationStackStatus } from "../sim-cfn-stack.type.js";
2
+ /**
3
+ * Refuse an update while one is already running, or being rolled back.
4
+ *
5
+ * CloudFormation takes one update at a time. A second here would read the
6
+ * difference to apply from a Stack half way through the first, or from one
7
+ * being put back on the template it was deployed from.
8
+ */
9
+ export declare function assertSimCfnStackNotUpdating(stackName: SimCloudFormationStackName, status: SimCloudFormationStackStatus | undefined): void;
@@ -0,0 +1,14 @@
1
+ import { SimCloudFormationValidationError } from "../../error/sim-cloudformation.error.js";
2
+ /**
3
+ * Refuse an update while one is already running, or being rolled back.
4
+ *
5
+ * CloudFormation takes one update at a time. A second here would read the
6
+ * difference to apply from a Stack half way through the first, or from one
7
+ * being put back on the template it was deployed from.
8
+ */
9
+ export function assertSimCfnStackNotUpdating(stackName, status) {
10
+ if (status === "UPDATE_IN_PROGRESS" ||
11
+ status === "UPDATE_ROLLBACK_IN_PROGRESS") {
12
+ throw new SimCloudFormationValidationError(`Stack ${stackName} is in ${status} state and can not be updated`);
13
+ }
14
+ }