@kensio/yulin 1.20.16 → 1.20.17

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 (312) hide show
  1. package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
  2. package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
  3. package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +17 -6
  4. package/dist/service/aws/caller/sim-aws-caller-resolver.js +21 -26
  5. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +6 -0
  6. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +3 -0
  7. package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +6 -0
  8. package/dist/service/aws/factory/sim-aws-account-service-cache.js +5 -1
  9. package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
  10. package/dist/service/aws/factory/sim-aws-service-factory.js +9 -1
  11. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
  12. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
  13. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  14. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
  15. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
  16. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
  17. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
  18. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
  19. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
  20. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  21. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
  22. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
  23. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +8 -0
  24. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
  25. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
  26. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
  27. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
  28. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
  29. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
  30. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
  31. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
  32. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
  33. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
  34. package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
  35. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
  36. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +5 -0
  37. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
  38. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
  39. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +25 -0
  40. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +21 -0
  41. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +28 -0
  42. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +48 -0
  43. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
  44. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
  45. package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
  46. package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
  47. package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
  48. package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
  49. package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
  50. package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
  51. package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
  52. package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
  53. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +27 -0
  54. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +42 -0
  55. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
  56. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
  57. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.d.ts → sim-cfn-cf-distro-behavior-policies.d.ts} +8 -7
  58. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +11 -37
  59. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
  60. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
  61. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
  62. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +50 -0
  63. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +1 -0
  64. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +10 -0
  65. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +1 -0
  66. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -0
  67. package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
  68. package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
  69. package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
  70. package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
  71. package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
  72. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
  73. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
  74. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
  75. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
  76. package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
  77. package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
  78. package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
  79. package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
  80. package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
  81. package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
  82. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +2 -0
  83. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
  84. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
  85. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +28 -0
  86. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +41 -0
  87. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
  88. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +6 -3
  89. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
  90. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
  91. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +2 -0
  92. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +4 -2
  93. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
  94. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
  95. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
  96. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
  97. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +3 -1
  98. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +2 -0
  99. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
  100. package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
  101. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
  102. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
  103. package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +12 -0
  104. package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
  105. package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
  106. package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
  107. package/dist/service/cloudfront/sim-cf-etag.js +10 -0
  108. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +8 -12
  109. package/dist/service/cloudfront/sim-cloudfront-commands.js +8 -17
  110. package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +43 -0
  111. package/dist/service/cloudfront/sim-cloudfront-policies.js +53 -0
  112. package/dist/service/cloudfront/sim-cloudfront.d.ts +13 -17
  113. package/dist/service/cloudfront/sim-cloudfront.js +22 -25
  114. package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
  115. package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
  116. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
  117. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
  118. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
  119. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
  120. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
  121. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
  122. package/dist/service/ecr/sim-ecr.d.ts +7 -0
  123. package/dist/service/ecr/sim-ecr.js +16 -4
  124. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
  125. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
  126. package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
  127. package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
  128. package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
  129. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
  130. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
  131. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
  132. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
  133. package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
  134. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
  135. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
  136. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
  137. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
  138. package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
  139. package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
  140. package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
  141. package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
  142. package/dist/service/firehose/source/sim-firehose-source.js +5 -0
  143. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
  144. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
  145. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
  146. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
  147. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +33 -2
  148. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +33 -2
  149. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
  150. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
  151. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
  152. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
  153. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +9 -3
  154. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +5 -3
  155. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +9 -71
  156. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +2 -1
  157. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +87 -0
  158. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
  159. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +11 -3
  160. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +20 -8
  161. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
  162. package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
  163. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
  164. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
  165. package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +14 -5
  166. package/dist/service/iam/authorize/sim-iam-account-auth-z.js +6 -4
  167. package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +3 -1
  168. package/dist/service/iam/authorize/sim-iam-authorizer.js +2 -1
  169. package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
  170. package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
  171. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
  172. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
  173. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
  174. package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
  175. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
  176. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
  177. package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
  178. package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
  179. package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
  180. package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
  181. package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
  182. package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
  183. package/dist/service/iam/error/sim-iam.error.js +13 -0
  184. package/dist/service/iam/index.d.ts +1 -0
  185. package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
  186. package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
  187. package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
  188. package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
  189. package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +3 -1
  190. package/dist/service/iam/sim-iam-account-parts.d.ts +8 -0
  191. package/dist/service/iam/sim-iam-account-parts.js +1 -0
  192. package/dist/service/iam/sim-iam.d.ts +12 -2
  193. package/dist/service/iam/sim-iam.js +12 -0
  194. package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
  195. package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
  196. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
  197. package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
  198. package/dist/service/kms/command/sim-kms-request-options.d.ts +11 -0
  199. package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
  200. package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
  201. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
  202. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
  203. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
  204. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
  205. package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
  206. package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
  207. package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
  208. package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
  209. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
  210. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
  211. package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
  212. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
  213. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
  214. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
  215. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
  216. package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
  217. package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
  218. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
  219. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
  220. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
  221. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
  222. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
  223. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
  224. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
  225. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
  226. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
  227. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
  228. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
  229. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
  230. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
  231. package/dist/service/logs/sim-logs-commands.d.ts +3 -0
  232. package/dist/service/logs/sim-logs-commands.js +4 -0
  233. package/dist/service/logs/sim-logs.js +6 -1
  234. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
  235. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
  236. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
  237. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
  238. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
  239. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
  240. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
  241. package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
  242. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
  243. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
  244. package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
  245. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
  246. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
  247. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
  248. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
  249. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
  250. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
  251. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
  252. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
  253. package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
  254. package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
  255. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
  256. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
  257. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
  258. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
  259. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +6 -4
  260. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
  261. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
  262. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
  263. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +15 -9
  264. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +20 -10
  265. package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
  266. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
  267. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
  268. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
  269. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
  270. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
  271. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
  272. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
  273. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
  274. package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
  275. package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
  276. package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
  277. package/dist/service/stepfunctions/sim-step-functions.js +26 -9
  278. package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +5 -0
  279. package/dist/service/sts/command/assume-role/assume-role.handler.js +1 -0
  280. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +5 -0
  281. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +1 -0
  282. package/dist/service/sts/sim-sts.d.ts +9 -0
  283. package/dist/service/sts/sim-sts.js +4 -0
  284. package/dist/util/memo/bounded-memo.d.ts +36 -0
  285. package/dist/util/memo/bounded-memo.js +58 -0
  286. package/docs/sdk/README.md +3 -1
  287. package/docs/services/cloudformation/README.md +196 -11
  288. package/docs/services/cloudfront/README.md +230 -6
  289. package/docs/services/cloudwatch/README.md +6 -4
  290. package/docs/services/cognito/README.md +8 -7
  291. package/docs/services/dynamodb/README.md +6 -5
  292. package/docs/services/ecs/README.md +20 -9
  293. package/docs/services/elbv2/README.md +6 -2
  294. package/docs/services/eventbridge/README.md +9 -1
  295. package/docs/services/firehose/README.md +9 -3
  296. package/docs/services/glue/README.md +6 -0
  297. package/docs/services/iam/README.md +322 -27
  298. package/docs/services/kinesis/README.md +3 -2
  299. package/docs/services/kms/README.md +7 -2
  300. package/docs/services/lambda/README.md +76 -2
  301. package/docs/services/logs/README.md +16 -2
  302. package/docs/services/s3/README.md +7 -2
  303. package/docs/services/scheduler/README.md +12 -4
  304. package/docs/services/secretsmanager/README.md +6 -3
  305. package/docs/services/ses/README.md +3 -1
  306. package/docs/services/sns/README.md +5 -5
  307. package/docs/services/sqs/README.md +5 -5
  308. package/docs/services/ssm/README.md +40 -16
  309. package/docs/services/stepfunctions/README.md +11 -2
  310. package/docs/services/wafv2/README.md +5 -3
  311. package/package.json +1 -1
  312. package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
@@ -0,0 +1,30 @@
1
+ /**
2
+ * CloudFormation-facing behavior for an AWS::CloudFront::CachePolicy Resource.
3
+ */
4
+ export class SimCloudFrontCachePolicyCfn {
5
+ policy;
6
+ constructor(properties) {
7
+ this.policy = properties.policy;
8
+ }
9
+ /**
10
+ * CloudFormation Ref for AWS::CloudFront::CachePolicy returns the policy ID,
11
+ * which is what a Cache Behavior's CachePolicyId wants.
12
+ */
13
+ refValue() {
14
+ return this.policy.id;
15
+ }
16
+ /**
17
+ * CloudFormation attributes for AWS::CloudFront::CachePolicy.
18
+ */
19
+ attributeValue(attributeName) {
20
+ switch (attributeName) {
21
+ case "Id": {
22
+ return this.policy.id;
23
+ }
24
+ default: {
25
+ /* v8 ignore next */
26
+ return `${this.policy.id}.${attributeName}`;
27
+ }
28
+ }
29
+ }
30
+ }
@@ -4,6 +4,8 @@ import { SimCloudFrontFunction } from "../../../../cloudfront/cff/sim-cloudfront
4
4
  import { SimCloudFrontFunctionCfn } from "./sim-cloudfront-function-cfn.js";
5
5
  import { SimCloudFrontResponseHeadersPolicy } from "../../../../cloudfront/response-headers-policy/sim-cf-response-headers-policy.js";
6
6
  import { SimCloudFrontResponseHeadersPolicyCfn } from "./sim-cloudfront-rh-policy-cfn.js";
7
+ import { SimCloudFrontCachePolicy } from "../../../../cloudfront/cache-policy/sim-cf-cache-policy.js";
8
+ import { SimCloudFrontCachePolicyCfn } from "./sim-cloudfront-cache-policy-cfn.js";
7
9
  import { SimCloudFrontOriginAccessControl } from "../../../../cloudfront/origin-access-control/sim-cf-origin-access-control.js";
8
10
  import { SimCloudFrontOriginAccessControlCfn } from "./sim-cloudfront-oac-cfn.js";
9
11
  import { SimCloudFrontKeyValueStore } from "../../../../cloudfront/key-value-store/sim-cf-key-value-store.js";
@@ -28,6 +30,12 @@ export function cloudFrontValueAdapter(properties) {
28
30
  policy: properties.simResource,
29
31
  });
30
32
  }
33
+ if (properties.type === "AWS::CloudFront::CachePolicy" &&
34
+ properties.simResource instanceof SimCloudFrontCachePolicy) {
35
+ return new SimCloudFrontCachePolicyCfn({
36
+ policy: properties.simResource,
37
+ });
38
+ }
31
39
  if (properties.type === "AWS::CloudFront::OriginAccessControl" &&
32
40
  properties.simResource instanceof SimCloudFrontOriginAccessControl) {
33
41
  return new SimCloudFrontOriginAccessControlCfn({
@@ -6,18 +6,25 @@ interface SimCfnGeneratedResourceNameProperties {
6
6
  /**
7
7
  * The name CloudFormation gives a Resource whose template does not name it.
8
8
  *
9
- * Real CloudFormation generates `<stack name>-<logical ID>-<random>`. The
10
- * random part is left out here so a test can predict the name, which is the one
11
- * thing a template cannot rely on for real. Everything else follows AWS: two
9
+ * CloudFormation generates `<stack name>-<logical ID>-<random>`. The tail here
10
+ * is a hash of the other two parts rather than random characters. The same
11
+ * template deployed under the same stack name generates the same name again,
12
+ * and a test can read it back and compare. Everything else follows AWS. Two
12
13
  * stacks deploying the same template get different names, because the stack
13
14
  * name is part of it.
14
15
  *
15
- * Each service has its own limit on how long a name can be, so a long stack
16
- * name and logical ID together are trimmed to fit. The start is kept, since
17
- * that is where the stack name is, and the trimmed name ends in a hash of the
18
- * untrimmed one. CDK puts its own disambiguating hash at the end of a logical
19
- * ID, which is exactly what trimming cuts off, so without that two Resources in
20
- * one stack could end up asking for the same name.
16
+ * Each service has its own limit on how long a name can be, and CloudFormation
17
+ * reserves the last thirteen characters of it for the tail and its hyphen. What
18
+ * is left over goes to the stack name and the logical ID either side of one
19
+ * more hyphen, half each, the stack name rounding up and either taking what the
20
+ * other does not use. Where a service allows 64 characters, a long stack name
21
+ * and a long logical ID keep 25 each. The rule is inferred from names real
22
+ * CloudFormation produced, since AWS documents none of it.
23
+ *
24
+ * The tail is derived from the whole untrimmed name. That is what keeps two
25
+ * trimmed names apart. CDK puts its own disambiguating hash at the end of a
26
+ * logical ID, which is exactly what trimming cuts off, so without that two
27
+ * Resources in one stack could end up asking for the same name.
21
28
  */
22
29
  export declare class SimCfnGeneratedResourceName {
23
30
  private readonly stackName;
@@ -29,12 +36,22 @@ export declare class SimCfnGeneratedResourceName {
29
36
  */
30
37
  get value(): string;
31
38
  /**
32
- * The tail a trimmed name ends with, derived from the whole untrimmed name.
39
+ * The stack name and logical ID, trimmed to the room the tail leaves them.
40
+ *
41
+ * A name that already fits is kept whole. One that does not gives each part
42
+ * half of what is left. The stack name is trimmed rather than lost, since
43
+ * that is the part an IAM policy scoped by resource prefix matches on.
44
+ */
45
+ private trimmed;
46
+ /**
47
+ * The tail the name ends with, derived from the whole untrimmed name.
33
48
  *
34
49
  * It is a hash rather than the random characters real CloudFormation uses, so
35
- * the name stays the same between deployments of the same template.
50
+ * the name stays the same between deployments of the same template. Hex
51
+ * suits every service, since one that only allows lowercase takes it as it
52
+ * is.
36
53
  */
37
- private distinguisher;
54
+ private tail;
38
55
  /**
39
56
  * The name before it is trimmed to the length the service allows.
40
57
  *
@@ -1,24 +1,31 @@
1
1
  import { createHash } from "node:crypto";
2
2
  /**
3
- * How many characters of the hash of the untrimmed name a trimmed one ends
4
- * with, so two long names that start the same do not become one name.
3
+ * How many characters the tail on the end of a generated name is, which is as
4
+ * many as the random characters real CloudFormation ends one with.
5
5
  */
6
- const distinguisherLength = 8;
6
+ const tailLength = 12;
7
7
  /**
8
8
  * The name CloudFormation gives a Resource whose template does not name it.
9
9
  *
10
- * Real CloudFormation generates `<stack name>-<logical ID>-<random>`. The
11
- * random part is left out here so a test can predict the name, which is the one
12
- * thing a template cannot rely on for real. Everything else follows AWS: two
10
+ * CloudFormation generates `<stack name>-<logical ID>-<random>`. The tail here
11
+ * is a hash of the other two parts rather than random characters. The same
12
+ * template deployed under the same stack name generates the same name again,
13
+ * and a test can read it back and compare. Everything else follows AWS. Two
13
14
  * stacks deploying the same template get different names, because the stack
14
15
  * name is part of it.
15
16
  *
16
- * Each service has its own limit on how long a name can be, so a long stack
17
- * name and logical ID together are trimmed to fit. The start is kept, since
18
- * that is where the stack name is, and the trimmed name ends in a hash of the
19
- * untrimmed one. CDK puts its own disambiguating hash at the end of a logical
20
- * ID, which is exactly what trimming cuts off, so without that two Resources in
21
- * one stack could end up asking for the same name.
17
+ * Each service has its own limit on how long a name can be, and CloudFormation
18
+ * reserves the last thirteen characters of it for the tail and its hyphen. What
19
+ * is left over goes to the stack name and the logical ID either side of one
20
+ * more hyphen, half each, the stack name rounding up and either taking what the
21
+ * other does not use. Where a service allows 64 characters, a long stack name
22
+ * and a long logical ID keep 25 each. The rule is inferred from names real
23
+ * CloudFormation produced, since AWS documents none of it.
24
+ *
25
+ * The tail is derived from the whole untrimmed name. That is what keeps two
26
+ * trimmed names apart. CDK puts its own disambiguating hash at the end of a
27
+ * logical ID, which is exactly what trimming cuts off, so without that two
28
+ * Resources in one stack could end up asking for the same name.
22
29
  */
23
30
  export class SimCfnGeneratedResourceName {
24
31
  stackName;
@@ -33,24 +40,48 @@ export class SimCfnGeneratedResourceName {
33
40
  * The generated name.
34
41
  */
35
42
  get value() {
43
+ const tail = this.tail();
44
+ if (this.maximumLength <= tailLength + 1) {
45
+ return tail.slice(0, this.maximumLength);
46
+ }
47
+ return `${this.trimmed()}-${tail}`;
48
+ }
49
+ /**
50
+ * The stack name and logical ID, trimmed to the room the tail leaves them.
51
+ *
52
+ * A name that already fits is kept whole. One that does not gives each part
53
+ * half of what is left. The stack name is trimmed rather than lost, since
54
+ * that is the part an IAM policy scoped by resource prefix matches on.
55
+ */
56
+ trimmed() {
36
57
  const composed = this.composed();
37
- if (composed.length <= this.maximumLength) {
58
+ const budget = this.maximumLength - tailLength - 1;
59
+ if (composed.length <= budget) {
38
60
  return composed;
39
61
  }
40
- const kept = composed.slice(0, this.maximumLength - distinguisherLength - 1);
41
- return `${kept}-${this.distinguisher(composed)}`;
62
+ if (this.stackName === undefined || this.stackName === "") {
63
+ return composed.slice(0, budget);
64
+ }
65
+ const shared = budget - 1;
66
+ const stackNameKept = Math.min(this.stackName.length, shared - Math.min(this.logicalId.length, Math.floor(shared / 2)));
67
+ return [
68
+ this.stackName.slice(0, stackNameKept),
69
+ this.logicalId.slice(0, shared - stackNameKept),
70
+ ].join("-");
42
71
  }
43
72
  /**
44
- * The tail a trimmed name ends with, derived from the whole untrimmed name.
73
+ * The tail the name ends with, derived from the whole untrimmed name.
45
74
  *
46
75
  * It is a hash rather than the random characters real CloudFormation uses, so
47
- * the name stays the same between deployments of the same template.
76
+ * the name stays the same between deployments of the same template. Hex
77
+ * suits every service, since one that only allows lowercase takes it as it
78
+ * is.
48
79
  */
49
- distinguisher(composed) {
80
+ tail() {
50
81
  return createHash("sha1")
51
- .update(composed)
82
+ .update(this.composed())
52
83
  .digest("hex")
53
- .slice(0, distinguisherLength);
84
+ .slice(0, tailLength);
54
85
  }
55
86
  /**
56
87
  * The name before it is trimmed to the length the service allows.
@@ -0,0 +1,19 @@
1
+ import type { SimCfnResource } from "../../resource/sim-cfn-resource.js";
2
+ /**
3
+ * The order the Resources in one dependency batch are started in.
4
+ *
5
+ * CloudFormation creates Resources with no dependency between them in whatever
6
+ * order it likes, so a template whose Resources only work in the order it wrote
7
+ * them deploys some of the time. `template` is the order the template declared,
8
+ * which is what a deployment does unless it is asked for something else.
9
+ * `reversed` starts each batch from its last Resource, which is the other order
10
+ * a pair with nothing between them could be created in.
11
+ *
12
+ * Dependencies are unaffected either way: a Resource still waits for everything
13
+ * it refers to and everything its `DependsOn` names.
14
+ */
15
+ export type SimCfnResourceOrder = "template" | "reversed";
16
+ /**
17
+ * The Resources of one batch, in the order the deployment asked for.
18
+ */
19
+ export declare function simCfnOrderedResources(resources: readonly SimCfnResource[], order: SimCfnResourceOrder | undefined): readonly SimCfnResource[];
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The Resources of one batch, in the order the deployment asked for.
3
+ */
4
+ export function simCfnOrderedResources(resources, order) {
5
+ return order === "reversed" ? resources.toReversed() : resources;
6
+ }
@@ -3,12 +3,14 @@ import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
3
3
  import type { SimCfnBinding } from "../../bind/sim-cfn-binding.js";
4
4
  import type { SimCdkOutContext } from "../../cdk/sim-cdk-out-context.js";
5
5
  import type { SimCfnResource } from "../../resource/sim-cfn-resource.js";
6
+ import { type SimCfnResourceOrder } from "./sim-cfn-resource-order.js";
6
7
  interface SimCfnStackResourceBatchCreatorProperties {
7
8
  readonly simAws: SimAws;
8
9
  readonly resources: ReadonlyMap<string, SimCfnResource>;
9
10
  readonly cdkOutContext?: SimCdkOutContext | undefined;
10
11
  readonly bindings?: readonly SimCfnBinding[] | undefined;
11
12
  readonly caller?: SimAwsCaller | undefined;
13
+ readonly resourceOrder?: SimCfnResourceOrder | undefined;
12
14
  }
13
15
  /**
14
16
  * Creates one dependency-ready batch of Stack Resources.
@@ -17,6 +19,7 @@ interface SimCfnStackResourceBatchCreatorProperties {
17
19
  * class owns only the batch execution details:
18
20
  *
19
21
  * - create all Resources in the batch in parallel
22
+ * - start them in the order the deployment asked for
20
23
  * - pass the shared Stack creation context to each Resource
21
24
  *
22
25
  * It does not choose which Resources are ready, retry incomplete Resources, or
@@ -30,12 +33,16 @@ export declare class SimCfnStackResourceBatchCreator {
30
33
  private readonly cdkOutContext;
31
34
  private readonly bindings;
32
35
  private readonly caller;
36
+ private readonly resourceOrder;
33
37
  constructor(properties: SimCfnStackResourceBatchCreatorProperties);
34
38
  /**
35
39
  * Create the supplied Resources concurrently.
36
40
  *
37
41
  * Each Resource still owns its own create lifecycle and status transitions.
38
42
  * This method only waits for the batch to settle.
43
+ *
44
+ * Nothing in the batch depends on anything else in it, so the order they
45
+ * start in is the deployment's to choose.
39
46
  */
40
47
  create(resources: readonly SimCfnResource[]): Promise<void>;
41
48
  }
@@ -1,3 +1,4 @@
1
+ import { simCfnOrderedResources, } from "./sim-cfn-resource-order.js";
1
2
  /**
2
3
  * Creates one dependency-ready batch of Stack Resources.
3
4
  *
@@ -5,6 +6,7 @@
5
6
  * class owns only the batch execution details:
6
7
  *
7
8
  * - create all Resources in the batch in parallel
9
+ * - start them in the order the deployment asked for
8
10
  * - pass the shared Stack creation context to each Resource
9
11
  *
10
12
  * It does not choose which Resources are ready, retry incomplete Resources, or
@@ -18,22 +20,27 @@ export class SimCfnStackResourceBatchCreator {
18
20
  cdkOutContext;
19
21
  bindings;
20
22
  caller;
23
+ resourceOrder;
21
24
  constructor(properties) {
22
- const { simAws, resources, cdkOutContext, bindings, caller } = properties;
25
+ const { simAws, resources, cdkOutContext, bindings, caller, resourceOrder, } = properties;
23
26
  this.simAws = simAws;
24
27
  this.resources = resources;
25
28
  this.cdkOutContext = cdkOutContext;
26
29
  this.bindings = bindings;
27
30
  this.caller = caller;
31
+ this.resourceOrder = resourceOrder;
28
32
  }
29
33
  /**
30
34
  * Create the supplied Resources concurrently.
31
35
  *
32
36
  * Each Resource still owns its own create lifecycle and status transitions.
33
37
  * This method only waits for the batch to settle.
38
+ *
39
+ * Nothing in the batch depends on anything else in it, so the order they
40
+ * start in is the deployment's to choose.
34
41
  */
35
42
  async create(resources) {
36
- await Promise.all(resources.map(async (resource) => {
43
+ await Promise.all(simCfnOrderedResources(resources, this.resourceOrder).map(async (resource) => {
37
44
  await resource.create({
38
45
  simAws: this.simAws,
39
46
  resources: this.resources,
@@ -3,6 +3,7 @@ import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
3
3
  import type { SimCfnResource } from "../../resource/sim-cfn-resource.js";
4
4
  import type { SimCdkOutContext } from "../../cdk/sim-cdk-out-context.js";
5
5
  import type { SimCfnBinding } from "../../bind/sim-cfn-binding.js";
6
+ import type { SimCfnResourceOrder } from "./sim-cfn-resource-order.js";
6
7
  interface SimCfnStackResourceCreatorProperties {
7
8
  readonly simAws: SimAws;
8
9
  readonly resources: ReadonlyMap<string, SimCfnResource>;
@@ -10,6 +11,7 @@ interface SimCfnStackResourceCreatorProperties {
10
11
  readonly cdkOutContext?: SimCdkOutContext | undefined;
11
12
  readonly bindings?: readonly SimCfnBinding[] | undefined;
12
13
  readonly caller?: SimAwsCaller | undefined;
14
+ readonly resourceOrder?: SimCfnResourceOrder | undefined;
13
15
  }
14
16
  /**
15
17
  * Orchestrates dependency-ordered creation of a Stack's simulated Resources.
@@ -21,7 +21,7 @@ export class SimCfnStackResourceCreator {
21
21
  stackName;
22
22
  batchCreator;
23
23
  constructor(properties) {
24
- const { simAws, resources, stackName, cdkOutContext, bindings, caller } = properties;
24
+ const { simAws, resources, stackName, cdkOutContext, bindings, caller, resourceOrder, } = properties;
25
25
  this.resources = resources;
26
26
  this.stackName = stackName;
27
27
  this.batchCreator = new SimCfnStackResourceBatchCreator({
@@ -30,6 +30,7 @@ export class SimCfnStackResourceCreator {
30
30
  cdkOutContext,
31
31
  bindings,
32
32
  caller,
33
+ resourceOrder,
33
34
  });
34
35
  }
35
36
  /**
@@ -6,6 +6,7 @@ import type { SimCfnBinding } from "../bind/sim-cfn-binding.js";
6
6
  import type { SimCdkOutContext } from "../cdk/sim-cdk-out-context.js";
7
7
  import type { SimCfnResource } from "../resource/sim-cfn-resource.js";
8
8
  import type { SimCfnTemplate } from "../template/sim-cfn-template.js";
9
+ import type { SimCfnResourceOrder } from "./deploy/sim-cfn-resource-order.js";
9
10
  import { SimCfnStackUpdater } from "./update/sim-cfn-stack-updater.js";
10
11
  import type { SimCloudFormationStackName } from "./sim-cfn-stack.js";
11
12
  interface SimCfnStackUpdateProperties {
@@ -25,6 +26,10 @@ interface SimCfnStackResourceOperationsProperties {
25
26
  * caller leaves each service to decide the request as the Account root.
26
27
  */
27
28
  readonly caller?: SimAwsCaller | undefined;
29
+ /**
30
+ * The order Resources with no dependency between them are started in.
31
+ */
32
+ readonly resourceOrder?: SimCfnResourceOrder | undefined;
28
33
  }
29
34
  /**
30
35
  * What a Stack can ask simulated AWS to do with its Resources.
@@ -44,6 +49,7 @@ export declare class SimCfnStackResourceOperations {
44
49
  private readonly accountRegionScope;
45
50
  private readonly stackName;
46
51
  private readonly bindings;
52
+ private readonly resourceOrder;
47
53
  private cdkOutContext;
48
54
  private caller;
49
55
  constructor(properties: SimCfnStackResourceOperationsProperties);
@@ -20,16 +20,18 @@ export class SimCfnStackResourceOperations {
20
20
  accountRegionScope;
21
21
  stackName;
22
22
  bindings;
23
+ resourceOrder;
23
24
  cdkOutContext;
24
25
  caller;
25
26
  constructor(properties) {
26
- const { simAws, accountRegionScope, stackName, cdkOutContext, bindings, caller, } = properties;
27
+ const { simAws, accountRegionScope, stackName, cdkOutContext, bindings, caller, resourceOrder, } = properties;
27
28
  this.simAws = simAws;
28
29
  this.accountRegionScope = accountRegionScope;
29
30
  this.stackName = stackName;
30
31
  this.cdkOutContext = cdkOutContext;
31
32
  this.bindings = bindings;
32
33
  this.caller = caller;
34
+ this.resourceOrder = resourceOrder;
33
35
  }
34
36
  /**
35
37
  * Take on what an update brings with it, for this and every later operation.
@@ -106,6 +108,7 @@ export class SimCfnStackResourceOperations {
106
108
  cdkOutContext: this.cdkOutContext,
107
109
  bindings: this.bindings,
108
110
  caller: this.caller,
111
+ resourceOrder: this.resourceOrder,
109
112
  });
110
113
  }
111
114
  deleter(resources) {
@@ -38,7 +38,7 @@ export class SimCfnStack {
38
38
  stackOutputs;
39
39
  cfnTemplate;
40
40
  constructor(properties) {
41
- const { simAws, accountRegionScope, background, stackName, template, cdkOutContext, bindings, caller, exports, } = properties;
41
+ const { simAws, accountRegionScope, background, stackName, template, cdkOutContext, bindings, caller, resourceOrder, exports, } = properties;
42
42
  this.background = background;
43
43
  this.stackName = stackName;
44
44
  this.stackOutputs = new SimCfnStackOutputs({ stackName, exports });
@@ -61,6 +61,7 @@ export class SimCfnStack {
61
61
  cdkOutContext,
62
62
  bindings,
63
63
  caller,
64
+ resourceOrder,
64
65
  });
65
66
  this.lifecycle = new SimCfnStackDeploymentLifecycle({
66
67
  background,
@@ -7,6 +7,7 @@ import type { SimCfnTemplate } from "../template/sim-cfn-template.js";
7
7
  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
+ import type { SimCfnResourceOrder } from "./deploy/sim-cfn-resource-order.js";
10
11
  export type SimCloudFormationStackName = Brand<string, "SimCloudFormationStackName">;
11
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";
12
13
  export interface SimCfnStackUpdateProperties {
@@ -37,6 +38,11 @@ export interface SimCloudFormationStackProperties {
37
38
  * simulation.
38
39
  */
39
40
  readonly caller?: SimAwsCaller | undefined;
41
+ /**
42
+ * The order this Stack starts Resources with no dependency between them in.
43
+ * The template's own order unless the deployment asked for another one.
44
+ */
45
+ readonly resourceOrder?: SimCfnResourceOrder | undefined;
40
46
  /**
41
47
  * The export names published in the Account and Region this Stack deploys
42
48
  * into. This Stack publishes its own Outputs here and reads the ones its
@@ -12,6 +12,11 @@ export interface SimCloudFrontBehavior {
12
12
  * The response headers policy applied to every response this Behavior serves.
13
13
  */
14
14
  responseHeadersPolicyId?: string | undefined;
15
+ /**
16
+ * The cache policy this Behavior was given, whether a template created it or
17
+ * AWS manages it. The simulated cache does not read it yet.
18
+ */
19
+ cachePolicyId?: string | undefined;
15
20
  functionAssociations?: undefined | {
16
21
  viewerRequest?: SimArn;
17
22
  viewerResponse?: SimArn;
@@ -0,0 +1,37 @@
1
+ import type { SimCloudFrontCachePolicy, SimCloudFrontCachePolicyId } from "./sim-cf-cache-policy.js";
2
+ /**
3
+ * The cache policies one simulated CloudFront holds.
4
+ *
5
+ * Policies are found by ID, which is what a cache Behavior's `cachePolicyId`
6
+ * names, and by name, which is what decides whether a new one may be stored.
7
+ *
8
+ * AWS's seven managed policies are held apart from the ones a template
9
+ * creates. CloudFront keeps them in its own namespace, so a template may
10
+ * create a policy called `CachingDisabled` of its own, and deleting the stack
11
+ * that created it leaves the managed one where it was.
12
+ */
13
+ export declare class SimCloudFrontCachePolicyRegistry {
14
+ private readonly policies;
15
+ private readonly managedPolicies;
16
+ /**
17
+ * Store a policy a template created, refusing a name another such policy
18
+ * already holds as CloudFront does.
19
+ */
20
+ add(policy: SimCloudFrontCachePolicy): void;
21
+ /**
22
+ * Forget a policy.
23
+ */
24
+ remove(policyId: SimCloudFrontCachePolicyId): void;
25
+ /**
26
+ * Get a policy by ID, whether a template created it or AWS manages it.
27
+ */
28
+ byId(policyId: SimCloudFrontCachePolicyId | string): SimCloudFrontCachePolicy | undefined;
29
+ /**
30
+ * Get a policy a template created, by name.
31
+ *
32
+ * A managed policy is left out. Its name belongs to CloudFront's own
33
+ * namespace, and this is what decides whether a template may store a policy
34
+ * under a name.
35
+ */
36
+ byName(policyName: string): SimCloudFrontCachePolicy | undefined;
37
+ }
@@ -0,0 +1,50 @@
1
+ import { SimCloudFrontCachePolicyAlreadyExists } from "../error/sim-cloudfront.error.js";
2
+ import { simCfManagedCachePolicies } from "./sim-cf-managed-cache-policies.js";
3
+ /**
4
+ * The cache policies one simulated CloudFront holds.
5
+ *
6
+ * Policies are found by ID, which is what a cache Behavior's `cachePolicyId`
7
+ * names, and by name, which is what decides whether a new one may be stored.
8
+ *
9
+ * AWS's seven managed policies are held apart from the ones a template
10
+ * creates. CloudFront keeps them in its own namespace, so a template may
11
+ * create a policy called `CachingDisabled` of its own, and deleting the stack
12
+ * that created it leaves the managed one where it was.
13
+ */
14
+ export class SimCloudFrontCachePolicyRegistry {
15
+ policies = new Map();
16
+ managedPolicies = simCfManagedCachePolicies();
17
+ /**
18
+ * Store a policy a template created, refusing a name another such policy
19
+ * already holds as CloudFront does.
20
+ */
21
+ add(policy) {
22
+ if (this.byName(policy.name) !== undefined) {
23
+ throw new SimCloudFrontCachePolicyAlreadyExists(`Sim CloudFront cache policy ${policy.name} already exists`);
24
+ }
25
+ this.policies.set(policy.id, policy);
26
+ }
27
+ /**
28
+ * Forget a policy.
29
+ */
30
+ remove(policyId) {
31
+ this.policies.delete(policyId);
32
+ }
33
+ /**
34
+ * Get a policy by ID, whether a template created it or AWS manages it.
35
+ */
36
+ byId(policyId) {
37
+ const id = policyId;
38
+ return this.policies.get(id) ?? this.managedPolicies.get(id);
39
+ }
40
+ /**
41
+ * Get a policy a template created, by name.
42
+ *
43
+ * A managed policy is left out. Its name belongs to CloudFront's own
44
+ * namespace, and this is what decides whether a template may store a policy
45
+ * under a name.
46
+ */
47
+ byName(policyName) {
48
+ return this.policies.values().find((policy) => policy.name === policyName);
49
+ }
50
+ }
@@ -0,0 +1,25 @@
1
+ import type { Brand } from "../../../util/brand.type.js";
2
+ export type SimCloudFrontCachePolicyId = Brand<string, "SimCloudFrontCachePolicyId">;
3
+ interface SimCloudFrontCachePolicyProperties {
4
+ readonly id?: SimCloudFrontCachePolicyId;
5
+ readonly name: string;
6
+ readonly comment?: string | undefined;
7
+ }
8
+ /**
9
+ * Simulated CloudFront cache policy.
10
+ *
11
+ * A cache policy decides what a cache Behavior keys its cache on and how long
12
+ * an object stays there. This simulation holds the policy under its ID and
13
+ * hands it back. The cache key, the TTLs and the compression settings belong
14
+ * to a simulated cache, which CloudFront here has yet to grow.
15
+ *
16
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html
17
+ */
18
+ export declare class SimCloudFrontCachePolicy {
19
+ readonly id: SimCloudFrontCachePolicyId;
20
+ readonly name: string;
21
+ readonly comment: string | undefined;
22
+ constructor(properties: SimCloudFrontCachePolicyProperties);
23
+ }
24
+ export type SimCloudFrontCachePolicyMap = Map<SimCloudFrontCachePolicyId, SimCloudFrontCachePolicy>;
25
+ export {};
@@ -0,0 +1,21 @@
1
+ import { randomUUID } from "node:crypto";
2
+ /**
3
+ * Simulated CloudFront cache policy.
4
+ *
5
+ * A cache policy decides what a cache Behavior keys its cache on and how long
6
+ * an object stays there. This simulation holds the policy under its ID and
7
+ * hands it back. The cache key, the TTLs and the compression settings belong
8
+ * to a simulated cache, which CloudFront here has yet to grow.
9
+ *
10
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html
11
+ */
12
+ export class SimCloudFrontCachePolicy {
13
+ id;
14
+ name;
15
+ comment;
16
+ constructor(properties) {
17
+ this.id = properties.id ?? randomUUID();
18
+ this.name = properties.name;
19
+ this.comment = properties.comment;
20
+ }
21
+ }
@@ -0,0 +1,28 @@
1
+ import { type SimCloudFrontCachePolicyMap } from "./sim-cf-cache-policy.js";
2
+ /**
3
+ * The IDs AWS publishes for its managed cache policies.
4
+ *
5
+ * A template names one of these directly. CDK's `CachePolicy` statics carry
6
+ * the same seven, and synthesize the ID into a Behavior's `CachePolicyId` with
7
+ * no Resource behind it.
8
+ */
9
+ export declare const simCfManagedCachePolicyIds: {
10
+ readonly amplify: "2e54312d-136d-493c-8eb9-b001f22f67d2";
11
+ readonly cachingOptimized: "658327ea-f89d-4fab-a63d-7e88639e58f6";
12
+ readonly cachingOptimizedForUncompressedObjects: "b2884449-e4de-46a7-ac36-70bc7f1ddd6d";
13
+ readonly cachingDisabled: "4135ea2d-6df8-44a3-9df3-4b5a84be39ad";
14
+ readonly elementalMediaPackage: "08627262-05a9-4f76-9ded-b50ca2e3a84f";
15
+ readonly useOriginCacheControlHeaders: "83da9c7e-98b4-4e11-a168-04f0df8e2c65";
16
+ readonly useOriginCacheControlHeadersQueryStrings: "4cc15a8a-d715-48a4-82b8-cc0b614638fe";
17
+ };
18
+ /**
19
+ * The seven managed cache policies, built fresh for one simulated CloudFront.
20
+ *
21
+ * CloudFront owns these and every account has them, so a Behavior can name one
22
+ * without a template creating anything. Each carries the ID and the name AWS
23
+ * publishes for it. The cache key and the TTLs behind each one are left out,
24
+ * along with those of a policy a template creates.
25
+ *
26
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html
27
+ */
28
+ export declare function simCfManagedCachePolicies(): SimCloudFrontCachePolicyMap;