@kensio/yulin 1.20.15 → 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 (355) hide show
  1. package/README.md +13 -0
  2. package/dist/sdk/module/sim-sdk-module-client-interceptor.d.ts +5 -0
  3. package/dist/sdk/module/sim-sdk-module-client-interceptor.js +14 -0
  4. package/dist/sdk/module/sim-sdk-static-client-factory.d.ts +26 -0
  5. package/dist/sdk/module/sim-sdk-static-client-factory.js +59 -0
  6. package/dist/sdk/send-patch.d.ts +8 -0
  7. package/dist/sdk/send-patch.js +11 -0
  8. package/dist/service/aws/caller/sim-aws-ambient-caller.d.ts +23 -0
  9. package/dist/service/aws/caller/sim-aws-ambient-caller.js +12 -0
  10. package/dist/service/aws/caller/sim-aws-caller-resolver.d.ts +39 -6
  11. package/dist/service/aws/caller/sim-aws-caller-resolver.js +32 -30
  12. package/dist/service/aws/caller/sim-aws-caller.d.ts +9 -0
  13. package/dist/service/aws/caller/sim-aws-resolved-caller.d.ts +19 -0
  14. package/dist/service/aws/caller/sim-aws-resolved-caller.js +26 -0
  15. package/dist/service/aws/factory/sim-aws-account-region-service-builder.d.ts +12 -0
  16. package/dist/service/aws/factory/sim-aws-account-region-service-builder.js +6 -0
  17. package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts +12 -0
  18. package/dist/service/aws/factory/sim-aws-account-service-cache.js +9 -0
  19. package/dist/service/aws/factory/sim-aws-registered-service-builder.js +3 -1
  20. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +5 -0
  21. package/dist/service/aws/factory/sim-aws-service-factory.js +14 -0
  22. package/dist/service/aws/sim-aws-properties.d.ts +15 -0
  23. package/dist/service/aws/sim-aws.js +2 -1
  24. package/dist/service/cloudformation/command/create-stack/create-stack.handler.d.ts +4 -0
  25. package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +4 -1
  26. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-deployer.js +2 -1
  27. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.d.ts +11 -2
  28. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-plan.js +2 -1
  29. package/dist/service/cloudformation/deploy/sim-cfn-cdk-out-stack-options.d.ts +6 -0
  30. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.d.ts +11 -0
  31. package/dist/service/cloudformation/deploy/sim-cfn-template-deployer.js +17 -15
  32. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.d.ts +12 -0
  33. package/dist/service/cloudformation/deploy/sim-cfn-template-file-loader.js +2 -1
  34. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.d.ts +23 -0
  35. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cache-policy-cfn.js +30 -0
  36. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +8 -0
  37. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.d.ts +29 -12
  38. package/dist/service/cloudformation/resource/name/sim-cfn-generated-resource-name.js +51 -20
  39. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.d.ts +19 -0
  40. package/dist/service/cloudformation/stack/deploy/sim-cfn-resource-order.js +6 -0
  41. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.d.ts +7 -0
  42. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-batch-creator.js +9 -2
  43. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.d.ts +2 -0
  44. package/dist/service/cloudformation/stack/deploy/sim-cfn-stack-resource-creator.js +2 -1
  45. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +6 -0
  46. package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +4 -1
  47. package/dist/service/cloudformation/stack/sim-cfn-stack.js +2 -1
  48. package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +6 -0
  49. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +5 -0
  50. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.d.ts +37 -0
  51. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy-registry.js +50 -0
  52. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +25 -0
  53. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +21 -0
  54. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +28 -0
  55. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +48 -0
  56. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +8 -0
  57. package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +13 -0
  58. package/dist/service/cloudfront/cff/sim-cf-function-commands.d.ts +52 -0
  59. package/dist/service/cloudfront/cff/sim-cf-function-commands.js +51 -0
  60. package/dist/service/cloudfront/cff/sim-cff-configuration.d.ts +41 -0
  61. package/dist/service/cloudfront/cff/sim-cff-configuration.js +34 -0
  62. package/dist/service/cloudfront/cff/sim-cff-stage.d.ts +23 -0
  63. package/dist/service/cloudfront/cff/sim-cff-stage.js +30 -0
  64. package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +6 -1
  65. package/dist/service/cloudfront/cff/sim-cloudfront-function.js +6 -0
  66. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +27 -0
  67. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +42 -0
  68. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.d.ts +24 -0
  69. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-creator.js +32 -0
  70. 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
  71. package/dist/service/cloudfront/cfn/distro/{sim-cfn-cf-distro-response-headers-policy.js → sim-cfn-cf-distro-behavior-policies.js} +11 -37
  72. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -5
  73. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +8 -7
  74. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.d.ts +23 -0
  75. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +50 -0
  76. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +1 -0
  77. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +10 -0
  78. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +1 -0
  79. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -0
  80. package/dist/service/cloudfront/command/create-function/create-function.handler.js +7 -1
  81. package/dist/service/cloudfront/command/function/sim-cf-describe-function.d.ts +22 -0
  82. package/dist/service/cloudfront/command/function/sim-cf-describe-function.js +32 -0
  83. package/dist/service/cloudfront/command/function/sim-cf-function-access.d.ts +48 -0
  84. package/dist/service/cloudfront/command/function/sim-cf-function-access.js +48 -0
  85. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.d.ts +97 -0
  86. package/dist/service/cloudfront/command/function/sim-cf-function-command.types.js +10 -0
  87. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.d.ts +12 -0
  88. package/dist/service/cloudfront/command/function/sim-cf-function-lookup.js +21 -0
  89. package/dist/service/cloudfront/command/function/sim-cf-function-summary.d.ts +11 -0
  90. package/dist/service/cloudfront/command/function/sim-cf-function-summary.js +30 -0
  91. package/dist/service/cloudfront/command/function/sim-cf-get-function.d.ts +23 -0
  92. package/dist/service/cloudfront/command/function/sim-cf-get-function.js +33 -0
  93. package/dist/service/cloudfront/command/function/sim-cf-list-functions.d.ts +22 -0
  94. package/dist/service/cloudfront/command/function/sim-cf-list-functions.js +38 -0
  95. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +2 -0
  96. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.d.ts +18 -0
  97. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-cache-policy.js +30 -0
  98. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +28 -0
  99. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +41 -0
  100. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +2 -2
  101. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +6 -3
  102. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +0 -10
  103. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +0 -19
  104. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +2 -0
  105. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +4 -2
  106. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -3
  107. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +5 -5
  108. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +3 -3
  109. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +4 -4
  110. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +3 -1
  111. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +2 -0
  112. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
  113. package/dist/service/cloudfront/error/sim-cloudfront.error.js +25 -0
  114. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store-access.js +2 -10
  115. package/dist/service/cloudfront/key-value-store/sim-cf-key-value-store.js +2 -1
  116. package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +12 -0
  117. package/dist/service/cloudfront/sim-cf-authorize.d.ts +16 -0
  118. package/dist/service/cloudfront/sim-cf-authorize.js +19 -0
  119. package/dist/service/cloudfront/sim-cf-etag.d.ts +7 -0
  120. package/dist/service/cloudfront/sim-cf-etag.js +10 -0
  121. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +8 -12
  122. package/dist/service/cloudfront/sim-cloudfront-commands.js +8 -17
  123. package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +43 -0
  124. package/dist/service/cloudfront/sim-cloudfront-policies.js +53 -0
  125. package/dist/service/cloudfront/sim-cloudfront.d.ts +13 -17
  126. package/dist/service/cloudfront/sim-cloudfront.js +22 -25
  127. package/dist/service/ecr/authorize/sim-ecr-authorizer.d.ts +31 -0
  128. package/dist/service/ecr/authorize/sim-ecr-authorizer.js +38 -0
  129. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.d.ts +11 -2
  130. package/dist/service/ecr/cfn/repository/sim-cfn-ecr-repository-creator.js +11 -2
  131. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.d.ts +4 -2
  132. package/dist/service/ecr/cfn/sim-ecr-cfn-resource-factory.js +8 -9
  133. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.d.ts +7 -0
  134. package/dist/service/ecr/cfn/sim-ecr-cfn-unsupported-resource.js +9 -0
  135. package/dist/service/ecr/sim-ecr.d.ts +7 -0
  136. package/dist/service/ecr/sim-ecr.js +16 -4
  137. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.d.ts +12 -0
  138. package/dist/service/ecs/command/authorize/sim-ecs-authorizer.js +21 -0
  139. package/dist/service/ecs/command/register-task-definition/register-task-definition.handler.js +1 -0
  140. package/dist/service/ecs/sim-ecs-service-principal.d.ts +8 -0
  141. package/dist/service/ecs/sim-ecs-service-principal.js +8 -0
  142. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.d.ts +12 -0
  143. package/dist/service/eventbridge/command/authorize/sim-event-bridge-authorizer.js +21 -0
  144. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.d.ts +13 -0
  145. package/dist/service/eventbridge/command/rule/sim-event-bridge-rule-access.js +9 -0
  146. package/dist/service/eventbridge/command/target/sim-event-bridge-put-targets.js +1 -0
  147. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.d.ts +12 -0
  148. package/dist/service/firehose/command/authorize/sim-firehose-authorizer.js +20 -0
  149. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.d.ts +4 -0
  150. package/dist/service/firehose/command/sim-firehose-delivery-stream-access.js +6 -0
  151. package/dist/service/firehose/command/stream/sim-firehose-create-delivery-stream.js +3 -1
  152. package/dist/service/firehose/sim-firehose-service-principal.d.ts +8 -0
  153. package/dist/service/firehose/sim-firehose-service-principal.js +8 -0
  154. package/dist/service/firehose/source/sim-firehose-source.d.ts +5 -0
  155. package/dist/service/firehose/source/sim-firehose-source.js +5 -0
  156. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +2 -2
  157. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.d.ts +10 -0
  158. package/dist/service/glue/cfn/sim-cfn-glue-generated-name.js +25 -0
  159. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +2 -3
  160. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +33 -2
  161. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +33 -2
  162. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +4 -3
  163. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +9 -3
  164. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +14 -5
  165. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +16 -12
  166. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +36 -7
  167. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.js +22 -11
  168. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +10 -71
  169. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +7 -2
  170. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +87 -0
  171. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.js +1 -0
  172. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +21 -3
  173. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +34 -10
  174. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +29 -8
  175. package/dist/service/iam/authorize/match/sim-iam-principal-match.js +38 -13
  176. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.d.ts +74 -0
  177. package/dist/service/iam/authorize/pass-role/sim-iam-pass-role-authorizer.js +92 -0
  178. package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +21 -5
  179. package/dist/service/iam/authorize/sim-iam-account-auth-z.js +7 -3
  180. package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +5 -2
  181. package/dist/service/iam/authorize/sim-iam-authorizer.js +3 -1
  182. package/dist/service/iam/authorize/sim-iam-inter-service-auth-z.d.ts +1 -1
  183. package/dist/service/iam/authorize/sim-iam-wildcard.js +39 -4
  184. package/dist/service/iam/cfn/managed-policy/sim-cfn-iam-managed-policy-creator.js +2 -1
  185. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.d.ts +16 -0
  186. package/dist/service/iam/cfn/name/sim-cfn-iam-generated-name.js +36 -0
  187. package/dist/service/iam/cfn/role/sim-cfn-iam-role-properties-parser.js +9 -8
  188. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.d.ts +17 -0
  189. package/dist/service/iam/cfn/sim-cfn-iam-optional-string.js +17 -0
  190. package/dist/service/iam/cfn/user/sim-cfn-iam-user-properties-parser.js +4 -8
  191. package/dist/service/iam/command/policy/create-policy/create-policy-input-resolver.js +2 -0
  192. package/dist/service/iam/command/policy/put-role-policy/put-role-policy.handler.js +5 -0
  193. package/dist/service/iam/command/policy/put-user-policy/put-user-policy.handler.js +5 -0
  194. package/dist/service/iam/command/role/create-role/create-role.handler.js +4 -1
  195. package/dist/service/iam/error/sim-iam.error.d.ts +11 -0
  196. package/dist/service/iam/error/sim-iam.error.js +13 -0
  197. package/dist/service/iam/index.d.ts +1 -0
  198. package/dist/service/iam/policy/sim-iam-policy-document-of-size.d.ts +18 -0
  199. package/dist/service/iam/policy/sim-iam-policy-document-of-size.js +41 -0
  200. package/dist/service/iam/role/sim-iam-deploy-role.d.ts +56 -0
  201. package/dist/service/iam/role/sim-iam-deploy-role.js +50 -0
  202. package/dist/service/iam/role/sim-iam-role-with-policy.factory.d.ts +11 -0
  203. package/dist/service/iam/role/sim-iam-role-with-policy.factory.js +4 -2
  204. package/dist/service/iam/sim-iam-account-parts.d.ts +16 -0
  205. package/dist/service/iam/sim-iam-account-parts.js +2 -0
  206. package/dist/service/iam/sim-iam.d.ts +12 -2
  207. package/dist/service/iam/sim-iam.js +12 -0
  208. package/dist/service/iam/validate/size/sim-iam-policy-document-size.d.ts +57 -0
  209. package/dist/service/iam/validate/size/sim-iam-policy-document-size.js +71 -0
  210. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +3 -1
  211. package/dist/service/kms/command/authorize/sim-kms-authorizer.js +4 -1
  212. package/dist/service/kms/command/sim-kms-request-options.d.ts +11 -0
  213. package/dist/service/kms/key/sim-kms-key-policy.d.ts +5 -4
  214. package/dist/service/kms/key/sim-kms-key-policy.js +4 -3
  215. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.d.ts +2 -2
  216. package/dist/service/lambda/cfn/function/sim-cfn-lambda-function-properties-parser.js +4 -3
  217. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.d.ts +10 -0
  218. package/dist/service/lambda/cfn/function/sim-cfn-lambda-generated-function-name.js +25 -0
  219. package/dist/service/lambda/command/authorize/sim-lambda-resource-policies.d.ts +1 -1
  220. package/dist/service/lambda/command/create-function/create-function-authorizer.d.ts +9 -2
  221. package/dist/service/lambda/command/create-function/create-function-authorizer.js +16 -2
  222. package/dist/service/lambda/command/create-function/create-function.handler.js +1 -1
  223. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +7 -2
  224. package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +14 -2
  225. package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +1 -1
  226. package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +10 -1
  227. package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +25 -1
  228. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.d.ts +13 -0
  229. package/dist/service/lambda/function/logging/sim-lambda-invoke-error-log.js +18 -0
  230. package/dist/service/lambda/sim-lambda-service-principal.d.ts +7 -0
  231. package/dist/service/lambda/sim-lambda-service-principal.js +7 -0
  232. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.d.ts +46 -0
  233. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-authorization.js +49 -0
  234. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.d.ts +5 -0
  235. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-creator.js +6 -0
  236. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.d.ts +5 -0
  237. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-destination-creator.js +6 -0
  238. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.d.ts +5 -0
  239. package/dist/service/logs/cfn/delivery/sim-cfn-delivery-source-creator.js +6 -0
  240. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.d.ts +9 -2
  241. package/dist/service/logs/cfn/group/sim-cfn-log-group-creator.js +34 -5
  242. package/dist/service/logs/cfn/sim-logs-cfn-resource-deleter.js +1 -1
  243. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.d.ts +4 -0
  244. package/dist/service/logs/cfn/sim-logs-cfn-resource-factory.js +9 -4
  245. package/dist/service/logs/sim-logs-commands.d.ts +3 -0
  246. package/dist/service/logs/sim-logs-commands.js +4 -0
  247. package/dist/service/logs/sim-logs.js +6 -1
  248. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +2 -2
  249. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +4 -3
  250. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.d.ts +12 -0
  251. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-generated-name.js +22 -0
  252. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +1 -1
  253. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.d.ts +10 -1
  254. package/dist/service/scheduler/command/authorize/sim-scheduler-authorizer.js +19 -1
  255. package/dist/service/scheduler/command/schedule/sim-scheduler-create-schedule.js +1 -0
  256. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.d.ts +8 -0
  257. package/dist/service/scheduler/command/schedule/sim-scheduler-schedule-access.js +9 -0
  258. package/dist/service/scheduler/command/schedule/sim-scheduler-update-schedule.js +1 -0
  259. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.d.ts +15 -0
  260. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-generated-name.js +22 -0
  261. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.d.ts +4 -10
  262. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-properties.js +13 -31
  263. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.d.ts +17 -0
  264. package/dist/service/secretsmanager/cfn/secret/sim-cfn-secrets-manager-secret-value.js +30 -0
  265. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.d.ts +6 -0
  266. package/dist/service/secretsmanager/secret/sim-secrets-manager-secret-name.js +8 -3
  267. package/dist/service/sns/command/authorize/sim-sns-topic-resource-policies.d.ts +1 -1
  268. package/dist/service/sqs/command/authorize/sim-sqs-queue-resource-policies.d.ts +1 -1
  269. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.d.ts +16 -0
  270. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-generated-parameter-name.js +23 -0
  271. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.d.ts +2 -4
  272. package/dist/service/ssm/cfn/parameter/sim-cfn-ssm-parameter-properties.js +5 -5
  273. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +6 -4
  274. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.js +4 -4
  275. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.d.ts +17 -0
  276. package/dist/service/ssm/parameter/sim-ssm-parameter-arn.js +20 -0
  277. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +15 -9
  278. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +20 -10
  279. package/dist/service/ssm/parameter/sim-ssm-parameter-name.js +3 -12
  280. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.d.ts +41 -0
  281. package/dist/service/stepfunctions/command/authorize/sim-step-functions-authorizer.js +64 -0
  282. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.d.ts +5 -2
  283. package/dist/service/stepfunctions/command/machine/sim-state-machine-create.js +6 -2
  284. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.d.ts +26 -0
  285. package/dist/service/stepfunctions/command/machine/sim-state-machine-delete.js +29 -0
  286. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.d.ts +7 -0
  287. package/dist/service/stepfunctions/command/machine/sim-state-machine-lookup.js +12 -3
  288. package/dist/service/stepfunctions/command/machine/sim-state-machine-update.d.ts +19 -0
  289. package/dist/service/stepfunctions/command/machine/{sim-state-machine-writes.js → sim-state-machine-update.js} +3 -14
  290. package/dist/service/stepfunctions/sim-step-functions.d.ts +8 -2
  291. package/dist/service/stepfunctions/sim-step-functions.js +26 -9
  292. package/dist/service/sts/auth-z/assume-role-auth-z-coordinator.d.ts +9 -2
  293. package/dist/service/sts/auth-z/assume-role-auth-z-coordinator.js +2 -2
  294. package/dist/service/sts/auth-z/assume-role-source-account-auth-z.d.ts +10 -4
  295. package/dist/service/sts/auth-z/assume-role-source-account-auth-z.js +8 -7
  296. package/dist/service/sts/auth-z/assume-role-target-auth-z.d.ts +2 -2
  297. package/dist/service/sts/auth-z/assume-role-trust-policy-authorizer.d.ts +6 -2
  298. package/dist/service/sts/auth-z/assume-role-trust-policy-authorizer.js +14 -11
  299. package/dist/service/sts/command/assume-role/assume-role.handler.d.ts +10 -1
  300. package/dist/service/sts/command/assume-role/assume-role.handler.js +6 -2
  301. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.d.ts +10 -1
  302. package/dist/service/sts/command/get-caller-identity/get-caller-identity.handler.js +5 -1
  303. package/dist/service/sts/service-role/sim-service-role.js +5 -1
  304. package/dist/service/sts/sim-sts.d.ts +18 -1
  305. package/dist/service/sts/sim-sts.js +8 -0
  306. package/dist/util/memo/bounded-memo.d.ts +36 -0
  307. package/dist/util/memo/bounded-memo.js +58 -0
  308. package/docs/README.md +54 -0
  309. package/docs/ai-skill/README.md +69 -0
  310. package/docs/cli/README.md +284 -0
  311. package/docs/factories/README.md +140 -0
  312. package/docs/lint/README.md +176 -0
  313. package/docs/non-aws-dependencies/README.md +261 -0
  314. package/docs/sdk/README.md +274 -0
  315. package/docs/serve/README.md +1126 -0
  316. package/docs/services/acm/README.md +823 -0
  317. package/docs/services/apigateway/README.md +1919 -0
  318. package/docs/services/apigatewayv2/README.md +2678 -0
  319. package/docs/services/athena/README.md +1044 -0
  320. package/docs/services/bedrock/README.md +350 -0
  321. package/docs/services/cloudformation/README.md +3625 -0
  322. package/docs/services/cloudfront/README.md +3098 -0
  323. package/docs/services/cloudwatch/README.md +422 -0
  324. package/docs/services/cognito/README.md +4924 -0
  325. package/docs/services/dynamodb/README.md +3785 -0
  326. package/docs/services/ecr/README.md +302 -0
  327. package/docs/services/ecs/README.md +2021 -0
  328. package/docs/services/elbv2/README.md +1901 -0
  329. package/docs/services/eventbridge/README.md +1118 -0
  330. package/docs/services/firehose/README.md +811 -0
  331. package/docs/services/glue/README.md +507 -0
  332. package/docs/services/iam/README.md +1578 -0
  333. package/docs/services/kinesis/README.md +455 -0
  334. package/docs/services/kms/README.md +664 -0
  335. package/docs/services/lambda/README.md +3719 -0
  336. package/docs/services/logs/README.md +882 -0
  337. package/docs/services/organizations/README.md +574 -0
  338. package/docs/services/personalize/README.md +835 -0
  339. package/docs/services/rekognition/README.md +1070 -0
  340. package/docs/services/route53/README.md +1783 -0
  341. package/docs/services/s3/README.md +3029 -0
  342. package/docs/services/scheduler/README.md +814 -0
  343. package/docs/services/secretsmanager/README.md +670 -0
  344. package/docs/services/ses/README.md +1013 -0
  345. package/docs/services/sns/README.md +1904 -0
  346. package/docs/services/sqs/README.md +1185 -0
  347. package/docs/services/ssm/README.md +1096 -0
  348. package/docs/services/stepfunctions/README.md +1341 -0
  349. package/docs/services/sts/README.md +245 -0
  350. package/docs/services/wafv2/README.md +1380 -0
  351. package/docs/terraform/README.md +248 -0
  352. package/docs/time/README.md +284 -0
  353. package/llms.txt +59 -0
  354. package/package.json +7 -4
  355. package/dist/service/stepfunctions/command/machine/sim-state-machine-writes.d.ts +0 -25
@@ -0,0 +1,23 @@
1
+ import type { SimCloudFrontFunction } from "./sim-cloudfront-function.js";
2
+ /**
3
+ * The two stages a CloudFront Function can be read from.
4
+ *
5
+ * A Function is created into DEVELOPMENT and reaches LIVE once it is
6
+ * published. LIVE is the copy a Distribution runs.
7
+ */
8
+ export type SimCloudFrontFunctionStage = "DEVELOPMENT" | "LIVE";
9
+ /**
10
+ * Read the stage a request asked for.
11
+ *
12
+ * CloudFront defaults an omitted `Stage` to DEVELOPMENT, the copy a Function
13
+ * is created into, and refuses a value that names neither stage.
14
+ */
15
+ export declare function simCffRequestedStage(stage: string | undefined): SimCloudFrontFunctionStage;
16
+ /**
17
+ * Whether a Function can be read from a stage.
18
+ *
19
+ * Every Function is in DEVELOPMENT from the moment it is created. It reaches
20
+ * LIVE once it is published, so a Function still waiting to publish answers to
21
+ * DEVELOPMENT alone.
22
+ */
23
+ export declare function simCffInStage(cloudFrontFunction: SimCloudFrontFunction, stage: SimCloudFrontFunctionStage): boolean;
@@ -0,0 +1,30 @@
1
+ import { SimCloudFrontInvalidArgument } from "../error/sim-cloudfront.error.js";
2
+ const simCffStages = new Set([
3
+ "DEVELOPMENT",
4
+ "LIVE",
5
+ ]);
6
+ /**
7
+ * Read the stage a request asked for.
8
+ *
9
+ * CloudFront defaults an omitted `Stage` to DEVELOPMENT, the copy a Function
10
+ * is created into, and refuses a value that names neither stage.
11
+ */
12
+ export function simCffRequestedStage(stage) {
13
+ if (stage === undefined) {
14
+ return "DEVELOPMENT";
15
+ }
16
+ if (!simCffStages.has(stage)) {
17
+ throw new SimCloudFrontInvalidArgument(`CloudFront Function stage ${stage} is neither DEVELOPMENT nor LIVE`);
18
+ }
19
+ return stage;
20
+ }
21
+ /**
22
+ * Whether a Function can be read from a stage.
23
+ *
24
+ * Every Function is in DEVELOPMENT from the moment it is created. It reaches
25
+ * LIVE once it is published, so a Function still waiting to publish answers to
26
+ * DEVELOPMENT alone.
27
+ */
28
+ export function simCffInStage(cloudFrontFunction, stage) {
29
+ return stage === "DEVELOPMENT" || cloudFrontFunction.status !== "UNPUBLISHED";
30
+ }
@@ -4,9 +4,10 @@ import type { Brand } from "../../../util/brand.type.js";
4
4
  import type { SimArn } from "../../aws/arn.js";
5
5
  import { type SimAwsAccountId } from "../../aws/sim-aws-account.js";
6
6
  import type { SimCloudFrontKeyValueStore } from "../key-value-store/sim-cf-key-value-store.js";
7
+ import { SimCffConfiguration, type SimCffConfigurationProperties } from "./sim-cff-configuration.js";
7
8
  export type SimCloudFrontFunctionName = Brand<string, "SimCloudFrontFunctionName">;
8
9
  export type CloudFrontFunctionStatus = "UNPUBLISHED" | "UNASSOCIATED" | "ASSOCIATED";
9
- interface SimCloudFrontFunctionProperties {
10
+ interface SimCloudFrontFunctionProperties extends SimCffConfigurationProperties {
10
11
  name: SimCloudFrontFunctionName | string;
11
12
  status?: CloudFrontFunctionStatus;
12
13
  readonly accountId?: SimAwsAccountId;
@@ -22,6 +23,10 @@ export declare class SimCloudFrontFunction {
22
23
  #private;
23
24
  readonly name: SimCloudFrontFunctionName;
24
25
  readonly accountId: SimAwsAccountId;
26
+ /**
27
+ * What this Function was created with, which every read of it reports.
28
+ */
29
+ readonly config: SimCffConfiguration;
25
30
  private readonly handlerFunction;
26
31
  private readonly eventAdapter;
27
32
  private readonly associatedKeyValueStore;
@@ -1,5 +1,6 @@
1
1
  import { SimCffEventAdapter } from "./adapter/sim-cff-event-adapter.js";
2
2
  import { makeSimAwsAccountId, } from "../../aws/sim-aws-account.js";
3
+ import { SimCffConfiguration, } from "./sim-cff-configuration.js";
3
4
  import { cffCloudFrontModule } from "./kvs/cff-cloudfront-module.js";
4
5
  import { simCffCloudFrontGlobal } from "./kvs/sim-cff-cloudfront-global.js";
5
6
  export const defaultCffHandler = (event) => {
@@ -14,6 +15,10 @@ export const defaultCffHandler = (event) => {
14
15
  export class SimCloudFrontFunction {
15
16
  name;
16
17
  accountId;
18
+ /**
19
+ * What this Function was created with, which every read of it reports.
20
+ */
21
+ config;
17
22
  #status;
18
23
  handlerFunction;
19
24
  eventAdapter;
@@ -23,6 +28,7 @@ export class SimCloudFrontFunction {
23
28
  this.name = name;
24
29
  this.#status = status;
25
30
  this.accountId = accountId;
31
+ this.config = new SimCffConfiguration(properties);
26
32
  this.handlerFunction = handlerFunction;
27
33
  this.eventAdapter = eventAdapter;
28
34
  this.associatedKeyValueStore = properties.keyValueStore;
@@ -0,0 +1,27 @@
1
+ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
2
+ import type { SimCfnTemplateValueRecord } from "../../../cloudformation/template/value/sim-cfn-template-value.js";
3
+ import { SimCloudFrontCachePolicy } from "../../cache-policy/sim-cf-cache-policy.js";
4
+ /**
5
+ * Reads an AWS::CloudFront::CachePolicy Resource into a simulated policy.
6
+ *
7
+ * `Name` and `Comment` are what the policy carries. The cache key sections and
8
+ * the TTLs are read past: what they configure is a cache this simulation has
9
+ * yet to grow. A Resource missing its `Name` is refused, as CloudFormation
10
+ * refuses one.
11
+ */
12
+ export declare class SimCfnCfCachePolicyConfig {
13
+ private readonly resource;
14
+ private readonly properties;
15
+ constructor(properties: {
16
+ readonly resource: SimCfnResource;
17
+ readonly properties: SimCfnTemplateValueRecord;
18
+ });
19
+ /**
20
+ * Build the simulated policy this Resource describes.
21
+ */
22
+ build(): SimCloudFrontCachePolicy;
23
+ /**
24
+ * Refuse this Resource, saying which part of it could not be read.
25
+ */
26
+ private refuse;
27
+ }
@@ -0,0 +1,42 @@
1
+ import { isRecord } from "../../../../util/type-guard/record.js";
2
+ import { SimCloudFrontCachePolicy } from "../../cache-policy/sim-cf-cache-policy.js";
3
+ /**
4
+ * Reads an AWS::CloudFront::CachePolicy Resource into a simulated policy.
5
+ *
6
+ * `Name` and `Comment` are what the policy carries. The cache key sections and
7
+ * the TTLs are read past: what they configure is a cache this simulation has
8
+ * yet to grow. A Resource missing its `Name` is refused, as CloudFormation
9
+ * refuses one.
10
+ */
11
+ export class SimCfnCfCachePolicyConfig {
12
+ resource;
13
+ properties;
14
+ constructor(properties) {
15
+ this.resource = properties.resource;
16
+ this.properties = properties.properties;
17
+ }
18
+ /**
19
+ * Build the simulated policy this Resource describes.
20
+ */
21
+ build() {
22
+ const config = this.properties["CachePolicyConfig"];
23
+ if (!isRecord(config)) {
24
+ return this.refuse("CachePolicyConfig must be an object");
25
+ }
26
+ const name = config["Name"];
27
+ if (typeof name !== "string") {
28
+ return this.refuse("CachePolicyConfig needs a string Name");
29
+ }
30
+ const comment = config["Comment"];
31
+ return new SimCloudFrontCachePolicy({
32
+ name,
33
+ ...(typeof comment === "string" && { comment }),
34
+ });
35
+ }
36
+ /**
37
+ * Refuse this Resource, saying which part of it could not be read.
38
+ */
39
+ refuse(detail) {
40
+ throw new Error(`Invalid AWS::CloudFront::CachePolicy ${this.resource.logicalId}: ${detail}`);
41
+ }
42
+ }
@@ -0,0 +1,24 @@
1
+ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
2
+ import type { SimCfnTemplateValueRecord } from "../../../cloudformation/template/value/sim-cfn-template-value.js";
3
+ import type { SimCloudFront } from "../../sim-cloudfront.js";
4
+ import type { SimCloudFrontCachePolicy } from "../../cache-policy/sim-cf-cache-policy.js";
5
+ interface SimCfnCfCachePolicyCreatorProperties {
6
+ readonly cloudFront: SimCloudFront;
7
+ }
8
+ /**
9
+ * Creates simulated cache policies from AWS::CloudFront::CachePolicy
10
+ * Resources.
11
+ */
12
+ export declare class SimCfnCfCachePolicyCreator {
13
+ private readonly cloudFront;
14
+ constructor(properties: SimCfnCfCachePolicyCreatorProperties);
15
+ /**
16
+ * Create and store the policy one Resource describes.
17
+ */
18
+ create(resource: SimCfnResource, properties: SimCfnTemplateValueRecord): SimCloudFrontCachePolicy;
19
+ /**
20
+ * Remove a policy created from a Resource.
21
+ */
22
+ delete(resource: SimCfnResource): void;
23
+ }
24
+ export {};
@@ -0,0 +1,32 @@
1
+ import { SimCfnCfCachePolicyConfig } from "./sim-cfn-cf-cache-policy-config.js";
2
+ /**
3
+ * Creates simulated cache policies from AWS::CloudFront::CachePolicy
4
+ * Resources.
5
+ */
6
+ export class SimCfnCfCachePolicyCreator {
7
+ cloudFront;
8
+ constructor(properties) {
9
+ this.cloudFront = properties.cloudFront;
10
+ }
11
+ /**
12
+ * Create and store the policy one Resource describes.
13
+ */
14
+ create(resource, properties) {
15
+ const policy = new SimCfnCfCachePolicyConfig({
16
+ resource,
17
+ properties,
18
+ }).build();
19
+ this.cloudFront.addCachePolicy(policy);
20
+ return policy;
21
+ }
22
+ /**
23
+ * Remove a policy created from a Resource.
24
+ */
25
+ delete(resource) {
26
+ const policy = resource.simResource;
27
+ if (policy === undefined) {
28
+ return;
29
+ }
30
+ this.cloudFront.removeCachePolicy(policy.id);
31
+ }
32
+ }
@@ -2,8 +2,8 @@ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-re
2
2
  import type { SimCloudFrontDistributionConfig } from "../../command/create-distribution/create-distribution.command.js";
3
3
  import type { SimCloudFront } from "../../sim-cloudfront.js";
4
4
  /**
5
- * The DistributionConfig to deploy, without a `ResponseHeadersPolicyId` naming
6
- * a response headers policy this simulation does not hold.
5
+ * The DistributionConfig to deploy, without a policy ID naming a response
6
+ * headers policy or a cache policy this simulation does not hold.
7
7
  *
8
8
  * `CreateDistribution` refuses such an ID, as real CloudFront refuses one, and
9
9
  * a Distribution deployed from a template is the one place that refusal costs
@@ -14,10 +14,11 @@ import type { SimCloudFront } from "../../sim-cloudfront.js";
14
14
  * make with it. That is the same reason an absent `WebACLId` is left out here.
15
15
  *
16
16
  * So the property is left off that Behavior and recorded on
17
- * `stack.ignoredProperties`. The Behavior deploys and serves every response
18
- * without the policy's headers. A test that cares reads the record.
17
+ * `stack.ignoredProperties`. The Behavior deploys, and a test that cares reads
18
+ * the record. CloudFront's managed policies count as held, so a Behavior
19
+ * naming one keeps it.
19
20
  *
20
- * One Behavior losing its policy leaves the others holding theirs. CloudFront's
21
- * managed policies count as held, so a Behavior naming one keeps it.
21
+ * One Behavior losing a policy leaves the others holding theirs, and a
22
+ * Behavior losing one kind of policy keeps the other.
22
23
  */
23
- export declare function simCfnCfDistroWithHeldResponseHeadersPolicies(resource: SimCfnResource, distributionConfig: SimCloudFrontDistributionConfig, cloudFront: SimCloudFront): SimCloudFrontDistributionConfig;
24
+ export declare function simCfnCfDistroWithHeldBehaviorPolicies(resource: SimCfnResource, distributionConfig: SimCloudFrontDistributionConfig, cloudFront: SimCloudFront): SimCloudFrontDistributionConfig;
@@ -1,39 +1,12 @@
1
1
  import { normalizeSimCfList } from "../../command/create-distribution/sim-cf-normalize-list.js";
2
+ import { SimCfnCfDistroPolicyDrops } from "./sim-cfn-cf-distro-policy-drops.js";
2
3
  /**
3
4
  * The path a dropped policy on the default Behavior is recorded under.
4
5
  */
5
6
  const defaultBehaviorPath = "DistributionConfig.DefaultCacheBehavior";
6
7
  /**
7
- * Takes a `ResponseHeadersPolicyId` naming a policy this simulation does not
8
- * hold off the Behavior that named it, and records each one.
9
- */
10
- class SimCfnCfDistroPolicyDrops {
11
- resource;
12
- cloudFront;
13
- count = 0;
14
- constructor(resource, cloudFront) {
15
- this.resource = resource;
16
- this.cloudFront = cloudFront;
17
- }
18
- /**
19
- * One Behavior, keeping a policy that is here and dropping one that is not.
20
- */
21
- heldPolicy(behavior, behaviorPath) {
22
- const policyId = behavior.ResponseHeadersPolicyId;
23
- if (policyId === undefined ||
24
- this.cloudFront.getResponseHeadersPolicyById(policyId) !== undefined) {
25
- return behavior;
26
- }
27
- this.count += 1;
28
- this.resource.ignoreProperty(`${behaviorPath}.ResponseHeadersPolicyId`, `response headers policy ${policyId} is not held by this simulation, ` +
29
- `so the Behavior is deployed without one and serves every response ` +
30
- `without the headers that policy would have set`);
31
- return { ...behavior, ResponseHeadersPolicyId: undefined };
32
- }
33
- }
34
- /**
35
- * The DistributionConfig to deploy, without a `ResponseHeadersPolicyId` naming
36
- * a response headers policy this simulation does not hold.
8
+ * The DistributionConfig to deploy, without a policy ID naming a response
9
+ * headers policy or a cache policy this simulation does not hold.
37
10
  *
38
11
  * `CreateDistribution` refuses such an ID, as real CloudFront refuses one, and
39
12
  * a Distribution deployed from a template is the one place that refusal costs
@@ -44,13 +17,14 @@ class SimCfnCfDistroPolicyDrops {
44
17
  * make with it. That is the same reason an absent `WebACLId` is left out here.
45
18
  *
46
19
  * So the property is left off that Behavior and recorded on
47
- * `stack.ignoredProperties`. The Behavior deploys and serves every response
48
- * without the policy's headers. A test that cares reads the record.
20
+ * `stack.ignoredProperties`. The Behavior deploys, and a test that cares reads
21
+ * the record. CloudFront's managed policies count as held, so a Behavior
22
+ * naming one keeps it.
49
23
  *
50
- * One Behavior losing its policy leaves the others holding theirs. CloudFront's
51
- * managed policies count as held, so a Behavior naming one keeps it.
24
+ * One Behavior losing a policy leaves the others holding theirs, and a
25
+ * Behavior losing one kind of policy keeps the other.
52
26
  */
53
- export function simCfnCfDistroWithHeldResponseHeadersPolicies(resource, distributionConfig, cloudFront) {
27
+ export function simCfnCfDistroWithHeldBehaviorPolicies(resource, distributionConfig, cloudFront) {
54
28
  const drops = new SimCfnCfDistroPolicyDrops(resource, cloudFront);
55
29
  const defaultCacheBehavior = distroDefaultBehavior(drops, distributionConfig);
56
30
  const cacheBehaviors = distroCacheBehaviors(drops, distributionConfig);
@@ -71,7 +45,7 @@ function distroDefaultBehavior(drops, distributionConfig) {
71
45
  if (behavior === undefined) {
72
46
  return undefined;
73
47
  }
74
- return drops.heldPolicy(behavior, defaultBehaviorPath);
48
+ return drops.heldPolicies(behavior, defaultBehaviorPath);
75
49
  }
76
50
  /**
77
51
  * Every path-based cache Behavior, each without a policy that is not here.
@@ -88,6 +62,6 @@ function distroCacheBehaviors(drops, distributionConfig) {
88
62
  }
89
63
  return {
90
64
  ...behaviors,
91
- Items: items.map((behavior, index) => drops.heldPolicy(behavior, `DistributionConfig.CacheBehaviors.${behavior.PathPattern ?? String(index)}`)),
65
+ Items: items.map((behavior, index) => drops.heldPolicies(behavior, `DistributionConfig.CacheBehaviors.${behavior.PathPattern ?? String(index)}`)),
92
66
  };
93
67
  }
@@ -10,11 +10,12 @@ interface SimCfnCfDistroCreatorProperties {
10
10
  *
11
11
  * A `WebACLId` naming a web ACL this simulation does not hold is left out and
12
12
  * recorded, and so are a Lambda@Edge association it cannot run and a
13
- * `ResponseHeadersPolicyId` naming a policy it does not hold. CloudFront has no
14
- * Resource of its own for any of the three, so all of them live on the
15
- * Distribution itself, and refusing one would take the Distribution down over
16
- * something that was never the point of the template. The site a local dev
17
- * server and a suite of tests make requests to has to survive that.
13
+ * `ResponseHeadersPolicyId` or `CachePolicyId` naming a policy it does not
14
+ * hold. CloudFront has no Resource of its own for any of them, so all of them
15
+ * live on the Distribution itself, and refusing one would take the
16
+ * Distribution down over something that was never the point of the template.
17
+ * The site a local dev server and a suite of tests make requests to has to
18
+ * survive that.
18
19
  */
19
20
  export declare class SimCfnCfDistroCreator {
20
21
  private readonly cloudFront;
@@ -1,7 +1,7 @@
1
1
  import { assertDefined, assertNotNull, } from "../../../../util/type-guard/defined.js";
2
2
  import { SimCfnCfDistroConfigValidator } from "./sim-cfn-cf-distro-config-validator.js";
3
3
  import { simCfnCfDistroWithRunnableEdgeAssociations } from "./sim-cfn-cf-distro-edge-associations.js";
4
- import { simCfnCfDistroWithHeldResponseHeadersPolicies } from "./sim-cfn-cf-distro-response-headers-policy.js";
4
+ import { simCfnCfDistroWithHeldBehaviorPolicies } from "./sim-cfn-cf-distro-behavior-policies.js";
5
5
  import { simCfnCfDistroWithoutAbsentWebAcl } from "./sim-cfn-cf-distro-web-acl.js";
6
6
  import { simCfnResourceCallerOptions } from "../../../cloudformation/resource/caller/sim-cfn-resource-caller-options.js";
7
7
  /**
@@ -9,11 +9,12 @@ import { simCfnResourceCallerOptions } from "../../../cloudformation/resource/ca
9
9
  *
10
10
  * A `WebACLId` naming a web ACL this simulation does not hold is left out and
11
11
  * recorded, and so are a Lambda@Edge association it cannot run and a
12
- * `ResponseHeadersPolicyId` naming a policy it does not hold. CloudFront has no
13
- * Resource of its own for any of the three, so all of them live on the
14
- * Distribution itself, and refusing one would take the Distribution down over
15
- * something that was never the point of the template. The site a local dev
16
- * server and a suite of tests make requests to has to survive that.
12
+ * `ResponseHeadersPolicyId` or `CachePolicyId` naming a policy it does not
13
+ * hold. CloudFront has no Resource of its own for any of them, so all of them
14
+ * live on the Distribution itself, and refusing one would take the
15
+ * Distribution down over something that was never the point of the template.
16
+ * The site a local dev server and a suite of tests make requests to has to
17
+ * survive that.
17
18
  */
18
19
  export class SimCfnCfDistroCreator {
19
20
  cloudFront;
@@ -49,5 +50,5 @@ export class SimCfnCfDistroCreator {
49
50
  * act on, each recorded on the Resource.
50
51
  */
51
52
  function deployableConfig(resource, distributionConfig, simAws, cloudFront) {
52
- return simCfnCfDistroWithoutAbsentWebAcl(resource, simCfnCfDistroWithHeldResponseHeadersPolicies(resource, simCfnCfDistroWithRunnableEdgeAssociations(resource, distributionConfig, simAws), cloudFront), simAws);
53
+ return simCfnCfDistroWithoutAbsentWebAcl(resource, simCfnCfDistroWithHeldBehaviorPolicies(resource, simCfnCfDistroWithRunnableEdgeAssociations(resource, distributionConfig, simAws), cloudFront), simAws);
53
54
  }
@@ -0,0 +1,23 @@
1
+ import type { SimCfnResource } from "../../../cloudformation/resource/sim-cfn-resource.js";
2
+ import type { SimCloudFrontCacheBehaviorConfig } from "../../command/create-distribution/create-distribution.command.js";
3
+ import type { SimCloudFront } from "../../sim-cloudfront.js";
4
+ /**
5
+ * Takes a policy ID naming a policy this simulation does not hold off the
6
+ * Behavior that named it, and records each one on the Resource.
7
+ */
8
+ export declare class SimCfnCfDistroPolicyDrops {
9
+ private readonly resource;
10
+ private readonly cloudFront;
11
+ count: number;
12
+ constructor(resource: SimCfnResource, cloudFront: SimCloudFront);
13
+ /**
14
+ * One Behavior, keeping the policies that are here and dropping those that
15
+ * are not.
16
+ */
17
+ heldPolicies(behavior: SimCloudFrontCacheBehaviorConfig, behaviorPath: string): SimCloudFrontCacheBehaviorConfig;
18
+ /**
19
+ * One policy property of one Behavior, dropped where the ID names nothing
20
+ * this simulation holds.
21
+ */
22
+ private heldPolicy;
23
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Takes a policy ID naming a policy this simulation does not hold off the
3
+ * Behavior that named it, and records each one on the Resource.
4
+ */
5
+ export class SimCfnCfDistroPolicyDrops {
6
+ resource;
7
+ cloudFront;
8
+ count = 0;
9
+ constructor(resource, cloudFront) {
10
+ this.resource = resource;
11
+ this.cloudFront = cloudFront;
12
+ }
13
+ /**
14
+ * One Behavior, keeping the policies that are here and dropping those that
15
+ * are not.
16
+ */
17
+ heldPolicies(behavior, behaviorPath) {
18
+ const withHeaders = this.heldPolicy(behavior, behaviorPath, "ResponseHeadersPolicyId", (policyId) => this.cloudFront.getResponseHeadersPolicyById(policyId) !== undefined, headersPolicyDropReason);
19
+ return this.heldPolicy(withHeaders, behaviorPath, "CachePolicyId", (policyId) => this.cloudFront.getCachePolicyById(policyId) !== undefined, cachePolicyDropReason);
20
+ }
21
+ /**
22
+ * One policy property of one Behavior, dropped where the ID names nothing
23
+ * this simulation holds.
24
+ */
25
+ heldPolicy(behavior, behaviorPath, property, held, reason) {
26
+ // oxlint-disable-next-line security/detect-object-injection
27
+ const policyId = behavior[property];
28
+ if (policyId === undefined || held(policyId)) {
29
+ return behavior;
30
+ }
31
+ this.count += 1;
32
+ this.resource.ignoreProperty(`${behaviorPath}.${property}`, reason(policyId));
33
+ return { ...behavior, [property]: undefined };
34
+ }
35
+ }
36
+ /**
37
+ * What a Behavior loses along with a response headers policy.
38
+ */
39
+ function headersPolicyDropReason(policyId) {
40
+ return (`response headers policy ${policyId} is not held by this simulation, so ` +
41
+ `the Behavior is deployed without one and serves every response without ` +
42
+ `the headers that policy would have set`);
43
+ }
44
+ /**
45
+ * What a Behavior loses along with a cache policy.
46
+ */
47
+ function cachePolicyDropReason(policyId) {
48
+ return (`cache policy ${policyId} is not held by this simulation, so the ` +
49
+ `Behavior is deployed without one and reports no CachePolicyId`);
50
+ }
@@ -9,6 +9,7 @@ export declare class SimCloudFrontCloudFormationResourceFactory implements SimCf
9
9
  private readonly functionCreator;
10
10
  private readonly distroDeleter;
11
11
  private readonly responseHeadersPolicyCreator;
12
+ private readonly cachePolicyCreator;
12
13
  private readonly originAccessControlCreator;
13
14
  private readonly keyValueStoreCreator;
14
15
  constructor(cloudFront: SimCloudFront);
@@ -3,6 +3,7 @@ import { SimCfnCfDistroCreator } from "./distro/sim-cfn-cf-distro-creator.js";
3
3
  import { SimCfnCffCreator } from "./cff/sim-cfn-cff-creator.js";
4
4
  import { SimCfnCfDistroDeleter } from "./distro/sim-cfn-cf-distro-deleter.js";
5
5
  import { SimCfnCfResponseHeadersPolicyCreator } from "./response-headers-policy/sim-cfn-cf-rh-policy-creator.js";
6
+ import { SimCfnCfCachePolicyCreator } from "./cache-policy/sim-cfn-cf-cache-policy-creator.js";
6
7
  import { SimCfnCfOriginAccessControlCreator } from "./origin-access-control/sim-cfn-cf-oac-creator.js";
7
8
  import { SimCfnCfKeyValueStoreCreator } from "./key-value-store/sim-cfn-cf-kvs-creator.js";
8
9
  /**
@@ -13,6 +14,7 @@ export class SimCloudFrontCloudFormationResourceFactory {
13
14
  functionCreator;
14
15
  distroDeleter;
15
16
  responseHeadersPolicyCreator;
17
+ cachePolicyCreator;
16
18
  originAccessControlCreator;
17
19
  keyValueStoreCreator;
18
20
  constructor(cloudFront) {
@@ -21,6 +23,7 @@ export class SimCloudFrontCloudFormationResourceFactory {
21
23
  this.distroDeleter = new SimCfnCfDistroDeleter({ cloudFront });
22
24
  this.responseHeadersPolicyCreator =
23
25
  new SimCfnCfResponseHeadersPolicyCreator({ cloudFront });
26
+ this.cachePolicyCreator = new SimCfnCfCachePolicyCreator({ cloudFront });
24
27
  this.originAccessControlCreator = new SimCfnCfOriginAccessControlCreator({
25
28
  cloudFront,
26
29
  });
@@ -43,6 +46,9 @@ export class SimCloudFrontCloudFormationResourceFactory {
43
46
  case "ResponseHeadersPolicy": {
44
47
  return this.responseHeadersPolicyCreator.create(resource, properties);
45
48
  }
49
+ case "CachePolicy": {
50
+ return this.cachePolicyCreator.create(resource, properties);
51
+ }
46
52
  case "OriginAccessControl": {
47
53
  return this.originAccessControlCreator.create(resource, properties);
48
54
  }
@@ -73,6 +79,10 @@ export class SimCloudFrontCloudFormationResourceFactory {
73
79
  this.responseHeadersPolicyCreator.delete(resource);
74
80
  return;
75
81
  }
82
+ case "CachePolicy": {
83
+ this.cachePolicyCreator.delete(resource);
84
+ return;
85
+ }
76
86
  case "OriginAccessControl": {
77
87
  this.originAccessControlCreator.delete(resource);
78
88
  return;
@@ -144,6 +144,7 @@ export interface SimCloudFrontDefaultCacheBehaviorConfig {
144
144
  readonly FunctionAssociations?: SimCloudFrontFunctionAssociations | undefined;
145
145
  readonly LambdaFunctionAssociations?: SimCloudFrontLambdaFunctionAssociations | undefined;
146
146
  readonly ResponseHeadersPolicyId?: string | undefined;
147
+ readonly CachePolicyId?: string | undefined;
147
148
  }
148
149
  /**
149
150
  * Minimal structural sim CloudFront cache behavior config.
@@ -7,6 +7,7 @@ import type { SimCloudFrontS3OriginResolver } from "../../origin/s3/sim-cloudfro
7
7
  import type { SimCfCustomOriginDispatcher } from "../../origin/custom/sim-cf-custom-origin-dispatcher.js";
8
8
  import type { SimCloudFrontOriginAccessControlRegistry } from "../../origin-access-control/sim-cf-origin-access-control-registry.js";
9
9
  import type { SimCloudFrontResponseHeadersPolicyRegistry } from "../../response-headers-policy/sim-cf-response-headers-policy-registry.js";
10
+ import type { SimCloudFrontCachePolicyRegistry } from "../../cache-policy/sim-cf-cache-policy-registry.js";
10
11
  import type { SimCfWebAclResolver } from "../../web-acl/sim-cf-web-acl.js";
11
12
  import type { BackgroundScheduler } from "../../../../util/background/background.js";
12
13
  import { type SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
@@ -21,6 +22,7 @@ interface CreateDistributionCommandHandlerProperties {
21
22
  readonly customOriginDispatcher?: SimCfCustomOriginDispatcher | undefined;
22
23
  readonly originAccessControls: SimCloudFrontOriginAccessControlRegistry;
23
24
  readonly responseHeadersPolicies: SimCloudFrontResponseHeadersPolicyRegistry;
25
+ readonly cachePolicies: SimCloudFrontCachePolicyRegistry;
24
26
  readonly webAclResolver?: SimCfWebAclResolver | undefined;
25
27
  readonly iam?: SimIamInterServiceAuthZ;
26
28
  readonly acmRegistry?: SimAcmRegistry | undefined;
@@ -1,6 +1,6 @@
1
1
  import { assertDefined } from "../../../../util/type-guard/defined.js";
2
2
  import { SimCloudFrontFunction, } from "../../cff/sim-cloudfront-function.js";
3
- import { CffUint8ArrayFunctionCodeExtractor } from "../../cff/function-code-input/cff-function-code-input.js";
3
+ import { cffFunctionCodeSource, CffUint8ArrayFunctionCodeExtractor, } from "../../cff/function-code-input/cff-function-code-input.js";
4
4
  import { cffCloudFrontModule } from "../../cff/kvs/cff-cloudfront-module.js";
5
5
  import { BackgroundTasks, } from "../../../../util/background/background.js";
6
6
  import { SimIamAllowAllAuth, } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
@@ -50,6 +50,12 @@ export class CreateFunctionCommandHandler {
50
50
  accountId: this.accountId,
51
51
  handlerFunction,
52
52
  keyValueStore,
53
+ // The config a Function was created with is what every read of it
54
+ // reports, so it is kept rather than only acted on here.
55
+ comment: command.input.FunctionConfig?.Comment,
56
+ runtime: command.input.FunctionConfig?.Runtime,
57
+ functionCode: cffFunctionCodeSource(command.input.FunctionCode),
58
+ createdTime: this.background.now(),
53
59
  });
54
60
  this.cloudFrontFunctions.set(simCff.name, simCff);
55
61
  // New CFF becomes available async in background.
@@ -0,0 +1,22 @@
1
+ import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
2
+ import type { SimCfFunctionAccess } from "./sim-cf-function-access.js";
3
+ import type { SimDescribeFunctionCommand, SimDescribeFunctionCommandOutput } from "./sim-cf-function-command.types.js";
4
+ /**
5
+ * Simulated CloudFront DescribeFunction command.
6
+ *
7
+ * This is the Function's configuration without its code. GetFunction is the
8
+ * one that answers with the code.
9
+ *
10
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cloudfront/command/DescribeFunctionCommand/
11
+ */
12
+ export declare class SimCfDescribeFunction {
13
+ private readonly access;
14
+ private static readonly action;
15
+ constructor(access: SimCfFunctionAccess);
16
+ /**
17
+ * Describe one sim CloudFront Function.
18
+ */
19
+ handle(command: SimDescribeFunctionCommand, options?: {
20
+ readonly caller?: SimAwsCaller;
21
+ }): Promise<SimDescribeFunctionCommandOutput>;
22
+ }
@@ -0,0 +1,32 @@
1
+ import { assertDefined } from "../../../../util/type-guard/defined.js";
2
+ import { simCffRequestedStage } from "../../cff/sim-cff-stage.js";
3
+ import { simCfFunctionSummary } from "./sim-cf-function-summary.js";
4
+ /**
5
+ * Simulated CloudFront DescribeFunction command.
6
+ *
7
+ * This is the Function's configuration without its code. GetFunction is the
8
+ * one that answers with the code.
9
+ *
10
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cloudfront/command/DescribeFunctionCommand/
11
+ */
12
+ export class SimCfDescribeFunction {
13
+ access;
14
+ static action = "cloudfront:DescribeFunction";
15
+ constructor(access) {
16
+ this.access = access;
17
+ }
18
+ /**
19
+ * Describe one sim CloudFront Function.
20
+ */
21
+ async handle(command, options) {
22
+ assertDefined(command.input.Name, "DescribeFunctionCommand.input.Name");
23
+ const stage = simCffRequestedStage(command.input.Stage);
24
+ await this.access.background.sequence();
25
+ const cloudFrontFunction = this.access.authorizedByName(SimCfDescribeFunction.action, command.input.Name, stage, options?.caller);
26
+ return {
27
+ $metadata: {},
28
+ FunctionSummary: simCfFunctionSummary(cloudFrontFunction, stage),
29
+ ETag: cloudFrontFunction.config.etag,
30
+ };
31
+ }
32
+ }