@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,585 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requestMatchesStatementResources = requestMatchesStatementResources;
4
+ exports.requestMatchesResources = requestMatchesResources;
5
+ exports.requestMatchesNotResources = requestMatchesNotResources;
6
+ exports.resourcePatternOverlap = resourcePatternOverlap;
7
+ const statementExplain_js_1 = require("../explain/statementExplain.js");
8
+ const util_js_1 = require("../util.js");
9
+ /**
10
+ * Map of resource matching settings per policy type. Controls how short ARNs are treated:
11
+ * - `'expand'` — treat missing trailing segments as `*`, then match normally
12
+ * - `'reject'` — return an error (ARN is not valid for this policy type)
13
+ * - `'noMatch'` — silently does not match
14
+ */
15
+ const policyTypeResourceSettings = {
16
+ identity: { shortArnWithoutWildcard: 'expand', shortArnWithWildcard: 'expand' },
17
+ session: { shortArnWithoutWildcard: 'expand', shortArnWithWildcard: 'expand' },
18
+ pb: { shortArnWithoutWildcard: 'expand', shortArnWithWildcard: 'expand' },
19
+ resource: { shortArnWithoutWildcard: 'noMatch', shortArnWithWildcard: 'expand' },
20
+ vpce: { shortArnWithoutWildcard: 'noMatch', shortArnWithWildcard: 'expand' },
21
+ scp: { shortArnWithoutWildcard: 'reject', shortArnWithWildcard: 'expand' },
22
+ rcp: { shortArnWithoutWildcard: 'reject', shortArnWithWildcard: 'reject' }
23
+ };
24
+ /**
25
+ * Create a lightweight Resource object from an expanded ARN string.
26
+ * Used when a short ARN is padded with `*` segments to form a full 6-segment ARN.
27
+ *
28
+ * @param expandedValue the full 6-segment ARN string
29
+ * @returns a Resource object that can be used in the existing matching logic
30
+ */
31
+ function createExpandedResource(expandedValue) {
32
+ const parts = expandedValue.split(':');
33
+ const resource = {
34
+ value: () => expandedValue,
35
+ isAllResources: () => false,
36
+ isArnResource: () => true,
37
+ path: () => '',
38
+ partition: () => parts[1],
39
+ service: () => parts[2],
40
+ region: () => parts[3],
41
+ account: () => parts[4],
42
+ resource: () => parts.slice(5).join(':')
43
+ };
44
+ return resource;
45
+ }
46
+ /**
47
+ * Convert a resource segment to a regular expression. This is without variables.
48
+ *
49
+ * @param segment the segment to convert to a regular expression
50
+ * @returns a regular that replaces any wildcards in the segment with the appropriate regular expression.
51
+ */
52
+ function convertResourceSegmentToRegex(segment) {
53
+ if (segment.indexOf(':') != -1) {
54
+ throw new Error('Segment should not contain a colon');
55
+ }
56
+ const pattern = '^' + segment.replace(/\?/g, '.').replace(/\*/g, '.*?') + '$';
57
+ return new RegExp(pattern, 'i');
58
+ }
59
+ /**
60
+ * Replace regex characters in a resource pattern with escaped versions.
61
+ *
62
+ * @param pattern the resource pattern to escape for use inside a regular expression
63
+ * @returns the pattern with regex metacharacters escaped
64
+ */
65
+ function escapeResourcePatternRegexCharacters(pattern) {
66
+ return pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
67
+ }
68
+ /**
69
+ * Convert a request resource pattern to a regex string for overlap checks.
70
+ * Request resources support asterisks as wildcards, but question marks are literals.
71
+ *
72
+ * @param requestString the request resource pattern to convert
73
+ * @returns a regex string that matches the request resource pattern
74
+ */
75
+ function requestResourcePatternToRegexString(requestString) {
76
+ return '^' + escapeResourcePatternRegexCharacters(requestString).replace(/\\\*/g, '.*?') + '$';
77
+ }
78
+ /**
79
+ * Convert a policy resource pattern to a regex string for overlap checks.
80
+ * Policy resources support asterisks and question marks as IAM wildcards.
81
+ *
82
+ * @param policyString the policy resource pattern to convert
83
+ * @returns a regex string that matches the policy resource pattern
84
+ */
85
+ function policyResourcePatternToRegexString(policyString) {
86
+ return ('^' +
87
+ escapeResourcePatternRegexCharacters(policyString)
88
+ .replace(/\\\?/g, '.')
89
+ .replace(/\\\*/g, '.*?') +
90
+ '$');
91
+ }
92
+ /**
93
+ * Check if a request matches the Resource or NotResource elements of a statement.
94
+ *
95
+ * @param request the request to check
96
+ * @param statement the statement to check against
97
+ * @param policyType the type of policy being evaluated
98
+ * @returns true if the request matches the resources in the statement, false otherwise
99
+ */
100
+ function requestMatchesStatementResources(request, statement, policyType) {
101
+ if (statement.isResourceStatement()) {
102
+ const { matches, explains } = requestMatchesResources(request, statement.resources(), 'Resource', statement.effect(), policyType);
103
+ if (!statement.resourceIsArray()) {
104
+ return { matches, details: { resources: explains[0] } };
105
+ }
106
+ return { matches, details: { resources: explains } };
107
+ }
108
+ else if (statement.isNotResourceStatement()) {
109
+ const { matches, explains } = requestMatchesNotResources(request, statement.notResources(), 'NotResource', statement.effect(), policyType);
110
+ if (!statement.notResourceIsArray()) {
111
+ return { matches, details: { notResources: explains[0] } };
112
+ }
113
+ return { matches, details: { notResources: explains } };
114
+ }
115
+ return { matches: true, details: {} };
116
+ }
117
+ /**
118
+ * Check if a request matches a set of resources.
119
+ *
120
+ * @param request the request to check
121
+ * @param policyResources the resources to check against
122
+ * @param resourceType whether this is a Resource or NotResource element
123
+ * @param effect the effect of the statement
124
+ * @param policyType the type of policy being evaluated
125
+ * @returns true if the request matches any of the resources, false otherwise
126
+ */
127
+ function requestMatchesResources(request, policyResources, resourceType, effect, policyType) {
128
+ const explains = policyResources.map((policyResource) => singleResourceMatchesRequest(request, policyResource, resourceType, effect, policyType));
129
+ const matches = explains.some((explain) => explain.matches);
130
+ return { matches, explains };
131
+ }
132
+ /**
133
+ * Check if a request matches a NotResource element in a policy.
134
+ *
135
+ * @param request the request to check
136
+ * @param policyResources the resources to check against
137
+ * @param resourceType whether this is a Resource or NotResource element
138
+ * @param effect the effect of the statement
139
+ * @param policyType the type of policy being evaluated
140
+ * @returns true if the request does not match any of the resources, false otherwise
141
+ */
142
+ function requestMatchesNotResources(request, policyResources, resourceType, effect, policyType) {
143
+ const explains = policyResources.map((policyResource) => {
144
+ const explain = singleResourceMatchesRequest(request, policyResource, resourceType, effect, policyType);
145
+ if (shouldInvertNotResourceExplain(explain)) {
146
+ explain.matches = !explain.matches;
147
+ delete explain.errors;
148
+ delete explain.mismatchReason;
149
+ }
150
+ return explain;
151
+ });
152
+ const matches = !explains.some((explain) => !explain.matches);
153
+ return { matches, explains };
154
+ }
155
+ /**
156
+ * Determine whether a Resource match explain can be inverted for NotResource matching.
157
+ *
158
+ * The resource mismatch reason registry owns the decision about which mismatches
159
+ * definitively prove the request is outside the NotResource set and can be inverted.
160
+ *
161
+ * @param explain the Resource matching explain to inspect
162
+ * @returns true when the explain should be inverted for NotResource semantics
163
+ */
164
+ function shouldInvertNotResourceExplain(explain) {
165
+ if (explain.matches) {
166
+ return true;
167
+ }
168
+ if (!explain.mismatchReason) {
169
+ throw new Error(`Non-matching resource explain is missing mismatchReason: ${explain.resource}`);
170
+ }
171
+ return statementExplain_js_1.resourceMismatchReasons[explain.mismatchReason].invertible;
172
+ }
173
+ /*
174
+ Specifications for **request resource** wildcards:
175
+ - Asterisks (*) can be used to match any sequence of characters (including an empty sequence)
176
+ - Asterisks can appear in any segment of the ARN (partition, service, region, account, resource)
177
+ - Asterisks are not greedy, and can be followed or preceded by other characters in the same segment
178
+ - Existing rules of matching wildcard segments in ARNs still apply
179
+ - Question marks (?) are not supported in the request resource ARN
180
+
181
+ If the string in the policy is the same as the resolved string after variable substitution, it is a match
182
+
183
+ For an Allow/Resource Statement:
184
+ - If the resolved string matches the request resource, it is a match
185
+ - If the resolved string is a superset of the request resource, it is a match
186
+ - If the resolved string is a subset of the request resource, it is a match
187
+ - If there is no overlap at all between the resolved string and the request resource, it is not a match
188
+
189
+ For a Deny/Resource Statement:
190
+ - If the resolved string matches the request resource, it is a match
191
+ - If the resolved string is a superset of the request resource, it is a match
192
+ - If the resolved string is a subset of the request resource, it is not a match
193
+ - If there is no overlap at all between the resolved string and the request resource, it is not a match
194
+
195
+ For an Allow/NotResource Statement:
196
+ - If the resolved string matches the request resource, it is not a match
197
+ - If the resolved string is a superset of the request resource, it is not a match
198
+ - If the resolved string is a subset of the request resource, it is a match
199
+ - If there is no overlap at all between the resolved string and the request resource, it is a match
200
+
201
+ For a Deny/NotResource Statement:
202
+ - If the resolved string matches the request resource, it is not a match
203
+ - If the resolved string is a superset of the request resource, it is not a match
204
+ - If the resolved string is a subset of the request resource, it is not a match
205
+ - If there is no overlap at all between the resolved string and the request resource, it is a match
206
+ */
207
+ /**
208
+ * Check if a single resource matches a request.
209
+ *
210
+ * @param request the request to check against
211
+ * @param policyResource the resource to check against
212
+ * @param resourceType whether this is a Resource or NotResource element
213
+ * @param effect the effect of the statement
214
+ * @param policyType the type of policy being evaluated
215
+ * @returns true if the request matches the resource, false otherwise
216
+ */
217
+ function singleResourceMatchesRequest(request, policyResource, resourceType, effect, policyType) {
218
+ // Policy is all resources
219
+ if (policyResource.isAllResources()) {
220
+ return {
221
+ resource: policyResource.value(),
222
+ matches: true
223
+ };
224
+ }
225
+ // Short ARN handling — fewer than 6 colon-separated segments
226
+ if (policyResource.isArnResource() && policyResource.value().split(':').length < 6) {
227
+ const settings = policyTypeResourceSettings[policyType];
228
+ // For policy types that reject short ARNs without wildcards, only a wildcard
229
+ // in the last segment counts — a wildcard in the middle doesn't make it valid.
230
+ const lastSegment = policyResource.value().split(':').at(-1) ?? '';
231
+ const hasTrailingWildcard = lastSegment.endsWith('*');
232
+ const hasAnyWildcard = policyResource.value().includes('*');
233
+ const hasWildcard = settings.shortArnWithoutWildcard === 'reject' ? hasTrailingWildcard : hasAnyWildcard;
234
+ const behavior = hasWildcard ? settings.shortArnWithWildcard : settings.shortArnWithoutWildcard;
235
+ if (behavior === 'reject') {
236
+ return {
237
+ resource: policyResource.value(),
238
+ matches: false,
239
+ errors: ['Policy resource ARN is not valid for this policy type'],
240
+ mismatchReason: 'invalidPolicyResourceArn'
241
+ };
242
+ }
243
+ if (behavior === 'noMatch') {
244
+ return {
245
+ resource: policyResource.value(),
246
+ matches: false,
247
+ mismatchReason: 'shortArnNoMatch'
248
+ };
249
+ }
250
+ // behavior === 'expand': pad missing segments with '*' and recurse with expanded resource
251
+ const segments = policyResource.value().split(':');
252
+ while (segments.length < 6) {
253
+ segments.push('*');
254
+ }
255
+ const result = singleResourceMatchesRequest(request, createExpandedResource(segments.join(':')), resourceType, effect, policyType);
256
+ // Preserve the original (unexpanded) resource value in the explain
257
+ result.resource = policyResource.value();
258
+ if (!result.matches && result.mismatchReason) {
259
+ result.mismatchReason = 'shortArnExpandedMismatch';
260
+ }
261
+ return result;
262
+ }
263
+ // Request is all resources
264
+ if (request.resource?.isAllResources()) {
265
+ // For wildcard-only actions, only a literal "*" policy resource (handled above) grants access.
266
+ // A specific ARN in the policy does not match a wildcard-only action's "*" request resource.
267
+ if (request.wildcardOnlyAction) {
268
+ return {
269
+ resource: policyResource.value(),
270
+ matches: false,
271
+ mismatchReason: 'wildcardOnlyActionSpecificResource'
272
+ };
273
+ }
274
+ if (effect === 'Allow' && resourceType === 'Resource') {
275
+ return {
276
+ resource: policyResource.value(),
277
+ matches: true
278
+ };
279
+ }
280
+ else if (effect === 'Allow' && resourceType === 'NotResource') {
281
+ return {
282
+ resource: policyResource.value(),
283
+ matches: false, // This gets inverted in the caller
284
+ mismatchReason: 'requestAllResourcesSpecificNotResource'
285
+ };
286
+ }
287
+ else if (effect === 'Deny' && resourceType === 'Resource') {
288
+ // This is a Deny statement that is not all resources, so it's not a match
289
+ return {
290
+ resource: policyResource.value(),
291
+ matches: false,
292
+ mismatchReason: 'requestAllResourcesDenySpecificResource'
293
+ };
294
+ }
295
+ else if (effect === 'Deny' && resourceType === 'NotResource') {
296
+ return {
297
+ resource: policyResource.value(),
298
+ matches: true // This gets inverted in the caller
299
+ };
300
+ }
301
+ throw new Error(`Unknown Resource Type and Effect Combination: ${resourceType} ${effect}`);
302
+ }
303
+ // Request contains wildcards but neither is a full *
304
+ if (request.resource.hasWildcards() && policyResource.isArnResource()) {
305
+ const overlaps = [
306
+ resourcePatternOverlap(policyResource.partition(), request.resource.partition()),
307
+ resourcePatternOverlap(policyResource.service(), request.resource.service()),
308
+ resourcePatternOverlap(policyResource.region(), request.resource.region()),
309
+ resourcePatternOverlap(policyResource.account(), request.resource.account()),
310
+ resourcePatternOverlap(policyResource.resource(), request.resource.resource())
311
+ ];
312
+ if (resourceType === 'Resource' && effect === 'Allow') {
313
+ if (overlaps.every((o) => o !== 'none')) {
314
+ return {
315
+ resource: policyResource.value(),
316
+ matches: true
317
+ };
318
+ }
319
+ }
320
+ else if (resourceType === 'Resource' && effect === 'Deny') {
321
+ if (overlaps.some((o) => o === 'none' || o === 'policy_is_subset')) {
322
+ return {
323
+ resource: policyResource.value(),
324
+ matches: false,
325
+ mismatchReason: 'resourcePatternMismatch'
326
+ };
327
+ }
328
+ }
329
+ else if (resourceType === 'NotResource' && effect === 'Allow') {
330
+ /*
331
+ * For an Allow/NotResource Statement:
332
+ - If the resolved string matches the request resource, it is not a match
333
+ - If the resolved string is a superset of the request resource, it is not a match
334
+ - If the resolved string is a subset of the request resource, it is a match
335
+ - If there is no overlap at all between the resolved string and the request resource, it is a match
336
+ */
337
+ if (overlaps.every((o) => o === 'equal' || o === 'policy_is_superset')) {
338
+ return {
339
+ resource: policyResource.value(),
340
+ // This gets inverted in the caller
341
+ matches: true
342
+ };
343
+ }
344
+ else {
345
+ return {
346
+ resource: policyResource.value(),
347
+ // This gets inverted in the caller
348
+ matches: false,
349
+ mismatchReason: 'resourcePatternMismatch'
350
+ };
351
+ }
352
+ }
353
+ else if (resourceType === 'NotResource' && effect === 'Deny') {
354
+ /*
355
+ For a Deny/NotResource Statement:
356
+ - If the resolved string matches the request resource, it is not a match
357
+ - If the resolved string is a superset of the request resource, it is not a match
358
+ - If the resolved string is a subset of the request resource, it is not a match
359
+ - If there is no overlap at all between the resolved string and the request resource, it is a match
360
+ */
361
+ if (overlaps.some((o) => o === 'none')) {
362
+ return {
363
+ resource: policyResource.value(),
364
+ // This gets inverted in the caller
365
+ matches: false,
366
+ mismatchReason: 'resourcePatternMismatch'
367
+ };
368
+ }
369
+ else {
370
+ return {
371
+ resource: policyResource.value(),
372
+ // This gets inverted in the caller
373
+ matches: true
374
+ };
375
+ }
376
+ }
377
+ else {
378
+ throw new Error(`Unknown Resource Type and Effect Combination: ${resourceType} ${effect}`);
379
+ }
380
+ }
381
+ if (policyResource.isArnResource()) {
382
+ if (!request.resource) {
383
+ return {
384
+ resource: policyResource.value(),
385
+ matches: false,
386
+ errors: ['Request does not have a resource'],
387
+ mismatchReason: 'requestMissingResource'
388
+ };
389
+ }
390
+ const resource = request.resource;
391
+ if (!convertResourceSegmentToRegex(policyResource.partition()).test(resource.partition())) {
392
+ return {
393
+ resource: policyResource.value(),
394
+ matches: false,
395
+ errors: ['Partition does not match'],
396
+ mismatchReason: 'partitionMismatch'
397
+ };
398
+ }
399
+ if (!convertResourceSegmentToRegex(policyResource.service()).test(resource.service())) {
400
+ return {
401
+ resource: policyResource.value(),
402
+ matches: false,
403
+ errors: ['Service does not match'],
404
+ mismatchReason: 'serviceMismatch'
405
+ };
406
+ }
407
+ if (!convertResourceSegmentToRegex(policyResource.region()).test(resource.region())) {
408
+ return {
409
+ resource: policyResource.value(),
410
+ matches: false,
411
+ errors: ['Region does not match'],
412
+ mismatchReason: 'regionMismatch'
413
+ };
414
+ }
415
+ if (!convertResourceSegmentToRegex(policyResource.account()).test(resource.account())) {
416
+ return {
417
+ resource: policyResource.value(),
418
+ matches: false,
419
+ errors: ['Account does not match'],
420
+ mismatchReason: 'accountMismatch'
421
+ };
422
+ }
423
+ //Wildcards and variables are not allowed in the product segment https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html "Incorrect wildcard usage"
424
+ const [policyProduct, policyResourceId] = (0, util_js_1.getResourceSegments)(policyResource);
425
+ if (!resource.resource().startsWith(policyProduct)) {
426
+ return {
427
+ resource: policyResource.value(),
428
+ matches: false,
429
+ errors: ['Product does not match'],
430
+ mismatchReason: 'productMismatch'
431
+ };
432
+ }
433
+ const requestResourceId = resource.resource().slice(policyProduct.length);
434
+ const { pattern, errors } = (0, util_js_1.convertIamString)(policyResourceId, request);
435
+ const resolvedResourceId = (0, util_js_1.convertIamString)(policyResourceId, request, {
436
+ convertToRegex: false,
437
+ replaceWildcards: false
438
+ });
439
+ const resolvedResource = policyResource.value().slice(0, policyResource.value().length - policyResourceId.length) +
440
+ resolvedResourceId;
441
+ const resolvedValue = resolvedResource === policyResource.value() ? undefined : resolvedResource;
442
+ if (!pattern.test(requestResourceId)) {
443
+ const mismatchReason = errors?.length ? 'unresolvablePolicyVariable' : 'resourceIdMismatch';
444
+ return {
445
+ resource: policyResource.value(),
446
+ matches: false,
447
+ errors,
448
+ mismatchReason,
449
+ resolvedValue
450
+ };
451
+ }
452
+ return {
453
+ resource: policyResource.value(),
454
+ matches: true,
455
+ resolvedValue
456
+ };
457
+ }
458
+ else {
459
+ throw new Error('Unknown resource type');
460
+ }
461
+ }
462
+ /**
463
+ * Determines if the policy string is equal to, a subset of, a superset of,
464
+ * or has no overlap with the request string.
465
+ *
466
+ * @param policyString the policy string to use
467
+ * @param requestString the request string to compare to the policy string
468
+ * @returns 'equal' if the strings are equal, 'subset' if the policy string is a subset of the request string, 'superset' if the policy string is a superset of the request string, 'overlap' if the strings have a non-empty intersection but neither contains the other, or 'none' if there is no overlap
469
+ */
470
+ function resourcePatternOverlap(policyString, requestString) {
471
+ if (policyString === requestString) {
472
+ return 'equal';
473
+ }
474
+ const requestPattern = requestResourcePatternToRegexString(requestString);
475
+ if (policyString.match(requestPattern)) {
476
+ return 'policy_is_subset';
477
+ }
478
+ const policyPattern = policyResourcePatternToRegexString(policyString);
479
+ if (requestString.match(policyPattern)) {
480
+ return 'policy_is_superset';
481
+ }
482
+ if (resourcePatternsIntersect(policyString, requestString)) {
483
+ return 'overlap';
484
+ }
485
+ return 'none';
486
+ }
487
+ /**
488
+ * Checks whether a policy resource pattern and request resource pattern share
489
+ * at least one concrete resource string.
490
+ *
491
+ * Policy patterns use IAM `*` and `?` wildcards. Request patterns only treat
492
+ * `*` as a wildcard; `?` remains literal to match the existing request
493
+ * wildcard semantics in this module.
494
+ *
495
+ * @param policyString the policy-side resource pattern segment to compare
496
+ * @param requestString the request-side resource pattern segment to compare
497
+ * @returns true when the patterns have a non-empty intersection
498
+ */
499
+ function resourcePatternsIntersect(policyString, requestString) {
500
+ const policyPattern = [...policyString];
501
+ const requestPattern = [...requestString];
502
+ const visited = new Set();
503
+ const queue = [[0, 0]];
504
+ const key = (policyIndex, requestIndex) => `${policyIndex},${requestIndex}`;
505
+ while (queue.length > 0) {
506
+ const [policyIndex, requestIndex] = queue.shift();
507
+ const stateKey = key(policyIndex, requestIndex);
508
+ if (visited.has(stateKey)) {
509
+ continue;
510
+ }
511
+ visited.add(stateKey);
512
+ if (policyIndex === policyPattern.length && requestIndex === requestPattern.length) {
513
+ return true;
514
+ }
515
+ const policyToken = tokenAt(policyPattern, policyIndex);
516
+ const requestToken = tokenAt(requestPattern, requestIndex);
517
+ if (policyToken === '*') {
518
+ queue.push([policyIndex + 1, requestIndex]);
519
+ }
520
+ if (requestToken === '*') {
521
+ queue.push([policyIndex, requestIndex + 1]);
522
+ }
523
+ if (resourcePatternTokensCanConsumeSameCharacter(policyToken, requestToken)) {
524
+ const nextPolicyIndexes = nextResourcePatternIndexesAfterOneCharacter(policyPattern, policyIndex, true);
525
+ const nextRequestIndexes = nextResourcePatternIndexesAfterOneCharacter(requestPattern, requestIndex, false);
526
+ for (const nextPolicyIndex of nextPolicyIndexes) {
527
+ for (const nextRequestIndex of nextRequestIndexes) {
528
+ queue.push([nextPolicyIndex, nextRequestIndex]);
529
+ }
530
+ }
531
+ }
532
+ }
533
+ return false;
534
+ }
535
+ /**
536
+ * Reads a token from a pattern, returning null at the end of the pattern.
537
+ *
538
+ * @param pattern the pattern characters
539
+ * @param index the index to read
540
+ * @returns the token at the index, or null when the index is past the end
541
+ */
542
+ function tokenAt(pattern, index) {
543
+ return index < pattern.length ? pattern[index] : null;
544
+ }
545
+ /**
546
+ * Determines whether policy and request pattern tokens can match the same next
547
+ * concrete character under their respective wildcard semantics.
548
+ *
549
+ * @param policyToken token from the policy pattern, where `*` and `?` are wildcards
550
+ * @param requestToken token from the request pattern, where only `*` is a wildcard
551
+ * @returns true if both tokens can consume the same concrete character
552
+ */
553
+ function resourcePatternTokensCanConsumeSameCharacter(policyToken, requestToken) {
554
+ if (policyToken === null || requestToken === null) {
555
+ return false;
556
+ }
557
+ const policyWildcard = policyToken === '*' || policyToken === '?';
558
+ const requestWildcard = requestToken === '*';
559
+ if (!policyWildcard && !requestWildcard) {
560
+ return policyToken === requestToken;
561
+ }
562
+ return true;
563
+ }
564
+ /**
565
+ * Returns possible next indexes after consuming one concrete character from a pattern.
566
+ *
567
+ * @param pattern the pattern characters
568
+ * @param index current pattern index
569
+ * @param questionMarkIsWildcard whether `?` should be treated as a one-character wildcard
570
+ * @returns possible next indexes after one concrete character is consumed
571
+ */
572
+ function nextResourcePatternIndexesAfterOneCharacter(pattern, index, questionMarkIsWildcard) {
573
+ const token = tokenAt(pattern, index);
574
+ if (token === null) {
575
+ return [];
576
+ }
577
+ if (token === '*') {
578
+ return [index];
579
+ }
580
+ if (token === '?' && questionMarkIsWildcard) {
581
+ return [index + 1];
582
+ }
583
+ return [index + 1];
584
+ }
585
+ //# sourceMappingURL=resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/resource/resource.ts"],"names":[],"mappings":"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"}