@kensio/yulin 0.36.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (545) hide show
  1. package/dist/sdk/router/resolve-sim-sdk-command-router.d.ts.map +1 -1
  2. package/dist/sdk/router/resolve-sim-sdk-command-router.js +3 -0
  3. package/dist/sdk/router/resolve-sim-sdk-command-router.js.map +1 -1
  4. package/dist/serve/controller/sim-service-controller.d.ts +13 -0
  5. package/dist/serve/controller/sim-service-controller.d.ts.map +1 -1
  6. package/dist/serve/controller/sim-service-controller.js.map +1 -1
  7. package/dist/serve/http/url/sim-aws-local-url.d.ts.map +1 -1
  8. package/dist/serve/http/url/sim-aws-local-url.js +5 -1
  9. package/dist/serve/http/url/sim-aws-local-url.js.map +1 -1
  10. package/dist/service/aws/factory/sim-aws-account-service-cache.d.ts.map +1 -1
  11. package/dist/service/aws/factory/sim-aws-account-service-cache.js +3 -0
  12. package/dist/service/aws/factory/sim-aws-account-service-cache.js.map +1 -1
  13. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +8 -0
  14. package/dist/service/aws/factory/sim-aws-service-factory.d.ts.map +1 -1
  15. package/dist/service/aws/factory/sim-aws-service-factory.js +14 -0
  16. package/dist/service/aws/factory/sim-aws-service-factory.js.map +1 -1
  17. package/dist/service/aws/sim-aws-account-region-scope.d.ts +5 -0
  18. package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
  19. package/dist/service/aws/sim-aws-account-region-scope.js +6 -0
  20. package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
  21. package/dist/service/aws/sim-aws-account.d.ts +5 -0
  22. package/dist/service/aws/sim-aws-account.d.ts.map +1 -1
  23. package/dist/service/aws/sim-aws-account.js +6 -0
  24. package/dist/service/aws/sim-aws-account.js.map +1 -1
  25. package/dist/service/aws/sim-aws-region.d.ts +5 -0
  26. package/dist/service/aws/sim-aws-region.d.ts.map +1 -1
  27. package/dist/service/aws/sim-aws-region.js +6 -0
  28. package/dist/service/aws/sim-aws-region.js.map +1 -1
  29. package/dist/service/aws/sim-aws-request-authentication.d.ts +35 -0
  30. package/dist/service/aws/sim-aws-request-authentication.d.ts.map +1 -0
  31. package/dist/service/aws/sim-aws-request-authentication.js +32 -0
  32. package/dist/service/aws/sim-aws-request-authentication.js.map +1 -0
  33. package/dist/service/aws/sim-aws.d.ts +7 -21
  34. package/dist/service/aws/sim-aws.d.ts.map +1 -1
  35. package/dist/service/aws/sim-aws.js +15 -26
  36. package/dist/service/aws/sim-aws.js.map +1 -1
  37. package/dist/service/cloudformation/resource/dependency/sim-cfn-resource-dependencies.d.ts.map +1 -1
  38. package/dist/service/cloudformation/resource/dependency/sim-cfn-resource-dependencies.js +1 -1
  39. package/dist/service/cloudformation/resource/dependency/sim-cfn-resource-dependencies.js.map +1 -1
  40. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +1 -1
  41. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js.map +1 -1
  42. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.d.ts.map +1 -1
  43. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js +2 -1
  44. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js.map +1 -1
  45. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +116 -0
  46. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts.map +1 -0
  47. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +126 -0
  48. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js.map +1 -0
  49. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +52 -0
  50. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts.map +1 -0
  51. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +77 -0
  52. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js.map +1 -0
  53. package/dist/service/iam/authorize/caller-account/sim-iam-caller-account-resolver.d.ts +37 -0
  54. package/dist/service/iam/authorize/caller-account/sim-iam-caller-account-resolver.d.ts.map +1 -0
  55. package/dist/service/iam/authorize/caller-account/sim-iam-caller-account-resolver.js +33 -0
  56. package/dist/service/iam/authorize/caller-account/sim-iam-caller-account-resolver.js.map +1 -0
  57. package/dist/service/iam/authorize/caller-account/sim-iam-caller-account.d.ts +21 -0
  58. package/dist/service/iam/authorize/caller-account/sim-iam-caller-account.d.ts.map +1 -0
  59. package/dist/service/iam/authorize/caller-account/sim-iam-caller-account.js +2 -0
  60. package/dist/service/iam/authorize/caller-account/sim-iam-caller-account.js.map +1 -0
  61. package/dist/service/iam/authorize/caller-account/sim-iam-cross-account-caller.d.ts +34 -0
  62. package/dist/service/iam/authorize/caller-account/sim-iam-cross-account-caller.d.ts.map +1 -0
  63. package/dist/service/iam/authorize/caller-account/sim-iam-cross-account-caller.js +22 -0
  64. package/dist/service/iam/authorize/caller-account/sim-iam-cross-account-caller.js.map +1 -0
  65. package/dist/service/iam/authorize/caller-account/sim-iam-same-account-caller.d.ts +18 -0
  66. package/dist/service/iam/authorize/caller-account/sim-iam-same-account-caller.d.ts.map +1 -0
  67. package/dist/service/iam/authorize/caller-account/sim-iam-same-account-caller.js +16 -0
  68. package/dist/service/iam/authorize/caller-account/sim-iam-same-account-caller.js.map +1 -0
  69. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +17 -0
  70. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts.map +1 -0
  71. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +24 -0
  72. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js.map +1 -0
  73. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts +1 -2
  74. package/dist/service/iam/authorize/context/sim-iam-auth-z-caller-context-builder.d.ts.map +1 -1
  75. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +49 -2
  76. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts.map +1 -1
  77. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +44 -8
  78. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js.map +1 -1
  79. package/dist/service/iam/authorize/context/sim-iam-auth-z-context.d.ts +9 -0
  80. package/dist/service/iam/authorize/context/sim-iam-auth-z-context.d.ts.map +1 -1
  81. package/dist/service/iam/authorize/context/sim-iam-auth-z-context.factory.d.ts.map +1 -1
  82. package/dist/service/iam/authorize/context/sim-iam-auth-z-context.factory.js +2 -0
  83. package/dist/service/iam/authorize/context/sim-iam-auth-z-context.factory.js.map +1 -1
  84. package/dist/service/iam/authorize/identity/sim-iam-account-identity-policies.d.ts +14 -0
  85. package/dist/service/iam/authorize/identity/sim-iam-account-identity-policies.d.ts.map +1 -0
  86. package/dist/service/iam/authorize/identity/sim-iam-account-identity-policies.js +2 -0
  87. package/dist/service/iam/authorize/identity/sim-iam-account-identity-policies.js.map +1 -0
  88. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +6 -1
  89. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts.map +1 -1
  90. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +25 -16
  91. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js.map +1 -1
  92. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.d.ts +2 -1
  93. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.d.ts.map +1 -1
  94. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.js +2 -1
  95. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.js.map +1 -1
  96. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +39 -0
  97. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts.map +1 -0
  98. package/dist/service/iam/authorize/match/sim-iam-principal-match.js +55 -0
  99. package/dist/service/iam/authorize/match/sim-iam-principal-match.js.map +1 -0
  100. package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts +24 -1
  101. package/dist/service/iam/authorize/sim-iam-account-auth-z.d.ts.map +1 -1
  102. package/dist/service/iam/authorize/sim-iam-account-auth-z.js +18 -4
  103. package/dist/service/iam/authorize/sim-iam-account-auth-z.js.map +1 -1
  104. package/dist/service/iam/authorize/sim-iam-authorizer.d.ts +11 -2
  105. package/dist/service/iam/authorize/sim-iam-authorizer.d.ts.map +1 -1
  106. package/dist/service/iam/authorize/sim-iam-authorizer.js +14 -1
  107. package/dist/service/iam/authorize/sim-iam-authorizer.js.map +1 -1
  108. package/dist/service/iam/authorize/sim-iam-decision.d.ts +17 -5
  109. package/dist/service/iam/authorize/sim-iam-decision.d.ts.map +1 -1
  110. package/dist/service/iam/authorize/sim-iam-decision.js +29 -14
  111. package/dist/service/iam/authorize/sim-iam-decision.js.map +1 -1
  112. package/dist/service/iam/command/sim-iam-command-handlers.d.ts +41 -0
  113. package/dist/service/iam/command/sim-iam-command-handlers.d.ts.map +1 -0
  114. package/dist/service/iam/command/sim-iam-command-handlers.js +42 -0
  115. package/dist/service/iam/command/sim-iam-command-handlers.js.map +1 -0
  116. package/dist/service/iam/index.d.ts +1 -0
  117. package/dist/service/iam/index.d.ts.map +1 -1
  118. package/dist/service/iam/index.js +1 -0
  119. package/dist/service/iam/index.js.map +1 -1
  120. package/dist/service/iam/registry/sim-iam-account-resolver.d.ts +8 -0
  121. package/dist/service/iam/registry/sim-iam-account-resolver.d.ts.map +1 -1
  122. package/dist/service/iam/registry/sim-iam-registry.d.ts +4 -0
  123. package/dist/service/iam/registry/sim-iam-registry.d.ts.map +1 -1
  124. package/dist/service/iam/registry/sim-iam-registry.js +7 -1
  125. package/dist/service/iam/registry/sim-iam-registry.js.map +1 -1
  126. package/dist/service/iam/request/sim-aws-request-caller-resolver.d.ts +21 -5
  127. package/dist/service/iam/request/sim-aws-request-caller-resolver.d.ts.map +1 -1
  128. package/dist/service/iam/request/sim-aws-request-caller-resolver.js +15 -9
  129. package/dist/service/iam/request/sim-aws-request-caller-resolver.js.map +1 -1
  130. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.d.ts +3 -1
  131. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.d.ts.map +1 -1
  132. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.js +6 -4
  133. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.js.map +1 -1
  134. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.d.ts +34 -14
  135. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.d.ts.map +1 -1
  136. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.js +56 -29
  137. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.js.map +1 -1
  138. package/dist/service/iam/sigv4/error/sim-iam-sigv4.error.d.ts +13 -1
  139. package/dist/service/iam/sigv4/error/sim-iam-sigv4.error.d.ts.map +1 -1
  140. package/dist/service/iam/sigv4/error/sim-iam-sigv4.error.js +14 -0
  141. package/dist/service/iam/sigv4/error/sim-iam-sigv4.error.js.map +1 -1
  142. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-credential.d.ts +25 -0
  143. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-credential.d.ts.map +1 -0
  144. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-credential.js +41 -0
  145. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-credential.js.map +1 -0
  146. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-parameters.d.ts +27 -0
  147. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-parameters.d.ts.map +1 -0
  148. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-parameters.js +41 -0
  149. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-parameters.js.map +1 -0
  150. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-query.d.ts +39 -0
  151. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-query.d.ts.map +1 -0
  152. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-query.js +59 -0
  153. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-query.js.map +1 -0
  154. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-window.d.ts +30 -0
  155. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-window.d.ts.map +1 -0
  156. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-window.js +64 -0
  157. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-window.js.map +1 -0
  158. package/dist/service/iam/sigv4/sim-iam-sigv4-authorization.d.ts +2 -1
  159. package/dist/service/iam/sigv4/sim-iam-sigv4-authorization.d.ts.map +1 -1
  160. package/dist/service/iam/sigv4/sim-iam-sigv4-authorization.js.map +1 -1
  161. package/dist/service/iam/sigv4/sim-iam-sigv4-request-date.d.ts +22 -1
  162. package/dist/service/iam/sigv4/sim-iam-sigv4-request-date.d.ts.map +1 -1
  163. package/dist/service/iam/sigv4/sim-iam-sigv4-request-date.js +49 -7
  164. package/dist/service/iam/sigv4/sim-iam-sigv4-request-date.js.map +1 -1
  165. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-check.d.ts +9 -2
  166. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-check.d.ts.map +1 -1
  167. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-check.js +5 -5
  168. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-check.js.map +1 -1
  169. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-statement.d.ts +16 -0
  170. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-statement.d.ts.map +1 -0
  171. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-statement.js +2 -0
  172. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-statement.js.map +1 -0
  173. package/dist/service/iam/sigv4/sim-iam-sigv4-signing-credentials.d.ts +12 -3
  174. package/dist/service/iam/sigv4/sim-iam-sigv4-signing-credentials.d.ts.map +1 -1
  175. package/dist/service/iam/sigv4/sim-iam-sigv4-signing-credentials.js +9 -5
  176. package/dist/service/iam/sigv4/sim-iam-sigv4-signing-credentials.js.map +1 -1
  177. package/dist/service/iam/sigv4/sim-iam-sigv4-verifier.d.ts +20 -4
  178. package/dist/service/iam/sigv4/sim-iam-sigv4-verifier.d.ts.map +1 -1
  179. package/dist/service/iam/sigv4/sim-iam-sigv4-verifier.js +52 -6
  180. package/dist/service/iam/sigv4/sim-iam-sigv4-verifier.js.map +1 -1
  181. package/dist/service/iam/sim-iam-account-parts.d.ts +58 -0
  182. package/dist/service/iam/sim-iam-account-parts.d.ts.map +1 -0
  183. package/dist/service/iam/sim-iam-account-parts.js +72 -0
  184. package/dist/service/iam/sim-iam-account-parts.js.map +1 -0
  185. package/dist/service/iam/sim-iam.d.ts +28 -21
  186. package/dist/service/iam/sim-iam.d.ts.map +1 -1
  187. package/dist/service/iam/sim-iam.js +42 -71
  188. package/dist/service/iam/sim-iam.js.map +1 -1
  189. package/dist/service/kms/command/alias/alias.command.d.ts +43 -0
  190. package/dist/service/kms/command/alias/alias.command.d.ts.map +1 -0
  191. package/dist/service/kms/command/alias/alias.command.js +2 -0
  192. package/dist/service/kms/command/alias/alias.command.js.map +1 -0
  193. package/dist/service/kms/command/alias/sim-kms-alias-commands.d.ts +34 -0
  194. package/dist/service/kms/command/alias/sim-kms-alias-commands.d.ts.map +1 -0
  195. package/dist/service/kms/command/alias/sim-kms-alias-commands.js +56 -0
  196. package/dist/service/kms/command/alias/sim-kms-alias-commands.js.map +1 -0
  197. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +38 -0
  198. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts.map +1 -0
  199. package/dist/service/kms/command/authorize/sim-kms-authorizer.js +58 -0
  200. package/dist/service/kms/command/authorize/sim-kms-authorizer.js.map +1 -0
  201. package/dist/service/kms/command/crypto/crypto.command.d.ts +68 -0
  202. package/dist/service/kms/command/crypto/crypto.command.d.ts.map +1 -0
  203. package/dist/service/kms/command/crypto/crypto.command.js +2 -0
  204. package/dist/service/kms/command/crypto/crypto.command.js.map +1 -0
  205. package/dist/service/kms/command/crypto/sim-kms-ciphertext-key.d.ts +40 -0
  206. package/dist/service/kms/command/crypto/sim-kms-ciphertext-key.d.ts.map +1 -0
  207. package/dist/service/kms/command/crypto/sim-kms-ciphertext-key.js +58 -0
  208. package/dist/service/kms/command/crypto/sim-kms-ciphertext-key.js.map +1 -0
  209. package/dist/service/kms/command/crypto/sim-kms-crypto-commands.d.ts +38 -0
  210. package/dist/service/kms/command/crypto/sim-kms-crypto-commands.d.ts.map +1 -0
  211. package/dist/service/kms/command/crypto/sim-kms-crypto-commands.js +74 -0
  212. package/dist/service/kms/command/crypto/sim-kms-crypto-commands.js.map +1 -0
  213. package/dist/service/kms/command/crypto/sim-kms-data-key-spec.d.ts +16 -0
  214. package/dist/service/kms/command/crypto/sim-kms-data-key-spec.d.ts.map +1 -0
  215. package/dist/service/kms/command/crypto/sim-kms-data-key-spec.js +50 -0
  216. package/dist/service/kms/command/crypto/sim-kms-data-key-spec.js.map +1 -0
  217. package/dist/service/kms/command/crypto/sim-kms-generate-data-key.d.ts +31 -0
  218. package/dist/service/kms/command/crypto/sim-kms-generate-data-key.d.ts.map +1 -0
  219. package/dist/service/kms/command/crypto/sim-kms-generate-data-key.js +35 -0
  220. package/dist/service/kms/command/crypto/sim-kms-generate-data-key.js.map +1 -0
  221. package/dist/service/kms/command/key/key.command.d.ts +159 -0
  222. package/dist/service/kms/command/key/key.command.d.ts.map +1 -0
  223. package/dist/service/kms/command/key/key.command.js +2 -0
  224. package/dist/service/kms/command/key/key.command.js.map +1 -0
  225. package/dist/service/kms/command/key/sim-kms-key-commands.d.ts +41 -0
  226. package/dist/service/kms/command/key/sim-kms-key-commands.d.ts.map +1 -0
  227. package/dist/service/kms/command/key/sim-kms-key-commands.js +45 -0
  228. package/dist/service/kms/command/key/sim-kms-key-commands.js.map +1 -0
  229. package/dist/service/kms/command/key/sim-kms-key-lifecycle-commands.d.ts +48 -0
  230. package/dist/service/kms/command/key/sim-kms-key-lifecycle-commands.d.ts.map +1 -0
  231. package/dist/service/kms/command/key/sim-kms-key-lifecycle-commands.js +67 -0
  232. package/dist/service/kms/command/key/sim-kms-key-lifecycle-commands.js.map +1 -0
  233. package/dist/service/kms/command/key/sim-kms-key-policy-commands.d.ts +39 -0
  234. package/dist/service/kms/command/key/sim-kms-key-policy-commands.d.ts.map +1 -0
  235. package/dist/service/kms/command/key/sim-kms-key-policy-commands.js +57 -0
  236. package/dist/service/kms/command/key/sim-kms-key-policy-commands.js.map +1 -0
  237. package/dist/service/kms/command/key/sim-kms-key-type.d.ts +14 -0
  238. package/dist/service/kms/command/key/sim-kms-key-type.d.ts.map +1 -0
  239. package/dist/service/kms/command/key/sim-kms-key-type.js +31 -0
  240. package/dist/service/kms/command/key/sim-kms-key-type.js.map +1 -0
  241. package/dist/service/kms/command/key/sim-kms-list-keys.d.ts +29 -0
  242. package/dist/service/kms/command/key/sim-kms-list-keys.d.ts.map +1 -0
  243. package/dist/service/kms/command/key/sim-kms-list-keys.js +31 -0
  244. package/dist/service/kms/command/key/sim-kms-list-keys.js.map +1 -0
  245. package/dist/service/kms/command/key/sim-kms-pending-window.d.ts +17 -0
  246. package/dist/service/kms/command/key/sim-kms-pending-window.d.ts.map +1 -0
  247. package/dist/service/kms/command/key/sim-kms-pending-window.js +37 -0
  248. package/dist/service/kms/command/key/sim-kms-pending-window.js.map +1 -0
  249. package/dist/service/kms/command/sim-kms-command.types.d.ts +10 -0
  250. package/dist/service/kms/command/sim-kms-command.types.d.ts.map +1 -0
  251. package/dist/service/kms/command/sim-kms-command.types.js +2 -0
  252. package/dist/service/kms/command/sim-kms-command.types.js.map +1 -0
  253. package/dist/service/kms/error/sim-kms.error.d.ts +88 -0
  254. package/dist/service/kms/error/sim-kms.error.d.ts.map +1 -0
  255. package/dist/service/kms/error/sim-kms.error.js +101 -0
  256. package/dist/service/kms/error/sim-kms.error.js.map +1 -0
  257. package/dist/service/kms/index.d.ts +8 -0
  258. package/dist/service/kms/index.d.ts.map +1 -0
  259. package/dist/service/kms/index.js +6 -0
  260. package/dist/service/kms/index.js.map +1 -0
  261. package/dist/service/kms/key/sim-kms-alias.d.ts +45 -0
  262. package/dist/service/kms/key/sim-kms-alias.d.ts.map +1 -0
  263. package/dist/service/kms/key/sim-kms-alias.js +59 -0
  264. package/dist/service/kms/key/sim-kms-alias.js.map +1 -0
  265. package/dist/service/kms/key/sim-kms-ciphertext-blob.d.ts +43 -0
  266. package/dist/service/kms/key/sim-kms-ciphertext-blob.d.ts.map +1 -0
  267. package/dist/service/kms/key/sim-kms-ciphertext-blob.js +89 -0
  268. package/dist/service/kms/key/sim-kms-ciphertext-blob.js.map +1 -0
  269. package/dist/service/kms/key/sim-kms-encryption-context.d.ts +34 -0
  270. package/dist/service/kms/key/sim-kms-encryption-context.d.ts.map +1 -0
  271. package/dist/service/kms/key/sim-kms-encryption-context.js +39 -0
  272. package/dist/service/kms/key/sim-kms-encryption-context.js.map +1 -0
  273. package/dist/service/kms/key/sim-kms-key-factory.d.ts +36 -0
  274. package/dist/service/kms/key/sim-kms-key-factory.d.ts.map +1 -0
  275. package/dist/service/kms/key/sim-kms-key-factory.js +47 -0
  276. package/dist/service/kms/key/sim-kms-key-factory.js.map +1 -0
  277. package/dist/service/kms/key/sim-kms-key-identifier.d.ts +44 -0
  278. package/dist/service/kms/key/sim-kms-key-identifier.d.ts.map +1 -0
  279. package/dist/service/kms/key/sim-kms-key-identifier.js +81 -0
  280. package/dist/service/kms/key/sim-kms-key-identifier.js.map +1 -0
  281. package/dist/service/kms/key/sim-kms-key-lifecycle.d.ts +71 -0
  282. package/dist/service/kms/key/sim-kms-key-lifecycle.d.ts.map +1 -0
  283. package/dist/service/kms/key/sim-kms-key-lifecycle.js +106 -0
  284. package/dist/service/kms/key/sim-kms-key-lifecycle.js.map +1 -0
  285. package/dist/service/kms/key/sim-kms-key-material.d.ts +36 -0
  286. package/dist/service/kms/key/sim-kms-key-material.d.ts.map +1 -0
  287. package/dist/service/kms/key/sim-kms-key-material.js +74 -0
  288. package/dist/service/kms/key/sim-kms-key-material.js.map +1 -0
  289. package/dist/service/kms/key/sim-kms-key-metadata.d.ts +45 -0
  290. package/dist/service/kms/key/sim-kms-key-metadata.d.ts.map +1 -0
  291. package/dist/service/kms/key/sim-kms-key-metadata.js +44 -0
  292. package/dist/service/kms/key/sim-kms-key-metadata.js.map +1 -0
  293. package/dist/service/kms/key/sim-kms-key-policy.d.ts +45 -0
  294. package/dist/service/kms/key/sim-kms-key-policy.d.ts.map +1 -0
  295. package/dist/service/kms/key/sim-kms-key-policy.js +69 -0
  296. package/dist/service/kms/key/sim-kms-key-policy.js.map +1 -0
  297. package/dist/service/kms/key/sim-kms-key-store.d.ts +58 -0
  298. package/dist/service/kms/key/sim-kms-key-store.d.ts.map +1 -0
  299. package/dist/service/kms/key/sim-kms-key-store.js +111 -0
  300. package/dist/service/kms/key/sim-kms-key-store.js.map +1 -0
  301. package/dist/service/kms/key/sim-kms-key.d.ts +88 -0
  302. package/dist/service/kms/key/sim-kms-key.d.ts.map +1 -0
  303. package/dist/service/kms/key/sim-kms-key.js +106 -0
  304. package/dist/service/kms/key/sim-kms-key.js.map +1 -0
  305. package/dist/service/kms/key/sim-kms-policy-document.d.ts +30 -0
  306. package/dist/service/kms/key/sim-kms-policy-document.d.ts.map +1 -0
  307. package/dist/service/kms/key/sim-kms-policy-document.js +54 -0
  308. package/dist/service/kms/key/sim-kms-policy-document.js.map +1 -0
  309. package/dist/service/kms/sdk/sim-kms-sdk-command-router.d.ts +18 -0
  310. package/dist/service/kms/sdk/sim-kms-sdk-command-router.d.ts.map +1 -0
  311. package/dist/service/kms/sdk/sim-kms-sdk-command-router.js +80 -0
  312. package/dist/service/kms/sdk/sim-kms-sdk-command-router.js.map +1 -0
  313. package/dist/service/kms/sim-kms.d.ts +105 -0
  314. package/dist/service/kms/sim-kms.d.ts.map +1 -0
  315. package/dist/service/kms/sim-kms.js +187 -0
  316. package/dist/service/kms/sim-kms.js.map +1 -0
  317. package/dist/service/lambda/command/create-function/create-function.handler.d.ts.map +1 -1
  318. package/dist/service/lambda/command/create-function/create-function.handler.js +3 -0
  319. package/dist/service/lambda/command/create-function/create-function.handler.js.map +1 -1
  320. package/dist/service/lambda/function/code/sim-lambda-code-resolver.d.ts +6 -0
  321. package/dist/service/lambda/function/code/sim-lambda-code-resolver.d.ts.map +1 -1
  322. package/dist/service/lambda/function/code/sim-lambda-code-resolver.js +1 -0
  323. package/dist/service/lambda/function/code/sim-lambda-code-resolver.js.map +1 -1
  324. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +15 -0
  325. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts.map +1 -1
  326. package/dist/service/lambda/function/code/sim-lambda-executable-code.js +5 -0
  327. package/dist/service/lambda/function/code/sim-lambda-executable-code.js.map +1 -1
  328. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.d.ts +3 -0
  329. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.d.ts.map +1 -1
  330. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.js +3 -0
  331. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.js.map +1 -1
  332. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +11 -0
  333. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts.map +1 -1
  334. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +7 -2
  335. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js.map +1 -1
  336. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +6 -5
  337. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts.map +1 -1
  338. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +10 -5
  339. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js.map +1 -1
  340. package/dist/service/lambda/function/invoke/sim-lambda-process-clock.d.ts +53 -0
  341. package/dist/service/lambda/function/invoke/sim-lambda-process-clock.d.ts.map +1 -0
  342. package/dist/service/lambda/function/invoke/sim-lambda-process-clock.js +101 -0
  343. package/dist/service/lambda/function/invoke/sim-lambda-process-clock.js.map +1 -0
  344. package/dist/service/lambda/function/sim-lambda-function.d.ts +8 -0
  345. package/dist/service/lambda/function/sim-lambda-function.d.ts.map +1 -1
  346. package/dist/service/lambda/function/sim-lambda-function.js +15 -1
  347. package/dist/service/lambda/function/sim-lambda-function.js.map +1 -1
  348. package/dist/service/lambda/serve/sim-lambda-url-router.js +1 -1
  349. package/dist/service/lambda/serve/sim-lambda-url-router.js.map +1 -1
  350. package/dist/service/route53/resolve/sim-r53-service-target-resolver.d.ts +14 -0
  351. package/dist/service/route53/resolve/sim-r53-service-target-resolver.d.ts.map +1 -1
  352. package/dist/service/route53/resolve/sim-r53-service-target-resolver.js +38 -0
  353. package/dist/service/route53/resolve/sim-r53-service-target-resolver.js.map +1 -1
  354. package/dist/service/s3/bucket/public-access/sim-s3-pinning-condition.d.ts +7 -0
  355. package/dist/service/s3/bucket/public-access/sim-s3-pinning-condition.d.ts.map +1 -0
  356. package/dist/service/s3/bucket/public-access/sim-s3-pinning-condition.js +73 -0
  357. package/dist/service/s3/bucket/public-access/sim-s3-pinning-condition.js.map +1 -0
  358. package/dist/service/s3/bucket/public-access/sim-s3-public-access-block.d.ts +61 -0
  359. package/dist/service/s3/bucket/public-access/sim-s3-public-access-block.d.ts.map +1 -0
  360. package/dist/service/s3/bucket/public-access/sim-s3-public-access-block.js +57 -0
  361. package/dist/service/s3/bucket/public-access/sim-s3-public-access-block.js.map +1 -0
  362. package/dist/service/s3/bucket/public-access/sim-s3-public-policy-guard.d.ts +19 -0
  363. package/dist/service/s3/bucket/public-access/sim-s3-public-policy-guard.d.ts.map +1 -0
  364. package/dist/service/s3/bucket/public-access/sim-s3-public-policy-guard.js +28 -0
  365. package/dist/service/s3/bucket/public-access/sim-s3-public-policy-guard.js.map +1 -0
  366. package/dist/service/s3/bucket/public-access/sim-s3-public-policy.d.ts +18 -0
  367. package/dist/service/s3/bucket/public-access/sim-s3-public-policy.d.ts.map +1 -0
  368. package/dist/service/s3/bucket/public-access/sim-s3-public-policy.js +35 -0
  369. package/dist/service/s3/bucket/public-access/sim-s3-public-policy.js.map +1 -0
  370. package/dist/service/s3/bucket/public-access/sim-s3-public-principal.d.ts +11 -0
  371. package/dist/service/s3/bucket/public-access/sim-s3-public-principal.d.ts.map +1 -0
  372. package/dist/service/s3/bucket/public-access/sim-s3-public-principal.js +34 -0
  373. package/dist/service/s3/bucket/public-access/sim-s3-public-principal.js.map +1 -0
  374. package/dist/service/s3/bucket/sim-s3-bucket-arn.d.ts +9 -0
  375. package/dist/service/s3/bucket/sim-s3-bucket-arn.d.ts.map +1 -0
  376. package/dist/service/s3/bucket/sim-s3-bucket-arn.js +10 -0
  377. package/dist/service/s3/bucket/sim-s3-bucket-arn.js.map +1 -0
  378. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +25 -0
  379. package/dist/service/s3/bucket/sim-s3-bucket.d.ts.map +1 -1
  380. package/dist/service/s3/bucket/sim-s3-bucket.js +34 -1
  381. package/dist/service/s3/bucket/sim-s3-bucket.js.map +1 -1
  382. package/dist/service/s3/bucket/sim-s3-endpoint-url.d.ts +16 -0
  383. package/dist/service/s3/bucket/sim-s3-endpoint-url.d.ts.map +1 -0
  384. package/dist/service/s3/bucket/sim-s3-endpoint-url.js +19 -0
  385. package/dist/service/s3/bucket/sim-s3-endpoint-url.js.map +1 -0
  386. package/dist/service/s3/bucket/website/sim-s3-public-website.fixture.d.ts +13 -0
  387. package/dist/service/s3/bucket/website/sim-s3-public-website.fixture.d.ts.map +1 -0
  388. package/dist/service/s3/bucket/website/sim-s3-public-website.fixture.js +36 -0
  389. package/dist/service/s3/bucket/website/sim-s3-public-website.fixture.js.map +1 -0
  390. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +27 -0
  391. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts.map +1 -0
  392. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +92 -0
  393. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js.map +1 -0
  394. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.d.ts +32 -0
  395. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.d.ts.map +1 -0
  396. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.js +55 -0
  397. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.js.map +1 -0
  398. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.d.ts +2 -4
  399. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.d.ts.map +1 -1
  400. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.js +10 -61
  401. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.js.map +1 -1
  402. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +11 -0
  403. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts.map +1 -0
  404. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.js +22 -0
  405. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.js.map +1 -0
  406. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy-authorizer.d.ts +23 -0
  407. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy-authorizer.d.ts.map +1 -0
  408. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy-authorizer.js +36 -0
  409. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy-authorizer.js.map +1 -0
  410. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.command.d.ts +20 -0
  411. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.command.d.ts.map +1 -0
  412. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.command.js +2 -0
  413. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.command.js.map +1 -0
  414. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.handler.d.ts +32 -0
  415. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.handler.d.ts.map +1 -0
  416. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.handler.js +37 -0
  417. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.handler.js.map +1 -0
  418. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.command.d.ts +20 -0
  419. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.command.d.ts.map +1 -0
  420. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.command.js +2 -0
  421. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.command.js.map +1 -0
  422. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.handler.d.ts +30 -0
  423. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.handler.d.ts.map +1 -0
  424. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.handler.js +35 -0
  425. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.handler.js.map +1 -0
  426. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy-authorizer.d.ts +20 -0
  427. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy-authorizer.d.ts.map +1 -0
  428. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy-authorizer.js +33 -0
  429. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy-authorizer.js.map +1 -0
  430. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.command.d.ts +24 -0
  431. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.command.d.ts.map +1 -0
  432. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.command.js +2 -0
  433. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.command.js.map +1 -0
  434. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.handler.d.ts +29 -0
  435. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.handler.d.ts.map +1 -0
  436. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.handler.js +40 -0
  437. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.handler.js.map +1 -0
  438. package/dist/service/s3/command/get-public-access-block/get-public-access-block.command.d.ts +22 -0
  439. package/dist/service/s3/command/get-public-access-block/get-public-access-block.command.d.ts.map +1 -0
  440. package/dist/service/s3/command/get-public-access-block/get-public-access-block.command.js +2 -0
  441. package/dist/service/s3/command/get-public-access-block/get-public-access-block.command.js.map +1 -0
  442. package/dist/service/s3/command/get-public-access-block/get-public-access-block.handler.d.ts +32 -0
  443. package/dist/service/s3/command/get-public-access-block/get-public-access-block.handler.d.ts.map +1 -0
  444. package/dist/service/s3/command/get-public-access-block/get-public-access-block.handler.js +39 -0
  445. package/dist/service/s3/command/get-public-access-block/get-public-access-block.handler.js.map +1 -0
  446. package/dist/service/s3/command/public-access-block/sim-s3-public-access-block-authorizer.d.ts +31 -0
  447. package/dist/service/s3/command/public-access-block/sim-s3-public-access-block-authorizer.d.ts.map +1 -0
  448. package/dist/service/s3/command/public-access-block/sim-s3-public-access-block-authorizer.js +48 -0
  449. package/dist/service/s3/command/public-access-block/sim-s3-public-access-block-authorizer.js.map +1 -0
  450. package/dist/service/s3/command/put-bucket-policy/put-bucket-policy.handler.d.ts +1 -0
  451. package/dist/service/s3/command/put-bucket-policy/put-bucket-policy.handler.d.ts.map +1 -1
  452. package/dist/service/s3/command/put-bucket-policy/put-bucket-policy.handler.js +7 -6
  453. package/dist/service/s3/command/put-bucket-policy/put-bucket-policy.handler.js.map +1 -1
  454. package/dist/service/s3/command/put-public-access-block/put-public-access-block.command.d.ts +22 -0
  455. package/dist/service/s3/command/put-public-access-block/put-public-access-block.command.d.ts.map +1 -0
  456. package/dist/service/s3/command/put-public-access-block/put-public-access-block.command.js +2 -0
  457. package/dist/service/s3/command/put-public-access-block/put-public-access-block.command.js.map +1 -0
  458. package/dist/service/s3/command/put-public-access-block/put-public-access-block.handler.d.ts +33 -0
  459. package/dist/service/s3/command/put-public-access-block/put-public-access-block.handler.d.ts.map +1 -0
  460. package/dist/service/s3/command/put-public-access-block/put-public-access-block.handler.js +40 -0
  461. package/dist/service/s3/command/put-public-access-block/put-public-access-block.handler.js.map +1 -0
  462. package/dist/service/s3/command/require-sim-s3-bucket.d.ts +10 -0
  463. package/dist/service/s3/command/require-sim-s3-bucket.d.ts.map +1 -0
  464. package/dist/service/s3/command/require-sim-s3-bucket.js +16 -0
  465. package/dist/service/s3/command/require-sim-s3-bucket.js.map +1 -0
  466. package/dist/service/s3/command/sim-s3-command-handlers.d.ts +91 -0
  467. package/dist/service/s3/command/sim-s3-command-handlers.d.ts.map +1 -0
  468. package/dist/service/s3/command/sim-s3-command-handlers.js +115 -0
  469. package/dist/service/s3/command/sim-s3-command-handlers.js.map +1 -0
  470. package/dist/service/s3/command/sim-s3-command.types.d.ts +19 -0
  471. package/dist/service/s3/command/sim-s3-command.types.d.ts.map +1 -0
  472. package/dist/service/s3/command/sim-s3-command.types.js +8 -0
  473. package/dist/service/s3/command/sim-s3-command.types.js.map +1 -0
  474. package/dist/service/s3/error/sim-s3-checksum.error.d.ts +28 -0
  475. package/dist/service/s3/error/sim-s3-checksum.error.d.ts.map +1 -0
  476. package/dist/service/s3/error/sim-s3-checksum.error.js +32 -0
  477. package/dist/service/s3/error/sim-s3-checksum.error.js.map +1 -0
  478. package/dist/service/s3/error/sim-s3.error.d.ts +20 -0
  479. package/dist/service/s3/error/sim-s3.error.d.ts.map +1 -1
  480. package/dist/service/s3/error/sim-s3.error.js +24 -0
  481. package/dist/service/s3/error/sim-s3.error.js.map +1 -1
  482. package/dist/service/s3/sdk/sim-s3-sdk-command-router.d.ts.map +1 -1
  483. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +20 -0
  484. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js.map +1 -1
  485. package/dist/service/s3/serve/sim-s3-bucket-locator.d.ts +40 -0
  486. package/dist/service/s3/serve/sim-s3-bucket-locator.d.ts.map +1 -0
  487. package/dist/service/s3/serve/sim-s3-bucket-locator.js +59 -0
  488. package/dist/service/s3/serve/sim-s3-bucket-locator.js.map +1 -0
  489. package/dist/service/s3/serve/sim-s3-controller.d.ts +7 -0
  490. package/dist/service/s3/serve/sim-s3-controller.d.ts.map +1 -1
  491. package/dist/service/s3/serve/sim-s3-controller.js +14 -2
  492. package/dist/service/s3/serve/sim-s3-controller.js.map +1 -1
  493. package/dist/service/s3/serve/sim-s3-get-object-controller.d.ts +40 -6
  494. package/dist/service/s3/serve/sim-s3-get-object-controller.d.ts.map +1 -1
  495. package/dist/service/s3/serve/sim-s3-get-object-controller.js +80 -49
  496. package/dist/service/s3/serve/sim-s3-get-object-controller.js.map +1 -1
  497. package/dist/service/s3/serve/sim-s3-object-address.d.ts +42 -0
  498. package/dist/service/s3/serve/sim-s3-object-address.d.ts.map +1 -0
  499. package/dist/service/s3/serve/sim-s3-object-address.js +66 -0
  500. package/dist/service/s3/serve/sim-s3-object-address.js.map +1 -0
  501. package/dist/service/s3/serve/sim-s3-request-router.d.ts +18 -13
  502. package/dist/service/s3/serve/sim-s3-request-router.d.ts.map +1 -1
  503. package/dist/service/s3/serve/sim-s3-request-router.js +72 -48
  504. package/dist/service/s3/serve/sim-s3-request-router.js.map +1 -1
  505. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +36 -0
  506. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts.map +1 -0
  507. package/dist/service/s3/serve/sim-s3-rest-controller.js +92 -0
  508. package/dist/service/s3/serve/sim-s3-rest-controller.js.map +1 -0
  509. package/dist/service/s3/serve/sim-s3-rest-error-response.d.ts +28 -0
  510. package/dist/service/s3/serve/sim-s3-rest-error-response.d.ts.map +1 -0
  511. package/dist/service/s3/serve/sim-s3-rest-error-response.js +63 -0
  512. package/dist/service/s3/serve/sim-s3-rest-error-response.js.map +1 -0
  513. package/dist/service/s3/serve/sim-s3-rest-refusal.d.ts +7 -0
  514. package/dist/service/s3/serve/sim-s3-rest-refusal.d.ts.map +1 -0
  515. package/dist/service/s3/serve/sim-s3-rest-refusal.js +18 -0
  516. package/dist/service/s3/serve/sim-s3-rest-refusal.js.map +1 -0
  517. package/dist/service/s3/serve/sim-s3-route.d.ts +40 -0
  518. package/dist/service/s3/serve/sim-s3-route.d.ts.map +1 -0
  519. package/dist/service/s3/serve/sim-s3-route.js +7 -0
  520. package/dist/service/s3/serve/sim-s3-route.js.map +1 -0
  521. package/dist/service/s3/serve/sim-s3-upload-checksum.d.ts +27 -0
  522. package/dist/service/s3/serve/sim-s3-upload-checksum.d.ts.map +1 -0
  523. package/dist/service/s3/serve/sim-s3-upload-checksum.js +86 -0
  524. package/dist/service/s3/serve/sim-s3-upload-checksum.js.map +1 -0
  525. package/dist/service/s3/serve/website/sim-s3-website-object-loader.d.ts +51 -0
  526. package/dist/service/s3/serve/website/sim-s3-website-object-loader.d.ts.map +1 -0
  527. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +75 -0
  528. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js.map +1 -0
  529. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +18 -0
  530. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts.map +1 -0
  531. package/dist/service/s3/serve/website/sim-s3-website-object.js +28 -0
  532. package/dist/service/s3/serve/website/sim-s3-website-object.js.map +1 -0
  533. package/dist/service/s3/serve/website/sim-s3-website-responses.d.ts +27 -0
  534. package/dist/service/s3/serve/website/sim-s3-website-responses.d.ts.map +1 -0
  535. package/dist/service/s3/serve/website/sim-s3-website-responses.js +44 -0
  536. package/dist/service/s3/serve/website/sim-s3-website-responses.js.map +1 -0
  537. package/dist/service/s3/sim-s3.d.ts +34 -9
  538. package/dist/service/s3/sim-s3.d.ts.map +1 -1
  539. package/dist/service/s3/sim-s3.js +65 -55
  540. package/dist/service/s3/sim-s3.js.map +1 -1
  541. package/dist/util/clock/sim-clock-date.d.ts +20 -0
  542. package/dist/util/clock/sim-clock-date.d.ts.map +1 -0
  543. package/dist/util/clock/sim-clock-date.js +43 -0
  544. package/dist/util/clock/sim-clock-date.js.map +1 -0
  545. package/package.json +17 -11
@@ -1,4 +1,5 @@
1
1
  import { simIamWildcardMatch } from "../sim-iam-wildcard.js";
2
+ import { SimIamPrincipalMatch } from "./sim-iam-principal-match.js";
2
3
  /**
3
4
  * Matches the principal portion of an IAM policy statement.
4
5
  *
@@ -30,16 +31,18 @@ export class SimIamPolicyPrincipalMatcher {
30
31
  */
31
32
  matches(policy, statement) {
32
33
  if (policy.sourceType !== "resource" && policy.sourceType !== "trust") {
33
- return (statement.principal === undefined &&
34
+ return SimIamPrincipalMatch.direct().when(statement.principal === undefined &&
34
35
  statement.notPrincipal === undefined);
35
36
  }
36
37
  if (statement.principal !== undefined) {
37
38
  return this.valueMatches(statement.principal);
38
39
  }
39
40
  if (statement.notPrincipal !== undefined) {
40
- return !this.valueMatches(statement.notPrincipal);
41
+ // Excluding the caller says nothing about the Account delegating, so a
42
+ // NotPrincipal that leaves the caller in is a direct grant.
43
+ return SimIamPrincipalMatch.direct().when(!this.valueMatches(statement.notPrincipal).matched);
41
44
  }
42
- return false;
45
+ return SimIamPrincipalMatch.none();
43
46
  }
44
47
  /**
45
48
  * Check each Principal representation supported by the parsed policy model.
@@ -53,20 +56,26 @@ export class SimIamPolicyPrincipalMatcher {
53
56
  return this.awsPatternMatches(principal);
54
57
  }
55
58
  if (Array.isArray(principal)) {
56
- return principal.some((value) => this.awsPatternMatches(value));
59
+ return this.firstMatch(principal, (value) => this.awsPatternMatches(value));
57
60
  }
58
- return Object.entries(principal).some(([principalType, values]) => {
61
+ return this.firstMatch(Object.entries(principal), ([type, values]) => {
59
62
  const patterns = typeof values === "string" ? [values] : values;
60
- if (principalType === "AWS") {
61
- return patterns.some((pattern) => this.awsPatternMatches(pattern));
63
+ if (type === "AWS") {
64
+ return this.firstMatch(patterns, (pattern) => this.awsPatternMatches(pattern));
62
65
  }
63
66
  /* v8 ignore if -- service principals not yet fully supported */
64
- if (principalType === "Service") {
65
- return patterns.some((pattern) => this.servicePatternMatches(pattern));
67
+ if (type === "Service") {
68
+ return this.firstMatch(patterns, (pattern) => this.servicePatternMatches(pattern));
66
69
  }
67
- return false;
70
+ return SimIamPrincipalMatch.none();
68
71
  });
69
72
  }
73
+ /**
74
+ * The winning match among alternatives, since Principal lists are an OR.
75
+ */
76
+ firstMatch(values, match) {
77
+ return SimIamPrincipalMatch.first(values.map((value) => match(value)));
78
+ }
70
79
  /**
71
80
  * Compare an AWS principal pattern with the resolved caller.
72
81
  *
@@ -76,19 +85,19 @@ export class SimIamPolicyPrincipalMatcher {
76
85
  */
77
86
  awsPatternMatches(pattern) {
78
87
  if (pattern === "*") {
79
- return true;
88
+ return SimIamPrincipalMatch.direct();
80
89
  }
81
90
  const caller = this.context.caller;
82
91
  if (caller.arn === undefined) {
83
- return false;
92
+ return SimIamPrincipalMatch.none();
84
93
  }
85
94
  const delegatedAccountId = this.delegatedAccountId(pattern);
86
95
  if (delegatedAccountId !== undefined) {
87
- return caller.accountId === delegatedAccountId;
96
+ return SimIamPrincipalMatch.accountDelegation().when(caller.accountId === delegatedAccountId);
88
97
  }
89
- return simIamWildcardMatch(pattern, caller.arn, {
98
+ return SimIamPrincipalMatch.direct().when(simIamWildcardMatch(pattern, caller.arn, {
90
99
  caseSensitive: true,
91
- });
100
+ }));
92
101
  }
93
102
  /**
94
103
  * Compare a service principal pattern with the resolved caller.
@@ -97,7 +106,7 @@ export class SimIamPolicyPrincipalMatcher {
97
106
  /* v8 ignore next -- service principals not yet fully supported */
98
107
  const service = this.context.caller.service;
99
108
  /* v8 ignore next -- service principals not yet fully supported */
100
- return (service !== undefined &&
109
+ return SimIamPrincipalMatch.direct().when(service !== undefined &&
101
110
  simIamWildcardMatch(pattern, service, {
102
111
  caseSensitive: true,
103
112
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-policy-principal-matcher.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-principal-matcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-iam-policy-principal-matcher.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-principal-matcher.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { SimIamAuthZContext, SimIamAuthZPolicySource } from "../context/sim-iam-auth-z-context.js";
2
2
  import type { SimIamParsedPolicyStatement } from "../../policy/parse/sim-iam-document-parser.js";
3
+ import type { SimIamPrincipalMatch } from "./sim-iam-principal-match.js";
3
4
  /**
4
5
  * Matches one parsed IAM policy statement against one authorization request.
5
6
  *
@@ -30,7 +31,7 @@ export declare class SimIamPolicyStatementMatcher {
30
31
  * evaluating later sections after an earlier constraint has rejected the
31
32
  * statement.
32
33
  */
33
- matches(policy: SimIamAuthZPolicySource, statement: SimIamParsedPolicyStatement): boolean;
34
+ matches(policy: SimIamAuthZPolicySource, statement: SimIamParsedPolicyStatement): SimIamPrincipalMatch;
34
35
  /**
35
36
  * Check Action or NotAction against the requested IAM action.
36
37
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-policy-statement-matcher.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-statement-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAKjG;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,4BAA4B;IAI3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAEhE,YAA6B,OAAO,EAAE,kBAAkB,EAKvD;IAED;;;;;;OAMG;IACH,OAAO,CACL,MAAM,EAAE,uBAAuB,EAC/B,SAAS,EAAE,2BAA2B,GACrC,OAAO,CAOT;IAED;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAwBrB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;CAuBxB"}
1
+ {"version":3,"file":"sim-iam-policy-statement-matcher.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-statement-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAIjG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,4BAA4B;IAI3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAEhE,YAA6B,OAAO,EAAE,kBAAkB,EAKvD;IAED;;;;;;OAMG;IACH,OAAO,CACL,MAAM,EAAE,uBAAuB,EAC/B,SAAS,EAAE,2BAA2B,GACrC,oBAAoB,CAStB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAwBrB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;CAuBxB"}
@@ -36,7 +36,8 @@ export class SimIamPolicyStatementMatcher {
36
36
  * statement.
37
37
  */
38
38
  matches(policy, statement) {
39
- return (this.principalMatcher.matches(policy, statement) &&
39
+ const principal = this.principalMatcher.matches(policy, statement);
40
+ return principal.when(principal.matched &&
40
41
  this.actionMatches(statement) &&
41
42
  this.resourceMatches(policy, statement) &&
42
43
  this.conditionMatcher.matches(statement.condition));
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-policy-statement-matcher.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-statement-matcher.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAErF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,4BAA4B;IAIV,OAAO;IAHnB,gBAAgB,CAA+B;IAC/C,gBAAgB,CAA+B;IAEhE,YAA6B,OAA2B;uBAA3B,OAAO;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAA4B,CACtD,OAAO,CAAC,gBAAgB,CACzB,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CACL,MAA+B,EAC/B,SAAsC;QAEtC,OAAO,CACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CACnD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,aAAa,CAAC,SAAsC;QAC1D,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACxC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAChD,aAAa,EAAE,KAAK;aACrB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAC/B,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACjD,aAAa,EAAE,KAAK;aACrB,CAAC,CACL,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,MAAM,IAAI,SAAS,CACjB,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,eAAe,CACrB,MAA+B,EAC/B,SAAsC;QAEtC,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1C,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAClD,aAAa,EAAE,IAAI;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CACjC,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACnD,aAAa,EAAE,IAAI;aACpB,CAAC,CACL,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"sim-iam-policy-statement-matcher.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-statement-matcher.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAGrF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,4BAA4B;IAIV,OAAO;IAHnB,gBAAgB,CAA+B;IAC/C,gBAAgB,CAA+B;IAEhE,YAA6B,OAA2B;uBAA3B,OAAO;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAA4B,CACtD,OAAO,CAAC,gBAAgB,CACzB,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CACL,MAA+B,EAC/B,SAAsC;QAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnE,OAAO,SAAS,CAAC,IAAI,CACnB,SAAS,CAAC,OAAO;YACf,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CACrD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,aAAa,CAAC,SAAsC;QAC1D,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACxC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAChD,aAAa,EAAE,KAAK;aACrB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAC/B,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACjD,aAAa,EAAE,KAAK;aACrB,CAAC,CACL,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,MAAM,IAAI,SAAS,CACjB,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,eAAe,CACrB,MAA+B,EAC/B,SAAsC;QAEtC,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1C,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAClD,aAAa,EAAE,IAAI;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CACjC,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACnD,aAAa,EAAE,IAAI;aACpB,CAAC,CACL,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * How a resource-policy statement came to apply to the caller.
3
+ *
4
+ * AWS treats these two differently. A statement naming the caller's own ARN is
5
+ * a grant to that principal. A statement naming the Account, as a bare account
6
+ * ID or a root ARN, delegates the decision to that Account's IAM rather than
7
+ * granting anything by itself. Most of this simulator does not yet act on the
8
+ * difference; a KMS key policy does, because it is the whole reason the
9
+ * default key policy does not make a key usable by everyone in the Account.
10
+ */
11
+ export declare class SimIamPrincipalMatch {
12
+ readonly matched: boolean;
13
+ readonly isAccountDelegation: boolean;
14
+ private constructor();
15
+ /**
16
+ * The statement does not apply to this caller.
17
+ */
18
+ static none(): SimIamPrincipalMatch;
19
+ /**
20
+ * The statement names this caller, or applies without naming an Account.
21
+ */
22
+ static direct(): SimIamPrincipalMatch;
23
+ /**
24
+ * The statement applies by way of the caller's Account.
25
+ */
26
+ static accountDelegation(): SimIamPrincipalMatch;
27
+ /**
28
+ * The first match among alternatives, since Principal lists are an OR.
29
+ *
30
+ * A direct match wins over a delegated one where both apply, because a
31
+ * statement naming the caller grants to the caller whatever else it says.
32
+ */
33
+ static first(matches: readonly SimIamPrincipalMatch[]): SimIamPrincipalMatch;
34
+ /**
35
+ * A match of the same kind, or none, according to a condition.
36
+ */
37
+ when(matched: boolean): SimIamPrincipalMatch;
38
+ }
39
+ //# sourceMappingURL=sim-iam-principal-match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-iam-principal-match.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-principal-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,mBAAmB,EAAE,OAAO,CAAC;IAE7C,OAAO,eAGN;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,oBAAoB,CAElC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,oBAAoB,CAEpC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,oBAAoB,CAE/C;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG,oBAAoB,CAQ3E;IAED;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAE3C;CACF"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * How a resource-policy statement came to apply to the caller.
3
+ *
4
+ * AWS treats these two differently. A statement naming the caller's own ARN is
5
+ * a grant to that principal. A statement naming the Account, as a bare account
6
+ * ID or a root ARN, delegates the decision to that Account's IAM rather than
7
+ * granting anything by itself. Most of this simulator does not yet act on the
8
+ * difference; a KMS key policy does, because it is the whole reason the
9
+ * default key policy does not make a key usable by everyone in the Account.
10
+ */
11
+ export class SimIamPrincipalMatch {
12
+ matched;
13
+ isAccountDelegation;
14
+ constructor(matched, isAccountDelegation) {
15
+ this.matched = matched;
16
+ this.isAccountDelegation = isAccountDelegation;
17
+ }
18
+ /**
19
+ * The statement does not apply to this caller.
20
+ */
21
+ static none() {
22
+ return new SimIamPrincipalMatch(false, false);
23
+ }
24
+ /**
25
+ * The statement names this caller, or applies without naming an Account.
26
+ */
27
+ static direct() {
28
+ return new SimIamPrincipalMatch(true, false);
29
+ }
30
+ /**
31
+ * The statement applies by way of the caller's Account.
32
+ */
33
+ static accountDelegation() {
34
+ return new SimIamPrincipalMatch(true, true);
35
+ }
36
+ /**
37
+ * The first match among alternatives, since Principal lists are an OR.
38
+ *
39
+ * A direct match wins over a delegated one where both apply, because a
40
+ * statement naming the caller grants to the caller whatever else it says.
41
+ */
42
+ static first(matches) {
43
+ const matched = matches.filter((result) => result.matched);
44
+ return (matched.find((result) => !result.isAccountDelegation) ??
45
+ matched[0] ??
46
+ this.none());
47
+ }
48
+ /**
49
+ * A match of the same kind, or none, according to a condition.
50
+ */
51
+ when(matched) {
52
+ return matched ? this : SimIamPrincipalMatch.none();
53
+ }
54
+ }
55
+ //# sourceMappingURL=sim-iam-principal-match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-iam-principal-match.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-principal-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,OAAO,oBAAoB;IACf,OAAO,CAAU;IACjB,mBAAmB,CAAU;IAE7C,YAAoB,OAAgB,EAAE,mBAA4B;QAChE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,OAAwC;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE3D,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACrD,OAAO,CAAC,CAAC,CAAC;YACV,IAAI,CAAC,IAAI,EAAE,CACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAgB;QACnB,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;CACF"}
@@ -1,10 +1,14 @@
1
1
  import type { SimAwsAccountId } from "../../aws/sim-aws-account.js";
2
2
  import type { SimArn } from "../../aws/arn.js";
3
3
  import type { SimAwsCredentialIdentityResolver } from "../../aws/caller/sim-aws-caller-resolver.js";
4
+ import type { SimAwsPrincipal } from "../../aws/caller/sim-aws-caller.js";
4
5
  import type { SimIamManagedPolicy } from "../policy/sim-iam-policy.js";
5
6
  import type { SimIamRole, SimIamRoleName } from "../role/sim-iam-role.js";
6
7
  import type { SimIamUser, SimIamUsername } from "../user/sim-iam-user.js";
8
+ import type { SimIamAccountResolver } from "../registry/sim-iam-account-resolver.js";
7
9
  import type { SimIamAuthorizationInput } from "./context/sim-iam-auth-z-context-builder.js";
10
+ import type { SimIamAuthZPolicySource } from "./context/sim-iam-auth-z-context.js";
11
+ import type { SimIamAccountIdentityPolicies } from "./identity/sim-iam-account-identity-policies.js";
8
12
  import type { SimIamPolicyDecision } from "./sim-iam-decision.js";
9
13
  interface SimIamAccountAuthZProperties {
10
14
  readonly accountId: SimAwsAccountId;
@@ -12,6 +16,14 @@ interface SimIamAccountAuthZProperties {
12
16
  readonly roles: Map<SimIamRoleName, SimIamRole>;
13
17
  readonly users: Map<SimIamUsername, SimIamUser>;
14
18
  readonly credentialIdentityResolver: SimAwsCredentialIdentityResolver;
19
+ /**
20
+ * Resolves other Accounts' IAM in the same simulation.
21
+ *
22
+ * A cross-Account request is decided in both Accounts, so the caller's own
23
+ * Account has to be reachable for its identity policies to count. A
24
+ * standalone SimIam has no simulation around it and so no resolver.
25
+ */
26
+ readonly iamResolver?: SimIamAccountResolver | undefined;
15
27
  }
16
28
  /**
17
29
  * Evaluates IAM authorization attempts against one simulated Account's IAM
@@ -21,7 +33,7 @@ interface SimIamAccountAuthZProperties {
21
33
  * the owning sim Account. An explicit anonymous caller suppresses that
22
34
  * fallback and is evaluated without identity policies.
23
35
  */
24
- export declare class SimIamAccountAuthZ {
36
+ export declare class SimIamAccountAuthZ implements SimIamAccountIdentityPolicies {
25
37
  private readonly properties;
26
38
  constructor(properties: SimIamAccountAuthZProperties);
27
39
  /**
@@ -29,6 +41,17 @@ export declare class SimIamAccountAuthZ {
29
41
  * request caller.
30
42
  */
31
43
  authorize(input: SimIamAuthorizationInput): SimIamPolicyDecision;
44
+ /**
45
+ * Identity policies this Account applies to one of its own principals.
46
+ */
47
+ identityPolicySourcesFor(principal: SimAwsPrincipal): readonly SimIamAuthZPolicySource[];
48
+ /**
49
+ * Make an authorizer over this Account's current IAM state.
50
+ *
51
+ * The state maps are shared by reference, so a fresh authorizer sees every
52
+ * Role, User, and Policy created since the last request.
53
+ */
54
+ private authorizer;
32
55
  }
33
56
  export {};
34
57
  //# sourceMappingURL=sim-iam-account-auth-z.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-account-auth-z.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-account-auth-z.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AACpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,UAAU,4BAA4B;IACpC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,0BAA0B,EAAE,gCAAgC,CAAC;CACvE;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAE1D,YAAY,UAAU,EAAE,4BAA4B,EAEnD;IAED;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,wBAAwB,GAAG,oBAAoB,CAW/D;CACF"}
1
+ {"version":3,"file":"sim-iam-account-auth-z.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-account-auth-z.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAErF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AACrG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,UAAU,4BAA4B;IACpC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,0BAA0B,EAAE,gCAAgC,CAAC;IAEtE;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,6BAA6B;IACtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAE1D,YAAY,UAAU,EAAE,4BAA4B,EAEnD;IAED;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,wBAAwB,GAAG,oBAAoB,CAE/D;IAED;;OAEG;IACH,wBAAwB,CACtB,SAAS,EAAE,eAAe,GACzB,SAAS,uBAAuB,EAAE,CAEpC;IAED;;;;;OAKG;IACH,OAAO,CAAC,UAAU;CAUnB"}
@@ -1,4 +1,3 @@
1
- import { makeSimAwsAccountRootPrincipal } from "../../aws/caller/sim-aws-account-root-principal.js";
2
1
  import { SimIamAuthorizer } from "./sim-iam-authorizer.js";
3
2
  /**
4
3
  * Evaluates IAM authorization attempts against one simulated Account's IAM
@@ -18,14 +17,29 @@ export class SimIamAccountAuthZ {
18
17
  * request caller.
19
18
  */
20
19
  authorize(input) {
21
- const simIamAuthorizer = new SimIamAuthorizer({
20
+ return this.authorizer().authorize(input);
21
+ }
22
+ /**
23
+ * Identity policies this Account applies to one of its own principals.
24
+ */
25
+ identityPolicySourcesFor(principal) {
26
+ return this.authorizer().identityPolicySourcesFor(principal);
27
+ }
28
+ /**
29
+ * Make an authorizer over this Account's current IAM state.
30
+ *
31
+ * The state maps are shared by reference, so a fresh authorizer sees every
32
+ * Role, User, and Policy created since the last request.
33
+ */
34
+ authorizer() {
35
+ return new SimIamAuthorizer({
36
+ accountId: this.properties.accountId,
22
37
  policies: this.properties.policies,
23
38
  roles: this.properties.roles,
24
39
  users: this.properties.users,
25
- defaultCallerPrincipal: makeSimAwsAccountRootPrincipal(this.properties.accountId),
26
40
  credentialIdentityResolver: this.properties.credentialIdentityResolver,
41
+ iamResolver: this.properties.iamResolver,
27
42
  });
28
- return simIamAuthorizer.authorize(input);
29
43
  }
30
44
  }
31
45
  //# sourceMappingURL=sim-iam-account-auth-z.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-account-auth-z.js","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-account-auth-z.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AAOpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAY3D;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IACZ,UAAU,CAA+B;IAE1D,YAAY,UAAwC;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAA+B;QACvC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;YAC5C,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;YAClC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YAC5B,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YAC5B,sBAAsB,EAAE,8BAA8B,CACpD,IAAI,CAAC,UAAU,CAAC,SAAS,CAC1B;YACD,0BAA0B,EAAE,IAAI,CAAC,UAAU,CAAC,0BAA0B;SACvE,CAAC,CAAC;QACH,OAAO,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"sim-iam-account-auth-z.js","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-account-auth-z.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAuB3D;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IACZ,UAAU,CAA+B;IAE1D,YAAY,UAAwC;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAA+B;QACvC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,wBAAwB,CACtB,SAA0B;QAE1B,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACK,UAAU;QAChB,OAAO,IAAI,gBAAgB,CAAC;YAC1B,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;YACpC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;YAClC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YAC5B,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YAC5B,0BAA0B,EAAE,IAAI,CAAC,UAAU,CAAC,0BAA0B;YACtE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;SACzC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -6,12 +6,17 @@ import { SimIamPolicyDecision } from "./sim-iam-decision.js";
6
6
  import type { SimAwsPrincipal } from "../../aws/caller/sim-aws-caller.js";
7
7
  import type { SimIamUser, SimIamUsername } from "../user/sim-iam-user.js";
8
8
  import type { SimAwsCredentialIdentityResolver } from "../../aws/caller/sim-aws-caller-resolver.js";
9
+ import type { SimAwsAccountId } from "../../aws/sim-aws-account.js";
10
+ import type { SimIamAccountResolver } from "../registry/sim-iam-account-resolver.js";
11
+ import type { SimIamAuthZPolicySource } from "./context/sim-iam-auth-z-context.js";
12
+ import type { SimIamAccountIdentityPolicies } from "./identity/sim-iam-account-identity-policies.js";
9
13
  interface SimIamAuthorizerProperties {
14
+ readonly accountId: SimAwsAccountId;
10
15
  readonly policies: ReadonlyMap<SimArn, SimIamPolicy>;
11
16
  readonly roles: ReadonlyMap<SimIamRoleName, SimIamRole>;
12
17
  readonly users: ReadonlyMap<SimIamUsername, SimIamUser>;
13
- readonly defaultCallerPrincipal: SimAwsPrincipal;
14
18
  readonly credentialIdentityResolver: SimAwsCredentialIdentityResolver;
19
+ readonly iamResolver?: SimIamAccountResolver | undefined;
15
20
  }
16
21
  /**
17
22
  * Facade for simulated IAM authorization decisions.
@@ -21,13 +26,17 @@ interface SimIamAuthorizerProperties {
21
26
  * each SimIamPolicyDecision instance keeps the state and diagnostics for one
22
27
  * evaluated authorization attempt.
23
28
  */
24
- export declare class SimIamAuthorizer {
29
+ export declare class SimIamAuthorizer implements SimIamAccountIdentityPolicies {
25
30
  private readonly contextBuilder;
26
31
  constructor(properties: SimIamAuthorizerProperties);
27
32
  /**
28
33
  * Evaluate an IAM authorization request.
29
34
  */
30
35
  authorize(input: SimIamAuthorizationInput): SimIamPolicyDecision;
36
+ /**
37
+ * Identity policies this Account applies to one of its own principals.
38
+ */
39
+ identityPolicySourcesFor(principal: SimAwsPrincipal): readonly SimIamAuthZPolicySource[];
31
40
  }
32
41
  export {};
33
42
  //# sourceMappingURL=sim-iam-authorizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-authorizer.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-authorizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAEpG,UAAU,0BAA0B;IAClC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACxD,QAAQ,CAAC,sBAAsB,EAAE,eAAe,CAAC;IACjD,QAAQ,CAAC,0BAA0B,EAAE,gCAAgC,CAAC;CACvE;AAED;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAE3D,YAAY,UAAU,EAAE,0BAA0B,EAQjD;IAED;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,wBAAwB,GAAG,oBAAoB,CAE/D;CACF"}
1
+ {"version":3,"file":"sim-iam-authorizer.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-authorizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAErG,UAAU,0BAA0B;IAClC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACxD,QAAQ,CAAC,0BAA0B,EAAE,gCAAgC,CAAC;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,qBAAa,gBAAiB,YAAW,6BAA6B;IACpE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAE3D,YAAY,UAAU,EAAE,0BAA0B,EASjD;IAED;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,wBAAwB,GAAG,oBAAoB,CAE/D;IAED;;OAEG;IACH,wBAAwB,CACtB,SAAS,EAAE,eAAe,GACzB,SAAS,uBAAuB,EAAE,CAEpC;CACF"}
@@ -11,7 +11,14 @@ import { SimIamPolicyDecision } from "./sim-iam-decision.js";
11
11
  export class SimIamAuthorizer {
12
12
  contextBuilder;
13
13
  constructor(properties) {
14
- this.contextBuilder = new SimIamAuthZContextBuilder(properties.policies, properties.roles, properties.users, properties.defaultCallerPrincipal, properties.credentialIdentityResolver);
14
+ this.contextBuilder = new SimIamAuthZContextBuilder({
15
+ accountId: properties.accountId,
16
+ policies: properties.policies,
17
+ roles: properties.roles,
18
+ users: properties.users,
19
+ credentialIdentityResolver: properties.credentialIdentityResolver,
20
+ iamResolver: properties.iamResolver,
21
+ });
15
22
  }
16
23
  /**
17
24
  * Evaluate an IAM authorization request.
@@ -19,5 +26,11 @@ export class SimIamAuthorizer {
19
26
  authorize(input) {
20
27
  return new SimIamPolicyDecision(this.contextBuilder.build(input));
21
28
  }
29
+ /**
30
+ * Identity policies this Account applies to one of its own principals.
31
+ */
32
+ identityPolicySourcesFor(principal) {
33
+ return this.contextBuilder.identityPolicySourcesFor(principal);
34
+ }
22
35
  }
23
36
  //# sourceMappingURL=sim-iam-authorizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-authorizer.js","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-authorizer.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,GAE1B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAa7D;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAgB;IACV,cAAc,CAA4B;IAE3D,YAAY,UAAsC;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAyB,CACjD,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,sBAAsB,EACjC,UAAU,CAAC,0BAA0B,CACtC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAA+B;QACvC,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;CACF"}
1
+ {"version":3,"file":"sim-iam-authorizer.js","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-authorizer.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,GAE1B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAkB7D;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAgB;IACV,cAAc,CAA4B;IAE3D,YAAY,UAAsC;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAyB,CAAC;YAClD,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,0BAA0B,EAAE,UAAU,CAAC,0BAA0B;YACjE,WAAW,EAAE,UAAU,CAAC,WAAW;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAA+B;QACvC,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,wBAAwB,CACtB,SAA0B;QAE1B,OAAO,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;CACF"}
@@ -16,10 +16,11 @@ export type SimIamPolicyDecisionValue = (typeof SimIamPolicyDecisionValue)[keyof
16
16
  * evaluate permissions boundaries, evaluate SCPs, or enforce service command
17
17
  * access.
18
18
  *
19
- * The simulator currently models the common IAM authorization union:
19
+ * The simulator currently models the common IAM authorization rules:
20
20
  *
21
21
  * - an explicit Deny in any evaluated policy wins;
22
- * - an Allow in an identity policy or resource policy allows the request;
22
+ * - the Allows found must satisfy the request's allow requirement, which is
23
+ * either side within one Account and both sides across Accounts;
23
24
  * - otherwise the request is implicitly denied.
24
25
  *
25
26
  * Resource policies are expected to be supplied by the service that owns the
@@ -30,8 +31,7 @@ export declare class SimIamPolicyDecision {
30
31
  private readonly policyDocumentParser;
31
32
  private readonly statementMatcher;
32
33
  private readonly explicitDenyStatementRecords;
33
- private readonly allowStatementRecords;
34
- private readonly trustAllowStatementRecords;
34
+ private readonly allows;
35
35
  constructor(request: SimIamAuthZContext, policyDocumentParser?: SimIamPolicyDocumentParser);
36
36
  /**
37
37
  * Resolved caller against which this authorization decision was evaluated.
@@ -71,9 +71,21 @@ export declare class SimIamPolicyDecision {
71
71
  */
72
72
  get explicitDenyStatements(): readonly SimIamPolicyDocumentStatement[];
73
73
  /**
74
- * Matching Allow statements.
74
+ * Matching Allow statements, from both policy sides.
75
+ *
76
+ * A statement appearing here did match the request. It does not follow that
77
+ * the request was allowed: a cross-Account request needs a matching Allow
78
+ * from each side.
75
79
  */
76
80
  get allowStatements(): readonly SimIamPolicyDocumentStatement[];
81
+ /**
82
+ * Matching Allow statements from identity-based policies.
83
+ */
84
+ get identityAllowStatements(): readonly SimIamPolicyDocumentStatement[];
85
+ /**
86
+ * Matching Allow statements from resource-based policies.
87
+ */
88
+ get resourceAllowStatements(): readonly SimIamPolicyDocumentStatement[];
77
89
  /**
78
90
  * Matching Allow statements originating from trust policies.
79
91
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-decision.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAExF,eAAO,MAAM,yBAAyB;aACpC,YAAY,EAAE,cAAc;aAC5B,KAAK,EAAE,OAAO;aACd,YAAY,EAAE,cAAc;CACpB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,OAAO,yBAAyB,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CACxC;IACL,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuC;IAC7E,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CACtC;IAEL,YACE,OAAO,EAAE,kBAAkB,EAC3B,oBAAoB,GAAE,0BAA6D,EAOpF;IAED;;;;;OAKG;IACH,IAAI,MAAM,IAAI,oBAAoB,CAEjC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,yBAAyB,CAUrC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;;;OAIG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,SAAS,6BAA6B,EAAE,CAErE;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,SAAS,6BAA6B,EAAE,CAE9D;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,SAAS,6BAA6B,EAAE,CAEnE;IAED,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,cAAc;CAoBvB"}
1
+ {"version":3,"file":"sim-iam-decision.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAGxF,eAAO,MAAM,yBAAyB;aACpC,YAAY,EAAE,cAAc;aAC5B,KAAK,EAAE,OAAO;aACd,YAAY,EAAE,cAAc;CACpB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,OAAO,yBAAyB,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CACxC;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IAEtD,YACE,OAAO,EAAE,kBAAkB,EAC3B,oBAAoB,GAAE,0BAA6D,EAOpF;IAED;;;;;OAKG;IACH,IAAI,MAAM,IAAI,oBAAoB,CAEjC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,yBAAyB,CAUrC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;;;OAIG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,SAAS,6BAA6B,EAAE,CAErE;IAED;;;;;;OAMG;IACH,IAAI,eAAe,IAAI,SAAS,6BAA6B,EAAE,CAE9D;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,SAAS,6BAA6B,EAAE,CAEtE;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,SAAS,6BAA6B,EAAE,CAEtE;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,SAAS,6BAA6B,EAAE,CAEnE;IAED,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,cAAc;CAkBvB"}
@@ -1,5 +1,6 @@
1
1
  import { SimIamPolicyDocumentParser } from "../policy/parse/sim-iam-document-parser.js";
2
2
  import { SimIamPolicyStatementMatcher } from "./match/sim-iam-policy-statement-matcher.js";
3
+ import { SimIamAllowStatements } from "./allow/sim-iam-allow-statements.js";
3
4
  export const SimIamPolicyDecisionValue = {
4
5
  ExplicitDeny: "ExplicitDeny",
5
6
  Allow: "Allow",
@@ -13,10 +14,11 @@ export const SimIamPolicyDecisionValue = {
13
14
  * evaluate permissions boundaries, evaluate SCPs, or enforce service command
14
15
  * access.
15
16
  *
16
- * The simulator currently models the common IAM authorization union:
17
+ * The simulator currently models the common IAM authorization rules:
17
18
  *
18
19
  * - an explicit Deny in any evaluated policy wins;
19
- * - an Allow in an identity policy or resource policy allows the request;
20
+ * - the Allows found must satisfy the request's allow requirement, which is
21
+ * either side within one Account and both sides across Accounts;
20
22
  * - otherwise the request is implicitly denied.
21
23
  *
22
24
  * Resource policies are expected to be supplied by the service that owns the
@@ -27,8 +29,7 @@ export class SimIamPolicyDecision {
27
29
  policyDocumentParser;
28
30
  statementMatcher;
29
31
  explicitDenyStatementRecords = [];
30
- allowStatementRecords = [];
31
- trustAllowStatementRecords = [];
32
+ allows = new SimIamAllowStatements();
32
33
  constructor(request, policyDocumentParser = new SimIamPolicyDocumentParser()) {
33
34
  this.request = request;
34
35
  this.policyDocumentParser = policyDocumentParser;
@@ -51,7 +52,7 @@ export class SimIamPolicyDecision {
51
52
  if (this.explicitDenyStatementRecords.length > 0) {
52
53
  return SimIamPolicyDecisionValue.ExplicitDeny;
53
54
  }
54
- if (this.allowStatementRecords.length > 0) {
55
+ if (this.request.allowRequirement.isSatisfiedBy(this.allows.sides)) {
55
56
  return SimIamPolicyDecisionValue.Allow;
56
57
  }
57
58
  return SimIamPolicyDecisionValue.ImplicitDeny;
@@ -86,7 +87,7 @@ export class SimIamPolicyDecision {
86
87
  * An identity-policy Allow cannot substitute for the target role's trust.
87
88
  */
88
89
  get isAllowedByTrustPolicy() {
89
- return this.trustAllowStatementRecords.length > 0;
90
+ return this.allows.trust.length > 0;
90
91
  }
91
92
  /**
92
93
  * Matching explicit Deny statements.
@@ -95,16 +96,32 @@ export class SimIamPolicyDecision {
95
96
  return this.explicitDenyStatementRecords;
96
97
  }
97
98
  /**
98
- * Matching Allow statements.
99
+ * Matching Allow statements, from both policy sides.
100
+ *
101
+ * A statement appearing here did match the request. It does not follow that
102
+ * the request was allowed: a cross-Account request needs a matching Allow
103
+ * from each side.
99
104
  */
100
105
  get allowStatements() {
101
- return this.allowStatementRecords;
106
+ return this.allows.all;
107
+ }
108
+ /**
109
+ * Matching Allow statements from identity-based policies.
110
+ */
111
+ get identityAllowStatements() {
112
+ return this.allows.identity;
113
+ }
114
+ /**
115
+ * Matching Allow statements from resource-based policies.
116
+ */
117
+ get resourceAllowStatements() {
118
+ return this.allows.resource;
102
119
  }
103
120
  /**
104
121
  * Matching Allow statements originating from trust policies.
105
122
  */
106
123
  get trustAllowStatements() {
107
- return this.trustAllowStatementRecords;
124
+ return this.allows.trust;
108
125
  }
109
126
  evaluate() {
110
127
  for (const policy of [
@@ -117,17 +134,15 @@ export class SimIamPolicyDecision {
117
134
  evaluatePolicy(policy) {
118
135
  const parsedPolicy = this.policyDocumentParser.parse(policy.document);
119
136
  for (const statement of parsedPolicy.statements) {
120
- if (!this.statementMatcher.matches(policy, statement)) {
137
+ const principal = this.statementMatcher.matches(policy, statement);
138
+ if (!principal.matched) {
121
139
  continue;
122
140
  }
123
141
  if (statement.effect === "Deny") {
124
142
  this.explicitDenyStatementRecords.push(statement.source);
125
143
  continue;
126
144
  }
127
- this.allowStatementRecords.push(statement.source);
128
- if (policy.sourceType === "trust") {
129
- this.trustAllowStatementRecords.push(statement.source);
130
- }
145
+ this.allows.record(policy, statement.source, principal);
131
146
  }
132
147
  }
133
148
  }