@cdxgen/cdxgen 0.0.1 → 13.0.1

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 (722) hide show
  1. package/README.md +921 -87
  2. package/bin/audit.js +239 -0
  3. package/bin/cdxgen.js +2335 -0
  4. package/bin/convert.js +220 -0
  5. package/bin/evinse.js +353 -0
  6. package/bin/hbom.js +504 -0
  7. package/bin/repl.js +2224 -0
  8. package/bin/sign.js +195 -0
  9. package/bin/tracebom.js +303 -0
  10. package/bin/validate.js +268 -0
  11. package/bin/verify.js +189 -0
  12. package/data/README.md +307 -0
  13. package/data/bom-1.4.schema.json +1605 -0
  14. package/data/bom-1.5.schema.json +3660 -0
  15. package/data/bom-1.6.schema.json +5511 -0
  16. package/data/bom-1.7.schema.json +6700 -0
  17. package/data/cbomosdb-queries.json +68 -0
  18. package/data/component-tags.json +339 -0
  19. package/data/container-knowledge-index.json +125 -0
  20. package/data/cosdb-queries.json +17 -0
  21. package/data/crypto-oid.json +1998 -0
  22. package/data/cryptography-defs.json +3793 -0
  23. package/data/cryptography-defs.schema.json +576 -0
  24. package/data/cyclonedx-2.0-bundled.schema.json +7182 -0
  25. package/data/frameworks-list.json +219 -0
  26. package/data/glibc-stdlib.json +117 -0
  27. package/data/gtfobins-index.json +6296 -0
  28. package/data/helpers/init.gradle +71 -0
  29. package/data/jsf-0.82.schema.json +211 -0
  30. package/data/known-licenses.json +82 -0
  31. package/data/lic-mapping.json +338 -0
  32. package/data/license-aliases.json +6624 -0
  33. package/data/license-db.json +39059 -0
  34. package/data/license-deprecations.json +302 -0
  35. package/data/lolbas-index.json +150 -0
  36. package/data/predictive-audit-allowlist.json +11 -0
  37. package/data/pypi-pkg-aliases.json +1199 -0
  38. package/data/python-stdlib.json +308 -0
  39. package/data/queries-darwin.json +193 -0
  40. package/data/queries-win.json +257 -0
  41. package/data/queries.json +268 -0
  42. package/data/ruby-known-modules.json +281 -0
  43. package/data/rules/ai-agent-governance.yaml +323 -0
  44. package/data/rules/ai-bom.yaml +268 -0
  45. package/data/rules/ai-oversight.yaml +186 -0
  46. package/data/rules/ai-provenance.yaml +92 -0
  47. package/data/rules/asar-archives.yaml +150 -0
  48. package/data/rules/cbom-security.yaml +165 -0
  49. package/data/rules/chrome-extensions.yaml +248 -0
  50. package/data/rules/ci-permissions.yaml +802 -0
  51. package/data/rules/container-risk.yaml +353 -0
  52. package/data/rules/dependency-sources.yaml +236 -0
  53. package/data/rules/golem-go.yaml +229 -0
  54. package/data/rules/hbom-compliance.yaml +325 -0
  55. package/data/rules/hbom-performance.yaml +307 -0
  56. package/data/rules/hbom-security.yaml +248 -0
  57. package/data/rules/host-topology.yaml +165 -0
  58. package/data/rules/mcp-servers.yaml +388 -0
  59. package/data/rules/obom-runtime.yaml +1776 -0
  60. package/data/rules/package-integrity.yaml +364 -0
  61. package/data/rules/rootfs-hardening.yaml +179 -0
  62. package/data/rules/vscode-extensions.yaml +237 -0
  63. package/data/spdx-export.schema.json +6794 -0
  64. package/data/spdx-license-list.json +7449 -0
  65. package/data/spdx-licenses.json +759 -0
  66. package/data/spdx.schema.json +819 -0
  67. package/data/templates/README.md +3 -0
  68. package/data/templates/asvs-4.0.3.cdx.json +2943 -0
  69. package/data/templates/asvs-5.0.cdx.json +3046 -0
  70. package/data/templates/bsimm-v13.cdx.json +1008 -0
  71. package/data/templates/masvs-2.0.0.cdx.json +225 -0
  72. package/data/templates/nist-ssdf-1.1.cdx.json +828 -0
  73. package/data/templates/pcissc-secure-slc-1.1.cdx.json +1027 -0
  74. package/data/templates/scvs-1.0.0.cdx.json +813 -0
  75. package/data/templates/ssaf-DRAFT-2023-11.cdx.json +127 -0
  76. package/data/vendor-alias.json +41967 -0
  77. package/data/wrapdb-releases.json +4227 -0
  78. package/index.cjs +15 -0
  79. package/lib/audit/index.js +2800 -0
  80. package/lib/audit/progress.js +114 -0
  81. package/lib/audit/reporters.js +937 -0
  82. package/lib/audit/scoring.js +560 -0
  83. package/lib/audit/targets.js +798 -0
  84. package/lib/cli/bomAssembly.js +1882 -0
  85. package/lib/cli/cliOptions.js +543 -0
  86. package/lib/cli/index.js +2759 -0
  87. package/lib/cli/jsBom.js +2087 -0
  88. package/lib/cli/jvmBom.js +1858 -0
  89. package/lib/cli/managedBom.js +2083 -0
  90. package/lib/cli/nativeBom.js +2125 -0
  91. package/lib/core/activity.js +1087 -0
  92. package/lib/core/env.js +719 -0
  93. package/lib/core/fs.js +1058 -0
  94. package/lib/core/httpClient.js +730 -0
  95. package/lib/core/logger.js +280 -0
  96. package/lib/core/parallel.js +323 -0
  97. package/lib/core/paths.js +70 -0
  98. package/lib/core/projectConfig.js +122 -0
  99. package/lib/core/propertySanitizer.js +174 -0
  100. package/lib/core/spdx.js +5 -0
  101. package/lib/core/state.js +59 -0
  102. package/lib/core/text.js +207 -0
  103. package/lib/core/ui.js +920 -0
  104. package/lib/core/urls.js +84 -0
  105. package/lib/ecosystems/asarutils.js +1636 -0
  106. package/lib/ecosystems/bunutils.js +402 -0
  107. package/lib/ecosystems/caxa.js +77 -0
  108. package/lib/ecosystems/chromextutils.js +1174 -0
  109. package/lib/ecosystems/cmakeResolver.js +587 -0
  110. package/lib/ecosystems/cppEvidence.js +305 -0
  111. package/lib/ecosystems/denoutils.js +1094 -0
  112. package/lib/ecosystems/dotnetutils.js +132 -0
  113. package/lib/ecosystems/ecosystems.js +2772 -0
  114. package/lib/ecosystems/golem.js +1807 -0
  115. package/lib/ecosystems/gradleutils.js +1048 -0
  116. package/lib/ecosystems/jsEvidence.js +317 -0
  117. package/lib/ecosystems/npmutils.js +586 -0
  118. package/lib/ecosystems/parsers-bazel.js +875 -0
  119. package/lib/ecosystems/parsers-dotnet.js +1430 -0
  120. package/lib/ecosystems/parsers-gleam.js +302 -0
  121. package/lib/ecosystems/parsers-go.js +818 -0
  122. package/lib/ecosystems/parsers-js.js +4222 -0
  123. package/lib/ecosystems/parsers-jvm.js +948 -0
  124. package/lib/ecosystems/parsers-misc.js +3191 -0
  125. package/lib/ecosystems/parsers-python.js +2070 -0
  126. package/lib/ecosystems/parsers-rust.js +1294 -0
  127. package/lib/ecosystems/parsers-zig.js +861 -0
  128. package/lib/ecosystems/pep770.js +341 -0
  129. package/lib/ecosystems/pylockutils.js +427 -0
  130. package/lib/ecosystems/pythonutils.js +1281 -0
  131. package/lib/ecosystems/registryProvenance.js +1003 -0
  132. package/lib/ecosystems/remote/huggingface.js +1343 -0
  133. package/lib/ecosystems/rubyutils.js +1629 -0
  134. package/lib/ecosystems/rusi.js +820 -0
  135. package/lib/ecosystems/sbtutils.js +972 -0
  136. package/lib/ecosystems/tea.js +607 -0
  137. package/lib/ecosystems/utils.js +583 -0
  138. package/lib/ecosystems/zigResolver.js +410 -0
  139. package/lib/evinser/db.js +145 -0
  140. package/lib/evinser/evinser.js +2362 -0
  141. package/lib/evinser/scalasem.js +65 -0
  142. package/lib/evinser/swiftsem.js +767 -0
  143. package/lib/helpers/annotationFormatter.js +84 -0
  144. package/lib/helpers/bomSigner.js +312 -0
  145. package/lib/helpers/exportUtils.js +160 -0
  146. package/lib/helpers/remote/dependency-track.js +117 -0
  147. package/lib/helpers/versutils.js +202 -0
  148. package/lib/helpers/vsixutils.js +1069 -0
  149. package/lib/inventory/agentFormulationParser.js +322 -0
  150. package/lib/inventory/aiCollector.js +2140 -0
  151. package/lib/inventory/aiInventory.js +414 -0
  152. package/lib/inventory/aiModelVariants.js +121 -0
  153. package/lib/inventory/aiOversightCollector.js +661 -0
  154. package/lib/inventory/aiProvenanceCollector.js +822 -0
  155. package/lib/inventory/analyzer.js +6089 -0
  156. package/lib/inventory/analyzerScope.js +807 -0
  157. package/lib/inventory/astWorker.js +20 -0
  158. package/lib/inventory/atomUtils.js +1092 -0
  159. package/lib/inventory/auditCategories.js +192 -0
  160. package/lib/inventory/bomUtils.js +369 -0
  161. package/lib/inventory/cacheCommands.js +182 -0
  162. package/lib/inventory/cacheDir.js +104 -0
  163. package/lib/inventory/cbomutils.js +590 -0
  164. package/lib/inventory/cdxrs.js +434 -0
  165. package/lib/inventory/ciParsers/azurePipelines.js +295 -0
  166. package/lib/inventory/ciParsers/circleCi.js +286 -0
  167. package/lib/inventory/ciParsers/common.js +24 -0
  168. package/lib/inventory/ciParsers/githubActions.js +2434 -0
  169. package/lib/inventory/ciParsers/gitlabCi.js +213 -0
  170. package/lib/inventory/ciParsers/jenkins.js +180 -0
  171. package/lib/inventory/citations.js +234 -0
  172. package/lib/inventory/communityAiConfigParser.js +756 -0
  173. package/lib/inventory/containerRisk.js +204 -0
  174. package/lib/inventory/cryptoAlgorithmFamily.js +258 -0
  175. package/lib/inventory/deps.js +807 -0
  176. package/lib/inventory/depsUtils.js +588 -0
  177. package/lib/inventory/display.js +2128 -0
  178. package/lib/inventory/dosai.js +601 -0
  179. package/lib/inventory/dosaiParsers.js +154 -0
  180. package/lib/inventory/dynamic.js +145 -0
  181. package/lib/inventory/envcontext.js +1793 -0
  182. package/lib/inventory/evidenceUtils.js +774 -0
  183. package/lib/inventory/fetchBatch.js +779 -0
  184. package/lib/inventory/fetchRate.js +255 -0
  185. package/lib/inventory/forgeEnricher.js +300 -0
  186. package/lib/inventory/formulationParsers.js +422 -0
  187. package/lib/inventory/gtfobins.js +339 -0
  188. package/lib/inventory/hbom.js +719 -0
  189. package/lib/inventory/hbomAnalysis.js +310 -0
  190. package/lib/inventory/hbomLoader.js +35 -0
  191. package/lib/inventory/hostTopology.js +835 -0
  192. package/lib/inventory/inventoryStats.js +100 -0
  193. package/lib/inventory/jsonLike.js +121 -0
  194. package/lib/inventory/licenseEnhancer.js +918 -0
  195. package/lib/inventory/lolbas.js +285 -0
  196. package/lib/inventory/mcp.js +253 -0
  197. package/lib/inventory/mcpConfigParser.js +683 -0
  198. package/lib/inventory/mcpDiscovery.js +112 -0
  199. package/lib/inventory/mcpPinning.js +209 -0
  200. package/lib/inventory/osPackageResolver.js +493 -0
  201. package/lib/inventory/osinfo.js +383 -0
  202. package/lib/inventory/osqueryTransform.js +274 -0
  203. package/lib/inventory/plugins.js +466 -0
  204. package/lib/inventory/protobom.js +231 -0
  205. package/lib/inventory/protobomLoader.js +43 -0
  206. package/lib/inventory/provenanceUtils.js +224 -0
  207. package/lib/inventory/purl.js +749 -0
  208. package/lib/inventory/rustFormulationParser.js +339 -0
  209. package/lib/inventory/sbomDocument.js +340 -0
  210. package/lib/inventory/source.js +1488 -0
  211. package/lib/inventory/spdx.js +361 -0
  212. package/lib/inventory/spdxExpression.js +512 -0
  213. package/lib/inventory/spdxUtils.js +107 -0
  214. package/lib/inventory/table.js +267 -0
  215. package/lib/inventory/traceRunner.js +439 -0
  216. package/lib/inventory/unicodeScan.js +147 -0
  217. package/lib/managers/binary.js +3459 -0
  218. package/lib/managers/containerutils.js +125 -0
  219. package/lib/managers/docker.js +2145 -0
  220. package/lib/managers/dockerConnection.js +162 -0
  221. package/lib/managers/oci.js +704 -0
  222. package/lib/managers/piptree.js +267 -0
  223. package/lib/parsers/cmakeCache.js +199 -0
  224. package/lib/parsers/gguf.js +492 -0
  225. package/lib/parsers/gitAiNotes.js +233 -0
  226. package/lib/parsers/gitmodules.js +239 -0
  227. package/lib/parsers/htmlExtract.js +610 -0
  228. package/lib/parsers/huggingfaceManifest.js +551 -0
  229. package/lib/parsers/huggingfaceUtils.js +506 -0
  230. package/lib/parsers/iri.js +618 -0
  231. package/lib/parsers/npmrc.js +99 -0
  232. package/lib/parsers/ollama.js +101 -0
  233. package/lib/parsers/xml.js +841 -0
  234. package/lib/server/openapi.yaml +433 -0
  235. package/lib/server/server.js +616 -0
  236. package/lib/stages/postgen/annotator.js +977 -0
  237. package/lib/stages/postgen/auditBom.js +468 -0
  238. package/lib/stages/postgen/postgen.js +1239 -0
  239. package/lib/stages/postgen/ruleEngine.js +731 -0
  240. package/lib/stages/postgen/sortBom.js +195 -0
  241. package/lib/stages/postgen/spdxConverter.js +796 -0
  242. package/lib/stages/postgen/specVersionCompat.js +703 -0
  243. package/lib/stages/pregen/envAudit.js +388 -0
  244. package/lib/stages/pregen/pregen.js +637 -0
  245. package/lib/third-party/README.md +9 -0
  246. package/lib/third-party/arborist/CHANGELOG.md +1109 -0
  247. package/lib/third-party/arborist/LICENSE.md +20 -0
  248. package/lib/third-party/arborist/README.md +315 -0
  249. package/lib/third-party/arborist/lib/arborist/index.js +258 -0
  250. package/lib/third-party/arborist/lib/arborist/load-actual.js +605 -0
  251. package/lib/third-party/arborist/lib/arborist/load-virtual.js +300 -0
  252. package/lib/third-party/arborist/lib/bin-links.js +120 -0
  253. package/lib/third-party/arborist/lib/calc-dep-flags.js +130 -0
  254. package/lib/third-party/arborist/lib/case-insensitive-map.js +51 -0
  255. package/lib/third-party/arborist/lib/consistent-resolve.js +42 -0
  256. package/lib/third-party/arborist/lib/debug.js +50 -0
  257. package/lib/third-party/arborist/lib/dep-valid.js +190 -0
  258. package/lib/third-party/arborist/lib/edge.js +417 -0
  259. package/lib/third-party/arborist/lib/from-path.js +36 -0
  260. package/lib/third-party/arborist/lib/gather-dep-set.js +43 -0
  261. package/lib/third-party/arborist/lib/index.js +22 -0
  262. package/lib/third-party/arborist/lib/inventory.js +138 -0
  263. package/lib/third-party/arborist/lib/link.js +169 -0
  264. package/lib/third-party/arborist/lib/node.js +1673 -0
  265. package/lib/third-party/arborist/lib/npm-extension.js +45 -0
  266. package/lib/third-party/arborist/lib/override-resolves.js +11 -0
  267. package/lib/third-party/arborist/lib/override-set.js +319 -0
  268. package/lib/third-party/arborist/lib/package-extensions.js +289 -0
  269. package/lib/third-party/arborist/lib/printable.js +210 -0
  270. package/lib/third-party/arborist/lib/proc-log.js +30 -0
  271. package/lib/third-party/arborist/lib/realpath.js +100 -0
  272. package/lib/third-party/arborist/lib/relpath.js +4 -0
  273. package/lib/third-party/arborist/lib/shrinkwrap.js +1291 -0
  274. package/lib/third-party/arborist/lib/spec-from-lock.js +34 -0
  275. package/lib/third-party/arborist/lib/tree-check.js +165 -0
  276. package/lib/third-party/arborist/lib/validate-npm-package-name.js +107 -0
  277. package/lib/third-party/arborist/lib/version-from-tgz.js +51 -0
  278. package/lib/third-party/arborist/lib/yarn-lock.js +397 -0
  279. package/lib/validator/bomValidator.js +985 -0
  280. package/lib/validator/complianceEngine.js +241 -0
  281. package/lib/validator/complianceRules.js +1680 -0
  282. package/lib/validator/generated/runtime.mjs +17 -0
  283. package/lib/validator/generated/validate-1.6.mjs +21258 -0
  284. package/lib/validator/generated/validate-1.7.mjs +24803 -0
  285. package/lib/validator/generated/validate-2.0.mjs +22931 -0
  286. package/lib/validator/index.js +246 -0
  287. package/lib/validator/reporters/annotations.js +142 -0
  288. package/lib/validator/reporters/console.js +160 -0
  289. package/lib/validator/reporters/index.js +41 -0
  290. package/lib/validator/reporters/json.js +37 -0
  291. package/lib/validator/reporters/sarif.js +184 -0
  292. package/package.json +209 -26
  293. package/types/bin/audit.d.ts +3 -0
  294. package/types/bin/audit.d.ts.map +1 -0
  295. package/types/bin/cdxgen.d.ts +3 -0
  296. package/types/bin/cdxgen.d.ts.map +1 -0
  297. package/types/bin/convert.d.ts +3 -0
  298. package/types/bin/convert.d.ts.map +1 -0
  299. package/types/bin/evinse.d.ts +3 -0
  300. package/types/bin/evinse.d.ts.map +1 -0
  301. package/types/bin/hbom.d.ts +3 -0
  302. package/types/bin/hbom.d.ts.map +1 -0
  303. package/types/bin/repl.d.ts +3 -0
  304. package/types/bin/repl.d.ts.map +1 -0
  305. package/types/bin/sign.d.ts +3 -0
  306. package/types/bin/sign.d.ts.map +1 -0
  307. package/types/bin/tracebom.d.ts +3 -0
  308. package/types/bin/tracebom.d.ts.map +1 -0
  309. package/types/bin/validate.d.ts +14 -0
  310. package/types/bin/validate.d.ts.map +1 -0
  311. package/types/bin/verify.d.ts +3 -0
  312. package/types/bin/verify.d.ts.map +1 -0
  313. package/types/lib/audit/index.d.ts +153 -0
  314. package/types/lib/audit/index.d.ts.map +1 -0
  315. package/types/lib/audit/progress.d.ts +31 -0
  316. package/types/lib/audit/progress.d.ts.map +1 -0
  317. package/types/lib/audit/reporters.d.ts +62 -0
  318. package/types/lib/audit/reporters.d.ts.map +1 -0
  319. package/types/lib/audit/scoring.d.ts +36 -0
  320. package/types/lib/audit/scoring.d.ts.map +1 -0
  321. package/types/lib/audit/targets.d.ts +77 -0
  322. package/types/lib/audit/targets.d.ts.map +1 -0
  323. package/types/lib/cli/bomAssembly.d.ts +329 -0
  324. package/types/lib/cli/bomAssembly.d.ts.map +1 -0
  325. package/types/lib/cli/cliOptions.d.ts +156 -0
  326. package/types/lib/cli/cliOptions.d.ts.map +1 -0
  327. package/types/lib/cli/index.d.ts +107 -0
  328. package/types/lib/cli/index.d.ts.map +1 -0
  329. package/types/lib/cli/jsBom.d.ts +94 -0
  330. package/types/lib/cli/jsBom.d.ts.map +1 -0
  331. package/types/lib/cli/jvmBom.d.ts +54 -0
  332. package/types/lib/cli/jvmBom.d.ts.map +1 -0
  333. package/types/lib/cli/managedBom.d.ts +105 -0
  334. package/types/lib/cli/managedBom.d.ts.map +1 -0
  335. package/types/lib/cli/nativeBom.d.ts +143 -0
  336. package/types/lib/cli/nativeBom.d.ts.map +1 -0
  337. package/types/lib/core/activity.d.ts +178 -0
  338. package/types/lib/core/activity.d.ts.map +1 -0
  339. package/types/lib/core/env.d.ts +192 -0
  340. package/types/lib/core/env.d.ts.map +1 -0
  341. package/types/lib/core/fs.d.ts +158 -0
  342. package/types/lib/core/fs.d.ts.map +1 -0
  343. package/types/lib/core/httpClient.d.ts +149 -0
  344. package/types/lib/core/httpClient.d.ts.map +1 -0
  345. package/types/lib/core/logger.d.ts +50 -0
  346. package/types/lib/core/logger.d.ts.map +1 -0
  347. package/types/lib/core/parallel.d.ts +95 -0
  348. package/types/lib/core/parallel.d.ts.map +1 -0
  349. package/types/lib/core/paths.d.ts +36 -0
  350. package/types/lib/core/paths.d.ts.map +1 -0
  351. package/types/lib/core/projectConfig.d.ts +23 -0
  352. package/types/lib/core/projectConfig.d.ts.map +1 -0
  353. package/types/lib/core/propertySanitizer.d.ts +23 -0
  354. package/types/lib/core/propertySanitizer.d.ts.map +1 -0
  355. package/types/lib/core/spdx.d.ts +5 -0
  356. package/types/lib/core/spdx.d.ts.map +1 -0
  357. package/types/lib/core/state.d.ts +20 -0
  358. package/types/lib/core/state.d.ts.map +1 -0
  359. package/types/lib/core/text.d.ts +78 -0
  360. package/types/lib/core/text.d.ts.map +1 -0
  361. package/types/lib/core/ui.d.ts +87 -0
  362. package/types/lib/core/ui.d.ts.map +1 -0
  363. package/types/lib/core/urls.d.ts +43 -0
  364. package/types/lib/core/urls.d.ts.map +1 -0
  365. package/types/lib/ecosystems/asarutils.d.ts +71 -0
  366. package/types/lib/ecosystems/asarutils.d.ts.map +1 -0
  367. package/types/lib/ecosystems/bunutils.d.ts +38 -0
  368. package/types/lib/ecosystems/bunutils.d.ts.map +1 -0
  369. package/types/lib/ecosystems/caxa.d.ts +8 -0
  370. package/types/lib/ecosystems/caxa.d.ts.map +1 -0
  371. package/types/lib/ecosystems/chromextutils.d.ts +97 -0
  372. package/types/lib/ecosystems/chromextutils.d.ts.map +1 -0
  373. package/types/lib/ecosystems/cmakeResolver.d.ts +176 -0
  374. package/types/lib/ecosystems/cmakeResolver.d.ts.map +1 -0
  375. package/types/lib/ecosystems/cppEvidence.d.ts +35 -0
  376. package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -0
  377. package/types/lib/ecosystems/denoutils.d.ts +76 -0
  378. package/types/lib/ecosystems/denoutils.d.ts.map +1 -0
  379. package/types/lib/ecosystems/dotnetutils.d.ts +45 -0
  380. package/types/lib/ecosystems/dotnetutils.d.ts.map +1 -0
  381. package/types/lib/ecosystems/ecosystems.d.ts +279 -0
  382. package/types/lib/ecosystems/ecosystems.d.ts.map +1 -0
  383. package/types/lib/ecosystems/golem.d.ts +60 -0
  384. package/types/lib/ecosystems/golem.d.ts.map +1 -0
  385. package/types/lib/ecosystems/gradleutils.d.ts +139 -0
  386. package/types/lib/ecosystems/gradleutils.d.ts.map +1 -0
  387. package/types/lib/ecosystems/jsEvidence.d.ts +17 -0
  388. package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -0
  389. package/types/lib/ecosystems/npmutils.d.ts +183 -0
  390. package/types/lib/ecosystems/npmutils.d.ts.map +1 -0
  391. package/types/lib/ecosystems/parsers-bazel.d.ts +36 -0
  392. package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -0
  393. package/types/lib/ecosystems/parsers-dotnet.d.ts +116 -0
  394. package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -0
  395. package/types/lib/ecosystems/parsers-gleam.d.ts +33 -0
  396. package/types/lib/ecosystems/parsers-gleam.d.ts.map +1 -0
  397. package/types/lib/ecosystems/parsers-go.d.ts +92 -0
  398. package/types/lib/ecosystems/parsers-go.d.ts.map +1 -0
  399. package/types/lib/ecosystems/parsers-js.d.ts +242 -0
  400. package/types/lib/ecosystems/parsers-js.d.ts.map +1 -0
  401. package/types/lib/ecosystems/parsers-jvm.d.ts +100 -0
  402. package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -0
  403. package/types/lib/ecosystems/parsers-misc.d.ts +450 -0
  404. package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -0
  405. package/types/lib/ecosystems/parsers-python.d.ts +145 -0
  406. package/types/lib/ecosystems/parsers-python.d.ts.map +1 -0
  407. package/types/lib/ecosystems/parsers-rust.d.ts +56 -0
  408. package/types/lib/ecosystems/parsers-rust.d.ts.map +1 -0
  409. package/types/lib/ecosystems/parsers-zig.d.ts +83 -0
  410. package/types/lib/ecosystems/parsers-zig.d.ts.map +1 -0
  411. package/types/lib/ecosystems/pep770.d.ts +38 -0
  412. package/types/lib/ecosystems/pep770.d.ts.map +1 -0
  413. package/types/lib/ecosystems/pylockutils.d.ts +68 -0
  414. package/types/lib/ecosystems/pylockutils.d.ts.map +1 -0
  415. package/types/lib/ecosystems/pythonutils.d.ts +70 -0
  416. package/types/lib/ecosystems/pythonutils.d.ts.map +1 -0
  417. package/types/lib/ecosystems/registryProvenance.d.ts +26 -0
  418. package/types/lib/ecosystems/registryProvenance.d.ts.map +1 -0
  419. package/types/lib/ecosystems/remote/huggingface.d.ts +31 -0
  420. package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -0
  421. package/types/lib/ecosystems/rubyutils.d.ts +182 -0
  422. package/types/lib/ecosystems/rubyutils.d.ts.map +1 -0
  423. package/types/lib/ecosystems/rusi.d.ts +40 -0
  424. package/types/lib/ecosystems/rusi.d.ts.map +1 -0
  425. package/types/lib/ecosystems/sbtutils.d.ts +179 -0
  426. package/types/lib/ecosystems/sbtutils.d.ts.map +1 -0
  427. package/types/lib/ecosystems/tea.d.ts +180 -0
  428. package/types/lib/ecosystems/tea.d.ts.map +1 -0
  429. package/types/lib/ecosystems/utils.d.ts +41 -0
  430. package/types/lib/ecosystems/utils.d.ts.map +1 -0
  431. package/types/lib/ecosystems/zigResolver.d.ts +70 -0
  432. package/types/lib/ecosystems/zigResolver.d.ts.map +1 -0
  433. package/types/lib/evinser/db.d.ts +17 -0
  434. package/types/lib/evinser/db.d.ts.map +1 -0
  435. package/types/lib/evinser/evinser.d.ts +354 -0
  436. package/types/lib/evinser/evinser.d.ts.map +1 -0
  437. package/types/lib/evinser/scalasem.d.ts +15 -0
  438. package/types/lib/evinser/scalasem.d.ts.map +1 -0
  439. package/types/lib/evinser/swiftsem.d.ts +103 -0
  440. package/types/lib/evinser/swiftsem.d.ts.map +1 -0
  441. package/types/lib/helpers/annotationFormatter.d.ts +23 -0
  442. package/types/lib/helpers/annotationFormatter.d.ts.map +1 -0
  443. package/types/lib/helpers/bomSigner.d.ts +28 -0
  444. package/types/lib/helpers/bomSigner.d.ts.map +1 -0
  445. package/types/lib/helpers/exportUtils.d.ts +52 -0
  446. package/types/lib/helpers/exportUtils.d.ts.map +1 -0
  447. package/types/lib/helpers/remote/dependency-track.d.ts +23 -0
  448. package/types/lib/helpers/remote/dependency-track.d.ts.map +1 -0
  449. package/types/lib/helpers/versutils.d.ts +8 -0
  450. package/types/lib/helpers/versutils.d.ts.map +1 -0
  451. package/types/lib/helpers/vsixutils.d.ts +130 -0
  452. package/types/lib/helpers/vsixutils.d.ts.map +1 -0
  453. package/types/lib/inventory/agentFormulationParser.d.ts +21 -0
  454. package/types/lib/inventory/agentFormulationParser.d.ts.map +1 -0
  455. package/types/lib/inventory/aiCollector.d.ts +61 -0
  456. package/types/lib/inventory/aiCollector.d.ts.map +1 -0
  457. package/types/lib/inventory/aiInventory.d.ts +103 -0
  458. package/types/lib/inventory/aiInventory.d.ts.map +1 -0
  459. package/types/lib/inventory/aiModelVariants.d.ts +31 -0
  460. package/types/lib/inventory/aiModelVariants.d.ts.map +1 -0
  461. package/types/lib/inventory/aiOversightCollector.d.ts +28 -0
  462. package/types/lib/inventory/aiOversightCollector.d.ts.map +1 -0
  463. package/types/lib/inventory/aiProvenanceCollector.d.ts +13 -0
  464. package/types/lib/inventory/aiProvenanceCollector.d.ts.map +1 -0
  465. package/types/lib/inventory/analyzer.d.ts +157 -0
  466. package/types/lib/inventory/analyzer.d.ts.map +1 -0
  467. package/types/lib/inventory/analyzerScope.d.ts +106 -0
  468. package/types/lib/inventory/analyzerScope.d.ts.map +1 -0
  469. package/types/lib/inventory/astWorker.d.ts +9 -0
  470. package/types/lib/inventory/astWorker.d.ts.map +1 -0
  471. package/types/lib/inventory/atomUtils.d.ts +159 -0
  472. package/types/lib/inventory/atomUtils.d.ts.map +1 -0
  473. package/types/lib/inventory/auditCategories.d.ts +80 -0
  474. package/types/lib/inventory/auditCategories.d.ts.map +1 -0
  475. package/types/lib/inventory/bomUtils.d.ts +145 -0
  476. package/types/lib/inventory/bomUtils.d.ts.map +1 -0
  477. package/types/lib/inventory/cacheCommands.d.ts +28 -0
  478. package/types/lib/inventory/cacheCommands.d.ts.map +1 -0
  479. package/types/lib/inventory/cacheDir.d.ts +55 -0
  480. package/types/lib/inventory/cacheDir.d.ts.map +1 -0
  481. package/types/lib/inventory/cbomutils.d.ts +37 -0
  482. package/types/lib/inventory/cbomutils.d.ts.map +1 -0
  483. package/types/lib/inventory/cdxrs.d.ts +90 -0
  484. package/types/lib/inventory/cdxrs.d.ts.map +1 -0
  485. package/types/lib/inventory/ciParsers/azurePipelines.d.ts +27 -0
  486. package/types/lib/inventory/ciParsers/azurePipelines.d.ts.map +1 -0
  487. package/types/lib/inventory/ciParsers/circleCi.d.ts +27 -0
  488. package/types/lib/inventory/ciParsers/circleCi.d.ts.map +1 -0
  489. package/types/lib/inventory/ciParsers/common.d.ts +11 -0
  490. package/types/lib/inventory/ciParsers/common.d.ts.map +1 -0
  491. package/types/lib/inventory/ciParsers/githubActions.d.ts +38 -0
  492. package/types/lib/inventory/ciParsers/githubActions.d.ts.map +1 -0
  493. package/types/lib/inventory/ciParsers/gitlabCi.d.ts +26 -0
  494. package/types/lib/inventory/ciParsers/gitlabCi.d.ts.map +1 -0
  495. package/types/lib/inventory/ciParsers/jenkins.d.ts +26 -0
  496. package/types/lib/inventory/ciParsers/jenkins.d.ts.map +1 -0
  497. package/types/lib/inventory/citations.d.ts +90 -0
  498. package/types/lib/inventory/citations.d.ts.map +1 -0
  499. package/types/lib/inventory/communityAiConfigParser.d.ts +14 -0
  500. package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -0
  501. package/types/lib/inventory/containerRisk.d.ts +20 -0
  502. package/types/lib/inventory/containerRisk.d.ts.map +1 -0
  503. package/types/lib/inventory/cryptoAlgorithmFamily.d.ts +37 -0
  504. package/types/lib/inventory/cryptoAlgorithmFamily.d.ts.map +1 -0
  505. package/types/lib/inventory/deps.d.ts +140 -0
  506. package/types/lib/inventory/deps.d.ts.map +1 -0
  507. package/types/lib/inventory/depsUtils.d.ts +74 -0
  508. package/types/lib/inventory/depsUtils.d.ts.map +1 -0
  509. package/types/lib/inventory/display.d.ts +227 -0
  510. package/types/lib/inventory/display.d.ts.map +1 -0
  511. package/types/lib/inventory/dosai.d.ts +130 -0
  512. package/types/lib/inventory/dosai.d.ts.map +1 -0
  513. package/types/lib/inventory/dosaiParsers.d.ts +59 -0
  514. package/types/lib/inventory/dosaiParsers.d.ts.map +1 -0
  515. package/types/lib/inventory/dynamic.d.ts +25 -0
  516. package/types/lib/inventory/dynamic.d.ts.map +1 -0
  517. package/types/lib/inventory/envcontext.d.ts +377 -0
  518. package/types/lib/inventory/envcontext.d.ts.map +1 -0
  519. package/types/lib/inventory/evidenceUtils.d.ts +74 -0
  520. package/types/lib/inventory/evidenceUtils.d.ts.map +1 -0
  521. package/types/lib/inventory/fetchBatch.d.ts +127 -0
  522. package/types/lib/inventory/fetchBatch.d.ts.map +1 -0
  523. package/types/lib/inventory/fetchRate.d.ts +118 -0
  524. package/types/lib/inventory/fetchRate.d.ts.map +1 -0
  525. package/types/lib/inventory/forgeEnricher.d.ts +31 -0
  526. package/types/lib/inventory/forgeEnricher.d.ts.map +1 -0
  527. package/types/lib/inventory/formulationParsers.d.ts +50 -0
  528. package/types/lib/inventory/formulationParsers.d.ts.map +1 -0
  529. package/types/lib/inventory/gtfobins.d.ts +27 -0
  530. package/types/lib/inventory/gtfobins.d.ts.map +1 -0
  531. package/types/lib/inventory/hbom.d.ts +58 -0
  532. package/types/lib/inventory/hbom.d.ts.map +1 -0
  533. package/types/lib/inventory/hbomAnalysis.d.ts +56 -0
  534. package/types/lib/inventory/hbomAnalysis.d.ts.map +1 -0
  535. package/types/lib/inventory/hbomLoader.d.ts +7 -0
  536. package/types/lib/inventory/hbomLoader.d.ts.map +1 -0
  537. package/types/lib/inventory/hostTopology.d.ts +47 -0
  538. package/types/lib/inventory/hostTopology.d.ts.map +1 -0
  539. package/types/lib/inventory/inventoryStats.d.ts +42 -0
  540. package/types/lib/inventory/inventoryStats.d.ts.map +1 -0
  541. package/types/lib/inventory/jsonLike.d.ts +23 -0
  542. package/types/lib/inventory/jsonLike.d.ts.map +1 -0
  543. package/types/lib/inventory/licenseEnhancer.d.ts +70 -0
  544. package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -0
  545. package/types/lib/inventory/lolbas.d.ts +16 -0
  546. package/types/lib/inventory/lolbas.d.ts.map +1 -0
  547. package/types/lib/inventory/mcp.d.ts +29 -0
  548. package/types/lib/inventory/mcp.d.ts.map +1 -0
  549. package/types/lib/inventory/mcpConfigParser.d.ts +20 -0
  550. package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -0
  551. package/types/lib/inventory/mcpDiscovery.d.ts +33 -0
  552. package/types/lib/inventory/mcpDiscovery.d.ts.map +1 -0
  553. package/types/lib/inventory/mcpPinning.d.ts +11 -0
  554. package/types/lib/inventory/mcpPinning.d.ts.map +1 -0
  555. package/types/lib/inventory/osPackageResolver.d.ts +49 -0
  556. package/types/lib/inventory/osPackageResolver.d.ts.map +1 -0
  557. package/types/lib/inventory/osinfo.d.ts +201 -0
  558. package/types/lib/inventory/osinfo.d.ts.map +1 -0
  559. package/types/lib/inventory/osqueryTransform.d.ts +84 -0
  560. package/types/lib/inventory/osqueryTransform.d.ts.map +1 -0
  561. package/types/lib/inventory/plugins.d.ts +58 -0
  562. package/types/lib/inventory/plugins.d.ts.map +1 -0
  563. package/types/lib/inventory/protobom.d.ts +71 -0
  564. package/types/lib/inventory/protobom.d.ts.map +1 -0
  565. package/types/lib/inventory/protobomLoader.d.ts +17 -0
  566. package/types/lib/inventory/protobomLoader.d.ts.map +1 -0
  567. package/types/lib/inventory/provenanceUtils.d.ts +98 -0
  568. package/types/lib/inventory/provenanceUtils.d.ts.map +1 -0
  569. package/types/lib/inventory/purl.d.ts +313 -0
  570. package/types/lib/inventory/purl.d.ts.map +1 -0
  571. package/types/lib/inventory/rustFormulationParser.d.ts +17 -0
  572. package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -0
  573. package/types/lib/inventory/sbomDocument.d.ts +59 -0
  574. package/types/lib/inventory/sbomDocument.d.ts.map +1 -0
  575. package/types/lib/inventory/source.d.ts +163 -0
  576. package/types/lib/inventory/source.d.ts.map +1 -0
  577. package/types/lib/inventory/spdx.d.ts +66 -0
  578. package/types/lib/inventory/spdx.d.ts.map +1 -0
  579. package/types/lib/inventory/spdxExpression.d.ts +58 -0
  580. package/types/lib/inventory/spdxExpression.d.ts.map +1 -0
  581. package/types/lib/inventory/spdxUtils.d.ts +12 -0
  582. package/types/lib/inventory/spdxUtils.d.ts.map +1 -0
  583. package/types/lib/inventory/table.d.ts +22 -0
  584. package/types/lib/inventory/table.d.ts.map +1 -0
  585. package/types/lib/inventory/traceRunner.d.ts +80 -0
  586. package/types/lib/inventory/traceRunner.d.ts.map +1 -0
  587. package/types/lib/inventory/unicodeScan.d.ts +46 -0
  588. package/types/lib/inventory/unicodeScan.d.ts.map +1 -0
  589. package/types/lib/managers/binary.d.ts +147 -0
  590. package/types/lib/managers/binary.d.ts.map +1 -0
  591. package/types/lib/managers/containerutils.d.ts +30 -0
  592. package/types/lib/managers/containerutils.d.ts.map +1 -0
  593. package/types/lib/managers/docker.d.ts +157 -0
  594. package/types/lib/managers/docker.d.ts.map +1 -0
  595. package/types/lib/managers/dockerConnection.d.ts +42 -0
  596. package/types/lib/managers/dockerConnection.d.ts.map +1 -0
  597. package/types/lib/managers/oci.d.ts +21 -0
  598. package/types/lib/managers/oci.d.ts.map +1 -0
  599. package/types/lib/managers/piptree.d.ts +13 -0
  600. package/types/lib/managers/piptree.d.ts.map +1 -0
  601. package/types/lib/parsers/cmakeCache.d.ts +70 -0
  602. package/types/lib/parsers/cmakeCache.d.ts.map +1 -0
  603. package/types/lib/parsers/gguf.d.ts +39 -0
  604. package/types/lib/parsers/gguf.d.ts.map +1 -0
  605. package/types/lib/parsers/gitAiNotes.d.ts +15 -0
  606. package/types/lib/parsers/gitAiNotes.d.ts.map +1 -0
  607. package/types/lib/parsers/gitmodules.d.ts +88 -0
  608. package/types/lib/parsers/gitmodules.d.ts.map +1 -0
  609. package/types/lib/parsers/htmlExtract.d.ts +34 -0
  610. package/types/lib/parsers/htmlExtract.d.ts.map +1 -0
  611. package/types/lib/parsers/huggingfaceManifest.d.ts +153 -0
  612. package/types/lib/parsers/huggingfaceManifest.d.ts.map +1 -0
  613. package/types/lib/parsers/huggingfaceUtils.d.ts +155 -0
  614. package/types/lib/parsers/huggingfaceUtils.d.ts.map +1 -0
  615. package/types/lib/parsers/iri.d.ts +68 -0
  616. package/types/lib/parsers/iri.d.ts.map +1 -0
  617. package/types/lib/parsers/npmrc.d.ts +33 -0
  618. package/types/lib/parsers/npmrc.d.ts.map +1 -0
  619. package/types/lib/parsers/ollama.d.ts +22 -0
  620. package/types/lib/parsers/ollama.d.ts.map +1 -0
  621. package/types/lib/parsers/xml.d.ts +47 -0
  622. package/types/lib/parsers/xml.d.ts.map +1 -0
  623. package/types/lib/server/server.d.ts +51 -0
  624. package/types/lib/server/server.d.ts.map +1 -0
  625. package/types/lib/stages/postgen/annotator.d.ts +36 -0
  626. package/types/lib/stages/postgen/annotator.d.ts.map +1 -0
  627. package/types/lib/stages/postgen/auditBom.d.ts +92 -0
  628. package/types/lib/stages/postgen/auditBom.d.ts.map +1 -0
  629. package/types/lib/stages/postgen/postgen.d.ts +59 -0
  630. package/types/lib/stages/postgen/postgen.d.ts.map +1 -0
  631. package/types/lib/stages/postgen/ruleEngine.d.ts +18 -0
  632. package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -0
  633. package/types/lib/stages/postgen/sortBom.d.ts +34 -0
  634. package/types/lib/stages/postgen/sortBom.d.ts.map +1 -0
  635. package/types/lib/stages/postgen/spdxConverter.d.ts +11 -0
  636. package/types/lib/stages/postgen/spdxConverter.d.ts.map +1 -0
  637. package/types/lib/stages/postgen/specVersionCompat.d.ts +71 -0
  638. package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -0
  639. package/types/lib/stages/pregen/envAudit.d.ts +14 -0
  640. package/types/lib/stages/pregen/envAudit.d.ts.map +1 -0
  641. package/types/lib/stages/pregen/pregen.d.ts +59 -0
  642. package/types/lib/stages/pregen/pregen.d.ts.map +1 -0
  643. package/types/lib/third-party/arborist/lib/arborist/index.d.ts +47 -0
  644. package/types/lib/third-party/arborist/lib/arborist/index.d.ts.map +1 -0
  645. package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts +4 -0
  646. package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts.map +1 -0
  647. package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts +4 -0
  648. package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts.map +1 -0
  649. package/types/lib/third-party/arborist/lib/bin-links.d.ts +18 -0
  650. package/types/lib/third-party/arborist/lib/bin-links.d.ts.map +1 -0
  651. package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts +3 -0
  652. package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts.map +1 -0
  653. package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts +9 -0
  654. package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts.map +1 -0
  655. package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts +3 -0
  656. package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts.map +1 -0
  657. package/types/lib/third-party/arborist/lib/debug.d.ts +3 -0
  658. package/types/lib/third-party/arborist/lib/debug.d.ts.map +1 -0
  659. package/types/lib/third-party/arborist/lib/dep-valid.d.ts +3 -0
  660. package/types/lib/third-party/arborist/lib/dep-valid.d.ts.map +1 -0
  661. package/types/lib/third-party/arborist/lib/edge.d.ts +46 -0
  662. package/types/lib/third-party/arborist/lib/edge.d.ts.map +1 -0
  663. package/types/lib/third-party/arborist/lib/from-path.d.ts +3 -0
  664. package/types/lib/third-party/arborist/lib/from-path.d.ts.map +1 -0
  665. package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts +3 -0
  666. package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts.map +1 -0
  667. package/types/lib/third-party/arborist/lib/index.d.ts +3 -0
  668. package/types/lib/third-party/arborist/lib/index.d.ts.map +1 -0
  669. package/types/lib/third-party/arborist/lib/inventory.d.ts +14 -0
  670. package/types/lib/third-party/arborist/lib/inventory.d.ts.map +1 -0
  671. package/types/lib/third-party/arborist/lib/link.d.ts +18 -0
  672. package/types/lib/third-party/arborist/lib/link.d.ts.map +1 -0
  673. package/types/lib/third-party/arborist/lib/node.d.ts +112 -0
  674. package/types/lib/third-party/arborist/lib/node.d.ts.map +1 -0
  675. package/types/lib/third-party/arborist/lib/npm-extension.d.ts +18 -0
  676. package/types/lib/third-party/arborist/lib/npm-extension.d.ts.map +1 -0
  677. package/types/lib/third-party/arborist/lib/override-resolves.d.ts +3 -0
  678. package/types/lib/third-party/arborist/lib/override-resolves.d.ts.map +1 -0
  679. package/types/lib/third-party/arborist/lib/override-set.d.ts +27 -0
  680. package/types/lib/third-party/arborist/lib/override-set.d.ts.map +1 -0
  681. package/types/lib/third-party/arborist/lib/package-extensions.d.ts +36 -0
  682. package/types/lib/third-party/arborist/lib/package-extensions.d.ts.map +1 -0
  683. package/types/lib/third-party/arborist/lib/printable.d.ts +3 -0
  684. package/types/lib/third-party/arborist/lib/printable.d.ts.map +1 -0
  685. package/types/lib/third-party/arborist/lib/proc-log.d.ts +20 -0
  686. package/types/lib/third-party/arborist/lib/proc-log.d.ts.map +1 -0
  687. package/types/lib/third-party/arborist/lib/realpath.d.ts +3 -0
  688. package/types/lib/third-party/arborist/lib/realpath.d.ts.map +1 -0
  689. package/types/lib/third-party/arborist/lib/relpath.d.ts +3 -0
  690. package/types/lib/third-party/arborist/lib/relpath.d.ts.map +1 -0
  691. package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts +54 -0
  692. package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts.map +1 -0
  693. package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts +3 -0
  694. package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts.map +1 -0
  695. package/types/lib/third-party/arborist/lib/tree-check.d.ts +3 -0
  696. package/types/lib/third-party/arborist/lib/tree-check.d.ts.map +1 -0
  697. package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts +13 -0
  698. package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts.map +1 -0
  699. package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts +6 -0
  700. package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts.map +1 -0
  701. package/types/lib/third-party/arborist/lib/yarn-lock.d.ts +35 -0
  702. package/types/lib/third-party/arborist/lib/yarn-lock.d.ts.map +1 -0
  703. package/types/lib/validator/bomValidator.d.ts +40 -0
  704. package/types/lib/validator/bomValidator.d.ts.map +1 -0
  705. package/types/lib/validator/complianceEngine.d.ts +72 -0
  706. package/types/lib/validator/complianceEngine.d.ts.map +1 -0
  707. package/types/lib/validator/complianceRules.d.ts +61 -0
  708. package/types/lib/validator/complianceRules.d.ts.map +1 -0
  709. package/types/lib/validator/index.d.ts +101 -0
  710. package/types/lib/validator/index.d.ts.map +1 -0
  711. package/types/lib/validator/reporters/annotations.d.ts +37 -0
  712. package/types/lib/validator/reporters/annotations.d.ts.map +1 -0
  713. package/types/lib/validator/reporters/console.d.ts +34 -0
  714. package/types/lib/validator/reporters/console.d.ts.map +1 -0
  715. package/types/lib/validator/reporters/index.d.ts +30 -0
  716. package/types/lib/validator/reporters/index.d.ts.map +1 -0
  717. package/types/lib/validator/reporters/json.d.ts +11 -0
  718. package/types/lib/validator/reporters/json.d.ts.map +1 -0
  719. package/types/lib/validator/reporters/sarif.d.ts +22 -0
  720. package/types/lib/validator/reporters/sarif.d.ts.map +1 -0
  721. package/mod.d.ts +0 -7
  722. package/mod.js +0 -22
@@ -0,0 +1,818 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+
5
+ import { Purl } from "@cdxgen/cdx-purl";
6
+
7
+ import { DEBUG_MODE } from "../core/activity.js";
8
+ import { shouldFetchLicense, shouldFetchVCS } from "../core/env.js";
9
+ import { safeExistsSync } from "../core/fs.js";
10
+ import { applyPurl, tryBuildPurl, tryParsePurl } from "../inventory/purl.js";
11
+ import {
12
+ _clearMetadataCache,
13
+ getGoPkgLicense,
14
+ getGoPkgVCSUrl,
15
+ prefetchGoPkgMetadata,
16
+ } from "./ecosystems.js";
17
+
18
+ /**
19
+ * Method to encode hex string to base64 string
20
+ *
21
+ * @param {string} hexString hex string
22
+ * @returns {string} base64 encoded string
23
+ */
24
+ function toBase64(hexString) {
25
+ return Buffer.from(hexString, "hex").toString("base64");
26
+ }
27
+
28
+ /**
29
+ * Builds a Go package component object containing purl, bom-ref, integrity hash,
30
+ * and optionally license and VCS external reference information.
31
+ *
32
+ * @param {string} group Package group (module path prefix, may be empty)
33
+ * @param {string} name Package name (full module path when group is empty)
34
+ * @param {string} version Package version string
35
+ * @param {string} hash Integrity hash (e.g. "sha256-…"), used as _integrity
36
+ * @returns {Promise<Object>} Component object ready for inclusion in a BOM package list
37
+ */
38
+ export async function getGoPkgComponent(group, name, version, hash) {
39
+ let license;
40
+ if (shouldFetchLicense()) {
41
+ if (DEBUG_MODE) {
42
+ console.log(
43
+ `About to fetch go package license information for ${group}:${name}`,
44
+ );
45
+ }
46
+ license = await getGoPkgLicense({
47
+ group: group,
48
+ name: name,
49
+ });
50
+ }
51
+ // Split the full module path into namespace and name, since the caller
52
+ // normally passes the whole path in `name`:
53
+ // pkg:golang/github.com/foo/bar → namespace "github.com/foo", name "bar".
54
+ let purlNamespace = group;
55
+ let purlName = name;
56
+ if (!group && name.includes("/")) {
57
+ const slash = name.lastIndexOf("/");
58
+ purlNamespace = name.slice(0, slash);
59
+ purlName = name.slice(slash + 1);
60
+ }
61
+ // Single-segment module paths (`go4.org`, `go.opencensus.io`) are real Go
62
+ // modules with no namespace. cdx-purl 0.0.3 rejected them, which cost them
63
+ // their purl; 0.0.4 relaxed the golang namespace rule, so they are now built
64
+ // like any other module. Replacing %2F with / keeps the namespace readable as
65
+ // the spec intends.
66
+ const purlString =
67
+ tryBuildPurl({
68
+ type: "golang",
69
+ namespace: purlNamespace || null,
70
+ name: purlName,
71
+ version: version || null,
72
+ })?.replace(/%2F/g, "/") || null;
73
+ let vcs;
74
+ if (shouldFetchVCS()) {
75
+ vcs = await getGoPkgVCSUrl(group, name);
76
+ }
77
+ const packageInfo = {
78
+ group: group,
79
+ name: name,
80
+ version: version,
81
+ _integrity: hash,
82
+ license: license,
83
+ };
84
+ applyPurl(packageInfo, purlString);
85
+ if (vcs) {
86
+ packageInfo.externalReferences = [{ type: "vcs", url: vcs }];
87
+ }
88
+ return packageInfo;
89
+ }
90
+
91
+ /**
92
+ * Method to parse go.mod files
93
+ *
94
+ * @param {String} goModData Contents of go.mod file
95
+ * @param {Object} gosumMap Data from go.sum files
96
+ *
97
+ * @returns {Object} Object containing parent component, rootList and packages list
98
+ */
99
+ export async function parseGoModData(goModData, gosumMap) {
100
+ const pkgComponentsList = [];
101
+ const rootList = [];
102
+
103
+ if (!goModData) {
104
+ return {};
105
+ }
106
+ const { parentComponent, entries } = decodeGoModData(goModData, gosumMap);
107
+ await prefetchGoPkgMetadata(entries);
108
+ for (const entry of entries) {
109
+ const component = await getGoPkgComponent(
110
+ "",
111
+ entry.name,
112
+ entry.version,
113
+ entry.hash,
114
+ );
115
+ if (entry.replacement) {
116
+ pkgComponentsList.push(component);
117
+ rootList.push(component);
118
+ continue;
119
+ }
120
+ if (entry.indirect) {
121
+ component.scope = "optional";
122
+ } else {
123
+ rootList.push(component);
124
+ }
125
+ pkgComponentsList.push(component);
126
+ }
127
+ // Clear the cache
128
+ _clearMetadataCache();
129
+ return {
130
+ parentComponent,
131
+ pkgList: pkgComponentsList.sort((a, b) =>
132
+ // Sort on bom-ref, which every component has, rather than falling back
133
+ // from purl to name. A mixed key sorts purl-less components under their
134
+ // bare name and everything else under "pkg:...", so whether a purl could
135
+ // be built silently reorders the output.
136
+ (a["bom-ref"] || "").localeCompare(b["bom-ref"] || ""),
137
+ ),
138
+ rootList,
139
+ };
140
+ }
141
+
142
+ /**
143
+ * Read a go.mod into its parent component and an ordered list of module
144
+ * entries, without touching the network.
145
+ *
146
+ * Separated from {@link parseGoModData} so the whole module set is known before
147
+ * the first licence lookup, which is what makes one batched round possible.
148
+ *
149
+ * @param {String} goModData Contents of go.mod file
150
+ * @param {Object} gosumMap Data from go.sum files
151
+ * @returns {{parentComponent: Object, entries: Array<Object>}} Parent component
152
+ * and module entries in file order
153
+ */
154
+ function decodeGoModData(goModData, gosumMap) {
155
+ const parentComponent = {};
156
+ const entries = [];
157
+ let isModReplacement = false;
158
+ let isTool = false;
159
+
160
+ const pkgs = goModData.split("\n");
161
+ for (let l of pkgs) {
162
+ // Windows of course
163
+ l = l.replaceAll("\r", "").replace(/[\t ]+/g, " ");
164
+ // Capture the parent component name from the module
165
+ if (l.startsWith("module ")) {
166
+ parentComponent.name = l.split(" ").pop().trim();
167
+ parentComponent.type = "application";
168
+ // Single-segment module paths are valid golang purls as of cdx-purl 0.0.4.
169
+ applyPurl(
170
+ parentComponent,
171
+ tryParsePurl(`pkg:golang/${parentComponent.name}`),
172
+ );
173
+ continue;
174
+ }
175
+
176
+ // The `tool` block dependency relations will be recorded into `require` block(need run `go mod tidy`), just ignore that
177
+ if (l.includes("tool (")) {
178
+ isTool = !l.includes(")");
179
+ continue;
180
+ }
181
+ if (l.includes(")")) {
182
+ isTool = false;
183
+ continue;
184
+ }
185
+ if (l.includes("tool ") || isTool) {
186
+ continue;
187
+ }
188
+ if (l.startsWith("toolchain ")) {
189
+ const toolchainVer = l.split(" ").pop().trim();
190
+ parentComponent.properties = [
191
+ { name: "cdx:go:toolchain", value: toolchainVer },
192
+ ];
193
+ continue;
194
+ }
195
+ // Skip go.mod file headers, whitespace, and/or comments
196
+ if (
197
+ l.startsWith("go ") ||
198
+ //TODO: should toolchain be considered as a dependency
199
+ l.includes(")") ||
200
+ l.trim() === "" ||
201
+ l.trim().startsWith("//")
202
+ ) {
203
+ continue;
204
+ }
205
+
206
+ // Handle required modules separately from replacement modules to ensure accuracy when parsing component data.
207
+ if (l.includes("require (")) {
208
+ isModReplacement = false;
209
+ continue;
210
+ }
211
+ if (l.includes("replace (")) {
212
+ isModReplacement = true;
213
+ continue;
214
+ }
215
+ if (l.includes("replace ")) {
216
+ // If this is an inline replacement, drop the word replace
217
+ // (eg; "replace google.golang.org/grpc => google.golang.org/grpc v1.21.0" becomes " google.golang.org/grpc => google.golang.org/grpc v1.21.0")
218
+ l = l.replace("replace", "");
219
+ isModReplacement = true;
220
+ }
221
+ // require google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17
222
+ if (l.startsWith("require ")) {
223
+ l = l.replace("require ", "");
224
+ isModReplacement = false;
225
+ }
226
+ const tmpA = l.trim().split(" ");
227
+ if (!isModReplacement) {
228
+ // Add group, name and version component properties for required modules
229
+ const version = tmpA[1];
230
+ entries.push({
231
+ group: "",
232
+ name: tmpA[0],
233
+ version,
234
+ hash: gosumMap[`${tmpA[0]}@${version}`],
235
+ indirect: l.endsWith("// indirect"),
236
+ replacement: false,
237
+ });
238
+ } else {
239
+ // Add group, name and version component properties for replacement modules
240
+ const version = tmpA[3];
241
+ entries.push({
242
+ group: "",
243
+ name: tmpA[2],
244
+ version,
245
+ hash: gosumMap[`${tmpA[2]}@${version}`],
246
+ indirect: false,
247
+ replacement: true,
248
+ });
249
+ }
250
+ }
251
+ return { parentComponent, entries };
252
+ }
253
+
254
+ /**
255
+ * Parses a Go modules text file (e.g. vendor/modules.txt) and returns a list of
256
+ * Go package components. Cross-references the go.sum map for integrity hashes and
257
+ * sets scope and confidence based on hash availability.
258
+ *
259
+ * @param {string} txtFile Path to the modules.txt file
260
+ * @param {Object} gosumMap Map of "module@version" keys to sha256 hash values from go.sum
261
+ * @returns {Promise<Object[]>} List of Go package component objects with evidence
262
+ */
263
+ export async function parseGoModulesTxt(txtFile, gosumMap) {
264
+ const pkgList = [];
265
+ const txtData = readFileSync(txtFile, { encoding: "utf-8" });
266
+ const pkgs = txtData
267
+ .split("\n")
268
+ .filter((p) => p.trim().replace(/["']/g, "").startsWith("# "));
269
+ await prefetchGoPkgMetadata(
270
+ // # cel.dev/expr v0.18.0
271
+ pkgs.map((l) => ({ group: "", name: l.split(" ")[1] })),
272
+ );
273
+ for (const l of pkgs) {
274
+ const tmpA = l.split(" ");
275
+ if (!tmpA.length === 3) {
276
+ continue;
277
+ }
278
+ const version = tmpA[2];
279
+ const gosumHash = gosumMap[`${tmpA[1]}@${version}`];
280
+ const component = await getGoPkgComponent("", tmpA[1], tmpA[2], gosumHash);
281
+ let confidence = 0.7;
282
+ if (gosumHash) {
283
+ component.scope = "required";
284
+ } else {
285
+ confidence = 0.3;
286
+ }
287
+ pkgList.push(_addGoComponentEvidence(component, txtFile, confidence));
288
+ }
289
+ return pkgList;
290
+ }
291
+
292
+ /**
293
+ * Parse go list output
294
+ *
295
+ * @param {string} rawOutput Output from go list invocation
296
+ * @param {Object} gosumMap go.sum data
297
+ * @returns Object with parent component and List of packages
298
+ */
299
+ export async function parseGoListDep(rawOutput, gosumMap) {
300
+ let parentComponent = {};
301
+ const deps = [];
302
+ if (typeof rawOutput === "string") {
303
+ const keys_cache = {};
304
+ const pkgs = rawOutput
305
+ .split("\n")
306
+ .filter((p) => p.trim().replace(/["']/g, "").length);
307
+ // Same shape and same duplicate filter as the loop below, so the batch
308
+ // covers every module the loop resolves and nothing else.
309
+ const prefetchSeen = new Set();
310
+ const prefetchModules = [];
311
+ for (const l of pkgs) {
312
+ const verArr = l.trim().replace(/["']/g, "").split("|");
313
+ if (!verArr || verArr.length < 5) {
314
+ continue;
315
+ }
316
+ const key = `${verArr[0]}-${verArr[1]}`;
317
+ if (prefetchSeen.has(key)) {
318
+ continue;
319
+ }
320
+ prefetchSeen.add(key);
321
+ prefetchModules.push({ group: "", name: verArr[0] });
322
+ }
323
+ await prefetchGoPkgMetadata(prefetchModules);
324
+ for (const l of pkgs) {
325
+ const verArr = l.trim().replace(/["']/g, "").split("|");
326
+ if (verArr && verArr.length >= 5) {
327
+ const key = `${verArr[0]}-${verArr[1]}`;
328
+ // Filter duplicates
329
+ if (!keys_cache[key]) {
330
+ keys_cache[key] = key;
331
+ const version = verArr[1];
332
+ let gosumHash = gosumMap[`${verArr[0]}@${version}`];
333
+ if (!gosumHash && verArr.length >= 8 && verArr[8]?.length) {
334
+ gosumHash = `sha256-${verArr[8].replace("h1:", "")}`;
335
+ }
336
+ const component = await getGoPkgComponent(
337
+ "",
338
+ verArr[0],
339
+ version,
340
+ gosumHash,
341
+ );
342
+ // This is misusing the scope attribute to represent direct vs indirect
343
+ if (verArr[2] === "false") {
344
+ component.scope = "required";
345
+ } else if (verArr[2] === "true") {
346
+ component.scope = "optional";
347
+ }
348
+ component.properties = [
349
+ {
350
+ name: "internal:SrcGoMod",
351
+ value: verArr[3] || "",
352
+ },
353
+ {
354
+ name: "internal:ModuleGoVersion",
355
+ value: verArr[4] || "",
356
+ },
357
+ {
358
+ name: "cdx:go:indirect",
359
+ value: verArr[2],
360
+ },
361
+ ];
362
+ if (
363
+ verArr.length >= 6 &&
364
+ verArr[6]?.length &&
365
+ verArr[6] !== "<nil>"
366
+ ) {
367
+ component.properties.push({
368
+ name: "cdx:go:creation_time",
369
+ value: verArr[6],
370
+ });
371
+ }
372
+ if (verArr.length >= 7 && verArr[7]?.length) {
373
+ component.properties.push({
374
+ name: "cdx:go:deprecated",
375
+ value: verArr[7],
376
+ });
377
+ }
378
+ if (verArr.length >= 9 && verArr[9]?.length) {
379
+ component.properties.push({
380
+ name: "cdx:go:local_dir",
381
+ value: verArr[9],
382
+ });
383
+ if (safeExistsSync(join(verArr[9], "LICENSE"))) {
384
+ const licenseText = readFileSync(join(verArr[9], "LICENSE"), {
385
+ encoding: "utf-8",
386
+ });
387
+ if (licenseText?.length) {
388
+ component.licenses = [
389
+ {
390
+ license: {
391
+ name: "CUSTOM",
392
+ text: { contentType: "text/plain", content: licenseText },
393
+ },
394
+ },
395
+ ];
396
+ }
397
+ }
398
+ }
399
+ if (verArr.length > 5 && verArr[5] === "true") {
400
+ parentComponent = component;
401
+ } else {
402
+ deps.push(component);
403
+ }
404
+ }
405
+ }
406
+ }
407
+ }
408
+ return {
409
+ parentComponent,
410
+ pkgList: deps.sort((a, b) =>
411
+ // Sort on bom-ref, which every component has, rather than falling back
412
+ // from purl to name. A mixed key sorts purl-less components under their
413
+ // bare name and everything else under "pkg:...", so whether a purl could
414
+ // be built silently reorders the output.
415
+ (a["bom-ref"] || "").localeCompare(b["bom-ref"] || ""),
416
+ ),
417
+ };
418
+ }
419
+
420
+ function _addGoComponentEvidence(component, goModFile, confidence = 0.8) {
421
+ if (goModFile) {
422
+ component.evidence = {
423
+ identity: {
424
+ field: "purl",
425
+ confidence,
426
+ methods: [
427
+ {
428
+ technique: "manifest-analysis",
429
+ confidence,
430
+ value: goModFile,
431
+ },
432
+ ],
433
+ },
434
+ };
435
+ if (!component.properties) {
436
+ component.properties = [];
437
+ }
438
+ component.properties.push({
439
+ name: "internal:SrcFile",
440
+ value: goModFile,
441
+ });
442
+ }
443
+ return component;
444
+ }
445
+
446
+ /**
447
+ * Parse go mod graph
448
+ *
449
+ * @param {string} rawOutput Output from go mod graph invocation
450
+ * @param {string} goModFile go.mod file
451
+ * @param {Object} gosumMap Hashes from gosum for lookups
452
+ * @param {Array} epkgList Existing package list
453
+ * @param {Object} parentComponent Current parent component
454
+ *
455
+ * @returns Object containing List of packages and dependencies
456
+ */
457
+ export async function parseGoModGraph(
458
+ rawOutput,
459
+ goModFile,
460
+ gosumMap,
461
+ epkgList = [],
462
+ parentComponent = {},
463
+ ) {
464
+ const pkgList = [];
465
+ const dependenciesList = [];
466
+ const addedPkgs = {};
467
+ const depsMap = {};
468
+ // Useful for filtering out invalid components
469
+ const existingPkgMap = {};
470
+ // Package map by manually parsing the go.mod data
471
+ let goModPkgMap = {};
472
+ // Direct dependencies by manually parsing the go.mod data
473
+ const goModDirectDepsMap = {};
474
+ // Indirect dependencies by manually parsing the go.mod data
475
+ const goModOptionalDepsMap = {};
476
+ const excludedRefs = [];
477
+ if (goModFile) {
478
+ goModPkgMap = await parseGoModData(
479
+ readFileSync(goModFile, { encoding: "utf-8" }),
480
+ gosumMap,
481
+ );
482
+ if (goModPkgMap?.rootList) {
483
+ for (const epkg of goModPkgMap.rootList) {
484
+ goModDirectDepsMap[epkg["bom-ref"]] = true;
485
+ }
486
+ }
487
+ if (goModPkgMap?.pkgList) {
488
+ for (const epkg of goModPkgMap.pkgList) {
489
+ if (epkg?.scope === "optional") {
490
+ goModOptionalDepsMap[epkg["bom-ref"]] = true;
491
+ }
492
+ }
493
+ }
494
+ }
495
+ for (const epkg of epkgList) {
496
+ existingPkgMap[epkg["bom-ref"]] = true;
497
+ }
498
+ if (parentComponent && Object.keys(parentComponent).length) {
499
+ existingPkgMap[parentComponent["bom-ref"]] = true;
500
+ }
501
+ if (typeof rawOutput === "string") {
502
+ const lines = rawOutput.split("\n");
503
+ // Each line is of the form ref dependsOn
504
+ // github.com/spf13/afero@v1.2.2 golang.org/x/text@v0.3.0
505
+ for (const l of lines) {
506
+ // To keep the parsing logic simple we prefix pkg:golang/
507
+ // and let packageurl work out the rest
508
+ const tmpA = l.replaceAll("\r", "").split(" ");
509
+ if (tmpA && tmpA.length === 2) {
510
+ try {
511
+ // Some golang modules (e.g. go4.org) have no path separator and
512
+ // cdx-purl requires a namespace. Use the raw ref when parsing fails.
513
+ let sourceRefString;
514
+ let sourceName = tmpA[0].split("@")[0];
515
+ let sourcePurl = null;
516
+ try {
517
+ sourcePurl = Purl.parse(`pkg:golang/${tmpA[0]}`);
518
+ sourceRefString = decodeURIComponent(sourcePurl.toString());
519
+ sourceName = `${sourcePurl.namespace ? `${sourcePurl.namespace}/` : ""}${sourcePurl.name}`;
520
+ } catch {
521
+ sourceRefString = `pkg:golang/${tmpA[0]}`;
522
+ }
523
+ let dependsRefString;
524
+ let dependsName = tmpA[1].split("@")[0];
525
+ let dependsPurl = null;
526
+ try {
527
+ dependsPurl = Purl.parse(`pkg:golang/${tmpA[1]}`);
528
+ dependsRefString = decodeURIComponent(dependsPurl.toString());
529
+ dependsName = `${dependsPurl.namespace ? `${dependsPurl.namespace}/` : ""}${dependsPurl.name}`;
530
+ } catch {
531
+ dependsRefString = `pkg:golang/${tmpA[1]}`;
532
+ }
533
+ // Since go mod graph over-reports direct dependencies we use the existing list
534
+ // from go deps to filter the result
535
+ if (
536
+ existingPkgMap &&
537
+ Object.keys(existingPkgMap).length &&
538
+ (!existingPkgMap[sourceRefString] ||
539
+ !existingPkgMap[dependsRefString])
540
+ ) {
541
+ continue;
542
+ }
543
+ // Add the source and depends to the pkgList
544
+ if (!addedPkgs[tmpA[0]] && !excludedRefs.includes(sourceRefString)) {
545
+ const component = await getGoPkgComponent(
546
+ "",
547
+ sourceName,
548
+ sourcePurl?.version || tmpA[0].split("@")[1],
549
+ gosumMap[tmpA[0]],
550
+ );
551
+ let confidence = 0.7;
552
+ if (goModOptionalDepsMap[component["bom-ref"]]) {
553
+ component.scope = "optional";
554
+ confidence = 0.5;
555
+ } else if (goModDirectDepsMap[component["bom-ref"]]) {
556
+ component.scope = "required";
557
+ }
558
+ // These are likely false positives
559
+ if (
560
+ goModFile &&
561
+ !Object.keys(existingPkgMap).length &&
562
+ goModPkgMap?.parentComponent?.["bom-ref"] !== sourceRefString &&
563
+ !component.scope
564
+ ) {
565
+ continue;
566
+ }
567
+ // Don't add the parent component to the package list
568
+ if (goModPkgMap?.parentComponent?.["bom-ref"] !== sourceRefString) {
569
+ pkgList.push(
570
+ _addGoComponentEvidence(component, goModFile, confidence),
571
+ );
572
+ }
573
+ addedPkgs[tmpA[0]] = true;
574
+ }
575
+ if (!addedPkgs[tmpA[1]]) {
576
+ const component = await getGoPkgComponent(
577
+ "",
578
+ dependsName,
579
+ dependsPurl?.version || tmpA[1].split("@")[1],
580
+ gosumMap[tmpA[1]],
581
+ );
582
+ let confidence = 0.7;
583
+ if (goModDirectDepsMap[component["bom-ref"]]) {
584
+ component.scope = "required";
585
+ }
586
+ if (goModOptionalDepsMap[component["bom-ref"]]) {
587
+ component.scope = "optional";
588
+ confidence = 0.5;
589
+ }
590
+ if (
591
+ goModPkgMap?.parentComponent?.["bom-ref"] !== sourceRefString &&
592
+ goModDirectDepsMap[sourceRefString] &&
593
+ component?.scope !== "required"
594
+ ) {
595
+ // If the parent is required, then ensure the child doesn't accidentally become optional or excluded
596
+ component.scope = undefined;
597
+ }
598
+ // Mark the go toolchain components as excluded
599
+ if (
600
+ dependsRefString.startsWith("pkg:golang/toolchain@") ||
601
+ dependsRefString.startsWith("pkg:golang/go@")
602
+ ) {
603
+ excludedRefs.push(dependsRefString);
604
+ continue;
605
+ }
606
+ // These are likely false positives
607
+ if (
608
+ goModFile &&
609
+ goModPkgMap?.parentComponent?.["bom-ref"] !== sourceRefString &&
610
+ !Object.keys(existingPkgMap).length &&
611
+ !component.scope
612
+ ) {
613
+ excludedRefs.push(dependsRefString);
614
+ continue;
615
+ }
616
+ // The confidence for the indirect dependencies is lower
617
+ // This is because go mod graph emits module requirements graph, which could be different to module compile graph
618
+ // See https://go.dev/ref/mod#glos-module-graph
619
+ pkgList.push(
620
+ _addGoComponentEvidence(component, goModFile, confidence),
621
+ );
622
+ addedPkgs[tmpA[1]] = true;
623
+ }
624
+ if (!depsMap[sourceRefString]) {
625
+ depsMap[sourceRefString] = new Set();
626
+ }
627
+ if (!depsMap[dependsRefString]) {
628
+ depsMap[dependsRefString] = new Set();
629
+ }
630
+ // Check if the root is really dependent on this component
631
+ if (
632
+ goModPkgMap?.parentComponent?.["bom-ref"] === sourceRefString &&
633
+ Object.keys(goModDirectDepsMap).length &&
634
+ !goModDirectDepsMap[dependsRefString]
635
+ ) {
636
+ // ignore
637
+ } else if (!excludedRefs.includes(dependsRefString)) {
638
+ depsMap[sourceRefString].add(dependsRefString);
639
+ }
640
+ } catch (_e) {
641
+ // pass
642
+ }
643
+ }
644
+ }
645
+ }
646
+ for (const adep of Object.keys(depsMap).sort()) {
647
+ dependenciesList.push({
648
+ ref: adep,
649
+ dependsOn: Array.from(depsMap[adep]).sort(),
650
+ });
651
+ }
652
+ return {
653
+ pkgList: pkgList.sort((a, b) =>
654
+ // Sort on bom-ref, which every component has, rather than falling back
655
+ // from purl to name. A mixed key sorts purl-less components under their
656
+ // bare name and everything else under "pkg:...", so whether a purl could
657
+ // be built silently reorders the output.
658
+ (a["bom-ref"] || "").localeCompare(b["bom-ref"] || ""),
659
+ ),
660
+ dependenciesList,
661
+ parentComponent: goModPkgMap?.parentComponent,
662
+ rootList: goModPkgMap?.rootList,
663
+ };
664
+ }
665
+
666
+ /**
667
+ * Parse go mod why output.
668
+ *
669
+ * @param {string} rawOutput Output from go mod why
670
+ * @returns {string|undefined} package name or none
671
+ */
672
+ export function parseGoModWhy(rawOutput) {
673
+ if (typeof rawOutput === "string") {
674
+ let pkg_name;
675
+ const lines = rawOutput.split("\n");
676
+ lines.forEach((l) => {
677
+ if (l && !l.startsWith("#") && !l.startsWith("(")) {
678
+ pkg_name = l.trim();
679
+ }
680
+ });
681
+ return pkg_name;
682
+ }
683
+ return undefined;
684
+ }
685
+
686
+ /**
687
+ * Parse go sum data
688
+ * @param {string} gosumData Content of go.sum
689
+ * @returns package list
690
+ */
691
+ export async function parseGosumData(gosumData) {
692
+ const pkgList = [];
693
+ if (!gosumData) {
694
+ return pkgList;
695
+ }
696
+ // Decoding every line first lets the whole module set be fetched in one
697
+ // batched round before any component is built. One decode function feeds both,
698
+ // so the batch cannot ask for a module the loop does not resolve.
699
+ const entries = [];
700
+ for (const l of gosumData.split("\n")) {
701
+ const m = l.replaceAll("\r", "");
702
+ // look for lines containing go.mod
703
+ if (m.indexOf("go.mod") > -1) {
704
+ const tmpA = m.split(" ");
705
+ entries.push({
706
+ group: "",
707
+ name: tmpA[0],
708
+ version: tmpA[1].replace("/go.mod", ""),
709
+ hash: tmpA[tmpA.length - 1].replace("h1:", "sha256-"),
710
+ });
711
+ }
712
+ }
713
+ await prefetchGoPkgMetadata(entries);
714
+ for (const entry of entries) {
715
+ pkgList.push(
716
+ await getGoPkgComponent("", entry.name, entry.version, entry.hash),
717
+ );
718
+ }
719
+ return pkgList;
720
+ }
721
+
722
+ /**
723
+ * Parses the contents of a Gopkg.lock or Gopkg.toml file (dep tool format) and
724
+ * returns a list of Go package components. Optionally fetches license information
725
+ * for each package when FETCH_LICENSE is enabled.
726
+ *
727
+ * @param {string} gopkgData Raw string contents of the Gopkg lock/toml file
728
+ * @returns {Promise<Object[]>} List of Go package component objects
729
+ */
730
+ export async function parseGopkgData(gopkgData) {
731
+ const pkgList = [];
732
+ if (!gopkgData) {
733
+ return pkgList;
734
+ }
735
+ let pkg = null;
736
+ const pkgs = gopkgData.split("\n");
737
+ for (const l of pkgs) {
738
+ let key = null;
739
+ let value = null;
740
+ if (l.indexOf("[[projects]]") > -1) {
741
+ if (pkg) {
742
+ pkgList.push(pkg);
743
+ }
744
+ pkg = {};
745
+ }
746
+ if (l.indexOf("=") > -1) {
747
+ const tmpA = l.split("=");
748
+ key = tmpA[0].trim();
749
+ value = tmpA[1].trim().replace(/"/g, "");
750
+ let digestStr;
751
+ switch (key) {
752
+ case "digest":
753
+ digestStr = value.replace("1:", "");
754
+ pkg._integrity = `sha256-${toBase64(digestStr)}`;
755
+ break;
756
+ case "name":
757
+ pkg.group = "";
758
+ pkg.name = value;
759
+ if (shouldFetchLicense()) {
760
+ pkg.license = await getGoPkgLicense({
761
+ group: pkg.group,
762
+ name: pkg.name,
763
+ });
764
+ }
765
+ break;
766
+ case "version":
767
+ pkg.version = value;
768
+ break;
769
+ case "revision":
770
+ if (!pkg.version) {
771
+ pkg.version = value;
772
+ }
773
+ }
774
+ }
775
+ }
776
+ return pkgList;
777
+ }
778
+
779
+ /**
780
+ * Parses the output of `go version -m` (build info) and returns a list of Go
781
+ * package components for each "dep" line, including name, version, and integrity hash.
782
+ *
783
+ * @param {string} buildInfoData Raw string output from `go version -m`
784
+ * @returns {Promise<Object[]>} List of Go package component objects
785
+ */
786
+ export async function parseGoVersionData(buildInfoData) {
787
+ const pkgList = [];
788
+ if (!buildInfoData) {
789
+ return pkgList;
790
+ }
791
+ const entries = [];
792
+ for (const line of buildInfoData.split("\n")) {
793
+ const l = line.trim().replace(/\t/g, " ");
794
+ if (!l.startsWith("dep")) {
795
+ continue;
796
+ }
797
+ const tmpA = l.split(" ");
798
+ if (!tmpA || tmpA.length < 3) {
799
+ continue;
800
+ }
801
+ entries.push({
802
+ group: "",
803
+ name: tmpA[1].trim(),
804
+ version: tmpA[2].trim(),
805
+ hash:
806
+ tmpA.length === 4
807
+ ? tmpA[tmpA.length - 1].replace("h1:", "sha256-")
808
+ : "",
809
+ });
810
+ }
811
+ await prefetchGoPkgMetadata(entries);
812
+ for (const entry of entries) {
813
+ pkgList.push(
814
+ await getGoPkgComponent("", entry.name, entry.version, entry.hash),
815
+ );
816
+ }
817
+ return pkgList;
818
+ }