@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,280 @@
1
+ import { Console } from "node:console";
2
+ import fs from "node:fs";
3
+ import process from "node:process";
4
+ import { Writable } from "node:stream";
5
+ import { isMainThread } from "node:worker_threads";
6
+
7
+ // Environment variables here are read with raw `process.env` rather than
8
+ // `readEnvironmentVariable`: that helper lives in activity.js, which imports
9
+ // this module, so routing these through it would form an import cycle.
10
+
11
+ // Stream contract: human-readable diagnostics default to stderr so stdout
12
+ // carries only the BOM payload. CDXGEN_LOG_STREAM=stdout restores the
13
+ // pre-v13 behaviour for callers that scraped cdxgen's stdout.
14
+ const logStream =
15
+ process.env.CDXGEN_LOG_STREAM === "stdout" ? process.stdout : process.stderr;
16
+
17
+ /**
18
+ * The stream every human-readable diagnostic is written to.
19
+ *
20
+ * Exported so that the live region and the table renderer resolve the same
21
+ * destination as the loggers do. A caller that sets `CDXGEN_LOG_STREAM=stdout`
22
+ * gets the pre-v13 behaviour for all of it, not just for the thought and trace
23
+ * logs.
24
+ *
25
+ * @type {NodeJS.WritableStream}
26
+ */
27
+ export const diagnosticStream = logStream;
28
+
29
+ // Custom lightweight colors formatting helper replacing yoctocolors
30
+ const colors = {
31
+ cyanBright: (text) => `\x1b[96m${text}\x1b[39m`,
32
+ dim: (text) => `\x1b[2m${text}\x1b[22m`,
33
+ };
34
+
35
+ /** True when thought/reasoning logging is enabled (CDXGEN_THOUGHT_LOG, CDXGEN_THINK_MODE, or verbose debug mode). */
36
+ export const THINK_MODE =
37
+ process.env.CDXGEN_THOUGHT_LOG ||
38
+ ["true", "1"].includes(process.env.CDXGEN_THINK_MODE) ||
39
+ process.env.CDXGEN_DEBUG_MODE === "verbose";
40
+
41
+ // Log files are written synchronously rather than through
42
+ // `fs.createWriteStream`. A write stream buffers, so anything still queued when
43
+ // the process exits is lost, leaving readers that tail these files a truncated
44
+ // log with no closing `</think>` marker. Writing through one shared descriptor
45
+ // per path also keeps the two Console channels from interleaving at
46
+ // independent file offsets.
47
+ const syncFileWriters = new Map();
48
+
49
+ /**
50
+ * Open a synchronous writer for a log file path.
51
+ *
52
+ * `Console` requires a real stream, so this is a `Writable` whose `_write`
53
+ * completes synchronously: bytes reach the descriptor as each record is
54
+ * logged, and nothing is left queued for an event loop turn that a process
55
+ * exit may never take.
56
+ *
57
+ * @param {string} filePath Destination path
58
+ * @returns {Writable} Writer, or the diagnostic stream when the path is unwritable
59
+ */
60
+ function openSyncFileWriter(filePath) {
61
+ const existing = syncFileWriters.get(filePath);
62
+ if (existing) {
63
+ return existing;
64
+ }
65
+ let fd;
66
+ try {
67
+ // Worker threads log to the same path through their own instance of this
68
+ // module, so the descriptor is opened in append mode: O_APPEND lands every
69
+ // write at the end of the file no matter how many writers share it, where
70
+ // a truncating open gives each writer its own offset and they punch holes
71
+ // through each other's records. The main thread truncates once so a run
72
+ // still starts from an empty log.
73
+ if (isMainThread) {
74
+ try {
75
+ fs.truncateSync(filePath, 0);
76
+ } catch {
77
+ // No file yet: the append open below creates it.
78
+ }
79
+ }
80
+ fd = fs.openSync(filePath, "a");
81
+ } catch {
82
+ // An unwritable path must not take the whole run down: fall back to the
83
+ // diagnostic stream so the records stay visible somewhere.
84
+ return logStream;
85
+ }
86
+ const writer = new Writable({
87
+ write(chunk, _encoding, callback) {
88
+ if (fd !== undefined) {
89
+ try {
90
+ fs.writeSync(fd, chunk);
91
+ } catch {
92
+ // A full disk or a revoked descriptor must not abort BOM generation.
93
+ }
94
+ }
95
+ callback();
96
+ },
97
+ });
98
+ writer.closeSync = () => {
99
+ if (fd === undefined) {
100
+ return;
101
+ }
102
+ try {
103
+ fs.closeSync(fd);
104
+ } finally {
105
+ fd = undefined;
106
+ syncFileWriters.delete(filePath);
107
+ }
108
+ };
109
+ syncFileWriters.set(filePath, writer);
110
+ return writer;
111
+ }
112
+
113
+ const thinkOutput = process.env.CDXGEN_THOUGHT_LOG
114
+ ? openSyncFileWriter(process.env.CDXGEN_THOUGHT_LOG)
115
+ : logStream;
116
+ const thinkErrorOutput = process.env.CDXGEN_THOUGHT_LOG
117
+ ? thinkOutput
118
+ : process.stderr;
119
+ const thinkLogger = new Console({
120
+ stdout: thinkOutput,
121
+ stderr: thinkErrorOutput,
122
+ colorMode: process.env.CDXGEN_THOUGHT_LOG ? false : "auto",
123
+ });
124
+
125
+ /** True when structured command/HTTP trace logging is enabled (CDXGEN_TRACE_LOG, CDXGEN_TRACE_ID, CDXGEN_TRACE_MODE, or verbose debug mode). */
126
+ export const TRACE_MODE =
127
+ process.env.CDXGEN_TRACE_LOG ||
128
+ process.env.CDXGEN_TRACE_ID ||
129
+ ["true", "1"].includes(process.env.CDXGEN_TRACE_MODE) ||
130
+ process.env.CDXGEN_DEBUG_MODE === "verbose";
131
+
132
+ const traceOutput = process.env.CDXGEN_TRACE_LOG
133
+ ? openSyncFileWriter(process.env.CDXGEN_TRACE_LOG)
134
+ : logStream;
135
+ const traceErrorOutput = process.env.CDXGEN_TRACE_LOG
136
+ ? traceOutput
137
+ : process.stderr;
138
+ const traceLogger = new Console({
139
+ stdout: traceOutput,
140
+ stderr: traceErrorOutput,
141
+ colorMode: process.env.CDXGEN_TRACE_LOG ? false : "auto",
142
+ });
143
+
144
+ if (THINK_MODE) {
145
+ thinkLogger.group(colorizeText("<think>"));
146
+ }
147
+ /**
148
+ * Logs a thought message to the think logger if THINK_MODE is enabled.
149
+ * Automatically appends a period to the message if it lacks terminal punctuation.
150
+ *
151
+ * @param {string} s The thought message to log
152
+ * @param {Object} [args] Optional additional arguments to log alongside the message
153
+ * @returns {void}
154
+ */
155
+ export function thoughtLog(s, args) {
156
+ if (!THINK_MODE) {
157
+ return;
158
+ }
159
+ if (!s?.endsWith(".") && !s?.endsWith("?") && !s?.endsWith("!")) {
160
+ s = `${s}.`;
161
+ }
162
+ s = s.replaceAll("'.'", "'<project dir>'");
163
+ if (args) {
164
+ thinkLogger.log(colorizeText(`${s}`), args);
165
+ } else {
166
+ thinkLogger.log(colorizeText(`${s}`));
167
+ }
168
+ }
169
+ let thoughtBlockClosed = false;
170
+
171
+ /**
172
+ * Closes the think log group by emitting the closing `</think>` marker.
173
+ * Has no effect if THINK_MODE is not enabled, and emits the marker at most
174
+ * once so an explicit call followed by the exit handler cannot produce two.
175
+ *
176
+ * @returns {void}
177
+ */
178
+ export function thoughtEnd() {
179
+ if (THINK_MODE && !thoughtBlockClosed) {
180
+ thoughtBlockClosed = true;
181
+ thinkLogger.groupEnd();
182
+ thinkLogger.log(colorizeText("</think>"));
183
+ }
184
+ }
185
+
186
+ function colorizeText(s) {
187
+ // Only colorize for an interactive terminal stream; piped/CI/file output
188
+ // stays free of escape bytes so the diagnostic stream is grep-safe.
189
+ if (process.env.CDXGEN_THOUGHT_LOG || !logStream.isTTY) {
190
+ return s;
191
+ }
192
+ s = s.replace(/(\d+)/g, colors.cyanBright("$1"));
193
+ return colors.dim(s);
194
+ }
195
+
196
+ // Fields serialized for each trace type. The allow-list is per-type because a
197
+ // single shared list either drops the fields a type exists to carry or leaks
198
+ // unbounded caller objects into the stream: `activity` and `phase` records
199
+ // carry no field in common with `spawn` and `http`.
200
+ const TRACE_FIELDS = {
201
+ activity: [
202
+ "identifier",
203
+ "kind",
204
+ "status",
205
+ "target",
206
+ "reason",
207
+ "networkIntent",
208
+ "command",
209
+ "cwd",
210
+ ],
211
+ phase: ["phase", "state", "detail", "note", "done", "total", "elapsedMs"],
212
+ };
213
+
214
+ const DEFAULT_TRACE_FIELDS = [
215
+ "command",
216
+ "cwd",
217
+ "protocol",
218
+ "host",
219
+ "path",
220
+ "pathname",
221
+ ];
222
+
223
+ /**
224
+ * Log trace messages
225
+ *
226
+ * @param {String} traceType Trace type
227
+ * @param {Object} args Additional arguments
228
+ */
229
+ export function traceLog(traceType, args) {
230
+ if (!TRACE_MODE || !traceType || !args) {
231
+ return;
232
+ }
233
+ const traceId = process.env.CDXGEN_TRACE_ID;
234
+ const message = {};
235
+ if (traceId) {
236
+ message.traceId = traceId;
237
+ }
238
+ message["timestamp"] = new Date().toISOString();
239
+ if (traceType) {
240
+ message.type = traceType;
241
+ }
242
+ if (args) {
243
+ for (const k of TRACE_FIELDS[traceType] || DEFAULT_TRACE_FIELDS) {
244
+ // Numeric progress counters are meaningful at zero, so presence is
245
+ // tested rather than truthiness.
246
+ if (args[k] !== undefined && args[k] !== null && args[k] !== "") {
247
+ message[k] = args[k];
248
+ }
249
+ }
250
+ }
251
+ if (Object.keys(message).length) {
252
+ traceLogger.log(JSON.stringify(message, null, null));
253
+ }
254
+ }
255
+
256
+ let logStreamsClosed = false;
257
+
258
+ /**
259
+ * Terminate the think block and close the log file descriptors.
260
+ *
261
+ * Readers tail these files as a live feed, so a run that ends without the
262
+ * closing `</think>` marker leaves the consumer holding an unterminated block.
263
+ * Registered on process exit and safe to call more than once.
264
+ *
265
+ * @returns {void}
266
+ */
267
+ export function closeLogStreams() {
268
+ if (logStreamsClosed) {
269
+ return;
270
+ }
271
+ logStreamsClosed = true;
272
+ thoughtEnd();
273
+ for (const writer of [...syncFileWriters.values()]) {
274
+ writer.closeSync();
275
+ }
276
+ }
277
+
278
+ // The writers are synchronous, so this handler only has to emit the terminator
279
+ // and release the descriptors — work that is legal during `exit`.
280
+ process.on("exit", closeLogStreams);
@@ -0,0 +1,323 @@
1
+ /**
2
+ * Bounded concurrency utilities for CPU-bound and I/O-bound parallel work.
3
+ *
4
+ * Two primitives live here:
5
+ *
6
+ * - {@link mapWithConcurrency} — a promise pool for async I/O work (file
7
+ * hashing, registry fetches). Tasks are async; results preserve input order.
8
+ *
9
+ * - {@link mapInWorkers} — a worker-thread pool for synchronous CPU work (AST
10
+ * parsing). Below a configurable threshold tasks run inline; above it they
11
+ * are distributed across `worker_threads` workers. Any failure of the thread
12
+ * machinery itself — an unavailable `worker_threads`, a worker entry that
13
+ * will not load, a worker that dies mid-task — falls back to running the
14
+ * remaining tasks inline, so the result is the same whether or not threads
15
+ * were usable.
16
+ */
17
+
18
+ import { availableParallelism } from "node:os";
19
+
20
+ import { readEnvironmentVariable } from "./activity.js";
21
+
22
+ const _isDeno = globalThis.Deno?.version?.deno !== undefined;
23
+ const _isBun = globalThis.Bun?.version !== undefined;
24
+
25
+ const DEFAULT_HASH_CONCURRENCY = Math.min(
26
+ Math.max(availableParallelism(), 4),
27
+ 16,
28
+ );
29
+
30
+ const WORKER_THRESHOLD = Number.parseInt(
31
+ readEnvironmentVariable("CDXGEN_WORKER_THRESHOLD") || "24",
32
+ 10,
33
+ );
34
+
35
+ const MAX_WORKERS = Number.parseInt(
36
+ readEnvironmentVariable("CDXGEN_MAX_WORKERS") ||
37
+ String(Math.min(availableParallelism() || 4, 8)),
38
+ 10,
39
+ );
40
+
41
+ /**
42
+ * Run an async mapper over an array with bounded concurrency.
43
+ *
44
+ * Results are placed at their original index so order is preserved regardless
45
+ * of completion order. Below the concurrency limit tasks start immediately;
46
+ * above it they queue in FIFO order.
47
+ *
48
+ * The bound is per call, so two pools running at once can together hold twice
49
+ * the limit open. Every caller today awaits its pool before the next phase
50
+ * begins, so the effective bound is the limit; a caller that starts a pool
51
+ * without awaiting it should pass a smaller `concurrency`.
52
+ *
53
+ * @template T, R
54
+ * @param {Array<T>} items
55
+ * @param {(item: T, index: number) => Promise<R>|R} mapper
56
+ * @param {number} [concurrency]
57
+ * @returns {Promise<Array<R>>}
58
+ */
59
+ export async function mapWithConcurrency(items, mapper, concurrency) {
60
+ const limit = Math.max(1, concurrency || DEFAULT_HASH_CONCURRENCY);
61
+ const results = new Array(items.length);
62
+ let nextIndex = 0;
63
+
64
+ async function runner() {
65
+ while (true) {
66
+ const i = nextIndex;
67
+ nextIndex++;
68
+ if (i >= items.length) return;
69
+ results[i] = await mapper(items[i], i);
70
+ }
71
+ }
72
+
73
+ const runners = [];
74
+ for (let i = 0; i < Math.min(limit, items.length); i++) {
75
+ runners.push(runner());
76
+ }
77
+ await Promise.all(runners);
78
+ return results;
79
+ }
80
+
81
+ /**
82
+ * Maximum number of worker threads the pool will create for a single call.
83
+ *
84
+ * @returns {number}
85
+ */
86
+ export function getMaxWorkers() {
87
+ return Math.max(1, MAX_WORKERS);
88
+ }
89
+
90
+ /**
91
+ * The task count at or above which {@link mapInWorkers} dispatches to threads
92
+ * instead of running inline.
93
+ *
94
+ * @returns {number}
95
+ */
96
+ export function getWorkerThreshold() {
97
+ return WORKER_THRESHOLD;
98
+ }
99
+
100
+ let _workerSupported = null;
101
+ let lastWorkerCount = 0;
102
+
103
+ /**
104
+ * Workers created by the most recent {@link mapInWorkers} call. Scoped to that
105
+ * one call rather than to the process, so a batch that ran inline reports 0
106
+ * rather than the widest earlier batch.
107
+ *
108
+ * @returns {number}
109
+ */
110
+ export function lastWorkerPoolSize() {
111
+ return lastWorkerCount;
112
+ }
113
+
114
+ async function checkWorkerSupport() {
115
+ if (_workerSupported !== null) return _workerSupported;
116
+ if (_isDeno || _isBun) {
117
+ _workerSupported = false;
118
+ return false;
119
+ }
120
+ try {
121
+ await import("node:worker_threads");
122
+ _workerSupported = true;
123
+ } catch {
124
+ _workerSupported = false;
125
+ }
126
+ return _workerSupported;
127
+ }
128
+
129
+ /**
130
+ * A task failed inside a worker, as opposed to the worker itself failing. The
131
+ * two are handled differently: the first belongs to one task, the second means
132
+ * threads cannot be used at all.
133
+ */
134
+ class TaskError extends Error {}
135
+
136
+ /**
137
+ * Apply `inlineFn` to the tasks at the given indices on the calling thread.
138
+ *
139
+ * @template T, R
140
+ * @param {Array<T>} tasks
141
+ * @param {(task: T) => R} inlineFn
142
+ * @param {Array<R|null>} results Filled in place at each index.
143
+ * @param {Iterable<number>} indices
144
+ * @param {boolean} swallowErrors
145
+ * @param {R|null} errorResult
146
+ */
147
+ function runInline(
148
+ tasks,
149
+ inlineFn,
150
+ results,
151
+ indices,
152
+ swallowErrors,
153
+ errorResult,
154
+ ) {
155
+ for (const i of indices) {
156
+ try {
157
+ results[i] = inlineFn(tasks[i]);
158
+ } catch (err) {
159
+ if (!swallowErrors) {
160
+ throw err;
161
+ }
162
+ results[i] = errorResult;
163
+ }
164
+ }
165
+ }
166
+
167
+ /**
168
+ * Run synchronous CPU-bound tasks across worker threads.
169
+ *
170
+ * Below the threshold (default 24), tasks run inline on the calling thread,
171
+ * because starting a worker costs more than a small batch saves. Above it,
172
+ * tasks are distributed to a pool of ephemeral workers that are terminated
173
+ * before the call returns, so a completed scan does not hold the event loop
174
+ * open.
175
+ *
176
+ * Results are always returned in the original task order.
177
+ *
178
+ * Two kinds of failure are distinguished. A task that fails inside the worker
179
+ * is reported by the worker as `{error}` and is treated as that one task
180
+ * failing: it yields `options.errorResult` when `options.swallowErrors` is set,
181
+ * and rejects otherwise. A failure of the thread machinery — `worker_threads`
182
+ * missing, the entry module refusing to load, a worker exiting mid-task — is
183
+ * not a property of any task, so the tasks that had not completed are run
184
+ * inline instead. That keeps the result independent of whether threads were
185
+ * usable, which matters because callers of this function treat an empty result
186
+ * as "nothing found" rather than as an error.
187
+ *
188
+ * @template T, R
189
+ * @param {URL|string} workerUrl - Resolved URL of the worker entry module
190
+ * @param {Array<T>} tasks - Structured-cloneable task descriptors
191
+ * @param {(task: T) => R} inlineFn - Called per task when running inline
192
+ * @param {Object} [options]
193
+ * @param {number} [options.threshold] - Minimum task count to use threads
194
+ * @param {number} [options.maxWorkers] - Cap on thread count
195
+ * @param {boolean} [options.swallowErrors] - Return errorResult instead of rejecting
196
+ * @param {R} [options.errorResult] - Value used when an error is swallowed
197
+ * @returns {Promise<Array<R|null>>}
198
+ */
199
+ export async function mapInWorkers(workerUrl, tasks, inlineFn, options = {}) {
200
+ const threshold = options.threshold ?? WORKER_THRESHOLD;
201
+ const swallowErrors = Boolean(options.swallowErrors);
202
+ const errorResult = options.errorResult ?? null;
203
+ const results = new Array(tasks.length).fill(null);
204
+ const useWorkers = tasks.length >= threshold && (await checkWorkerSupport());
205
+
206
+ lastWorkerCount = 0;
207
+ if (!useWorkers) {
208
+ runInline(
209
+ tasks,
210
+ inlineFn,
211
+ results,
212
+ tasks.keys(),
213
+ swallowErrors,
214
+ errorResult,
215
+ );
216
+ return results;
217
+ }
218
+
219
+ const maxWorkers = Math.min(options.maxWorkers ?? MAX_WORKERS, tasks.length);
220
+ const done = new Set();
221
+ let nextTask = 0;
222
+ let workersUsable = true;
223
+
224
+ const { Worker } = await import("node:worker_threads");
225
+ const workers = [];
226
+
227
+ function runOnWorker(worker, task) {
228
+ return new Promise((resolve, reject) => {
229
+ const cleanup = () => {
230
+ worker.removeListener("message", onMessage);
231
+ worker.removeListener("error", onError);
232
+ worker.removeListener("exit", onExit);
233
+ };
234
+ const onMessage = (msg) => {
235
+ cleanup();
236
+ if (msg?.error) {
237
+ reject(new TaskError(msg.error));
238
+ } else {
239
+ resolve(msg?.result);
240
+ }
241
+ };
242
+ const onError = (err) => {
243
+ cleanup();
244
+ reject(err);
245
+ };
246
+ // A worker can end without ever emitting `error` — it can be terminated,
247
+ // call `process.exit`, or be killed for running out of memory. Without
248
+ // this the pending request would never settle and the scan would hang.
249
+ const onExit = (code) => {
250
+ cleanup();
251
+ reject(new Error(`Worker exited with code ${code} before replying`));
252
+ };
253
+ worker.on("message", onMessage);
254
+ worker.on("error", onError);
255
+ worker.on("exit", onExit);
256
+ worker.postMessage(task);
257
+ });
258
+ }
259
+
260
+ async function workerLoop() {
261
+ let worker;
262
+ try {
263
+ worker = new Worker(workerUrl);
264
+ } catch {
265
+ workersUsable = false;
266
+ return;
267
+ }
268
+ workers.push(worker);
269
+ lastWorkerCount = workers.length;
270
+ try {
271
+ while (workersUsable) {
272
+ const i = nextTask;
273
+ nextTask++;
274
+ if (i >= tasks.length) {
275
+ break;
276
+ }
277
+ try {
278
+ results[i] = await runOnWorker(worker, tasks[i]);
279
+ done.add(i);
280
+ } catch (err) {
281
+ if (err instanceof TaskError) {
282
+ if (!swallowErrors) {
283
+ throw err;
284
+ }
285
+ results[i] = errorResult;
286
+ done.add(i);
287
+ continue;
288
+ }
289
+ // The worker, not the task, failed. Stop the pool and let the
290
+ // caller finish the outstanding tasks inline.
291
+ workersUsable = false;
292
+ return;
293
+ }
294
+ }
295
+ } finally {
296
+ await worker.terminate().catch(() => {
297
+ /* already exited */
298
+ });
299
+ }
300
+ }
301
+
302
+ try {
303
+ const loops = [];
304
+ for (let i = 0; i < maxWorkers; i++) {
305
+ loops.push(workerLoop());
306
+ }
307
+ await Promise.all(loops);
308
+ } finally {
309
+ await Promise.allSettled(workers.map((w) => w.terminate()));
310
+ }
311
+
312
+ if (!workersUsable) {
313
+ const pending = [];
314
+ for (let i = 0; i < tasks.length; i++) {
315
+ if (!done.has(i)) {
316
+ pending.push(i);
317
+ }
318
+ }
319
+ runInline(tasks, inlineFn, results, pending, swallowErrors, errorResult);
320
+ }
321
+
322
+ return results;
323
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Repo-root resolution, shared by every helper that loads a file from `data/`.
3
+ *
4
+ * This lives in its own leaf module — importing nothing from `utils.js` — because
5
+ * the value is consumed at *module-evaluation* time (`JSON.parse(readFileSync(
6
+ * join(dirNameStr, "data", …)))`). A module in a cycle with `utils.js` that reads
7
+ * `dirNameStr` while `utils.js` is still evaluating gets the binding in its
8
+ * temporal dead zone and throws `ReferenceError: Cannot access 'dirNameStr'
9
+ * before initialization`. Keeping the definition in a leaf guarantees it is
10
+ * initialized before any consumer runs.
11
+ *
12
+ * The `file://` normalization below is load-bearing, not defensive noise:
13
+ * `jsr.json` publishes `lib/cli/index.js` to JSR, so `import.meta.url` can be an
14
+ * `https://` URL, and `fileURLToPath` throws `ERR_INVALID_URL_SCHEME` on those.
15
+ */
16
+
17
+ import { platform } from "node:os";
18
+ import { dirname } from "node:path";
19
+ import { fileURLToPath } from "node:url";
20
+
21
+ let url = import.meta?.url;
22
+ if (url && !url.startsWith("file://")) {
23
+ url = new URL(`file://${import.meta.url}`).toString();
24
+ }
25
+ // TODO: verify if this is a good method (Prabhu)
26
+ // this is due to dirNameStr being "cdxgen/lib/helpers" which causes errors
27
+ /** Absolute path to the cdxgen repository root, resolved from the module URL. */
28
+ export const dirNameStr = url
29
+ ? dirname(dirname(dirname(fileURLToPath(url))))
30
+ : __dirname;
31
+
32
+ /** True when running on Windows. */
33
+ export const isWin = platform() === "win32";
34
+ /** True when running on macOS. */
35
+ export const isMac = platform() === "darwin";
36
+
37
+ /**
38
+ * Validate that a string is a Windows drive root such as `C:\`.
39
+ *
40
+ * @param {string} root Candidate drive root string.
41
+ * @returns {boolean} True when the string is a valid Windows drive root.
42
+ */
43
+ export function isValidDriveRoot(root) {
44
+ if (root.length > 3) {
45
+ return false;
46
+ }
47
+ const driveLetter = root.charAt(0);
48
+ const colon = root.charAt(1);
49
+ const backslash = root.charAt(2);
50
+ const charCode = driveLetter.charCodeAt(0);
51
+ const isAsciiLetter =
52
+ (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122);
53
+ if (!isAsciiLetter) {
54
+ return false;
55
+ }
56
+ if (colon.charCodeAt(0) !== 0x3a) {
57
+ return false;
58
+ }
59
+ return !(backslash && backslash.charCodeAt(0) !== 0x5c);
60
+ }
61
+
62
+ /**
63
+ * Convert a kebab-case string to camelCase.
64
+ *
65
+ * @param {string} str Kebab-case input string.
66
+ * @returns {string} camelCase representation of the input.
67
+ */
68
+ export function toCamel(str) {
69
+ return str.replace(/-([a-z])/g, (_, g) => g.toUpperCase());
70
+ }