@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,571 @@
1
+ import {} from '@actsecurity/iam-collect';
2
+ import { IamCollectClient } from '../collect/client.js';
3
+ import {} from '../collect/collect.js';
4
+ import { iamActionDetails, iamActionExists, iamActionsForService, iamResourceTypeDetails, iamResourceTypesForService, iamServiceExists } from '@actsecurity/iam-data';
5
+ import { loadPolicy } from '@actsecurity/iam-policy';
6
+ import {} from '@actsecurity/iam-simulate';
7
+ import { mostSpecificMatchingResourceTypePatterns, splitArnParts } from '@actsecurity/iam-utils';
8
+ import { Arn } from '../utils/arn.js';
9
+ import {} from '../utils/s3Abac.js';
10
+ import { AssumeRoleActions } from '../utils/sts.js';
11
+ import {} from './requestAnalysis.js';
12
+ import { WhoCanProcessor } from './WhoCanProcessor.js';
13
+ /**
14
+ * Processes a single whoCan request by creating a temporary WhoCanProcessor,
15
+ * enqueuing the request, waiting for it to settle, and shutting down. This
16
+ * preserves the original one-shot behavior where workers and cache are created
17
+ * and destroyed per call.
18
+ *
19
+ * For better performance when running multiple requests, use WhoCanProcessor
20
+ * directly to keep workers and cache alive across calls.
21
+ *
22
+ * @param collectConfigs the collect configurations for loading IAM data
23
+ * @param partition the AWS partition (e.g. 'aws', 'aws-cn')
24
+ * @param request the whoCan request parameters
25
+ * @returns the whoCan response with allowed principals and optional deny details
26
+ */
27
+ export async function whoCan(collectConfigs, partition, request) {
28
+ let settledEvent;
29
+ const processor = await WhoCanProcessor.create({
30
+ collectConfigs,
31
+ partition,
32
+ tuning: {
33
+ workerThreads: request.workerThreads
34
+ },
35
+ ignorePrincipalIndex: request.ignorePrincipalIndex,
36
+ clientFactoryPlugin: request.clientFactoryPlugin,
37
+ workerBootstrapPlugin: request.workerBootstrapPlugin,
38
+ s3AbacOverride: request.s3AbacOverride,
39
+ collectGrantDetails: !!request.collectGrantDetails,
40
+ onRequestSettled: async (event) => {
41
+ settledEvent = event;
42
+ }
43
+ });
44
+ try {
45
+ processor.enqueueWhoCan({
46
+ resource: request.resource,
47
+ resourceAccount: request.resourceAccount,
48
+ actions: request.actions,
49
+ sort: request.sort,
50
+ denyDetailsCallback: request.denyDetailsCallback,
51
+ principalScope: request.principalScope,
52
+ strictContextKeys: request.strictContextKeys
53
+ });
54
+ await processor.waitForIdle();
55
+ if (!settledEvent) {
56
+ throw new Error('whoCan request did not settle');
57
+ }
58
+ if (settledEvent.status === 'rejected') {
59
+ throw settledEvent.error;
60
+ }
61
+ return settledEvent.result;
62
+ }
63
+ finally {
64
+ await processor.shutdown();
65
+ }
66
+ }
67
+ export async function uniqueAccountsToCheck(collectClient, accountsToCheck) {
68
+ const returnValue = {
69
+ accountsNotFound: [],
70
+ organizationsNotFound: [],
71
+ organizationalUnitsNotFound: [],
72
+ accounts: []
73
+ };
74
+ if (accountsToCheck.allAccounts) {
75
+ returnValue.accounts = await collectClient.allAccounts();
76
+ return returnValue;
77
+ }
78
+ const uniqueAccounts = new Set();
79
+ for (const account of accountsToCheck.specificAccounts || []) {
80
+ const accountExists = await collectClient.accountExists(account);
81
+ if (accountExists) {
82
+ uniqueAccounts.add(account);
83
+ }
84
+ else {
85
+ returnValue.accountsNotFound.push(account);
86
+ }
87
+ }
88
+ for (const ouPath of accountsToCheck.specificOrganizationalUnits || []) {
89
+ const parts = ouPath.split('/');
90
+ const orgId = parts[0];
91
+ const pathParts = parts.slice(1);
92
+ const [found, accounts] = await collectClient.getAccountsForOrgPath(orgId, pathParts);
93
+ for (const account of accounts) {
94
+ uniqueAccounts.add(account);
95
+ }
96
+ if (!found) {
97
+ returnValue.organizationalUnitsNotFound.push(ouPath);
98
+ }
99
+ }
100
+ for (const orgId of accountsToCheck.specificOrganizations || []) {
101
+ const [found, accounts] = await collectClient.getAccountsForOrganization(orgId);
102
+ for (const account of accounts) {
103
+ uniqueAccounts.add(account);
104
+ }
105
+ if (!found) {
106
+ returnValue.organizationsNotFound.push(orgId);
107
+ }
108
+ }
109
+ returnValue.accounts = Array.from(uniqueAccounts);
110
+ return returnValue;
111
+ }
112
+ /**
113
+ * Splits an ARN-like string on `:` while treating `${...}` blocks as opaque.
114
+ * Colons inside `${...}` dynamic variable references are not used as split points.
115
+ *
116
+ * For example, `arn:${aws:Partition}:iam::999999999999:role/*` splits into
117
+ * `['arn', '${aws:Partition}', 'iam', '', '999999999999', 'role/*']`.
118
+ *
119
+ * @param value - The raw ARN string, possibly containing `${...}` references.
120
+ * @returns An array of colon-delimited segments.
121
+ */
122
+ function splitArnIgnoringDynamicVars(value) {
123
+ const segments = [];
124
+ let current = '';
125
+ let depth = 0;
126
+ for (let i = 0; i < value.length; i++) {
127
+ const ch = value[i];
128
+ if (ch === '$' && i + 1 < value.length && value[i + 1] === '{') {
129
+ depth++;
130
+ current += '${';
131
+ i++; // skip the '{'
132
+ }
133
+ else if (ch === '}' && depth > 0) {
134
+ depth--;
135
+ current += '}';
136
+ }
137
+ else if (ch === ':' && depth === 0) {
138
+ segments.push(current);
139
+ current = '';
140
+ }
141
+ else {
142
+ current += ch;
143
+ }
144
+ }
145
+ segments.push(current);
146
+ return segments;
147
+ }
148
+ const PRINCIPAL_ARN_PATTERN_OPERATORS = new Set(['stringlike', 'arnequals', 'arnlike']);
149
+ /**
150
+ * Checks whether a string contains any wildcard or dynamic variable characters
151
+ * (`*`, `?`, or `$`).
152
+ *
153
+ * @param value - The string to check.
154
+ * @returns `true` if the string contains `*`, `?`, or `$`.
155
+ */
156
+ function hasWildcardOrDynamic(value) {
157
+ return value.includes('*') || value.includes('?') || value.includes('$');
158
+ }
159
+ /** The 3 scalar condition keys that are only populated for service principal requests. */
160
+ const UNNAMED_SERVICE_SCALAR_KEYS = new Set([
161
+ 'aws:sourceaccount',
162
+ 'aws:sourceowner',
163
+ 'aws:sourceorgid'
164
+ ]);
165
+ /**
166
+ * Checks whether a positive operator is used on a scalar service-principal-only key.
167
+ * Accepts `StringEquals` family and `StringLike`.
168
+ *
169
+ * @param op - The condition operation to check.
170
+ * @returns `true` if the operator is a positive match for a scalar key.
171
+ */
172
+ function isPositiveScalarOperator(op) {
173
+ return (op.value().toLowerCase().startsWith('stringequals') ||
174
+ op.baseOperator().toLowerCase() === 'stringlike');
175
+ }
176
+ /**
177
+ * Checks whether a positive operator is used on the `aws:SourceOrgPaths` array key.
178
+ * Only `ForAnyValue:StringEquals*` and `ForAnyValue:StringLike` qualify.
179
+ * `ForAllValues` and plain operators without a set operator do not.
180
+ *
181
+ * @param op - The condition operation to check.
182
+ * @returns `true` if the operator is a valid positive match for the array key.
183
+ */
184
+ function isPositiveOrgPathsOperator(op) {
185
+ if (op.setOperator() !== 'ForAnyValue')
186
+ return false;
187
+ const base = op.baseOperator().toLowerCase();
188
+ return base.startsWith('stringequals') || base === 'stringlike';
189
+ }
190
+ /**
191
+ * Inspects a statement's conditions to determine if the statement effectively
192
+ * requires an AWS service principal. Used for wildcard-principal Allow statements
193
+ * to avoid unnecessarily widening the whoCan search scope.
194
+ *
195
+ * @param conditions - The conditions from the statement to inspect.
196
+ * @returns A classification indicating whether the statement is not service-only,
197
+ * requires an unnamed service principal (skip entirely), or names specific
198
+ * service principals (extract for simulation).
199
+ */
200
+ function checkForServicePrincipalConditions(conditions) {
201
+ let hasUnnamedServiceKey = false;
202
+ const namedServicePrincipals = [];
203
+ for (const cond of conditions) {
204
+ const key = cond.conditionKey().toLowerCase();
205
+ const op = cond.operation();
206
+ if (op.isIfExists())
207
+ continue;
208
+ // Category 1a: Scalar unnamed keys (aws:SourceAccount, aws:SourceOwner, aws:SourceOrgID)
209
+ if (UNNAMED_SERVICE_SCALAR_KEYS.has(key) && isPositiveScalarOperator(op)) {
210
+ hasUnnamedServiceKey = true;
211
+ }
212
+ // Category 1b: Array unnamed key (aws:SourceOrgPaths) — requires ForAnyValue
213
+ if (key === 'aws:sourceorgpaths' && isPositiveOrgPathsOperator(op)) {
214
+ hasUnnamedServiceKey = true;
215
+ }
216
+ // Category 1c: aws:PrincipalIsAWSService with Bool or StringEquals and value 'true'
217
+ // Multiple condition values are ORed, so mixed ['true', 'false'] is NOT service-only.
218
+ // All values must be 'true' for the condition to exclusively require a service principal.
219
+ if (key === 'aws:principalisawsservice') {
220
+ const baseOp = op.baseOperator().toLowerCase();
221
+ const opVal = op.value().toLowerCase();
222
+ const isBoolOrStringEquals = baseOp === 'bool' || opVal.startsWith('stringequals');
223
+ const values = cond.conditionValues();
224
+ if (isBoolOrStringEquals &&
225
+ values.length > 0 &&
226
+ values.every((v) => v.toLowerCase() === 'true')) {
227
+ hasUnnamedServiceKey = true;
228
+ }
229
+ }
230
+ // Category 2: aws:PrincipalServiceName — extract named service principals
231
+ if (key === 'aws:principalservicename' &&
232
+ op.value().toLowerCase().startsWith('stringequals') &&
233
+ !cond.conditionValues().some((v) => v.includes('$'))) {
234
+ namedServicePrincipals.push(...cond.conditionValues());
235
+ }
236
+ }
237
+ // Named takes priority — the simulator fills aws:SourceAccount etc. for service principals
238
+ if (namedServicePrincipals.length > 0) {
239
+ return { type: 'named-service-only', principals: namedServicePrincipals };
240
+ }
241
+ if (hasUnnamedServiceKey) {
242
+ return { type: 'unnamed-service-only' };
243
+ }
244
+ return { type: 'not-service-only' };
245
+ }
246
+ /**
247
+ * Derives the accounts and specific principals that should be considered from a resource policy.
248
+ *
249
+ * Specific STS session principals are resolved through collect data so account-enumeration
250
+ * paths can de-duplicate path-qualified roles that resolve from pathless session ARNs.
251
+ *
252
+ * @param resourcePolicy The resource policy document to inspect.
253
+ * @param resourceAccount The account ID that owns the resource, when known.
254
+ * @param collectClient The collect client used to resolve canonical principal ARNs.
255
+ * @returns The accounts, principals, organizations, and related flags to consider for whoCan.
256
+ */
257
+ export async function accountsToCheckBasedOnResourcePolicy(resourcePolicy, resourceAccount, collectClient) {
258
+ const accountsToCheck = {
259
+ allAccounts: false,
260
+ specificAccounts: [],
261
+ specificPrincipals: [],
262
+ specificOrganizations: [],
263
+ specificOrganizationalUnits: [],
264
+ checkAnonymous: false,
265
+ checkAllFromResourceAccount: false,
266
+ resourceAccountTrustedByPolicy: false
267
+ };
268
+ if (!resourcePolicy) {
269
+ return accountsToCheck;
270
+ }
271
+ const policy = loadPolicy(resourcePolicy);
272
+ for (const statement of policy.statements()) {
273
+ if (statement.isAllow() && statement.isNotPrincipalStatement()) {
274
+ accountsToCheck.allAccounts = true;
275
+ accountsToCheck.checkAllFromResourceAccount = true;
276
+ accountsToCheck.resourceAccountTrustedByPolicy = true;
277
+ }
278
+ if (statement.isAllow() && statement.isPrincipalStatement()) {
279
+ const principals = statement.principals();
280
+ let hasWildcardPrincipal = false;
281
+ for (const principal of principals) {
282
+ if (principal.isWildcardPrincipal()) {
283
+ hasWildcardPrincipal = true;
284
+ }
285
+ else if (principal.isAccountPrincipal()) {
286
+ accountsToCheck.specificAccounts.push(principal.accountId());
287
+ if (principal.accountId() === resourceAccount) {
288
+ accountsToCheck.resourceAccountTrustedByPolicy = true;
289
+ }
290
+ }
291
+ else {
292
+ accountsToCheck.specificPrincipals.push(await resolveResourcePolicyPrincipalArn(principal.value(), collectClient));
293
+ }
294
+ }
295
+ if (hasWildcardPrincipal) {
296
+ const serviceCheck = checkForServicePrincipalConditions(statement.conditions());
297
+ if (serviceCheck.type === 'unnamed-service-only') {
298
+ continue;
299
+ }
300
+ if (serviceCheck.type === 'named-service-only') {
301
+ accountsToCheck.specificPrincipals.push(...serviceCheck.principals);
302
+ continue;
303
+ }
304
+ const specificOrgs = [];
305
+ const specificOus = [];
306
+ const specificAccounts = [];
307
+ const specificPrincipals = [];
308
+ let principalArnRequiresAllAccounts = false;
309
+ let hasNonPrincipalArnAccountNarrowing = false;
310
+ const conditions = statement.conditions();
311
+ for (const cond of conditions) {
312
+ const condKey = cond.conditionKey().toLowerCase();
313
+ if (condKey === 'aws:principalorgid' &&
314
+ cond.operation().value().toLowerCase().startsWith('stringequals') &&
315
+ !cond.conditionValues().some((v) => v.includes('$'))) {
316
+ specificOrgs.push(...cond.conditionValues());
317
+ }
318
+ if (condKey === 'aws:principalorgpaths' &&
319
+ cond.operation().baseOperator().toLowerCase().startsWith('stringequals') &&
320
+ !cond.conditionValues().some((v) => v.includes('$'))) {
321
+ specificOus.push(...cond.conditionValues());
322
+ }
323
+ if (condKey === 'aws:principalaccount' || condKey === 'kms:calleraccount') {
324
+ const opVal = cond.operation().value().toLowerCase();
325
+ const baseOp = cond.operation().baseOperator().toLowerCase();
326
+ const values = cond.conditionValues();
327
+ const hasDynamic = values.some((v) => v.includes('$'));
328
+ if (opVal.startsWith('stringequals') && !hasDynamic) {
329
+ // StringEquals family — all values are literal account IDs
330
+ specificAccounts.push(...values);
331
+ hasNonPrincipalArnAccountNarrowing = true;
332
+ }
333
+ else if (baseOp === 'stringlike' &&
334
+ !hasDynamic &&
335
+ values.every((v) => !v.includes('*') && !v.includes('?'))) {
336
+ // StringLike where ALL values are literal (no wildcards or dynamic vars)
337
+ specificAccounts.push(...values);
338
+ hasNonPrincipalArnAccountNarrowing = true;
339
+ }
340
+ }
341
+ if (condKey === 'aws:principalarn') {
342
+ const opValue = cond.operation().value().toLowerCase();
343
+ const baseOp = cond.operation().baseOperator().toLowerCase();
344
+ const isExactOperator = opValue.startsWith('stringequals');
345
+ const isPatternOperator = PRINCIPAL_ARN_PATTERN_OPERATORS.has(baseOp);
346
+ if (!isExactOperator && !isPatternOperator) {
347
+ continue;
348
+ }
349
+ if (cond.operation().isIfExists()) {
350
+ accountsToCheck.checkAnonymous = true;
351
+ }
352
+ for (const value of cond.conditionValues()) {
353
+ let extractedPrincipalArnScope = false;
354
+ if (!hasWildcardOrDynamic(value)) {
355
+ // Exact literal — push as a specific principal
356
+ specificPrincipals.push(await resolveResourcePolicyPrincipalArn(value, collectClient));
357
+ extractedPrincipalArnScope = true;
358
+ }
359
+ else if (isExactOperator && !value.includes('*') && !value.includes('?')) {
360
+ // Exact operator with a dynamic variable but no wildcards — try account extraction
361
+ const segments = splitArnIgnoringDynamicVars(value);
362
+ if (segments.length >= 6 && segments[0].toLowerCase() === 'arn') {
363
+ const account = segments[4];
364
+ if (account && !hasWildcardOrDynamic(account)) {
365
+ specificAccounts.push(account);
366
+ extractedPrincipalArnScope = true;
367
+ }
368
+ }
369
+ }
370
+ else {
371
+ // Pattern operator or value with wildcards — try account extraction
372
+ const segments = splitArnIgnoringDynamicVars(value);
373
+ if (segments.length >= 6 && segments[0].toLowerCase() === 'arn') {
374
+ const account = segments[4];
375
+ if (account && !hasWildcardOrDynamic(account)) {
376
+ specificAccounts.push(account);
377
+ extractedPrincipalArnScope = true;
378
+ }
379
+ }
380
+ }
381
+ if (!extractedPrincipalArnScope) {
382
+ // Wildcard-account or otherwise non-extractable PrincipalArn patterns can match any account.
383
+ principalArnRequiresAllAccounts = true;
384
+ }
385
+ }
386
+ }
387
+ }
388
+ if (specificPrincipals.length > 0) {
389
+ accountsToCheck.specificPrincipals.push(...specificPrincipals);
390
+ }
391
+ if (principalArnRequiresAllAccounts &&
392
+ specificOus.length === 0 &&
393
+ specificOrgs.length === 0 &&
394
+ !hasNonPrincipalArnAccountNarrowing) {
395
+ accountsToCheck.allAccounts = true;
396
+ accountsToCheck.resourceAccountTrustedByPolicy = true;
397
+ accountsToCheck.checkAllFromResourceAccount = true;
398
+ if (specificAccounts.length > 0) {
399
+ accountsToCheck.specificAccounts.push(...specificAccounts);
400
+ }
401
+ }
402
+ else if (specificAccounts.length > 0) {
403
+ accountsToCheck.specificAccounts.push(...specificAccounts);
404
+ if (resourceAccount && specificAccounts.includes(resourceAccount)) {
405
+ accountsToCheck.resourceAccountTrustedByPolicy = true;
406
+ accountsToCheck.checkAllFromResourceAccount = true;
407
+ }
408
+ }
409
+ else if (specificOus.length > 0) {
410
+ accountsToCheck.specificOrganizationalUnits.push(...specificOus);
411
+ // The resource account may be in these OUs; conservatively assume trusted
412
+ accountsToCheck.resourceAccountTrustedByPolicy = true;
413
+ accountsToCheck.checkAllFromResourceAccount = true;
414
+ }
415
+ else if (specificOrgs.length > 0) {
416
+ accountsToCheck.specificOrganizations.push(...specificOrgs);
417
+ // The resource account may be in these orgs; conservatively assume trusted
418
+ accountsToCheck.resourceAccountTrustedByPolicy = true;
419
+ accountsToCheck.checkAllFromResourceAccount = true;
420
+ }
421
+ else if (specificPrincipals.length === 0) {
422
+ accountsToCheck.allAccounts = true;
423
+ accountsToCheck.resourceAccountTrustedByPolicy = true;
424
+ accountsToCheck.checkAllFromResourceAccount = true;
425
+ }
426
+ }
427
+ }
428
+ }
429
+ return accountsToCheck;
430
+ }
431
+ /**
432
+ * Resolves a resource-policy principal to the canonical collected principal ARN.
433
+ *
434
+ * Resource policies can name STS assumed-role sessions, including pathless session
435
+ * ARNs for path-qualified IAM roles. Resolve through collect data first so
436
+ * whoCan can de-duplicate those principals before simulation, then preserve the
437
+ * previous session-to-role conversion behavior when the principal is not found.
438
+ *
439
+ * @param principalArn The resource-policy principal ARN or service principal to resolve.
440
+ * @param collectClient The collect client used to resolve canonical principal ARNs.
441
+ * @returns The canonical collected ARN when found, otherwise the original principal ARN.
442
+ */
443
+ async function resolveResourcePolicyPrincipalArn(principalArn, collectClient) {
444
+ if (!principalArn.startsWith('arn:')) {
445
+ return principalArn;
446
+ }
447
+ return (await collectClient.resolvePrincipalArn(principalArn)) ?? principalArn;
448
+ }
449
+ export async function actionsForWhoCan(request) {
450
+ const { actions } = request;
451
+ if (actions && actions.length > 0) {
452
+ const validActions = [];
453
+ for (const action of actions) {
454
+ const parts = action.split(':');
455
+ if (parts.length !== 2) {
456
+ continue;
457
+ }
458
+ const [service, actionName] = parts;
459
+ const serviceExists = await iamServiceExists(service);
460
+ if (!serviceExists) {
461
+ continue;
462
+ }
463
+ const actionExists = await iamActionExists(service, actionName);
464
+ if (!actionExists) {
465
+ continue;
466
+ }
467
+ validActions.push(action);
468
+ }
469
+ return validActions;
470
+ }
471
+ if (!request.resource) {
472
+ return [];
473
+ }
474
+ return lookupActionsForResourceArn(request.resource);
475
+ }
476
+ /**
477
+ * Get the the possible resource types for an action and resource
478
+ *
479
+ * @param service the service the action belongs to
480
+ * @param action the action to get the resource type for
481
+ * @param resourceArn the resource type matching the action, if any
482
+ * @throws an error if the service or action does not exist, or if the action is a wildcard only action
483
+ */
484
+ export async function lookupActionsForResourceArn(resourceArn) {
485
+ const [service, resourceType] = await findResourceTypeForArn(resourceArn);
486
+ const resourceTypeKey = resourceType.key;
487
+ const selectedActions = [];
488
+ const serviceActions = await iamActionsForService(service);
489
+ for (const action of serviceActions) {
490
+ const actionDetails = await iamActionDetails(service, action);
491
+ for (const rt of actionDetails.resourceTypes) {
492
+ if (rt.name == resourceTypeKey) {
493
+ selectedActions.push(`${service}:${action}`);
494
+ break; // No need to check other resource types for this action
495
+ }
496
+ }
497
+ }
498
+ const isRole = new Arn(resourceArn).matches({ service: 'iam', resourceType: 'role' });
499
+ if (isRole) {
500
+ selectedActions.push(...AssumeRoleActions.values());
501
+ }
502
+ return selectedActions;
503
+ }
504
+ export async function findResourceTypeForArn(resourceArn) {
505
+ const arnParts = splitArnParts(resourceArn);
506
+ const service = arnParts.service.toLowerCase();
507
+ const serviceExists = await iamServiceExists(service);
508
+ if (!serviceExists) {
509
+ throw new Error(`Unable to find service ${service} for resource ${resourceArn}`);
510
+ }
511
+ const sortedResourceTypes = await allResourceTypesByArnLength(service);
512
+ const matchingPatterns = mostSpecificMatchingResourceTypePatterns(resourceArn, sortedResourceTypes.map((resourceType) => resourceType.arn));
513
+ const resourceType = sortedResourceTypes.find((rt) => matchingPatterns.includes(rt.arn));
514
+ if (resourceType) {
515
+ return [service, resourceType];
516
+ }
517
+ throw new Error(`Unable to find resource type for service ${service} and resource ${resourceArn}.`);
518
+ }
519
+ async function allResourceTypesByArnLength(service) {
520
+ const resourceTypeKeys = await iamResourceTypesForService(service);
521
+ const sortedResourceTypes = [];
522
+ for (const key of resourceTypeKeys) {
523
+ const details = await iamResourceTypeDetails(service, key);
524
+ sortedResourceTypes.push(details);
525
+ }
526
+ return sortedResourceTypes.sort((a, b) => {
527
+ return b.arn.length - a.arn.length;
528
+ });
529
+ }
530
+ /**
531
+ * Sort the results in a WhoCanResponse in place for consistent output
532
+ *
533
+ * @param whoCanResponse the WhoCanResponse to sort
534
+ */
535
+ export function sortWhoCanResults(whoCanResponse) {
536
+ whoCanResponse.allowed.sort((a, b) => {
537
+ if (a.principal < b.principal)
538
+ return -1;
539
+ if (a.principal > b.principal)
540
+ return 1;
541
+ if (a.service < b.service)
542
+ return -1;
543
+ if (a.service > b.service)
544
+ return 1;
545
+ if (a.action < b.action)
546
+ return -1;
547
+ if (a.action > b.action)
548
+ return 1;
549
+ return 0;
550
+ });
551
+ whoCanResponse.denyDetails?.sort((a, b) => {
552
+ if (a.principal < b.principal)
553
+ return -1;
554
+ if (a.principal > b.principal)
555
+ return 1;
556
+ if (a.service < b.service)
557
+ return -1;
558
+ if (a.service > b.service)
559
+ return 1;
560
+ if (a.action < b.action)
561
+ return -1;
562
+ if (a.action > b.action)
563
+ return 1;
564
+ return 0;
565
+ });
566
+ whoCanResponse.accountsNotFound.sort();
567
+ whoCanResponse.organizationsNotFound.sort();
568
+ whoCanResponse.organizationalUnitsNotFound.sort();
569
+ whoCanResponse.principalsNotFound.sort();
570
+ }
571
+ //# sourceMappingURL=whoCan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoCan.js","sourceRoot":"","sources":["../../../src/whoCan/whoCan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Configuration for a consumer-provided module that runs once per worker thread
3
+ * at startup, before any work is processed. Intended for loading instrumentation
4
+ * (e.g. dd-trace), initializing logging context, or similar worker-lifetime setup.
5
+ *
6
+ * The referenced export must be a function matching
7
+ * `(context: { data: unknown; threadId: number; isMainThread: false }) => void | Promise<void>`.
8
+ */
9
+ export interface WorkerBootstrapPlugin {
10
+ /** Package name (e.g. '@my-app/worker-bootstrap') or absolute path — resolved via dynamic import. */
11
+ module: string;
12
+ /** Name of the exported bootstrap function. */
13
+ factoryExport: string;
14
+ /** JSON-serializable data passed to the bootstrap function. */
15
+ data: unknown;
16
+ }
17
+ //# sourceMappingURL=workerBootstrapPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerBootstrapPlugin.d.ts","sourceRoot":"","sources":["../../../src/whoCan/workerBootstrapPlugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAA;IACd,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAA;IACrB,+DAA+D;IAC/D,IAAI,EAAE,OAAO,CAAA;CACd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workerBootstrapPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerBootstrapPlugin.js","sourceRoot":"","sources":["../../../src/whoCan/workerBootstrapPlugin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export interface ArrayStreamingWorkQueueOptions {
2
+ ringCapacity?: number;
3
+ }
4
+ export declare class ArrayStreamingWorkQueue<T> {
5
+ private onWorkAvailable?;
6
+ private notifyScheduled;
7
+ private work;
8
+ constructor(options?: ArrayStreamingWorkQueueOptions);
9
+ setWorkAvailableCallback(callback: () => void): void;
10
+ enqueue(item: T): void;
11
+ dequeue(): T | undefined;
12
+ length(): number;
13
+ private scheduleNotify;
14
+ }
15
+ //# sourceMappingURL=ArrayStreamingWorkQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayStreamingWorkQueue.d.ts","sourceRoot":"","sources":["../../../src/workers/ArrayStreamingWorkQueue.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,8BAA8B;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,uBAAuB,CAAC,CAAC;IACpC,OAAO,CAAC,eAAe,CAAC,CAAY;IACpC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,IAAI,CAAY;gBAEZ,OAAO,GAAE,8BAAmC;IAEjD,wBAAwB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIpD,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAKtB,OAAO,IAAI,CAAC,GAAG,SAAS;IAIxB,MAAM,IAAI,MAAM;IAIvB,OAAO,CAAC,cAAc;CAavB"}