@kensio/yulin 1.21.3 → 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 (626) 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/sim-cfn-resource-record.d.ts +15 -0
  120. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +21 -1
  121. package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts +9 -7
  122. package/dist/service/cloudformation/resource/sim-cfn-resource.js +11 -11
  123. package/dist/service/cloudformation/resource/sim-cfn-resource.type.d.ts +8 -0
  124. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.d.ts +3 -3
  125. package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.js +3 -3
  126. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.d.ts +4 -0
  127. package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.js +9 -0
  128. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.d.ts +37 -0
  129. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.js +77 -0
  130. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.d.ts +51 -0
  131. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.js +10 -0
  132. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.d.ts +11 -0
  133. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.js +34 -0
  134. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.d.ts +21 -0
  135. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.js +31 -0
  136. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.d.ts +14 -0
  137. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.js +1 -0
  138. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.d.ts +26 -0
  139. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.js +58 -0
  140. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.d.ts +18 -0
  141. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.js +89 -0
  142. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.d.ts +15 -0
  143. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.js +65 -0
  144. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.d.ts +13 -0
  145. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.js +60 -0
  146. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.d.ts +13 -0
  147. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.js +50 -0
  148. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.d.ts +13 -0
  149. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.js +30 -0
  150. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.d.ts +26 -0
  151. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.js +44 -0
  152. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.d.ts +15 -0
  153. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.js +59 -0
  154. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.d.ts +11 -0
  155. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.js +43 -0
  156. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.d.ts +15 -0
  157. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.js +67 -0
  158. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.d.ts +26 -0
  159. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.js +61 -0
  160. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.d.ts +18 -0
  161. package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.js +59 -0
  162. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api-template.factory.js +1 -1
  163. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.d.ts +4 -0
  164. package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.js +12 -5
  165. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api-template.factory.js +1 -1
  166. package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api.js +7 -3
  167. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-api-event.js +7 -3
  168. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.d.ts +26 -0
  169. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.js +88 -0
  170. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.d.ts +12 -0
  171. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.js +1 -0
  172. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-function-events.js +8 -5
  173. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-event.js +23 -1
  174. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.d.ts +9 -2
  175. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.js +5 -3
  176. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.d.ts +6 -1
  177. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.js +7 -1
  178. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.d.ts +19 -0
  179. package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.js +69 -0
  180. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.d.ts +5 -0
  181. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.js +3 -1
  182. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.d.ts +8 -0
  183. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.js +8 -0
  184. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-url.js +1 -4
  185. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.d.ts +6 -4
  186. package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.js +2 -4
  187. package/dist/service/cloudformation/sam/sim-cfn-sam-error.d.ts +31 -0
  188. package/dist/service/cloudformation/sam/sim-cfn-sam-error.js +17 -0
  189. package/dist/service/cloudformation/sam/sim-cfn-sam-expansion.js +11 -6
  190. package/dist/service/cloudformation/sdk/sim-cloudformation-sdk-command-router.js +20 -0
  191. package/dist/service/cloudformation/serve/sim-cloudformation-api.d.ts +4 -3
  192. package/dist/service/cloudformation/serve/sim-cloudformation-api.js +6 -3
  193. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.d.ts +10 -0
  194. package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.js +94 -0
  195. package/dist/service/cloudformation/sim-cloudformation.d.ts +31 -0
  196. package/dist/service/cloudformation/sim-cloudformation.js +56 -9
  197. package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js +1 -0
  198. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.d.ts +20 -0
  199. package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.js +23 -0
  200. package/dist/service/cloudformation/stack/sim-cfn-deployed-stack.type.d.ts +6 -0
  201. package/dist/service/cloudformation/stack/sim-cfn-stack-id.d.ts +30 -0
  202. package/dist/service/cloudformation/stack/sim-cfn-stack-id.js +24 -0
  203. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +46 -3
  204. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +67 -6
  205. package/dist/service/cloudformation/stack/sim-cfn-stack.d.ts +28 -16
  206. package/dist/service/cloudformation/stack/sim-cfn-stack.js +59 -32
  207. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +7 -1
  208. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.d.ts +7 -1
  209. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.js +3 -1
  210. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.d.ts +3 -0
  211. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.js +3 -0
  212. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.d.ts +3 -0
  213. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.js +2 -1
  214. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.d.ts +18 -0
  215. package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.js +30 -0
  216. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.d.ts +9 -0
  217. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.js +14 -0
  218. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.d.ts +25 -14
  219. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.js +41 -24
  220. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.d.ts +9 -0
  221. package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.js +14 -0
  222. package/dist/service/cloudformation/stack/update/sim-cfn-stack-updater.js +6 -1
  223. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.d.ts +12 -3
  224. package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.js +29 -3
  225. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.d.ts +28 -0
  226. package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.js +39 -0
  227. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts +25 -1
  228. package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js +43 -11
  229. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.d.ts +7 -0
  230. package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.js +29 -3
  231. package/dist/service/cloudformation/template/sim-cfn-command-template.d.ts +40 -0
  232. package/dist/service/cloudformation/template/sim-cfn-command-template.js +45 -0
  233. package/dist/service/cloudformation/template/sim-cfn-template.d.ts +7 -0
  234. package/dist/service/cloudformation/template/sim-cfn-template.js +15 -1
  235. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +2 -0
  236. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +49 -0
  237. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +1 -0
  238. package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +1 -0
  239. package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +1 -1
  240. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.d.ts +5 -0
  241. package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.js +17 -0
  242. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +5 -5
  243. package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +24 -8
  244. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.d.ts +11 -8
  245. package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.js +20 -8
  246. package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +2 -0
  247. package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
  248. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +14 -4
  249. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +16 -4
  250. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.d.ts +17 -0
  251. package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.js +39 -0
  252. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.d.ts +28 -0
  253. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.js +50 -0
  254. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +12 -5
  255. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts +3 -3
  256. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +3 -4
  257. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.d.ts +5 -16
  258. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.js +4 -21
  259. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.d.ts +15 -0
  260. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.js +18 -1
  261. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.d.ts +13 -0
  262. package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.js +15 -0
  263. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +2 -0
  264. package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +5 -3
  265. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.d.ts +21 -0
  266. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.js +37 -0
  267. package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.js +6 -0
  268. package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
  269. package/dist/service/lambda/command/create-function/create-function.handler.js +5 -1
  270. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.command.d.ts +2 -3
  271. package/dist/service/lambda/command/create-function-url-config/create-function-url-config.handler.js +1 -0
  272. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +6 -0
  273. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +10 -0
  274. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +2 -6
  275. package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +1 -0
  276. package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
  277. package/dist/service/lambda/command/function-url/function-url-cors-constraints.d.ts +25 -0
  278. package/dist/service/lambda/command/function-url/function-url-cors-constraints.js +49 -0
  279. package/dist/service/lambda/command/function-url/function-url-cors-input.d.ts +25 -0
  280. package/dist/service/lambda/command/function-url/function-url-cors-input.js +57 -0
  281. package/dist/service/lambda/command/function-url/function-url-input.d.ts +7 -0
  282. package/dist/service/lambda/command/function-url/function-url-input.js +9 -0
  283. package/dist/service/lambda/command/invoke/async/sim-lambda-async-invocation.js +10 -13
  284. package/dist/service/lambda/command/invoke/async/sim-lambda-async-outcome.js +2 -0
  285. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.d.ts +13 -0
  286. package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.js +12 -0
  287. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.command.d.ts +2 -0
  288. package/dist/service/lambda/command/update-function-url-config/update-function-url-config.handler.js +1 -0
  289. package/dist/service/lambda/destination/deliver/sim-lambda-destination-bus.js +1 -1
  290. package/dist/service/lambda/destination/deliver/sim-lambda-destination-function.js +8 -12
  291. package/dist/service/lambda/destination/deliver/sim-lambda-destination-queue.js +4 -3
  292. package/dist/service/lambda/destination/deliver/sim-lambda-destination-send.d.ts +2 -0
  293. package/dist/service/lambda/destination/deliver/sim-lambda-destination-topic.js +4 -3
  294. package/dist/service/lambda/destination/sim-aws-lambda-destinations.d.ts +4 -6
  295. package/dist/service/lambda/destination/sim-aws-lambda-destinations.js +6 -6
  296. package/dist/service/lambda/destination/sim-lambda-destination-targets.d.ts +3 -0
  297. package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +4 -9
  298. package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +4 -9
  299. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +22 -3
  300. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +39 -9
  301. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +7 -6
  302. package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +14 -12
  303. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +9 -15
  304. package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +9 -16
  305. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +10 -6
  306. package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +22 -12
  307. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.d.ts +23 -0
  308. package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.js +18 -0
  309. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +12 -13
  310. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +24 -17
  311. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.d.ts +64 -0
  312. package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.js +86 -0
  313. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +6 -0
  314. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +8 -1
  315. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +6 -0
  316. package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +7 -0
  317. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +11 -1
  318. package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +13 -0
  319. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.d.ts +39 -0
  320. package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.js +46 -0
  321. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.d.ts +56 -0
  322. package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.js +110 -0
  323. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.d.ts +5 -0
  324. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.js +7 -1
  325. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.d.ts +6 -0
  326. package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.js +6 -0
  327. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +6 -1
  328. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +8 -6
  329. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +10 -8
  330. package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +18 -1
  331. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +8 -2
  332. package/dist/service/lambda/function/code/sim-lambda-executable-code.js +2 -1
  333. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +2 -11
  334. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +13 -39
  335. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +7 -0
  336. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +13 -7
  337. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.d.ts +23 -0
  338. package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.js +42 -0
  339. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.d.ts +12 -4
  340. package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.js +15 -5
  341. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.d.ts +7 -0
  342. package/dist/service/lambda/function/invoke/sim-lambda-host-scope.js +6 -2
  343. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.d.ts +26 -0
  344. package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.js +84 -0
  345. package/dist/service/lambda/function/invoke/sim-lambda-invocation.d.ts +44 -0
  346. package/dist/service/lambda/function/invoke/sim-lambda-invocation.js +44 -0
  347. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.d.ts +6 -0
  348. package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.js +1 -2
  349. package/dist/service/lambda/function/invoke/sim-lambda-process-output.d.ts +6 -1
  350. package/dist/service/lambda/function/invoke/sim-lambda-process-output.js +19 -6
  351. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.d.ts +15 -0
  352. package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.js +18 -0
  353. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.d.ts +12 -0
  354. package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.js +28 -0
  355. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.d.ts +46 -0
  356. package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.js +104 -0
  357. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.d.ts +24 -0
  358. package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.js +27 -0
  359. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.d.ts +43 -0
  360. package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.js +112 -0
  361. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.d.ts +57 -0
  362. package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.js +79 -0
  363. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.d.ts +10 -0
  364. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.js +15 -0
  365. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.d.ts +11 -0
  366. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.js +24 -0
  367. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.d.ts +50 -0
  368. package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.js +43 -0
  369. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +17 -0
  370. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +12 -1
  371. package/dist/service/lambda/function/logging/sim-lambda-output.d.ts +56 -0
  372. package/dist/service/lambda/function/logging/sim-lambda-output.js +62 -0
  373. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.d.ts +8 -0
  374. package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.js +27 -1
  375. package/dist/service/lambda/function/sim-lambda-function.d.ts +1 -1
  376. package/dist/service/lambda/function/sim-lambda-function.js +11 -9
  377. package/dist/service/lambda/function/sim-lambda-function.type.d.ts +15 -0
  378. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.d.ts +16 -0
  379. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.d.ts +22 -0
  380. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.js +17 -0
  381. package/dist/service/lambda/function/url/sim-lambda-function-url-cors.js +1 -0
  382. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.d.ts +2 -0
  383. package/dist/service/lambda/function/url/sim-lambda-function-url-factory.js +2 -1
  384. package/dist/service/lambda/function/url/sim-lambda-function-url-store.d.ts +2 -0
  385. package/dist/service/lambda/function/url/sim-lambda-function-url.d.ts +16 -0
  386. package/dist/service/lambda/function/url/sim-lambda-function-url.js +16 -1
  387. package/dist/service/lambda/index.d.ts +1 -0
  388. package/dist/service/lambda/index.js +1 -0
  389. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.d.ts +50 -0
  390. package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.js +96 -0
  391. package/dist/service/lambda/serve/sim-lambda-controller.d.ts +14 -0
  392. package/dist/service/lambda/serve/sim-lambda-controller.js +27 -0
  393. package/dist/service/lambda/sim-lambda-commands.d.ts +10 -0
  394. package/dist/service/lambda/sim-lambda-commands.js +11 -0
  395. package/dist/service/lambda/sim-lambda.d.ts +12 -0
  396. package/dist/service/lambda/sim-lambda.js +13 -0
  397. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.d.ts +67 -0
  398. package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.js +69 -0
  399. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +4 -31
  400. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +7 -6
  401. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +5 -0
  402. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +8 -4
  403. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +1 -14
  404. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +16 -8
  405. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.d.ts +41 -0
  406. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.js +1 -0
  407. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +14 -0
  408. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +32 -2
  409. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.d.ts +33 -0
  410. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.js +48 -0
  411. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.d.ts +16 -0
  412. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.js +44 -0
  413. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +8 -0
  414. package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +27 -0
  415. package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
  416. package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +5 -0
  417. package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +0 -3
  418. package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +3 -0
  419. package/dist/service/s3/bucket/sim-s3-bucket-access.js +6 -2
  420. package/dist/service/s3/bucket/sim-s3-bucket-configuration.d.ts +84 -0
  421. package/dist/service/s3/bucket/sim-s3-bucket-configuration.js +115 -0
  422. package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +10 -0
  423. package/dist/service/s3/bucket/sim-s3-bucket-objects.js +18 -0
  424. package/dist/service/s3/bucket/sim-s3-bucket-properties.d.ts +41 -0
  425. package/dist/service/s3/bucket/sim-s3-bucket-properties.js +1 -0
  426. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +11 -83
  427. package/dist/service/s3/bucket/sim-s3-bucket.js +14 -83
  428. package/dist/service/s3/bucket/sim-s3-public-read.fixture.d.ts +6 -0
  429. package/dist/service/s3/bucket/sim-s3-public-read.fixture.js +20 -6
  430. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.d.ts +58 -0
  431. package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.js +73 -0
  432. package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +19 -1
  433. package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +20 -0
  434. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.d.ts +21 -0
  435. package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.js +44 -0
  436. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +6 -0
  437. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +5 -4
  438. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +12 -5
  439. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.d.ts +21 -0
  440. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.js +30 -0
  441. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +1 -0
  442. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +14 -1
  443. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +41 -16
  444. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +3 -5
  445. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +7 -10
  446. package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +6 -1
  447. package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +5 -0
  448. package/dist/service/s3/command/copy-object/copy-object-builder.d.ts +10 -1
  449. package/dist/service/s3/command/copy-object/copy-object-builder.js +17 -1
  450. package/dist/service/s3/command/copy-object/copy-object.command.d.ts +11 -1
  451. package/dist/service/s3/command/copy-object/copy-object.handler.js +2 -1
  452. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.command.d.ts +5 -1
  453. package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.handler.js +7 -0
  454. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.d.ts +19 -0
  455. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.js +1 -0
  456. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.d.ts +30 -0
  457. package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.js +38 -0
  458. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.d.ts +23 -0
  459. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.js +1 -0
  460. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.d.ts +22 -0
  461. package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.js +42 -0
  462. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.d.ts +29 -0
  463. package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.js +49 -0
  464. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.d.ts +22 -0
  465. package/dist/service/s3/command/encryption/sim-s3-encryption-commands.js +30 -0
  466. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.d.ts +24 -0
  467. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.js +1 -0
  468. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.d.ts +31 -0
  469. package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.js +39 -0
  470. package/dist/service/s3/command/get-object/get-object-authorizer.d.ts +11 -8
  471. package/dist/service/s3/command/get-object/get-object-authorizer.js +26 -34
  472. package/dist/service/s3/command/get-object/get-object-loader.d.ts +7 -3
  473. package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
  474. package/dist/service/s3/command/get-object/get-object.command.d.ts +2 -1
  475. package/dist/service/s3/command/get-object/get-object.handler.d.ts +4 -0
  476. package/dist/service/s3/command/get-object/get-object.handler.js +13 -7
  477. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.d.ts +29 -0
  478. package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.js +1 -0
  479. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.d.ts +21 -0
  480. package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.js +33 -0
  481. package/dist/service/s3/command/head-object/head-object-loader.js +2 -0
  482. package/dist/service/s3/command/head-object/head-object.command.d.ts +2 -1
  483. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +18 -0
  484. package/dist/service/s3/command/list-multipart-uploads/list-multipart-uploads.handler.js +1 -2
  485. package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +1 -2
  486. package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +5 -0
  487. package/dist/service/s3/command/list-objects/list-objects-page-builder.js +11 -6
  488. package/dist/service/s3/command/list-objects/list-objects.command.d.ts +5 -1
  489. package/dist/service/s3/command/list-objects/list-objects.handler.js +5 -0
  490. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +6 -0
  491. package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +11 -5
  492. package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +5 -1
  493. package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +5 -0
  494. package/dist/service/s3/command/list-parts/list-parts.handler.js +3 -3
  495. package/dist/service/s3/command/multipart/sim-s3-multipart-access.js +1 -1
  496. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.d.ts +21 -0
  497. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.js +1 -0
  498. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.d.ts +31 -0
  499. package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.js +41 -0
  500. package/dist/service/s3/command/put-object/put-object-builder.d.ts +5 -1
  501. package/dist/service/s3/command/put-object/put-object-builder.js +10 -1
  502. package/dist/service/s3/command/put-object/put-object.command.d.ts +5 -1
  503. package/dist/service/s3/command/put-object/put-object.handler.js +2 -1
  504. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.d.ts +37 -0
  505. package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.js +1 -0
  506. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.d.ts +22 -0
  507. package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.js +46 -0
  508. package/dist/service/s3/command/sim-s3-command.types.d.ts +6 -0
  509. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.d.ts +61 -0
  510. package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.js +49 -0
  511. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.d.ts +30 -0
  512. package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.js +27 -0
  513. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.d.ts +26 -0
  514. package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.js +34 -0
  515. package/dist/service/s3/error/sim-s3-upload.error.d.ts +41 -0
  516. package/dist/service/s3/error/sim-s3-upload.error.js +47 -0
  517. package/dist/service/s3/error/sim-s3.error.d.ts +22 -34
  518. package/dist/service/s3/error/sim-s3.error.js +26 -40
  519. package/dist/service/s3/mount/sim-s3-mount.type.d.ts +10 -0
  520. package/dist/service/s3/notification/event/sim-s3-event-records.d.ts +3 -2
  521. package/dist/service/s3/notification/event/sim-s3-event-records.js +5 -3
  522. package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +33 -8
  523. package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +23 -9
  524. package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +5 -1
  525. package/dist/service/s3/notification/sim-s3-object-notifier.js +6 -0
  526. package/dist/service/s3/object/s3-key-encoding.d.ts +12 -0
  527. package/dist/service/s3/object/s3-key-encoding.js +14 -0
  528. package/dist/service/s3/object/s3-listing-encoding.d.ts +42 -0
  529. package/dist/service/s3/object/s3-listing-encoding.js +75 -0
  530. package/dist/service/s3/object/s3-object-response-headers.d.ts +40 -0
  531. package/dist/service/s3/object/s3-object-response-headers.js +49 -2
  532. package/dist/service/s3/object/s3-object-storage-report.d.ts +19 -0
  533. package/dist/service/s3/object/s3-object-storage-report.js +18 -0
  534. package/dist/service/s3/object/s3-object-summary.d.ts +2 -10
  535. package/dist/service/s3/object/s3-object-summary.js +1 -10
  536. package/dist/service/s3/object/s3-object-tags.d.ts +61 -0
  537. package/dist/service/s3/object/s3-object-tags.js +77 -0
  538. package/dist/service/s3/object/s3-object.d.ts +49 -0
  539. package/dist/service/s3/object/s3-object.js +52 -1
  540. package/dist/service/s3/object/s3-server-side-encryption.d.ts +30 -0
  541. package/dist/service/s3/object/s3-server-side-encryption.js +42 -0
  542. package/dist/service/s3/object/s3-storage-class.d.ts +45 -0
  543. package/dist/service/s3/object/s3-storage-class.js +67 -0
  544. package/dist/service/s3/object/s3-write-metadata.d.ts +17 -3
  545. package/dist/service/s3/object/s3-write-metadata.js +43 -0
  546. package/dist/service/s3/object/s3-write-storage.d.ts +27 -0
  547. package/dist/service/s3/object/s3-write-storage.js +21 -0
  548. package/dist/service/s3/object/s3-write-tagging.d.ts +24 -0
  549. package/dist/service/s3/object/s3-write-tagging.js +19 -0
  550. package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +12 -0
  551. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +2 -0
  552. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.d.ts +9 -0
  553. package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.js +23 -0
  554. package/dist/service/s3/serve/api/sim-s3-api-bucket-routes.js +22 -0
  555. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.d.ts +4 -0
  556. package/dist/service/s3/serve/api/sim-s3-api-configuration-output.js +10 -0
  557. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.d.ts +7 -0
  558. package/dist/service/s3/serve/api/sim-s3-api-encryption-read.js +30 -0
  559. package/dist/service/s3/serve/api/sim-s3-api-head-output.d.ts +4 -2
  560. package/dist/service/s3/serve/api/sim-s3-api-head-output.js +8 -2
  561. package/dist/service/s3/serve/api/sim-s3-api-input.d.ts +0 -6
  562. package/dist/service/s3/serve/api/sim-s3-api-input.js +2 -13
  563. package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts +5 -0
  564. package/dist/service/s3/serve/api/sim-s3-api-listing.js +5 -0
  565. package/dist/service/s3/serve/api/sim-s3-api-object-input.d.ts +16 -0
  566. package/dist/service/s3/serve/api/sim-s3-api-object-input.js +34 -7
  567. package/dist/service/s3/serve/api/sim-s3-api-object-output.d.ts +18 -1
  568. package/dist/service/s3/serve/api/sim-s3-api-object-output.js +21 -2
  569. package/dist/service/s3/serve/api/sim-s3-api-object-routes.js +22 -1
  570. package/dist/service/s3/serve/api/sim-s3-api-output.d.ts +5 -1
  571. package/dist/service/s3/serve/api/sim-s3-api-output.js +16 -5
  572. package/dist/service/s3/serve/api/sim-s3-api-request.d.ts +6 -5
  573. package/dist/service/s3/serve/api/sim-s3-api-request.js +55 -11
  574. package/dist/service/s3/serve/api/sim-s3-api-routes.js +2 -2
  575. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.d.ts +9 -0
  576. package/dist/service/s3/serve/api/sim-s3-api-tagging-read.js +14 -0
  577. package/dist/service/s3/serve/api/sim-s3-api.d.ts +7 -1
  578. package/dist/service/s3/serve/api/sim-s3-api.js +7 -1
  579. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +1 -5
  580. package/dist/service/s3/serve/sim-s3-rest-controller.js +3 -17
  581. package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts +3 -0
  582. package/dist/service/s3/serve/sim-s3-rest-object-reader.js +8 -1
  583. package/dist/service/s3/serve/sim-s3-rest-upload.d.ts +20 -0
  584. package/dist/service/s3/serve/sim-s3-rest-upload.js +30 -0
  585. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +1 -0
  586. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +2 -0
  587. package/dist/service/s3/serve/website/sim-s3-website-object.js +3 -0
  588. package/dist/service/s3/sim-s3-commands.d.ts +4 -0
  589. package/dist/service/s3/sim-s3-commands.js +6 -0
  590. package/dist/service/s3/sim-s3-operations.d.ts +11 -4
  591. package/dist/service/s3/sim-s3-operations.js +17 -4
  592. package/dist/service/s3/sim-s3-tagging-operations.d.ts +21 -0
  593. package/dist/service/s3/sim-s3-tagging-operations.js +25 -0
  594. package/dist/service/s3/sim-s3.d.ts +12 -0
  595. package/dist/service/s3/sim-s3.js +13 -0
  596. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.d.ts +34 -0
  597. package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.js +34 -0
  598. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.d.ts +9 -0
  599. package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.js +24 -0
  600. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +5 -4
  601. package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +5 -3
  602. package/dist/service/s3/upload/sim-s3-completed-upload.js +5 -1
  603. package/dist/service/s3/upload/sim-s3-multipart-upload.d.ts +18 -0
  604. package/dist/service/s3/upload/sim-s3-multipart-upload.js +8 -0
  605. package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +6 -0
  606. package/dist/service/s3/upload/sim-s3-multipart-uploads.js +5 -0
  607. package/dist/util/background/background-clock-waits.d.ts +52 -0
  608. package/dist/util/background/background-clock-waits.js +76 -0
  609. package/dist/util/background/background-jitter.js +1 -0
  610. package/dist/util/background/background-pending-tasks.d.ts +55 -0
  611. package/dist/util/background/background-pending-tasks.js +117 -0
  612. package/dist/util/background/background-settled-tasks.d.ts +4 -1
  613. package/dist/util/background/background-settled-tasks.js +4 -1
  614. package/dist/util/background/background.d.ts +43 -0
  615. package/dist/util/background/background.js +27 -19
  616. package/dist/util/background/non-deterministic-background.d.ts +12 -0
  617. package/dist/util/background/non-deterministic-background.js +24 -20
  618. package/dist/util/clock/sim-clock-control.js +23 -2
  619. package/docs/services/apigateway/README.md +3 -1
  620. package/docs/services/athena/README.md +126 -3
  621. package/docs/services/cloudformation/README.md +775 -65
  622. package/docs/services/cognito/README.md +5 -0
  623. package/docs/services/dynamodb/README.md +86 -11
  624. package/docs/services/lambda/README.md +603 -39
  625. package/docs/services/s3/README.md +688 -57
  626. package/package.json +7 -1
@@ -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
+ }
@@ -4,6 +4,14 @@ interface SimCfnStackUpdateLifecycleProperties {
4
4
  readonly background: BackgroundScheduler;
5
5
  readonly stackName: SimCloudFormationStackName;
6
6
  }
7
+ /**
8
+ * The two halves of one Stack update: applying the new template, and putting
9
+ * the Stack back the way it was if that fails.
10
+ */
11
+ export interface SimCfnStackUpdateWork {
12
+ readonly apply: () => Promise<void>;
13
+ readonly rollBack: () => Promise<void>;
14
+ }
7
15
  /**
8
16
  * Owns the simulated CloudFormation Stack update lifecycle state.
9
17
  *
@@ -21,7 +29,9 @@ export declare class SimCfnStackUpdateLifecycle {
21
29
  private readonly background;
22
30
  private readonly stackName;
23
31
  private completePromise;
32
+ private rollbackPromise;
24
33
  private updateError;
34
+ private rollbackError;
25
35
  constructor(properties: SimCfnStackUpdateLifecycleProperties);
26
36
  /**
27
37
  * The current Stack update status, or undefined if the Stack has never been
@@ -30,14 +40,13 @@ export declare class SimCfnStackUpdateLifecycle {
30
40
  get status(): SimCloudFormationStackStatus | undefined;
31
41
  /**
32
42
  * The error captured during a background update, if any.
33
- */
34
- get error(): Error | undefined;
35
- /**
36
- * Refuse an update while one is already running.
37
43
  *
38
- * CloudFormation takes one update at a time, and a second here would read
39
- * the difference to apply from a Stack half way through the first.
44
+ * A rollback that failed answers with its own failure, because that is what
45
+ * the Stack is left in UPDATE_ROLLBACK_FAILED by and what has to be dealt
46
+ * with before the Stack works again.
40
47
  */
48
+ get error(): Error | undefined;
49
+ /** Refuse an update while one is already running, or being rolled back. */
41
50
  assertNotUpdating(): void;
42
51
  /**
43
52
  * Start the Stack update lifecycle.
@@ -46,17 +55,19 @@ export declare class SimCfnStackUpdateLifecycle {
46
55
  * and deletion do. The Resource work continues in the background, so callers
47
56
  * that need the final state should use waitForComplete().
48
57
  *
49
- * An update that fails leaves the Stack in UPDATE_FAILED with the reason on
50
- * it. Sim CloudFormation does not roll the Stack back to the template it was
51
- * deployed from, so the Stack is left holding whatever the update managed.
58
+ * An update that fails is rolled back. The Stack moves to
59
+ * UPDATE_ROLLBACK_IN_PROGRESS with the reason on it, the rollback is
60
+ * scheduled as an operation of its own, and the Stack settles in
61
+ * UPDATE_ROLLBACK_COMPLETE, or in UPDATE_ROLLBACK_FAILED if the rollback
62
+ * could not finish either.
52
63
  */
53
- update(runUpdate: () => Promise<void>): Promise<void>;
64
+ update(work: SimCfnStackUpdateWork): Promise<void>;
54
65
  /**
55
- * Wait for the scheduled update to finish.
66
+ * Wait for the scheduled update to finish, rollback included.
56
67
  *
57
- * If the update failed, this rethrows the captured error, so a caller can see
58
- * what stopped the new template being applied. A Stack that was never updated
59
- * has nothing to wait for.
68
+ * If the update failed, this rethrows the captured error once the Stack has
69
+ * settled, so a caller can see what stopped the new template being applied.
70
+ * A Stack that was never updated has nothing to wait for.
60
71
  */
61
72
  waitForComplete(): Promise<void>;
62
73
  }
@@ -1,5 +1,5 @@
1
- import { SimCloudFormationValidationError } from "../../error/sim-cloudformation.error.js";
2
1
  import { SimCfnStackOperationScheduler } from "../sim-cfn-stack-operation-scheduler.js";
2
+ import { assertSimCfnStackNotUpdating } from "./sim-cfn-stack-update-guard.js";
3
3
  /**
4
4
  * Owns the simulated CloudFormation Stack update lifecycle state.
5
5
  *
@@ -17,7 +17,9 @@ export class SimCfnStackUpdateLifecycle {
17
17
  stackName;
18
18
  #status;
19
19
  completePromise;
20
+ rollbackPromise;
20
21
  updateError;
22
+ rollbackError;
21
23
  constructor(properties) {
22
24
  this.background = properties.background;
23
25
  this.stackName = properties.stackName;
@@ -31,20 +33,17 @@ export class SimCfnStackUpdateLifecycle {
31
33
  }
32
34
  /**
33
35
  * The error captured during a background update, if any.
36
+ *
37
+ * A rollback that failed answers with its own failure, because that is what
38
+ * the Stack is left in UPDATE_ROLLBACK_FAILED by and what has to be dealt
39
+ * with before the Stack works again.
34
40
  */
35
41
  get error() {
36
- return this.updateError;
42
+ return this.rollbackError ?? this.updateError;
37
43
  }
38
- /**
39
- * Refuse an update while one is already running.
40
- *
41
- * CloudFormation takes one update at a time, and a second here would read
42
- * the difference to apply from a Stack half way through the first.
43
- */
44
+ /** Refuse an update while one is already running, or being rolled back. */
44
45
  assertNotUpdating() {
45
- if (this.#status === "UPDATE_IN_PROGRESS") {
46
- throw new SimCloudFormationValidationError(`Stack ${this.stackName} is in UPDATE_IN_PROGRESS state and can not be updated`);
47
- }
46
+ assertSimCfnStackNotUpdating(this.stackName, this.#status);
48
47
  }
49
48
  /**
50
49
  * Start the Stack update lifecycle.
@@ -53,40 +52,58 @@ export class SimCfnStackUpdateLifecycle {
53
52
  * and deletion do. The Resource work continues in the background, so callers
54
53
  * that need the final state should use waitForComplete().
55
54
  *
56
- * An update that fails leaves the Stack in UPDATE_FAILED with the reason on
57
- * it. Sim CloudFormation does not roll the Stack back to the template it was
58
- * deployed from, so the Stack is left holding whatever the update managed.
55
+ * An update that fails is rolled back. The Stack moves to
56
+ * UPDATE_ROLLBACK_IN_PROGRESS with the reason on it, the rollback is
57
+ * scheduled as an operation of its own, and the Stack settles in
58
+ * UPDATE_ROLLBACK_COMPLETE, or in UPDATE_ROLLBACK_FAILED if the rollback
59
+ * could not finish either.
59
60
  */
60
- async update(runUpdate) {
61
+ async update(work) {
61
62
  this.#status = "UPDATE_IN_PROGRESS";
62
63
  this.updateError = undefined;
64
+ this.rollbackError = undefined;
65
+ this.rollbackPromise = undefined;
63
66
  const scheduler = new SimCfnStackOperationScheduler({
64
67
  background: this.background,
65
68
  failureMessage: "Sim CloudFormation Stack update failed",
66
69
  });
67
70
  await scheduler.sequence();
68
71
  this.completePromise = scheduler.schedule({
69
- operation: runUpdate,
72
+ operation: work.apply,
70
73
  onSuccess: () => {
71
74
  this.#status = "UPDATE_COMPLETE";
72
75
  },
73
76
  onFailure: (error) => {
74
- this.#status = "UPDATE_FAILED";
77
+ this.#status = "UPDATE_ROLLBACK_IN_PROGRESS";
75
78
  this.updateError = error;
79
+ // Scheduled rather than run where the failure was caught, so the Stack
80
+ // is visibly rolling back while it happens, the way it is visibly
81
+ // updating while the update happens.
82
+ this.rollbackPromise = scheduler.schedule({
83
+ operation: work.rollBack,
84
+ onSuccess: () => {
85
+ this.#status = "UPDATE_ROLLBACK_COMPLETE";
86
+ },
87
+ onFailure: (failure) => {
88
+ this.#status = "UPDATE_ROLLBACK_FAILED";
89
+ this.rollbackError = failure;
90
+ },
91
+ });
76
92
  },
77
93
  });
78
94
  }
79
95
  /**
80
- * Wait for the scheduled update to finish.
96
+ * Wait for the scheduled update to finish, rollback included.
81
97
  *
82
- * If the update failed, this rethrows the captured error, so a caller can see
83
- * what stopped the new template being applied. A Stack that was never updated
84
- * has nothing to wait for.
98
+ * If the update failed, this rethrows the captured error once the Stack has
99
+ * settled, so a caller can see what stopped the new template being applied.
100
+ * A Stack that was never updated has nothing to wait for.
85
101
  */
86
102
  async waitForComplete() {
87
- if (this.completePromise !== undefined) {
88
- await this.completePromise;
89
- }
103
+ // Awaiting nothing is how a Stack that was never updated, and one that was
104
+ // never rolled back, wait for the operation they never had.
105
+ await this.completePromise;
106
+ await this.rollbackPromise;
90
107
  if (this.updateError !== undefined) {
91
108
  throw this.updateError;
92
109
  }
@@ -35,6 +35,15 @@ export declare class SimCfnStackUpdatePlan {
35
35
  readonly creations: readonly SimCfnResource[];
36
36
  readonly updated: ReadonlyMap<string, SimCfnResource>;
37
37
  constructor(properties: SimCfnStackUpdatePlanProperties);
38
+ /**
39
+ * For each logical ID the update is replacing, whether the definition taking
40
+ * its place says to keep the deployed Resource.
41
+ *
42
+ * The new half answers it because CloudFormation reads UpdateReplacePolicy
43
+ * off the template it is applying. An update that adds the attribute keeps
44
+ * the Resource it replaces, and one that drops it deletes that Resource.
45
+ */
46
+ replacementRetentions(): ReadonlyMap<string, boolean>;
38
47
  /**
39
48
  * Whether the update changes any Resource at all.
40
49
  *
@@ -56,6 +56,20 @@ export class SimCfnStackUpdatePlan {
56
56
  })
57
57
  .toArray();
58
58
  }
59
+ /**
60
+ * For each logical ID the update is replacing, whether the definition taking
61
+ * its place says to keep the deployed Resource.
62
+ *
63
+ * The new half answers it because CloudFormation reads UpdateReplacePolicy
64
+ * off the template it is applying. An update that adds the attribute keeps
65
+ * the Resource it replaces, and one that drops it deletes that Resource.
66
+ */
67
+ replacementRetentions() {
68
+ return new Map(this.replacements.map(({ current, updated }) => [
69
+ current.logicalId,
70
+ updated.retainedOnReplace,
71
+ ]));
72
+ }
59
73
  /**
60
74
  * Whether the update changes any Resource at all.
61
75
  *
@@ -2,6 +2,7 @@ import { SimCloudFormationValidationError } from "../../error/sim-cloudformation
2
2
  import { makeSimCfnStackResourceMap } from "../resource-map/sim-cfn-stack-resource-map.js";
3
3
  import { SimCfnStackUpdatePlan } from "./sim-cfn-stack-update-plan.js";
4
4
  import { simCfnStackTemplateChanged } from "./sim-cfn-stack-template-changes.js";
5
+ import { SimCfnResourceRetention } from "../../resource/delete/sim-cfn-resource-retention.js";
5
6
  /**
6
7
  * What CloudFormation answers an update that would change nothing.
7
8
  *
@@ -58,8 +59,12 @@ export class SimCfnStackUpdater {
58
59
  const { resources, operations } = this.properties;
59
60
  const { plan } = this;
60
61
  await operations.assertUpdatesAllowed(resources, plan.updated, plan.replacements);
61
- await operations.delete(resources, plan.deletions);
62
+ await operations.delete(resources, plan.deletions, new SimCfnResourceRetention({ replaced: plan.replacementRetentions() }));
62
63
  plan.applyTo(resources);
64
+ // Once the Stack has stopped holding them, and before the replacements are
65
+ // created. An update that keeps a Resource and then fails to create the one
66
+ // taking its place still reports what it kept.
67
+ operations.recordRetained(plan.deletions.filter((resource) => resource.retained));
63
68
  await operations.create(resources, plan.creations);
64
69
  }
65
70
  }