@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,4 @@
1
- import { makeSimAwsAccountRootPrincipal } from "../../aws/caller/sim-aws-account-root-principal.js";
1
+ import { simAwsCallerFor } from "../../aws/caller/sim-aws-resolved-caller.js";
2
2
  import { SimIamAccessDenied } from "../../iam/error/sim-iam.error.js";
3
3
  /**
4
4
  * Authorizes the caller's request to assume a role against IAM in the source
@@ -10,8 +10,8 @@ import { SimIamAccessDenied } from "../../iam/error/sim-iam.error.js";
10
10
  * trust authorization is a separate responsibility and must be performed even
11
11
  * when the source and target Account are the same.
12
12
  *
13
- * When no caller principal is supplied, Sim IAM applies its normal default
14
- * caller behavior for the source Account.
13
+ * When no caller principal is supplied, sim IAM applies its own default caller
14
+ * behaviour for the source Account.
15
15
  */
16
16
  export class AssumeRoleSourcePrincipalAuthorizer {
17
17
  sourceAccountId;
@@ -30,18 +30,19 @@ export class AssumeRoleSourcePrincipalAuthorizer {
30
30
  */
31
31
  authorize(input) {
32
32
  const sourceIam = this.iamResolver.iamForAccount(this.sourceAccountId);
33
- const callerPrincipal = input.callerPrincipal ??
34
- makeSimAwsAccountRootPrincipal(this.sourceAccountId);
33
+ // A request with no caller of its own is left for sim IAM to attribute.
34
+ // The simulation's default caller reaches this decision the way it reaches
35
+ // every other one.
35
36
  const decision = sourceIam.authorize({
36
37
  action: "sts:AssumeRole",
37
38
  resource: input.roleArn,
38
39
  region: this.regionName,
39
- caller: callerPrincipal,
40
+ caller: input.caller === undefined ? undefined : simAwsCallerFor(input.caller),
40
41
  });
41
42
  if (decision.isExplicitDeny ||
42
43
  (decision.isImplicitDeny && Boolean(input.identityPolicyAllowRequired))) {
43
44
  throw new SimIamAccessDenied({
44
- principal: callerPrincipal,
45
+ principal: decision.caller.principal,
45
46
  action: "sts:AssumeRole",
46
47
  resource: input.roleArn,
47
48
  });
@@ -1,4 +1,4 @@
1
- import type { SimAwsPrincipal } from "../../aws/caller/sim-aws-caller.js";
1
+ import type { SimAwsResolvedCaller } from "../../aws/caller/sim-aws-caller-resolver.js";
2
2
  import type { SimAwsAccountId } from "../../aws/sim-aws-account.js";
3
3
  import type { AwsRegionName } from "../../aws/sim-aws-region.js";
4
4
  import type { SimIamAccountResolver } from "../../iam/registry/sim-iam-account-resolver.js";
@@ -17,7 +17,7 @@ type AssumeRoleTargetRole = SimGetRoleCommandOutput["Role"];
17
17
  interface AssumeRoleTargetAuthorizationInput {
18
18
  readonly roleArn: string;
19
19
  readonly target: IamRoleArnParts | SimAwsAccountId;
20
- readonly caller: SimAwsPrincipal;
20
+ readonly caller: SimAwsResolvedCaller;
21
21
  readonly conditionContext?: Readonly<Record<string, SimIamConditionValue>> | undefined;
22
22
  }
23
23
  interface AssumeRoleTargetAuthorization {
@@ -1,4 +1,4 @@
1
- import type { SimAwsPrincipal } from "../../aws/caller/sim-aws-caller.js";
1
+ import type { SimAwsResolvedCaller } from "../../aws/caller/sim-aws-caller-resolver.js";
2
2
  import type { AwsRegionName } from "../../aws/sim-aws-region.js";
3
3
  import type { SimGetRoleCommandOutput } from "../../iam/command/role/get-role/get-role.command.js";
4
4
  import type { SimIamConditionValue } from "../../iam/policy/sim-iam-policy.js";
@@ -14,7 +14,7 @@ interface AssumeRoleTrustPolicyAuthorizationInput {
14
14
  * target Account's service control policies can be conditioned on.
15
15
  */
16
16
  readonly region?: AwsRegionName | undefined;
17
- readonly caller: SimAwsPrincipal;
17
+ readonly caller: SimAwsResolvedCaller;
18
18
  readonly conditionContext?: Readonly<Record<string, SimIamConditionValue>> | undefined;
19
19
  }
20
20
  export interface AssumeRoleTrustPolicyAuthorization {
@@ -46,5 +46,9 @@ export declare class AssumeRoleTrustPolicyAuthorizer {
46
46
  * no trust-policy statement grants access, even if no explicit Deny matched.
47
47
  */
48
48
  authorize(input: AssumeRoleTrustPolicyAuthorizationInput): AssumeRoleTrustPolicyAuthorization;
49
+ /**
50
+ * Refuse the request as the caller that made it.
51
+ */
52
+ private refuse;
49
53
  }
50
54
  export {};
@@ -1,4 +1,5 @@
1
1
  import { jsonParse } from "../../../util/type-guard/json.js";
2
+ import { simAwsCallerFor } from "../../aws/caller/sim-aws-resolved-caller.js";
2
3
  import { SimIamAccessDenied } from "../../iam/error/sim-iam.error.js";
3
4
  import { AssumeRoleTrustGrantClassifier } from "./assume-role-trust-grant-classifier.js";
4
5
  /**
@@ -27,18 +28,14 @@ export class AssumeRoleTrustPolicyAuthorizer {
27
28
  */
28
29
  authorize(input) {
29
30
  if (input.role.AssumeRolePolicyDocument === undefined) {
30
- throw new SimIamAccessDenied({
31
- principal: input.caller,
32
- action: "sts:AssumeRole",
33
- resource: input.roleArn,
34
- });
31
+ this.refuse(input);
35
32
  }
36
33
  const trustPolicy = jsonParse(input.role.AssumeRolePolicyDocument);
37
34
  const decision = input.targetIam.authorize({
38
35
  action: "sts:AssumeRole",
39
36
  resource: input.roleArn,
40
37
  region: input.region,
41
- caller: input.caller,
38
+ caller: simAwsCallerFor(input.caller),
42
39
  conditionContext: input.conditionContext,
43
40
  resourcePolicies: [
44
41
  {
@@ -50,15 +47,21 @@ export class AssumeRoleTrustPolicyAuthorizer {
50
47
  ],
51
48
  });
52
49
  if (decision.isDenied || !decision.isAllowedByTrustPolicy) {
53
- throw new SimIamAccessDenied({
54
- principal: input.caller,
55
- action: "sts:AssumeRole",
56
- resource: input.roleArn,
57
- });
50
+ this.refuse(input);
58
51
  }
59
52
  return {
60
53
  decision,
61
54
  isDirectPrincipalGrant: this.trustGrantClassifier.hasDirectPrincipalGrant(decision.trustAllowStatements),
62
55
  };
63
56
  }
57
+ /**
58
+ * Refuse the request as the caller that made it.
59
+ */
60
+ refuse(input) {
61
+ throw new SimIamAccessDenied({
62
+ principal: input.caller.principal,
63
+ action: "sts:AssumeRole",
64
+ resource: input.roleArn,
65
+ });
66
+ }
64
67
  }
@@ -4,7 +4,8 @@ import type { SimAssumeRoleCommand, SimAssumeRoleCommandOutput } from "./assume-
4
4
  import { type BackgroundScheduler } from "../../../../util/background/background.js";
5
5
  import type { SimAwsAccountId } from "../../../aws/sim-aws-account.js";
6
6
  import type { AwsRegionName } from "../../../aws/sim-aws-region.js";
7
- import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
7
+ import type { SimAwsCaller, SimAwsDefaultCaller } from "../../../aws/caller/sim-aws-caller.js";
8
+ import type { SimAwsAmbientCaller } from "../../../aws/caller/sim-aws-ambient-caller.js";
8
9
  interface AssumeRoleCommandHandlerProperties {
9
10
  readonly sourceAccountId: SimAwsAccountId;
10
11
  /**
@@ -13,6 +14,14 @@ interface AssumeRoleCommandHandlerProperties {
13
14
  readonly regionName: AwsRegionName;
14
15
  readonly iamResolver: SimIamAccountResolver;
15
16
  readonly background?: BackgroundScheduler;
17
+ /**
18
+ * The caller this simulation attributes a request naming none to.
19
+ */
20
+ readonly defaultCaller?: SimAwsDefaultCaller | undefined;
21
+ /**
22
+ * Where a request naming no caller looks before the default.
23
+ */
24
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
16
25
  }
17
26
  /**
18
27
  * STS AssumeRoleCommand handler.
@@ -16,7 +16,7 @@ import { AssumeRoleAuthorizationCoordinator } from "../../auth-z/assume-role-aut
16
16
  */
17
17
  export class AssumeRoleCommandHandler {
18
18
  background;
19
- callerResolver = new SimAwsCallerResolver();
19
+ callerResolver;
20
20
  requestParser = new SimStsAssumeRoleRequestParser();
21
21
  authorizationCoordinator;
22
22
  sessionCreator;
@@ -25,6 +25,10 @@ export class AssumeRoleCommandHandler {
25
25
  const { sourceAccountId, regionName, iamResolver, background = new BackgroundTasks(), } = properties;
26
26
  this.sourceAccountId = sourceAccountId;
27
27
  this.background = background;
28
+ this.callerResolver = new SimAwsCallerResolver({
29
+ defaultCaller: properties.defaultCaller,
30
+ ambientCaller: properties.ambientCaller,
31
+ });
28
32
  this.authorizationCoordinator = new AssumeRoleAuthorizationCoordinator({
29
33
  sourceAccountId,
30
34
  iamResolver,
@@ -56,7 +60,7 @@ export class AssumeRoleCommandHandler {
56
60
  const role = await this.authorizationCoordinator.authorize({
57
61
  roleArn: request.roleArn,
58
62
  roleArnParts: request.roleArnParts,
59
- caller: caller.principal,
63
+ caller,
60
64
  conditionContext: request.conditionContext,
61
65
  });
62
66
  return this.sessionCreator.create({
@@ -1,11 +1,20 @@
1
1
  import type { CommandHandler } from "../../../../command/command-handler.js";
2
- import type { SimAwsCaller } from "../../../aws/caller/sim-aws-caller.js";
2
+ import type { SimAwsCaller, SimAwsDefaultCaller } from "../../../aws/caller/sim-aws-caller.js";
3
+ import type { SimAwsAmbientCaller } from "../../../aws/caller/sim-aws-ambient-caller.js";
3
4
  import type { SimAwsAccountId } from "../../../aws/sim-aws-account.js";
4
5
  import type { SimIamAccountResolver } from "../../../iam/registry/sim-iam-account-resolver.js";
5
6
  import type { SimGetCallerIdentityCommand, SimGetCallerIdentityCommandOutput } from "./get-caller-identity.command.js";
6
7
  interface GetCallerIdentityCommandHandlerProperties {
7
8
  readonly sourceAccountId: SimAwsAccountId;
8
9
  readonly iamResolver: SimIamAccountResolver;
10
+ /**
11
+ * The caller this simulation attributes a request naming none to.
12
+ */
13
+ readonly defaultCaller?: SimAwsDefaultCaller | undefined;
14
+ /**
15
+ * Where a request naming no caller looks before the default.
16
+ */
17
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
9
18
  }
10
19
  /**
11
20
  * Simulated STS GetCallerIdentity handler.
@@ -13,12 +13,16 @@ import { simStsCallerUserId } from "./sim-sts-caller-user-id.js";
13
13
  * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/GetCallerIdentityCommand/
14
14
  */
15
15
  export class GetCallerIdentityCommandHandler {
16
- callerResolver = new SimAwsCallerResolver();
16
+ callerResolver;
17
17
  sourceAccountId;
18
18
  iamResolver;
19
19
  constructor(properties) {
20
20
  this.sourceAccountId = properties.sourceAccountId;
21
21
  this.iamResolver = properties.iamResolver;
22
+ this.callerResolver = new SimAwsCallerResolver({
23
+ defaultCaller: properties.defaultCaller,
24
+ ambientCaller: properties.ambientCaller,
25
+ });
22
26
  }
23
27
  /**
24
28
  * Report the identity behind this request.
@@ -1,3 +1,4 @@
1
+ import { simAwsResolvedCallerOf } from "../../aws/caller/sim-aws-resolved-caller.js";
1
2
  import { SimIamAccessDenied } from "../../iam/error/sim-iam.error.js";
2
3
  import { AssumeRoleTrustPolicyAuthorizer } from "../auth-z/assume-role-trust-policy-authorizer.js";
3
4
  import { simServiceRoleConditionContext, } from "./sim-service-role-source.js";
@@ -25,7 +26,10 @@ export async function assumeSimServiceRole(assumption) {
25
26
  role,
26
27
  targetIam: iam,
27
28
  region: scope.accountRegionScope.regionName,
28
- caller: { kind: "service", service: servicePrincipal },
29
+ caller: simAwsResolvedCallerOf({
30
+ kind: "service",
31
+ service: servicePrincipal,
32
+ }),
29
33
  conditionContext: simServiceRoleConditionContext(source),
30
34
  });
31
35
  }
@@ -3,12 +3,27 @@ import type { SimIamAccountResolver } from "../iam/registry/sim-iam-account-reso
3
3
  import type { SimAssumeRoleCommand, SimAssumeRoleCommandOutput } from "./command/assume-role/assume-role.command.js";
4
4
  import type { SimGetCallerIdentityCommand, SimGetCallerIdentityCommandOutput } from "./command/get-caller-identity/get-caller-identity.command.js";
5
5
  import type { SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
6
- import type { SimAwsCaller } from "../aws/caller/sim-aws-caller.js";
6
+ import type { SimAwsCaller, SimAwsDefaultCaller } from "../aws/caller/sim-aws-caller.js";
7
+ import type { SimAwsAmbientCaller } from "../aws/caller/sim-aws-ambient-caller.js";
7
8
  import type { SimSdkCommandRouter } from "../../sdk/index.js";
8
9
  interface SimStsProperties {
9
10
  readonly accountRegionScope?: SimAwsAccountRegionScope;
10
11
  readonly iamResolver?: SimIamAccountResolver;
11
12
  readonly background?: BackgroundScheduler;
13
+ /**
14
+ * The caller this simulation attributes a request naming none to.
15
+ *
16
+ * Left out, such a request is the source Account's root principal, which is
17
+ * the identity GetCallerIdentity then reports.
18
+ */
19
+ readonly defaultCaller?: SimAwsDefaultCaller | undefined;
20
+ /**
21
+ * Where a request naming no caller looks before the default.
22
+ *
23
+ * A run-as block decides who the requests inside it are, so an unattributed
24
+ * GetCallerIdentity in one reports the caller that block named.
25
+ */
26
+ readonly ambientCaller?: SimAwsAmbientCaller | undefined;
12
27
  }
13
28
  /**
14
29
  * Simulated AWS Security Token Service.
@@ -21,6 +36,8 @@ export declare class SimSts {
21
36
  private readonly accountRegionScope;
22
37
  private readonly background;
23
38
  private readonly iamResolver;
39
+ private readonly defaultCaller?;
40
+ private readonly ambientCaller?;
24
41
  private readonly sdkRouter;
25
42
  constructor(properties?: SimStsProperties);
26
43
  /**
@@ -15,12 +15,16 @@ export class SimSts {
15
15
  accountRegionScope;
16
16
  background;
17
17
  iamResolver;
18
+ defaultCaller;
19
+ ambientCaller;
18
20
  sdkRouter = new SimStsSdkCommandRouter(this);
19
21
  constructor(properties = {}) {
20
22
  this.accountRegionScope =
21
23
  properties.accountRegionScope ?? simAwsAccountRegionScopeFactory.make();
22
24
  this.iamResolver = properties.iamResolver ?? new SimIamRegistry();
23
25
  this.background = properties.background ?? new BackgroundTasks();
26
+ this.defaultCaller = properties.defaultCaller;
27
+ this.ambientCaller = properties.ambientCaller;
24
28
  }
25
29
  /**
26
30
  * Handle an AssumeRoleCommand from the SDK.
@@ -31,6 +35,8 @@ export class SimSts {
31
35
  regionName: this.accountRegionScope.regionName,
32
36
  iamResolver: this.iamResolver,
33
37
  background: this.background,
38
+ defaultCaller: this.defaultCaller,
39
+ ambientCaller: this.ambientCaller,
34
40
  });
35
41
  return await handler.handle(command, options);
36
42
  }
@@ -41,6 +47,8 @@ export class SimSts {
41
47
  const handler = new GetCallerIdentityCommandHandler({
42
48
  sourceAccountId: this.accountRegionScope.accountId,
43
49
  iamResolver: this.iamResolver,
50
+ defaultCaller: this.defaultCaller,
51
+ ambientCaller: this.ambientCaller,
44
52
  });
45
53
  return await handler.handle(command, options);
46
54
  }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Memoization cache holding a bounded number of values.
3
+ *
4
+ * The bound stops a long-running process accumulating entries without limit.
5
+ * Which values survive it matters little. A caller gets the same value back
6
+ * either way, and an evicted one costs another call to the factory that made
7
+ * it.
8
+ *
9
+ * Eviction is by insertion order, and a value read again stays where it is. A
10
+ * memo worth bounding is one whose reads are hot, and reordering the cache on
11
+ * every read costs more than the occasional recomputation it saves.
12
+ *
13
+ * A cached value has to be something (undefined stands for a key the cache is
14
+ * missing). A hit then costs one map lookup.
15
+ */
16
+ export declare class BoundedMemo<T extends NonNullable<unknown>> {
17
+ private readonly limit;
18
+ private readonly cache;
19
+ /**
20
+ * Hold up to `limit` values, dropping the oldest to make room past that.
21
+ */
22
+ constructor(limit: number);
23
+ /**
24
+ * Returns the cached value for the given key, or creates and caches it using
25
+ * `factory`.
26
+ */
27
+ getOrCreate<V extends T>(key: PropertyKey, factory: () => V): V;
28
+ /**
29
+ * Returns whether the cache is currently holding `key`.
30
+ */
31
+ has(key: PropertyKey): boolean;
32
+ /**
33
+ * Drop what was cached first, until the cache is back within its limit.
34
+ */
35
+ private evictOverflow;
36
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Memoization cache holding a bounded number of values.
3
+ *
4
+ * The bound stops a long-running process accumulating entries without limit.
5
+ * Which values survive it matters little. A caller gets the same value back
6
+ * either way, and an evicted one costs another call to the factory that made
7
+ * it.
8
+ *
9
+ * Eviction is by insertion order, and a value read again stays where it is. A
10
+ * memo worth bounding is one whose reads are hot, and reordering the cache on
11
+ * every read costs more than the occasional recomputation it saves.
12
+ *
13
+ * A cached value has to be something (undefined stands for a key the cache is
14
+ * missing). A hit then costs one map lookup.
15
+ */
16
+ export class BoundedMemo {
17
+ limit;
18
+ cache = new Map();
19
+ /**
20
+ * Hold up to `limit` values, dropping the oldest to make room past that.
21
+ */
22
+ constructor(limit) {
23
+ this.limit = limit;
24
+ }
25
+ /**
26
+ * Returns the cached value for the given key, or creates and caches it using
27
+ * `factory`.
28
+ */
29
+ getOrCreate(key, factory) {
30
+ const cached = this.cache.get(key);
31
+ if (cached !== undefined) {
32
+ return cached;
33
+ }
34
+ const value = factory();
35
+ this.cache.set(key, value);
36
+ this.evictOverflow();
37
+ return value;
38
+ }
39
+ /**
40
+ * Returns whether the cache is currently holding `key`.
41
+ */
42
+ has(key) {
43
+ return this.cache.has(key);
44
+ }
45
+ /**
46
+ * Drop what was cached first, until the cache is back within its limit.
47
+ */
48
+ evictOverflow() {
49
+ while (this.cache.size > this.limit) {
50
+ const oldest = this.cache.keys().next();
51
+ /* v8 ignore next 3 -- a cache over its limit has a first key */
52
+ if (oldest.done === true) {
53
+ return;
54
+ }
55
+ this.cache.delete(oldest.value);
56
+ }
57
+ }
58
+ }
package/docs/README.md ADDED
@@ -0,0 +1,54 @@
1
+ # Simulated AWS usage documentation
2
+
3
+ This directory contains area-specific documentation for Yulin. Each page explains the simulated
4
+ behaviour and includes example code that can be copied into tests or local development scripts.
5
+
6
+ ## Service documentation
7
+
8
+ - [ACM](https://yulinsim.dev/services/acm/ "Simulated ACM usage docs")
9
+ - [API Gateway HTTP APIs](https://yulinsim.dev/services/apigatewayv2/ "Simulated API Gateway HTTP API usage docs")
10
+ - [API Gateway REST APIs](https://yulinsim.dev/services/apigateway/ "Simulated API Gateway REST API usage docs")
11
+ - [Athena](https://yulinsim.dev/services/athena/ "Simulated Amazon Athena usage docs")
12
+ - [Bedrock](https://yulinsim.dev/services/bedrock/ "Simulated Amazon Bedrock usage docs")
13
+ - [CloudFormation](https://yulinsim.dev/services/cloudformation/ "Simulated CloudFormation usage docs")
14
+ - [CloudFront](https://yulinsim.dev/services/cloudfront/ "Simulated CloudFront usage docs")
15
+ - [CloudWatch metrics](https://yulinsim.dev/services/cloudwatch/ "Simulated CloudWatch metrics usage docs")
16
+ - [Cognito user pools](https://yulinsim.dev/services/cognito/ "Simulated Cognito user pools usage docs")
17
+ - [DynamoDB](https://yulinsim.dev/services/dynamodb/ "Simulated DynamoDB usage docs")
18
+ - [ECR](https://yulinsim.dev/services/ecr/ "Simulated ECR usage docs")
19
+ - [ECS](https://yulinsim.dev/services/ecs/ "Simulated ECS usage docs")
20
+ - [Elastic Load Balancing](https://yulinsim.dev/services/elbv2/ "Simulated Application Load Balancer usage docs")
21
+ - [EventBridge](https://yulinsim.dev/services/eventbridge/ "Simulated EventBridge usage docs")
22
+ - [Glue](https://yulinsim.dev/services/glue/ "Simulated Glue Data Catalog usage docs")
23
+ - [IAM](https://yulinsim.dev/services/iam/ "Simulated IAM usage docs")
24
+ - [Kinesis Data Firehose](https://yulinsim.dev/services/firehose/ "Simulated Kinesis Data Firehose usage docs")
25
+ - [Kinesis Data Streams](https://yulinsim.dev/services/kinesis/ "Simulated Kinesis Data Streams usage docs")
26
+ - [KMS](https://yulinsim.dev/services/kms/ "Simulated KMS usage docs")
27
+ - [Lambda](https://yulinsim.dev/services/lambda/ "Simulated Lambda usage docs")
28
+ - [CloudWatch Logs](https://yulinsim.dev/services/logs/ "Simulated CloudWatch Logs usage docs")
29
+ - [Organizations](https://yulinsim.dev/services/organizations/ "Simulated Organizations service control policies usage docs")
30
+ - [Personalize](https://yulinsim.dev/services/personalize/ "Simulated Amazon Personalize usage docs")
31
+ - [Rekognition](https://yulinsim.dev/services/rekognition/ "Simulated Rekognition usage docs")
32
+ - [Route53](https://yulinsim.dev/services/route53/ "Simulated Route53 usage docs")
33
+ - [S3](https://yulinsim.dev/services/s3/ "Simulated S3 usage docs")
34
+ - [Scheduler](https://yulinsim.dev/services/scheduler/ "Simulated EventBridge Scheduler usage docs")
35
+ - [Secrets Manager](https://yulinsim.dev/services/secretsmanager/ "Simulated Secrets Manager usage docs")
36
+ - [SES](https://yulinsim.dev/services/ses/ "Simulated SES usage docs")
37
+ - [SNS](https://yulinsim.dev/services/sns/ "Simulated SNS usage docs")
38
+ - [SQS](https://yulinsim.dev/services/sqs/ "Simulated SQS usage docs")
39
+ - [SSM Parameter Store](https://yulinsim.dev/services/ssm/ "Simulated SSM Parameter Store usage docs")
40
+ - [Step Functions](https://yulinsim.dev/services/stepfunctions/ "Simulated Step Functions usage docs")
41
+ - [STS](https://yulinsim.dev/services/sts/ "Simulated STS usage docs")
42
+ - [WAFv2](https://yulinsim.dev/services/wafv2/ "Simulated WAFv2 usage docs")
43
+
44
+ ## Feature documentation
45
+
46
+ - [AI skill](https://yulinsim.dev/ai-skill/ "Yulin AI skill usage docs")
47
+ - [The AWS CLI](https://yulinsim.dev/cli/ "The AWS CLI against simulated AWS usage docs")
48
+ - [AWS SDK interception](https://yulinsim.dev/sdk/ "Simulated AWS SDK usage docs")
49
+ - [Event factories](https://yulinsim.dev/factories/ "Test factories for AWS event shapes usage docs")
50
+ - [Linting CloudFront Functions JS2](https://yulinsim.dev/lint/ "CloudFront Functions JS2 lint config usage docs")
51
+ - [Non-AWS dependencies](https://yulinsim.dev/non-aws-dependencies/ "Dependencies Yulin does not simulate usage docs")
52
+ - [Serving on localhost](https://yulinsim.dev/serve/ "Serving simulated AWS on localhost usage docs")
53
+ - [Simulated time](https://yulinsim.dev/time/ "Simulated time usage docs")
54
+ - [Terraform](https://yulinsim.dev/terraform/ "Deploying Terraform into simulated AWS usage docs")
@@ -0,0 +1,69 @@
1
+ # AI skill
2
+
3
+ Yulin has an AI skill that teaches a coding agent how to test AWS code with the simulator well. It
4
+ is `yulin-aws-simulation`, a `SKILL.md` written to the
5
+ [Agent Skills specification](https://agentskills.io/specification) and installable into Claude Code,
6
+ Codex CLI, Cursor, VS Code and anything else that reads one. It covers the part that lives outside
7
+ the API.
8
+
9
+ These docs and the skill answer different questions. A page here says what a simulated service does
10
+ and what its commands take. The skill says what to do with that. An AI agent reaching for Yulin
11
+ without it tends to build a harness around the simulator, leave hand-rolled stubs in place beside
12
+ it, or write an `instanceof` check against an SDK exception class that passes in production and
13
+ fails against the simulation.
14
+
15
+ ## Install
16
+
17
+ ```bash
18
+ npx @kensio/skills add yulin-aws-simulation
19
+ ```
20
+
21
+ That copies the skill into `.agents/skills/`, the directory Codex CLI, Cursor, VS Code and Gemini
22
+ CLI read. `--agent claude` puts it in `.claude/skills/`, and `--user` installs it under your home
23
+ directory for every project.
24
+
25
+ As a Claude Code plugin:
26
+
27
+ ```bash
28
+ claude plugin marketplace add KensioSoftware/kensio.ai
29
+ claude plugin install yulin-aws-simulation@kensio
30
+ ```
31
+
32
+ It is also on npm as `@kensio/yulin-aws-simulation`, and every
33
+ [kensio.ai release](https://github.com/KensioSoftware/kensio.ai/releases) carries it as a zip for a
34
+ machine with no registry reach.
35
+
36
+ ## What it covers
37
+
38
+ - Using `SimAws` and `SimSdk` directly, and spotting the helper class or `setupSimulatedAws()`
39
+ wrapper that starts to grow around them.
40
+ - One synthesized CDK template behind the tests, the dev server and production, deployed with
41
+ `deployTemplateFile` or `deployCdkOut`.
42
+ - When to register a resource at a chosen id, and when to deploy the stack that creates it.
43
+ - Interception over hand-rolled stubs, down to the requests a fake accepts and the simulation
44
+ refuses.
45
+ - Freezing the clock, then advancing it on purpose.
46
+ - Assertions that read the simulation back.
47
+ - Why service errors match by `name` and not by `instanceof`.
48
+ - Deploying an expensive stack once per test file.
49
+ - Running a handler as a real simulated Lambda, under its execution role, its declared environment
50
+ and its own log group.
51
+ - Refusals as a feature, and gaps raised upstream.
52
+
53
+ ## Reading the API alongside it
54
+
55
+ The skill sends the AI agent to these docs for anything API-shaped, and
56
+ [llms.txt](https://yulinsim.dev/llms.txt) is the index it uses. Every page here is available as
57
+ plain markdown by appending `llms.txt` to its URL, one file per guide and one per simulated service.
58
+ That index works with or without the skill installed.
59
+
60
+ The same pages ship inside the package. An installed project holds them under
61
+ `node_modules/@kensio/yulin/docs/`, indexed by `node_modules/@kensio/yulin/llms.txt`, and they
62
+ document the version in that package rather than the current release. An agent with no network
63
+ reach has them, and so does one working on a project held a few versions back. Ripgrep and most
64
+ editor search skip `node_modules` by default. An agent finds these files when something names the
65
+ path for it.
66
+
67
+ The skill lives at
68
+ [kensio.ai/skills/yulin-aws-simulation](https://kensio.ai/skills/yulin-aws-simulation), versioned
69
+ separately from Yulin and licensed Apache-2.0.