@actsecurity/iam-simulate 0.1.173

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 (597) hide show
  1. package/LICENSE.txt +661 -0
  2. package/README.md +257 -0
  3. package/dist/cjs/StatementAnalysis.d.ts +63 -0
  4. package/dist/cjs/StatementAnalysis.d.ts.map +1 -0
  5. package/dist/cjs/StatementAnalysis.js +48 -0
  6. package/dist/cjs/StatementAnalysis.js.map +1 -0
  7. package/dist/cjs/action/action.d.ts +37 -0
  8. package/dist/cjs/action/action.d.ts.map +1 -0
  9. package/dist/cjs/action/action.js +102 -0
  10. package/dist/cjs/action/action.js.map +1 -0
  11. package/dist/cjs/analysis/allowedConditions.d.ts +61 -0
  12. package/dist/cjs/analysis/allowedConditions.d.ts.map +1 -0
  13. package/dist/cjs/analysis/allowedConditions.js +395 -0
  14. package/dist/cjs/analysis/allowedConditions.js.map +1 -0
  15. package/dist/cjs/analysis/analyzeResults.d.ts +99 -0
  16. package/dist/cjs/analysis/analyzeResults.d.ts.map +1 -0
  17. package/dist/cjs/analysis/analyzeResults.js +187 -0
  18. package/dist/cjs/analysis/analyzeResults.js.map +1 -0
  19. package/dist/cjs/condition/BaseConditionOperator.d.ts +13 -0
  20. package/dist/cjs/condition/BaseConditionOperator.d.ts.map +1 -0
  21. package/dist/cjs/condition/BaseConditionOperator.js +3 -0
  22. package/dist/cjs/condition/BaseConditionOperator.js.map +1 -0
  23. package/dist/cjs/condition/arn/ArnEquals.d.ts +3 -0
  24. package/dist/cjs/condition/arn/ArnEquals.d.ts.map +1 -0
  25. package/dist/cjs/condition/arn/ArnEquals.js +12 -0
  26. package/dist/cjs/condition/arn/ArnEquals.js.map +1 -0
  27. package/dist/cjs/condition/arn/ArnLike.d.ts +3 -0
  28. package/dist/cjs/condition/arn/ArnLike.d.ts.map +1 -0
  29. package/dist/cjs/condition/arn/ArnLike.js +18 -0
  30. package/dist/cjs/condition/arn/ArnLike.js.map +1 -0
  31. package/dist/cjs/condition/arn/ArnNotEquals.d.ts +3 -0
  32. package/dist/cjs/condition/arn/ArnNotEquals.d.ts.map +1 -0
  33. package/dist/cjs/condition/arn/ArnNotEquals.js +12 -0
  34. package/dist/cjs/condition/arn/ArnNotEquals.js.map +1 -0
  35. package/dist/cjs/condition/arn/ArnNotLike.d.ts +3 -0
  36. package/dist/cjs/condition/arn/ArnNotLike.d.ts.map +1 -0
  37. package/dist/cjs/condition/arn/ArnNotLike.js +18 -0
  38. package/dist/cjs/condition/arn/ArnNotLike.js.map +1 -0
  39. package/dist/cjs/condition/arn/arn.d.ts +12 -0
  40. package/dist/cjs/condition/arn/arn.d.ts.map +1 -0
  41. package/dist/cjs/condition/arn/arn.js +71 -0
  42. package/dist/cjs/condition/arn/arn.js.map +1 -0
  43. package/dist/cjs/condition/binary/BinaryEquals.d.ts +7 -0
  44. package/dist/cjs/condition/binary/BinaryEquals.d.ts.map +1 -0
  45. package/dist/cjs/condition/binary/BinaryEquals.js +28 -0
  46. package/dist/cjs/condition/binary/BinaryEquals.js.map +1 -0
  47. package/dist/cjs/condition/boolean/Bool.d.ts +3 -0
  48. package/dist/cjs/condition/boolean/Bool.d.ts.map +1 -0
  49. package/dist/cjs/condition/boolean/Bool.js +54 -0
  50. package/dist/cjs/condition/boolean/Bool.js.map +1 -0
  51. package/dist/cjs/condition/condition.d.ts +26 -0
  52. package/dist/cjs/condition/condition.d.ts.map +1 -0
  53. package/dist/cjs/condition/condition.js +665 -0
  54. package/dist/cjs/condition/condition.js.map +1 -0
  55. package/dist/cjs/condition/conditionUtil.d.ts +10 -0
  56. package/dist/cjs/condition/conditionUtil.d.ts.map +1 -0
  57. package/dist/cjs/condition/conditionUtil.js +19 -0
  58. package/dist/cjs/condition/conditionUtil.js.map +1 -0
  59. package/dist/cjs/condition/date/DateEquals.d.ts +3 -0
  60. package/dist/cjs/condition/date/DateEquals.d.ts.map +1 -0
  61. package/dist/cjs/condition/date/DateEquals.js +22 -0
  62. package/dist/cjs/condition/date/DateEquals.js.map +1 -0
  63. package/dist/cjs/condition/date/DateGreaterThan.d.ts +3 -0
  64. package/dist/cjs/condition/date/DateGreaterThan.d.ts.map +1 -0
  65. package/dist/cjs/condition/date/DateGreaterThan.js +22 -0
  66. package/dist/cjs/condition/date/DateGreaterThan.js.map +1 -0
  67. package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts +3 -0
  68. package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts.map +1 -0
  69. package/dist/cjs/condition/date/DateGreaterThanEquals.js +22 -0
  70. package/dist/cjs/condition/date/DateGreaterThanEquals.js.map +1 -0
  71. package/dist/cjs/condition/date/DateLessThan.d.ts +3 -0
  72. package/dist/cjs/condition/date/DateLessThan.d.ts.map +1 -0
  73. package/dist/cjs/condition/date/DateLessThan.js +22 -0
  74. package/dist/cjs/condition/date/DateLessThan.js.map +1 -0
  75. package/dist/cjs/condition/date/DateLessThanEquals.d.ts +3 -0
  76. package/dist/cjs/condition/date/DateLessThanEquals.d.ts.map +1 -0
  77. package/dist/cjs/condition/date/DateLessThanEquals.js +22 -0
  78. package/dist/cjs/condition/date/DateLessThanEquals.js.map +1 -0
  79. package/dist/cjs/condition/date/DateNotEquals.d.ts +3 -0
  80. package/dist/cjs/condition/date/DateNotEquals.d.ts.map +1 -0
  81. package/dist/cjs/condition/date/DateNotEquals.js +22 -0
  82. package/dist/cjs/condition/date/DateNotEquals.js.map +1 -0
  83. package/dist/cjs/condition/date/date.d.ts +18 -0
  84. package/dist/cjs/condition/date/date.d.ts.map +1 -0
  85. package/dist/cjs/condition/date/date.js +57 -0
  86. package/dist/cjs/condition/date/date.js.map +1 -0
  87. package/dist/cjs/condition/ipaddress/IpAddress.d.ts +3 -0
  88. package/dist/cjs/condition/ipaddress/IpAddress.d.ts.map +1 -0
  89. package/dist/cjs/condition/ipaddress/IpAddress.js +20 -0
  90. package/dist/cjs/condition/ipaddress/IpAddress.js.map +1 -0
  91. package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts +3 -0
  92. package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts.map +1 -0
  93. package/dist/cjs/condition/ipaddress/NotIpAddress.js +20 -0
  94. package/dist/cjs/condition/ipaddress/NotIpAddress.js.map +1 -0
  95. package/dist/cjs/condition/ipaddress/ip.d.ts +11 -0
  96. package/dist/cjs/condition/ipaddress/ip.d.ts.map +1 -0
  97. package/dist/cjs/condition/ipaddress/ip.js +70 -0
  98. package/dist/cjs/condition/ipaddress/ip.js.map +1 -0
  99. package/dist/cjs/condition/ipaddress/ipv4.d.ts +24 -0
  100. package/dist/cjs/condition/ipaddress/ipv4.d.ts.map +1 -0
  101. package/dist/cjs/condition/ipaddress/ipv4.js +59 -0
  102. package/dist/cjs/condition/ipaddress/ipv4.js.map +1 -0
  103. package/dist/cjs/condition/ipaddress/ipv6.d.ts +24 -0
  104. package/dist/cjs/condition/ipaddress/ipv6.d.ts.map +1 -0
  105. package/dist/cjs/condition/ipaddress/ipv6.js +111 -0
  106. package/dist/cjs/condition/ipaddress/ipv6.js.map +1 -0
  107. package/dist/cjs/condition/numeric/NumericEquals.d.ts +3 -0
  108. package/dist/cjs/condition/numeric/NumericEquals.d.ts.map +1 -0
  109. package/dist/cjs/condition/numeric/NumericEquals.js +22 -0
  110. package/dist/cjs/condition/numeric/NumericEquals.js.map +1 -0
  111. package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts +3 -0
  112. package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts.map +1 -0
  113. package/dist/cjs/condition/numeric/NumericGreaterThan.js +22 -0
  114. package/dist/cjs/condition/numeric/NumericGreaterThan.js.map +1 -0
  115. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts +3 -0
  116. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -0
  117. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js +22 -0
  118. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js.map +1 -0
  119. package/dist/cjs/condition/numeric/NumericLessThan.d.ts +3 -0
  120. package/dist/cjs/condition/numeric/NumericLessThan.d.ts.map +1 -0
  121. package/dist/cjs/condition/numeric/NumericLessThan.js +22 -0
  122. package/dist/cjs/condition/numeric/NumericLessThan.js.map +1 -0
  123. package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts +3 -0
  124. package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts.map +1 -0
  125. package/dist/cjs/condition/numeric/NumericLessThanEquals.js +22 -0
  126. package/dist/cjs/condition/numeric/NumericLessThanEquals.js.map +1 -0
  127. package/dist/cjs/condition/numeric/NumericNotEquals.d.ts +3 -0
  128. package/dist/cjs/condition/numeric/NumericNotEquals.d.ts.map +1 -0
  129. package/dist/cjs/condition/numeric/NumericNotEquals.js +22 -0
  130. package/dist/cjs/condition/numeric/NumericNotEquals.js.map +1 -0
  131. package/dist/cjs/condition/numeric/numeric.d.ts +18 -0
  132. package/dist/cjs/condition/numeric/numeric.d.ts.map +1 -0
  133. package/dist/cjs/condition/numeric/numeric.js +56 -0
  134. package/dist/cjs/condition/numeric/numeric.js.map +1 -0
  135. package/dist/cjs/condition/string/StringEquals.d.ts +3 -0
  136. package/dist/cjs/condition/string/StringEquals.d.ts.map +1 -0
  137. package/dist/cjs/condition/string/StringEquals.js +35 -0
  138. package/dist/cjs/condition/string/StringEquals.js.map +1 -0
  139. package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts +3 -0
  140. package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -0
  141. package/dist/cjs/condition/string/StringEqualsIgnoreCase.js +35 -0
  142. package/dist/cjs/condition/string/StringEqualsIgnoreCase.js.map +1 -0
  143. package/dist/cjs/condition/string/StringLike.d.ts +3 -0
  144. package/dist/cjs/condition/string/StringLike.d.ts.map +1 -0
  145. package/dist/cjs/condition/string/StringLike.js +35 -0
  146. package/dist/cjs/condition/string/StringLike.js.map +1 -0
  147. package/dist/cjs/condition/string/StringNotEquals.d.ts +3 -0
  148. package/dist/cjs/condition/string/StringNotEquals.d.ts.map +1 -0
  149. package/dist/cjs/condition/string/StringNotEquals.js +35 -0
  150. package/dist/cjs/condition/string/StringNotEquals.js.map +1 -0
  151. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts +3 -0
  152. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -0
  153. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js +35 -0
  154. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js.map +1 -0
  155. package/dist/cjs/condition/string/StringNotLike.d.ts +3 -0
  156. package/dist/cjs/condition/string/StringNotLike.d.ts.map +1 -0
  157. package/dist/cjs/condition/string/StringNotLike.js +35 -0
  158. package/dist/cjs/condition/string/StringNotLike.js.map +1 -0
  159. package/dist/cjs/context_keys/contextKeyTypes.d.ts +19 -0
  160. package/dist/cjs/context_keys/contextKeyTypes.d.ts.map +1 -0
  161. package/dist/cjs/context_keys/contextKeyTypes.js +27 -0
  162. package/dist/cjs/context_keys/contextKeyTypes.js.map +1 -0
  163. package/dist/cjs/context_keys/contextKeys.d.ts +24 -0
  164. package/dist/cjs/context_keys/contextKeys.d.ts.map +1 -0
  165. package/dist/cjs/context_keys/contextKeys.js +121 -0
  166. package/dist/cjs/context_keys/contextKeys.js.map +1 -0
  167. package/dist/cjs/context_keys/discoveryContextKeyConstraints.d.ts +103 -0
  168. package/dist/cjs/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -0
  169. package/dist/cjs/context_keys/discoveryContextKeyConstraints.js +153 -0
  170. package/dist/cjs/context_keys/discoveryContextKeyConstraints.js.map +1 -0
  171. package/dist/cjs/context_keys/findContextKeys.d.ts +19 -0
  172. package/dist/cjs/context_keys/findContextKeys.d.ts.map +1 -0
  173. package/dist/cjs/context_keys/findContextKeys.js +58 -0
  174. package/dist/cjs/context_keys/findContextKeys.js.map +1 -0
  175. package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts +134 -0
  176. package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts.map +1 -0
  177. package/dist/cjs/core_engine/CoreSimulatorEngine.js +444 -0
  178. package/dist/cjs/core_engine/CoreSimulatorEngine.js.map +1 -0
  179. package/dist/cjs/evaluate.d.ts +199 -0
  180. package/dist/cjs/evaluate.d.ts.map +1 -0
  181. package/dist/cjs/evaluate.js +3 -0
  182. package/dist/cjs/evaluate.js.map +1 -0
  183. package/dist/cjs/explain/displayExplainCli.d.ts +3 -0
  184. package/dist/cjs/explain/displayExplainCli.d.ts.map +1 -0
  185. package/dist/cjs/explain/displayExplainCli.js +260 -0
  186. package/dist/cjs/explain/displayExplainCli.js.map +1 -0
  187. package/dist/cjs/explain/statementExplain.d.ts +161 -0
  188. package/dist/cjs/explain/statementExplain.d.ts.map +1 -0
  189. package/dist/cjs/explain/statementExplain.js +33 -0
  190. package/dist/cjs/explain/statementExplain.js.map +1 -0
  191. package/dist/cjs/global_conditions/globalConditionKeys.d.ts +3 -0
  192. package/dist/cjs/global_conditions/globalConditionKeys.d.ts.map +1 -0
  193. package/dist/cjs/global_conditions/globalConditionKeys.js +12 -0
  194. package/dist/cjs/global_conditions/globalConditionKeys.js.map +1 -0
  195. package/dist/cjs/index.d.ts +16 -0
  196. package/dist/cjs/index.d.ts.map +1 -0
  197. package/dist/cjs/index.js +25 -0
  198. package/dist/cjs/index.js.map +1 -0
  199. package/dist/cjs/package.json +3 -0
  200. package/dist/cjs/policyType.d.ts +13 -0
  201. package/dist/cjs/policyType.d.ts.map +1 -0
  202. package/dist/cjs/policyType.js +3 -0
  203. package/dist/cjs/policyType.js.map +1 -0
  204. package/dist/cjs/principal/principal.d.ts +61 -0
  205. package/dist/cjs/principal/principal.d.ts.map +1 -0
  206. package/dist/cjs/principal/principal.js +357 -0
  207. package/dist/cjs/principal/principal.js.map +1 -0
  208. package/dist/cjs/request/request.d.ts +66 -0
  209. package/dist/cjs/request/request.d.ts.map +1 -0
  210. package/dist/cjs/request/request.js +42 -0
  211. package/dist/cjs/request/request.js.map +1 -0
  212. package/dist/cjs/request/requestAction.d.ts +27 -0
  213. package/dist/cjs/request/requestAction.d.ts.map +1 -0
  214. package/dist/cjs/request/requestAction.js +20 -0
  215. package/dist/cjs/request/requestAction.js.map +1 -0
  216. package/dist/cjs/request/requestPrincipal.d.ts +92 -0
  217. package/dist/cjs/request/requestPrincipal.d.ts.map +1 -0
  218. package/dist/cjs/request/requestPrincipal.js +88 -0
  219. package/dist/cjs/request/requestPrincipal.js.map +1 -0
  220. package/dist/cjs/request/requestResource.d.ts +55 -0
  221. package/dist/cjs/request/requestResource.d.ts.map +1 -0
  222. package/dist/cjs/request/requestResource.js +40 -0
  223. package/dist/cjs/request/requestResource.js.map +1 -0
  224. package/dist/cjs/requestContext.d.ts +63 -0
  225. package/dist/cjs/requestContext.d.ts.map +1 -0
  226. package/dist/cjs/requestContext.js +46 -0
  227. package/dist/cjs/requestContext.js.map +1 -0
  228. package/dist/cjs/resource/resource.d.ts +54 -0
  229. package/dist/cjs/resource/resource.d.ts.map +1 -0
  230. package/dist/cjs/resource/resource.js +585 -0
  231. package/dist/cjs/resource/resource.js.map +1 -0
  232. package/dist/cjs/services/DefaultServiceAuthorizer.d.ts +182 -0
  233. package/dist/cjs/services/DefaultServiceAuthorizer.d.ts.map +1 -0
  234. package/dist/cjs/services/DefaultServiceAuthorizer.js +625 -0
  235. package/dist/cjs/services/DefaultServiceAuthorizer.js.map +1 -0
  236. package/dist/cjs/services/IamServiceAuthorizer.d.ts +10 -0
  237. package/dist/cjs/services/IamServiceAuthorizer.d.ts.map +1 -0
  238. package/dist/cjs/services/IamServiceAuthorizer.js +65 -0
  239. package/dist/cjs/services/IamServiceAuthorizer.js.map +1 -0
  240. package/dist/cjs/services/KmsServiceAuthorizer.d.ts +29 -0
  241. package/dist/cjs/services/KmsServiceAuthorizer.d.ts.map +1 -0
  242. package/dist/cjs/services/KmsServiceAuthorizer.js +83 -0
  243. package/dist/cjs/services/KmsServiceAuthorizer.js.map +1 -0
  244. package/dist/cjs/services/ServiceAuthorizer.d.ts +27 -0
  245. package/dist/cjs/services/ServiceAuthorizer.d.ts.map +1 -0
  246. package/dist/cjs/services/ServiceAuthorizer.js +3 -0
  247. package/dist/cjs/services/ServiceAuthorizer.js.map +1 -0
  248. package/dist/cjs/services/StsServiceAuthorizer.d.ts +19 -0
  249. package/dist/cjs/services/StsServiceAuthorizer.d.ts.map +1 -0
  250. package/dist/cjs/services/StsServiceAuthorizer.js +45 -0
  251. package/dist/cjs/services/StsServiceAuthorizer.js.map +1 -0
  252. package/dist/cjs/services/s3/S3ServiceAuthorizer.d.ts +24 -0
  253. package/dist/cjs/services/s3/S3ServiceAuthorizer.d.ts.map +1 -0
  254. package/dist/cjs/services/s3/S3ServiceAuthorizer.js +79 -0
  255. package/dist/cjs/services/s3/S3ServiceAuthorizer.js.map +1 -0
  256. package/dist/cjs/services/s3/s3BlockPublicAccess.d.ts +50 -0
  257. package/dist/cjs/services/s3/s3BlockPublicAccess.d.ts.map +1 -0
  258. package/dist/cjs/services/s3/s3BlockPublicAccess.js +301 -0
  259. package/dist/cjs/services/s3/s3BlockPublicAccess.js.map +1 -0
  260. package/dist/cjs/simulation_engine/contextKeys.d.ts +13 -0
  261. package/dist/cjs/simulation_engine/contextKeys.d.ts.map +1 -0
  262. package/dist/cjs/simulation_engine/contextKeys.js +58 -0
  263. package/dist/cjs/simulation_engine/contextKeys.js.map +1 -0
  264. package/dist/cjs/simulation_engine/overallResult.d.ts +13 -0
  265. package/dist/cjs/simulation_engine/overallResult.d.ts.map +1 -0
  266. package/dist/cjs/simulation_engine/overallResult.js +35 -0
  267. package/dist/cjs/simulation_engine/overallResult.js.map +1 -0
  268. package/dist/cjs/simulation_engine/policyResources.d.ts +44 -0
  269. package/dist/cjs/simulation_engine/policyResources.d.ts.map +1 -0
  270. package/dist/cjs/simulation_engine/policyResources.js +120 -0
  271. package/dist/cjs/simulation_engine/policyResources.js.map +1 -0
  272. package/dist/cjs/simulation_engine/resourceTypes.d.ts +11 -0
  273. package/dist/cjs/simulation_engine/resourceTypes.d.ts.map +1 -0
  274. package/dist/cjs/simulation_engine/resourceTypes.js +26 -0
  275. package/dist/cjs/simulation_engine/resourceTypes.js.map +1 -0
  276. package/dist/cjs/simulation_engine/simulation.d.ts +114 -0
  277. package/dist/cjs/simulation_engine/simulation.d.ts.map +1 -0
  278. package/dist/cjs/simulation_engine/simulation.js +35 -0
  279. package/dist/cjs/simulation_engine/simulation.js.map +1 -0
  280. package/dist/cjs/simulation_engine/simulationEngine.d.ts +128 -0
  281. package/dist/cjs/simulation_engine/simulationEngine.d.ts.map +1 -0
  282. package/dist/cjs/simulation_engine/simulationEngine.js +432 -0
  283. package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -0
  284. package/dist/cjs/simulation_engine/simulationOptions.d.ts +21 -0
  285. package/dist/cjs/simulation_engine/simulationOptions.d.ts.map +1 -0
  286. package/dist/cjs/simulation_engine/simulationOptions.js +3 -0
  287. package/dist/cjs/simulation_engine/simulationOptions.js.map +1 -0
  288. package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts +13 -0
  289. package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -0
  290. package/dist/cjs/simulation_engine/unsafeSimulationEngine.js +62 -0
  291. package/dist/cjs/simulation_engine/unsafeSimulationEngine.js.map +1 -0
  292. package/dist/cjs/util/resourceStrings.d.ts +19 -0
  293. package/dist/cjs/util/resourceStrings.d.ts.map +1 -0
  294. package/dist/cjs/util/resourceStrings.js +107 -0
  295. package/dist/cjs/util/resourceStrings.js.map +1 -0
  296. package/dist/cjs/util.d.ts +90 -0
  297. package/dist/cjs/util.d.ts.map +1 -0
  298. package/dist/cjs/util.js +350 -0
  299. package/dist/cjs/util.js.map +1 -0
  300. package/dist/esm/StatementAnalysis.d.ts +63 -0
  301. package/dist/esm/StatementAnalysis.d.ts.map +1 -0
  302. package/dist/esm/StatementAnalysis.js +46 -0
  303. package/dist/esm/StatementAnalysis.js.map +1 -0
  304. package/dist/esm/action/action.d.ts +37 -0
  305. package/dist/esm/action/action.d.ts.map +1 -0
  306. package/dist/esm/action/action.js +100 -0
  307. package/dist/esm/action/action.js.map +1 -0
  308. package/dist/esm/analysis/allowedConditions.d.ts +61 -0
  309. package/dist/esm/analysis/allowedConditions.d.ts.map +1 -0
  310. package/dist/esm/analysis/allowedConditions.js +382 -0
  311. package/dist/esm/analysis/allowedConditions.js.map +1 -0
  312. package/dist/esm/analysis/analyzeResults.d.ts +99 -0
  313. package/dist/esm/analysis/analyzeResults.d.ts.map +1 -0
  314. package/dist/esm/analysis/analyzeResults.js +183 -0
  315. package/dist/esm/analysis/analyzeResults.js.map +1 -0
  316. package/dist/esm/condition/BaseConditionOperator.d.ts +13 -0
  317. package/dist/esm/condition/BaseConditionOperator.d.ts.map +1 -0
  318. package/dist/esm/condition/BaseConditionOperator.js +3 -0
  319. package/dist/esm/condition/BaseConditionOperator.js.map +1 -0
  320. package/dist/esm/condition/arn/ArnEquals.d.ts +3 -0
  321. package/dist/esm/condition/arn/ArnEquals.d.ts.map +1 -0
  322. package/dist/esm/condition/arn/ArnEquals.js +10 -0
  323. package/dist/esm/condition/arn/ArnEquals.js.map +1 -0
  324. package/dist/esm/condition/arn/ArnLike.d.ts +3 -0
  325. package/dist/esm/condition/arn/ArnLike.d.ts.map +1 -0
  326. package/dist/esm/condition/arn/ArnLike.js +16 -0
  327. package/dist/esm/condition/arn/ArnLike.js.map +1 -0
  328. package/dist/esm/condition/arn/ArnNotEquals.d.ts +3 -0
  329. package/dist/esm/condition/arn/ArnNotEquals.d.ts.map +1 -0
  330. package/dist/esm/condition/arn/ArnNotEquals.js +10 -0
  331. package/dist/esm/condition/arn/ArnNotEquals.js.map +1 -0
  332. package/dist/esm/condition/arn/ArnNotLike.d.ts +3 -0
  333. package/dist/esm/condition/arn/ArnNotLike.d.ts.map +1 -0
  334. package/dist/esm/condition/arn/ArnNotLike.js +16 -0
  335. package/dist/esm/condition/arn/ArnNotLike.js.map +1 -0
  336. package/dist/esm/condition/arn/arn.d.ts +12 -0
  337. package/dist/esm/condition/arn/arn.d.ts.map +1 -0
  338. package/dist/esm/condition/arn/arn.js +70 -0
  339. package/dist/esm/condition/arn/arn.js.map +1 -0
  340. package/dist/esm/condition/binary/BinaryEquals.d.ts +7 -0
  341. package/dist/esm/condition/binary/BinaryEquals.d.ts.map +1 -0
  342. package/dist/esm/condition/binary/BinaryEquals.js +27 -0
  343. package/dist/esm/condition/binary/BinaryEquals.js.map +1 -0
  344. package/dist/esm/condition/boolean/Bool.d.ts +3 -0
  345. package/dist/esm/condition/boolean/Bool.d.ts.map +1 -0
  346. package/dist/esm/condition/boolean/Bool.js +53 -0
  347. package/dist/esm/condition/boolean/Bool.js.map +1 -0
  348. package/dist/esm/condition/condition.d.ts +26 -0
  349. package/dist/esm/condition/condition.d.ts.map +1 -0
  350. package/dist/esm/condition/condition.js +666 -0
  351. package/dist/esm/condition/condition.js.map +1 -0
  352. package/dist/esm/condition/conditionUtil.d.ts +10 -0
  353. package/dist/esm/condition/conditionUtil.d.ts.map +1 -0
  354. package/dist/esm/condition/conditionUtil.js +17 -0
  355. package/dist/esm/condition/conditionUtil.js.map +1 -0
  356. package/dist/esm/condition/date/DateEquals.d.ts +3 -0
  357. package/dist/esm/condition/date/DateEquals.d.ts.map +1 -0
  358. package/dist/esm/condition/date/DateEquals.js +20 -0
  359. package/dist/esm/condition/date/DateEquals.js.map +1 -0
  360. package/dist/esm/condition/date/DateGreaterThan.d.ts +3 -0
  361. package/dist/esm/condition/date/DateGreaterThan.d.ts.map +1 -0
  362. package/dist/esm/condition/date/DateGreaterThan.js +20 -0
  363. package/dist/esm/condition/date/DateGreaterThan.js.map +1 -0
  364. package/dist/esm/condition/date/DateGreaterThanEquals.d.ts +3 -0
  365. package/dist/esm/condition/date/DateGreaterThanEquals.d.ts.map +1 -0
  366. package/dist/esm/condition/date/DateGreaterThanEquals.js +20 -0
  367. package/dist/esm/condition/date/DateGreaterThanEquals.js.map +1 -0
  368. package/dist/esm/condition/date/DateLessThan.d.ts +3 -0
  369. package/dist/esm/condition/date/DateLessThan.d.ts.map +1 -0
  370. package/dist/esm/condition/date/DateLessThan.js +20 -0
  371. package/dist/esm/condition/date/DateLessThan.js.map +1 -0
  372. package/dist/esm/condition/date/DateLessThanEquals.d.ts +3 -0
  373. package/dist/esm/condition/date/DateLessThanEquals.d.ts.map +1 -0
  374. package/dist/esm/condition/date/DateLessThanEquals.js +20 -0
  375. package/dist/esm/condition/date/DateLessThanEquals.js.map +1 -0
  376. package/dist/esm/condition/date/DateNotEquals.d.ts +3 -0
  377. package/dist/esm/condition/date/DateNotEquals.d.ts.map +1 -0
  378. package/dist/esm/condition/date/DateNotEquals.js +20 -0
  379. package/dist/esm/condition/date/DateNotEquals.js.map +1 -0
  380. package/dist/esm/condition/date/date.d.ts +18 -0
  381. package/dist/esm/condition/date/date.d.ts.map +1 -0
  382. package/dist/esm/condition/date/date.js +54 -0
  383. package/dist/esm/condition/date/date.js.map +1 -0
  384. package/dist/esm/condition/ipaddress/IpAddress.d.ts +3 -0
  385. package/dist/esm/condition/ipaddress/IpAddress.d.ts.map +1 -0
  386. package/dist/esm/condition/ipaddress/IpAddress.js +18 -0
  387. package/dist/esm/condition/ipaddress/IpAddress.js.map +1 -0
  388. package/dist/esm/condition/ipaddress/NotIpAddress.d.ts +3 -0
  389. package/dist/esm/condition/ipaddress/NotIpAddress.d.ts.map +1 -0
  390. package/dist/esm/condition/ipaddress/NotIpAddress.js +18 -0
  391. package/dist/esm/condition/ipaddress/NotIpAddress.js.map +1 -0
  392. package/dist/esm/condition/ipaddress/ip.d.ts +11 -0
  393. package/dist/esm/condition/ipaddress/ip.d.ts.map +1 -0
  394. package/dist/esm/condition/ipaddress/ip.js +68 -0
  395. package/dist/esm/condition/ipaddress/ip.js.map +1 -0
  396. package/dist/esm/condition/ipaddress/ipv4.d.ts +24 -0
  397. package/dist/esm/condition/ipaddress/ipv4.d.ts.map +1 -0
  398. package/dist/esm/condition/ipaddress/ipv4.js +54 -0
  399. package/dist/esm/condition/ipaddress/ipv4.js.map +1 -0
  400. package/dist/esm/condition/ipaddress/ipv6.d.ts +24 -0
  401. package/dist/esm/condition/ipaddress/ipv6.d.ts.map +1 -0
  402. package/dist/esm/condition/ipaddress/ipv6.js +106 -0
  403. package/dist/esm/condition/ipaddress/ipv6.js.map +1 -0
  404. package/dist/esm/condition/numeric/NumericEquals.d.ts +3 -0
  405. package/dist/esm/condition/numeric/NumericEquals.d.ts.map +1 -0
  406. package/dist/esm/condition/numeric/NumericEquals.js +20 -0
  407. package/dist/esm/condition/numeric/NumericEquals.js.map +1 -0
  408. package/dist/esm/condition/numeric/NumericGreaterThan.d.ts +3 -0
  409. package/dist/esm/condition/numeric/NumericGreaterThan.d.ts.map +1 -0
  410. package/dist/esm/condition/numeric/NumericGreaterThan.js +20 -0
  411. package/dist/esm/condition/numeric/NumericGreaterThan.js.map +1 -0
  412. package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts +3 -0
  413. package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -0
  414. package/dist/esm/condition/numeric/NumericGreaterThanEquals.js +20 -0
  415. package/dist/esm/condition/numeric/NumericGreaterThanEquals.js.map +1 -0
  416. package/dist/esm/condition/numeric/NumericLessThan.d.ts +3 -0
  417. package/dist/esm/condition/numeric/NumericLessThan.d.ts.map +1 -0
  418. package/dist/esm/condition/numeric/NumericLessThan.js +20 -0
  419. package/dist/esm/condition/numeric/NumericLessThan.js.map +1 -0
  420. package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts +3 -0
  421. package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts.map +1 -0
  422. package/dist/esm/condition/numeric/NumericLessThanEquals.js +20 -0
  423. package/dist/esm/condition/numeric/NumericLessThanEquals.js.map +1 -0
  424. package/dist/esm/condition/numeric/NumericNotEquals.d.ts +3 -0
  425. package/dist/esm/condition/numeric/NumericNotEquals.d.ts.map +1 -0
  426. package/dist/esm/condition/numeric/NumericNotEquals.js +20 -0
  427. package/dist/esm/condition/numeric/NumericNotEquals.js.map +1 -0
  428. package/dist/esm/condition/numeric/numeric.d.ts +18 -0
  429. package/dist/esm/condition/numeric/numeric.d.ts.map +1 -0
  430. package/dist/esm/condition/numeric/numeric.js +53 -0
  431. package/dist/esm/condition/numeric/numeric.js.map +1 -0
  432. package/dist/esm/condition/string/StringEquals.d.ts +3 -0
  433. package/dist/esm/condition/string/StringEquals.d.ts.map +1 -0
  434. package/dist/esm/condition/string/StringEquals.js +34 -0
  435. package/dist/esm/condition/string/StringEquals.js.map +1 -0
  436. package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts +3 -0
  437. package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -0
  438. package/dist/esm/condition/string/StringEqualsIgnoreCase.js +34 -0
  439. package/dist/esm/condition/string/StringEqualsIgnoreCase.js.map +1 -0
  440. package/dist/esm/condition/string/StringLike.d.ts +3 -0
  441. package/dist/esm/condition/string/StringLike.d.ts.map +1 -0
  442. package/dist/esm/condition/string/StringLike.js +34 -0
  443. package/dist/esm/condition/string/StringLike.js.map +1 -0
  444. package/dist/esm/condition/string/StringNotEquals.d.ts +3 -0
  445. package/dist/esm/condition/string/StringNotEquals.d.ts.map +1 -0
  446. package/dist/esm/condition/string/StringNotEquals.js +34 -0
  447. package/dist/esm/condition/string/StringNotEquals.js.map +1 -0
  448. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts +3 -0
  449. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -0
  450. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js +34 -0
  451. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js.map +1 -0
  452. package/dist/esm/condition/string/StringNotLike.d.ts +3 -0
  453. package/dist/esm/condition/string/StringNotLike.d.ts.map +1 -0
  454. package/dist/esm/condition/string/StringNotLike.js +34 -0
  455. package/dist/esm/condition/string/StringNotLike.js.map +1 -0
  456. package/dist/esm/context_keys/contextKeyTypes.d.ts +19 -0
  457. package/dist/esm/context_keys/contextKeyTypes.d.ts.map +1 -0
  458. package/dist/esm/context_keys/contextKeyTypes.js +23 -0
  459. package/dist/esm/context_keys/contextKeyTypes.js.map +1 -0
  460. package/dist/esm/context_keys/contextKeys.d.ts +24 -0
  461. package/dist/esm/context_keys/contextKeys.d.ts.map +1 -0
  462. package/dist/esm/context_keys/contextKeys.js +117 -0
  463. package/dist/esm/context_keys/contextKeys.js.map +1 -0
  464. package/dist/esm/context_keys/discoveryContextKeyConstraints.d.ts +103 -0
  465. package/dist/esm/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -0
  466. package/dist/esm/context_keys/discoveryContextKeyConstraints.js +149 -0
  467. package/dist/esm/context_keys/discoveryContextKeyConstraints.js.map +1 -0
  468. package/dist/esm/context_keys/findContextKeys.d.ts +19 -0
  469. package/dist/esm/context_keys/findContextKeys.d.ts.map +1 -0
  470. package/dist/esm/context_keys/findContextKeys.js +55 -0
  471. package/dist/esm/context_keys/findContextKeys.js.map +1 -0
  472. package/dist/esm/core_engine/CoreSimulatorEngine.d.ts +134 -0
  473. package/dist/esm/core_engine/CoreSimulatorEngine.d.ts.map +1 -0
  474. package/dist/esm/core_engine/CoreSimulatorEngine.js +441 -0
  475. package/dist/esm/core_engine/CoreSimulatorEngine.js.map +1 -0
  476. package/dist/esm/evaluate.d.ts +199 -0
  477. package/dist/esm/evaluate.d.ts.map +1 -0
  478. package/dist/esm/evaluate.js +2 -0
  479. package/dist/esm/evaluate.js.map +1 -0
  480. package/dist/esm/explain/displayExplainCli.d.ts +3 -0
  481. package/dist/esm/explain/displayExplainCli.d.ts.map +1 -0
  482. package/dist/esm/explain/displayExplainCli.js +258 -0
  483. package/dist/esm/explain/displayExplainCli.js.map +1 -0
  484. package/dist/esm/explain/statementExplain.d.ts +161 -0
  485. package/dist/esm/explain/statementExplain.d.ts.map +1 -0
  486. package/dist/esm/explain/statementExplain.js +30 -0
  487. package/dist/esm/explain/statementExplain.js.map +1 -0
  488. package/dist/esm/global_conditions/globalConditionKeys.d.ts +3 -0
  489. package/dist/esm/global_conditions/globalConditionKeys.d.ts.map +1 -0
  490. package/dist/esm/global_conditions/globalConditionKeys.js +9 -0
  491. package/dist/esm/global_conditions/globalConditionKeys.js.map +1 -0
  492. package/dist/esm/index.d.ts +16 -0
  493. package/dist/esm/index.d.ts.map +1 -0
  494. package/dist/esm/index.js +10 -0
  495. package/dist/esm/index.js.map +1 -0
  496. package/dist/esm/package.json +3 -0
  497. package/dist/esm/policyType.d.ts +13 -0
  498. package/dist/esm/policyType.d.ts.map +1 -0
  499. package/dist/esm/policyType.js +2 -0
  500. package/dist/esm/policyType.js.map +1 -0
  501. package/dist/esm/principal/principal.d.ts +61 -0
  502. package/dist/esm/principal/principal.d.ts.map +1 -0
  503. package/dist/esm/principal/principal.js +354 -0
  504. package/dist/esm/principal/principal.js.map +1 -0
  505. package/dist/esm/request/request.d.ts +66 -0
  506. package/dist/esm/request/request.d.ts.map +1 -0
  507. package/dist/esm/request/request.js +34 -0
  508. package/dist/esm/request/request.js.map +1 -0
  509. package/dist/esm/request/requestAction.d.ts +27 -0
  510. package/dist/esm/request/requestAction.d.ts.map +1 -0
  511. package/dist/esm/request/requestAction.js +15 -0
  512. package/dist/esm/request/requestAction.js.map +1 -0
  513. package/dist/esm/request/requestPrincipal.d.ts +92 -0
  514. package/dist/esm/request/requestPrincipal.d.ts.map +1 -0
  515. package/dist/esm/request/requestPrincipal.js +80 -0
  516. package/dist/esm/request/requestPrincipal.js.map +1 -0
  517. package/dist/esm/request/requestResource.d.ts +55 -0
  518. package/dist/esm/request/requestResource.d.ts.map +1 -0
  519. package/dist/esm/request/requestResource.js +34 -0
  520. package/dist/esm/request/requestResource.js.map +1 -0
  521. package/dist/esm/requestContext.d.ts +63 -0
  522. package/dist/esm/requestContext.d.ts.map +1 -0
  523. package/dist/esm/requestContext.js +39 -0
  524. package/dist/esm/requestContext.js.map +1 -0
  525. package/dist/esm/resource/resource.d.ts +54 -0
  526. package/dist/esm/resource/resource.d.ts.map +1 -0
  527. package/dist/esm/resource/resource.js +582 -0
  528. package/dist/esm/resource/resource.js.map +1 -0
  529. package/dist/esm/services/DefaultServiceAuthorizer.d.ts +182 -0
  530. package/dist/esm/services/DefaultServiceAuthorizer.d.ts.map +1 -0
  531. package/dist/esm/services/DefaultServiceAuthorizer.js +623 -0
  532. package/dist/esm/services/DefaultServiceAuthorizer.js.map +1 -0
  533. package/dist/esm/services/IamServiceAuthorizer.d.ts +10 -0
  534. package/dist/esm/services/IamServiceAuthorizer.d.ts.map +1 -0
  535. package/dist/esm/services/IamServiceAuthorizer.js +63 -0
  536. package/dist/esm/services/IamServiceAuthorizer.js.map +1 -0
  537. package/dist/esm/services/KmsServiceAuthorizer.d.ts +29 -0
  538. package/dist/esm/services/KmsServiceAuthorizer.d.ts.map +1 -0
  539. package/dist/esm/services/KmsServiceAuthorizer.js +82 -0
  540. package/dist/esm/services/KmsServiceAuthorizer.js.map +1 -0
  541. package/dist/esm/services/ServiceAuthorizer.d.ts +27 -0
  542. package/dist/esm/services/ServiceAuthorizer.d.ts.map +1 -0
  543. package/dist/esm/services/ServiceAuthorizer.js +5 -0
  544. package/dist/esm/services/ServiceAuthorizer.js.map +1 -0
  545. package/dist/esm/services/StsServiceAuthorizer.d.ts +19 -0
  546. package/dist/esm/services/StsServiceAuthorizer.d.ts.map +1 -0
  547. package/dist/esm/services/StsServiceAuthorizer.js +44 -0
  548. package/dist/esm/services/StsServiceAuthorizer.js.map +1 -0
  549. package/dist/esm/services/s3/S3ServiceAuthorizer.d.ts +24 -0
  550. package/dist/esm/services/s3/S3ServiceAuthorizer.d.ts.map +1 -0
  551. package/dist/esm/services/s3/S3ServiceAuthorizer.js +76 -0
  552. package/dist/esm/services/s3/S3ServiceAuthorizer.js.map +1 -0
  553. package/dist/esm/services/s3/s3BlockPublicAccess.d.ts +50 -0
  554. package/dist/esm/services/s3/s3BlockPublicAccess.d.ts.map +1 -0
  555. package/dist/esm/services/s3/s3BlockPublicAccess.js +299 -0
  556. package/dist/esm/services/s3/s3BlockPublicAccess.js.map +1 -0
  557. package/dist/esm/simulation_engine/contextKeys.d.ts +13 -0
  558. package/dist/esm/simulation_engine/contextKeys.d.ts.map +1 -0
  559. package/dist/esm/simulation_engine/contextKeys.js +55 -0
  560. package/dist/esm/simulation_engine/contextKeys.js.map +1 -0
  561. package/dist/esm/simulation_engine/overallResult.d.ts +13 -0
  562. package/dist/esm/simulation_engine/overallResult.d.ts.map +1 -0
  563. package/dist/esm/simulation_engine/overallResult.js +32 -0
  564. package/dist/esm/simulation_engine/overallResult.js.map +1 -0
  565. package/dist/esm/simulation_engine/policyResources.d.ts +44 -0
  566. package/dist/esm/simulation_engine/policyResources.d.ts.map +1 -0
  567. package/dist/esm/simulation_engine/policyResources.js +117 -0
  568. package/dist/esm/simulation_engine/policyResources.js.map +1 -0
  569. package/dist/esm/simulation_engine/resourceTypes.d.ts +11 -0
  570. package/dist/esm/simulation_engine/resourceTypes.d.ts.map +1 -0
  571. package/dist/esm/simulation_engine/resourceTypes.js +23 -0
  572. package/dist/esm/simulation_engine/resourceTypes.js.map +1 -0
  573. package/dist/esm/simulation_engine/simulation.d.ts +114 -0
  574. package/dist/esm/simulation_engine/simulation.d.ts.map +1 -0
  575. package/dist/esm/simulation_engine/simulation.js +30 -0
  576. package/dist/esm/simulation_engine/simulation.js.map +1 -0
  577. package/dist/esm/simulation_engine/simulationEngine.d.ts +128 -0
  578. package/dist/esm/simulation_engine/simulationEngine.d.ts.map +1 -0
  579. package/dist/esm/simulation_engine/simulationEngine.js +430 -0
  580. package/dist/esm/simulation_engine/simulationEngine.js.map +1 -0
  581. package/dist/esm/simulation_engine/simulationOptions.d.ts +21 -0
  582. package/dist/esm/simulation_engine/simulationOptions.d.ts.map +1 -0
  583. package/dist/esm/simulation_engine/simulationOptions.js +3 -0
  584. package/dist/esm/simulation_engine/simulationOptions.js.map +1 -0
  585. package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts +13 -0
  586. package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -0
  587. package/dist/esm/simulation_engine/unsafeSimulationEngine.js +62 -0
  588. package/dist/esm/simulation_engine/unsafeSimulationEngine.js.map +1 -0
  589. package/dist/esm/util/resourceStrings.d.ts +19 -0
  590. package/dist/esm/util/resourceStrings.d.ts.map +1 -0
  591. package/dist/esm/util/resourceStrings.js +103 -0
  592. package/dist/esm/util/resourceStrings.js.map +1 -0
  593. package/dist/esm/util.d.ts +90 -0
  594. package/dist/esm/util.d.ts.map +1 -0
  595. package/dist/esm/util.js +341 -0
  596. package/dist/esm/util.js.map +1 -0
  597. package/package.json +119 -0
@@ -0,0 +1,134 @@
1
+ import { type Policy } from '@actsecurity/iam-policy';
2
+ import { DiscoveryContextKeyConstraints } from '../context_keys/discoveryContextKeyConstraints.js';
3
+ import { type IdentityAnalysis, type RcpAnalysis, type RequestAnalysis, type ResourceAnalysis, type ScpAnalysis } from '../evaluate.js';
4
+ import { type PolicyType } from '../policyType.js';
5
+ import { type AwsRequest } from '../request/request.js';
6
+ import { type ServiceAuthorizer, type ServiceSettings } from '../services/ServiceAuthorizer.js';
7
+ export declare const validSimulationModes: readonly ["Strict", "Discovery"];
8
+ export type PolicyWithName = Policy<{
9
+ name: string;
10
+ }>;
11
+ /**
12
+ * The mode of simulation for the core engine.
13
+ * - Strict: Simulates the request as if it were being made in a real AWS environment.
14
+ * - Discovery: Simulates the request but discovers under what conditions it would be allowed.
15
+ */
16
+ export type SimulationMode = (typeof validSimulationModes)[number];
17
+ /**
18
+ * Meta parameters for the simulation engine.
19
+ */
20
+ export interface SimulationParameters {
21
+ /**
22
+ * The simulation mode to use for the request.
23
+ */
24
+ simulationMode: SimulationMode;
25
+ /**
26
+ * Discovery-only knowledge constraints for context keys. In Strict mode,
27
+ * all condition keys are evaluated against the concrete request context.
28
+ */
29
+ discoveryContextKeyConstraints: DiscoveryContextKeyConstraints;
30
+ }
31
+ /**
32
+ * A set of service or resource control policies for each level of an organization tree
33
+ */
34
+ export interface ControlPolicies {
35
+ /**
36
+ * The organization identifier for the organizational unit these policies apply to.
37
+ */
38
+ orgIdentifier: string;
39
+ /**
40
+ * The policies that apply to this organizational unit.
41
+ */
42
+ policies: PolicyWithName[];
43
+ }
44
+ /**
45
+ * A request to authorize a service action.
46
+ */
47
+ export interface AuthorizationRequest {
48
+ /**
49
+ * The request to authorize.
50
+ */
51
+ request: AwsRequest;
52
+ /**
53
+ * A session policy, if any, for the current Role or Federated User session.
54
+ */
55
+ sessionPolicy: PolicyWithName | undefined;
56
+ /**
57
+ * The identity policies that are applicable to the principal making the request.
58
+ */
59
+ identityPolicies: PolicyWithName[];
60
+ /**
61
+ * The service control policies that apply to the principal making the request. In
62
+ * order of the organization hierarchy. So the root ou SCPs should be first.
63
+ */
64
+ serviceControlPolicies: ControlPolicies[];
65
+ /**
66
+ * The resource control policies that apply to the resource being accessed. In
67
+ * order of the organization hierarchy. So the root ou RCPs should be first.
68
+ */
69
+ resourceControlPolicies: ControlPolicies[];
70
+ /**
71
+ * The resource policy that applies to the resource being accessed.
72
+ */
73
+ resourcePolicy: PolicyWithName | undefined;
74
+ /**
75
+ * The permission boundaries that apply to the principal making the request.
76
+ */
77
+ permissionBoundaries: PolicyWithName[] | undefined;
78
+ /**
79
+ * The VPC endpoint policies that apply to the request, if any.
80
+ */
81
+ vpcEndpointPolicies: PolicyWithName[] | undefined;
82
+ /**
83
+ * The simulation parameters for the request.
84
+ */
85
+ simulationParameters: SimulationParameters;
86
+ /**
87
+ * Caller-supplied service-specific settings that affect authorization.
88
+ */
89
+ serviceSettings?: ServiceSettings;
90
+ }
91
+ /**
92
+ * Authorizes a request.
93
+ *
94
+ * This assumes all policies have been validated and the request is fully complete and valid.
95
+ *
96
+ * @param request the request to authorize
97
+ * @returns the result of the authorization
98
+ */
99
+ export declare function authorize(request: AuthorizationRequest): RequestAnalysis;
100
+ /**
101
+ * Get the appropriate service authorizer for the request. Some services have specific authorization logic in
102
+ * them. If there is no service specific authorizer, a default one will be used.
103
+ *
104
+ * @param request the request to get the authorizer for
105
+ * @returns the service authorizer for the request
106
+ */
107
+ export declare function getServiceAuthorizer(request: AuthorizationRequest): ServiceAuthorizer;
108
+ /**
109
+ * Analyzes a set of identity policies
110
+ *
111
+ * @param identityPolicies the identity policies to analyze
112
+ * @param request the request to analyze against
113
+ * @returns an array of statement analysis results
114
+ */
115
+ export declare function analyzeIdentityPolicies(identityPolicies: PolicyWithName[], request: AwsRequest, simulationParameters: SimulationParameters, policyType: PolicyType): IdentityAnalysis;
116
+ /**
117
+ * Analyzes a set of service or resource control policies and the statements within them.
118
+ *
119
+ * @param controlPolicies the control policies to analyze
120
+ * @param request the request to analyze against
121
+ * @returns an array of SCP or RCP analysis results
122
+ */
123
+ export declare function analyzeControlPolicies(controlPolicies: ControlPolicies[], request: AwsRequest, simulationParameters: SimulationParameters, policyType: PolicyType): ScpAnalysis | RcpAnalysis;
124
+ /**
125
+ * Analyze a resource policy and return the results
126
+ *
127
+ * @param resourcePolicy the resource policy to analyze
128
+ * @param request the request to analyze against
129
+ * @returns an array of statement analysis results
130
+ */
131
+ export declare function analyzeResourcePolicy(resourcePolicy: PolicyWithName | undefined, request: AwsRequest, principalHasPermissionBoundary: boolean, simulationParameters: SimulationParameters): ResourceAnalysis;
132
+ export declare function analyzePermissionBoundaryPolicies(permissionBoundaries: PolicyWithName[] | undefined, request: AwsRequest, simulationParameters: SimulationParameters): IdentityAnalysis | undefined;
133
+ export declare function analyzeVpcEndpointPolicies(vpcEndPointPolicies: PolicyWithName[] | undefined, request: AwsRequest, simulationParameters: SimulationParameters): IdentityAnalysis | undefined;
134
+ //# sourceMappingURL=CoreSimulatorEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreSimulatorEngine.d.ts","sourceRoot":"","sources":["../../../src/core_engine/CoreSimulatorEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,yBAAyB,CAAA;AAIrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAA;AAClG,OAAO,EAEL,KAAK,gBAAgB,EAIrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAA;AAMvB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAKvD,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAW/F,eAAO,MAAM,oBAAoB,kCAAmC,CAAA;AAEpE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAErD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAElE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,cAAc,EAAE,cAAc,CAAA;IAE9B;;;OAGG;IACH,8BAA8B,EAAE,8BAA8B,CAAA;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,UAAU,CAAA;IAEnB;;OAEG;IACH,aAAa,EAAE,cAAc,GAAG,SAAS,CAAA;IAEzC;;OAEG;IACH,gBAAgB,EAAE,cAAc,EAAE,CAAA;IAElC;;;OAGG;IACH,sBAAsB,EAAE,eAAe,EAAE,CAAA;IAEzC;;;OAGG;IACH,uBAAuB,EAAE,eAAe,EAAE,CAAA;IAE1C;;OAEG;IACH,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAE1C;;OAEG;IACH,oBAAoB,EAAE,cAAc,EAAE,GAAG,SAAS,CAAA;IAElD;;OAEG;IACH,mBAAmB,EAAE,cAAc,EAAE,GAAG,SAAS,CAAA;IAEjD;;OAEG;IACH,oBAAoB,EAAE,oBAAoB,CAAA;IAE1C;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AASD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,eAAe,CA0FxE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,iBAAiB,CAMrF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,gBAAgB,EAAE,cAAc,EAAE,EAClC,OAAO,EAAE,UAAU,EACnB,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,UAAU,GACrB,gBAAgB,CAgFlB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,eAAe,EAAE,EAClC,OAAO,EAAE,UAAU,EACnB,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,UAAU,GACrB,WAAW,GAAG,WAAW,CAgH3B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,OAAO,EAAE,UAAU,EACnB,8BAA8B,EAAE,OAAO,EACvC,oBAAoB,EAAE,oBAAoB,GACzC,gBAAgB,CAkIlB;AAED,wBAAgB,iCAAiC,CAC/C,oBAAoB,EAAE,cAAc,EAAE,GAAG,SAAS,EAClD,OAAO,EAAE,UAAU,EACnB,oBAAoB,EAAE,oBAAoB,GACzC,gBAAgB,GAAG,SAAS,CAM9B;AAED,wBAAgB,0BAA0B,CACxC,mBAAmB,EAAE,cAAc,EAAE,GAAG,SAAS,EACjD,OAAO,EAAE,UAAU,EACnB,oBAAoB,EAAE,oBAAoB,GACzC,gBAAgB,GAAG,SAAS,CAK9B"}
@@ -0,0 +1,441 @@
1
+ import {} from '@actsecurity/iam-policy';
2
+ import { requestMatchesStatementActions } from '../action/action.js';
3
+ import { requestMatchesConditions } from '../condition/condition.js';
4
+ import { allowStatementExpression, always, and, never, or } from '../analysis/allowedConditions.js';
5
+ import { DiscoveryContextKeyConstraints } from '../context_keys/discoveryContextKeyConstraints.js';
6
+ import {} from '../evaluate.js';
7
+ import {} from '../explain/statementExplain.js';
8
+ import { requestMatchesStatementPrincipals } from '../principal/principal.js';
9
+ import {} from '../policyType.js';
10
+ import {} from '../request/request.js';
11
+ import { requestMatchesStatementResources } from '../resource/resource.js';
12
+ import { DefaultServiceAuthorizer } from '../services/DefaultServiceAuthorizer.js';
13
+ import { IamServiceAuthorizer } from '../services/IamServiceAuthorizer.js';
14
+ import { KmsServiceAuthorizer } from '../services/KmsServiceAuthorizer.js';
15
+ import {} from '../services/ServiceAuthorizer.js';
16
+ import { S3ServiceAuthorizer } from '../services/s3/S3ServiceAuthorizer.js';
17
+ import { StsServiceAuthorizer } from '../services/StsServiceAuthorizer.js';
18
+ import { identityStatementAllows, identityStatementExplicitDeny, reportIgnoredConditions, statementMatches } from '../StatementAnalysis.js';
19
+ export const validSimulationModes = ['Strict', 'Discovery'];
20
+ const serviceEngines = {
21
+ kms: KmsServiceAuthorizer,
22
+ sts: StsServiceAuthorizer,
23
+ iam: IamServiceAuthorizer,
24
+ s3: S3ServiceAuthorizer
25
+ };
26
+ /**
27
+ * Authorizes a request.
28
+ *
29
+ * This assumes all policies have been validated and the request is fully complete and valid.
30
+ *
31
+ * @param request the request to authorize
32
+ * @returns the result of the authorization
33
+ */
34
+ export function authorize(request) {
35
+ const principalHasPermissionBoundary = !!request.permissionBoundaries && request.permissionBoundaries.length > 0;
36
+ const simulationParameters = request.simulationParameters;
37
+ const sessionAnalysis = request.sessionPolicy
38
+ ? analyzeIdentityPolicies([request.sessionPolicy], request.request, simulationParameters, 'session')
39
+ : undefined;
40
+ const identityAnalysis = analyzeIdentityPolicies(request.identityPolicies, request.request, simulationParameters, 'identity');
41
+ const permissionBoundaryAnalysis = analyzePermissionBoundaryPolicies(request.permissionBoundaries, request.request, simulationParameters);
42
+ const scpAnalysis = analyzeControlPolicies(request.serviceControlPolicies, request.request, simulationParameters, 'scp');
43
+ const rcpAnalysis = analyzeControlPolicies(request.resourceControlPolicies, request.request, simulationParameters, 'rcp');
44
+ const resourceAnalysis = analyzeResourcePolicy(request.resourcePolicy, request.request, principalHasPermissionBoundary, simulationParameters);
45
+ const endpointAnalysis = analyzeVpcEndpointPolicies(request.vpcEndpointPolicies, request.request, simulationParameters);
46
+ const serviceAuthorizer = getServiceAuthorizer(request);
47
+ const result = serviceAuthorizer.authorize({
48
+ request: request.request,
49
+ sessionAnalysis,
50
+ identityAnalysis,
51
+ scpAnalysis,
52
+ rcpAnalysis,
53
+ resourceAnalysis,
54
+ resourcePolicy: request.resourcePolicy,
55
+ permissionBoundaryAnalysis,
56
+ endpointAnalysis,
57
+ simulationParameters,
58
+ serviceSettings: request.serviceSettings
59
+ });
60
+ if (simulationParameters.simulationMode === 'Discovery') {
61
+ result.ignoredConditions = ignoredConditionsAnalysis(sessionAnalysis, scpAnalysis, rcpAnalysis, identityAnalysis, resourceAnalysis, permissionBoundaryAnalysis, endpointAnalysis);
62
+ result.ignoredRoleSessionName = roleSessionNameIgnored(sessionAnalysis, scpAnalysis, rcpAnalysis, identityAnalysis, resourceAnalysis, permissionBoundaryAnalysis);
63
+ }
64
+ return result;
65
+ }
66
+ /**
67
+ * Get the appropriate service authorizer for the request. Some services have specific authorization logic in
68
+ * them. If there is no service specific authorizer, a default one will be used.
69
+ *
70
+ * @param request the request to get the authorizer for
71
+ * @returns the service authorizer for the request
72
+ */
73
+ export function getServiceAuthorizer(request) {
74
+ const serviceName = request.request.action.service().toLowerCase();
75
+ if (serviceEngines[serviceName]) {
76
+ return new serviceEngines[serviceName]();
77
+ }
78
+ return new DefaultServiceAuthorizer();
79
+ }
80
+ /**
81
+ * Analyzes a set of identity policies
82
+ *
83
+ * @param identityPolicies the identity policies to analyze
84
+ * @param request the request to analyze against
85
+ * @returns an array of statement analysis results
86
+ */
87
+ export function analyzeIdentityPolicies(identityPolicies, request, simulationParameters, policyType) {
88
+ const identityAnalysis = {
89
+ result: 'ImplicitlyDenied',
90
+ allowStatements: [],
91
+ denyStatements: [],
92
+ unmatchedStatements: []
93
+ };
94
+ for (const policy of identityPolicies) {
95
+ for (const statement of policy.statements()) {
96
+ const { matches: resourceMatch, details: resourceDetails } = requestMatchesStatementResources(request, statement, policyType);
97
+ const { matches: actionMatch, details: actionDetails } = requestMatchesStatementActions(request, statement);
98
+ const { matches: conditionMatch, details: conditionDetails, ignoredConditions } = requestMatchesConditions(request, statement.conditions(), statement.effect(), simulationParameters);
99
+ const principalMatch = 'Match';
100
+ const overallMatch = statementMatches({
101
+ actionMatch,
102
+ conditionMatch,
103
+ principalMatch,
104
+ resourceMatch
105
+ });
106
+ const shouldReportIgnoredConditions = reportIgnoredConditions({
107
+ actionMatch,
108
+ principalMatch,
109
+ resourceMatch
110
+ });
111
+ const statementAnalysis = {
112
+ policyId: policy.metadata().name,
113
+ statement,
114
+ resourceMatch,
115
+ actionMatch,
116
+ conditionMatch,
117
+ principalMatch,
118
+ ignoredConditions: shouldReportIgnoredConditions ? ignoredConditions : undefined,
119
+ explain: makeStatementExplain(statement, overallMatch, actionMatch, principalMatch, resourceMatch, conditionMatch, { ...resourceDetails, ...actionDetails, ...conditionDetails })
120
+ };
121
+ if (identityStatementExplicitDeny(statementAnalysis)) {
122
+ identityAnalysis.denyStatements.push(statementAnalysis);
123
+ }
124
+ else if (identityStatementAllows(statementAnalysis)) {
125
+ identityAnalysis.allowStatements.push(statementAnalysis);
126
+ }
127
+ else {
128
+ identityAnalysis.unmatchedStatements.push(statementAnalysis);
129
+ }
130
+ }
131
+ }
132
+ if (identityAnalysis.denyStatements.length > 0) {
133
+ identityAnalysis.result = 'ExplicitlyDenied';
134
+ }
135
+ else if (identityAnalysis.allowStatements.length > 0) {
136
+ identityAnalysis.result = 'Allowed';
137
+ }
138
+ return identityAnalysis;
139
+ }
140
+ /**
141
+ * Analyzes a set of service or resource control policies and the statements within them.
142
+ *
143
+ * @param controlPolicies the control policies to analyze
144
+ * @param request the request to analyze against
145
+ * @returns an array of SCP or RCP analysis results
146
+ */
147
+ export function analyzeControlPolicies(controlPolicies, request, simulationParameters, policyType) {
148
+ const analysis = [];
149
+ for (const controlPolicy of controlPolicies) {
150
+ const ouAnalysis = {
151
+ orgIdentifier: controlPolicy.orgIdentifier,
152
+ result: 'ImplicitlyDenied',
153
+ allowStatements: [],
154
+ denyStatements: [],
155
+ unmatchedStatements: [],
156
+ conditions: never('noApplicableAllow')
157
+ };
158
+ for (const policy of controlPolicy.policies) {
159
+ for (const statement of policy.statements()) {
160
+ const { matches: resourceMatch, details: resourceDetails } = requestMatchesStatementResources(request, statement, policyType);
161
+ const { matches: actionMatch, details: actionDetails } = requestMatchesStatementActions(request, statement);
162
+ const { matches: conditionMatch, details: conditionDetails, ignoredConditions } = requestMatchesConditions(request, statement.conditions(), statement.effect(), simulationParameters);
163
+ const principalMatch = 'Match';
164
+ const overallMatch = statementMatches({
165
+ actionMatch,
166
+ conditionMatch,
167
+ principalMatch,
168
+ resourceMatch
169
+ });
170
+ const shouldReportIgnoredConditions = reportIgnoredConditions({
171
+ actionMatch,
172
+ principalMatch,
173
+ resourceMatch
174
+ });
175
+ const statementAnalysis = {
176
+ policyId: policy.metadata().name,
177
+ statement,
178
+ resourceMatch,
179
+ actionMatch,
180
+ conditionMatch,
181
+ principalMatch,
182
+ ignoredConditions: shouldReportIgnoredConditions ? ignoredConditions : [],
183
+ explain: makeStatementExplain(statement, overallMatch, actionMatch, principalMatch, resourceMatch, conditionMatch, { ...resourceDetails, ...actionDetails, ...conditionDetails })
184
+ };
185
+ if (identityStatementAllows(statementAnalysis)) {
186
+ ouAnalysis.allowStatements.push(statementAnalysis);
187
+ }
188
+ else if (identityStatementExplicitDeny(statementAnalysis)) {
189
+ ouAnalysis.denyStatements.push(statementAnalysis);
190
+ }
191
+ else {
192
+ ouAnalysis.unmatchedStatements.push(statementAnalysis);
193
+ }
194
+ }
195
+ }
196
+ if (ouAnalysis.denyStatements.length > 0) {
197
+ ouAnalysis.result = 'ExplicitlyDenied';
198
+ }
199
+ else if (ouAnalysis.allowStatements.length > 0) {
200
+ ouAnalysis.result = 'Allowed';
201
+ }
202
+ if (ouAnalysis.result === 'Allowed') {
203
+ ouAnalysis.conditions = or(ouAnalysis.allowStatements.map((statement) => allowStatementExpression(statement, policyType, controlPolicy.orgIdentifier)));
204
+ }
205
+ analysis.push(ouAnalysis);
206
+ }
207
+ let overallResult = 'ImplicitlyDenied';
208
+ if (analysis.some((ou) => ou.result === 'ExplicitlyDenied')) {
209
+ overallResult = 'ExplicitlyDenied';
210
+ }
211
+ else if (analysis.some((ou) => ou.allowStatements.length === 0)) {
212
+ overallResult = 'ImplicitlyDenied';
213
+ }
214
+ else if (analysis.every((ou) => ou.result === 'Allowed')) {
215
+ overallResult = 'Allowed';
216
+ }
217
+ return {
218
+ result: overallResult,
219
+ ouAnalysis: analysis,
220
+ conditions: analysis.length === 0
221
+ ? always()
222
+ : overallResult === 'Allowed'
223
+ ? and(analysis.map((ou) => ou.conditions))
224
+ : never('noApplicableAllow')
225
+ };
226
+ }
227
+ /**
228
+ * Analyze a resource policy and return the results
229
+ *
230
+ * @param resourcePolicy the resource policy to analyze
231
+ * @param request the request to analyze against
232
+ * @returns an array of statement analysis results
233
+ */
234
+ export function analyzeResourcePolicy(resourcePolicy, request, principalHasPermissionBoundary, simulationParameters) {
235
+ const resourceAnalysis = {
236
+ result: 'NotApplicable',
237
+ allowStatements: [],
238
+ denyStatements: [],
239
+ unmatchedStatements: []
240
+ };
241
+ if (!resourcePolicy) {
242
+ return resourceAnalysis;
243
+ }
244
+ const principalMatchOptions = [
245
+ 'Match',
246
+ 'SessionRoleMatch',
247
+ 'SessionUserMatch'
248
+ ];
249
+ for (const statement of resourcePolicy.statements()) {
250
+ const { matches: resourceMatch, details: resourceDetails } = requestMatchesStatementResources(request, statement, 'resource');
251
+ const { matches: actionMatch, details: actionDetails } = requestMatchesStatementActions(request, statement);
252
+ let { matches: principalMatch, details: principalDetails, ignoredRoleSessionName } = requestMatchesStatementPrincipals(request, statement, simulationParameters);
253
+ const permissionBoundaryDetails = {};
254
+ /**
255
+ * "Don't use resource-based policy statements that include a NotPrincipal policy element with a
256
+ * Deny effect for IAM users or roles that have a permissions boundary policy attached.
257
+ * The NotPrincipal element with a Deny effect will always deny any IAM principal that
258
+ * has a permissions boundary policy attached, regardless of the values specified in the
259
+ * NotPrincipal element. This causes some IAM users or roles that would otherwise have access
260
+ * to the resource to lose access. We recommend changing your resource-based policy statements
261
+ * to use the condition operator ArnNotEquals with the aws:PrincipalArn context key to limit
262
+ * access instead of the NotPrincipal element. For information about permissions boundaries, see
263
+ * Permissions boundaries for IAM entities."
264
+ * https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html
265
+ */
266
+ if (principalHasPermissionBoundary &&
267
+ statement.isNotPrincipalStatement() &&
268
+ statement.effect() === 'Deny') {
269
+ principalMatch = 'Match';
270
+ permissionBoundaryDetails.denyBecauseNpInRpAndPb = true;
271
+ }
272
+ const { matches: conditionMatch, details: conditionDetails, ignoredConditions } = requestMatchesConditions(request, statement.conditions(), statement.effect(), simulationParameters);
273
+ const overallMatch = statementMatches({
274
+ actionMatch,
275
+ conditionMatch,
276
+ principalMatch,
277
+ resourceMatch
278
+ });
279
+ const shouldReportIgnoredConditions = reportIgnoredConditions({
280
+ actionMatch,
281
+ principalMatch,
282
+ resourceMatch
283
+ });
284
+ const analysis = {
285
+ policyId: resourcePolicy.metadata().name,
286
+ statement,
287
+ resourceMatch: resourceMatch,
288
+ actionMatch,
289
+ conditionMatch,
290
+ principalMatch,
291
+ ignoredConditions: shouldReportIgnoredConditions ? ignoredConditions : undefined,
292
+ ignoredRoleSessionName,
293
+ explain: makeStatementExplain(statement, overallMatch, actionMatch, principalMatch, resourceMatch, conditionMatch, { ...resourceDetails, ...actionDetails, ...principalDetails, ...conditionDetails })
294
+ };
295
+ if (identityStatementExplicitDeny(analysis) && analysis.principalMatch !== 'NoMatch') {
296
+ resourceAnalysis.denyStatements.push(analysis);
297
+ }
298
+ else if (identityStatementAllows(analysis) && analysis.principalMatch !== 'NoMatch') {
299
+ resourceAnalysis.allowStatements.push(analysis);
300
+ }
301
+ else {
302
+ resourceAnalysis.unmatchedStatements.push(analysis);
303
+ }
304
+ }
305
+ if (resourceAnalysis.denyStatements.some((s) => principalMatchOptions.includes(s.principalMatch))) {
306
+ resourceAnalysis.result = 'ExplicitlyDenied';
307
+ }
308
+ else if (resourceAnalysis.denyStatements.some((s) => s.principalMatch === 'AccountLevelMatch')) {
309
+ resourceAnalysis.result = 'DeniedForAccount';
310
+ }
311
+ else if (resourceAnalysis.allowStatements.some((s) => principalMatchOptions.includes(s.principalMatch))) {
312
+ resourceAnalysis.result = 'Allowed';
313
+ }
314
+ else if (resourceAnalysis.allowStatements.some((s) => s.principalMatch === 'AccountLevelMatch')) {
315
+ resourceAnalysis.result = 'AllowedForAccount';
316
+ }
317
+ else {
318
+ resourceAnalysis.result = 'ImplicitlyDenied';
319
+ }
320
+ return resourceAnalysis;
321
+ }
322
+ export function analyzePermissionBoundaryPolicies(permissionBoundaries, request, simulationParameters) {
323
+ if (!permissionBoundaries || permissionBoundaries.length === 0) {
324
+ return undefined;
325
+ }
326
+ return analyzeIdentityPolicies(permissionBoundaries, request, simulationParameters, 'pb');
327
+ }
328
+ export function analyzeVpcEndpointPolicies(vpcEndPointPolicies, request, simulationParameters) {
329
+ if (!vpcEndPointPolicies || vpcEndPointPolicies.length === 0) {
330
+ return undefined;
331
+ }
332
+ return analyzeIdentityPolicies(vpcEndPointPolicies, request, simulationParameters, 'vpce');
333
+ }
334
+ function makeStatementExplain(statement, overallMatch, actionMatch, principalMatch, resourceMatch, conditionMatch, details) {
335
+ return {
336
+ effect: statement.effect(),
337
+ identifier: statement.sid() || statement.index().toString(),
338
+ matches: overallMatch,
339
+ actionMatch,
340
+ principalMatch,
341
+ resourceMatch,
342
+ conditionMatch: conditionMatch === 'Match',
343
+ ...details
344
+ };
345
+ }
346
+ /**
347
+ * Create an analysis of the ignored conditions in all statements.
348
+ *
349
+ * @param scpAnalysis the SCP analysis
350
+ * @param rcpAnalysis the RCP analysis
351
+ * @param identityAnalysis the identity analysis
352
+ * @param resourceAnalysis the resource analysis
353
+ * @param permissionBoundaryAnalysis the permission boundary analysis (optional)
354
+ * @returns an object containing the ignored conditions for each analysis
355
+ */
356
+ function ignoredConditionsAnalysis(sessionAnalysis, scpAnalysis, rcpAnalysis, identityAnalysis, resourceAnalysis, permissionBoundaryAnalysis, endpointAnalysis) {
357
+ const ignoredConditions = {};
358
+ if (sessionAnalysis) {
359
+ addIgnoredConditionsToAnalysis(ignoredConditions, 'session', [sessionAnalysis]);
360
+ }
361
+ addIgnoredConditionsToAnalysis(ignoredConditions, 'scp', scpAnalysis.ouAnalysis);
362
+ addIgnoredConditionsToAnalysis(ignoredConditions, 'rcp', rcpAnalysis.ouAnalysis);
363
+ addIgnoredConditionsToAnalysis(ignoredConditions, 'identity', [identityAnalysis]);
364
+ addIgnoredConditionsToAnalysis(ignoredConditions, 'resource', [resourceAnalysis]);
365
+ addIgnoredConditionsToAnalysis(ignoredConditions, 'permissionBoundary', permissionBoundaryAnalysis ? [permissionBoundaryAnalysis] : []);
366
+ addIgnoredConditionsToAnalysis(ignoredConditions, 'endpointPolicy', endpointAnalysis ? [endpointAnalysis] : []);
367
+ if (Object.keys(ignoredConditions).length > 0) {
368
+ return ignoredConditions;
369
+ }
370
+ return undefined;
371
+ }
372
+ /**
373
+ * Adds the specified ignored conditions to the analysis.
374
+ *
375
+ * @param analyses the analyses to map ignored conditions from
376
+ * @returns the ignored conditions for allow and deny statements
377
+ */
378
+ function addIgnoredConditionsToAnalysis(ignoredConditions, key, analyses) {
379
+ const allow = [];
380
+ const deny = [];
381
+ const allStatements = analyses.flatMap((analysis) => [
382
+ ...analysis.allowStatements,
383
+ ...analysis.denyStatements,
384
+ ...analysis.unmatchedStatements
385
+ ]);
386
+ for (const statement of allStatements) {
387
+ if (statement.ignoredConditions && statement.ignoredConditions.length > 0) {
388
+ if (statement.statement.isAllow()) {
389
+ allow.push(...statement.ignoredConditions.map((c) => ({
390
+ op: c.operation().value(),
391
+ key: c.conditionKey(),
392
+ values: c.conditionValues()
393
+ })));
394
+ }
395
+ else {
396
+ deny.push(...statement.ignoredConditions.map((c) => ({
397
+ op: c.operation().value(),
398
+ key: c.conditionKey(),
399
+ values: c.conditionValues()
400
+ })));
401
+ }
402
+ }
403
+ }
404
+ if (allow.length === 0 && deny.length === 0) {
405
+ return;
406
+ }
407
+ const newValue = {};
408
+ if (allow.length > 0) {
409
+ newValue.allow = allow;
410
+ }
411
+ if (deny.length > 0) {
412
+ newValue.deny = deny;
413
+ }
414
+ ignoredConditions[key] = newValue;
415
+ }
416
+ /**
417
+ * Checks all analyses to see if any of them have statements that ignore the role session name.
418
+ *
419
+ * @param scpAnalysis the SCP analysis
420
+ * @param rcpAnalysis the RCP analysis
421
+ * @param identityAnalysis the identity analysis
422
+ * @param resourceAnalysis the resource analysis
423
+ * @param permissionBoundaryAnalysis the permission boundary analysis (optional)
424
+ * @returns true if any analysis has statements that ignore the role session name, false otherwise
425
+ */
426
+ function roleSessionNameIgnored(sessionAnalysis, scpAnalysis, rcpAnalysis, identityAnalysis, resourceAnalysis, permissionBoundaryAnalysis) {
427
+ return (sessionAnalysis?.allowStatements.some((s) => s.ignoredRoleSessionName) ||
428
+ sessionAnalysis?.unmatchedStatements.some((s) => s.ignoredRoleSessionName) ||
429
+ scpAnalysis.ouAnalysis.some((ou) => ou.allowStatements.some((s) => s.ignoredRoleSessionName)) ||
430
+ scpAnalysis.ouAnalysis.some((ou) => ou.unmatchedStatements.some((s) => s.ignoredRoleSessionName)) ||
431
+ rcpAnalysis.ouAnalysis.some((ou) => ou.allowStatements.some((s) => s.ignoredRoleSessionName)) ||
432
+ rcpAnalysis.ouAnalysis.some((ou) => ou.unmatchedStatements.some((s) => s.ignoredRoleSessionName)) ||
433
+ identityAnalysis.allowStatements.some((s) => s.ignoredRoleSessionName) ||
434
+ identityAnalysis.unmatchedStatements.some((s) => s.ignoredRoleSessionName) ||
435
+ resourceAnalysis.allowStatements.some((s) => s.ignoredRoleSessionName) ||
436
+ resourceAnalysis.unmatchedStatements.some((s) => s.ignoredRoleSessionName) ||
437
+ permissionBoundaryAnalysis?.allowStatements.some((s) => s.ignoredRoleSessionName) ||
438
+ permissionBoundaryAnalysis?.unmatchedStatements.some((s) => s.ignoredRoleSessionName) ||
439
+ false);
440
+ }
441
+ //# sourceMappingURL=CoreSimulatorEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreSimulatorEngine.js","sourceRoot":"","sources":["../../../src/core_engine/CoreSimulatorEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,MAAM,yBAAyB,CAAA;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAA6B,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAC/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kCAAkC,CAAA;AACnG,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAA;AAClG,OAAO,EAUN,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAqD,MAAM,gCAAgC,CAAA;AAClG,OAAO,EAEL,iCAAiC,EAClC,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAmB,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAmB,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EAAgD,MAAM,kCAAkC,CAAA;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC1E,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,EAEvB,gBAAgB,EACjB,MAAM,yBAAyB,CAAA;AAEhC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAA;AAmGpE,MAAM,cAAc,GAAgD;IAClE,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,oBAAoB;IACzB,EAAE,EAAE,mBAAmB;CACxB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,OAA6B;IACrD,MAAM,8BAA8B,GAClC,CAAC,CAAC,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAA;IAC3E,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAA;IAEzD,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa;QAC3C,CAAC,CAAC,uBAAuB,CACrB,CAAC,OAAO,CAAC,aAAa,CAAC,EACvB,OAAO,CAAC,OAAO,EACf,oBAAoB,EACpB,SAAS,CACV;QACH,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,gBAAgB,GAAG,uBAAuB,CAC9C,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,OAAO,EACf,oBAAoB,EACpB,UAAU,CACX,CAAA;IAED,MAAM,0BAA0B,GAAG,iCAAiC,CAClE,OAAO,CAAC,oBAAoB,EAC5B,OAAO,CAAC,OAAO,EACf,oBAAoB,CACrB,CAAA;IAED,MAAM,WAAW,GAAG,sBAAsB,CACxC,OAAO,CAAC,sBAAsB,EAC9B,OAAO,CAAC,OAAO,EACf,oBAAoB,EACpB,KAAK,CACS,CAAA;IAEhB,MAAM,WAAW,GAAG,sBAAsB,CACxC,OAAO,CAAC,uBAAuB,EAC/B,OAAO,CAAC,OAAO,EACf,oBAAoB,EACpB,KAAK,CACS,CAAA;IAEhB,MAAM,gBAAgB,GAAG,qBAAqB,CAC5C,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,OAAO,EACf,8BAA8B,EAC9B,oBAAoB,CACrB,CAAA;IAED,MAAM,gBAAgB,GAAG,0BAA0B,CACjD,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,OAAO,EACf,oBAAoB,CACrB,CAAA;IAED,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;IACvD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC;QACzC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,eAAe;QACf,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,gBAAgB;QAChB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,0BAA0B;QAC1B,gBAAgB;QAChB,oBAAoB;QACpB,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC,CAAA;IAEF,IAAI,oBAAoB,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;QACxD,MAAM,CAAC,iBAAiB,GAAG,yBAAyB,CAClD,eAAe,EACf,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,gBAAgB,CACjB,CAAA;QACD,MAAM,CAAC,sBAAsB,GAAG,sBAAsB,CACpD,eAAe,EACf,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,CAC3B,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA6B;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAA;IAClE,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE,CAAA;IAC1C,CAAC;IACD,OAAO,IAAI,wBAAwB,EAAE,CAAA;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,gBAAkC,EAClC,OAAmB,EACnB,oBAA0C,EAC1C,UAAsB;IAEtB,MAAM,gBAAgB,GAAqB;QACzC,MAAM,EAAE,kBAAkB;QAC1B,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,EAAE;QAClB,mBAAmB,EAAE,EAAE;KACxB,CAAA;IAED,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;YAC5C,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,gCAAgC,CAC3F,OAAO,EACP,SAAS,EACT,UAAU,CACX,CAAA;YACD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,8BAA8B,CACrF,OAAO,EACP,SAAS,CACV,CAAA;YACD,MAAM,EACJ,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,gBAAgB,EACzB,iBAAiB,EAClB,GAAG,wBAAwB,CAC1B,OAAO,EACP,SAAS,CAAC,UAAU,EAAE,EACtB,SAAS,CAAC,MAAM,EAAsB,EACtC,oBAAoB,CACrB,CAAA;YAED,MAAM,cAAc,GAAyB,OAAO,CAAA;YACpD,MAAM,YAAY,GAAG,gBAAgB,CAAC;gBACpC,WAAW;gBACX,cAAc;gBACd,cAAc;gBACd,aAAa;aACd,CAAC,CAAA;YAEF,MAAM,6BAA6B,GAAG,uBAAuB,CAAC;gBAC5D,WAAW;gBACX,cAAc;gBACd,aAAa;aACd,CAAC,CAAA;YAEF,MAAM,iBAAiB,GAAsB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI;gBAChC,SAAS;gBACT,aAAa;gBACb,WAAW;gBACX,cAAc;gBACd,cAAc;gBACd,iBAAiB,EAAE,6BAA6B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;gBAChF,OAAO,EAAE,oBAAoB,CAC3B,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,EAAE,GAAG,eAAe,EAAE,GAAG,aAAa,EAAE,GAAG,gBAAgB,EAAE,CAC9D;aACF,CAAA;YAED,IAAI,6BAA6B,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrD,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACzD,CAAC;iBAAM,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACtD,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAC1D,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,gBAAgB,CAAC,MAAM,GAAG,kBAAkB,CAAA;IAC9C,CAAC;SAAM,IAAI,gBAAgB,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAA;IACrC,CAAC;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,eAAkC,EAClC,OAAmB,EACnB,oBAA0C,EAC1C,UAAsB;IAEtB,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,KAAK,MAAM,aAAa,IAAI,eAAe,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAkB;YAChC,aAAa,EAAE,aAAa,CAAC,aAAa;YAC1C,MAAM,EAAE,kBAAkB;YAC1B,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,EAAE;YAClB,mBAAmB,EAAE,EAAE;YACvB,UAAU,EAAE,KAAK,CAAC,mBAAmB,CAAC;SACvC,CAAA;QACD,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;gBAC5C,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,GACxD,gCAAgC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;gBAClE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,8BAA8B,CACrF,OAAO,EACP,SAAS,CACV,CAAA;gBACD,MAAM,EACJ,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,gBAAgB,EACzB,iBAAiB,EAClB,GAAG,wBAAwB,CAC1B,OAAO,EACP,SAAS,CAAC,UAAU,EAAE,EACtB,SAAS,CAAC,MAAM,EAAsB,EACtC,oBAAoB,CACrB,CAAA;gBAED,MAAM,cAAc,GAAyB,OAAO,CAAA;gBACpD,MAAM,YAAY,GAAG,gBAAgB,CAAC;oBACpC,WAAW;oBACX,cAAc;oBACd,cAAc;oBACd,aAAa;iBACd,CAAC,CAAA;gBAEF,MAAM,6BAA6B,GAAG,uBAAuB,CAAC;oBAC5D,WAAW;oBACX,cAAc;oBACd,aAAa;iBACd,CAAC,CAAA;gBAEF,MAAM,iBAAiB,GAAsB;oBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI;oBAChC,SAAS;oBACT,aAAa;oBACb,WAAW;oBACX,cAAc;oBACd,cAAc;oBACd,iBAAiB,EAAE,6BAA6B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;oBACzE,OAAO,EAAE,oBAAoB,CAC3B,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,EAAE,GAAG,eAAe,EAAE,GAAG,aAAa,EAAE,GAAG,gBAAgB,EAAE,CAC9D;iBACF,CAAA;gBAED,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC/C,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBACpD,CAAC;qBAAM,IAAI,6BAA6B,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC5D,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBACnD,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,UAAU,CAAC,MAAM,GAAG,kBAAkB,CAAA;QACxC,CAAC;aAAM,IAAI,UAAU,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,UAAU,CAAC,MAAM,GAAG,SAAS,CAAA;QAC/B,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,UAAU,CAAC,UAAU,GAAG,EAAE,CACxB,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC3C,wBAAwB,CACtB,SAAS,EACT,UAA2B,EAC3B,aAAa,CAAC,aAAa,CAC5B,CACF,CACF,CAAA;QACH,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,aAAa,GAAqB,kBAAkB,CAAA;IACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,kBAAkB,CAAC,EAAE,CAAC;QAC5D,aAAa,GAAG,kBAAkB,CAAA;IACpC,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAClE,aAAa,GAAG,kBAAkB,CAAA;IACpC,CAAC;SAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;QAC3D,aAAa,GAAG,SAAS,CAAA;IAC3B,CAAC;IAED,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,QAAQ;QACpB,UAAU,EACR,QAAQ,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,MAAM,EAAE;YACV,CAAC,CAAC,aAAa,KAAK,SAAS;gBAC3B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;gBAC1C,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;KACnC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAA0C,EAC1C,OAAmB,EACnB,8BAAuC,EACvC,oBAA0C;IAE1C,MAAM,gBAAgB,GAAqB;QACzC,MAAM,EAAE,eAAe;QACvB,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,EAAE;QAClB,mBAAmB,EAAE,EAAE;KACxB,CAAA;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,MAAM,qBAAqB,GAA2B;QACpD,OAAO;QACP,kBAAkB;QAClB,kBAAkB;KACnB,CAAA;IAED,KAAK,MAAM,SAAS,IAAI,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC;QACpD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,gCAAgC,CAC3F,OAAO,EACP,SAAS,EACT,UAAU,CACX,CAAA;QACD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,8BAA8B,CACrF,OAAO,EACP,SAAS,CACV,CAAA;QACD,IAAI,EACF,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,gBAAgB,EACzB,sBAAsB,EACvB,GAAG,iCAAiC,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAA;QAE/E,MAAM,yBAAyB,GAAqD,EAAE,CAAA;QAEtF;;;;;;;;;;;WAWG;QACH,IACE,8BAA8B;YAC9B,SAAS,CAAC,uBAAuB,EAAE;YACnC,SAAS,CAAC,MAAM,EAAE,KAAK,MAAM,EAC7B,CAAC;YACD,cAAc,GAAG,OAAO,CAAA;YACxB,yBAAyB,CAAC,sBAAsB,GAAG,IAAI,CAAA;QACzD,CAAC;QAED,MAAM,EACJ,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,gBAAgB,EACzB,iBAAiB,EAClB,GAAG,wBAAwB,CAC1B,OAAO,EACP,SAAS,CAAC,UAAU,EAAE,EACtB,SAAS,CAAC,MAAM,EAAsB,EACtC,oBAAoB,CACrB,CAAA;QAED,MAAM,YAAY,GAAG,gBAAgB,CAAC;YACpC,WAAW;YACX,cAAc;YACd,cAAc;YACd,aAAa;SACd,CAAC,CAAA;QAEF,MAAM,6BAA6B,GAAG,uBAAuB,CAAC;YAC5D,WAAW;YACX,cAAc;YACd,aAAa;SACd,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAsB;YAClC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI;YACxC,SAAS;YACT,aAAa,EAAE,aAAa;YAC5B,WAAW;YACX,cAAc;YACd,cAAc;YACd,iBAAiB,EAAE,6BAA6B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;YAChF,sBAAsB;YACtB,OAAO,EAAE,oBAAoB,CAC3B,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,EAAE,GAAG,eAAe,EAAE,GAAG,aAAa,EAAE,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CACnF;SACF,CAAA;QACD,IAAI,6BAA6B,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACrF,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChD,CAAC;aAAM,IAAI,uBAAuB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtF,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IAED,IACE,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAC7F,CAAC;QACD,gBAAgB,CAAC,MAAM,GAAG,kBAAkB,CAAA;IAC9C,CAAC;SAAM,IACL,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,mBAAmB,CAAC,EACrF,CAAC;QACD,gBAAgB,CAAC,MAAM,GAAG,kBAAkB,CAAA;IAC9C,CAAC;SAAM,IACL,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAC9F,CAAC;QACD,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAA;IACrC,CAAC;SAAM,IACL,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,mBAAmB,CAAC,EACtF,CAAC;QACD,gBAAgB,CAAC,MAAM,GAAG,mBAAmB,CAAA;IAC/C,CAAC;SAAM,CAAC;QACN,gBAAgB,CAAC,MAAM,GAAG,kBAAkB,CAAA;IAC9C,CAAC;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,oBAAkD,EAClD,OAAmB,EACnB,oBAA0C;IAE1C,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,uBAAuB,CAAC,oBAAoB,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAA;AAC3F,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,mBAAiD,EACjD,OAAmB,EACnB,oBAA0C;IAE1C,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,uBAAuB,CAAC,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;AAC5F,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAoB,EACpB,YAAqB,EACrB,WAAoB,EACpB,cAAqC,EACrC,aAAsB,EACtB,cAAoC,EACpC,OAAkC;IAElC,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE;QAC1B,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QAC3D,OAAO,EAAE,YAAY;QACrB,WAAW;QACX,cAAc;QACd,aAAa;QACb,cAAc,EAAE,cAAc,KAAK,OAAO;QAC1C,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,yBAAyB,CAChC,eAA6C,EAC7C,WAAwB,EACxB,WAAwB,EACxB,gBAAkC,EAClC,gBAAkC,EAClC,0BAA6C,EAC7C,gBAAmC;IAEnC,MAAM,iBAAiB,GAAsB,EAAE,CAAA;IAC/C,IAAI,eAAe,EAAE,CAAC;QACpB,8BAA8B,CAAC,iBAAiB,EAAE,SAAS,EAAE,CAAC,eAAe,CAAC,CAAC,CAAA;IACjF,CAAC;IACD,8BAA8B,CAAC,iBAAiB,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAChF,8BAA8B,CAAC,iBAAiB,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAChF,8BAA8B,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACjF,8BAA8B,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACjF,8BAA8B,CAC5B,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE,CAC/D,CAAA;IACD,8BAA8B,CAC5B,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAC3C,CAAA;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,8BAA8B,CACrC,iBAA6C,EAC7C,GAA4B,EAC5B,QAIG;IAEH,MAAM,KAAK,GAAuB,EAAE,CAAA;IACpC,MAAM,IAAI,GAAuB,EAAE,CAAA;IACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnD,GAAG,QAAQ,CAAC,eAAe;QAC3B,GAAG,QAAQ,CAAC,cAAc;QAC1B,GAAG,QAAQ,CAAC,mBAAmB;KAChC,CAAC,CAAA;IAEF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,IAAI,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CACR,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;oBACzB,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE;oBACrB,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE;iBAC5B,CAAC,CAAC,CACJ,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CACP,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE;oBACzB,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE;oBACrB,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE;iBAC5B,CAAC,CAAC,CACJ,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAM;IACR,CAAC;IACD,MAAM,QAAQ,GAA+C,EAAE,CAAA;IAC/D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;IACxB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;IACtB,CAAC;IACD,iBAAiB,CAAC,GAAG,CAAC,GAAG,QAAsD,CAAA;AACjF,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,sBAAsB,CAC7B,eAA6C,EAC7C,WAAwB,EACxB,WAAwB,EACxB,gBAAkC,EAClC,gBAAkC,EAClC,0BAA6C;IAE7C,OAAO,CACL,eAAe,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACtE,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAC1E,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAC7F,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACjC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAC7D;QACD,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAC7F,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACjC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAC7D;QACD,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACtE,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAC1E,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACtE,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAC1E,0BAA0B,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACjF,0BAA0B,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACrF,KAAK,CACN,CAAA;AACH,CAAC"}