@contrast/contrast 2.0.2-beta.0 → 2.0.2-beta.10

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 (395) hide show
  1. package/README.md +2 -1
  2. package/dist/assess/assessConfig.js +9 -0
  3. package/dist/assess/assessConfig.js.map +1 -0
  4. package/dist/assess/help.js +37 -0
  5. package/dist/assess/help.js.map +1 -0
  6. package/dist/assess/http/index.js +39 -0
  7. package/dist/assess/http/index.js.map +1 -0
  8. package/dist/assess/index.js +69 -0
  9. package/dist/assess/index.js.map +1 -0
  10. package/dist/assess/metadata/findYamlFile.js +59 -0
  11. package/dist/assess/metadata/findYamlFile.js.map +1 -0
  12. package/dist/assess/metadata/index.js +37 -0
  13. package/dist/assess/metadata/index.js.map +1 -0
  14. package/dist/assess/metadata/utils.js +159 -0
  15. package/dist/assess/metadata/utils.js.map +1 -0
  16. package/dist/assess/printing/index.js +11 -0
  17. package/dist/assess/printing/index.js.map +1 -0
  18. package/dist/assess/printing/utils.js +119 -0
  19. package/dist/assess/printing/utils.js.map +1 -0
  20. package/dist/audit/auditConfig.js +9 -0
  21. package/dist/audit/auditConfig.js.map +1 -0
  22. package/dist/{commands/audit → audit}/auditController.js +9 -13
  23. package/dist/audit/auditController.js.map +1 -0
  24. package/dist/audit/auditRequests.js +193 -0
  25. package/dist/audit/auditRequests.js.map +1 -0
  26. package/dist/audit/auditRequestsLegacy.js +63 -0
  27. package/dist/audit/auditRequestsLegacy.js.map +1 -0
  28. package/dist/audit/catalogueApplication/catalogueApplication.js +16 -29
  29. package/dist/audit/catalogueApplication/catalogueApplication.js.map +1 -0
  30. package/dist/audit/help.js +68 -0
  31. package/dist/audit/help.js.map +1 -0
  32. package/dist/audit/languageAnalysisEngine/commonApi.js +12 -14
  33. package/dist/audit/languageAnalysisEngine/commonApi.js.map +1 -0
  34. package/dist/audit/languageAnalysisEngine/filterProjectPath.js +2 -1
  35. package/dist/audit/languageAnalysisEngine/filterProjectPath.js.map +1 -0
  36. package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js +9 -12
  37. package/dist/audit/languageAnalysisEngine/getProjectRootFilenames.js.map +1 -0
  38. package/dist/audit/languageAnalysisEngine/sendSnapshot.js +18 -30
  39. package/dist/audit/languageAnalysisEngine/sendSnapshot.js.map +1 -0
  40. package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +9 -9
  41. package/dist/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js.map +1 -0
  42. package/dist/audit/processAudit.js +21 -0
  43. package/dist/audit/processAudit.js.map +1 -0
  44. package/dist/audit/report/commonReportingFunctions.js +33 -61
  45. package/dist/audit/report/commonReportingFunctions.js.map +1 -0
  46. package/dist/audit/report/models/reportGuidanceModel.js +2 -5
  47. package/dist/audit/report/models/reportGuidanceModel.js.map +1 -0
  48. package/dist/audit/report/models/reportLibraryModel.js +3 -7
  49. package/dist/audit/report/models/reportLibraryModel.js.map +1 -0
  50. package/dist/audit/report/models/reportListModel.js +4 -9
  51. package/dist/audit/report/models/reportListModel.js.map +1 -0
  52. package/dist/audit/report/models/reportOutputModel.js +4 -9
  53. package/dist/audit/report/models/reportOutputModel.js.map +1 -0
  54. package/dist/audit/report/models/reportSeverityModel.js +2 -5
  55. package/dist/audit/report/models/reportSeverityModel.js.map +1 -0
  56. package/dist/audit/report/models/severityCountModel.js +3 -5
  57. package/dist/audit/report/models/severityCountModel.js.map +1 -0
  58. package/dist/audit/report/reportingFeature.js +27 -55
  59. package/dist/audit/report/reportingFeature.js.map +1 -0
  60. package/dist/audit/report/utils/reportUtils.js +28 -59
  61. package/dist/audit/report/utils/reportUtils.js.map +1 -0
  62. package/dist/audit/save.js +14 -16
  63. package/dist/audit/save.js.map +1 -0
  64. package/dist/{commands/audit → audit}/saveFile.js +3 -6
  65. package/dist/audit/saveFile.js.map +1 -0
  66. package/dist/auth/auth.js +103 -0
  67. package/dist/auth/auth.js.map +1 -0
  68. package/dist/auth/authRequests.js +18 -0
  69. package/dist/auth/authRequests.js.map +1 -0
  70. package/dist/cliConstants.js +48 -18
  71. package/dist/cliConstants.js.map +1 -0
  72. package/dist/commands/config/config.js +12 -13
  73. package/dist/commands/config/config.js.map +1 -0
  74. package/dist/commands/learn/learn.js +3 -6
  75. package/dist/commands/learn/learn.js.map +1 -0
  76. package/dist/commands/learn/processLearn.js +3 -6
  77. package/dist/commands/learn/processLearn.js.map +1 -0
  78. package/dist/common/HTTPClient.js +193 -94
  79. package/dist/common/HTTPClient.js.map +1 -0
  80. package/dist/{scan → common}/autoDetection.js +53 -36
  81. package/dist/common/autoDetection.js.map +1 -0
  82. package/dist/common/baseRequest.js +59 -23
  83. package/dist/common/baseRequest.js.map +1 -0
  84. package/dist/common/commonHelp.js +13 -13
  85. package/dist/common/commonHelp.js.map +1 -0
  86. package/dist/common/errorHandling.js +49 -63
  87. package/dist/common/errorHandling.js.map +1 -0
  88. package/dist/common/fail.js +6 -12
  89. package/dist/common/fail.js.map +1 -0
  90. package/dist/common/stringManipulations.js +8 -0
  91. package/dist/common/stringManipulations.js.map +1 -0
  92. package/dist/common/versionChecker.js +16 -19
  93. package/dist/common/versionChecker.js.map +1 -0
  94. package/dist/constants/constants.js +46 -65
  95. package/dist/constants/constants.js.map +1 -0
  96. package/dist/constants/lambda.js +8 -5
  97. package/dist/constants/lambda.js.map +1 -0
  98. package/dist/constants/locales.js +14 -10
  99. package/dist/constants/locales.js.map +1 -0
  100. package/dist/github/fingerprintConfig.js +10 -0
  101. package/dist/github/fingerprintConfig.js.map +1 -0
  102. package/dist/github/processFingerprint.js +25 -0
  103. package/dist/github/processFingerprint.js.map +1 -0
  104. package/dist/github/projectGroup.js +225 -0
  105. package/dist/github/projectGroup.js.map +1 -0
  106. package/dist/github/repoServices.js +91 -0
  107. package/dist/github/repoServices.js.map +1 -0
  108. package/dist/index.js +42 -39
  109. package/dist/index.js.map +1 -0
  110. package/dist/lambda/analytics.js +6 -9
  111. package/dist/lambda/analytics.js.map +1 -0
  112. package/dist/lambda/arn.js +6 -9
  113. package/dist/lambda/arn.js.map +1 -0
  114. package/dist/lambda/aws.js +29 -34
  115. package/dist/lambda/aws.js.map +1 -0
  116. package/dist/lambda/cliError.js +13 -41
  117. package/dist/lambda/cliError.js.map +1 -0
  118. package/dist/lambda/constants.js +3 -4
  119. package/dist/lambda/constants.js.map +1 -0
  120. package/dist/lambda/help.js +39 -44
  121. package/dist/lambda/help.js.map +1 -0
  122. package/dist/lambda/lambda.js +61 -65
  123. package/dist/lambda/lambda.js.map +1 -0
  124. package/dist/lambda/lambdaUtils.js +38 -32
  125. package/dist/lambda/lambdaUtils.js.map +1 -0
  126. package/dist/lambda/logUtils.js +21 -17
  127. package/dist/lambda/logUtils.js.map +1 -0
  128. package/dist/lambda/scanDetailCompletion.js +19 -25
  129. package/dist/lambda/scanDetailCompletion.js.map +1 -0
  130. package/dist/lambda/scanRequest.js +34 -41
  131. package/dist/lambda/scanRequest.js.map +1 -0
  132. package/dist/lambda/scanResults.js +8 -10
  133. package/dist/lambda/scanResults.js.map +1 -0
  134. package/dist/lambda/types.js +5 -7
  135. package/dist/lambda/types.js.map +1 -0
  136. package/dist/lambda/utils.js +33 -35
  137. package/dist/lambda/utils.js.map +1 -0
  138. package/dist/sbom/generateSbom.js +6 -10
  139. package/dist/sbom/generateSbom.js.map +1 -0
  140. package/dist/scaAnalysis/common/auditReport.js +8 -12
  141. package/dist/scaAnalysis/common/auditReport.js.map +1 -0
  142. package/dist/scaAnalysis/common/commonReportingFunctionsSca.js +26 -32
  143. package/dist/scaAnalysis/common/commonReportingFunctionsSca.js.map +1 -0
  144. package/dist/scaAnalysis/common/formatMessage.js +8 -17
  145. package/dist/scaAnalysis/common/formatMessage.js.map +1 -0
  146. package/dist/scaAnalysis/common/models/ScaReportModel.js +4 -9
  147. package/dist/scaAnalysis/common/models/ScaReportModel.js.map +1 -0
  148. package/dist/scaAnalysis/common/scaParserForGoAndJava.js +10 -9
  149. package/dist/scaAnalysis/common/scaParserForGoAndJava.js.map +1 -0
  150. package/dist/scaAnalysis/common/scaServicesUpload.js +59 -90
  151. package/dist/scaAnalysis/common/scaServicesUpload.js.map +1 -0
  152. package/dist/scaAnalysis/common/treeUpload.js +15 -25
  153. package/dist/scaAnalysis/common/treeUpload.js.map +1 -0
  154. package/dist/scaAnalysis/common/utils/reportUtilsSca.js +21 -29
  155. package/dist/scaAnalysis/common/utils/reportUtilsSca.js.map +1 -0
  156. package/dist/scaAnalysis/dotnet/analysis.js +12 -18
  157. package/dist/scaAnalysis/dotnet/analysis.js.map +1 -0
  158. package/dist/scaAnalysis/dotnet/index.js +4 -7
  159. package/dist/scaAnalysis/dotnet/index.js.map +1 -0
  160. package/dist/scaAnalysis/go/goAnalysis.js +8 -11
  161. package/dist/scaAnalysis/go/goAnalysis.js.map +1 -0
  162. package/dist/scaAnalysis/go/goParseDeps.js +9 -7
  163. package/dist/scaAnalysis/go/goParseDeps.js.map +1 -0
  164. package/dist/scaAnalysis/go/goReadDepFile.js +10 -8
  165. package/dist/scaAnalysis/go/goReadDepFile.js.map +1 -0
  166. package/dist/scaAnalysis/java/analysis.js +23 -20
  167. package/dist/scaAnalysis/java/analysis.js.map +1 -0
  168. package/dist/scaAnalysis/java/index.js +7 -10
  169. package/dist/scaAnalysis/java/index.js.map +1 -0
  170. package/dist/scaAnalysis/java/javaBuildDepsParser.js +43 -43
  171. package/dist/scaAnalysis/java/javaBuildDepsParser.js.map +1 -0
  172. package/dist/scaAnalysis/javascript/analysis.js +16 -20
  173. package/dist/scaAnalysis/javascript/analysis.js.map +1 -0
  174. package/dist/scaAnalysis/javascript/index.js +17 -19
  175. package/dist/scaAnalysis/javascript/index.js.map +1 -0
  176. package/dist/scaAnalysis/javascript/scaServiceParser.js +8 -15
  177. package/dist/scaAnalysis/javascript/scaServiceParser.js.map +1 -0
  178. package/dist/scaAnalysis/legacy/legacyFlow.js +13 -15
  179. package/dist/scaAnalysis/legacy/legacyFlow.js.map +1 -0
  180. package/dist/scaAnalysis/php/analysis.js +15 -16
  181. package/dist/scaAnalysis/php/analysis.js.map +1 -0
  182. package/dist/scaAnalysis/php/index.js +5 -8
  183. package/dist/scaAnalysis/php/index.js.map +1 -0
  184. package/dist/scaAnalysis/php/phpNewServicesMapper.js +9 -12
  185. package/dist/scaAnalysis/php/phpNewServicesMapper.js.map +1 -0
  186. package/dist/scaAnalysis/processServicesFlow.js +86 -32
  187. package/dist/scaAnalysis/processServicesFlow.js.map +1 -0
  188. package/dist/scaAnalysis/python/analysis.js +16 -23
  189. package/dist/scaAnalysis/python/analysis.js.map +1 -0
  190. package/dist/scaAnalysis/python/index.js +4 -7
  191. package/dist/scaAnalysis/python/index.js.map +1 -0
  192. package/dist/scaAnalysis/repoMode/gradleParser.js +7 -13
  193. package/dist/scaAnalysis/repoMode/gradleParser.js.map +1 -0
  194. package/dist/scaAnalysis/repoMode/index.js +9 -12
  195. package/dist/scaAnalysis/repoMode/index.js.map +1 -0
  196. package/dist/scaAnalysis/repoMode/mavenParser.js +109 -73
  197. package/dist/scaAnalysis/repoMode/mavenParser.js.map +1 -0
  198. package/dist/scaAnalysis/ruby/analysis.js +32 -46
  199. package/dist/scaAnalysis/ruby/analysis.js.map +1 -0
  200. package/dist/scaAnalysis/ruby/index.js +5 -8
  201. package/dist/scaAnalysis/ruby/index.js.map +1 -0
  202. package/dist/scaAnalysis/scaAnalysis.js +49 -51
  203. package/dist/scaAnalysis/scaAnalysis.js.map +1 -0
  204. package/dist/scan/fileUtils.js +36 -40
  205. package/dist/scan/fileUtils.js.map +1 -0
  206. package/dist/scan/formatScanOutput.js +47 -61
  207. package/dist/scan/formatScanOutput.js.map +1 -0
  208. package/dist/scan/help.js +8 -11
  209. package/dist/scan/help.js.map +1 -0
  210. package/dist/scan/models/groupedResultsModel.js +2 -5
  211. package/dist/scan/models/groupedResultsModel.js.map +1 -0
  212. package/dist/scan/models/resultContentModel.js +2 -2
  213. package/dist/scan/models/resultContentModel.js.map +1 -0
  214. package/dist/scan/models/scanResultsModel.js +2 -5
  215. package/dist/scan/models/scanResultsModel.js.map +1 -0
  216. package/dist/scan/populateProjectIdAndProjectName.js +22 -60
  217. package/dist/scan/populateProjectIdAndProjectName.js.map +1 -0
  218. package/dist/scan/processScan.js +28 -0
  219. package/dist/scan/processScan.js.map +1 -0
  220. package/dist/scan/saveResults.js +3 -6
  221. package/dist/scan/saveResults.js.map +1 -0
  222. package/dist/scan/scan.js +33 -53
  223. package/dist/scan/scan.js.map +1 -0
  224. package/dist/scan/scanConfig.js +14 -12
  225. package/dist/scan/scanConfig.js.map +1 -0
  226. package/dist/scan/scanController.js +19 -21
  227. package/dist/scan/scanController.js.map +1 -0
  228. package/dist/scan/scanRequests.js +86 -0
  229. package/dist/scan/scanRequests.js.map +1 -0
  230. package/dist/scan/scanResults.js +26 -72
  231. package/dist/scan/scanResults.js.map +1 -0
  232. package/dist/telemetry/telemetry.js +29 -59
  233. package/dist/telemetry/telemetry.js.map +1 -0
  234. package/dist/utils/capabilities.js +2 -1
  235. package/dist/utils/capabilities.js.map +1 -0
  236. package/dist/utils/commonApi.js +58 -50
  237. package/dist/utils/commonApi.js.map +1 -0
  238. package/dist/utils/filterProjectPath.js +2 -1
  239. package/dist/utils/filterProjectPath.js.map +1 -0
  240. package/dist/utils/generalAPI.js +11 -33
  241. package/dist/utils/generalAPI.js.map +1 -0
  242. package/dist/utils/getConfig.js +8 -13
  243. package/dist/utils/getConfig.js.map +1 -0
  244. package/dist/utils/oraWrapper.js +7 -14
  245. package/dist/utils/oraWrapper.js.map +1 -0
  246. package/dist/utils/paramsUtil/commandlineParams.js +2 -5
  247. package/dist/utils/paramsUtil/commandlineParams.js.map +1 -0
  248. package/dist/utils/paramsUtil/configStoreParams.js +9 -10
  249. package/dist/utils/paramsUtil/configStoreParams.js.map +1 -0
  250. package/dist/utils/paramsUtil/envVariableParams.js +2 -3
  251. package/dist/utils/paramsUtil/envVariableParams.js.map +1 -0
  252. package/dist/utils/paramsUtil/paramHandler.js +12 -13
  253. package/dist/utils/paramsUtil/paramHandler.js.map +1 -0
  254. package/dist/utils/parsedCLIOptions.js +4 -7
  255. package/dist/utils/parsedCLIOptions.js.map +1 -0
  256. package/dist/utils/requestUtils.js +7 -13
  257. package/dist/utils/requestUtils.js.map +1 -0
  258. package/dist/utils/saveFile.js +8 -11
  259. package/dist/utils/saveFile.js.map +1 -0
  260. package/dist/utils/validationCheck.js +5 -11
  261. package/dist/utils/validationCheck.js.map +1 -0
  262. package/package.json +40 -48
  263. package/.prettierignore +0 -1
  264. package/bin/contrast.js +0 -2
  265. package/dist/audit/languageAnalysisEngine/util/requestUtils.js +0 -14
  266. package/dist/commands/audit/auditConfig.js +0 -12
  267. package/dist/commands/audit/help.js +0 -70
  268. package/dist/commands/audit/processAudit.js +0 -24
  269. package/dist/commands/auth/auth.js +0 -120
  270. package/dist/commands/github/fingerprintConfig.js +0 -13
  271. package/dist/commands/github/processFingerprint.js +0 -28
  272. package/dist/commands/github/projectGroup.js +0 -254
  273. package/dist/commands/github/repoServices.js +0 -108
  274. package/dist/commands/scan/processScan.js +0 -31
  275. package/dist/lambda/__mocks__/aws.js +0 -21
  276. package/dist/lambda/__mocks__/lambdaConfig.json +0 -42
  277. package/src/audit/catalogueApplication/catalogueApplication.js +0 -51
  278. package/src/audit/languageAnalysisEngine/commonApi.js +0 -20
  279. package/src/audit/languageAnalysisEngine/filterProjectPath.js +0 -21
  280. package/src/audit/languageAnalysisEngine/getProjectRootFilenames.js +0 -36
  281. package/src/audit/languageAnalysisEngine/sendSnapshot.js +0 -57
  282. package/src/audit/languageAnalysisEngine/util/requestUtils.js +0 -17
  283. package/src/audit/nodeAnalysisEngine/parseYarn2LockFileContents.js +0 -63
  284. package/src/audit/report/commonReportingFunctions.js +0 -412
  285. package/src/audit/report/models/reportGuidanceModel.ts +0 -5
  286. package/src/audit/report/models/reportLibraryModel.ts +0 -30
  287. package/src/audit/report/models/reportListModel.ts +0 -49
  288. package/src/audit/report/models/reportOutputModel.ts +0 -29
  289. package/src/audit/report/models/reportSeverityModel.ts +0 -18
  290. package/src/audit/report/models/severityCountModel.ts +0 -22
  291. package/src/audit/report/reportingFeature.ts +0 -110
  292. package/src/audit/report/utils/reportUtils.ts +0 -165
  293. package/src/audit/save.js +0 -67
  294. package/src/cliConstants.js +0 -522
  295. package/src/commands/audit/auditConfig.js +0 -18
  296. package/src/commands/audit/auditController.js +0 -50
  297. package/src/commands/audit/help.js +0 -72
  298. package/src/commands/audit/processAudit.js +0 -34
  299. package/src/commands/audit/saveFile.js +0 -15
  300. package/src/commands/auth/auth.js +0 -146
  301. package/src/commands/config/config.js +0 -41
  302. package/src/commands/github/fingerprintConfig.js +0 -19
  303. package/src/commands/github/processFingerprint.js +0 -37
  304. package/src/commands/github/projectGroup.js +0 -294
  305. package/src/commands/github/repoServices.js +0 -122
  306. package/src/commands/learn/learn.js +0 -10
  307. package/src/commands/learn/processLearn.js +0 -13
  308. package/src/commands/scan/processScan.js +0 -42
  309. package/src/common/HTTPClient.js +0 -775
  310. package/src/common/baseRequest.ts +0 -83
  311. package/src/common/commonHelp.js +0 -53
  312. package/src/common/errorHandling.js +0 -157
  313. package/src/common/fail.js +0 -79
  314. package/src/common/versionChecker.js +0 -75
  315. package/src/constants/constants.js +0 -71
  316. package/src/constants/lambda.js +0 -85
  317. package/src/constants/locales.js +0 -365
  318. package/src/index.ts +0 -142
  319. package/src/lambda/__mocks__/aws.ts +0 -32
  320. package/src/lambda/__mocks__/lambdaConfig.json +0 -42
  321. package/src/lambda/analytics.ts +0 -9
  322. package/src/lambda/arn.ts +0 -33
  323. package/src/lambda/aws.ts +0 -248
  324. package/src/lambda/cliError.ts +0 -72
  325. package/src/lambda/constants.ts +0 -11
  326. package/src/lambda/help.ts +0 -92
  327. package/src/lambda/lambda.ts +0 -230
  328. package/src/lambda/lambdaUtils.ts +0 -111
  329. package/src/lambda/logUtils.ts +0 -64
  330. package/src/lambda/scanDetailCompletion.ts +0 -78
  331. package/src/lambda/scanRequest.ts +0 -169
  332. package/src/lambda/scanResults.ts +0 -29
  333. package/src/lambda/types.ts +0 -36
  334. package/src/lambda/utils.ts +0 -188
  335. package/src/sbom/generateSbom.ts +0 -45
  336. package/src/scaAnalysis/common/auditReport.js +0 -59
  337. package/src/scaAnalysis/common/commonReportingFunctionsSca.js +0 -276
  338. package/src/scaAnalysis/common/formatMessage.js +0 -67
  339. package/src/scaAnalysis/common/models/ScaReportModel.ts +0 -81
  340. package/src/scaAnalysis/common/scaParserForGoAndJava.js +0 -41
  341. package/src/scaAnalysis/common/scaServicesUpload.js +0 -155
  342. package/src/scaAnalysis/common/treeUpload.js +0 -51
  343. package/src/scaAnalysis/common/utils/reportUtilsSca.ts +0 -123
  344. package/src/scaAnalysis/dotnet/analysis.js +0 -72
  345. package/src/scaAnalysis/dotnet/index.js +0 -11
  346. package/src/scaAnalysis/go/goAnalysis.js +0 -26
  347. package/src/scaAnalysis/go/goParseDeps.js +0 -203
  348. package/src/scaAnalysis/go/goReadDepFile.js +0 -34
  349. package/src/scaAnalysis/java/analysis.js +0 -148
  350. package/src/scaAnalysis/java/index.js +0 -29
  351. package/src/scaAnalysis/java/javaBuildDepsParser.js +0 -439
  352. package/src/scaAnalysis/javascript/analysis.js +0 -111
  353. package/src/scaAnalysis/javascript/index.js +0 -104
  354. package/src/scaAnalysis/javascript/scaServiceParser.js +0 -151
  355. package/src/scaAnalysis/legacy/legacyFlow.js +0 -43
  356. package/src/scaAnalysis/php/analysis.js +0 -78
  357. package/src/scaAnalysis/php/index.js +0 -28
  358. package/src/scaAnalysis/php/phpNewServicesMapper.js +0 -77
  359. package/src/scaAnalysis/processServicesFlow.js +0 -119
  360. package/src/scaAnalysis/python/analysis.js +0 -93
  361. package/src/scaAnalysis/python/index.js +0 -16
  362. package/src/scaAnalysis/repoMode/gradleParser.js +0 -88
  363. package/src/scaAnalysis/repoMode/index.js +0 -21
  364. package/src/scaAnalysis/repoMode/mavenParser.js +0 -112
  365. package/src/scaAnalysis/ruby/analysis.js +0 -413
  366. package/src/scaAnalysis/ruby/index.js +0 -16
  367. package/src/scaAnalysis/scaAnalysis.js +0 -171
  368. package/src/scan/autoDetection.js +0 -175
  369. package/src/scan/fileUtils.js +0 -206
  370. package/src/scan/formatScanOutput.ts +0 -225
  371. package/src/scan/help.js +0 -56
  372. package/src/scan/models/groupedResultsModel.ts +0 -20
  373. package/src/scan/models/resultContentModel.ts +0 -86
  374. package/src/scan/models/scanResultsModel.ts +0 -55
  375. package/src/scan/populateProjectIdAndProjectName.js +0 -73
  376. package/src/scan/saveResults.js +0 -14
  377. package/src/scan/scan.ts +0 -68
  378. package/src/scan/scanConfig.js +0 -58
  379. package/src/scan/scanController.js +0 -98
  380. package/src/scan/scanResults.js +0 -171
  381. package/src/telemetry/telemetry.ts +0 -154
  382. package/src/utils/capabilities.js +0 -12
  383. package/src/utils/commonApi.js +0 -103
  384. package/src/utils/filterProjectPath.js +0 -25
  385. package/src/utils/generalAPI.js +0 -52
  386. package/src/utils/getConfig.ts +0 -34
  387. package/src/utils/oraWrapper.js +0 -29
  388. package/src/utils/paramsUtil/commandlineParams.js +0 -12
  389. package/src/utils/paramsUtil/configStoreParams.js +0 -19
  390. package/src/utils/paramsUtil/envVariableParams.js +0 -10
  391. package/src/utils/paramsUtil/paramHandler.js +0 -38
  392. package/src/utils/parsedCLIOptions.js +0 -32
  393. package/src/utils/requestUtils.js +0 -29
  394. package/src/utils/saveFile.js +0 -20
  395. package/src/utils/validationCheck.js +0 -39
package/src/lambda/aws.ts DELETED
@@ -1,248 +0,0 @@
1
- import i18n from 'i18n'
2
- import {
3
- Lambda,
4
- GetFunctionCommand,
5
- GetLayerVersionByArnCommand,
6
- FunctionConfiguration,
7
- ResourceNotFoundException,
8
- LambdaServiceException
9
- } from '@aws-sdk/client-lambda'
10
- import {
11
- GetRolePolicyCommand,
12
- IAMClient,
13
- paginateListRolePolicies,
14
- paginateListAttachedRolePolicies,
15
- GetPolicyCommand,
16
- GetPolicyVersionCommand
17
- } from '@aws-sdk/client-iam'
18
- import { fromIni } from '@aws-sdk/credential-provider-ini'
19
- import { RegionInputConfig } from '@aws-sdk/config-resolver/dist-types/regionConfig/resolveRegionConfig'
20
- import { EndpointsInputConfig } from '@aws-sdk/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig'
21
- import { AwsAuthInputConfig } from '@aws-sdk/middleware-signing/dist-types/configurations'
22
- import { CliError } from './cliError'
23
- import { LambdaOptions } from './lambda'
24
- import { ERRORS } from './constants'
25
-
26
- type AWSClientConfig = RegionInputConfig &
27
- EndpointsInputConfig &
28
- AwsAuthInputConfig
29
-
30
- const getAwsClientOptions = ({
31
- region,
32
- endpointUrl,
33
- profile
34
- }: LambdaOptions): AWSClientConfig => {
35
- const credentials = profile ? fromIni({ profile }) : undefined
36
- return {
37
- region: region || process.env.AWS_DEFAULT_REGION,
38
- endpoint: endpointUrl,
39
- credentials
40
- }
41
- }
42
-
43
- const getLambdaClient = (lambdaOptions: LambdaOptions) => {
44
- try {
45
- const clientOptions = getAwsClientOptions(lambdaOptions)
46
- return new Lambda(clientOptions)
47
- } catch (error) {
48
- throw new CliError(ERRORS.AWS_ERROR, {
49
- description: (error as Error).message
50
- })
51
- }
52
- }
53
-
54
- const getIAMClient = (lambdaOptions: LambdaOptions) => {
55
- const clientOptions = getAwsClientOptions(lambdaOptions)
56
- return new IAMClient(clientOptions)
57
- }
58
-
59
- const getLambdaFunctionConfiguration = async (
60
- client: Lambda,
61
- lambdaOptions: LambdaOptions
62
- ) => {
63
- const { functionName: FunctionName } = lambdaOptions
64
- const getFunctionCommand = new GetFunctionCommand({ FunctionName })
65
- try {
66
- return await client.send(getFunctionCommand)
67
- } catch (error) {
68
- throwAwsError(error)
69
- }
70
- }
71
-
72
- const getLayersLinks = async (
73
- client: Lambda,
74
- functionConfiguration: FunctionConfiguration
75
- ) => {
76
- const { Layers: layers = [] } = functionConfiguration
77
- const resultPromises = layers.map(async layerDict => {
78
- try {
79
- const layerArn = layerDict.Arn
80
- const getLayerVersionByArnCommand = new GetLayerVersionByArnCommand({
81
- Arn: layerArn
82
- })
83
- const layer = await client.send(getLayerVersionByArnCommand)
84
- return {
85
- Arn: layerArn,
86
- Location: layer.Content?.Location
87
- }
88
- } catch (e) {
89
- if (e instanceof ResourceNotFoundException) {
90
- e.message = i18n.__('layerNotFound', {
91
- layerArn: layerDict.Arn || 'unknown_arn'
92
- })
93
- throw e
94
- }
95
- throw e
96
- }
97
- })
98
- const results = await Promise.allSettled(resultPromises)
99
- const validLayers = results.filter(layerResult => {
100
- if (layerResult.status === 'rejected') {
101
- console.warn(layerResult.reason.message)
102
- return false
103
- }
104
- return true
105
- })
106
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
107
- // @ts-ignore: value is not recognized
108
- return validLayers.map(layer => layer.value)
109
- }
110
-
111
- const getLambdaPolicies = async (
112
- functionConfiguration: FunctionConfiguration,
113
- lambdaOptions: LambdaOptions
114
- ) => {
115
- const { Role: roleArn } = functionConfiguration
116
- const roleSplitList = roleArn?.split('/')
117
-
118
- if (roleSplitList) {
119
- const roleName = roleSplitList[roleSplitList.length - 1]
120
- const client = exports.getIAMClient(lambdaOptions)
121
- const rolePolicies = await getRolePolicies(roleName, client)
122
- const attachedPolicies = await getAttachedPolicies(roleName, client)
123
- return [...rolePolicies, ...attachedPolicies]
124
- }
125
- }
126
-
127
- const getRolePolicyNames = async (roleName: string, client: IAMClient) => {
128
- const listRolePolicyNames = []
129
-
130
- try {
131
- for await (const page of paginateListRolePolicies(
132
- { client },
133
- { RoleName: roleName }
134
- )) {
135
- if (page.PolicyNames) {
136
- listRolePolicyNames.push(...page.PolicyNames)
137
- }
138
- }
139
- } catch (error) {
140
- throwAwsError(error)
141
- }
142
-
143
- return listRolePolicyNames
144
- }
145
-
146
- const getAttachedPolicyNames = async (roleName: string, client: IAMClient) => {
147
- const listAttachedPolicies = []
148
- for await (const page of paginateListAttachedRolePolicies(
149
- { client },
150
- { RoleName: roleName }
151
- )) {
152
- if (page.AttachedPolicies) {
153
- listAttachedPolicies.push(...page.AttachedPolicies)
154
- }
155
- }
156
- return listAttachedPolicies
157
- }
158
-
159
- const getRolePolicies = async (roleName: string, client: IAMClient) => {
160
- const listRolePolicyNames = await exports.getRolePolicyNames(roleName, client)
161
-
162
- if (listRolePolicyNames) {
163
- const rolePoliciesPromises = listRolePolicyNames.map(
164
- async (policyName: any) => {
165
- const getRolePolicyCommand = new GetRolePolicyCommand({
166
- PolicyName: policyName,
167
- RoleName: roleName
168
- })
169
-
170
- const rolePolicy = await client.send(getRolePolicyCommand)
171
- const policyDoc = JSON.parse(
172
- decodeURIComponent(rolePolicy?.PolicyDocument || '{}')
173
- )
174
- policyDoc.PolicyName = policyName
175
- return policyDoc
176
- }
177
- )
178
-
179
- const rolePolicies = await Promise.all(rolePoliciesPromises)
180
- return rolePolicies
181
- }
182
-
183
- return []
184
- }
185
-
186
- const getAttachedPolicies = async (roleName: string, client: IAMClient) => {
187
- const listAttachedPolicies = await exports.getAttachedPolicyNames(
188
- roleName,
189
- client
190
- )
191
- const attachedPoliciesPromises = listAttachedPolicies.map(
192
- async (policyDict: { PolicyArn: any; PolicyName: any }) => {
193
- const { PolicyArn, PolicyName } = policyDict
194
- const getPolicyCommand = new GetPolicyCommand({ PolicyArn })
195
- const policy = await client.send(getPolicyCommand)
196
-
197
- if (policy.Policy) {
198
- const getPolicyVersionCommand = new GetPolicyVersionCommand({
199
- PolicyArn: policy.Policy.Arn,
200
- VersionId: policy.Policy.DefaultVersionId
201
- })
202
- const policyVersion = await client.send(getPolicyVersionCommand)
203
- const policyDoc = JSON.parse(
204
- decodeURIComponent(policyVersion?.PolicyVersion?.Document || '{}')
205
- )
206
-
207
- policyDoc['PolicyName'] = PolicyName
208
- policyDoc['PolicyArn'] = PolicyArn
209
- return policyDoc
210
- }
211
- }
212
- )
213
-
214
- const attachedPolicies = await Promise.all(attachedPoliciesPromises)
215
- return attachedPolicies
216
- }
217
-
218
- /**
219
- *
220
- * @param error any error
221
- * @returns throw AWS error in union format
222
- */
223
- const throwAwsError = (error: any) => {
224
- const serviceError = error as LambdaServiceException
225
-
226
- if (error instanceof Error && serviceError.$metadata) {
227
- const { httpStatusCode } = serviceError.$metadata
228
- const { message } = error
229
-
230
- throw new CliError(ERRORS.AWS_ERROR, {
231
- statusCode: httpStatusCode,
232
- description: message
233
- })
234
- }
235
-
236
- throw error
237
- }
238
-
239
- export {
240
- getAttachedPolicyNames,
241
- getRolePolicyNames,
242
- getIAMClient,
243
- getLambdaClient,
244
- getLambdaFunctionConfiguration,
245
- getLayersLinks,
246
- getLambdaPolicies,
247
- throwAwsError
248
- }
@@ -1,72 +0,0 @@
1
- import i18n from 'i18n'
2
- import * as errorHandling from '../common/errorHandling'
3
-
4
- type ErrorDetails = {
5
- statusCode?: number // API statusCode
6
- errorCode?: string // internal errorCode
7
- description?: string // free usage
8
- data?: any //
9
- }
10
-
11
- class CliError extends Error {
12
- statusCode?: number
13
- errorCode?: string
14
- description?: string
15
- data?: any
16
-
17
- statusCodeDescription?: string
18
- errorCodeDescription?: string
19
-
20
- constructor(headerMessage: string, details?: ErrorDetails) {
21
- const message = i18n.__(headerMessage || '')
22
- super(message)
23
-
24
- const { statusCode, errorCode, data, description } = details || {}
25
-
26
- this.statusCode = statusCode
27
- this.errorCode = errorCode
28
- this.data = data
29
- this.description = description
30
-
31
- if (errorCode) {
32
- this.errorCodeDescription = i18n.__(errorCode || '')
33
- }
34
-
35
- if (statusCode) {
36
- this.statusCodeDescription = this.getMessageByStatusCode(statusCode)
37
- }
38
- }
39
-
40
- getErrorMessage() {
41
- let finalDesc =
42
- this.errorCodeDescription || this.statusCodeDescription || ''
43
-
44
- if (this.description) {
45
- finalDesc += finalDesc ? `\n${this.description}` : this.description
46
- }
47
- return errorHandling.getErrorMessage(this.message, finalDesc)
48
- }
49
-
50
- getMessageByStatusCode(statusCode: number) {
51
- switch (statusCode) {
52
- case 200:
53
- return ''
54
- case 400:
55
- return i18n.__('badRequestErrorHeader')
56
- case 401:
57
- return i18n.__('unauthenticatedErrorHeader')
58
- case 403:
59
- return i18n.__('forbiddenRequestErrorHeader')
60
- case 404:
61
- return i18n.__('not_found_404')
62
- case 423:
63
- return i18n.__('resourceLockedErrorHeader')
64
- case 500:
65
- return i18n.__('internalServerErrorHeader')
66
- default:
67
- return i18n.__('something_went_wrong')
68
- }
69
- }
70
- }
71
-
72
- export { CliError }
@@ -1,11 +0,0 @@
1
- // TODO: don't forget to add translation in `src/constants/lambda.js` for each value
2
-
3
- const ERRORS = Object.freeze({
4
- AWS_ERROR: 'awsError',
5
- FAILED_TO_START_SCAN: 'failedToStartScan',
6
- FAILED_TO_GET_SCAN: 'failedToGetScan',
7
- FAILED_TO_GET_RESULTS: 'failedToGetResults',
8
- VALIDATION_FAILED: 'validationFailed'
9
- })
10
-
11
- export { ERRORS }
@@ -1,92 +0,0 @@
1
- import commandLineUsage from 'command-line-usage'
2
- import i18n from 'i18n'
3
- import { commonHelpLinks } from '../common/commonHelp'
4
-
5
- const lambdaUsageGuide = commandLineUsage([
6
- {
7
- header: i18n.__('constantsHeader')
8
- },
9
- {
10
- header: i18n.__('lambdaHeader'),
11
- content: [i18n.__('lambdaSummary')]
12
- },
13
- {
14
- header: i18n.__('constantsPrerequisitesHeader'),
15
- content: [
16
- '{bold ' +
17
- i18n.__('lambdaPrerequisitesContentLambdaLanguages') +
18
- '}\n\n' +
19
- '{bold ' +
20
- i18n.__('lambdaPrerequisitesContentLambdaDescriptionTitle') +
21
- '}' +
22
- i18n.__('lambdaPrerequisitesContentLambdaDescription')
23
- ]
24
- },
25
- {
26
- header: i18n.__('constantsUsage'),
27
- content: [i18n.__('lambdaUsage')]
28
- },
29
- {
30
- header: i18n.__('constantsOptions'),
31
- content: [
32
- {
33
- name: '{bold ' + i18n.__('lambdaFunctionNameOption') + '}',
34
- summary: i18n.__('lambdaFunctionNameSummery')
35
- },
36
- {
37
- name: '{bold ' + i18n.__('lambdaListFunctionsOption') + '}',
38
- summary: i18n.__('lambdaListFunctionsSummery')
39
- },
40
- {
41
- name: '{bold ' + i18n.__('lambdaEndpointOption') + '}',
42
- summary:
43
- '{bold ' +
44
- i18n.__('constantsOptional') +
45
- '}: ' +
46
- i18n.__('lambdaEndpointSummery')
47
- },
48
- {
49
- name: '{bold ' + i18n.__('lambdaRegionOption') + '}',
50
- summary:
51
- '{bold ' +
52
- i18n.__('constantsOptional') +
53
- '}: ' +
54
- i18n.__('lambdaRegionSummery')
55
- },
56
- {
57
- name: '{bold ' + i18n.__('lambdaProfileOption') + '}',
58
- summary:
59
- '{bold ' +
60
- i18n.__('constantsOptional') +
61
- '}: ' +
62
- i18n.__('lambdaProfileSummery')
63
- },
64
- {
65
- name: '{bold ' + i18n.__('lambdaJsonOption') + '}',
66
- summary:
67
- '{bold ' +
68
- i18n.__('constantsOptional') +
69
- '}: ' +
70
- i18n.__('lambdaJsonSummery')
71
- },
72
- {
73
- name: '{bold ' + i18n.__('lambdaVerboseOption') + '}',
74
- summary:
75
- '{bold ' +
76
- i18n.__('constantsOptional') +
77
- '}: ' +
78
- i18n.__('lambdaVerbosSummery')
79
- }
80
- ]
81
- },
82
- {
83
- content: [
84
- { name: i18n.__('lambdaHelpOption'), summary: i18n.__('helpSummary') }
85
- ]
86
- },
87
- commonHelpLinks()[0],
88
- commonHelpLinks()[1],
89
- commonHelpLinks()[2]
90
- ])
91
-
92
- export { lambdaUsageGuide }
@@ -1,230 +0,0 @@
1
- import commandLineArgs from 'command-line-args'
2
- import { performance } from 'perf_hooks'
3
- import { kebabCase } from 'lodash'
4
- import i18n from 'i18n'
5
- import { getAuth } from '../utils/paramsUtil/paramHandler'
6
- import { CliError } from './cliError'
7
- import { ERRORS } from './constants'
8
- import { lambdaUsageGuide } from './help'
9
- import { log } from './logUtils'
10
- import { pollScanUntilCompletion } from './scanDetailCompletion'
11
- import { requestScanFunctionPost } from './scanRequest'
12
- import { getScanResults } from './scanResults'
13
- import { printResults } from './utils'
14
- import { getAllLambdas, printAvailableLambdas } from './lambdaUtils'
15
- import { sleep } from '../utils/requestUtils'
16
- import ora from '../utils/oraWrapper'
17
- import { postAnalytics } from './analytics'
18
- import { LambdaOptions, AnalyticsOption, StatusType, EventType } from './types'
19
- import { APP_VERSION } from '../constants/constants'
20
- import { postRunMessage } from '../common/commonHelp'
21
-
22
- type ApiParams = {
23
- organizationId: string
24
- provider: 'aws'
25
- accountId: string
26
- }
27
-
28
- const failedStates = [
29
- 'UNSUPPORTED',
30
- 'EXCLUDED',
31
- 'CANCELED',
32
- 'FAILED',
33
- 'DISMISSED'
34
- ]
35
-
36
- const printHelpMessage = () => {
37
- log(lambdaUsageGuide)
38
- }
39
-
40
- const getLambdaOptions = (argv: string[]) => {
41
- try {
42
- const lambdaDefinitions = [
43
- { name: 'function-name', alias: 'f', type: String },
44
- { name: 'list-functions', alias: 'l', type: Boolean },
45
- { name: 'region', alias: 'r', type: String },
46
- { name: 'endpoint-url', alias: 'e', type: String },
47
- { name: 'profile', alias: 'p', type: String },
48
- { name: 'help', alias: 'h', type: Boolean },
49
- { name: 'verbose', alias: 'v', type: Boolean },
50
- { name: 'json-output', alias: 'j', type: Boolean }
51
- ]
52
-
53
- const lambdaOptions: LambdaOptions = commandLineArgs(lambdaDefinitions, {
54
- argv,
55
- partial: true,
56
- camelCase: true,
57
- caseInsensitive: true
58
- })
59
-
60
- return lambdaOptions
61
- } catch (error) {
62
- throw new CliError(ERRORS.VALIDATION_FAILED, {
63
- description: (error as Error).message
64
- })
65
- }
66
- }
67
-
68
- const processLambda = async (argv: string[]) => {
69
- let errorMsg
70
- let scanInfo: { functionArn: string; scanId: string } | undefined
71
- const commandSessionId = Date.now().toString(36)
72
- try {
73
- const lambdaOptions = getLambdaOptions(argv)
74
- const { help } = lambdaOptions
75
- const startCommandAnalytics: AnalyticsOption = {
76
- arguments: lambdaOptions,
77
- sessionId: commandSessionId,
78
- eventType: EventType.START,
79
- packageVersion: APP_VERSION
80
- }
81
- postAnalytics(startCommandAnalytics).catch((error: Error) => {
82
- /* ignore */
83
- })
84
- if (help) {
85
- return handleLambdaHelp()
86
- }
87
-
88
- validateRequiredLambdaParams(lambdaOptions)
89
-
90
- if (lambdaOptions.listFunctions) {
91
- await getAvailableFunctions(lambdaOptions)
92
- } else {
93
- scanInfo = await actualProcessLambda(lambdaOptions)
94
- }
95
- } catch (error) {
96
- if (error instanceof CliError) {
97
- errorMsg = error.getErrorMessage()
98
- } else if (error instanceof Error) {
99
- errorMsg = error.message
100
- }
101
- } finally {
102
- const endCommandAnalytics: AnalyticsOption = {
103
- sessionId: commandSessionId,
104
- eventType: EventType.END,
105
- status: errorMsg ? StatusType.FAILED : StatusType.SUCCESS,
106
- packageVersion: APP_VERSION
107
- }
108
- if (errorMsg) {
109
- endCommandAnalytics.errorMsg = errorMsg
110
- console.error(errorMsg)
111
- }
112
- if (scanInfo) {
113
- endCommandAnalytics.scanFunctionData = scanInfo
114
- }
115
- await postAnalytics(endCommandAnalytics).catch((error: Error) => {
116
- /* ignore */
117
- })
118
-
119
- postRunMessage('lambda')
120
-
121
- if (errorMsg) {
122
- process.exit(1)
123
- }
124
- }
125
- }
126
-
127
- const getAvailableFunctions = async (lambdaOptions: LambdaOptions) => {
128
- const lambdas = await getAllLambdas(lambdaOptions)
129
- printAvailableLambdas(lambdas, {
130
- runtimes: ['python', 'java', 'node', 'dotnet']
131
- })
132
- }
133
-
134
- const actualProcessLambda = async (lambdaOptions: LambdaOptions) => {
135
- const auth = getAuth()
136
- const startTime = performance.now()
137
- const { jsonOutput } = lambdaOptions
138
- const { scanId, params, functionArn } = await requestScanFunctionPost(
139
- auth,
140
- lambdaOptions
141
- )
142
- const scans = await pollScanUntilCompletion(auth, 10, params, scanId)
143
- const failedScan = scans
144
- ?.filter((s: any) => s.scanType === 2)
145
- .find((s: any) => failedStates.includes(s.state))
146
-
147
- if (failedScan) {
148
- throw new CliError(ERRORS.FAILED_TO_GET_SCAN, {
149
- statusCode: 200,
150
- errorCode: failedScan.state,
151
- description: failedScan.stateReasonText
152
- })
153
- }
154
-
155
- // Wait to make sure we will have all the results
156
- const startGetherResultsSpinner = ora.returnOra(i18n.__('gatherResults'))
157
- ora.startSpinner(startGetherResultsSpinner)
158
- await sleep(15 * 1000)
159
- ora.succeedSpinner(startGetherResultsSpinner, 'Done gathering results')
160
-
161
- const resultsResponse = await getScanResults(
162
- auth,
163
- params,
164
- scanId,
165
- functionArn
166
- )
167
-
168
- if (jsonOutput) {
169
- console.log(JSON.stringify(resultsResponse?.data?.results, null, 2))
170
- return
171
- }
172
-
173
- const results = resultsResponse?.data?.results
174
- if (!results) {
175
- throw new CliError(ERRORS.FAILED_TO_GET_RESULTS, {
176
- errorCode: 'missingResults'
177
- })
178
- }
179
-
180
- if (!results.length) {
181
- log('👏 No vulnerabilities found')
182
- }
183
-
184
- const endTime = performance.now()
185
- const scanDurationMs = endTime - startTime
186
-
187
- log(`----- Scan completed ${(scanDurationMs / 1000).toFixed(2)}s -----`)
188
-
189
- if (results?.length) {
190
- printResults(results)
191
- }
192
-
193
- return { functionArn, scanId }
194
- }
195
-
196
- const validateRequiredLambdaParams = (options: LambdaOptions) => {
197
- if (options._unknown?.length) {
198
- throw new CliError(ERRORS.VALIDATION_FAILED, {
199
- description: i18n.__('notSupportedFlags', {
200
- flags: options._unknown.join('\n')
201
- })
202
- })
203
- }
204
-
205
- if (!options?.functionName && !options?.listFunctions) {
206
- throw new CliError(ERRORS.VALIDATION_FAILED, {
207
- errorCode: 'missingFunctionName'
208
- })
209
- }
210
-
211
- const flagsWithoutValues = Object.entries(options)
212
- .filter(([, value]) => !value)
213
- .map(([key]) => key)
214
- .map(p => `--${kebabCase(p)}`)
215
-
216
- if (flagsWithoutValues.length) {
217
- throw new CliError(ERRORS.VALIDATION_FAILED, {
218
- description: i18n.__('missingFlagArguments', {
219
- flags: flagsWithoutValues.join('\n')
220
- })
221
- })
222
- }
223
- }
224
-
225
- const handleLambdaHelp = () => {
226
- printHelpMessage()
227
- process.exit(0)
228
- }
229
-
230
- export { processLambda, LambdaOptions, ApiParams, getAvailableFunctions }