@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,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resourceArnsOverlap = resourceArnsOverlap;
4
+ exports.expandShortArn = expandShortArn;
5
+ /**
6
+ * Determines if two AWS ARN patterns have any overlap in the resources they could match.
7
+ * Handles wildcards (*) and single-character patterns (?) in both ARN strings.
8
+ *
9
+ * @param arn1 First ARN pattern to compare
10
+ * @param arn2 Second ARN pattern to compare
11
+ * @returns true if the patterns could match some of the same resources, false if they are completely disjoint
12
+ */
13
+ function resourceArnsOverlap(arn1, arn2) {
14
+ // Fast-path
15
+ if (arn1 === arn2)
16
+ return true;
17
+ if (arn1 === '*' || arn2 === '*')
18
+ return true;
19
+ // Short ARN expansion: ARNs with fewer than 6 colon-separated segments
20
+ // have missing trailing segments treated as implicit wildcards.
21
+ const expanded1 = expandShortArn(arn1);
22
+ const expanded2 = expandShortArn(arn2);
23
+ const A = [...expanded1];
24
+ const B = [...expanded2];
25
+ const n = A.length;
26
+ const m = B.length;
27
+ // BFS over states (i, j) meaning:
28
+ // we've consumed up to i in A and up to j in B
29
+ const visited = new Set();
30
+ const queue = [[0, 0]];
31
+ const key = (i, j) => `${i},${j}`;
32
+ while (queue.length > 0) {
33
+ const [i, j] = queue.shift();
34
+ const k = key(i, j);
35
+ if (visited.has(k))
36
+ continue;
37
+ visited.add(k);
38
+ // Accept if both ended
39
+ if (i === n && j === m)
40
+ return true;
41
+ const aTok = tokAt(A, i);
42
+ const bTok = tokAt(B, j);
43
+ // Epsilon transitions: '*' can match empty
44
+ if (aTok === '*')
45
+ queue.push([i + 1, j]);
46
+ if (bTok === '*')
47
+ queue.push([i, j + 1]);
48
+ // Consume-one-character transitions:
49
+ // if both can consume the same next character, advance appropriately
50
+ if (canConsumeSameChar(aTok, bTok)) {
51
+ const nextIs = nextIdxAfterOneChar(A, i);
52
+ const nextJs = nextIdxAfterOneChar(B, j);
53
+ for (const ni of nextIs) {
54
+ for (const nj of nextJs) {
55
+ queue.push([ni, nj]);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ return false;
61
+ }
62
+ function tokAt(p, idx) {
63
+ return idx < p.length ? p[idx] : null; // null = end
64
+ }
65
+ // Whether both patterns can consume at least one *same* next character
66
+ function canConsumeSameChar(a, b) {
67
+ if (a === null || b === null)
68
+ return false;
69
+ const aAny = a === '*' || a === '?';
70
+ const bAny = b === '*' || b === '?';
71
+ // both literals
72
+ if (!aAny && !bAny)
73
+ return a === b;
74
+ // at least one side can match any char
75
+ return true;
76
+ }
77
+ // Next indices after consuming exactly one character from pattern p at idx
78
+ function nextIdxAfterOneChar(p, idx) {
79
+ const t = tokAt(p, idx);
80
+ if (t === null)
81
+ return [];
82
+ if (t === '*')
83
+ return [idx]; // '*' stays and can keep consuming
84
+ return [idx + 1]; // literal or '?' consumes one and advances
85
+ }
86
+ /**
87
+ * Expands a short ARN (fewer than 6 colon-separated segments) by padding
88
+ * missing trailing segments with `*`. Non-ARN strings and full ARNs are
89
+ * returned unchanged.
90
+ *
91
+ * @param arn the ARN string to expand
92
+ * @returns the expanded ARN string with missing segments filled with `*`
93
+ */
94
+ function expandShortArn(arn) {
95
+ if (!arn.startsWith('arn:')) {
96
+ return arn;
97
+ }
98
+ const segments = arn.split(':');
99
+ if (segments.length >= 6) {
100
+ return arn;
101
+ }
102
+ while (segments.length < 6) {
103
+ segments.push('*');
104
+ }
105
+ return segments.join(':');
106
+ }
107
+ //# sourceMappingURL=resourceStrings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceStrings.js","sourceRoot":"","sources":["../../../src/util/resourceStrings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { type Resource } from '@actsecurity/iam-policy';
2
+ import { type AwsRequest } from './request/request.js';
3
+ export interface StringReplaceOptions {
4
+ replaceWildcards: boolean;
5
+ convertToRegex: boolean;
6
+ }
7
+ /**
8
+ * This will convert a string to a regex that can be used to match against a string.
9
+ * This will replace any variables in the string with the value of the variable in the request context.
10
+ *
11
+ * @param value the string to convert to a regex
12
+ * @param requestContext the request context to get the variable values from
13
+ * @returns a regex that can be used to match against a string
14
+ */
15
+ export declare function convertIamString(value: string, request: AwsRequest, replaceOptions: {
16
+ replaceWildcards?: boolean;
17
+ convertToRegex: false;
18
+ }): string;
19
+ export declare function convertIamString(value: string, request: AwsRequest, replaceOptions?: Partial<StringReplaceOptions>): {
20
+ pattern: RegExp;
21
+ errors?: string[];
22
+ };
23
+ export interface ArnParts {
24
+ partition: string | undefined;
25
+ service: string | undefined;
26
+ region: string | undefined;
27
+ accountId: string | undefined;
28
+ resource: string | undefined;
29
+ }
30
+ /**
31
+ * Split an ARN into its parts
32
+ *
33
+ * @param arn the arn to split
34
+ * @returns the parts of the ARN
35
+ */
36
+ export declare function splitArnParts(arn: string): ArnParts;
37
+ /**
38
+ * Get the product/id segments of the resource portion of an ARN.
39
+ * The first segment is the product segment and the second segment is the resource id segment.
40
+ * This could be split by a colon or a slash, so it checks for both. It also checks for S3 buckets/objects.
41
+ *
42
+ * @param resource The resource to get the resource segments. Must be an ARN resource.
43
+ * @returns a tuple with the first segment being the product segment (including the separator) and the second segment being the resource id.
44
+ */
45
+ export declare function getResourceSegments(resource: Resource): [string, string];
46
+ /**
47
+ * Checks if a value is defined and not null and narrows the type to the defined type
48
+ *
49
+ * @param value the value to check if it is defined
50
+ * @returns if the value is defined and not null
51
+ */
52
+ export declare function isDefined<T>(value: T | undefined): value is T;
53
+ /**
54
+ * Checks if a value is not defined or null
55
+ *
56
+ * @param value the value to check if it is not defined
57
+ * @returns if the value is not defined or null
58
+ */
59
+ export declare function isNotDefined<T>(value: T | undefined): value is undefined;
60
+ /**
61
+ * Checks if an action is a wildcard only action
62
+ *
63
+ * @param service the service the action belongs to
64
+ * @param action the action to check if it is a wildcard only action
65
+ * @returns if the action is a wildcard only action
66
+ * @throws an error if the service or action does not exist
67
+ */
68
+ export declare function isWildcardOnlyAction(service: string, action: string): Promise<boolean>;
69
+ /**
70
+ * Lowercase all strings in an array
71
+ *
72
+ * @param strings the strings to lowercase
73
+ * @returns the lowercased strings
74
+ */
75
+ export declare function lowerCaseAll(strings: string[]): string[];
76
+ /**
77
+ * Gets the IAM variables from a string
78
+ *
79
+ * @param value the string to get the variables from
80
+ * @returns the variables in the string, if any
81
+ */
82
+ export declare function getVariablesFromString(value: string): string[];
83
+ /**
84
+ * Checks to see if an ARN is an S3 bucket or object ARN
85
+ *
86
+ * @param arn the ARN to check
87
+ * @returns whether the ARN is an S3 bucket or object ARN
88
+ */
89
+ export declare function isS3BucketOrObjectArn(arn: string): boolean;
90
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAItD,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,OAAO,CAAA;IACzB,cAAc,EAAE,OAAO,CAAA;CACxB;AAOD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,KAAK,CAAA;CAAE,GACpE,MAAM,CAAA;AACT,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EACnB,cAAc,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAC7C;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAyPzC,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAG7B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAenD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BxE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,CAAC,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,SAAS,CAExE;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5F;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAY9D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAa1D"}
@@ -0,0 +1,350 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertIamString = convertIamString;
4
+ exports.splitArnParts = splitArnParts;
5
+ exports.getResourceSegments = getResourceSegments;
6
+ exports.isDefined = isDefined;
7
+ exports.isNotDefined = isNotDefined;
8
+ exports.isWildcardOnlyAction = isWildcardOnlyAction;
9
+ exports.lowerCaseAll = lowerCaseAll;
10
+ exports.getVariablesFromString = getVariablesFromString;
11
+ exports.isS3BucketOrObjectArn = isS3BucketOrObjectArn;
12
+ const iam_data_1 = require("@actsecurity/iam-data");
13
+ const matchesNothing = new RegExp('a^');
14
+ const defaultStringReplaceOptions = {
15
+ replaceWildcards: true,
16
+ convertToRegex: true
17
+ };
18
+ function convertIamString(value, request, replaceOptions) {
19
+ const options = { ...defaultStringReplaceOptions, ...replaceOptions };
20
+ const errors = [];
21
+ const newValue = replaceIamStringTokens(value, request, options, errors);
22
+ if (!options.convertToRegex) {
23
+ return newValue;
24
+ }
25
+ if (errors.length > 0) {
26
+ return { pattern: matchesNothing, errors };
27
+ }
28
+ return { pattern: new RegExp('^' + newValue + '$') };
29
+ }
30
+ /**
31
+ * Replace IAM wildcard and variable tokens while escaping literal spans for regex conversion.
32
+ *
33
+ * @param value the IAM string value to convert
34
+ * @param request the request context used to resolve policy variables
35
+ * @param options controls wildcard replacement and regex conversion behavior
36
+ * @param errors collects variable resolution errors that make the value unable to match
37
+ * @returns the converted IAM string or regex source fragment
38
+ */
39
+ function replaceIamStringTokens(value, request, options, errors) {
40
+ let newValue = '';
41
+ let literalStart = 0;
42
+ let index = 0;
43
+ while (index < value.length) {
44
+ const character = value[index];
45
+ if (character == '*' || character == '?') {
46
+ newValue += replaceLiteralSpan(value.slice(literalStart, index), options);
47
+ newValue += replaceIamStringToken(character, request, options, errors);
48
+ index++;
49
+ literalStart = index;
50
+ }
51
+ else if (character == '$' && value[index + 1] == '{') {
52
+ const variableEndIndex = value.indexOf('}', index + 2);
53
+ if (variableEndIndex == -1) {
54
+ index++;
55
+ }
56
+ else {
57
+ newValue += replaceLiteralSpan(value.slice(literalStart, index), options);
58
+ newValue += replaceIamStringToken(value.slice(index, variableEndIndex + 1), request, options, errors);
59
+ index = variableEndIndex + 1;
60
+ literalStart = index;
61
+ }
62
+ }
63
+ else {
64
+ index++;
65
+ }
66
+ }
67
+ newValue += replaceLiteralSpan(value.slice(literalStart), options);
68
+ return newValue;
69
+ }
70
+ /**
71
+ * Escape a literal IAM string span when producing a regular expression.
72
+ *
73
+ * @param literal the literal IAM string span outside wildcard and variable tokens
74
+ * @param options controls whether regex conversion is enabled
75
+ * @returns the literal span escaped for regex conversion, or unchanged for raw string conversion
76
+ */
77
+ function replaceLiteralSpan(literal, options) {
78
+ return options.convertToRegex ? escapeRegexCharacters(literal) : literal;
79
+ }
80
+ /**
81
+ * Replace a single IAM string token with its regex or raw string representation.
82
+ *
83
+ * @param match the IAM token to replace
84
+ * @param request the request context used to resolve policy variables
85
+ * @param options controls wildcard replacement and regex conversion behavior
86
+ * @param errors collects variable resolution errors that make the value unable to match
87
+ * @returns the token replacement value
88
+ */
89
+ function replaceIamStringToken(match, request, options, errors) {
90
+ if (match == '?') {
91
+ return replacementValue(match, '\\?', '.', options);
92
+ }
93
+ else if (match == '*') {
94
+ return replacementValue(match, '\\*', '.*?', options);
95
+ }
96
+ else if (match == '${*}') {
97
+ return replacementValue(match, '\\$\\{\\*\\}', '\\*', options);
98
+ }
99
+ else if (match == '${?}') {
100
+ return replacementValue(match, '\\$\\{\\?\\}', '\\?', options);
101
+ }
102
+ else if (match == '${$}') {
103
+ return replacementValue(match, '\\$\\{\\$\\}', '\\$', options);
104
+ }
105
+ //This means it's a variable
106
+ const inTheBrackets = match.slice(2, -1);
107
+ let defaultValue = undefined;
108
+ const defaultParts = inTheBrackets.split(', ');
109
+ if (defaultParts.length == 2) {
110
+ const segmentAfterComma = defaultParts.at(1);
111
+ if (segmentAfterComma?.startsWith("'") && segmentAfterComma.endsWith("'")) {
112
+ defaultValue = segmentAfterComma.slice(1, -1);
113
+ }
114
+ }
115
+ const variableName = defaultParts.at(0).trim();
116
+ const { value: requestValue, error: requestValueError } = getContextSingleValue(request, variableName);
117
+ if (requestValue) {
118
+ //TODO: Maybe escape the * in the resolved value to ${*}
119
+ return options.convertToRegex ? escapeRegexCharacters(requestValue) : requestValue;
120
+ }
121
+ else if (defaultValue) {
122
+ /*
123
+ TODO: What happens in a request if a multi value context key is used in a string and there
124
+ is a default value? Will it use the default value or will it fail the condition test?
125
+ */
126
+ //TODO: Maybe escape the * in the resolved value to ${*}
127
+ return options.convertToRegex ? escapeRegexCharacters(defaultValue) : defaultValue;
128
+ }
129
+ else {
130
+ if (requestValueError == 'missing') {
131
+ errors.push(`{${variableName}} not found in request context, and no default value provided. This will never match`);
132
+ }
133
+ else if (requestValueError == 'multivalue') {
134
+ errors.push(`{${variableName}} is a multi value context key, and cannot be used for replacement. This will never match`);
135
+ }
136
+ /*
137
+ https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-no-value
138
+ */
139
+ return match;
140
+ }
141
+ }
142
+ /**
143
+ * Replace regex characters in a string with their escaped versions
144
+ *
145
+ * @param str the string to escape regex characters in
146
+ * @returns the string with regex characters escaped
147
+ */
148
+ function escapeRegexCharacters(str) {
149
+ let escaped = '';
150
+ for (const character of str) {
151
+ if (isRegexMetacharacter(character)) {
152
+ escaped += '\\';
153
+ }
154
+ escaped += character;
155
+ }
156
+ return escaped;
157
+ }
158
+ /**
159
+ * Check if a character has special meaning in a regular expression pattern.
160
+ *
161
+ * @param character the character to check
162
+ * @returns whether the character must be escaped for literal regex matching
163
+ */
164
+ function isRegexMetacharacter(character) {
165
+ return (character == '.' ||
166
+ character == '*' ||
167
+ character == '+' ||
168
+ character == '?' ||
169
+ character == '^' ||
170
+ character == '$' ||
171
+ character == '{' ||
172
+ character == '}' ||
173
+ character == '(' ||
174
+ character == ')' ||
175
+ character == '|' ||
176
+ character == '[' ||
177
+ character == ']' ||
178
+ character == '\\');
179
+ }
180
+ /**
181
+ * Get the string value of a context key only if it is a single value key
182
+ *
183
+ * @param requestContext the request context to get the value from
184
+ * @param contextKeyName the name of the context key to get the value of
185
+ * @returns the value of the context key if it is a single value key, undefined otherwise
186
+ */
187
+ function getContextSingleValue(request, contextKeyName) {
188
+ if (!request.contextKeyExists(contextKeyName)) {
189
+ return {
190
+ error: 'missing'
191
+ };
192
+ }
193
+ const keyValue = request.getContextKeyValue(contextKeyName);
194
+ if (keyValue.isStringValue()) {
195
+ return { value: keyValue.value };
196
+ }
197
+ return { error: 'multivalue' };
198
+ }
199
+ /**
200
+ * Get the replacement value for a string
201
+ *
202
+ * @param original the original IAM token text
203
+ * @param escaped the regex-escaped literal representation of the token
204
+ * @param regex the regex wildcard representation of the token
205
+ * @param options controls wildcard replacement and regex conversion behavior
206
+ * @returns the token replacement value
207
+ */
208
+ function replacementValue(original, escaped, regex, options) {
209
+ if (!options.convertToRegex) {
210
+ return original;
211
+ }
212
+ if (options.replaceWildcards) {
213
+ return regex;
214
+ }
215
+ return escaped;
216
+ }
217
+ /**
218
+ * Split an ARN into its parts
219
+ *
220
+ * @param arn the arn to split
221
+ * @returns the parts of the ARN
222
+ */
223
+ function splitArnParts(arn) {
224
+ const parts = arn.split(':');
225
+ const partition = parts.at(1);
226
+ const service = parts.at(2);
227
+ const region = parts.at(3);
228
+ const accountId = parts.at(4);
229
+ const resource = parts.slice(5).join(':');
230
+ return {
231
+ partition,
232
+ service,
233
+ region,
234
+ accountId,
235
+ resource
236
+ };
237
+ }
238
+ /**
239
+ * Get the product/id segments of the resource portion of an ARN.
240
+ * The first segment is the product segment and the second segment is the resource id segment.
241
+ * This could be split by a colon or a slash, so it checks for both. It also checks for S3 buckets/objects.
242
+ *
243
+ * @param resource The resource to get the resource segments. Must be an ARN resource.
244
+ * @returns a tuple with the first segment being the product segment (including the separator) and the second segment being the resource id.
245
+ */
246
+ function getResourceSegments(resource) {
247
+ if (!resource.isArnResource()) {
248
+ throw new Error(`Resource ${resource.value()} is not an ARN resource`);
249
+ }
250
+ const resourceString = resource.resource();
251
+ // This is terrible, and I hate it
252
+ if (resource.service() === 's3' && resource.account() === '' && resource.region() === '') {
253
+ return ['', resourceString];
254
+ }
255
+ const slashIndex = resourceString.indexOf('/');
256
+ const colonIndex = resourceString.indexOf(':');
257
+ let splitIndex = slashIndex;
258
+ if (slashIndex != -1 && colonIndex != -1) {
259
+ splitIndex = Math.min(slashIndex, colonIndex) + 1;
260
+ }
261
+ else if (colonIndex == -1) {
262
+ splitIndex = slashIndex + 1;
263
+ }
264
+ else if (slashIndex == -1) {
265
+ splitIndex = colonIndex + 1;
266
+ }
267
+ else {
268
+ throw new Error(`Unable to split resource ${resource}`);
269
+ }
270
+ return [resourceString.slice(0, splitIndex), resourceString.slice(splitIndex)];
271
+ }
272
+ /**
273
+ * Checks if a value is defined and not null and narrows the type to the defined type
274
+ *
275
+ * @param value the value to check if it is defined
276
+ * @returns if the value is defined and not null
277
+ */
278
+ function isDefined(value) {
279
+ return value !== undefined && value !== null;
280
+ }
281
+ /**
282
+ * Checks if a value is not defined or null
283
+ *
284
+ * @param value the value to check if it is not defined
285
+ * @returns if the value is not defined or null
286
+ */
287
+ function isNotDefined(value) {
288
+ return !isDefined(value);
289
+ }
290
+ /**
291
+ * Checks if an action is a wildcard only action
292
+ *
293
+ * @param service the service the action belongs to
294
+ * @param action the action to check if it is a wildcard only action
295
+ * @returns if the action is a wildcard only action
296
+ * @throws an error if the service or action does not exist
297
+ */
298
+ async function isWildcardOnlyAction(service, action) {
299
+ const actionDetails = await (0, iam_data_1.iamActionDetails)(service, action);
300
+ return actionDetails.resourceTypes.length === 0;
301
+ }
302
+ /**
303
+ * Lowercase all strings in an array
304
+ *
305
+ * @param strings the strings to lowercase
306
+ * @returns the lowercased strings
307
+ */
308
+ function lowerCaseAll(strings) {
309
+ return strings.map((s) => s.toLowerCase());
310
+ }
311
+ /**
312
+ * Gets the IAM variables from a string
313
+ *
314
+ * @param value the string to get the variables from
315
+ * @returns the variables in the string, if any
316
+ */
317
+ function getVariablesFromString(value) {
318
+ const matches = value.match(/\$\{.*?\}/g);
319
+ if (matches) {
320
+ return matches.map((m) => {
321
+ const inBrackets = m.slice(2, -1);
322
+ if (inBrackets.includes(',')) {
323
+ return inBrackets.split(',')[0].trim();
324
+ }
325
+ return inBrackets;
326
+ });
327
+ }
328
+ return [];
329
+ }
330
+ /**
331
+ * Checks to see if an ARN is an S3 bucket or object ARN
332
+ *
333
+ * @param arn the ARN to check
334
+ * @returns whether the ARN is an S3 bucket or object ARN
335
+ */
336
+ function isS3BucketOrObjectArn(arn) {
337
+ const arnParts = splitArnParts(arn);
338
+ if (arnParts.service !== 's3') {
339
+ return false;
340
+ }
341
+ if (!arnParts.resource) {
342
+ return false;
343
+ }
344
+ // S3 bucket or object ARNs have no account ID or region
345
+ if (arnParts.accountId || arnParts.region) {
346
+ return false;
347
+ }
348
+ return true;
349
+ }
350
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { type Condition, type Statement } from '@actsecurity/iam-policy';
2
+ import { type ConditionMatchResult } from './condition/condition.js';
3
+ import { type StatementExplain } from './explain/statementExplain.js';
4
+ import { type PrincipalMatchResult } from './principal/principal.js';
5
+ /**
6
+ * The result of analyzing a statement against a request.
7
+ *
8
+ */
9
+ export interface StatementAnalysis {
10
+ /**
11
+ * The identifier of the policy that contains the statement.
12
+ */
13
+ policyId: string;
14
+ /**
15
+ * The statement being analyzed.
16
+ */
17
+ statement: Statement;
18
+ /**
19
+ * Whether the Resource or NotResource – if any – matches the request.
20
+ */
21
+ resourceMatch: boolean;
22
+ /**
23
+ * Whether the Action or NotAction matches the request.
24
+ */
25
+ actionMatch: boolean;
26
+ /**
27
+ * Whether the Principal or NotPrincipal – if any – matches the request.
28
+ */
29
+ principalMatch: PrincipalMatchResult;
30
+ /**
31
+ * Whether the Conditions matches the request.
32
+ */
33
+ conditionMatch: ConditionMatchResult;
34
+ /**
35
+ * The explain of evaluating the statement.
36
+ */
37
+ explain: StatementExplain;
38
+ /**
39
+ * Any conditions that were ignored during discovery mode.
40
+ */
41
+ ignoredConditions?: Condition[];
42
+ /**
43
+ * Role Session Name ignored during discovery mode.
44
+ */
45
+ ignoredRoleSessionName?: boolean;
46
+ }
47
+ /**
48
+ * Checks if a statement is an identity statement that allows the request.
49
+ *
50
+ * @param statement The statement to check.
51
+ * @returns Whether the statement is an identity statement that allows the request.
52
+ */
53
+ export declare function identityStatementAllows(statement: StatementAnalysis): boolean;
54
+ export declare function identityStatementExplicitDeny(statement: StatementAnalysis): boolean;
55
+ export declare function statementMatches(analysis: Pick<StatementAnalysis, 'actionMatch' | 'conditionMatch' | 'principalMatch' | 'resourceMatch'>): boolean;
56
+ /**
57
+ * Determines whether ignored conditions are decisive for a statement and should be reported.
58
+ *
59
+ * @param analysis the analysis of the statement
60
+ * @returns true if the ignored conditions are decisive, false otherwise
61
+ */
62
+ export declare function reportIgnoredConditions(analysis: Pick<StatementAnalysis, 'actionMatch' | 'principalMatch' | 'resourceMatch'>): boolean;
63
+ //# sourceMappingURL=StatementAnalysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatementAnalysis.d.ts","sourceRoot":"","sources":["../../src/StatementAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAEpE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAA;IAEtB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IAEpB;;OAEG;IACH,cAAc,EAAE,oBAAoB,CAAA;IAEpC;;OAEG;IACH,cAAc,EAAE,oBAAoB,CAAA;IAEpC;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAA;IAEzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAA;IAE/B;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAU7E;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAUnF;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,IAAI,CACZ,iBAAiB,EACjB,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,CACtE,GACA,OAAO,CAST;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,gBAAgB,GAAG,eAAe,CAAC,GACpF,OAAO,CAQT"}