@actsecurity/iam-lens 0.1.156

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 (383) hide show
  1. package/LICENSE.txt +661 -0
  2. package/README.md +203 -0
  3. package/dist/cjs/cli.d.ts +3 -0
  4. package/dist/cjs/cli.d.ts.map +1 -0
  5. package/dist/cjs/cli.js +206 -0
  6. package/dist/cjs/cli.js.map +1 -0
  7. package/dist/cjs/collect/client.d.ts +550 -0
  8. package/dist/cjs/collect/client.d.ts.map +1 -0
  9. package/dist/cjs/collect/client.js +1119 -0
  10. package/dist/cjs/collect/client.js.map +1 -0
  11. package/dist/cjs/collect/collect.d.ts +44 -0
  12. package/dist/cjs/collect/collect.d.ts.map +1 -0
  13. package/dist/cjs/collect/collect.js +55 -0
  14. package/dist/cjs/collect/collect.js.map +1 -0
  15. package/dist/cjs/collect/inMemoryClient.d.ts +6 -0
  16. package/dist/cjs/collect/inMemoryClient.d.ts.map +1 -0
  17. package/dist/cjs/collect/inMemoryClient.js +11 -0
  18. package/dist/cjs/collect/inMemoryClient.js.map +1 -0
  19. package/dist/cjs/index.d.ts +13 -0
  20. package/dist/cjs/index.d.ts.map +1 -0
  21. package/dist/cjs/index.js +28 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/package.json +3 -0
  24. package/dist/cjs/principalCan/permission.d.ts +125 -0
  25. package/dist/cjs/principalCan/permission.d.ts.map +1 -0
  26. package/dist/cjs/principalCan/permission.js +1229 -0
  27. package/dist/cjs/principalCan/permission.js.map +1 -0
  28. package/dist/cjs/principalCan/permissionSet.d.ts +140 -0
  29. package/dist/cjs/principalCan/permissionSet.d.ts.map +1 -0
  30. package/dist/cjs/principalCan/permissionSet.js +437 -0
  31. package/dist/cjs/principalCan/permissionSet.js.map +1 -0
  32. package/dist/cjs/principalCan/principalCan.d.ts +26 -0
  33. package/dist/cjs/principalCan/principalCan.d.ts.map +1 -0
  34. package/dist/cjs/principalCan/principalCan.js +195 -0
  35. package/dist/cjs/principalCan/principalCan.js.map +1 -0
  36. package/dist/cjs/principalCan/principalConstraints.d.ts +147 -0
  37. package/dist/cjs/principalCan/principalConstraints.d.ts.map +1 -0
  38. package/dist/cjs/principalCan/principalConstraints.js +472 -0
  39. package/dist/cjs/principalCan/principalConstraints.js.map +1 -0
  40. package/dist/cjs/principalCan/resources/actions.d.ts +9 -0
  41. package/dist/cjs/principalCan/resources/actions.d.ts.map +1 -0
  42. package/dist/cjs/principalCan/resources/actions.js +27 -0
  43. package/dist/cjs/principalCan/resources/actions.js.map +1 -0
  44. package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.d.ts +31 -0
  45. package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.d.ts.map +1 -0
  46. package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.js +114 -0
  47. package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.js.map +1 -0
  48. package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.d.ts +30 -0
  49. package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.d.ts.map +1 -0
  50. package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.js +110 -0
  51. package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.js.map +1 -0
  52. package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.d.ts +18 -0
  53. package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.d.ts.map +1 -0
  54. package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.js +123 -0
  55. package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.js.map +1 -0
  56. package/dist/cjs/principalCan/resources/statements.d.ts +27 -0
  57. package/dist/cjs/principalCan/resources/statements.d.ts.map +1 -0
  58. package/dist/cjs/principalCan/resources/statements.js +119 -0
  59. package/dist/cjs/principalCan/resources/statements.js.map +1 -0
  60. package/dist/cjs/principalIndex/makePrincipalIndex.d.ts +8 -0
  61. package/dist/cjs/principalIndex/makePrincipalIndex.d.ts.map +1 -0
  62. package/dist/cjs/principalIndex/makePrincipalIndex.js +105 -0
  63. package/dist/cjs/principalIndex/makePrincipalIndex.js.map +1 -0
  64. package/dist/cjs/principals.d.ts +54 -0
  65. package/dist/cjs/principals.d.ts.map +1 -0
  66. package/dist/cjs/principals.js +143 -0
  67. package/dist/cjs/principals.js.map +1 -0
  68. package/dist/cjs/resources.d.ts +32 -0
  69. package/dist/cjs/resources.d.ts.map +1 -0
  70. package/dist/cjs/resources.js +71 -0
  71. package/dist/cjs/resources.js.map +1 -0
  72. package/dist/cjs/simulate/contextKeys.d.ts +68 -0
  73. package/dist/cjs/simulate/contextKeys.d.ts.map +1 -0
  74. package/dist/cjs/simulate/contextKeys.js +293 -0
  75. package/dist/cjs/simulate/contextKeys.js.map +1 -0
  76. package/dist/cjs/simulate/simulate.d.ts +72 -0
  77. package/dist/cjs/simulate/simulate.d.ts.map +1 -0
  78. package/dist/cjs/simulate/simulate.js +296 -0
  79. package/dist/cjs/simulate/simulate.js.map +1 -0
  80. package/dist/cjs/test-datasets/testClient.d.ts +17 -0
  81. package/dist/cjs/test-datasets/testClient.d.ts.map +1 -0
  82. package/dist/cjs/test-datasets/testClient.js +58 -0
  83. package/dist/cjs/test-datasets/testClient.js.map +1 -0
  84. package/dist/cjs/utils/arn.d.ts +22 -0
  85. package/dist/cjs/utils/arn.d.ts.map +1 -0
  86. package/dist/cjs/utils/arn.js +49 -0
  87. package/dist/cjs/utils/arn.js.map +1 -0
  88. package/dist/cjs/utils/bitset.d.ts +45 -0
  89. package/dist/cjs/utils/bitset.d.ts.map +1 -0
  90. package/dist/cjs/utils/bitset.js +149 -0
  91. package/dist/cjs/utils/bitset.js.map +1 -0
  92. package/dist/cjs/utils/dynamicImport.d.ts +31 -0
  93. package/dist/cjs/utils/dynamicImport.d.ts.map +1 -0
  94. package/dist/cjs/utils/dynamicImport.js +64 -0
  95. package/dist/cjs/utils/dynamicImport.js.map +1 -0
  96. package/dist/cjs/utils/packageVersion.d.ts +5 -0
  97. package/dist/cjs/utils/packageVersion.d.ts.map +1 -0
  98. package/dist/cjs/utils/packageVersion.js +25 -0
  99. package/dist/cjs/utils/packageVersion.js.map +1 -0
  100. package/dist/cjs/utils/readPackageFile.d.ts +3 -0
  101. package/dist/cjs/utils/readPackageFile.d.ts.map +1 -0
  102. package/dist/cjs/utils/readPackageFile.js +16 -0
  103. package/dist/cjs/utils/readPackageFile.js.map +1 -0
  104. package/dist/cjs/utils/s3Abac.d.ts +3 -0
  105. package/dist/cjs/utils/s3Abac.d.ts.map +1 -0
  106. package/dist/cjs/utils/s3Abac.js +5 -0
  107. package/dist/cjs/utils/s3Abac.js.map +1 -0
  108. package/dist/cjs/utils/stringOrFileArgument.d.ts +9 -0
  109. package/dist/cjs/utils/stringOrFileArgument.d.ts.map +1 -0
  110. package/dist/cjs/utils/stringOrFileArgument.js +25 -0
  111. package/dist/cjs/utils/stringOrFileArgument.js.map +1 -0
  112. package/dist/cjs/utils/sts.d.ts +2 -0
  113. package/dist/cjs/utils/sts.d.ts.map +1 -0
  114. package/dist/cjs/utils/sts.js +9 -0
  115. package/dist/cjs/utils/sts.js.map +1 -0
  116. package/dist/cjs/utils/testUtils.d.ts +56 -0
  117. package/dist/cjs/utils/testUtils.d.ts.map +1 -0
  118. package/dist/cjs/utils/testUtils.js +95 -0
  119. package/dist/cjs/utils/testUtils.js.map +1 -0
  120. package/dist/cjs/utils/workerScript.d.ts +8 -0
  121. package/dist/cjs/utils/workerScript.d.ts.map +1 -0
  122. package/dist/cjs/utils/workerScript.js +23 -0
  123. package/dist/cjs/utils/workerScript.js.map +1 -0
  124. package/dist/cjs/whoCan/WhoCanMainThreadWorker.d.ts +73 -0
  125. package/dist/cjs/whoCan/WhoCanMainThreadWorker.d.ts.map +1 -0
  126. package/dist/cjs/whoCan/WhoCanMainThreadWorker.js +80 -0
  127. package/dist/cjs/whoCan/WhoCanMainThreadWorker.js.map +1 -0
  128. package/dist/cjs/whoCan/WhoCanProcessor.d.ts +400 -0
  129. package/dist/cjs/whoCan/WhoCanProcessor.d.ts.map +1 -0
  130. package/dist/cjs/whoCan/WhoCanProcessor.js +1088 -0
  131. package/dist/cjs/whoCan/WhoCanProcessor.js.map +1 -0
  132. package/dist/cjs/whoCan/WhoCanWorker.d.ts +87 -0
  133. package/dist/cjs/whoCan/WhoCanWorker.d.ts.map +1 -0
  134. package/dist/cjs/whoCan/WhoCanWorker.js +201 -0
  135. package/dist/cjs/whoCan/WhoCanWorker.js.map +1 -0
  136. package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.d.ts +2 -0
  137. package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.d.ts.map +1 -0
  138. package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.js +189 -0
  139. package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.js.map +1 -0
  140. package/dist/cjs/whoCan/principalArnFilter.d.ts +84 -0
  141. package/dist/cjs/whoCan/principalArnFilter.d.ts.map +1 -0
  142. package/dist/cjs/whoCan/principalArnFilter.js +258 -0
  143. package/dist/cjs/whoCan/principalArnFilter.js.map +1 -0
  144. package/dist/cjs/whoCan/principalScope.d.ts +35 -0
  145. package/dist/cjs/whoCan/principalScope.d.ts.map +1 -0
  146. package/dist/cjs/whoCan/principalScope.js +104 -0
  147. package/dist/cjs/whoCan/principalScope.js.map +1 -0
  148. package/dist/cjs/whoCan/requestAnalysis.d.ts +73 -0
  149. package/dist/cjs/whoCan/requestAnalysis.d.ts.map +1 -0
  150. package/dist/cjs/whoCan/requestAnalysis.js +87 -0
  151. package/dist/cjs/whoCan/requestAnalysis.js.map +1 -0
  152. package/dist/cjs/whoCan/untrustingActions.d.ts +7 -0
  153. package/dist/cjs/whoCan/untrustingActions.d.ts.map +1 -0
  154. package/dist/cjs/whoCan/untrustingActions.js +30 -0
  155. package/dist/cjs/whoCan/untrustingActions.js.map +1 -0
  156. package/dist/cjs/whoCan/whoCan.d.ts +295 -0
  157. package/dist/cjs/whoCan/whoCan.d.ts.map +1 -0
  158. package/dist/cjs/whoCan/whoCan.js +574 -0
  159. package/dist/cjs/whoCan/whoCan.js.map +1 -0
  160. package/dist/cjs/whoCan/workerBootstrapPlugin.d.ts +17 -0
  161. package/dist/cjs/whoCan/workerBootstrapPlugin.d.ts.map +1 -0
  162. package/dist/cjs/whoCan/workerBootstrapPlugin.js +3 -0
  163. package/dist/cjs/whoCan/workerBootstrapPlugin.js.map +1 -0
  164. package/dist/cjs/workers/ArrayStreamingWorkQueue.d.ts +15 -0
  165. package/dist/cjs/workers/ArrayStreamingWorkQueue.d.ts.map +1 -0
  166. package/dist/cjs/workers/ArrayStreamingWorkQueue.js +35 -0
  167. package/dist/cjs/workers/ArrayStreamingWorkQueue.js.map +1 -0
  168. package/dist/cjs/workers/JobRunner.d.ts +47 -0
  169. package/dist/cjs/workers/JobRunner.d.ts.map +1 -0
  170. package/dist/cjs/workers/JobRunner.js +101 -0
  171. package/dist/cjs/workers/JobRunner.js.map +1 -0
  172. package/dist/cjs/workers/RingQueue.d.ts +14 -0
  173. package/dist/cjs/workers/RingQueue.d.ts.map +1 -0
  174. package/dist/cjs/workers/RingQueue.js +43 -0
  175. package/dist/cjs/workers/RingQueue.js.map +1 -0
  176. package/dist/cjs/workers/SharedArrayBufferMainCache.d.ts +10 -0
  177. package/dist/cjs/workers/SharedArrayBufferMainCache.d.ts.map +1 -0
  178. package/dist/cjs/workers/SharedArrayBufferMainCache.js +37 -0
  179. package/dist/cjs/workers/SharedArrayBufferMainCache.js.map +1 -0
  180. package/dist/cjs/workers/SharedArrayBufferWorkerCache.d.ts +10 -0
  181. package/dist/cjs/workers/SharedArrayBufferWorkerCache.d.ts.map +1 -0
  182. package/dist/cjs/workers/SharedArrayBufferWorkerCache.js +49 -0
  183. package/dist/cjs/workers/SharedArrayBufferWorkerCache.js.map +1 -0
  184. package/dist/cjs/workers/StreamingWorkQueue.d.ts +18 -0
  185. package/dist/cjs/workers/StreamingWorkQueue.d.ts.map +1 -0
  186. package/dist/cjs/workers/StreamingWorkQueue.js +67 -0
  187. package/dist/cjs/workers/StreamingWorkQueue.js.map +1 -0
  188. package/dist/cjs/workers/buffers.d.ts +4 -0
  189. package/dist/cjs/workers/buffers.d.ts.map +1 -0
  190. package/dist/cjs/workers/buffers.js +26 -0
  191. package/dist/cjs/workers/buffers.js.map +1 -0
  192. package/dist/esm/cli.d.ts +3 -0
  193. package/dist/esm/cli.d.ts.map +1 -0
  194. package/dist/esm/cli.js +204 -0
  195. package/dist/esm/cli.js.map +1 -0
  196. package/dist/esm/collect/client.d.ts +550 -0
  197. package/dist/esm/collect/client.d.ts.map +1 -0
  198. package/dist/esm/collect/client.js +1114 -0
  199. package/dist/esm/collect/client.js.map +1 -0
  200. package/dist/esm/collect/collect.d.ts +44 -0
  201. package/dist/esm/collect/collect.d.ts.map +1 -0
  202. package/dist/esm/collect/collect.js +51 -0
  203. package/dist/esm/collect/collect.js.map +1 -0
  204. package/dist/esm/collect/inMemoryClient.d.ts +6 -0
  205. package/dist/esm/collect/inMemoryClient.d.ts.map +1 -0
  206. package/dist/esm/collect/inMemoryClient.js +8 -0
  207. package/dist/esm/collect/inMemoryClient.js.map +1 -0
  208. package/dist/esm/index.d.ts +13 -0
  209. package/dist/esm/index.d.ts.map +1 -0
  210. package/dist/esm/index.js +11 -0
  211. package/dist/esm/index.js.map +1 -0
  212. package/dist/esm/package.json +3 -0
  213. package/dist/esm/principalCan/permission.d.ts +125 -0
  214. package/dist/esm/principalCan/permission.d.ts.map +1 -0
  215. package/dist/esm/principalCan/permission.js +1212 -0
  216. package/dist/esm/principalCan/permission.js.map +1 -0
  217. package/dist/esm/principalCan/permissionSet.d.ts +140 -0
  218. package/dist/esm/principalCan/permissionSet.d.ts.map +1 -0
  219. package/dist/esm/principalCan/permissionSet.js +429 -0
  220. package/dist/esm/principalCan/permissionSet.js.map +1 -0
  221. package/dist/esm/principalCan/principalCan.d.ts +26 -0
  222. package/dist/esm/principalCan/principalCan.d.ts.map +1 -0
  223. package/dist/esm/principalCan/principalCan.js +193 -0
  224. package/dist/esm/principalCan/principalCan.js.map +1 -0
  225. package/dist/esm/principalCan/principalConstraints.d.ts +147 -0
  226. package/dist/esm/principalCan/principalConstraints.d.ts.map +1 -0
  227. package/dist/esm/principalCan/principalConstraints.js +456 -0
  228. package/dist/esm/principalCan/principalConstraints.js.map +1 -0
  229. package/dist/esm/principalCan/resources/actions.d.ts +9 -0
  230. package/dist/esm/principalCan/resources/actions.d.ts.map +1 -0
  231. package/dist/esm/principalCan/resources/actions.js +24 -0
  232. package/dist/esm/principalCan/resources/actions.js.map +1 -0
  233. package/dist/esm/principalCan/resources/resourceTypes/iamRoles.d.ts +31 -0
  234. package/dist/esm/principalCan/resources/resourceTypes/iamRoles.d.ts.map +1 -0
  235. package/dist/esm/principalCan/resources/resourceTypes/iamRoles.js +110 -0
  236. package/dist/esm/principalCan/resources/resourceTypes/iamRoles.js.map +1 -0
  237. package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.d.ts +30 -0
  238. package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.d.ts.map +1 -0
  239. package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.js +106 -0
  240. package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.js.map +1 -0
  241. package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.d.ts +18 -0
  242. package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.d.ts.map +1 -0
  243. package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.js +120 -0
  244. package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.js.map +1 -0
  245. package/dist/esm/principalCan/resources/statements.d.ts +27 -0
  246. package/dist/esm/principalCan/resources/statements.d.ts.map +1 -0
  247. package/dist/esm/principalCan/resources/statements.js +117 -0
  248. package/dist/esm/principalCan/resources/statements.js.map +1 -0
  249. package/dist/esm/principalIndex/makePrincipalIndex.d.ts +8 -0
  250. package/dist/esm/principalIndex/makePrincipalIndex.d.ts.map +1 -0
  251. package/dist/esm/principalIndex/makePrincipalIndex.js +104 -0
  252. package/dist/esm/principalIndex/makePrincipalIndex.js.map +1 -0
  253. package/dist/esm/principals.d.ts +54 -0
  254. package/dist/esm/principals.d.ts.map +1 -0
  255. package/dist/esm/principals.js +133 -0
  256. package/dist/esm/principals.js.map +1 -0
  257. package/dist/esm/resources.d.ts +32 -0
  258. package/dist/esm/resources.d.ts.map +1 -0
  259. package/dist/esm/resources.js +69 -0
  260. package/dist/esm/resources.js.map +1 -0
  261. package/dist/esm/simulate/contextKeys.d.ts +68 -0
  262. package/dist/esm/simulate/contextKeys.d.ts.map +1 -0
  263. package/dist/esm/simulate/contextKeys.js +287 -0
  264. package/dist/esm/simulate/contextKeys.js.map +1 -0
  265. package/dist/esm/simulate/simulate.d.ts +72 -0
  266. package/dist/esm/simulate/simulate.d.ts.map +1 -0
  267. package/dist/esm/simulate/simulate.js +295 -0
  268. package/dist/esm/simulate/simulate.js.map +1 -0
  269. package/dist/esm/test-datasets/testClient.d.ts +17 -0
  270. package/dist/esm/test-datasets/testClient.d.ts.map +1 -0
  271. package/dist/esm/test-datasets/testClient.js +56 -0
  272. package/dist/esm/test-datasets/testClient.js.map +1 -0
  273. package/dist/esm/utils/arn.d.ts +22 -0
  274. package/dist/esm/utils/arn.d.ts.map +1 -0
  275. package/dist/esm/utils/arn.js +43 -0
  276. package/dist/esm/utils/arn.js.map +1 -0
  277. package/dist/esm/utils/bitset.d.ts +45 -0
  278. package/dist/esm/utils/bitset.d.ts.map +1 -0
  279. package/dist/esm/utils/bitset.js +141 -0
  280. package/dist/esm/utils/bitset.js.map +1 -0
  281. package/dist/esm/utils/dynamicImport.d.ts +31 -0
  282. package/dist/esm/utils/dynamicImport.d.ts.map +1 -0
  283. package/dist/esm/utils/dynamicImport.js +60 -0
  284. package/dist/esm/utils/dynamicImport.js.map +1 -0
  285. package/dist/esm/utils/packageVersion.d.ts +5 -0
  286. package/dist/esm/utils/packageVersion.d.ts.map +1 -0
  287. package/dist/esm/utils/packageVersion.js +22 -0
  288. package/dist/esm/utils/packageVersion.js.map +1 -0
  289. package/dist/esm/utils/readPackageFile.d.ts +3 -0
  290. package/dist/esm/utils/readPackageFile.d.ts.map +1 -0
  291. package/dist/esm/utils/readPackageFile.js +15 -0
  292. package/dist/esm/utils/readPackageFile.js.map +1 -0
  293. package/dist/esm/utils/readPackageFileEsm.d.ts.map +1 -0
  294. package/dist/esm/utils/s3Abac.d.ts +3 -0
  295. package/dist/esm/utils/s3Abac.d.ts.map +1 -0
  296. package/dist/esm/utils/s3Abac.js +2 -0
  297. package/dist/esm/utils/s3Abac.js.map +1 -0
  298. package/dist/esm/utils/stringOrFileArgument.d.ts +9 -0
  299. package/dist/esm/utils/stringOrFileArgument.d.ts.map +1 -0
  300. package/dist/esm/utils/stringOrFileArgument.js +22 -0
  301. package/dist/esm/utils/stringOrFileArgument.js.map +1 -0
  302. package/dist/esm/utils/sts.d.ts +2 -0
  303. package/dist/esm/utils/sts.d.ts.map +1 -0
  304. package/dist/esm/utils/sts.js +6 -0
  305. package/dist/esm/utils/sts.js.map +1 -0
  306. package/dist/esm/utils/testUtils.d.ts +56 -0
  307. package/dist/esm/utils/testUtils.d.ts.map +1 -0
  308. package/dist/esm/utils/testUtils.js +90 -0
  309. package/dist/esm/utils/testUtils.js.map +1 -0
  310. package/dist/esm/utils/workerScript.d.ts +8 -0
  311. package/dist/esm/utils/workerScript.d.ts.map +1 -0
  312. package/dist/esm/utils/workerScript.js +18 -0
  313. package/dist/esm/utils/workerScript.js.map +1 -0
  314. package/dist/esm/utils/workerScriptEsm.d.ts.map +1 -0
  315. package/dist/esm/whoCan/WhoCanMainThreadWorker.d.ts +73 -0
  316. package/dist/esm/whoCan/WhoCanMainThreadWorker.d.ts.map +1 -0
  317. package/dist/esm/whoCan/WhoCanMainThreadWorker.js +81 -0
  318. package/dist/esm/whoCan/WhoCanMainThreadWorker.js.map +1 -0
  319. package/dist/esm/whoCan/WhoCanProcessor.d.ts +400 -0
  320. package/dist/esm/whoCan/WhoCanProcessor.d.ts.map +1 -0
  321. package/dist/esm/whoCan/WhoCanProcessor.js +1080 -0
  322. package/dist/esm/whoCan/WhoCanProcessor.js.map +1 -0
  323. package/dist/esm/whoCan/WhoCanWorker.d.ts +87 -0
  324. package/dist/esm/whoCan/WhoCanWorker.d.ts.map +1 -0
  325. package/dist/esm/whoCan/WhoCanWorker.js +198 -0
  326. package/dist/esm/whoCan/WhoCanWorker.js.map +1 -0
  327. package/dist/esm/whoCan/WhoCanWorkerThreadWorker.d.ts +2 -0
  328. package/dist/esm/whoCan/WhoCanWorkerThreadWorker.d.ts.map +1 -0
  329. package/dist/esm/whoCan/WhoCanWorkerThreadWorker.js +193 -0
  330. package/dist/esm/whoCan/WhoCanWorkerThreadWorker.js.map +1 -0
  331. package/dist/esm/whoCan/principalArnFilter.d.ts +84 -0
  332. package/dist/esm/whoCan/principalArnFilter.d.ts.map +1 -0
  333. package/dist/esm/whoCan/principalArnFilter.js +253 -0
  334. package/dist/esm/whoCan/principalArnFilter.js.map +1 -0
  335. package/dist/esm/whoCan/principalScope.d.ts +35 -0
  336. package/dist/esm/whoCan/principalScope.d.ts.map +1 -0
  337. package/dist/esm/whoCan/principalScope.js +102 -0
  338. package/dist/esm/whoCan/principalScope.js.map +1 -0
  339. package/dist/esm/whoCan/requestAnalysis.d.ts +73 -0
  340. package/dist/esm/whoCan/requestAnalysis.d.ts.map +1 -0
  341. package/dist/esm/whoCan/requestAnalysis.js +83 -0
  342. package/dist/esm/whoCan/requestAnalysis.js.map +1 -0
  343. package/dist/esm/whoCan/untrustingActions.d.ts +7 -0
  344. package/dist/esm/whoCan/untrustingActions.d.ts.map +1 -0
  345. package/dist/esm/whoCan/untrustingActions.js +27 -0
  346. package/dist/esm/whoCan/untrustingActions.js.map +1 -0
  347. package/dist/esm/whoCan/whoCan.d.ts +295 -0
  348. package/dist/esm/whoCan/whoCan.d.ts.map +1 -0
  349. package/dist/esm/whoCan/whoCan.js +571 -0
  350. package/dist/esm/whoCan/whoCan.js.map +1 -0
  351. package/dist/esm/whoCan/workerBootstrapPlugin.d.ts +17 -0
  352. package/dist/esm/whoCan/workerBootstrapPlugin.d.ts.map +1 -0
  353. package/dist/esm/whoCan/workerBootstrapPlugin.js +2 -0
  354. package/dist/esm/whoCan/workerBootstrapPlugin.js.map +1 -0
  355. package/dist/esm/workers/ArrayStreamingWorkQueue.d.ts +15 -0
  356. package/dist/esm/workers/ArrayStreamingWorkQueue.d.ts.map +1 -0
  357. package/dist/esm/workers/ArrayStreamingWorkQueue.js +31 -0
  358. package/dist/esm/workers/ArrayStreamingWorkQueue.js.map +1 -0
  359. package/dist/esm/workers/JobRunner.d.ts +47 -0
  360. package/dist/esm/workers/JobRunner.d.ts.map +1 -0
  361. package/dist/esm/workers/JobRunner.js +94 -0
  362. package/dist/esm/workers/JobRunner.js.map +1 -0
  363. package/dist/esm/workers/RingQueue.d.ts +14 -0
  364. package/dist/esm/workers/RingQueue.d.ts.map +1 -0
  365. package/dist/esm/workers/RingQueue.js +36 -0
  366. package/dist/esm/workers/RingQueue.js.map +1 -0
  367. package/dist/esm/workers/SharedArrayBufferMainCache.d.ts +10 -0
  368. package/dist/esm/workers/SharedArrayBufferMainCache.d.ts.map +1 -0
  369. package/dist/esm/workers/SharedArrayBufferMainCache.js +34 -0
  370. package/dist/esm/workers/SharedArrayBufferMainCache.js.map +1 -0
  371. package/dist/esm/workers/SharedArrayBufferWorkerCache.d.ts +10 -0
  372. package/dist/esm/workers/SharedArrayBufferWorkerCache.d.ts.map +1 -0
  373. package/dist/esm/workers/SharedArrayBufferWorkerCache.js +46 -0
  374. package/dist/esm/workers/SharedArrayBufferWorkerCache.js.map +1 -0
  375. package/dist/esm/workers/StreamingWorkQueue.d.ts +18 -0
  376. package/dist/esm/workers/StreamingWorkQueue.d.ts.map +1 -0
  377. package/dist/esm/workers/StreamingWorkQueue.js +61 -0
  378. package/dist/esm/workers/StreamingWorkQueue.js.map +1 -0
  379. package/dist/esm/workers/buffers.d.ts +4 -0
  380. package/dist/esm/workers/buffers.d.ts.map +1 -0
  381. package/dist/esm/workers/buffers.js +21 -0
  382. package/dist/esm/workers/buffers.js.map +1 -0
  383. package/package.json +132 -0
@@ -0,0 +1,83 @@
1
+ import { getDenialReasons } from '@actsecurity/iam-simulate';
2
+ /**
3
+ * Convert a RequestAnalysis to a LightResourceAnalysis.
4
+ *
5
+ * @param analysis - The full RequestAnalysis to convert
6
+ * @returns A LightResourceAnalysis with only the essential result fields
7
+ */
8
+ function toLightResourceAnalysis(analysis) {
9
+ return {
10
+ result: analysis.result,
11
+ sameAccount: analysis.sameAccount,
12
+ identityAnalysis: analysis.identityAnalysis
13
+ ? { result: analysis.identityAnalysis.result }
14
+ : undefined,
15
+ resourceAnalysis: analysis.resourceAnalysis
16
+ ? { result: analysis.resourceAnalysis.result }
17
+ : undefined,
18
+ scpAnalysis: analysis.scpAnalysis ? { result: analysis.scpAnalysis.result } : undefined,
19
+ rcpAnalysis: analysis.rcpAnalysis ? { result: analysis.rcpAnalysis.result } : undefined,
20
+ permissionBoundaryAnalysis: analysis.permissionBoundaryAnalysis
21
+ ? { result: analysis.permissionBoundaryAnalysis.result }
22
+ : undefined,
23
+ blockedBy: new Set(analysis.blockedBy)
24
+ };
25
+ }
26
+ /**
27
+ * Convert a full RequestAnalysis to a LightRequestAnalysis.
28
+ *
29
+ * @param executionResult - The denied execution result containing the RequestAnalysis to convert
30
+ * @returns A LightRequestAnalysis with only the essential fields
31
+ */
32
+ export function toLightRequestAnalysis(executionResult) {
33
+ if (executionResult.type === 'denied_single') {
34
+ return {
35
+ type: 'single',
36
+ overallResult: executionResult.analysis.result,
37
+ ...toLightResourceAnalysis(executionResult.analysis)
38
+ };
39
+ }
40
+ // Wildcard case
41
+ const patterns = executionResult.deniedPatterns.map((details) => ({
42
+ pattern: details.pattern,
43
+ resourceType: details.resourceType,
44
+ ...toLightResourceAnalysis(details.analysis)
45
+ }));
46
+ return {
47
+ type: 'wildcard',
48
+ overallResult: executionResult.overallResult,
49
+ patterns
50
+ };
51
+ }
52
+ /**
53
+ * Gets the denial reasons for a denied SimulationResult.
54
+ *
55
+ * @param executionResult - The denied execution result containing the RequestAnalysis with denial reasons
56
+ * @returns A WhoCanDenyDetail object containing the denial reasons and other details to be returned to the user
57
+ */
58
+ export function convertToDenialDetails(executionResult) {
59
+ const { principal, action } = executionResult.workItem;
60
+ const [service, actionName] = action.split(':');
61
+ if (executionResult.type === 'denied_single') {
62
+ return {
63
+ type: 'single',
64
+ principal,
65
+ service,
66
+ action: actionName,
67
+ details: getDenialReasons(executionResult.analysis)
68
+ };
69
+ }
70
+ // Wildcard case
71
+ return {
72
+ type: 'wildcard',
73
+ principal,
74
+ service,
75
+ action: actionName,
76
+ deniedResources: executionResult.deniedPatterns.map((pattern) => ({
77
+ pattern: pattern.pattern,
78
+ resourceType: pattern.resourceType,
79
+ details: getDenialReasons(pattern.analysis)
80
+ }))
81
+ };
82
+ }
83
+ //# sourceMappingURL=requestAnalysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestAnalysis.js","sourceRoot":"","sources":["../../../src/whoCan/requestAnalysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Get a set of actions that do not automatically trust the current account, in all lower case.
3
+ *
4
+ * @returns the set of actions that do not automatically trust the current account in all lower case
5
+ */
6
+ export declare function actionsThatDoNotAutomaticallyTrustTheCurrentAccount(): Promise<Set<string>>;
7
+ //# sourceMappingURL=untrustingActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"untrustingActions.d.ts","sourceRoot":"","sources":["../../../src/whoCan/untrustingActions.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAsB,mDAAmD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAmBhG"}
@@ -0,0 +1,27 @@
1
+ import { iamActionDetails, iamActionsForService } from '@actsecurity/iam-data';
2
+ const kms = 'kms';
3
+ const kmsKey = 'key';
4
+ const stsAssumeRole = 'sts:AssumeRole';
5
+ let cachedActions = undefined;
6
+ /**
7
+ * Get a set of actions that do not automatically trust the current account, in all lower case.
8
+ *
9
+ * @returns the set of actions that do not automatically trust the current account in all lower case
10
+ */
11
+ export async function actionsThatDoNotAutomaticallyTrustTheCurrentAccount() {
12
+ if (cachedActions) {
13
+ return cachedActions;
14
+ }
15
+ const kmsActions = await iamActionsForService(kms);
16
+ const allActions = new Set([stsAssumeRole.toLowerCase()]);
17
+ for (const action of kmsActions) {
18
+ const details = await iamActionDetails(kms, action);
19
+ if (details.resourceTypes.length === 1 &&
20
+ details.resourceTypes.some((rt) => rt.name === kmsKey)) {
21
+ allActions.add(`${kms}:${action.toLowerCase()}`);
22
+ }
23
+ }
24
+ cachedActions = allActions;
25
+ return allActions;
26
+ }
27
+ //# sourceMappingURL=untrustingActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"untrustingActions.js","sourceRoot":"","sources":["../../../src/whoCan/untrustingActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE9E,MAAM,GAAG,GAAG,KAAK,CAAA;AACjB,MAAM,MAAM,GAAG,KAAK,CAAA;AACpB,MAAM,aAAa,GAAG,gBAAgB,CAAA;AAEtC,IAAI,aAAa,GAA4B,SAAS,CAAA;AAEtD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mDAAmD;IACvE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACjE,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACnD,IACE,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;YAClC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,EACtD,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IAED,aAAa,GAAG,UAAU,CAAA;IAC1B,OAAO,UAAU,CAAA;AACnB,CAAC"}
@@ -0,0 +1,295 @@
1
+ import { type TopLevelConfig } from '@actsecurity/iam-collect';
2
+ import { IamCollectClient } from '../collect/client.js';
3
+ import { type ClientFactoryPlugin } from '../collect/collect.js';
4
+ import { type ResourceType } from '@actsecurity/iam-data';
5
+ import { type AllowedConditionExpression, type IgnoredConditions, type RequestDenial, type RequestGrant } from '@actsecurity/iam-simulate';
6
+ import { type S3AbacOverride } from '../utils/s3Abac.js';
7
+ import { type LightRequestAnalysis } from './requestAnalysis.js';
8
+ import { type WorkerBootstrapPlugin } from './WhoCanProcessor.js';
9
+ /**
10
+ * Limits the set of principals that `whoCan` tests. The scope is a union of
11
+ * principal ARNs, account IDs, and OU paths. It is **intersected** with the
12
+ * resource-policy-derived scope so that principals outside the resource
13
+ * policy's reach are still excluded.
14
+ */
15
+ export interface WhoCanPrincipalScope {
16
+ /** Exact principal ARNs to test individually (does NOT expand to whole-account search). */
17
+ principals?: string[];
18
+ /** Account IDs — test all principals in these accounts. */
19
+ accounts?: string[];
20
+ /** OU paths — test all principals in accounts under these OUs. Each string is a slash-separated path like `o-aaa/r-bbb/ou-ccc`, matching the format used by `aws:PrincipalOrgPaths` and `specificOrganizationalUnits`. */
21
+ ous?: string[];
22
+ }
23
+ export interface ResourceAccessRequest {
24
+ /**
25
+ * The ARN of the resource to check access for. If not provided, actions must be specified.
26
+ */
27
+ resource?: string;
28
+ /**
29
+ * The account ID the resource belongs to.
30
+ * By default this will be looked up based on the resource ARN, but that may
31
+ * not be possible for all actions, such as wildcard actions like `s3:ListAllMyBuckets`.
32
+ */
33
+ resourceAccount?: string;
34
+ /**
35
+ * The actions to check access for. If not provided, actions will be looked up based on the resource ARN.
36
+ */
37
+ actions: string[];
38
+ /**
39
+ * Whether to sort the results for consistent output.
40
+ */
41
+ sort?: boolean;
42
+ /**
43
+ * An override for S3 ABAC being enabled when checking access to S3 Bucket resources.
44
+ */
45
+ s3AbacOverride?: S3AbacOverride;
46
+ /**
47
+ * The number of worker threads to use for simulations beyond the main thread.
48
+ * If not provided, defaults to number of CPUs - 1.
49
+ */
50
+ workerThreads?: number;
51
+ /**
52
+ * Deny details callback for simulations. If the callback returns true, deny details will be included for that simulation.
53
+ */
54
+ denyDetailsCallback?: (details: LightRequestAnalysis) => boolean;
55
+ /**
56
+ * If true, grant details will be collected for allowed simulations.
57
+ */
58
+ collectGrantDetails?: boolean;
59
+ /**
60
+ * Optional context keys to consider strict when running simulations for this whoCan request.
61
+ * These will be added to the simulation strict context keys used by default.
62
+ */
63
+ strictContextKeys?: string[];
64
+ /**
65
+ * Optional plugin to wrap the collect client with a custom implementation.
66
+ * Used for scenario testing where a layered client needs to be used in worker threads.
67
+ */
68
+ clientFactoryPlugin?: ClientFactoryPlugin;
69
+ /**
70
+ * Optional plugin that runs once per worker thread at startup before any work
71
+ * is processed. Use this for loading instrumentation, initializing logging
72
+ * context, or other worker-lifetime setup.
73
+ */
74
+ workerBootstrapPlugin?: WorkerBootstrapPlugin;
75
+ /**
76
+ * Optional scope to limit the set of principals tested. When provided, the
77
+ * scope is intersected with the resource-policy-derived scope to narrow the
78
+ * search space.
79
+ */
80
+ principalScope?: WhoCanPrincipalScope;
81
+ /**
82
+ * Whether to ignore an existing principal index. This is for testing purposes.
83
+ */
84
+ ignorePrincipalIndex?: boolean;
85
+ }
86
+ /**
87
+ * Represents a resource pattern that is allowed for a principal, used when wildcards
88
+ * are in the simulation request.
89
+ */
90
+ export interface WhoCanAllowedResourcePattern {
91
+ /**
92
+ * The resource pattern that allows access.
93
+ */
94
+ pattern: string;
95
+ /**
96
+ * The resource type for the pattern.
97
+ */
98
+ resourceType: string;
99
+ /**
100
+ * The structured expression describing the conditions under which access is allowed
101
+ * for this pattern. Undefined when access is unconditional.
102
+ */
103
+ conditions?: AllowedConditionExpression;
104
+ /**
105
+ * Discovery-mode condition diagnostics that were ignored while determining this
106
+ * pattern could be allowed. This was returned in `conditions` in earlier versions.
107
+ */
108
+ ignoredConditions?: IgnoredConditions;
109
+ /**
110
+ * If true, access is only allowed when the session has a specific session name.
111
+ */
112
+ dependsOnSessionName?: boolean;
113
+ /**
114
+ * The policy statements that granted access for this resource pattern.
115
+ */
116
+ details?: RequestGrant[];
117
+ }
118
+ export interface WhoCanAllowed {
119
+ principal: string;
120
+ service: string;
121
+ action: string;
122
+ level: string;
123
+ /**
124
+ * The structured expression describing the conditions under which access is allowed.
125
+ * This will be undefined if access is allowed unconditionally or if `allowedPatterns`
126
+ * are provided.
127
+ */
128
+ conditions?: AllowedConditionExpression;
129
+ /**
130
+ * Discovery-mode condition diagnostics that were ignored while determining access
131
+ * could be allowed. This was returned in `conditions` in earlier versions.
132
+ */
133
+ ignoredConditions?: IgnoredConditions;
134
+ /**
135
+ * The resource type for the allowed action. This will be undefined if `allowedPatterns` are provided,
136
+ * since those patterns specify the resource type directly.
137
+ */
138
+ resourceType?: string;
139
+ /**
140
+ * If true, indicates that access is only allowed when the session has a specific session name.
141
+ * This will be false or undefined if `allowedPatterns` are provided, since those patterns would specify the session name condition directly.
142
+ */
143
+ dependsOnSessionName?: boolean;
144
+ /**
145
+ * If there are multiple "allowed" patterns for a single principal because of wildcards
146
+ * in the simulation request, this array will contain the different resource patterns that allow access.
147
+ */
148
+ allowedPatterns?: WhoCanAllowedResourcePattern[];
149
+ /**
150
+ * The policy statements that granted access for this result.
151
+ * Only populated for single resource simulations. For wildcard
152
+ * simulations, see `details` on each entry in `allowedPatterns`.
153
+ */
154
+ details?: RequestGrant[];
155
+ }
156
+ /**
157
+ * Base type for WhoCanDenyDetails
158
+ */
159
+ interface BaseWhoCanDenyDetail {
160
+ /**
161
+ * The principal that was denied
162
+ */
163
+ principal: string;
164
+ /**
165
+ * The service the denied action belongs to
166
+ */
167
+ service: string;
168
+ /**
169
+ * The action that was denied, without the service prefix (e.g. "GetObject" instead of "s3:GetObject")
170
+ */
171
+ action: string;
172
+ }
173
+ /**
174
+ * Denial details for a single resource request.
175
+ */
176
+ export interface SingleWhoCanDenyDetail extends BaseWhoCanDenyDetail {
177
+ type: 'single';
178
+ /**
179
+ * The specific details of why the request was denied
180
+ */
181
+ details: RequestDenial[];
182
+ }
183
+ /**
184
+ * Denial details for a wildcard resource request that may have matched multiple patterns.
185
+ */
186
+ export interface WildcardWhoCanDenyDetail extends BaseWhoCanDenyDetail {
187
+ type: 'wildcard';
188
+ /**
189
+ * The resource patterns that were denied. Could be empty if there
190
+ * were no patterns found that matched the resource for the principal and action.
191
+ *
192
+ * The same pattern can be returned multiple times if there are multiple resource
193
+ * types for that pattern/action combination.
194
+ */
195
+ deniedResources: {
196
+ /**
197
+ * The pattern tested in the simulation that resulted in a denial.
198
+ */
199
+ pattern: string;
200
+ /**
201
+ * The resource type the pattern was tested against.
202
+ */
203
+ resourceType: string;
204
+ /**
205
+ * The specific details of why the request was denied for this pattern.
206
+ */
207
+ details: RequestDenial[];
208
+ }[];
209
+ }
210
+ /**
211
+ * Details on why a principal was denied access to a resource for a specific action, including the specific patterns that were tested and resulted in denials.
212
+ */
213
+ export type WhoCanDenyDetail = SingleWhoCanDenyDetail | WildcardWhoCanDenyDetail;
214
+ export interface WhoCanResponse {
215
+ simulationCount: number;
216
+ allowed: WhoCanAllowed[];
217
+ allAccountsChecked: boolean;
218
+ accountsNotFound: string[];
219
+ organizationsNotFound: string[];
220
+ organizationalUnitsNotFound: string[];
221
+ principalsNotFound: string[];
222
+ denyDetails?: WhoCanDenyDetail[] | undefined;
223
+ }
224
+ /**
225
+ * Processes a single whoCan request by creating a temporary WhoCanProcessor,
226
+ * enqueuing the request, waiting for it to settle, and shutting down. This
227
+ * preserves the original one-shot behavior where workers and cache are created
228
+ * and destroyed per call.
229
+ *
230
+ * For better performance when running multiple requests, use WhoCanProcessor
231
+ * directly to keep workers and cache alive across calls.
232
+ *
233
+ * @param collectConfigs the collect configurations for loading IAM data
234
+ * @param partition the AWS partition (e.g. 'aws', 'aws-cn')
235
+ * @param request the whoCan request parameters
236
+ * @returns the whoCan response with allowed principals and optional deny details
237
+ */
238
+ export declare function whoCan(collectConfigs: TopLevelConfig[], partition: string, request: ResourceAccessRequest): Promise<WhoCanResponse>;
239
+ export declare function uniqueAccountsToCheck(collectClient: IamCollectClient, accountsToCheck: AccountsToCheck): Promise<{
240
+ accountsNotFound: string[];
241
+ organizationsNotFound: string[];
242
+ organizationalUnitsNotFound: string[];
243
+ accounts: string[];
244
+ }>;
245
+ export interface AccountsToCheck {
246
+ allAccounts: boolean;
247
+ specificAccounts: string[];
248
+ specificPrincipals: string[];
249
+ specificOrganizations: string[];
250
+ specificOrganizationalUnits: string[];
251
+ checkAnonymous: boolean;
252
+ /**
253
+ * Whether every principal from the resource account should be checked.
254
+ */
255
+ checkAllFromResourceAccount: boolean;
256
+ /**
257
+ * Whether the resource policy explicitly grants access to principals in the
258
+ * resource account. This is true when:
259
+ * - The policy has no narrowing conditions (open wildcard or NotPrincipal), or
260
+ * - The policy conditions explicitly reference the resource account, or
261
+ * - The policy narrows to orgs/OUs (which may include the resource account).
262
+ */
263
+ resourceAccountTrustedByPolicy: boolean;
264
+ }
265
+ /**
266
+ * Derives the accounts and specific principals that should be considered from a resource policy.
267
+ *
268
+ * Specific STS session principals are resolved through collect data so account-enumeration
269
+ * paths can de-duplicate path-qualified roles that resolve from pathless session ARNs.
270
+ *
271
+ * @param resourcePolicy The resource policy document to inspect.
272
+ * @param resourceAccount The account ID that owns the resource, when known.
273
+ * @param collectClient The collect client used to resolve canonical principal ARNs.
274
+ * @returns The accounts, principals, organizations, and related flags to consider for whoCan.
275
+ */
276
+ export declare function accountsToCheckBasedOnResourcePolicy(resourcePolicy: any, resourceAccount: string | undefined, collectClient: IamCollectClient): Promise<AccountsToCheck>;
277
+ export declare function actionsForWhoCan(request: Pick<ResourceAccessRequest, 'actions' | 'resource'>): Promise<string[]>;
278
+ /**
279
+ * Get the the possible resource types for an action and resource
280
+ *
281
+ * @param service the service the action belongs to
282
+ * @param action the action to get the resource type for
283
+ * @param resourceArn the resource type matching the action, if any
284
+ * @throws an error if the service or action does not exist, or if the action is a wildcard only action
285
+ */
286
+ export declare function lookupActionsForResourceArn(resourceArn: string): Promise<string[]>;
287
+ export declare function findResourceTypeForArn(resourceArn: string): Promise<[string, ResourceType]>;
288
+ /**
289
+ * Sort the results in a WhoCanResponse in place for consistent output
290
+ *
291
+ * @param whoCanResponse the WhoCanResponse to sort
292
+ */
293
+ export declare function sortWhoCanResults(whoCanResponse: WhoCanResponse): void;
294
+ export {};
295
+ //# sourceMappingURL=whoCan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoCan.d.ts","sourceRoot":"","sources":["../../../src/whoCan/whoCan.ts"],"names":[],"mappings":"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"}