@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,103 @@
1
+ /**
2
+ * Determines if two AWS ARN patterns have any overlap in the resources they could match.
3
+ * Handles wildcards (*) and single-character patterns (?) in both ARN strings.
4
+ *
5
+ * @param arn1 First ARN pattern to compare
6
+ * @param arn2 Second ARN pattern to compare
7
+ * @returns true if the patterns could match some of the same resources, false if they are completely disjoint
8
+ */
9
+ export function resourceArnsOverlap(arn1, arn2) {
10
+ // Fast-path
11
+ if (arn1 === arn2)
12
+ return true;
13
+ if (arn1 === '*' || arn2 === '*')
14
+ return true;
15
+ // Short ARN expansion: ARNs with fewer than 6 colon-separated segments
16
+ // have missing trailing segments treated as implicit wildcards.
17
+ const expanded1 = expandShortArn(arn1);
18
+ const expanded2 = expandShortArn(arn2);
19
+ const A = [...expanded1];
20
+ const B = [...expanded2];
21
+ const n = A.length;
22
+ const m = B.length;
23
+ // BFS over states (i, j) meaning:
24
+ // we've consumed up to i in A and up to j in B
25
+ const visited = new Set();
26
+ const queue = [[0, 0]];
27
+ const key = (i, j) => `${i},${j}`;
28
+ while (queue.length > 0) {
29
+ const [i, j] = queue.shift();
30
+ const k = key(i, j);
31
+ if (visited.has(k))
32
+ continue;
33
+ visited.add(k);
34
+ // Accept if both ended
35
+ if (i === n && j === m)
36
+ return true;
37
+ const aTok = tokAt(A, i);
38
+ const bTok = tokAt(B, j);
39
+ // Epsilon transitions: '*' can match empty
40
+ if (aTok === '*')
41
+ queue.push([i + 1, j]);
42
+ if (bTok === '*')
43
+ queue.push([i, j + 1]);
44
+ // Consume-one-character transitions:
45
+ // if both can consume the same next character, advance appropriately
46
+ if (canConsumeSameChar(aTok, bTok)) {
47
+ const nextIs = nextIdxAfterOneChar(A, i);
48
+ const nextJs = nextIdxAfterOneChar(B, j);
49
+ for (const ni of nextIs) {
50
+ for (const nj of nextJs) {
51
+ queue.push([ni, nj]);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ return false;
57
+ }
58
+ function tokAt(p, idx) {
59
+ return idx < p.length ? p[idx] : null; // null = end
60
+ }
61
+ // Whether both patterns can consume at least one *same* next character
62
+ function canConsumeSameChar(a, b) {
63
+ if (a === null || b === null)
64
+ return false;
65
+ const aAny = a === '*' || a === '?';
66
+ const bAny = b === '*' || b === '?';
67
+ // both literals
68
+ if (!aAny && !bAny)
69
+ return a === b;
70
+ // at least one side can match any char
71
+ return true;
72
+ }
73
+ // Next indices after consuming exactly one character from pattern p at idx
74
+ function nextIdxAfterOneChar(p, idx) {
75
+ const t = tokAt(p, idx);
76
+ if (t === null)
77
+ return [];
78
+ if (t === '*')
79
+ return [idx]; // '*' stays and can keep consuming
80
+ return [idx + 1]; // literal or '?' consumes one and advances
81
+ }
82
+ /**
83
+ * Expands a short ARN (fewer than 6 colon-separated segments) by padding
84
+ * missing trailing segments with `*`. Non-ARN strings and full ARNs are
85
+ * returned unchanged.
86
+ *
87
+ * @param arn the ARN string to expand
88
+ * @returns the expanded ARN string with missing segments filled with `*`
89
+ */
90
+ export function expandShortArn(arn) {
91
+ if (!arn.startsWith('arn:')) {
92
+ return arn;
93
+ }
94
+ const segments = arn.split(':');
95
+ if (segments.length >= 6) {
96
+ return arn;
97
+ }
98
+ while (segments.length < 6) {
99
+ segments.push('*');
100
+ }
101
+ return segments.join(':');
102
+ }
103
+ //# 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,341 @@
1
+ import { iamActionDetails } from '@actsecurity/iam-data';
2
+ import {} from '@actsecurity/iam-policy';
3
+ import {} from './request/request.js';
4
+ const matchesNothing = new RegExp('a^');
5
+ const defaultStringReplaceOptions = {
6
+ replaceWildcards: true,
7
+ convertToRegex: true
8
+ };
9
+ export function convertIamString(value, request, replaceOptions) {
10
+ const options = { ...defaultStringReplaceOptions, ...replaceOptions };
11
+ const errors = [];
12
+ const newValue = replaceIamStringTokens(value, request, options, errors);
13
+ if (!options.convertToRegex) {
14
+ return newValue;
15
+ }
16
+ if (errors.length > 0) {
17
+ return { pattern: matchesNothing, errors };
18
+ }
19
+ return { pattern: new RegExp('^' + newValue + '$') };
20
+ }
21
+ /**
22
+ * Replace IAM wildcard and variable tokens while escaping literal spans for regex conversion.
23
+ *
24
+ * @param value the IAM string value to convert
25
+ * @param request the request context used to resolve policy variables
26
+ * @param options controls wildcard replacement and regex conversion behavior
27
+ * @param errors collects variable resolution errors that make the value unable to match
28
+ * @returns the converted IAM string or regex source fragment
29
+ */
30
+ function replaceIamStringTokens(value, request, options, errors) {
31
+ let newValue = '';
32
+ let literalStart = 0;
33
+ let index = 0;
34
+ while (index < value.length) {
35
+ const character = value[index];
36
+ if (character == '*' || character == '?') {
37
+ newValue += replaceLiteralSpan(value.slice(literalStart, index), options);
38
+ newValue += replaceIamStringToken(character, request, options, errors);
39
+ index++;
40
+ literalStart = index;
41
+ }
42
+ else if (character == '$' && value[index + 1] == '{') {
43
+ const variableEndIndex = value.indexOf('}', index + 2);
44
+ if (variableEndIndex == -1) {
45
+ index++;
46
+ }
47
+ else {
48
+ newValue += replaceLiteralSpan(value.slice(literalStart, index), options);
49
+ newValue += replaceIamStringToken(value.slice(index, variableEndIndex + 1), request, options, errors);
50
+ index = variableEndIndex + 1;
51
+ literalStart = index;
52
+ }
53
+ }
54
+ else {
55
+ index++;
56
+ }
57
+ }
58
+ newValue += replaceLiteralSpan(value.slice(literalStart), options);
59
+ return newValue;
60
+ }
61
+ /**
62
+ * Escape a literal IAM string span when producing a regular expression.
63
+ *
64
+ * @param literal the literal IAM string span outside wildcard and variable tokens
65
+ * @param options controls whether regex conversion is enabled
66
+ * @returns the literal span escaped for regex conversion, or unchanged for raw string conversion
67
+ */
68
+ function replaceLiteralSpan(literal, options) {
69
+ return options.convertToRegex ? escapeRegexCharacters(literal) : literal;
70
+ }
71
+ /**
72
+ * Replace a single IAM string token with its regex or raw string representation.
73
+ *
74
+ * @param match the IAM token to replace
75
+ * @param request the request context used to resolve policy variables
76
+ * @param options controls wildcard replacement and regex conversion behavior
77
+ * @param errors collects variable resolution errors that make the value unable to match
78
+ * @returns the token replacement value
79
+ */
80
+ function replaceIamStringToken(match, request, options, errors) {
81
+ if (match == '?') {
82
+ return replacementValue(match, '\\?', '.', options);
83
+ }
84
+ else if (match == '*') {
85
+ return replacementValue(match, '\\*', '.*?', options);
86
+ }
87
+ else if (match == '${*}') {
88
+ return replacementValue(match, '\\$\\{\\*\\}', '\\*', options);
89
+ }
90
+ else if (match == '${?}') {
91
+ return replacementValue(match, '\\$\\{\\?\\}', '\\?', options);
92
+ }
93
+ else if (match == '${$}') {
94
+ return replacementValue(match, '\\$\\{\\$\\}', '\\$', options);
95
+ }
96
+ //This means it's a variable
97
+ const inTheBrackets = match.slice(2, -1);
98
+ let defaultValue = undefined;
99
+ const defaultParts = inTheBrackets.split(', ');
100
+ if (defaultParts.length == 2) {
101
+ const segmentAfterComma = defaultParts.at(1);
102
+ if (segmentAfterComma?.startsWith("'") && segmentAfterComma.endsWith("'")) {
103
+ defaultValue = segmentAfterComma.slice(1, -1);
104
+ }
105
+ }
106
+ const variableName = defaultParts.at(0).trim();
107
+ const { value: requestValue, error: requestValueError } = getContextSingleValue(request, variableName);
108
+ if (requestValue) {
109
+ //TODO: Maybe escape the * in the resolved value to ${*}
110
+ return options.convertToRegex ? escapeRegexCharacters(requestValue) : requestValue;
111
+ }
112
+ else if (defaultValue) {
113
+ /*
114
+ TODO: What happens in a request if a multi value context key is used in a string and there
115
+ is a default value? Will it use the default value or will it fail the condition test?
116
+ */
117
+ //TODO: Maybe escape the * in the resolved value to ${*}
118
+ return options.convertToRegex ? escapeRegexCharacters(defaultValue) : defaultValue;
119
+ }
120
+ else {
121
+ if (requestValueError == 'missing') {
122
+ errors.push(`{${variableName}} not found in request context, and no default value provided. This will never match`);
123
+ }
124
+ else if (requestValueError == 'multivalue') {
125
+ errors.push(`{${variableName}} is a multi value context key, and cannot be used for replacement. This will never match`);
126
+ }
127
+ /*
128
+ https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-no-value
129
+ */
130
+ return match;
131
+ }
132
+ }
133
+ /**
134
+ * Replace regex characters in a string with their escaped versions
135
+ *
136
+ * @param str the string to escape regex characters in
137
+ * @returns the string with regex characters escaped
138
+ */
139
+ function escapeRegexCharacters(str) {
140
+ let escaped = '';
141
+ for (const character of str) {
142
+ if (isRegexMetacharacter(character)) {
143
+ escaped += '\\';
144
+ }
145
+ escaped += character;
146
+ }
147
+ return escaped;
148
+ }
149
+ /**
150
+ * Check if a character has special meaning in a regular expression pattern.
151
+ *
152
+ * @param character the character to check
153
+ * @returns whether the character must be escaped for literal regex matching
154
+ */
155
+ function isRegexMetacharacter(character) {
156
+ return (character == '.' ||
157
+ character == '*' ||
158
+ character == '+' ||
159
+ character == '?' ||
160
+ character == '^' ||
161
+ character == '$' ||
162
+ character == '{' ||
163
+ character == '}' ||
164
+ character == '(' ||
165
+ character == ')' ||
166
+ character == '|' ||
167
+ character == '[' ||
168
+ character == ']' ||
169
+ character == '\\');
170
+ }
171
+ /**
172
+ * Get the string value of a context key only if it is a single value key
173
+ *
174
+ * @param requestContext the request context to get the value from
175
+ * @param contextKeyName the name of the context key to get the value of
176
+ * @returns the value of the context key if it is a single value key, undefined otherwise
177
+ */
178
+ function getContextSingleValue(request, contextKeyName) {
179
+ if (!request.contextKeyExists(contextKeyName)) {
180
+ return {
181
+ error: 'missing'
182
+ };
183
+ }
184
+ const keyValue = request.getContextKeyValue(contextKeyName);
185
+ if (keyValue.isStringValue()) {
186
+ return { value: keyValue.value };
187
+ }
188
+ return { error: 'multivalue' };
189
+ }
190
+ /**
191
+ * Get the replacement value for a string
192
+ *
193
+ * @param original the original IAM token text
194
+ * @param escaped the regex-escaped literal representation of the token
195
+ * @param regex the regex wildcard representation of the token
196
+ * @param options controls wildcard replacement and regex conversion behavior
197
+ * @returns the token replacement value
198
+ */
199
+ function replacementValue(original, escaped, regex, options) {
200
+ if (!options.convertToRegex) {
201
+ return original;
202
+ }
203
+ if (options.replaceWildcards) {
204
+ return regex;
205
+ }
206
+ return escaped;
207
+ }
208
+ /**
209
+ * Split an ARN into its parts
210
+ *
211
+ * @param arn the arn to split
212
+ * @returns the parts of the ARN
213
+ */
214
+ export function splitArnParts(arn) {
215
+ const parts = arn.split(':');
216
+ const partition = parts.at(1);
217
+ const service = parts.at(2);
218
+ const region = parts.at(3);
219
+ const accountId = parts.at(4);
220
+ const resource = parts.slice(5).join(':');
221
+ return {
222
+ partition,
223
+ service,
224
+ region,
225
+ accountId,
226
+ resource
227
+ };
228
+ }
229
+ /**
230
+ * Get the product/id segments of the resource portion of an ARN.
231
+ * The first segment is the product segment and the second segment is the resource id segment.
232
+ * This could be split by a colon or a slash, so it checks for both. It also checks for S3 buckets/objects.
233
+ *
234
+ * @param resource The resource to get the resource segments. Must be an ARN resource.
235
+ * @returns a tuple with the first segment being the product segment (including the separator) and the second segment being the resource id.
236
+ */
237
+ export function getResourceSegments(resource) {
238
+ if (!resource.isArnResource()) {
239
+ throw new Error(`Resource ${resource.value()} is not an ARN resource`);
240
+ }
241
+ const resourceString = resource.resource();
242
+ // This is terrible, and I hate it
243
+ if (resource.service() === 's3' && resource.account() === '' && resource.region() === '') {
244
+ return ['', resourceString];
245
+ }
246
+ const slashIndex = resourceString.indexOf('/');
247
+ const colonIndex = resourceString.indexOf(':');
248
+ let splitIndex = slashIndex;
249
+ if (slashIndex != -1 && colonIndex != -1) {
250
+ splitIndex = Math.min(slashIndex, colonIndex) + 1;
251
+ }
252
+ else if (colonIndex == -1) {
253
+ splitIndex = slashIndex + 1;
254
+ }
255
+ else if (slashIndex == -1) {
256
+ splitIndex = colonIndex + 1;
257
+ }
258
+ else {
259
+ throw new Error(`Unable to split resource ${resource}`);
260
+ }
261
+ return [resourceString.slice(0, splitIndex), resourceString.slice(splitIndex)];
262
+ }
263
+ /**
264
+ * Checks if a value is defined and not null and narrows the type to the defined type
265
+ *
266
+ * @param value the value to check if it is defined
267
+ * @returns if the value is defined and not null
268
+ */
269
+ export function isDefined(value) {
270
+ return value !== undefined && value !== null;
271
+ }
272
+ /**
273
+ * Checks if a value is not defined or null
274
+ *
275
+ * @param value the value to check if it is not defined
276
+ * @returns if the value is not defined or null
277
+ */
278
+ export function isNotDefined(value) {
279
+ return !isDefined(value);
280
+ }
281
+ /**
282
+ * Checks if an action is a wildcard only action
283
+ *
284
+ * @param service the service the action belongs to
285
+ * @param action the action to check if it is a wildcard only action
286
+ * @returns if the action is a wildcard only action
287
+ * @throws an error if the service or action does not exist
288
+ */
289
+ export async function isWildcardOnlyAction(service, action) {
290
+ const actionDetails = await iamActionDetails(service, action);
291
+ return actionDetails.resourceTypes.length === 0;
292
+ }
293
+ /**
294
+ * Lowercase all strings in an array
295
+ *
296
+ * @param strings the strings to lowercase
297
+ * @returns the lowercased strings
298
+ */
299
+ export function lowerCaseAll(strings) {
300
+ return strings.map((s) => s.toLowerCase());
301
+ }
302
+ /**
303
+ * Gets the IAM variables from a string
304
+ *
305
+ * @param value the string to get the variables from
306
+ * @returns the variables in the string, if any
307
+ */
308
+ export function getVariablesFromString(value) {
309
+ const matches = value.match(/\$\{.*?\}/g);
310
+ if (matches) {
311
+ return matches.map((m) => {
312
+ const inBrackets = m.slice(2, -1);
313
+ if (inBrackets.includes(',')) {
314
+ return inBrackets.split(',')[0].trim();
315
+ }
316
+ return inBrackets;
317
+ });
318
+ }
319
+ return [];
320
+ }
321
+ /**
322
+ * Checks to see if an ARN is an S3 bucket or object ARN
323
+ *
324
+ * @param arn the ARN to check
325
+ * @returns whether the ARN is an S3 bucket or object ARN
326
+ */
327
+ export function isS3BucketOrObjectArn(arn) {
328
+ const arnParts = splitArnParts(arn);
329
+ if (arnParts.service !== 's3') {
330
+ return false;
331
+ }
332
+ if (!arnParts.resource) {
333
+ return false;
334
+ }
335
+ // S3 bucket or object ARNs have no account ID or region
336
+ if (arnParts.accountId || arnParts.region) {
337
+ return false;
338
+ }
339
+ return true;
340
+ }
341
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,119 @@
1
+ {
2
+ "name": "@actsecurity/iam-simulate",
3
+ "version": "0.1.173",
4
+ "description": "Simulate evaluation of AWS IAM policies",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/actsecurity/iam-simulate.git"
8
+ },
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/esm/index.js",
12
+ "require": "./dist/cjs/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist/**/*"
17
+ ],
18
+ "types": "dist/cjs/index.d.ts",
19
+ "scripts": {
20
+ "build": "npx tsc -p tsconfig.cjs.json && npx tsc -p tsconfig.esm.json && ./postbuild.sh",
21
+ "clean": "rm -rf dist",
22
+ "test": "npx vitest --run --coverage",
23
+ "release": "npm run clean && npm run build && npm run test && npm run format-check && npm publish",
24
+ "format": "npx prettier --write src/",
25
+ "format-check": "npx prettier --check src/"
26
+ },
27
+ "keywords": [
28
+ "AWS",
29
+ "IAM"
30
+ ],
31
+ "author": "David Kerber <dave@cloudcopilot.io>",
32
+ "license": "AGPL-3.0-or-later",
33
+ "bugs": {
34
+ "url": "https://github.com/actsecurity/iam-simulate/issues"
35
+ },
36
+ "homepage": "https://github.com/actsecurity/iam-simulate#readme",
37
+ "devDependencies": {
38
+ "@actsecurity/prettier-config": "^0.1.1",
39
+ "@semantic-release/changelog": "^6.0.3",
40
+ "@semantic-release/commit-analyzer": "^13.0.1",
41
+ "@semantic-release/exec": "^7.1.0",
42
+ "@semantic-release/git": "^10.0.1",
43
+ "@semantic-release/github": "^12.0.6",
44
+ "@semantic-release/npm": "^13.1.4",
45
+ "@semantic-release/release-notes-generator": "^14.0.3",
46
+ "@types/node": "^22.5.0",
47
+ "@vitest/coverage-v8": "^4.0.18",
48
+ "semantic-release": "^25.0.3",
49
+ "typescript": "^5.5.4",
50
+ "vitest": "^4.0.18"
51
+ },
52
+ "dependencies": {
53
+ "@actsecurity/iam-data": ">=0.15.202511222 <1.0.0",
54
+ "@actsecurity/iam-policy": "^0.1.89",
55
+ "@actsecurity/iam-utils": "^0.1.78"
56
+ },
57
+ "prettier": "@actsecurity/prettier-config",
58
+ "release": {
59
+ "branches": [
60
+ "main"
61
+ ],
62
+ "plugins": [
63
+ [
64
+ "@semantic-release/commit-analyzer",
65
+ {
66
+ "releaseRules": [
67
+ {
68
+ "type": "feat",
69
+ "release": "patch"
70
+ },
71
+ {
72
+ "type": "fix",
73
+ "release": "patch"
74
+ },
75
+ {
76
+ "breaking": true,
77
+ "release": "patch"
78
+ },
79
+ {
80
+ "type": "*",
81
+ "release": "patch"
82
+ }
83
+ ]
84
+ }
85
+ ],
86
+ "@semantic-release/release-notes-generator",
87
+ "@semantic-release/changelog",
88
+ [
89
+ "@semantic-release/npm",
90
+ {
91
+ "npmPublish": true
92
+ }
93
+ ],
94
+ [
95
+ "@semantic-release/exec",
96
+ {
97
+ "successCmd": "echo published=true >> $GITHUB_OUTPUT && echo version=${nextRelease.version} >> $GITHUB_OUTPUT && echo package_name=$(node -p \"require('./package.json').name\") >> $GITHUB_OUTPUT"
98
+ }
99
+ ],
100
+ [
101
+ "@semantic-release/git",
102
+ {
103
+ "assets": [
104
+ "package.json",
105
+ "package-lock.json",
106
+ "CHANGELOG.md"
107
+ ],
108
+ "message": "chore(release): ${nextRelease.version} [skip ci]"
109
+ }
110
+ ],
111
+ [
112
+ "@semantic-release/github",
113
+ {
114
+ "assets": []
115
+ }
116
+ ]
117
+ ]
118
+ }
119
+ }