@cdxgen/cdxgen 0.0.1 → 13.0.0

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 +2324 -0
  4. package/bin/convert.js +213 -0
  5. package/bin/evinse.js +353 -0
  6. package/bin/hbom.js +495 -0
  7. package/bin/repl.js +2224 -0
  8. package/bin/sign.js +195 -0
  9. package/bin/tracebom.js +295 -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 +1833 -0
  85. package/lib/cli/cliOptions.js +513 -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 +142 -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 +876 -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 +575 -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 +1789 -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 +277 -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 +263 -0
  215. package/lib/inventory/traceRunner.js +439 -0
  216. package/lib/inventory/unicodeScan.js +147 -0
  217. package/lib/managers/binary.js +3307 -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 +315 -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 +28 -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 +120 -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 +19 -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 +76 -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,767 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { basename, dirname, join } from "node:path";
3
+ import process from "node:process";
4
+
5
+ import { DEBUG_MODE, readEnvironmentVariable } from "../core/activity.js";
6
+ import { getAllFiles, safeExistsSync } from "../core/fs.js";
7
+ import { splitCommandArgs } from "../ecosystems/parsers-js.js";
8
+ import { runSwiftCommand } from "../inventory/envcontext.js";
9
+ import { executeSourcekitten } from "../managers/binary.js";
10
+
11
+ // Swift entity kinds
12
+ // https://github.com/swiftlang/swift/blob/main/tools/SourceKit/docs/SwiftSupport.txt
13
+ const SWIFT_ENTITY_KINDS = {
14
+ IMPORT_CLANG: "source.lang.swift.import.module.clang",
15
+ IMPORT_SWIFT: "source.lang.swift.import.module.swift",
16
+ IMPORT_SOURCE: "source.lang.swift.import.sourcefile",
17
+ DECL_EXTN_STRUCT: "source.lang.swift.decl.extension.struct",
18
+ DECL_EXTN_CLASS: "source.lang.swift.decl.extension.class",
19
+ DECL_EXTN_ENUM: "source.lang.swift.decl.extension.enum",
20
+ DECL_FREE: "source.lang.swift.decl.function.free",
21
+ REF_FREE: "source.lang.swift.ref.function.free",
22
+ DECL_METHOD_INSTANCE: "source.lang.swift.decl.function.method.instance",
23
+ REF_METHOD_INSTANCE: "source.lang.swift.ref.function.method.instance",
24
+ DECL_METHOD_STATIC: "source.lang.swift.decl.function.method.static",
25
+ REF_METHOD_STATIC: "source.lang.swift.ref.function.method.static",
26
+ DECL_CONSTRUCTOR: "source.lang.swift.decl.function.constructor",
27
+ REF_CONSTRUCTOR: "source.lang.swift.ref.function.constructor",
28
+ DECL_DESTRUCTOR: "source.lang.swift.decl.function.destructor",
29
+ REF_DESTRUCTOR: "source.lang.swift.ref.function.destructor",
30
+ DECL_OPERATOR: "source.lang.swift.decl.function.operator",
31
+ REF_OPERATOR: "source.lang.swift.ref.function.operator",
32
+ DECL_SUBSCRIPT: "source.lang.swift.decl.function.subscript",
33
+ REF_SUBSCRIPT: "source.lang.swift.ref.function.subscript",
34
+ DECL_GETTER: "source.lang.swift.decl.function.accessor.getter",
35
+ REF_GETTER: "source.lang.swift.ref.function.accessor.getter",
36
+ DECL_SETTER: "source.lang.swift.decl.function.accessor.setter",
37
+ REF_SETTER: "source.lang.swift.ref.function.accessor.setter",
38
+ DECL_CLASS: "source.lang.swift.decl.class",
39
+ REF_CLASS: "source.lang.swift.ref.class",
40
+ DECL_STRUCT: "source.lang.swift.decl.struct",
41
+ REF_STRUCT: "source.lang.swift.ref.struct",
42
+ DECL_ENUM: "source.lang.swift.decl.enum",
43
+ REF_ENUM: "source.lang.swift.ref.enum",
44
+ DECL_ENUM_ELEMENT: "source.lang.swift.decl.enumelement",
45
+ REF_ENUM_ELEMENT: "source.lang.swift.ref.enumelement",
46
+ DECL_PROTOCOL: "source.lang.swift.decl.protocol",
47
+ REF_PROTOCOL: "source.lang.swift.ref.protocol",
48
+ DECL_TYPE_ALIAS: "source.lang.swift.decl.typealias",
49
+ REF_TYPE_ALIAS: "source.lang.swift.ref.typealias",
50
+ DECL_VAR_GLOBAL: "source.lang.swift.decl.var.global",
51
+ REF_VAR_GLOBAL: "source.lang.swift.ref.var.global",
52
+ DECL_VAR_INSTANCE: "source.lang.swift.decl.var.instance",
53
+ REF_VAR_INSTANCE: "source.lang.swift.ref.var.instance",
54
+ DECL_VAR_STATIC: "source.lang.swift.decl.var.static",
55
+ REF_VAR_STATIC: "source.lang.swift.ref.var.static",
56
+ DECL_VAR_LOCAL: "source.lang.swift.decl.var.local",
57
+ REF_VAR_LOCAL: "source.lang.swift.ref.var.local",
58
+ };
59
+
60
+ // Array of standard types that can be ignored
61
+ const IGNORABLE_TYPES = [
62
+ "Bool",
63
+ "Error?",
64
+ "AnyObject",
65
+ "()",
66
+ "Any?",
67
+ "Void",
68
+ "[String]",
69
+ "String?",
70
+ "String",
71
+ ];
72
+
73
+ /**
74
+ * Retrieve the structure information of a .swift file in json format
75
+ *
76
+ * @param {String} filePath Path to .swift file
77
+ *
78
+ * @returns {undefined|Object} JSON representation of the swift file or undefined.
79
+ */
80
+ export function getStructure(filePath) {
81
+ return executeSourcekitten(["structure", "--file", filePath]);
82
+ }
83
+
84
+ /**
85
+ * Parse the data from the structure command
86
+ *
87
+ * @param {Object} structureJson Json from the structure command
88
+ * @returns {Object|undefined} Parsed value
89
+ */
90
+ export function parseStructure(structureJson) {
91
+ if (
92
+ structureJson?.["key.diagnostic_stage"] !==
93
+ "source.diagnostic.stage.swift.parse" ||
94
+ !structureJson["key.substructure"]
95
+ ) {
96
+ return undefined;
97
+ }
98
+ const metadata = {};
99
+ const refTypes = new Set();
100
+ collectStructureTypes(structureJson["key.substructure"], refTypes);
101
+ if (refTypes.size) {
102
+ metadata["referredTypes"] = Array.from(refTypes).sort();
103
+ }
104
+ return metadata;
105
+ }
106
+
107
+ /**
108
+ * Recursively collect referred types from the sub-structure
109
+ *
110
+ * @param substructures {Object} Sub structures
111
+ * @param refTypes {Set<String>} Identified reference types
112
+ */
113
+ function collectStructureTypes(substructures, refTypes) {
114
+ if (!substructures || !Array.isArray(substructures)) {
115
+ return;
116
+ }
117
+ for (const asubstruct of substructures) {
118
+ if (
119
+ asubstruct["key.typename"] &&
120
+ !IGNORABLE_TYPES.includes(asubstruct["key.typename"])
121
+ ) {
122
+ refTypes.add(asubstruct["key.typename"]);
123
+ }
124
+ if (asubstruct["key.inheritedtypes"]) {
125
+ for (const inheritedType of asubstruct["key.inheritedtypes"]) {
126
+ if (!IGNORABLE_TYPES.includes(inheritedType["key.name"])) {
127
+ refTypes.add(inheritedType["key.name"]);
128
+ }
129
+ }
130
+ }
131
+ // Recurse
132
+ if (asubstruct["key.substructure"]) {
133
+ collectStructureTypes(asubstruct["key.substructure"], refTypes);
134
+ }
135
+ }
136
+
137
+ if (substructures["key.substructure"]) {
138
+ collectStructureTypes(substructures["key.substructure"], refTypes);
139
+ }
140
+ }
141
+
142
+ /**
143
+ * Method to perform swift build in verbose mode.
144
+ *
145
+ * @param {String} basePath Path
146
+ * @returns {undefined|String} Verbose build output
147
+ */
148
+ export function verboseBuild(basePath) {
149
+ runSwiftCommand(basePath, ["package", "clean"]);
150
+ console.log("Extracting compiler arguments from swift build...");
151
+ return runSwiftCommand(basePath, [
152
+ "build",
153
+ "-c",
154
+ "debug",
155
+ "--verbose",
156
+ "-Xcc",
157
+ "-Wno-error",
158
+ ]);
159
+ }
160
+
161
+ /**
162
+ * Method to parse the verbose swift build output to identify key compiler parameters.
163
+ *
164
+ * @param {String} buildOutput Verbose build output
165
+ * @returns {Object} compiler build parameters
166
+ */
167
+ export function extractCompilerParamsFromBuild(buildOutput) {
168
+ const params = {};
169
+ if (!buildOutput) {
170
+ console.log("No build output. Returning empty compilerArgs");
171
+ return { params, compilerArgs: [] };
172
+ }
173
+ const singletonArgs = new Set([
174
+ "-sdk",
175
+ "-target",
176
+ "-swift-version",
177
+ "-package-description-version",
178
+ "-module-cache-path",
179
+ ]);
180
+ const cumulativeArgs = new Set([
181
+ "-F",
182
+ "-I",
183
+ "-L",
184
+ "-vfsoverlay",
185
+ "-Xllvm",
186
+ "-external-plugin-path",
187
+ "-plugin-path",
188
+ ]);
189
+ const orderedArgs = new Set(["-Xcc"]);
190
+ const boolArgs = new Set([
191
+ "-parse-as-library",
192
+ "-incremental",
193
+ "-track-system-dependencies",
194
+ "-suppress-remarks",
195
+ "-suppress-warnings",
196
+ "-stack-check",
197
+ "-disable-clang-spi",
198
+ "-no-color-diagnostics",
199
+ "-enable-testing",
200
+ "-enable-library-evolution",
201
+ ]);
202
+ const ignoredArgs = new Set([
203
+ "-o",
204
+ "-output-file-map",
205
+ "-emit-module-path",
206
+ "-emit-module-doc-path",
207
+ "-emit-dependencies-path",
208
+ "-emit-reference-dependencies-path",
209
+ "-emit-objc-header-path",
210
+ "-primary-file",
211
+ "-main-file",
212
+ "-num-threads",
213
+ "-enable-objc-interop",
214
+ "-empty-abi-descriptor",
215
+ "-target-sdk-version",
216
+ "-target-sdk-name",
217
+ "-incremental",
218
+ "-module-name",
219
+ "-j",
220
+ ]);
221
+
222
+ /**
223
+ * Validates a parameter value to ensure it's not a garbage string or full command.
224
+ */
225
+ const isValidParamValue = (val) => {
226
+ if (!val) return false;
227
+ if (val.length > 2048) return false;
228
+ return !(val.includes(" -cc1") || val.includes('clang"'));
229
+ };
230
+
231
+ const lines = buildOutput.split("\n");
232
+ let bestLine = "";
233
+ for (let l of lines) {
234
+ l = l.trim();
235
+ if (!l.includes("swiftc") && !l.includes("swift-frontend")) {
236
+ continue;
237
+ }
238
+ if (l === "/usr/bin/swift-frontend" || l.endsWith("swift-frontend")) {
239
+ continue;
240
+ }
241
+ if (l.length > bestLine.length) {
242
+ bestLine = l;
243
+ }
244
+ }
245
+
246
+ // Parse only the best line found
247
+ if (bestLine) {
248
+ const tokens = splitCommandArgs(bestLine);
249
+ for (let i = 0; i < tokens.length; i++) {
250
+ const token = tokens[i];
251
+ if (ignoredArgs.has(token)) {
252
+ if (i + 1 < tokens.length && !tokens[i + 1].startsWith("-")) {
253
+ i++;
254
+ }
255
+ continue;
256
+ }
257
+ if (singletonArgs.has(token)) {
258
+ if (i + 1 < tokens.length) {
259
+ const val = tokens[i + 1];
260
+ if (isValidParamValue(val)) {
261
+ params[token] = val;
262
+ }
263
+ i++;
264
+ }
265
+ } else if (orderedArgs.has(token)) {
266
+ if (i + 1 < tokens.length) {
267
+ const val = tokens[i + 1];
268
+ if (isValidParamValue(val)) {
269
+ if (!params[token]) {
270
+ params[token] = [];
271
+ }
272
+ params[token].push(val);
273
+ }
274
+ i++;
275
+ }
276
+ } else if (cumulativeArgs.has(token)) {
277
+ if (i + 1 < tokens.length) {
278
+ const val = tokens[i + 1];
279
+ if (isValidParamValue(val)) {
280
+ if (!params[token]) {
281
+ params[token] = new Set();
282
+ }
283
+ params[token].add(val);
284
+ }
285
+ i++;
286
+ }
287
+ } else if (boolArgs.has(token)) {
288
+ params[token] = true;
289
+ } else if (token.startsWith("-D")) {
290
+ if (!params["-D"]) params["-D"] = new Set();
291
+ if (token === "-D" && i + 1 < tokens.length) {
292
+ params["-D"].add(tokens[i + 1]);
293
+ i++;
294
+ } else {
295
+ params["-D"].add(token.substring(2));
296
+ }
297
+ }
298
+ }
299
+ }
300
+ const compilerArgsList = [];
301
+ if (process?.env?.SWIFT_COMPILER_EXTRA_ARGS) {
302
+ compilerArgsList.push(...process.env.SWIFT_COMPILER_EXTRA_ARGS.split(" "));
303
+ }
304
+ for (const key of Object.keys(params)) {
305
+ const value = params[key];
306
+ if (value instanceof Set) {
307
+ for (const v of Array.from(value)) {
308
+ compilerArgsList.push(key);
309
+ compilerArgsList.push(v);
310
+ }
311
+ } else if (Array.isArray(value)) {
312
+ for (const v of value) {
313
+ compilerArgsList.push(key);
314
+ compilerArgsList.push(v);
315
+ }
316
+ } else if (typeof value === "string") {
317
+ compilerArgsList.push(key);
318
+ compilerArgsList.push(value);
319
+ } else if (value === true) {
320
+ compilerArgsList.push(key);
321
+ }
322
+ }
323
+ return { params, compilerArgs: compilerArgsList };
324
+ }
325
+
326
+ /**
327
+ * Method to index a swift file and extract metadata
328
+ *
329
+ * @param {String} filePath Path to .swift file
330
+ * @param {String|Array<string>} compilerArgs Compiler arguments extracted from verbose build log
331
+ * @returns {undefined|Object} metadata
332
+ */
333
+ export function index(filePath, compilerArgs) {
334
+ const skArgs = ["index", "--file", filePath];
335
+ if (compilerArgs) {
336
+ skArgs.push("--");
337
+ if (Array.isArray(compilerArgs)) {
338
+ skArgs.push(...compilerArgs);
339
+ } else {
340
+ skArgs.push(...compilerArgs.split(" "));
341
+ }
342
+ }
343
+ skArgs.push(filePath);
344
+ return executeSourcekitten(skArgs);
345
+ }
346
+
347
+ /**
348
+ * Parse the data from the index command
349
+ *
350
+ * @param {Object} indexJson Json from the index command
351
+ * @returns {Object|undefined} Parsed value
352
+ */
353
+ export function parseIndex(indexJson) {
354
+ if (!indexJson) {
355
+ return undefined;
356
+ }
357
+ // Some modules can be in both swift and clang
358
+ const swiftModules = new Set();
359
+ const clangModules = new Set();
360
+ collectIndexedModules(
361
+ indexJson["key.dependencies"],
362
+ swiftModules,
363
+ clangModules,
364
+ );
365
+ // Maps the given symbols with this obfuscated version
366
+ const obfuscatedSymbols = {};
367
+ // Line numbers where the given symbols are found
368
+ const symbolLocations = {};
369
+ buildIndexedObfuscatedSymbols(
370
+ indexJson["key.entities"],
371
+ obfuscatedSymbols,
372
+ symbolLocations,
373
+ );
374
+ return {
375
+ swiftModules: Array.from(swiftModules).sort(),
376
+ clangModules: Array.from(clangModules).sort(),
377
+ obfuscatedSymbols,
378
+ symbolLocations,
379
+ };
380
+ }
381
+
382
+ /**
383
+ * Recursively collect the swift and llvm modules from the index data
384
+ *
385
+ * @param dependencies {Array} dependencies array as per the index command
386
+ * @param swiftModules {Set<String>} Swift modules used
387
+ * @param clangModules {Set<String>} clang modules
388
+ */
389
+ function collectIndexedModules(dependencies, swiftModules, clangModules) {
390
+ for (const adep of dependencies) {
391
+ if (adep["key.kind"] === SWIFT_ENTITY_KINDS.IMPORT_SWIFT) {
392
+ swiftModules.add(adep["key.name"]);
393
+ } else if (adep["key.kind"] === SWIFT_ENTITY_KINDS.IMPORT_CLANG) {
394
+ clangModules.add(adep["key.name"]);
395
+ }
396
+ if (adep["key.dependencies"]) {
397
+ collectIndexedModules(
398
+ adep["key.dependencies"],
399
+ swiftModules,
400
+ clangModules,
401
+ );
402
+ }
403
+ }
404
+ }
405
+
406
+ /**
407
+ * Recursively collect the obfuscated symbols from the index data
408
+ *
409
+ * @param entities {Array} Entities found in the index data
410
+ * @param obfuscatedSymbols {Object} Obfuscated symbols map
411
+ * @param symbolLocations {Object} Symbol locations
412
+ */
413
+ function buildIndexedObfuscatedSymbols(
414
+ entities,
415
+ obfuscatedSymbols,
416
+ symbolLocations,
417
+ ) {
418
+ if (!entities) {
419
+ return;
420
+ }
421
+ for (const aentity of entities) {
422
+ if (aentity["key.name"] && aentity["key.usr"]) {
423
+ obfuscatedSymbols[aentity["key.name"]] = aentity["key.usr"];
424
+ }
425
+ if (aentity["key.line"]) {
426
+ const symbolLocationsKey = aentity["key.name"] || aentity["key.usr"];
427
+ if (!symbolLocationsKey) {
428
+ continue;
429
+ }
430
+ if (
431
+ !symbolLocations[symbolLocationsKey] ||
432
+ !Array.isArray(symbolLocations[symbolLocationsKey])
433
+ ) {
434
+ symbolLocations[symbolLocationsKey] = [];
435
+ }
436
+ if (!symbolLocations[symbolLocationsKey].includes(aentity["key.line"])) {
437
+ symbolLocations[symbolLocationsKey].push(aentity["key.line"]);
438
+ }
439
+ }
440
+ if (aentity["key.entities"]) {
441
+ buildIndexedObfuscatedSymbols(
442
+ aentity["key.entities"],
443
+ obfuscatedSymbols,
444
+ symbolLocations,
445
+ );
446
+ }
447
+ }
448
+ }
449
+
450
+ /**
451
+ * Method to execute dump-package package command.
452
+ *
453
+ * @param {String} basePath Path
454
+ * @returns {undefined|Object} Output from dump-package command
455
+ */
456
+ export function dumpPackage(basePath) {
457
+ const cmdOutput = runSwiftCommand(basePath, ["package", "dump-package"]);
458
+ if (!cmdOutput) {
459
+ return undefined;
460
+ }
461
+ try {
462
+ return JSON.parse(cmdOutput);
463
+ } catch (_e) {
464
+ return undefined;
465
+ }
466
+ }
467
+
468
+ /**
469
+ * Parse the data from dump-package command
470
+ *
471
+ * @param {Object} dumpJson Json from dump-package command
472
+ * @returns {Object|undefined} Parsed value
473
+ */
474
+ export function parseDumpPackage(dumpJson) {
475
+ if (!dumpJson) {
476
+ return undefined;
477
+ }
478
+ const metadata = {
479
+ rootModule: dumpJson?.name,
480
+ rootDir: dumpJson?.packageKind?.root,
481
+ platforms: dumpJson?.platforms,
482
+ };
483
+ const rootPkgDependencies = [];
484
+ if (dumpJson.targets) {
485
+ for (const atarget of dumpJson.targets) {
486
+ const ref = atarget.name.replace("+", "_");
487
+ if (atarget.dependencies) {
488
+ const dependsOn = atarget.dependencies
489
+ .map((v) => v?.byName?.[0].replace("+", "_"))
490
+ .filter((v) => v !== undefined);
491
+ rootPkgDependencies.push({
492
+ ref,
493
+ dependsOn,
494
+ });
495
+ }
496
+ }
497
+ }
498
+ metadata.dependencies = rootPkgDependencies;
499
+ return metadata;
500
+ }
501
+
502
+ /**
503
+ * Retrieve the module information of the swift project
504
+ *
505
+ * @param {String} moduleName Module name
506
+ * @param {String|Array<string>} compilerArgs Compiler arguments extracted from verbose build log
507
+ * @returns {undefined|Object} JSON representation of the swift module or undefined.
508
+ */
509
+ export function moduleInfo(moduleName, compilerArgs) {
510
+ const skArgs = ["module-info", "--module", moduleName];
511
+ if (compilerArgs && compilerArgs.length > 0) {
512
+ skArgs.push("--");
513
+ if (Array.isArray(compilerArgs)) {
514
+ skArgs.push(...compilerArgs);
515
+ } else {
516
+ skArgs.push(...compilerArgs.split(" "));
517
+ }
518
+ }
519
+ return executeSourcekitten(skArgs);
520
+ }
521
+
522
+ /**
523
+ * Parse the data from module-info command to replicate the swift interface
524
+ *
525
+ * @param {Object} moduleInfoJson Json from module-info command
526
+ * @returns {Object|undefined} Parsed classes, protocols, enums and their functions
527
+ */
528
+ export function parseModuleInfo(moduleInfoJson) {
529
+ if (!moduleInfoJson?.["key.annotations"]) {
530
+ return undefined;
531
+ }
532
+ const classes = new Set();
533
+ const protocols = new Set();
534
+ const enums = new Set();
535
+ const obfuscationMap = {};
536
+ const classMethods = {};
537
+ const protocolMethods = {};
538
+ // Collect the classes, protocols and enums first
539
+ for (const annot of moduleInfoJson["key.annotations"] || []) {
540
+ switch (annot["key.kind"]) {
541
+ case SWIFT_ENTITY_KINDS.REF_CLASS:
542
+ classes.add(annot["key.name"]);
543
+ break;
544
+ case SWIFT_ENTITY_KINDS.REF_PROTOCOL:
545
+ protocols.add(annot["key.name"]);
546
+ break;
547
+ case SWIFT_ENTITY_KINDS.REF_ENUM:
548
+ enums.add(annot["key.name"]);
549
+ break;
550
+ }
551
+ // Build the obfuscation map
552
+ if (
553
+ [
554
+ SWIFT_ENTITY_KINDS.REF_CLASS,
555
+ SWIFT_ENTITY_KINDS.REF_PROTOCOL,
556
+ SWIFT_ENTITY_KINDS.REF_ENUM,
557
+ ].includes(annot["key.kind"])
558
+ ) {
559
+ obfuscationMap[annot["key.name"]] = annot["key.usr"];
560
+ }
561
+ }
562
+ // Collect the class and protocol functions
563
+ for (const aentity of moduleInfoJson["key.entities"] || []) {
564
+ if (
565
+ aentity["key.entities"] &&
566
+ [
567
+ SWIFT_ENTITY_KINDS.DECL_CLASS,
568
+ SWIFT_ENTITY_KINDS.DECL_PROTOCOL,
569
+ ].includes(aentity["key.kind"])
570
+ ) {
571
+ for (const centities of aentity["key.entities"] || []) {
572
+ if (
573
+ [SWIFT_ENTITY_KINDS.DECL_METHOD_INSTANCE].includes(
574
+ centities["key.kind"],
575
+ )
576
+ ) {
577
+ switch (aentity["key.kind"]) {
578
+ case SWIFT_ENTITY_KINDS.DECL_CLASS:
579
+ if (!classMethods[aentity["key.name"]]) {
580
+ classMethods[aentity["key.name"]] = [];
581
+ }
582
+ classMethods[aentity["key.name"]].push(centities["key.name"]);
583
+ break;
584
+ case SWIFT_ENTITY_KINDS.DECL_PROTOCOL:
585
+ if (!protocolMethods[aentity["key.name"]]) {
586
+ protocolMethods[aentity["key.name"]] = [];
587
+ }
588
+ protocolMethods[aentity["key.name"]].push(centities["key.name"]);
589
+ break;
590
+ }
591
+ obfuscationMap[centities["key.name"]] = centities["key.usr"];
592
+ }
593
+ }
594
+ }
595
+ }
596
+ // Collect the imported modules
597
+ const importedModules = moduleInfoJson?.["key.sourcetext"]
598
+ .split("\n")
599
+ .filter((l) => l.startsWith("import "))
600
+ .map((l) => l.replaceAll("\r", "").replace("import ", ""))
601
+ .sort();
602
+ return {
603
+ classes: Array.from(classes).sort(),
604
+ protocols: Array.from(protocols).sort(),
605
+ enums: Array.from(enums).sort(),
606
+ obfuscationMap,
607
+ classMethods,
608
+ protocolMethods,
609
+ importedModules,
610
+ };
611
+ }
612
+
613
+ /**
614
+ * Method to collect the build symbols from the output file maps generated by swift build.
615
+ *
616
+ * @param {String} basePath Path
617
+ * @param {Object} options CLI options
618
+ * @returns {Object} symbols map
619
+ */
620
+ export function collectBuildSymbols(basePath, options) {
621
+ const outputFileMaps = getAllFiles(
622
+ basePath,
623
+ ".build/**/debug/**/output-file-map.json",
624
+ options,
625
+ );
626
+ const symbolsMap = {};
627
+ for (const afilemap of outputFileMaps) {
628
+ const metadata = parseOutputFileMap(afilemap);
629
+ // Skip testing modules
630
+ if (metadata.moduleName.endsWith("Tests")) {
631
+ continue;
632
+ }
633
+ symbolsMap[metadata.moduleName] = metadata.moduleSymbols;
634
+ }
635
+ return symbolsMap;
636
+ }
637
+
638
+ /**
639
+ * Method to parse output file map to identify the module and their symbols.
640
+ * This list is imprecise when compared with the data from module-info command.
641
+ *
642
+ * @param filemap {String} File name
643
+ * @returns {Object} parsed module metadata
644
+ */
645
+ export function parseOutputFileMap(filemap) {
646
+ const moduleName = basename(dirname(filemap)).replace(".build", "");
647
+ const fileMapObj = JSON.parse(readFileSync(filemap, { encoding: "utf-8" }));
648
+ // Module symbols could be class or protocol names
649
+ const moduleSymbols = [];
650
+ for (const akey of Object.keys(fileMapObj)) {
651
+ if (akey.length) {
652
+ const symbolName = basename(
653
+ fileMapObj[akey]["swift-dependencies"],
654
+ ).replace(".swiftdeps", "");
655
+ moduleSymbols.push(symbolName.replace("+", "_"));
656
+ }
657
+ }
658
+ return { moduleName, moduleSymbols };
659
+ }
660
+
661
+ /**
662
+ * Create a precise semantics slices file for a swift project.
663
+ *
664
+ * @param basePath basePath Path
665
+ * @param options options CLI options
666
+ */
667
+ export function createSemanticsSlices(basePath, options) {
668
+ let compilerArgs = process?.env?.SWIFT_COMPILER_ARGS;
669
+ let sdkArgs = process?.env?.SWIFT_SDK_ARGS;
670
+ const pkgSwiftFiles = getAllFiles(
671
+ basePath,
672
+ `${options.multiProject ? "**/" : ""}Package*.swift`,
673
+ options,
674
+ );
675
+ if (!pkgSwiftFiles.length) {
676
+ return undefined;
677
+ }
678
+ const hasSwiftVersionFile = basePath
679
+ ? safeExistsSync(join(basePath, ".swift-version"))
680
+ : false;
681
+ if (!compilerArgs || !sdkArgs) {
682
+ // We begin by performing a clean verbose debug build to learn the compiler arguments needed for a successful build
683
+ // We do this because most users would not know the compiler arguments themselves!
684
+ const paramsObj = extractCompilerParamsFromBuild(verboseBuild(basePath));
685
+ // Our auto-detection attempt has failed.
686
+ if (!paramsObj) {
687
+ if (readEnvironmentVariable("CDXGEN_IN_CONTAINER") !== "true") {
688
+ console.log(
689
+ "Automatic swift build has failed. Check if the appropriate version of swift is installed. Try using the cdxgen container image, which bundles the latest Swift 6 compiler.",
690
+ );
691
+ } else {
692
+ console.log(
693
+ "Automatic swift build has failed. Check if this project is compatible with Swift 5/6 that is bundled with the cdxgen container image.",
694
+ );
695
+ }
696
+ return;
697
+ }
698
+ compilerArgs = paramsObj.compilerArgs;
699
+ if (paramsObj?.params?.["-sdk"]) {
700
+ sdkArgs = Array.from(paramsObj.params["-sdk"]).join(" ");
701
+ }
702
+ if (DEBUG_MODE && !sdkArgs && !hasSwiftVersionFile) {
703
+ console.log(
704
+ "TIP: Unable to detect the swift sdk needed to build this project. Try running the swift build command to check if this project builds successfully.",
705
+ );
706
+ console.log(
707
+ "Check whether the project requires xcodebuild to build. Such projects are currently unsupported.",
708
+ );
709
+ }
710
+ }
711
+ // Success we now have the compiler and sdk arguments
712
+ if (DEBUG_MODE) {
713
+ console.log("Detected swift compiler arguments", compilerArgs);
714
+ }
715
+ // Package.swift file contains useful information needed to understand the semantic context
716
+ // Let's use the dump-package command to retriev this information in json format
717
+ const packageMetadata = parseDumpPackage(dumpPackage(basePath));
718
+ // Our attempt to build must have yielded some output file maps.
719
+ // These can be used to understand the symbols offered by each of the dependency
720
+ const buildSymbols = collectBuildSymbols(basePath, options);
721
+ // Now let's attempt to learn about each module (internal and external) in detail
722
+ // Information about the classes, protocols, enums, and methods exported by each module is valuable
723
+ const moduleInfos = {};
724
+ const allModules = new Set([
725
+ packageMetadata?.rootModule.trim(),
726
+ ...(packageMetadata?.dependencies || []).map((d) => d.ref.trim()),
727
+ ...Object.keys(buildSymbols),
728
+ ]);
729
+ for (const moduleName of Array.from(allModules)) {
730
+ // Skip the testing modules
731
+ if (
732
+ !moduleName ||
733
+ moduleName?.length === 0 ||
734
+ moduleName?.endsWith("Tests")
735
+ ) {
736
+ continue;
737
+ }
738
+ const moduleInfoObj = parseModuleInfo(moduleInfo(moduleName, compilerArgs));
739
+ if (moduleInfoObj) {
740
+ moduleInfos[moduleName] = moduleInfoObj;
741
+ } else {
742
+ console.log(
743
+ "Unable to obtain the semantic context for the module",
744
+ moduleName,
745
+ );
746
+ }
747
+ }
748
+ // Finally, let's do some structural analysis of swift source codes
749
+ const swiftFiles = getAllFiles(basePath, "**/*.swift", options);
750
+ const fileStructures = {};
751
+ const fileIndexes = {};
752
+ for (const afile of swiftFiles) {
753
+ // Skip testing and Package.swift
754
+ if (afile.includes("Tests") || afile.endsWith("Package.swift")) {
755
+ continue;
756
+ }
757
+ fileStructures[afile] = parseStructure(getStructure(afile));
758
+ fileIndexes[afile] = parseIndex(index(afile, compilerArgs));
759
+ }
760
+ return {
761
+ packageMetadata,
762
+ buildSymbols,
763
+ moduleInfos,
764
+ fileStructures,
765
+ fileIndexes,
766
+ };
767
+ }