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