@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,383 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+
4
+ /**
5
+ * Ubuntu / Debian codename map and RHEL display-name aliases.
6
+ * Keep this list updated every year.
7
+ */
8
+ export const OS_DISTRO_ALIAS = {
9
+ "ubuntu-4.10": "warty",
10
+ "ubuntu-5.04": "hoary",
11
+ "ubuntu-5.10": "breezy",
12
+ "ubuntu-6.06": "dapper",
13
+ "ubuntu-6.10": "edgy",
14
+ "ubuntu-7.04": "feisty",
15
+ "ubuntu-7.10": "gutsy",
16
+ "ubuntu-8.04": "hardy",
17
+ "ubuntu-8.10": "intrepid",
18
+ "ubuntu-9.04": "jaunty",
19
+ "ubuntu-9.10": "karmic",
20
+ "ubuntu-10.04": "lucid",
21
+ "ubuntu-10.10": "maverick",
22
+ "ubuntu-11.04": "natty",
23
+ "ubuntu-11.10": "oneiric",
24
+ "ubuntu-12.04": "precise",
25
+ "ubuntu-12.10": "quantal",
26
+ "ubuntu-13.04": "raring",
27
+ "ubuntu-13.10": "saucy",
28
+ "ubuntu-14.04": "trusty",
29
+ "ubuntu-14.10": "utopic",
30
+ "ubuntu-15.04": "vivid",
31
+ "ubuntu-15.10": "wily",
32
+ "ubuntu-16.04": "xenial",
33
+ "ubuntu-16.10": "yakkety",
34
+ "ubuntu-17.04": "zesty",
35
+ "ubuntu-17.10": "artful",
36
+ "ubuntu-18.04": "bionic",
37
+ "ubuntu-18.10": "cosmic",
38
+ "ubuntu-19.04": "disco",
39
+ "ubuntu-19.10": "eoan",
40
+ "ubuntu-20.04": "focal",
41
+ "ubuntu-20.10": "groovy",
42
+ "ubuntu-21.04": "hirsute",
43
+ "ubuntu-21.10": "impish",
44
+ "ubuntu-22.04": "jammy",
45
+ "ubuntu-22.10": "kinetic",
46
+ "ubuntu-23.04": "lunar",
47
+ "ubuntu-23.10": "mantic",
48
+ "ubuntu-24.04": "noble",
49
+ "ubuntu-24.10": "oracular",
50
+ "ubuntu-25.04": "plucky",
51
+ "ubuntu-25.10": "questing",
52
+ "debian-15": "duke",
53
+ "debian-14": "forky",
54
+ "debian-14.5": "forky",
55
+ "debian-13": "trixie",
56
+ "debian-13.5": "trixie",
57
+ "debian-12": "bookworm",
58
+ "debian-12.5": "bookworm",
59
+ "debian-12.6": "bookworm",
60
+ "debian-11": "bullseye",
61
+ "debian-11.5": "bullseye",
62
+ "debian-10": "buster",
63
+ "debian-10.5": "buster",
64
+ "debian-9": "stretch",
65
+ "debian-9.5": "stretch",
66
+ "debian-8": "jessie",
67
+ "debian-8.5": "jessie",
68
+ "debian-7": "wheezy",
69
+ "debian-7.5": "wheezy",
70
+ "debian-6": "squeeze",
71
+ "debian-5": "lenny",
72
+ "debian-4": "etch",
73
+ "debian-3.1": "sarge",
74
+ "debian-3": "woody",
75
+ "debian-2.2": "potato",
76
+ "debian-2.1": "slink",
77
+ "debian-2": "hamm",
78
+ "debian-1.3": "bo",
79
+ "debian-1.2": "rex",
80
+ "debian-1.1": "buzz",
81
+ "red hat enterprise linux": "rhel",
82
+ "red hat enterprise linux 6": "rhel-6",
83
+ "red hat enterprise linux 7": "rhel-7",
84
+ "red hat enterprise linux 8": "rhel-8",
85
+ "red hat enterprise linux 9": "rhel-9",
86
+ "red hat enterprise linux 10": "rhel-10",
87
+ };
88
+
89
+ /**
90
+ * Canonical purl namespace for distro vendors that are published under more
91
+ * than one spelling. Both the os-release path (`getDistroInfo`) and the trivy
92
+ * passthrough in `lib/managers/binary.js` route through this single map so the
93
+ * two paths cannot drift apart again.
94
+ *
95
+ * Azure Linux 2.0 is CBL-Mariner 2.0 — Microsoft renamed the product — and the
96
+ * OSV feed publishes `pkg:rpm/azure-linux/<name>` for every generation
97
+ * (ecosystems "Azure Linux:2" and "Azure Linux:3"), so the historical
98
+ * spellings azurelinux, cbl-mariner and mariner all canonicalise to
99
+ * "azure-linux". rhel/ol/amzn/opensuse-* are the cases previously inlined in
100
+ * getDistroInfo(); alma/rocky-linux were previously inlined in binary.js.
101
+ *
102
+ * Amazon Linux canonicalises to "amazon", the spelling the vulnerability feeds
103
+ * publish (AppThreat vuln-list `amazon`): the os-release ID is `amzn` and
104
+ * trivy emits `amazon`, and the previous `amazonlinux` mapping here matched
105
+ * neither, so live-host Amazon Linux purls matched nothing at all.
106
+ */
107
+ export const OS_NAMESPACE_ALIAS = {
108
+ alma: "almalinux",
109
+ amazonlinux: "amazon",
110
+ amzn: "amazon",
111
+ azurelinux: "azure-linux",
112
+ "cbl-mariner": "azure-linux",
113
+ mariner: "azure-linux",
114
+ ol: "oracle",
115
+ "opensuse-leap": "opensuse",
116
+ "opensuse-tumbleweed": "opensuse",
117
+ rhel: "redhat",
118
+ "rocky-linux": "rocky",
119
+ };
120
+
121
+ /**
122
+ * Vendor prefixes that `distro` qualifier values are canonicalised for, so one
123
+ * release has exactly one qualifier value no matter which side produced it.
124
+ *
125
+ * trivy stamps the qualifier from its own distro table while cdxgen stamps it
126
+ * from os-release, and the two disagree: an Oracle Linux 9.8 image came out
127
+ * with `oracle-9.8` on 99 components and `ol-9.8` on 43, and a RHEL 9.8 image
128
+ * with namespace `redhat` but qualifier `rhel-9.8`. Canonicalising both sides
129
+ * through this map collapses each release onto the vendor its purl namespace
130
+ * already uses.
131
+ *
132
+ * SUSE is deliberately absent. `sles-15.6`, `opensuse-leap-15.6` and
133
+ * `opensuse-tumbleweed-<snapshot>` are the values consumers derive the release
134
+ * channel from (vulnerability-db maps them to per-release channels), and both
135
+ * sides already agree on them; folding Leap and Tumbleweed onto a bare
136
+ * `opensuse-` vendor would destroy exactly the distinction that matters.
137
+ *
138
+ * Keys are matched longest-first so `cbl-mariner-2.0` resolves against the
139
+ * full vendor segment rather than a shorter prefix.
140
+ */
141
+ export const OS_DISTRO_QUALIFIER_ALIAS = {
142
+ alma: "almalinux",
143
+ amazonlinux: "amazon",
144
+ amzn: "amazon",
145
+ azurelinux: "azure-linux",
146
+ "cbl-mariner": "azure-linux",
147
+ mariner: "azure-linux",
148
+ ol: "oracle",
149
+ rhel: "redhat",
150
+ "rocky-linux": "rocky",
151
+ };
152
+
153
+ // A distro qualifier reaches a purl verbatim, so anything outside the purl
154
+ // qualifier charset makes the whole purl — and with it the whole BOM —
155
+ // invalid. trivy emits Amazon Linux as
156
+ // `amazon-2023.12.20260727+(Amazon Linux)`, which failed cdxgen's own schema
157
+ // validation and cost the entire SBOM.
158
+ const SAFE_DISTRO_QUALIFIER = /^[A-Za-z0-9._-]+$/;
159
+
160
+ /**
161
+ * Whether a `distro` qualifier value is safe to place in a purl unencoded.
162
+ *
163
+ * @param {string} qualifier - distro qualifier value
164
+ * @returns {boolean} true when the value contains only purl-safe characters
165
+ */
166
+ export function isCleanDistroQualifier(qualifier) {
167
+ return !!qualifier && SAFE_DISTRO_QUALIFIER.test(qualifier);
168
+ }
169
+
170
+ const OS_DISTRO_QUALIFIER_ALIAS_KEYS = Object.keys(
171
+ OS_DISTRO_QUALIFIER_ALIAS,
172
+ ).sort((a, b) => b.length - a.length);
173
+
174
+ /**
175
+ * Canonicalise the vendor prefix of a `distro` qualifier value
176
+ * (e.g. "cbl-mariner-2.0" or "mariner-2.0" -> "azure-linux-2.0") so a release
177
+ * has exactly one qualifier spelling regardless of which tool emitted it.
178
+ * Values without a known vendor prefix are returned unchanged.
179
+ *
180
+ * @param {string} qualifier - distro qualifier value such as "azurelinux-3.0"
181
+ * @returns {string} canonical qualifier value
182
+ */
183
+ export function canonicalDistroQualifier(qualifier) {
184
+ if (!qualifier) {
185
+ return qualifier;
186
+ }
187
+ for (const key of OS_DISTRO_QUALIFIER_ALIAS_KEYS) {
188
+ if (qualifier.startsWith(`${key}-`)) {
189
+ return `${OS_DISTRO_QUALIFIER_ALIAS[key]}${qualifier.slice(key.length)}`;
190
+ }
191
+ }
192
+ return qualifier;
193
+ }
194
+
195
+ // ---------------------------------------------------------------------------
196
+ // Raw os-release cache — keyed by the osRelease file path so the live-host
197
+ // cache (/etc/os-release) and any container rootfs path are kept separate.
198
+ // ---------------------------------------------------------------------------
199
+ const _osReleaseCache = new Map();
200
+
201
+ /**
202
+ * Parse an os-release file from an arbitrary root path and return a plain
203
+ * key→value object. Results are cached per root path so the file is read
204
+ * at most once per process per distinct root.
205
+ *
206
+ * @param {string} [root="/"] - Root of the filesystem to search (e.g. a
207
+ * container rootfs extracted to a temp directory, or "/" for the live host).
208
+ * @returns {Object} Raw key/value pairs from the os-release file.
209
+ */
210
+ export function readOsRelease(root = "/") {
211
+ if (_osReleaseCache.has(root)) {
212
+ return _osReleaseCache.get(root);
213
+ }
214
+
215
+ // Candidate locations, in preference order
216
+ const candidates = [
217
+ join(root, "etc", "os-release"),
218
+ join(root, "usr", "lib", "os-release"),
219
+ ];
220
+
221
+ const data = {};
222
+ for (const candidate of candidates) {
223
+ if (existsSync(candidate)) {
224
+ try {
225
+ const content = readFileSync(candidate, "utf-8");
226
+ for (const line of content.split("\n")) {
227
+ if (line.startsWith("#") || !line.includes("=")) {
228
+ continue;
229
+ }
230
+ const eqIdx = line.indexOf("=");
231
+ const key = line.substring(0, eqIdx).trim();
232
+ const raw = line.substring(eqIdx + 1).trim();
233
+ // Strip surrounding single or double quotes
234
+ data[key] = raw.replace(/^["']|["']$/g, "");
235
+ }
236
+ break; // Stop at the first readable file
237
+ } catch (_e) {
238
+ // Try the next candidate
239
+ }
240
+ }
241
+ }
242
+
243
+ _osReleaseCache.set(root, data);
244
+ return data;
245
+ }
246
+
247
+ // Exported only for unit tests — resets the per-root cache.
248
+ /**
249
+ * Reset the per-root os-release cache. Exported for unit tests only.
250
+ */
251
+ export function _resetOsReleaseCache() {
252
+ _osReleaseCache.clear();
253
+ }
254
+
255
+ /**
256
+ * Derive structured distro information from an os-release file.
257
+ *
258
+ * Returns an object with:
259
+ * - purlType {string} "deb" | "apk" | "rpm"
260
+ * - namespace {string} canonical purl namespace (e.g. "ubuntu", "alpine",
261
+ * "azure-linux" for both Azure Linux and CBL-Mariner)
262
+ * - distroId {string} ID + "-" + VERSION_ID with a canonical vendor
263
+ * prefix (e.g. "ubuntu-22.04", "azure-linux-3.0")
264
+ * - distroName {string} codename/alias (e.g. "jammy")
265
+ *
266
+ * Mirrors the logic in lib/managers/binary.js getOSPackages() so that both
267
+ * callers share a single implementation.
268
+ *
269
+ * @param {string} [root="/"] - Filesystem root to look for os-release.
270
+ * @returns {{ purlType: string, namespace: string, distroId: string, distroName: string }}
271
+ */
272
+ export function getDistroInfo(root = "/") {
273
+ const info = readOsRelease(root);
274
+
275
+ const rawId = (info.ID || "").toLowerCase();
276
+ const idLike = (info.ID_LIKE || "").toLowerCase();
277
+ const versionId = info.VERSION_ID || "";
278
+
279
+ // Determine the purl type
280
+ let purlType = "rpm"; // safe default for unknown Linux
281
+ switch (rawId) {
282
+ case "debian":
283
+ case "ubuntu":
284
+ case "pop":
285
+ case "kali":
286
+ case "raspbian":
287
+ case "linuxmint":
288
+ purlType = "deb";
289
+ break;
290
+ case "alpine":
291
+ case "openwrt":
292
+ purlType = "apk";
293
+ break;
294
+ case "sles":
295
+ case "suse":
296
+ case "opensuse":
297
+ case "opensuse-leap":
298
+ case "opensuse-tumbleweed":
299
+ case "fedora":
300
+ case "rhel":
301
+ case "centos":
302
+ case "rocky":
303
+ case "almalinux":
304
+ case "azurelinux":
305
+ case "cbl-mariner":
306
+ case "mariner":
307
+ case "oracle":
308
+ case "ol":
309
+ case "amzn":
310
+ case "mageia":
311
+ case "photon":
312
+ purlType = "rpm";
313
+ break;
314
+ default:
315
+ if (idLike.includes("debian") || idLike.includes("ubuntu")) {
316
+ purlType = "deb";
317
+ } else if (idLike.includes("alpine")) {
318
+ purlType = "apk";
319
+ } else if (
320
+ idLike.includes("rhel") ||
321
+ idLike.includes("centos") ||
322
+ idLike.includes("fedora") ||
323
+ idLike.includes("suse")
324
+ ) {
325
+ purlType = "rpm";
326
+ }
327
+ break;
328
+ }
329
+
330
+ // Determine the purl namespace (vendor), canonicalising vendors that are
331
+ // published under several spellings (e.g. mariner -> azure-linux)
332
+ let namespace = OS_NAMESPACE_ALIAS[rawId] || rawId;
333
+ if (!rawId) {
334
+ // Fallback via ID_LIKE
335
+ if (idLike.includes("rhel") || idLike.includes("centos")) {
336
+ namespace = "redhat";
337
+ } else if (idLike.includes("fedora")) {
338
+ namespace = "fedora";
339
+ } else if (idLike.includes("suse")) {
340
+ namespace = "opensuse";
341
+ } else if (idLike.includes("debian")) {
342
+ namespace = "debian";
343
+ } else if (idLike.includes("ubuntu")) {
344
+ namespace = "ubuntu";
345
+ } else {
346
+ namespace = "linux";
347
+ }
348
+ }
349
+
350
+ // Build distroId = ID-VERSION_ID (e.g. "fedora-25", "alpine-3.17"),
351
+ // canonicalising the vendor prefix so one release has a single qualifier
352
+ // value (e.g. "mariner-2.0" and "azurelinux-3.0" -> "azure-linux-2.0"/
353
+ // "azure-linux-3.0")
354
+ let distroId = versionId ? `${rawId}-${versionId}` : rawId;
355
+ distroId = canonicalDistroQualifier(distroId);
356
+
357
+ // Special-case Alpine: truncate to major.minor
358
+ if (purlType === "apk" && versionId) {
359
+ const parts = versionId.split(".");
360
+ if (parts.length >= 2) {
361
+ distroId = `${rawId}-${parts[0]}.${parts[1]}`;
362
+ }
363
+ }
364
+
365
+ // Determine codename / alias
366
+ let distroName =
367
+ info.VERSION_CODENAME ||
368
+ info.CENTOS_MANTISBT_PROJECT ||
369
+ info.REDHAT_BUGZILLA_PRODUCT ||
370
+ info.REDHAT_SUPPORT_PRODUCT ||
371
+ "";
372
+ distroName = distroName.toLowerCase();
373
+
374
+ // Resolve well-known display name aliases
375
+ if (distroName.includes(" ") && OS_DISTRO_ALIAS[distroName]) {
376
+ distroName = OS_DISTRO_ALIAS[distroName];
377
+ }
378
+ if (!distroName && OS_DISTRO_ALIAS[distroId]) {
379
+ distroName = OS_DISTRO_ALIAS[distroId];
380
+ }
381
+
382
+ return { purlType, namespace, distroId, distroName };
383
+ }
@@ -0,0 +1,274 @@
1
+ import { getDistroInfo } from "./osinfo.js";
2
+ import { tryBuildPurl } from "./purl.js";
3
+
4
+ /**
5
+ * Derive a version value from an osquery result row.
6
+ *
7
+ * Falls back through alternate row fields (e.g. `hotfix_id`, `port`, `pid`)
8
+ * that carry version-like values for the given query category.
9
+ *
10
+ * @param {Object} res osquery result row
11
+ * @returns {string|undefined} First present version-like field value
12
+ */
13
+ export function deriveOsQueryVersion(res) {
14
+ return (
15
+ res.version ||
16
+ res.hotfix_id ||
17
+ res.hardware_version ||
18
+ res.port ||
19
+ res.pid ||
20
+ res.subject_key_id ||
21
+ res.interface ||
22
+ res.instance_id
23
+ );
24
+ }
25
+
26
+ /**
27
+ * Derive a name value from an osquery result row.
28
+ *
29
+ * @param {Object} res osquery result row
30
+ * @param {boolean} singleResult Whether the query returned exactly one row
31
+ * @param {string} queryName Query name used as a fallback name for single-result queries
32
+ * @returns {string|undefined} First present name-like field value
33
+ */
34
+ export function deriveOsQueryName(res, singleResult, queryName) {
35
+ let name =
36
+ res.name ||
37
+ res.device_id ||
38
+ res.hotfix_id ||
39
+ res.uuid ||
40
+ res.serial ||
41
+ res.pid ||
42
+ res.address ||
43
+ res.ami_id ||
44
+ res.interface ||
45
+ res.client_app_id;
46
+ if (!name && singleResult && queryName) {
47
+ name = queryName;
48
+ }
49
+ return name;
50
+ }
51
+
52
+ /**
53
+ * Derive a publisher value from an osquery result row.
54
+ *
55
+ * @param {Object} res osquery result row
56
+ * @returns {string} Publisher-like value, or an empty string when absent or literal `"null"`
57
+ */
58
+ export function deriveOsQueryPublisher(res) {
59
+ const publisher =
60
+ res.publisher ||
61
+ res.maintainer ||
62
+ res.creator ||
63
+ res.manufacturer ||
64
+ res.provider ||
65
+ "";
66
+ return publisher === "null" ? "" : publisher;
67
+ }
68
+
69
+ /**
70
+ * Derive a description value from an osquery result row.
71
+ *
72
+ * @param {Object} res osquery result row
73
+ * @returns {string} First present description-like field value, or an empty string
74
+ */
75
+ export function deriveOsQueryDescription(res) {
76
+ return (
77
+ res.description ||
78
+ res.summary ||
79
+ res.arguments ||
80
+ res.device ||
81
+ res.codename ||
82
+ res.section ||
83
+ res.status ||
84
+ res.identifier ||
85
+ res.components ||
86
+ ""
87
+ );
88
+ }
89
+
90
+ /**
91
+ * Sanitize an identity string for use in component names and references.
92
+ *
93
+ * @param {string} value Raw identity value
94
+ * @returns {string} Value with spaces mapped to `+`, `:`/`%` mapped to `-`, and `@`/brace delimiters trimmed
95
+ */
96
+ export function sanitizeOsQueryIdentity(value) {
97
+ return String(value || "")
98
+ .replace(/ /g, "+")
99
+ .replace(/[:%]/g, "-")
100
+ .replace(/^[@{]/g, "")
101
+ .replace(/[}]$/g, "");
102
+ }
103
+
104
+ /**
105
+ * Sanitize a value for safe use inside a `bom-ref`.
106
+ *
107
+ * @param {string} value Raw value
108
+ * @param {string} [fallback="unknown"] Value returned when the input is empty or `"null"`
109
+ * @returns {string} Whitespace-collapsed value with bom-ref delimiters replaced by `-`
110
+ */
111
+ export function sanitizeOsQueryBomRefValue(value, fallback = "unknown") {
112
+ const normalizedValue = String(value || "")
113
+ .replace(/[\r\n\t]+/g, " ")
114
+ .replace(/\s+/g, " ")
115
+ .trim();
116
+ if (!normalizedValue || normalizedValue === "null") {
117
+ return fallback;
118
+ }
119
+ return normalizedValue.replace(/[:@#\[\]=]/g, "-");
120
+ }
121
+
122
+ /**
123
+ * Build a deterministic fallback `bom-ref` for an osquery-derived component.
124
+ *
125
+ * @param {string} queryCategory Osquery category (e.g. `deb_packages`)
126
+ * @param {string} componentType CycloneDX component type
127
+ * @param {string|undefined} name Component name
128
+ * @param {string|undefined} version Component version
129
+ * @param {string|undefined} identityField Row field used to distinguish the component's identity
130
+ * @param {string|undefined} identityValue Value of the identity field
131
+ * @returns {string} BOM ref of the form `osquery:<category>:<type>:<name>@<version>[<field>=<value>]`
132
+ */
133
+ export function createOsQueryFallbackBomRef(
134
+ queryCategory,
135
+ componentType,
136
+ name,
137
+ version,
138
+ identityField,
139
+ identityValue,
140
+ ) {
141
+ const categoryRef = sanitizeOsQueryBomRefValue(queryCategory, "component");
142
+ const componentTypeRef = sanitizeOsQueryBomRefValue(
143
+ componentType,
144
+ "component",
145
+ );
146
+ const nameRef = sanitizeOsQueryBomRefValue(
147
+ name || queryCategory,
148
+ "component",
149
+ );
150
+ const versionRef = sanitizeOsQueryBomRefValue(version, "unknown");
151
+ const baseBomRef = `osquery:${categoryRef}:${componentTypeRef}:${nameRef}@${versionRef}`;
152
+ if (!identityField || !identityValue) {
153
+ return baseBomRef;
154
+ }
155
+ const identityFieldRef = sanitizeOsQueryBomRefValue(
156
+ identityField,
157
+ "identity",
158
+ );
159
+ const identityValueRef = sanitizeOsQueryBomRefValue(identityValue, "unknown");
160
+ return `${baseBomRef}[${identityFieldRef}=${identityValueRef}]`;
161
+ }
162
+
163
+ /**
164
+ * Determine whether an osquery-derived component type may carry a purl.
165
+ *
166
+ * @param {string} componentType CycloneDX component type
167
+ * @returns {boolean} `false` for `cryptographic-asset`, `data`, `device`, and `information`
168
+ */
169
+ export function shouldCreateOsQueryPurl(componentType) {
170
+ return !["cryptographic-asset", "data", "device", "information"].includes(
171
+ componentType || "",
172
+ );
173
+ }
174
+
175
+ // Purl types whose type rules require a namespace. For OS package types the
176
+ // namespace is the distro vendor (`pkg:deb/debian/...`, `pkg:rpm/redhat/...`),
177
+ // which osquery does not report but /etc/os-release does.
178
+ const NAMESPACE_REQUIRED_TYPES = new Set([
179
+ "deb",
180
+ "rpm",
181
+ "apk",
182
+ "alpm",
183
+ "ebuild",
184
+ ]);
185
+
186
+ /**
187
+ * Construct a purl string for an osquery-derived component.
188
+ *
189
+ * Builds through `tryBuildPurl`, so an invalid combination yields `null`
190
+ * instead of throwing. Derives a swid `tag_id` qualifier when missing and a
191
+ * distro namespace from `/etc/os-release` for OS package types that require one.
192
+ *
193
+ * @param {string} purlType Purl type (e.g. `deb`, `rpm`, `generic`)
194
+ * @param {string|null} group Purl namespace or group
195
+ * @param {string} name Component name
196
+ * @param {string} version Component version
197
+ * @param {Object|null} qualifiers Purl qualifiers
198
+ * @param {string|null} subpath Purl subpath (leading slashes are stripped)
199
+ * @returns {string|null} Canonical purl string, or `null` when the parts do not form a valid purl
200
+ */
201
+ export function createOsQueryPurl(
202
+ purlType,
203
+ group,
204
+ name,
205
+ version,
206
+ qualifiers,
207
+ subpath,
208
+ ) {
209
+ // cdx-purl rejects absolute subpaths; strip a leading slash so filesystem
210
+ // paths like /usr/lib/libcrypto.dylib become relative subpath segments.
211
+ const safeSubpath = subpath ? subpath.replace(/^\/+/, "") : null;
212
+ const type = purlType || "generic";
213
+ const finalQualifiers = { ...qualifiers };
214
+ // swid purls require a tag_id qualifier (ISO/IEC 19770-2). Auto-derive one
215
+ // from the component name when the caller did not provide one.
216
+ if (type === "swid" && !finalQualifiers.tag_id) {
217
+ finalQualifiers.tag_id = name;
218
+ }
219
+ // The Linux OS package queries (deb_packages, rpm_packages, portage) yield no
220
+ // group, but their purl types require a namespace. Derive the vendor from
221
+ // /etc/os-release the same way osPackageResolver does, so these keep a valid
222
+ // purl instead of losing one.
223
+ let namespace = group || null;
224
+ if (!namespace && NAMESPACE_REQUIRED_TYPES.has(type)) {
225
+ namespace = getDistroInfo().namespace || null;
226
+ }
227
+ // tryBuildPurl rather than build: a component that cannot be expressed as a
228
+ // valid purl must not abort the whole SBOM. Before this, an unknown distro on
229
+ // Linux threw E_REQUIRED_COMPONENT out of the middle of createCppBom.
230
+ return tryBuildPurl({
231
+ type,
232
+ namespace,
233
+ name: name,
234
+ version: version || null,
235
+ qualifiers: Object.keys(finalQualifiers).length ? finalQualifiers : null,
236
+ subpath: safeSubpath,
237
+ });
238
+ }
239
+
240
+ function _deriveCertificateFormat(certificateFileExtension) {
241
+ switch ((certificateFileExtension || "").toLowerCase()) {
242
+ case "pem":
243
+ return "PEM";
244
+ case "der":
245
+ return "DER";
246
+ case "cer":
247
+ case "crt":
248
+ return "X.509";
249
+ default:
250
+ return undefined;
251
+ }
252
+ }
253
+
254
+ function _normalizeCertificateDate(value) {
255
+ if (value === undefined || value === null || value === "") {
256
+ return undefined;
257
+ }
258
+ const stringValue = `${value}`.trim();
259
+ if (!stringValue) {
260
+ return undefined;
261
+ }
262
+ const numericValue = Number(stringValue);
263
+ if (Number.isFinite(numericValue)) {
264
+ const millis = stringValue.length > 10 ? numericValue : numericValue * 1000;
265
+ const parsedDate = new Date(millis);
266
+ return Number.isNaN(parsedDate.getTime())
267
+ ? undefined
268
+ : parsedDate.toISOString();
269
+ }
270
+ const parsedDate = new Date(stringValue);
271
+ return Number.isNaN(parsedDate.getTime())
272
+ ? undefined
273
+ : parsedDate.toISOString();
274
+ }