@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
@@ -1,4 +1,6 @@
1
+ import { SimIamPassRoleAuthorizer } from "../../../iam/authorize/pass-role/sim-iam-pass-role-authorizer.js";
1
2
  import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
3
+ import { simFirehoseServicePrincipal } from "../../sim-firehose-service-principal.js";
2
4
  /**
3
5
  * Applies simulated IAM authorization to Firehose requests.
4
6
  *
@@ -6,11 +8,29 @@ import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
6
8
  * name, and the resource is the ARN of the delivery stream the operation names.
7
9
  * ListDeliveryStreams is the exception. It names no delivery stream, so it
8
10
  * authorizes against `*`.
11
+ *
12
+ * A delivery stream carries a Role for its destination, and a second one for
13
+ * its source where it reads a Kinesis stream. Firehose keeps both and delivers
14
+ * as them later, so creating one authorizes `iam:PassRole` against each.
9
15
  */
10
16
  export class SimFirehoseAuthorizer {
11
17
  iam;
18
+ passRole;
12
19
  constructor(properties) {
13
20
  this.iam = properties.iam;
21
+ this.passRole = new SimIamPassRoleAuthorizer({
22
+ iam: properties.iam,
23
+ passedToService: simFirehoseServicePrincipal,
24
+ });
25
+ }
26
+ /**
27
+ * Ensure the caller may hand Firehose every Role a delivery stream names.
28
+ *
29
+ * A delivery stream taking records through PutRecord has no source Role, and
30
+ * one left out passes nothing.
31
+ */
32
+ authorizePassRole(roleArns, caller) {
33
+ this.passRole.authorizeAll(roleArns, caller);
14
34
  }
15
35
  /**
16
36
  * Ensure the caller may perform an action on a delivery stream, named by its
@@ -38,6 +38,10 @@ export declare class SimFirehoseDeliveryStreamAccess {
38
38
  * stream.
39
39
  */
40
40
  authorizeAny(action: string, options?: SimFirehoseRequestOptions): SimAwsResolvedCaller;
41
+ /**
42
+ * Ensure the caller may hand Firehose every Role a request names.
43
+ */
44
+ authorizePassRole(roleArns: readonly (string | undefined)[], options?: SimFirehoseRequestOptions): void;
41
45
  /**
42
46
  * Resolve the delivery stream a request names, authorizing the action first.
43
47
  */
@@ -37,6 +37,12 @@ export class SimFirehoseDeliveryStreamAccess {
37
37
  authorizeAny(action, options) {
38
38
  return this.authorizer.authorizeAnyDeliveryStream(action, options?.caller);
39
39
  }
40
+ /**
41
+ * Ensure the caller may hand Firehose every Role a request names.
42
+ */
43
+ authorizePassRole(roleArns, options) {
44
+ this.authorizer.authorizePassRole(roleArns, options?.caller);
45
+ }
40
46
  /**
41
47
  * Resolve the delivery stream a request names, authorizing the action first.
42
48
  */
@@ -44,11 +44,13 @@ export class SimFirehoseCreateDeliveryStream {
44
44
  this.requireNameFree(name);
45
45
  const createdAt = this.background.now();
46
46
  const source = simFirehoseSourceOf(input, this.scope, createdAt);
47
+ const destination = simFirehoseDestinationOf(input);
48
+ this.access.authorizePassRole([destination.roleArn, source.roleArn], options);
47
49
  const arn = simFirehoseDeliveryStreamArn(this.scope, name);
48
50
  const deliveryStream = new SimFirehoseDeliveryStream({
49
51
  name,
50
52
  arn,
51
- destination: simFirehoseDestinationOf(input),
53
+ destination,
52
54
  source,
53
55
  createdAt,
54
56
  });
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The service principal Firehose reads and delivers as.
3
+ *
4
+ * A delivery stream's destination Role and its source Role are both trusted by
5
+ * this principal, and it is what `iam:PassedToService` carries when a delivery
6
+ * stream is created.
7
+ */
8
+ export declare const simFirehoseServicePrincipal = "firehose.amazonaws.com";
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The service principal Firehose reads and delivers as.
3
+ *
4
+ * A delivery stream's destination Role and its source Role are both trusted by
5
+ * this principal, and it is what `iam:PassedToService` carries when a delivery
6
+ * stream is created.
7
+ */
8
+ export const simFirehoseServicePrincipal = "firehose.amazonaws.com";
@@ -14,6 +14,11 @@ export type SimFirehoseDeliveryStreamType = "DirectPut" | "KinesisStreamAsSource
14
14
  export declare class SimFirehoseDirectPutSource {
15
15
  readonly kind: "direct-put";
16
16
  readonly deliveryStreamType: "DirectPut";
17
+ /**
18
+ * The Role reading is done as, which a delivery stream taking puts has none
19
+ * of. It reads nothing, so there is nothing for a Role to read it as.
20
+ */
21
+ readonly roleArn: undefined;
17
22
  /**
18
23
  * Take a put, which is where this delivery stream's records come from.
19
24
  */
@@ -5,6 +5,11 @@ import { SimFirehoseInvalidArgumentException } from "../error/sim-firehose.error
5
5
  export class SimFirehoseDirectPutSource {
6
6
  kind = "direct-put";
7
7
  deliveryStreamType = "DirectPut";
8
+ /**
9
+ * The Role reading is done as, which a delivery stream taking puts has none
10
+ * of. It reads nothing, so there is nothing for a Role to read it as.
11
+ */
12
+ roleArn = undefined;
8
13
  /**
9
14
  * Take a put, which is where this delivery stream's records come from.
10
15
  */
@@ -1,6 +1,7 @@
1
1
  import { glueCfnPropertyError } from "../sim-cfn-glue-property-error.js";
2
2
  import { SimCfnGlueValues } from "../sim-cfn-glue-values.js";
3
3
  import { SimCfnGlueDatabaseRules } from "./sim-cfn-glue-database-rules.js";
4
+ import { simCfnGlueGeneratedName } from "../sim-cfn-glue-generated-name.js";
4
5
  const resourceType = "AWS::Glue::Database";
5
6
  /**
6
7
  * Reads AWS::Glue::Database CloudFormation properties.
@@ -28,10 +29,9 @@ export class SimCfnGlueDatabaseProperties {
28
29
  */
29
30
  databaseName() {
30
31
  const values = this.#values;
31
- const stackName = this.#resource.stackName ?? "stack";
32
32
  return (values.optionalString(this.#input()["Name"], "DatabaseInput.Name") ??
33
33
  values.optionalString(this.#properties["DatabaseName"], "DatabaseName") ??
34
- `${stackName}-${this.#resource.logicalId}`.toLowerCase());
34
+ simCfnGlueGeneratedName(this.#resource));
35
35
  }
36
36
  /** What the database is created with, beyond its name. */
37
37
  databaseInput() {
@@ -0,0 +1,10 @@
1
+ import type { SimCfnResource } from "../../cloudformation/resource/sim-cfn-resource.js";
2
+ /**
3
+ * The name CloudFormation gives a database or a table whose template does not
4
+ * name it.
5
+ *
6
+ * One function covers both because the Data Catalog gives a database and a
7
+ * table the same name rules. The name is folded to lowercase the way the
8
+ * catalog folds any name it stores, for compatibility with Apache Hive.
9
+ */
10
+ export declare function simCfnGlueGeneratedName(resource: SimCfnResource): string;
@@ -0,0 +1,25 @@
1
+ import { SimCfnGeneratedResourceName } from "../../cloudformation/resource/name/sim-cfn-generated-resource-name.js";
2
+ import { simGlueFolded } from "../database/sim-glue-catalog-name.js";
3
+ /**
4
+ * The longest name the Data Catalog accepts for a database or a table.
5
+ *
6
+ * Glue states the limit in UTF-8 bytes and `SimCfnGeneratedResourceName` trims
7
+ * by character. The two come to the same thing here. A logical ID is
8
+ * alphanumeric, a stack name adds only hyphens, and the tail is hex.
9
+ */
10
+ const maximumNameLength = 255;
11
+ /**
12
+ * The name CloudFormation gives a database or a table whose template does not
13
+ * name it.
14
+ *
15
+ * One function covers both because the Data Catalog gives a database and a
16
+ * table the same name rules. The name is folded to lowercase the way the
17
+ * catalog folds any name it stores, for compatibility with Apache Hive.
18
+ */
19
+ export function simCfnGlueGeneratedName(resource) {
20
+ return simGlueFolded(new SimCfnGeneratedResourceName({
21
+ stackName: resource.stackName,
22
+ logicalId: resource.logicalId,
23
+ maximumLength: maximumNameLength,
24
+ }).value);
25
+ }
@@ -3,6 +3,7 @@ import { SimCfnGlueRecord } from "../sim-cfn-glue-record.js";
3
3
  import { SimCfnGlueValues } from "../sim-cfn-glue-values.js";
4
4
  import { SimCfnGlueTableInputReader } from "./sim-cfn-glue-table-input.js";
5
5
  import { simCfnGlueTableIgnored } from "./sim-cfn-glue-table-rules.js";
6
+ import { simCfnGlueGeneratedName } from "../sim-cfn-glue-generated-name.js";
6
7
  const resourceType = "AWS::Glue::Table";
7
8
  /**
8
9
  * Reads AWS::Glue::Table CloudFormation properties.
@@ -32,9 +33,7 @@ export class SimCfnGlueTableProperties {
32
33
  * since Glue names are lowercase for Hive compatibility.
33
34
  */
34
35
  tableName() {
35
- const stackName = this.#resource.stackName ?? "stack";
36
- return (this.#input().string("Name") ??
37
- `${stackName}-${this.#resource.logicalId}`.toLowerCase());
36
+ return (this.#input().string("Name") ?? simCfnGlueGeneratedName(this.#resource));
38
37
  }
39
38
  /** What the table is created with, beyond its name and its database. */
40
39
  tableInput() {
@@ -6,6 +6,12 @@ interface SimIamAllowSidesProperties {
6
6
  * Defaults to the resource side, for callers with no reason to distinguish.
7
7
  */
8
8
  readonly resourceDirect?: boolean | undefined;
9
+ /**
10
+ * Whether a resource-policy Allow named the caller, rather than admitting it
11
+ * as one of a wider set through a wildcard principal. Defaults to the
12
+ * resource side in the same way.
13
+ */
14
+ readonly resourceNamesCaller?: boolean | undefined;
9
15
  }
10
16
  /**
11
17
  * Which sides of a policy evaluation produced a matching Allow.
@@ -19,6 +25,7 @@ export declare class SimIamAllowSides {
19
25
  private readonly identityAllowed;
20
26
  private readonly resourceAllowed;
21
27
  private readonly resourceDirectAllowed;
28
+ private readonly resourceNamesCallerAllowed;
22
29
  constructor(properties: SimIamAllowSidesProperties);
23
30
  /**
24
31
  * Whether an identity-based policy allowed the request.
@@ -29,8 +36,8 @@ export declare class SimIamAllowSides {
29
36
  */
30
37
  get resource(): boolean;
31
38
  /**
32
- * Whether a resource-based policy allowed the request by naming the caller,
33
- * rather than by delegating to the caller's Account.
39
+ * Whether a resource-based policy allowed the request without delegating to
40
+ * the caller's Account.
34
41
  */
35
42
  get resourceDirect(): boolean;
36
43
  /**
@@ -38,6 +45,11 @@ export declare class SimIamAllowSides {
38
45
  * its Account, which grants nothing on its own.
39
46
  */
40
47
  get resourceDelegated(): boolean;
48
+ /**
49
+ * Whether a resource-based policy allowed the request by naming the caller,
50
+ * rather than by admitting whoever the request came from.
51
+ */
52
+ get resourceNamesCaller(): boolean;
41
53
  }
42
54
  /**
43
55
  * Which sides of an authorization must allow a request for it to be allowed.
@@ -97,6 +109,25 @@ export declare class SimIamMandatoryResourcePolicyRequirement implements SimIamA
97
109
  */
98
110
  isSatisfiedBy(allows: SimIamAllowSides): boolean;
99
111
  }
112
+ /**
113
+ * The rule for a request one service makes to another with the caller's own
114
+ * permissions. The caller needs the permission itself.
115
+ *
116
+ * A resource policy naming the caller still allows the request on its own, as
117
+ * a KMS key policy naming a Role does. A policy admitting whoever the request
118
+ * came from does not, because what it admits is the service. That is the
119
+ * difference between a key policy naming a Role and the aws/ssm key policy,
120
+ * which admits the Account's principals reaching KMS through Parameter Store
121
+ * and still leaves a Role holding only ssm:GetParameter unable to decrypt a
122
+ * SecureString.
123
+ */
124
+ export declare class SimIamCallerPermissionRequirement implements SimIamAllowRequirement {
125
+ /**
126
+ * Whether the caller holds the permission itself, or was named outright by
127
+ * the resource.
128
+ */
129
+ isSatisfiedBy(allows: SimIamAllowSides): boolean;
130
+ }
100
131
  /**
101
132
  * Every applicable rule at once.
102
133
  *
@@ -10,11 +10,14 @@ export class SimIamAllowSides {
10
10
  identityAllowed;
11
11
  resourceAllowed;
12
12
  resourceDirectAllowed;
13
+ resourceNamesCallerAllowed;
13
14
  constructor(properties) {
14
15
  this.identityAllowed = properties.identity;
15
16
  this.resourceAllowed = properties.resource;
16
17
  this.resourceDirectAllowed =
17
18
  properties.resourceDirect ?? properties.resource;
19
+ this.resourceNamesCallerAllowed =
20
+ properties.resourceNamesCaller ?? properties.resource;
18
21
  }
19
22
  /**
20
23
  * Whether an identity-based policy allowed the request.
@@ -29,8 +32,8 @@ export class SimIamAllowSides {
29
32
  return this.resourceAllowed;
30
33
  }
31
34
  /**
32
- * Whether a resource-based policy allowed the request by naming the caller,
33
- * rather than by delegating to the caller's Account.
35
+ * Whether a resource-based policy allowed the request without delegating to
36
+ * the caller's Account.
34
37
  */
35
38
  get resourceDirect() {
36
39
  return this.resourceDirectAllowed;
@@ -42,6 +45,13 @@ export class SimIamAllowSides {
42
45
  get resourceDelegated() {
43
46
  return this.resourceAllowed && !this.resourceDirectAllowed;
44
47
  }
48
+ /**
49
+ * Whether a resource-based policy allowed the request by naming the caller,
50
+ * rather than by admitting whoever the request came from.
51
+ */
52
+ get resourceNamesCaller() {
53
+ return this.resourceNamesCallerAllowed;
54
+ }
45
55
  }
46
56
  /**
47
57
  * The same-Account rule: an Allow from either side is enough.
@@ -104,6 +114,27 @@ export class SimIamMandatoryResourcePolicyRequirement {
104
114
  return allows.resourceDelegated && allows.identity;
105
115
  }
106
116
  }
117
+ /**
118
+ * The rule for a request one service makes to another with the caller's own
119
+ * permissions. The caller needs the permission itself.
120
+ *
121
+ * A resource policy naming the caller still allows the request on its own, as
122
+ * a KMS key policy naming a Role does. A policy admitting whoever the request
123
+ * came from does not, because what it admits is the service. That is the
124
+ * difference between a key policy naming a Role and the aws/ssm key policy,
125
+ * which admits the Account's principals reaching KMS through Parameter Store
126
+ * and still leaves a Role holding only ssm:GetParameter unable to decrypt a
127
+ * SecureString.
128
+ */
129
+ export class SimIamCallerPermissionRequirement {
130
+ /**
131
+ * Whether the caller holds the permission itself, or was named outright by
132
+ * the resource.
133
+ */
134
+ isSatisfiedBy(allows) {
135
+ return allows.resourceNamesCaller || allows.identity;
136
+ }
137
+ }
107
138
  /**
108
139
  * Every applicable rule at once.
109
140
  *
@@ -16,12 +16,13 @@ export declare class SimIamAllowStatements {
16
16
  private readonly resourceStatements;
17
17
  private readonly trustStatements;
18
18
  private readonly delegatedStatements;
19
+ private readonly namingStatements;
19
20
  /**
20
21
  * Record a matching Allow against the policy side it came from.
21
22
  *
22
- * A resource-policy Allow that matched by way of the caller's Account rather
23
- * than the caller itself is kept apart as well, so a rule that cares about
24
- * the difference can ask for it.
23
+ * How a resource-policy Allow came to match is kept alongside it, for the
24
+ * rules that care. A statement can match by way of the caller's Account, by
25
+ * naming the caller, or by admitting whoever the request came from.
25
26
  */
26
27
  record(policy: SimIamAuthZPolicySource, statement: SimIamPolicyDocumentStatement, principal: SimIamPrincipalMatch): void;
27
28
  /**
@@ -13,12 +13,13 @@ export class SimIamAllowStatements {
13
13
  resourceStatements = [];
14
14
  trustStatements = [];
15
15
  delegatedStatements = [];
16
+ namingStatements = [];
16
17
  /**
17
18
  * Record a matching Allow against the policy side it came from.
18
19
  *
19
- * A resource-policy Allow that matched by way of the caller's Account rather
20
- * than the caller itself is kept apart as well, so a rule that cares about
21
- * the difference can ask for it.
20
+ * How a resource-policy Allow came to match is kept alongside it, for the
21
+ * rules that care. A statement can match by way of the caller's Account, by
22
+ * naming the caller, or by admitting whoever the request came from.
22
23
  */
23
24
  record(policy, statement, principal) {
24
25
  if (policy.sourceType === "trust") {
@@ -27,6 +28,9 @@ export class SimIamAllowStatements {
27
28
  if (principal.isAccountDelegation) {
28
29
  this.delegatedStatements.push(statement);
29
30
  }
31
+ if (principal.namesCaller) {
32
+ this.namingStatements.push(statement);
33
+ }
30
34
  this.sideStatements(policy).push(statement);
31
35
  }
32
36
  /**
@@ -58,10 +62,12 @@ export class SimIamAllowStatements {
58
62
  */
59
63
  get sides() {
60
64
  const delegated = new Set(this.delegatedStatements);
65
+ const naming = new Set(this.namingStatements);
61
66
  return new SimIamAllowSides({
62
67
  identity: this.identityStatements.length > 0,
63
68
  resource: this.resourceStatements.length > 0,
64
69
  resourceDirect: this.resourceStatements.some((statement) => !delegated.has(statement)),
70
+ resourceNamesCaller: this.resourceStatements.some((statement) => naming.has(statement)),
65
71
  });
66
72
  }
67
73
  /**
@@ -1,16 +1,25 @@
1
1
  import { type SimIamAllowRequirement } from "../allow/sim-iam-allow-requirement.js";
2
2
  import type { SimIamCallerAccount } from "../caller-account/sim-iam-caller-account.js";
3
+ /**
4
+ * What an authorization request says about the rules it is subject to, beyond
5
+ * the caller and the policies themselves.
6
+ */
7
+ export interface SimIamAllowRequirementInput {
8
+ readonly requiresResourcePolicyAllow?: boolean | undefined;
9
+ readonly withCallerPermissions?: boolean | undefined;
10
+ }
3
11
  /**
4
12
  * Works out which allow rules apply to one authorization request.
5
13
  *
6
- * Two things decide it, and both have to hold. The caller's Account says whose
7
- * Allow counts: either side within one Account, both sides across Accounts.
8
- * The resource-owning service says whether its resource insists on allowing,
9
- * which is true of a KMS key and of nothing else so far.
14
+ * Three things decide it, and all of them have to hold. The caller's Account
15
+ * says whose Allow counts: either side within one Account, both sides across
16
+ * Accounts. The resource-owning service says whether its resource insists on
17
+ * allowing, which is true of a KMS key and of nothing else so far, and whether
18
+ * it is passing on the caller's own permissions rather than its own.
10
19
  */
11
20
  export declare class SimIamAuthZAllowRequirement {
12
21
  /**
13
22
  * The rule a request is subject to.
14
23
  */
15
- resolve(callerAccount: SimIamCallerAccount, requiresResourcePolicyAllow: boolean | undefined): SimIamAllowRequirement;
24
+ resolve(callerAccount: SimIamCallerAccount, input: SimIamAllowRequirementInput): SimIamAllowRequirement;
16
25
  }
@@ -1,23 +1,27 @@
1
- import { SimIamEveryAllowRequirement, SimIamMandatoryResourcePolicyRequirement, } from "../allow/sim-iam-allow-requirement.js";
1
+ import { SimIamCallerPermissionRequirement, SimIamEveryAllowRequirement, SimIamMandatoryResourcePolicyRequirement, } from "../allow/sim-iam-allow-requirement.js";
2
2
  /**
3
3
  * Works out which allow rules apply to one authorization request.
4
4
  *
5
- * Two things decide it, and both have to hold. The caller's Account says whose
6
- * Allow counts: either side within one Account, both sides across Accounts.
7
- * The resource-owning service says whether its resource insists on allowing,
8
- * which is true of a KMS key and of nothing else so far.
5
+ * Three things decide it, and all of them have to hold. The caller's Account
6
+ * says whose Allow counts: either side within one Account, both sides across
7
+ * Accounts. The resource-owning service says whether its resource insists on
8
+ * allowing, which is true of a KMS key and of nothing else so far, and whether
9
+ * it is passing on the caller's own permissions rather than its own.
9
10
  */
10
11
  export class SimIamAuthZAllowRequirement {
11
12
  /**
12
13
  * The rule a request is subject to.
13
14
  */
14
- resolve(callerAccount, requiresResourcePolicyAllow) {
15
- if (requiresResourcePolicyAllow !== true) {
16
- return callerAccount.allowRequirement;
17
- }
18
- return new SimIamEveryAllowRequirement([
15
+ resolve(callerAccount, input) {
16
+ const requirements = [
19
17
  callerAccount.allowRequirement,
20
- new SimIamMandatoryResourcePolicyRequirement(),
21
- ]);
18
+ ];
19
+ if (input.requiresResourcePolicyAllow === true) {
20
+ requirements.push(new SimIamMandatoryResourcePolicyRequirement());
21
+ }
22
+ if (input.withCallerPermissions === true) {
23
+ requirements.push(new SimIamCallerPermissionRequirement());
24
+ }
25
+ return new SimIamEveryAllowRequirement(requirements);
22
26
  }
23
27
  }
@@ -1,28 +1,57 @@
1
1
  import { type SimAwsCredentialIdentityResolver, type SimAwsResolvedCaller } from "../../../aws/caller/sim-aws-caller-resolver.js";
2
- import type { SimAwsCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
2
+ import type { SimAwsCaller, SimAwsDefaultCaller, SimAwsPrincipal } from "../../../aws/caller/sim-aws-caller.js";
3
+ import type { SimAwsAmbientCaller } from "../../../aws/caller/sim-aws-ambient-caller.js";
3
4
  import type { SimIamAuthZPolicySource } from "./sim-iam-auth-z-context.js";
4
5
  export interface SimIamAuthZCallerContext {
5
6
  readonly caller: SimAwsResolvedCaller;
6
7
  readonly rootPolicySources: readonly SimIamAuthZPolicySource[];
7
8
  }
9
+ /**
10
+ * What building a caller context needs beyond the request's own caller.
11
+ */
12
+ export interface SimIamAuthZCallerContextBuilderProperties {
13
+ /**
14
+ * The root principal of the Account deciding the request.
15
+ *
16
+ * This is both the last fallback for a request that names no caller and the
17
+ * principal holding the Account's intrinsic unrestricted access. The default
18
+ * caller stands apart from it. Naming a default says who an unattributed
19
+ * call comes from, and leaves the root's own access where AWS puts it.
20
+ */
21
+ readonly accountRootPrincipal: SimAwsPrincipal;
22
+ readonly credentialIdentityResolver: SimAwsCredentialIdentityResolver;
23
+ /**
24
+ * The caller this simulation attributes an unattributed request to.
25
+ */
26
+ readonly defaultCaller?: SimAwsDefaultCaller | undefined;
27
+ /**
28
+ * Where an unattributed request looks before the default.
29
+ */
30
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
31
+ }
8
32
  /**
9
33
  * Resolves the caller and any policy sources implied by that caller.
10
34
  *
11
- * The configured default principal represents the simulated account root. It is
12
- * used only when the request omits a caller. An explicit anonymous caller does
13
- * not fall back to root.
35
+ * A request that omits a caller is decided as the ambient caller of the run-as
36
+ * block it is inside, then as the simulation's default caller, and as the
37
+ * Account root where there is neither. An explicit anonymous caller falls back
38
+ * to none of them.
14
39
  */
15
40
  export declare class SimIamAuthZCallerContextBuilder {
16
41
  private readonly callerResolver;
17
- private readonly defaultCallerPrincipal;
18
- constructor(defaultCallerPrincipal: SimAwsPrincipal, credentialIdentityResolver: SimAwsCredentialIdentityResolver);
42
+ private readonly accountRootPrincipal;
43
+ private readonly accountRootArn?;
44
+ constructor(properties: SimIamAuthZCallerContextBuilderProperties);
19
45
  /**
20
46
  * Resolve request caller data and add the simulated root policy when
21
47
  * applicable.
22
48
  */
23
49
  build(caller: SimAwsCaller | undefined): SimIamAuthZCallerContext;
24
50
  /**
25
- * Give the configured account-root principal unrestricted identity access.
51
+ * Give the Account's root principal unrestricted identity access.
52
+ *
53
+ * The comparison names the root principal explicitly, so a simulation with a
54
+ * default caller keeps this access on the root where AWS has it.
26
55
  */
27
56
  private rootPolicySources;
28
57
  }
@@ -2,34 +2,45 @@ import { SimAwsCallerResolver, } from "../../../aws/caller/sim-aws-caller-resolv
2
2
  /**
3
3
  * Resolves the caller and any policy sources implied by that caller.
4
4
  *
5
- * The configured default principal represents the simulated account root. It is
6
- * used only when the request omits a caller. An explicit anonymous caller does
7
- * not fall back to root.
5
+ * A request that omits a caller is decided as the ambient caller of the run-as
6
+ * block it is inside, then as the simulation's default caller, and as the
7
+ * Account root where there is neither. An explicit anonymous caller falls back
8
+ * to none of them.
8
9
  */
9
10
  export class SimIamAuthZCallerContextBuilder {
10
11
  callerResolver;
11
- defaultCallerPrincipal;
12
- constructor(defaultCallerPrincipal, credentialIdentityResolver) {
13
- this.defaultCallerPrincipal = defaultCallerPrincipal;
14
- this.callerResolver = new SimAwsCallerResolver(credentialIdentityResolver);
12
+ accountRootPrincipal;
13
+ accountRootArn;
14
+ constructor(properties) {
15
+ const root = properties.accountRootPrincipal;
16
+ this.accountRootPrincipal = root;
17
+ this.accountRootArn = root.kind === "arn" ? root.arn : undefined;
18
+ this.callerResolver = new SimAwsCallerResolver({
19
+ credentialIdentityResolver: properties.credentialIdentityResolver,
20
+ defaultCaller: properties.defaultCaller,
21
+ ambientCaller: properties.ambientCaller,
22
+ });
15
23
  }
16
24
  /**
17
25
  * Resolve request caller data and add the simulated root policy when
18
26
  * applicable.
19
27
  */
20
28
  build(caller) {
21
- const resolvedCaller = this.callerResolver.resolve(caller, this.defaultCallerPrincipal);
29
+ const resolvedCaller = this.callerResolver.resolve(caller, this.accountRootPrincipal);
22
30
  return {
23
31
  caller: resolvedCaller,
24
32
  rootPolicySources: this.rootPolicySources(resolvedCaller),
25
33
  };
26
34
  }
27
35
  /**
28
- * Give the configured account-root principal unrestricted identity access.
36
+ * Give the Account's root principal unrestricted identity access.
37
+ *
38
+ * The comparison names the root principal explicitly, so a simulation with a
39
+ * default caller keeps this access on the root where AWS has it.
29
40
  */
30
41
  rootPolicySources(caller) {
31
- const defaultCaller = this.callerResolver.resolve(this.defaultCallerPrincipal, this.defaultCallerPrincipal);
32
- if (defaultCaller.arn === undefined || caller.arn !== defaultCaller.arn) {
42
+ if (this.accountRootArn === undefined ||
43
+ caller.arn !== this.accountRootArn) {
33
44
  return [];
34
45
  }
35
46
  return [