@kensio/yulin 1.20.16 → 1.21.0

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 (437) hide show
  1. package/dist/service/athena/engine/sim-athena-comparison-shims.d.ts +13 -0
  2. package/dist/service/athena/engine/sim-athena-comparison-shims.js +68 -0
  3. package/dist/service/athena/engine/sim-athena-shims.js +2 -0
  4. package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
  5. package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
  6. package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +17 -6
  7. package/dist/service/aws/caller/sim-aws-caller-resolver.js +21 -26
  8. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +6 -0
  9. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
  10. package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +6 -0
  11. package/dist/service/aws/factory/sim-aws-account-service-cache.js +5 -1
  12. package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
  13. package/dist/service/aws/factory/sim-aws-service-factory.js +9 -1
  14. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
  15. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
  16. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  17. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
  18. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
  19. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
  20. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
  21. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
  22. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
  23. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  24. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
  25. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
  26. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +16 -0
  27. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.d.ts +24 -0
  28. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.js +31 -0
  29. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
  30. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
  31. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
  32. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
  33. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
  34. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
  35. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
  36. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
  37. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
  38. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
  39. package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
  40. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
  41. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +16 -0
  42. package/dist/service/cloudfront/cache/sim-cf-accept-encoding.d.ts +11 -0
  43. package/dist/service/cloudfront/cache/sim-cf-accept-encoding.js +27 -0
  44. package/dist/service/cloudfront/cache/sim-cf-cache-control.d.ts +28 -0
  45. package/dist/service/cloudfront/cache/sim-cf-cache-control.js +49 -0
  46. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.d.ts +11 -0
  47. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.js +22 -0
  48. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.d.ts +32 -0
  49. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.js +112 -0
  50. package/dist/service/cloudfront/cache/sim-cf-cache-status.d.ts +27 -0
  51. package/dist/service/cloudfront/cache/sim-cf-cache-status.js +53 -0
  52. package/dist/service/cloudfront/cache/sim-cf-cache-ttl.d.ts +28 -0
  53. package/dist/service/cloudfront/cache/sim-cf-cache-ttl.js +50 -0
  54. package/dist/service/cloudfront/cache/sim-cf-cacheable-request.d.ts +35 -0
  55. package/dist/service/cloudfront/cache/sim-cf-cacheable-request.js +32 -0
  56. package/dist/service/cloudfront/cache/sim-cf-distribution-cache.d.ts +57 -0
  57. package/dist/service/cloudfront/cache/sim-cf-distribution-cache.js +115 -0
  58. package/dist/service/cloudfront/cache/sim-cf-edge.d.ts +37 -0
  59. package/dist/service/cloudfront/cache/sim-cf-edge.js +34 -0
  60. package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.d.ts +36 -0
  61. package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.js +28 -0
  62. package/dist/service/cloudfront/cache/sim-cf-http-date.d.ts +15 -0
  63. package/dist/service/cloudfront/cache/sim-cf-http-date.js +40 -0
  64. package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.d.ts +63 -0
  65. package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.js +70 -0
  66. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
  67. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
  68. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +35 -0
  69. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +49 -0
  70. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +33 -0
  71. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +132 -0
  72. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
  73. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
  74. package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
  75. package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
  76. package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
  77. package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
  78. package/dist/service/cloudfront/cff/sim-cff-search-distribution.fixture.js +4 -0
  79. package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
  80. package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
  81. package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
  82. package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
  83. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +28 -0
  84. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +71 -0
  85. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
  86. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
  87. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.d.ts +10 -0
  88. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.js +50 -0
  89. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.d.ts +28 -0
  90. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.js +29 -0
  91. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.d.ts +16 -0
  92. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.js +23 -0
  93. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.d.ts → sim-cfn-cf-distro-behavior-policies.d.ts} +9 -7
  94. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +12 -37
  95. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
  96. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
  97. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
  98. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +35 -0
  99. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.d.ts +28 -0
  100. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.js +46 -0
  101. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.d.ts +24 -0
  102. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.js +32 -0
  103. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.d.ts +10 -0
  104. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.js +51 -0
  105. package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.d.ts +22 -0
  106. package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.js +54 -0
  107. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +2 -0
  108. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +22 -0
  109. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +2 -0
  110. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +4 -0
  111. package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
  112. package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
  113. package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
  114. package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
  115. package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
  116. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
  117. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
  118. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
  119. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
  120. package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
  121. package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
  122. package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
  123. package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
  124. package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
  125. package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
  126. package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.d.ts +28 -0
  127. package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.js +59 -0
  128. package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.d.ts +19 -0
  129. package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.js +32 -0
  130. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.d.ts +36 -0
  131. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.js +45 -0
  132. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.d.ts +80 -0
  133. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.js +1 -0
  134. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.d.ts +39 -0
  135. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.js +35 -0
  136. package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.d.ts +23 -0
  137. package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.js +39 -0
  138. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +4 -0
  139. package/dist/service/cloudfront/controller/content/sim-cf-content-stage.d.ts +51 -0
  140. package/dist/service/cloudfront/controller/content/sim-cf-content-stage.js +65 -0
  141. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.d.ts +2 -3
  142. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +4 -4
  143. package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.d.ts +4 -0
  144. package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.js +12 -8
  145. package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.d.ts +2 -2
  146. package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.js +2 -2
  147. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts +6 -6
  148. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +35 -20
  149. package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.d.ts +23 -5
  150. package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.js +8 -0
  151. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
  152. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
  153. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.d.ts +18 -0
  154. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.js +30 -0
  155. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +30 -0
  156. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +44 -0
  157. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
  158. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +9 -3
  159. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
  160. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
  161. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +4 -0
  162. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +8 -2
  163. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
  164. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
  165. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.d.ts +13 -3
  166. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.js +27 -6
  167. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
  168. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
  169. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.d.ts +3 -1
  170. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.js +4 -1
  171. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +7 -3
  172. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +4 -0
  173. package/dist/service/cloudfront/distribution/sim-cf-distribution-view.js +1 -1
  174. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +25 -2
  175. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +24 -0
  176. package/dist/service/cloudfront/error/sim-cf-invalidation.error.d.ts +22 -0
  177. package/dist/service/cloudfront/error/sim-cf-invalidation.error.js +26 -0
  178. package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.d.ts +22 -0
  179. package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.js +26 -0
  180. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
  181. package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
  182. package/dist/service/cloudfront/index.d.ts +2 -0
  183. package/dist/service/cloudfront/index.js +1 -0
  184. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.d.ts +22 -0
  185. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.js +32 -0
  186. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.d.ts +43 -0
  187. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.js +33 -0
  188. package/dist/service/cloudfront/invalidation/sim-cf-invalidation.d.ts +55 -0
  189. package/dist/service/cloudfront/invalidation/sim-cf-invalidation.js +56 -0
  190. package/dist/service/cloudfront/invalidation/sim-cf-invalidations.d.ts +41 -0
  191. package/dist/service/cloudfront/invalidation/sim-cf-invalidations.js +58 -0
  192. package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.d.ts +15 -0
  193. package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.js +23 -0
  194. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
  195. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
  196. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.d.ts +19 -0
  197. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.js +116 -0
  198. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +15 -5
  199. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +13 -8
  200. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.js +8 -5
  201. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.d.ts +13 -0
  202. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +8 -0
  203. package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.d.ts +24 -0
  204. package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.js +21 -0
  205. package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.d.ts +57 -0
  206. package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.js +129 -0
  207. package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.d.ts +30 -0
  208. package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.js +121 -0
  209. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.d.ts +56 -0
  210. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.js +67 -0
  211. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.d.ts +38 -0
  212. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.js +51 -0
  213. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.d.ts +32 -0
  214. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.js +30 -0
  215. package/dist/service/cloudfront/registry/sim-cloud-front-registry.d.ts +25 -0
  216. package/dist/service/cloudfront/registry/sim-cloud-front-registry.js +23 -0
  217. package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +24 -0
  218. package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
  219. package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
  220. package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
  221. package/dist/service/cloudfront/sim-cf-etag.js +10 -0
  222. package/dist/service/cloudfront/sim-cloudfront-caching.d.ts +31 -0
  223. package/dist/service/cloudfront/sim-cloudfront-caching.js +38 -0
  224. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +20 -12
  225. package/dist/service/cloudfront/sim-cloudfront-commands.js +20 -17
  226. package/dist/service/cloudfront/sim-cloudfront-distributions.d.ts +21 -0
  227. package/dist/service/cloudfront/sim-cloudfront-distributions.js +23 -0
  228. package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.d.ts +30 -0
  229. package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.js +35 -0
  230. package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +60 -0
  231. package/dist/service/cloudfront/sim-cloudfront-policies.js +75 -0
  232. package/dist/service/cloudfront/sim-cloudfront.d.ts +24 -44
  233. package/dist/service/cloudfront/sim-cloudfront.js +37 -58
  234. package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
  235. package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
  236. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
  237. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
  238. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
  239. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
  240. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
  241. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
  242. package/dist/service/ecr/sim-ecr.d.ts +7 -0
  243. package/dist/service/ecr/sim-ecr.js +16 -4
  244. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
  245. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
  246. package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
  247. package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
  248. package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
  249. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
  250. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
  251. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
  252. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
  253. package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
  254. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
  255. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
  256. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
  257. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
  258. package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
  259. package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
  260. package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
  261. package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
  262. package/dist/service/firehose/source/sim-firehose-source.js +5 -0
  263. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
  264. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
  265. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
  266. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
  267. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +34 -2
  268. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +34 -2
  269. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
  270. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
  271. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
  272. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
  273. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +9 -3
  274. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +5 -3
  275. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +9 -71
  276. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +2 -1
  277. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +89 -0
  278. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
  279. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +11 -3
  280. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +20 -8
  281. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
  282. package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
  283. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
  284. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
  285. package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +14 -5
  286. package/dist/service/iam/authorize/sim-iam-account-auth-z.js +6 -4
  287. package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +3 -1
  288. package/dist/service/iam/authorize/sim-iam-authorizer.js +2 -1
  289. package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
  290. package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
  291. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
  292. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
  293. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
  294. package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
  295. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
  296. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
  297. package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
  298. package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
  299. package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
  300. package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
  301. package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
  302. package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
  303. package/dist/service/iam/error/sim-iam.error.js +13 -0
  304. package/dist/service/iam/index.d.ts +1 -0
  305. package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
  306. package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
  307. package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
  308. package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
  309. package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +3 -1
  310. package/dist/service/iam/sim-iam-account-parts.d.ts +8 -0
  311. package/dist/service/iam/sim-iam-account-parts.js +1 -0
  312. package/dist/service/iam/sim-iam.d.ts +12 -2
  313. package/dist/service/iam/sim-iam.js +12 -0
  314. package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
  315. package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
  316. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
  317. package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
  318. package/dist/service/kms/command/sim-kms-request-options.d.ts +15 -0
  319. package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
  320. package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
  321. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
  322. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
  323. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
  324. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
  325. package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
  326. package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
  327. package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
  328. package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
  329. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
  330. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
  331. package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
  332. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
  333. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
  334. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
  335. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
  336. package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
  337. package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
  338. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
  339. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
  340. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
  341. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
  342. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
  343. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
  344. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
  345. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
  346. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
  347. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
  348. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
  349. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
  350. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
  351. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts +6 -4
  352. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js +13 -4
  353. package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.d.ts +23 -0
  354. package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.js +28 -0
  355. package/dist/service/logs/sim-logs-commands.d.ts +3 -0
  356. package/dist/service/logs/sim-logs-commands.js +4 -0
  357. package/dist/service/logs/sim-logs.js +6 -1
  358. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
  359. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
  360. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
  361. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
  362. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
  363. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
  364. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
  365. package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
  366. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
  367. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
  368. package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
  369. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
  370. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
  371. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
  372. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
  373. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
  374. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
  375. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
  376. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
  377. package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
  378. package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
  379. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
  380. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
  381. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
  382. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
  383. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +11 -12
  384. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
  385. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
  386. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
  387. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +13 -8
  388. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +13 -8
  389. package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
  390. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
  391. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
  392. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
  393. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
  394. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
  395. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
  396. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
  397. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
  398. package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
  399. package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
  400. package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
  401. package/dist/service/stepfunctions/sim-step-functions.js +26 -9
  402. package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +5 -0
  403. package/dist/service/sts/command/assume-role/assume-role.handler.js +1 -0
  404. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +5 -0
  405. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +1 -0
  406. package/dist/service/sts/sim-sts.d.ts +9 -0
  407. package/dist/service/sts/sim-sts.js +4 -0
  408. package/dist/util/memo/bounded-memo.d.ts +36 -0
  409. package/dist/util/memo/bounded-memo.js +58 -0
  410. package/docs/sdk/README.md +3 -1
  411. package/docs/services/athena/README.md +7 -1
  412. package/docs/services/cloudformation/README.md +197 -11
  413. package/docs/services/cloudfront/README.md +1116 -14
  414. package/docs/services/cloudwatch/README.md +6 -4
  415. package/docs/services/cognito/README.md +8 -7
  416. package/docs/services/dynamodb/README.md +6 -5
  417. package/docs/services/ecs/README.md +23 -9
  418. package/docs/services/elbv2/README.md +6 -2
  419. package/docs/services/eventbridge/README.md +9 -1
  420. package/docs/services/firehose/README.md +9 -3
  421. package/docs/services/glue/README.md +6 -0
  422. package/docs/services/iam/README.md +322 -27
  423. package/docs/services/kinesis/README.md +3 -2
  424. package/docs/services/kms/README.md +11 -2
  425. package/docs/services/lambda/README.md +76 -2
  426. package/docs/services/logs/README.md +22 -2
  427. package/docs/services/s3/README.md +7 -2
  428. package/docs/services/scheduler/README.md +12 -4
  429. package/docs/services/secretsmanager/README.md +6 -3
  430. package/docs/services/ses/README.md +3 -1
  431. package/docs/services/sns/README.md +5 -5
  432. package/docs/services/sqs/README.md +5 -5
  433. package/docs/services/ssm/README.md +35 -18
  434. package/docs/services/stepfunctions/README.md +11 -2
  435. package/docs/services/wafv2/README.md +5 -3
  436. package/package.json +1 -1
  437. package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
@@ -0,0 +1,13 @@
1
+ import type { DatabaseSync } from "node:sqlite";
2
+ /**
3
+ * Trino's `least` and `greatest`.
4
+ *
5
+ * SQLite carries both already, as the two argument and wider forms of `min`
6
+ * and `max`. A rewrite renaming the call would reach the same words written
7
+ * inside a string literal. SQLite resolves a shim by the name the statement
8
+ * wrote, and the ordering is done here.
9
+ *
10
+ * Trino answers null where any argument is null, and SQLite's own `min` and
11
+ * `max` answer the same way.
12
+ */
13
+ export declare function simAthenaInstallComparisonShims(database: DatabaseSync): void;
@@ -0,0 +1,68 @@
1
+ import { SimAthenaSetUpError } from "../error/sim-athena.error.js";
2
+ import { simAthenaScalarShim } from "./sim-athena-shim-registry.js";
3
+ /**
4
+ * Trino's `least` and `greatest`.
5
+ *
6
+ * SQLite carries both already, as the two argument and wider forms of `min`
7
+ * and `max`. A rewrite renaming the call would reach the same words written
8
+ * inside a string literal. SQLite resolves a shim by the name the statement
9
+ * wrote, and the ordering is done here.
10
+ *
11
+ * Trino answers null where any argument is null, and SQLite's own `min` and
12
+ * `max` answer the same way.
13
+ */
14
+ export function simAthenaInstallComparisonShims(database) {
15
+ simAthenaScalarShim(database, "least", (...values) => extremeOf(values, -1));
16
+ simAthenaScalarShim(database, "greatest", (...values) => extremeOf(values, 1));
17
+ }
18
+ /**
19
+ * The argument at one end of the ordering, taking -1 for the low end.
20
+ *
21
+ * Trino takes two arguments at least. SQLite hands over whatever the call
22
+ * wrote, and a call carrying none of them answers null.
23
+ */
24
+ function extremeOf(values, wanted) {
25
+ if (values.length === 0 || values.includes(null)) {
26
+ return null;
27
+ }
28
+ return values.reduce((held, value) => ordering(value, held) === wanted ? value : held);
29
+ }
30
+ /**
31
+ * How two arguments order, as -1, 0 or 1.
32
+ *
33
+ * Numbers order numerically and everything else orders by its text. SQLite's
34
+ * own `min` and `max` order the same pair the same way. Trino refuses a call
35
+ * mixing types. None of the shims here check types, and a mixed call is
36
+ * ordered as text.
37
+ */
38
+ function ordering(one, other) {
39
+ if (isNumeric(one) && isNumeric(other)) {
40
+ return signOf(one < other, one > other);
41
+ }
42
+ const left = comparableText(one);
43
+ const right = comparableText(other);
44
+ return signOf(left < right, left > right);
45
+ }
46
+ /** One comparison read back as -1, 0 or 1. */
47
+ function signOf(below, above) {
48
+ if (below) {
49
+ return -1;
50
+ }
51
+ return above ? 1 : 0;
52
+ }
53
+ function isNumeric(value) {
54
+ return typeof value === "number" || typeof value === "bigint";
55
+ }
56
+ /**
57
+ * One argument as the text it orders by.
58
+ *
59
+ * A `varbinary` orders by its bytes in Trino, and nothing written out here
60
+ * orders the same way. A call over one raises and the query falls back to its
61
+ * declared result.
62
+ */
63
+ function comparableText(value) {
64
+ if (value instanceof Uint8Array) {
65
+ throw new SimAthenaSetUpError("least and greatest take numbers or text rather than a varbinary");
66
+ }
67
+ return String(value);
68
+ }
@@ -2,6 +2,7 @@ import { simAthenaInstallAggregateShims } from "./sim-athena-aggregate-shims.js"
2
2
  import { simAthenaInstallArrayShims } from "./sim-athena-array-shims.js";
3
3
  import { simAthenaInstallBinaryShims } from "./sim-athena-binary-shims.js";
4
4
  import { simAthenaInstallClockShims } from "./sim-athena-clock-shims.js";
5
+ import { simAthenaInstallComparisonShims } from "./sim-athena-comparison-shims.js";
5
6
  import { simAthenaInstallDateArithmeticShims } from "./sim-athena-date-arithmetic-shims.js";
6
7
  import { simAthenaInstallDateShims } from "./sim-athena-date-shims.js";
7
8
  import { simAthenaInstallJsonDocumentShims } from "./sim-athena-json-document-shims.js";
@@ -29,4 +30,5 @@ export function simAthenaInstallShims(database, startedAt) {
29
30
  simAthenaInstallRegexpShims(database);
30
31
  simAthenaInstallUrlShims(database);
31
32
  simAthenaInstallAggregateShims(database);
33
+ simAthenaInstallComparisonShims(database);
32
34
  }
@@ -0,0 +1,23 @@
1
+ import type { SimAwsPrincipal } from "./sim-aws-caller.js";
2
+ import { type SimAwsRunAsOwner } from "./sim-aws-run-as-context.js";
3
+ /**
4
+ * Where a call that names no caller of its own looks for one first.
5
+ *
6
+ * A `SimAws.runAs` block is what sets an ambient caller today. Asking through
7
+ * this interface keeps the resolver clear of Node.js asynchronous context
8
+ * tracking, and leaves room for the other thing that will set one, a simulated
9
+ * Lambda invocation running under an execution role.
10
+ */
11
+ export interface SimAwsAmbientCaller {
12
+ /**
13
+ * The caller ambient where the call is being made, if there is one.
14
+ */
15
+ currentCaller(): SimAwsPrincipal | undefined;
16
+ }
17
+ /**
18
+ * The ambient caller of the `runAs` block one simulation is inside.
19
+ *
20
+ * Only that simulation's own runs count. Each SimAws instance is its own
21
+ * simulated universe, so a `runAs` on one never decides what another observes.
22
+ */
23
+ export declare function simAwsRunAsAmbientCaller(owner: SimAwsRunAsOwner): SimAwsAmbientCaller;
@@ -0,0 +1,12 @@
1
+ import { simAwsRunAsContext, } from "./sim-aws-run-as-context.js";
2
+ /**
3
+ * The ambient caller of the `runAs` block one simulation is inside.
4
+ *
5
+ * Only that simulation's own runs count. Each SimAws instance is its own
6
+ * simulated universe, so a `runAs` on one never decides what another observes.
7
+ */
8
+ export function simAwsRunAsAmbientCaller(owner) {
9
+ return {
10
+ currentCaller: () => simAwsRunAsContext.currentCaller(owner),
11
+ };
12
+ }
@@ -1,3 +1,4 @@
1
+ import type { SimAwsAmbientCaller } from "./sim-aws-ambient-caller.js";
1
2
  import type { SimAwsCaller, SimAwsDefaultCaller, SimAwsPrincipal, SimCredentialCaller } from "./sim-aws-caller.js";
2
3
  import type { SimIamCredentialIdentity } from "../../iam/credential/sim-aws-credentials.js";
3
4
  export interface SimAwsCredentialIdentityResolver {
@@ -33,25 +34,35 @@ export interface SimAwsCallerResolverProperties {
33
34
  * default caller keeps the Account root fallback.
34
35
  */
35
36
  readonly defaultCaller?: SimAwsDefaultCaller | undefined;
37
+ /**
38
+ * Where a request naming no caller looks before the default.
39
+ *
40
+ * A `runAs` block says who is making the calls inside it, which is more
41
+ * specific than what a simulation holds for its unattributed calls
42
+ * generally, so it is consulted first.
43
+ */
44
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
36
45
  }
37
46
  /**
38
47
  * Resolves caller input at a simulated AWS operation boundary.
39
48
  *
40
- * An omitted caller resolves to the simulation's default caller, and to the
41
- * supplied operation default where there is none. Explicit anonymity is
42
- * preserved. Credential callers are authenticated before a resolved caller is
43
- * returned, and a caller already resolved elsewhere is taken as it stands.
49
+ * An omitted caller resolves to the ambient caller of the `runAs` block the
50
+ * call is inside, then to the simulation's default caller, and to the supplied
51
+ * operation default where there is neither. Explicit anonymity is preserved.
52
+ * Credential callers are authenticated before a resolved caller is returned,
53
+ * and a caller already resolved elsewhere is taken as it stands.
44
54
  */
45
55
  export declare class SimAwsCallerResolver {
46
56
  private readonly credentialIdentityResolver?;
47
57
  private readonly defaultCaller?;
58
+ private readonly ambientCaller?;
48
59
  constructor(properties?: SimAwsCallerResolverProperties);
49
60
  /**
50
61
  * Resolve and normalize a simulated AWS caller.
51
62
  *
52
63
  * The request's own caller is used where it has one. A request without one
53
- * falls back to the simulation's default caller, and then to the operation
54
- * default the call site supplies.
64
+ * falls back to the ambient `runAs` caller, then to the simulation's default
65
+ * caller, and then to the operation default the call site supplies.
55
66
  */
56
67
  resolve(caller: SimAwsCaller | undefined, defaultPrincipal: SimAwsPrincipal): SimAwsResolvedCaller;
57
68
  private normalized;
@@ -2,27 +2,30 @@ import { assertDefined } from "../../../util/type-guard/defined.js";
2
2
  /**
3
3
  * Resolves caller input at a simulated AWS operation boundary.
4
4
  *
5
- * An omitted caller resolves to the simulation's default caller, and to the
6
- * supplied operation default where there is none. Explicit anonymity is
7
- * preserved. Credential callers are authenticated before a resolved caller is
8
- * returned, and a caller already resolved elsewhere is taken as it stands.
5
+ * An omitted caller resolves to the ambient caller of the `runAs` block the
6
+ * call is inside, then to the simulation's default caller, and to the supplied
7
+ * operation default where there is neither. Explicit anonymity is preserved.
8
+ * Credential callers are authenticated before a resolved caller is returned,
9
+ * and a caller already resolved elsewhere is taken as it stands.
9
10
  */
10
11
  export class SimAwsCallerResolver {
11
12
  credentialIdentityResolver;
12
13
  defaultCaller;
14
+ ambientCaller;
13
15
  constructor(properties = {}) {
14
16
  this.credentialIdentityResolver = properties.credentialIdentityResolver;
15
17
  this.defaultCaller = properties.defaultCaller;
18
+ this.ambientCaller = properties.ambientCaller;
16
19
  }
17
20
  /**
18
21
  * Resolve and normalize a simulated AWS caller.
19
22
  *
20
23
  * The request's own caller is used where it has one. A request without one
21
- * falls back to the simulation's default caller, and then to the operation
22
- * default the call site supplies.
24
+ * falls back to the ambient `runAs` caller, then to the simulation's default
25
+ * caller, and then to the operation default the call site supplies.
23
26
  */
24
27
  resolve(caller, defaultPrincipal) {
25
- const stated = caller ?? this.defaultCaller;
28
+ const stated = caller ?? this.ambientCaller?.currentCaller() ?? this.defaultCaller;
26
29
  if (stated?.kind === "resolved") {
27
30
  return this.normalized(stated.principal, stated.identityPolicyPrincipal);
28
31
  }
@@ -35,28 +38,20 @@ export class SimAwsCallerResolver {
35
38
  return this.normalized(principal, principal);
36
39
  }
37
40
  normalized(principal, identityPolicyPrincipal) {
38
- if (principal.kind === "arn") {
39
- const identityPolicyArn = identityPolicyPrincipal.kind === "arn"
40
- ? identityPolicyPrincipal.arn
41
- : undefined;
42
- return {
43
- principal,
44
- identityPolicyPrincipal,
45
- arn: principal.arn,
46
- identityPolicyArn,
47
- accountId: this.accountId(principal.arn),
48
- };
49
- }
41
+ const both = { principal, identityPolicyPrincipal };
50
42
  if (principal.kind === "service") {
51
- return {
52
- principal,
53
- identityPolicyPrincipal,
54
- service: principal.service,
55
- };
43
+ return { ...both, service: principal.service };
44
+ }
45
+ if (principal.kind !== "arn") {
46
+ return both;
56
47
  }
57
48
  return {
58
- principal,
59
- identityPolicyPrincipal,
49
+ ...both,
50
+ arn: principal.arn,
51
+ identityPolicyArn: identityPolicyPrincipal.kind === "arn"
52
+ ? identityPolicyPrincipal.arn
53
+ : undefined,
54
+ accountId: this.accountId(principal.arn),
60
55
  };
61
56
  }
62
57
  /**
@@ -2,6 +2,7 @@ import type { BackgroundCompleter, BackgroundScheduler } from "../../../util/bac
2
2
  import type { SimAwsAccountRegionContainer } from "../sim-aws-account-region-scope.js";
3
3
  import type { SimAws } from "../sim-aws.js";
4
4
  import type { SimAwsDefaultCaller } from "../caller/sim-aws-caller.js";
5
+ import type { SimAwsAmbientCaller } from "../caller/sim-aws-ambient-caller.js";
5
6
  import { SimCloudFormation } from "../../cloudformation/index.js";
6
7
  import { SimCloudWatch } from "../../cloudwatch/index.js";
7
8
  import { SimCognitoIdentityProvider } from "../../cognito/index.js";
@@ -35,6 +36,10 @@ interface SimAwsAccountRegionServiceBuilderProperties {
35
36
  * The caller this simulation attributes a request naming none to.
36
37
  */
37
38
  readonly defaultCaller?: SimAwsDefaultCaller | undefined;
39
+ /**
40
+ * Where a request naming no caller looks before the default.
41
+ */
42
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
38
43
  }
39
44
  /**
40
45
  * Builder for simulated AWS services scoped to one Account and Region.
@@ -67,6 +72,7 @@ export declare class SimAwsAccountRegionServiceBuilder {
67
72
  private readonly accountServices;
68
73
  private readonly messageLog;
69
74
  private readonly defaultCaller?;
75
+ private readonly ambientCaller?;
70
76
  constructor(properties: SimAwsAccountRegionServiceBuilderProperties);
71
77
  /** Create simulated ACM for an Account Region scope. */
72
78
  /** Create simulated CloudFormation for an Account Region scope. */
@@ -56,6 +56,7 @@ export class SimAwsAccountRegionServiceBuilder {
56
56
  accountServices;
57
57
  messageLog;
58
58
  defaultCaller;
59
+ ambientCaller;
59
60
  constructor(properties) {
60
61
  this.simAws = properties.simAws;
61
62
  this.background = properties.background;
@@ -65,6 +66,7 @@ export class SimAwsAccountRegionServiceBuilder {
65
66
  this.accountServices = properties.accountServices;
66
67
  this.messageLog = properties.messageLog;
67
68
  this.defaultCaller = properties.defaultCaller;
69
+ this.ambientCaller = properties.ambientCaller;
68
70
  }
69
71
  /** Create simulated ACM for an Account Region scope. */
70
72
  /** Create simulated CloudFormation for an Account Region scope. */
@@ -272,6 +274,7 @@ export class SimAwsAccountRegionServiceBuilder {
272
274
  background: this.background,
273
275
  iamResolver: this.iamRegistry,
274
276
  defaultCaller: this.defaultCaller,
277
+ ambientCaller: this.ambientCaller,
275
278
  });
276
279
  }
277
280
  /**
@@ -2,6 +2,7 @@ import type { BackgroundCompleter, BackgroundScheduler } from "../../../util/bac
2
2
  import type { SimAwsAccountRegionContainer } from "../sim-aws-account-region-scope.js";
3
3
  import type { SimAws } from "../sim-aws.js";
4
4
  import type { SimAwsDefaultCaller } from "../caller/sim-aws-caller.js";
5
+ import type { SimAwsAmbientCaller } from "../caller/sim-aws-ambient-caller.js";
5
6
  import type { SimAcmRegistry } from "../../acm/registry/sim-acm-registry.js";
6
7
  import type { SimCloudFrontRegistry } from "../../cloudfront/registry/sim-cloud-front-registry.js";
7
8
  import { SimCloudFront } from "../../cloudfront/sim-cloudfront.js";
@@ -30,6 +31,10 @@ interface SimAwsAccountServiceCacheProperties {
30
31
  * The caller this simulation attributes a request naming none to.
31
32
  */
32
33
  readonly defaultCaller?: SimAwsDefaultCaller | undefined;
34
+ /**
35
+ * Where a request naming no caller looks before the default.
36
+ */
37
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
33
38
  }
34
39
  /**
35
40
  * Account-level cache for simulated AWS service instances.
@@ -61,6 +66,7 @@ export declare class SimAwsAccountServiceCache {
61
66
  private readonly accessKeyRegistry;
62
67
  private readonly scpResolver;
63
68
  private readonly defaultCaller?;
69
+ private readonly ambientCaller?;
64
70
  private readonly route53Registry;
65
71
  private readonly kmsRegistry;
66
72
  private readonly serviceHosts;
@@ -39,6 +39,7 @@ export class SimAwsAccountServiceCache {
39
39
  accessKeyRegistry;
40
40
  scpResolver;
41
41
  defaultCaller;
42
+ ambientCaller;
42
43
  route53Registry;
43
44
  kmsRegistry;
44
45
  serviceHosts;
@@ -59,6 +60,7 @@ export class SimAwsAccountServiceCache {
59
60
  this.iamRegistry = properties.iamRegistry;
60
61
  this.scpResolver = properties.scpResolver;
61
62
  this.defaultCaller = properties.defaultCaller;
63
+ this.ambientCaller = properties.ambientCaller;
62
64
  this.accessKeyRegistry = properties.accessKeyRegistry;
63
65
  this.route53Registry = properties.route53Registry;
64
66
  this.kmsRegistry = properties.kmsRegistry;
@@ -117,8 +119,10 @@ export class SimAwsAccountServiceCache {
117
119
  // the Account, so IAM asks simulated Organizations about it.
118
120
  scpResolver: this.scpResolver,
119
121
  // Who a request naming no caller comes from is decided for the
120
- // whole simulation. Every Account in it applies the same default.
122
+ // whole simulation. Every Account in it applies the same default,
123
+ // and answers to the same run-as block ahead of it.
121
124
  defaultCaller: this.defaultCaller,
125
+ ambientCaller: this.ambientCaller,
122
126
  // Access keys are indexed simulation-wide as they are issued, so a
123
127
  // signed request naming only a key id can be traced to this Account.
124
128
  credentialRegistry: new SimIamCredentialRegistry({
@@ -82,8 +82,10 @@ export class SimAwsRegisteredServiceBuilder {
82
82
  * nothing but that URI, and the function need not be in this scope.
83
83
  */
84
84
  createEcr(scope) {
85
+ const { accountRegionScope, iam } = this.scoped(scope);
85
86
  return new SimEcr({
86
- accountRegionScope: scope.accountRegionScope,
87
+ accountRegionScope,
88
+ iam,
87
89
  registry: this.registries.ecr,
88
90
  });
89
91
  }
@@ -1,3 +1,4 @@
1
+ import { simAwsRunAsAmbientCaller } from "../caller/sim-aws-ambient-caller.js";
1
2
  import { SimCloudFrontRegistry } from "../../cloudfront/registry/sim-cloud-front-registry.js";
2
3
  import { SimIamRegistry } from "../../iam/registry/sim-iam-registry.js";
3
4
  import { SimOrganizations } from "../../organizations/index.js";
@@ -88,6 +89,10 @@ export class SimAwsServiceFactory {
88
89
  registeredServices;
89
90
  selfContainedServices;
90
91
  constructor(properties) {
92
+ // Where a request naming no caller of its own looks before the default.
93
+ // Keyed on the SimAws instance, so a run-as on one simulation decides
94
+ // nothing in another.
95
+ const ambientCaller = simAwsRunAsAmbientCaller(properties.simAws);
91
96
  this.accountServices = new SimAwsAccountServiceCache({
92
97
  simAws: properties.simAws,
93
98
  background: properties.background,
@@ -107,13 +112,16 @@ export class SimAwsServiceFactory {
107
112
  // Simulated IAM applies this wherever a request names no caller of its
108
113
  // own, in place of the Account root it would otherwise be decided as.
109
114
  defaultCaller: properties.defaultCaller,
115
+ ambientCaller,
110
116
  });
111
117
  this.accountRegionServices = new SimAwsAccountRegionServiceBuilder({
112
118
  simAws: properties.simAws,
113
119
  background: properties.background,
114
120
  // STS reports and evaluates the same default. An unattributed
115
- // GetCallerIdentity answers with the principal everything else uses.
121
+ // GetCallerIdentity answers with the principal everything else uses,
122
+ // the ambient run-as caller included.
116
123
  defaultCaller: properties.defaultCaller,
124
+ ambientCaller,
117
125
  registries: this.registries,
118
126
  iamRegistry: this.iamRegistry,
119
127
  lambdaUrlRegistry: this.lambdaUrlRegistry,
@@ -8,6 +8,7 @@ import type { SimCreateStackCommand, SimCreateStackCommandOutput } from "./creat
8
8
  import type { SimCdkOutContext } from "../../cdk/sim-cdk-out-context.js";
9
9
  import type { SimCfnBinding } from "../../bind/sim-cfn-binding.js";
10
10
  import type { SimCfnExports } from "../../export/sim-cfn-exports.js";
11
+ import type { SimCfnResourceOrder } from "../../stack/deploy/sim-cfn-resource-order.js";
11
12
  interface CreateStackCommandHandlerProperties {
12
13
  readonly simAws: SimAws;
13
14
  readonly accountRegionScope: SimAwsAccountRegionScope;
@@ -17,6 +18,8 @@ interface CreateStackCommandHandlerProperties {
17
18
  readonly bindings?: readonly SimCfnBinding[] | undefined;
18
19
  /** The principal the Stack's Resources are created as. */
19
20
  readonly caller?: SimAwsCaller | undefined;
21
+ /** The order Resources with no dependency between them are started in. */
22
+ readonly resourceOrder?: SimCfnResourceOrder | undefined;
20
23
  readonly exports?: SimCfnExports | undefined;
21
24
  }
22
25
  /**
@@ -32,6 +35,7 @@ export declare class CreateStackCommandHandler implements CommandHandler<SimCrea
32
35
  private readonly cdkOutContext;
33
36
  private readonly bindings;
34
37
  private readonly caller;
38
+ private readonly resourceOrder;
35
39
  private readonly exports;
36
40
  constructor(properties: CreateStackCommandHandlerProperties);
37
41
  /**
@@ -17,9 +17,10 @@ export class CreateStackCommandHandler {
17
17
  cdkOutContext;
18
18
  bindings;
19
19
  caller;
20
+ resourceOrder;
20
21
  exports;
21
22
  constructor(properties) {
22
- const { simAws, accountRegionScope, stacks, background, cdkOutContext, bindings, caller, exports, } = properties;
23
+ const { simAws, accountRegionScope, stacks, background, cdkOutContext, bindings, caller, resourceOrder, exports, } = properties;
23
24
  this.simAws = simAws;
24
25
  this.accountRegionScope = accountRegionScope;
25
26
  this.stacks = stacks;
@@ -27,6 +28,7 @@ export class CreateStackCommandHandler {
27
28
  this.cdkOutContext = cdkOutContext;
28
29
  this.bindings = bindings;
29
30
  this.caller = caller;
31
+ this.resourceOrder = resourceOrder;
30
32
  this.exports = exports;
31
33
  }
32
34
  /**
@@ -63,6 +65,7 @@ export class CreateStackCommandHandler {
63
65
  cdkOutContext: this.cdkOutContext,
64
66
  bindings: this.bindings,
65
67
  caller: this.caller,
68
+ resourceOrder: this.resourceOrder,
66
69
  exports: this.exports,
67
70
  });
68
71
  this.stacks.set(stack.stackName, stack);
@@ -27,7 +27,7 @@ export class SimCfnCdkOutDeployer {
27
27
  }
28
28
  async deployStack(stack, plan, deployed) {
29
29
  const { simAws, accountRegionScope } = this.scope;
30
- const { transform, caller, ...options } = cdkOutOptionsFor(stack, plan.stackOptions);
30
+ const { transform, caller, resourceOrder, ...options } = cdkOutOptionsFor(stack, plan.stackOptions);
31
31
  return await simAws
32
32
  .accountRegionScope(accountRegionScope.accountId, stack.regionName)
33
33
  .cloudFormation()
@@ -36,6 +36,7 @@ export class SimCfnCdkOutDeployer {
36
36
  stackName: stack.stackName,
37
37
  ...options,
38
38
  caller: caller ?? plan.caller,
39
+ resourceOrder: resourceOrder ?? plan.resourceOrder,
39
40
  transform: cdkOutBoundTransform(transform, deployed),
40
41
  });
41
42
  }
@@ -2,6 +2,7 @@ import type { AwsRegionName } from "../../aws/sim-aws-region.js";
2
2
  import type { SimAwsCaller } from "../../aws/caller/sim-aws-caller.js";
3
3
  import { type SimCdkAssemblyStack } from "../cdk/sim-cdk-assembly-manifest.js";
4
4
  import { type SimCfnCdkOutStackOptionsByName } from "./sim-cfn-cdk-out-stack-options.js";
5
+ import type { SimCfnResourceOrder } from "../stack/deploy/sim-cfn-resource-order.js";
5
6
  export interface SimCloudFormationDeployCdkOutProperties {
6
7
  /** The `cdk.out` directory to deploy, holding a `manifest.json`. */
7
8
  readonly directoryPath: string;
@@ -23,8 +24,15 @@ export interface SimCloudFormationDeployCdkOutProperties {
23
24
  */
24
25
  readonly caller?: SimAwsCaller | undefined;
25
26
  /**
26
- * Bindings, parameters, a caller and a transform for individual Stacks,
27
- * keyed the same way `stackNames` names them.
27
+ * The order every Stack in the assembly creates Resources with no dependency
28
+ * between them in, which one named in `stackOptions` overrides for its own
29
+ * Stack. `reversed` deploys each Stack the other way round from the one its
30
+ * template is written in.
31
+ */
32
+ readonly resourceOrder?: SimCfnResourceOrder | undefined;
33
+ /**
34
+ * Bindings, parameters, a caller, a Resource order and a transform for
35
+ * individual Stacks, keyed the same way `stackNames` names them.
28
36
  */
29
37
  readonly stackOptions?: SimCfnCdkOutStackOptionsByName | undefined;
30
38
  }
@@ -35,6 +43,7 @@ export interface SimCfnCdkOutPlannedStack extends SimCdkAssemblyStack {
35
43
  export interface SimCfnCdkOutPlan {
36
44
  readonly stacks: readonly SimCfnCdkOutPlannedStack[];
37
45
  readonly caller?: SimAwsCaller | undefined;
46
+ readonly resourceOrder?: SimCfnResourceOrder | undefined;
38
47
  readonly stackOptions?: SimCfnCdkOutStackOptionsByName | undefined;
39
48
  }
40
49
  /**
@@ -10,7 +10,7 @@ import { assertCdkOutOptionsAreDeployed, } from "./sim-cfn-cdk-out-stack-options
10
10
  * an assembly that cannot be deployed says so before any Stack is created.
11
11
  */
12
12
  export async function planCdkOutDeployment(properties) {
13
- const { directoryPath, stackNames, caller, stackOptions } = cdkOutDeployment(properties.request);
13
+ const { directoryPath, stackNames, caller, resourceOrder, stackOptions } = cdkOutDeployment(properties.request);
14
14
  const selected = selectCdkAssemblyStacks({
15
15
  stacks: await loadCdkAssemblyStacks(directoryPath),
16
16
  stackNames,
@@ -23,6 +23,7 @@ export async function planCdkOutDeployment(properties) {
23
23
  regionName: stack.regionName ?? properties.defaultRegionName,
24
24
  })),
25
25
  caller,
26
+ resourceOrder,
26
27
  stackOptions,
27
28
  };
28
29
  }
@@ -4,6 +4,7 @@ import type { SimAwsCaller } from "../../aws/caller/sim-aws-caller.js";
4
4
  import type { SimCfnDeployedStack } from "../stack/sim-cfn-deployed-stack.type.js";
5
5
  import type { CfnTemplateBodyRecord } from "../template/sim-cfn-template.js";
6
6
  import type { SimCfnTemplateFileTransform } from "./sim-cfn-template-file-transform.js";
7
+ import type { SimCfnResourceOrder } from "../stack/deploy/sim-cfn-resource-order.js";
7
8
  /**
8
9
  * Adapts one Stack's parsed template, with the Stacks the same call has already
9
10
  * deployed to hand.
@@ -33,6 +34,11 @@ export interface SimCfnCdkOutStackOptions {
33
34
  * application Stack deployed by another is what this is for.
34
35
  */
35
36
  readonly caller?: SimAwsCaller | undefined;
37
+ /**
38
+ * The order this Stack creates Resources with no dependency between them in,
39
+ * where the assembly's own order is not the right one for it.
40
+ */
41
+ readonly resourceOrder?: SimCfnResourceOrder | undefined;
36
42
  readonly transform?: SimCfnCdkOutTemplateTransform | undefined;
37
43
  }
38
44
  export type SimCfnCdkOutStackOptionsByName = Record<string, SimCfnCdkOutStackOptions>;
@@ -9,6 +9,7 @@ import type { SimAwsCaller } from "../../aws/caller/sim-aws-caller.js";
9
9
  import type { SimAwsAccountRegionScope } from "../../aws/sim-aws-account-region-scope.js";
10
10
  import type { BackgroundCompleter, BackgroundScheduler } from "../../../util/background/background.js";
11
11
  import type { SimCfnExports } from "../export/sim-cfn-exports.js";
12
+ import type { SimCfnResourceOrder } from "../stack/deploy/sim-cfn-resource-order.js";
12
13
  export interface SimCloudFormationCreateStackProperties {
13
14
  readonly stackName?: SimCloudFormationStackName | string;
14
15
  readonly template: CfnTemplateBodyRecord;
@@ -23,6 +24,16 @@ export interface SimCloudFormationCreateStackProperties {
23
24
  * policy denying an Account's root principal then denies.
24
25
  */
25
26
  readonly caller?: SimAwsCaller | undefined;
27
+ /**
28
+ * The order Resources with no dependency between them are created in.
29
+ *
30
+ * CloudFormation is free to create them either way round, and the template's
31
+ * own order is what a deployment does by default. `reversed` starts each
32
+ * dependency batch from its last Resource, so a Stack that only deploys in
33
+ * the order its template happens to be written fails here rather than in the
34
+ * account. Declared dependencies and `DependsOn` are honoured either way.
35
+ */
36
+ readonly resourceOrder?: SimCfnResourceOrder | undefined;
26
37
  /**
27
38
  * The synthesized CDK template file this in-memory template stands in for.
28
39
  *
@@ -59,6 +59,7 @@ export class SimCloudFormationTemplateDeployer {
59
59
  parameters: properties.parameters,
60
60
  bindings: properties.bindings,
61
61
  caller: properties.caller,
62
+ resourceOrder: properties.resourceOrder,
62
63
  cdkOutContext: await cdkOutContextForTemplatePath(properties.templatePath),
63
64
  });
64
65
  }
@@ -102,33 +103,34 @@ export class SimCloudFormationTemplateDeployer {
102
103
  this.watches.stopAll();
103
104
  }
104
105
  async deployTemplateWithContext(properties) {
105
- await this.createStackWithContext({
106
- input: {
107
- StackName: properties.stackName,
108
- TemplateBody: jsonStringify(properties.template),
109
- Parameters: Object.entries(properties.parameters ?? {}).map(([parameterKey, parameterValue]) => ({
110
- ParameterKey: parameterKey,
111
- ParameterValue: parameterValue,
112
- })),
113
- },
114
- }, properties.cdkOutContext, properties.bindings, properties.caller);
106
+ await this.createStackWithContext(properties);
115
107
  const stack = this.stacks.get(properties.stackName);
116
108
  assertDefined(stack, `Sim CloudFormation Stack named ${properties.stackName}`);
117
109
  await stack.waitForDeployComplete();
118
110
  return stack;
119
111
  }
120
- async createStackWithContext(command, cdkOutContext, bindings, caller) {
112
+ async createStackWithContext(deployment) {
121
113
  const handler = new CreateStackCommandHandler({
122
114
  simAws: this.simAws,
123
115
  accountRegionScope: this.accountRegionScope,
124
116
  stacks: this.stacks,
125
117
  background: this.background,
126
- cdkOutContext,
127
- bindings,
128
- caller,
118
+ cdkOutContext: deployment.cdkOutContext,
119
+ bindings: deployment.bindings,
120
+ caller: deployment.caller,
121
+ resourceOrder: deployment.resourceOrder,
129
122
  exports: this.exports,
130
123
  });
131
- return await handler.handle(command);
124
+ return await handler.handle({
125
+ input: {
126
+ StackName: deployment.stackName,
127
+ TemplateBody: jsonStringify(deployment.template),
128
+ Parameters: Object.entries(deployment.parameters ?? {}).map(([parameterKey, parameterValue]) => ({
129
+ ParameterKey: parameterKey,
130
+ ParameterValue: parameterValue,
131
+ })),
132
+ },
133
+ });
132
134
  }
133
135
  }
134
136
  /**