@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,807 @@
1
+ const getStaticNumberValue = (astNode) => {
2
+ if (!astNode) {
3
+ return undefined;
4
+ }
5
+ if (astNode.type === "NumericLiteral") {
6
+ return astNode.value;
7
+ }
8
+ if (astNode.type === "UnaryExpression" && astNode.operator === "-") {
9
+ const argumentValue = getStaticNumberValue(astNode.argument);
10
+ return typeof argumentValue === "number" ? -argumentValue : undefined;
11
+ }
12
+ return undefined;
13
+ };
14
+
15
+ const getStaticPrimitiveValue = (astNode, getLiteralStringValue) => {
16
+ if (!astNode) {
17
+ return undefined;
18
+ }
19
+ const stringValue = getLiteralStringValue(astNode);
20
+ if (stringValue !== undefined) {
21
+ return stringValue;
22
+ }
23
+ const numberValue = getStaticNumberValue(astNode);
24
+ if (numberValue !== undefined) {
25
+ return numberValue;
26
+ }
27
+ if (astNode.type === "BooleanLiteral") {
28
+ return astNode.value;
29
+ }
30
+ if (astNode.type === "NullLiteral") {
31
+ return null;
32
+ }
33
+ return undefined;
34
+ };
35
+
36
+ /**
37
+ * Flatten a scalar or nested-array value into a single-level array of
38
+ * individual resolved values.
39
+ *
40
+ * @param {*} value Scalar, array, or nested array of values.
41
+ * @returns {Array} Flat array of individual values (empty for undefined).
42
+ */
43
+ export const toResolvedValueArray = (value) => {
44
+ if (value === undefined) {
45
+ return [];
46
+ }
47
+ if (!Array.isArray(value)) {
48
+ return [value];
49
+ }
50
+ return value.flatMap((entry) => toResolvedValueArray(entry));
51
+ };
52
+
53
+ /**
54
+ * Build a stable dedup key string for a resolved value, prefixing the type so
55
+ * that distinct types never collide.
56
+ *
57
+ * @param {*} value Resolved value to key.
58
+ * @returns {string} Stable dedup key (e.g. "string:abc", "object:{...}").
59
+ */
60
+ export const resolvedValueKey = (value) => {
61
+ if (value && typeof value === "object") {
62
+ return `object:${JSON.stringify(value)}`;
63
+ }
64
+ return `${typeof value}:${String(value)}`;
65
+ };
66
+
67
+ /**
68
+ * Merge one or more scalar/array resolved values into a single deduplicated
69
+ * value, returning a scalar when only one unique value remains.
70
+ *
71
+ * @param {...*} values Resolved values to merge.
72
+ * @returns {*} Merged scalar, deduplicated array, or undefined when empty.
73
+ */
74
+ export const mergeResolvedValues = (...values) => {
75
+ const mergedValues = [];
76
+ const seen = new Set();
77
+ for (const value of values) {
78
+ for (const candidate of toResolvedValueArray(value)) {
79
+ const key = resolvedValueKey(candidate);
80
+ if (seen.has(key)) {
81
+ continue;
82
+ }
83
+ seen.add(key);
84
+ mergedValues.push(candidate);
85
+ }
86
+ }
87
+ if (!mergedValues.length) {
88
+ return undefined;
89
+ }
90
+ return mergedValues.length === 1 ? mergedValues[0] : mergedValues;
91
+ };
92
+
93
+ /**
94
+ * Filter the resolved values within a scalar/array by a predicate and re-merge
95
+ * the surviving values.
96
+ *
97
+ * @param {*} value Scalar or array of resolved values.
98
+ * @param {(candidate: *) => boolean} predicate Predicate function to retain values.
99
+ * @returns {*} Re-merged filtered result.
100
+ */
101
+ export const filterResolvedValues = (value, predicate) => {
102
+ return mergeResolvedValues(
103
+ ...toResolvedValueArray(value).filter((candidate) => predicate(candidate)),
104
+ );
105
+ };
106
+
107
+ /**
108
+ * Determine whether every resolved value within a scalar/array satisfies the
109
+ * given predicate.
110
+ *
111
+ * @param {*} value Scalar or array of resolved values.
112
+ * @param {(candidate: *) => boolean} predicate Predicate function to test.
113
+ * @returns {boolean} True when there is at least one value and all satisfy the predicate.
114
+ */
115
+ export const hasOnlyResolvedValues = (value, predicate) => {
116
+ const resolvedValues = toResolvedValueArray(value);
117
+ return resolvedValues.length > 0 && resolvedValues.every(predicate);
118
+ };
119
+
120
+ const applyStringTransformToResolvedValue = (value, transform) => {
121
+ const transformedValues = [];
122
+ for (const candidate of toResolvedValueArray(value)) {
123
+ if (typeof candidate !== "string") {
124
+ continue;
125
+ }
126
+ transformedValues.push(transform(candidate));
127
+ }
128
+ return mergeResolvedValues(...transformedValues);
129
+ };
130
+
131
+ /**
132
+ * Read a named property from a statically-resolved object or array value,
133
+ * mapping across array elements when the value is an array.
134
+ *
135
+ * @param {object|Array} objectValue Resolved object or array value.
136
+ * @param {string} propertyName Property name to read.
137
+ * @returns {*} The property value, a merged array of results, or undefined.
138
+ */
139
+ export const getStaticObjectProperty = (objectValue, propertyName) => {
140
+ if (Array.isArray(objectValue)) {
141
+ return mergeResolvedValues(
142
+ ...objectValue.map((entry) =>
143
+ getStaticObjectProperty(entry, propertyName),
144
+ ),
145
+ );
146
+ }
147
+ if (!objectValue || typeof objectValue !== "object") {
148
+ return undefined;
149
+ }
150
+ return objectValue[propertyName];
151
+ };
152
+
153
+ const intersectResolvedValues = (leftValue, rightValue) => {
154
+ const rightValueKeys = new Set(
155
+ toResolvedValueArray(rightValue).map((value) => resolvedValueKey(value)),
156
+ );
157
+ return mergeResolvedValues(
158
+ ...toResolvedValueArray(leftValue).filter((value) =>
159
+ rightValueKeys.has(resolvedValueKey(value)),
160
+ ),
161
+ );
162
+ };
163
+
164
+ const createStaticNarrowingMap = (identifierName, value) => {
165
+ if (!identifierName || value === undefined) {
166
+ return undefined;
167
+ }
168
+ return new Map([[identifierName, value]]);
169
+ };
170
+
171
+ const mergeStaticNarrowingMapsForAnd = (leftMap, rightMap) => {
172
+ if (!leftMap || !rightMap) {
173
+ return undefined;
174
+ }
175
+ const mergedMap = new Map(leftMap);
176
+ for (const [identifierName, value] of rightMap) {
177
+ if (!mergedMap.has(identifierName)) {
178
+ mergedMap.set(identifierName, value);
179
+ continue;
180
+ }
181
+ const intersectedValue = intersectResolvedValues(
182
+ mergedMap.get(identifierName),
183
+ value,
184
+ );
185
+ if (intersectedValue === undefined) {
186
+ return undefined;
187
+ }
188
+ mergedMap.set(identifierName, intersectedValue);
189
+ }
190
+ return mergedMap;
191
+ };
192
+
193
+ const mergeStaticNarrowingMapsForOr = (leftMap, rightMap) => {
194
+ if (!leftMap || !rightMap || leftMap.size !== rightMap.size) {
195
+ return undefined;
196
+ }
197
+ const mergedMap = new Map();
198
+ for (const [identifierName, value] of leftMap) {
199
+ if (!rightMap.has(identifierName)) {
200
+ return undefined;
201
+ }
202
+ mergedMap.set(
203
+ identifierName,
204
+ mergeResolvedValues(value, rightMap.get(identifierName)),
205
+ );
206
+ }
207
+ return mergedMap;
208
+ };
209
+
210
+ const getConditionComparisonIdentifier = (astNode) => {
211
+ return astNode?.type === "Identifier" ? astNode.name : undefined;
212
+ };
213
+
214
+ const getConditionComparisonValue = (astNode, getLiteralStringValue) => {
215
+ return getStaticPrimitiveValue(astNode, getLiteralStringValue);
216
+ };
217
+
218
+ /**
219
+ * Derive narrowed identifier-to-value bindings from a conditional AST node,
220
+ * given whether the branch was taken.
221
+ *
222
+ * Handles parenthesized/type-cast wrappers, logical (&&, ||) and unary (!)
223
+ * expressions, and equality (==, ===, !=, !==) comparisons between an
224
+ * identifier and a literal.
225
+ *
226
+ * @param {object} astNode The conditional AST node to analyze.
227
+ * @param {boolean} branchTaken Whether the consequent (true) or alternate (false) branch applies.
228
+ * @param {(node: object) => (string|undefined)} getLiteralStringValue Function to extract a literal string from an AST node.
229
+ * @returns {Map<string, *>|undefined} Map of identifier name to narrowed value, or undefined.
230
+ */
231
+ export const deriveStaticNarrowingsFromCondition = (
232
+ astNode,
233
+ branchTaken,
234
+ getLiteralStringValue,
235
+ ) => {
236
+ if (!astNode) {
237
+ return undefined;
238
+ }
239
+ if (
240
+ [
241
+ "ParenthesizedExpression",
242
+ "TSAsExpression",
243
+ "TSNonNullExpression",
244
+ "TSSatisfiesExpression",
245
+ "TypeCastExpression",
246
+ ].includes(astNode.type)
247
+ ) {
248
+ return deriveStaticNarrowingsFromCondition(
249
+ astNode.expression,
250
+ branchTaken,
251
+ getLiteralStringValue,
252
+ );
253
+ }
254
+ if (astNode.type === "UnaryExpression" && astNode.operator === "!") {
255
+ return deriveStaticNarrowingsFromCondition(
256
+ astNode.argument,
257
+ !branchTaken,
258
+ getLiteralStringValue,
259
+ );
260
+ }
261
+ if (astNode.type === "LogicalExpression") {
262
+ if (branchTaken && astNode.operator === "&&") {
263
+ return mergeStaticNarrowingMapsForAnd(
264
+ deriveStaticNarrowingsFromCondition(
265
+ astNode.left,
266
+ true,
267
+ getLiteralStringValue,
268
+ ),
269
+ deriveStaticNarrowingsFromCondition(
270
+ astNode.right,
271
+ true,
272
+ getLiteralStringValue,
273
+ ),
274
+ );
275
+ }
276
+ if (branchTaken && astNode.operator === "||") {
277
+ return mergeStaticNarrowingMapsForOr(
278
+ deriveStaticNarrowingsFromCondition(
279
+ astNode.left,
280
+ true,
281
+ getLiteralStringValue,
282
+ ),
283
+ deriveStaticNarrowingsFromCondition(
284
+ astNode.right,
285
+ true,
286
+ getLiteralStringValue,
287
+ ),
288
+ );
289
+ }
290
+ return undefined;
291
+ }
292
+ if (astNode.type !== "BinaryExpression") {
293
+ return undefined;
294
+ }
295
+ const leftIdentifier = getConditionComparisonIdentifier(astNode.left);
296
+ const rightIdentifier = getConditionComparisonIdentifier(astNode.right);
297
+ const leftValue = getConditionComparisonValue(
298
+ astNode.left,
299
+ getLiteralStringValue,
300
+ );
301
+ const rightValue = getConditionComparisonValue(
302
+ astNode.right,
303
+ getLiteralStringValue,
304
+ );
305
+ const identifierName = leftIdentifier || rightIdentifier;
306
+ const comparisonValue = leftIdentifier ? rightValue : leftValue;
307
+ if (!identifierName || comparisonValue === undefined) {
308
+ return undefined;
309
+ }
310
+ if (["===", "=="].includes(astNode.operator) && branchTaken) {
311
+ return createStaticNarrowingMap(identifierName, comparisonValue);
312
+ }
313
+ if (["!==", "!="].includes(astNode.operator) && !branchTaken) {
314
+ return createStaticNarrowingMap(identifierName, comparisonValue);
315
+ }
316
+ return undefined;
317
+ };
318
+
319
+ /**
320
+ * Best-effort static resolution of an AST node to a concrete value.
321
+ *
322
+ * Resolves literals, identifiers (via the provided name→value map),
323
+ * conditional and logical expressions, member expressions, array and object
324
+ * expressions, template literals, and binary concatenation. Recursion is
325
+ * bounded by a depth limit to avoid unbounded analysis.
326
+ *
327
+ * @param {object} astNode The AST node to resolve.
328
+ * @param {Map<string, *>} staticValueByName Map of identifier name to known static value.
329
+ * @param {(node: object) => (string|undefined)} getLiteralStringValue Function to extract a literal string from an AST node.
330
+ * @param {(node: object) => (string|undefined)} getMemberExpressionPropertyName Function to extract the property name from a member-expression node.
331
+ * @param {number} [depth=0] Current recursion depth (capped internally).
332
+ * @returns {*} The resolved value, or undefined when it cannot be determined.
333
+ */
334
+ export const resolveStaticValue = (
335
+ astNode,
336
+ staticValueByName,
337
+ getLiteralStringValue,
338
+ getMemberExpressionPropertyName,
339
+ depth = 0,
340
+ ) => {
341
+ if (!astNode || depth > 6) {
342
+ return undefined;
343
+ }
344
+ const primitiveValue = getStaticPrimitiveValue(
345
+ astNode,
346
+ getLiteralStringValue,
347
+ );
348
+ if (primitiveValue !== undefined) {
349
+ return primitiveValue;
350
+ }
351
+ if (astNode.type === "Identifier") {
352
+ if (staticValueByName.has(astNode.name)) {
353
+ return staticValueByName.get(astNode.name);
354
+ }
355
+ return undefined;
356
+ }
357
+ if (
358
+ [
359
+ "ParenthesizedExpression",
360
+ "TSAsExpression",
361
+ "TSNonNullExpression",
362
+ "TSSatisfiesExpression",
363
+ "TypeCastExpression",
364
+ ].includes(astNode.type)
365
+ ) {
366
+ return resolveStaticValue(
367
+ astNode.expression,
368
+ staticValueByName,
369
+ getLiteralStringValue,
370
+ getMemberExpressionPropertyName,
371
+ depth + 1,
372
+ );
373
+ }
374
+ if (astNode.type === "ConditionalExpression") {
375
+ const testValue = resolveStaticValue(
376
+ astNode.test,
377
+ staticValueByName,
378
+ getLiteralStringValue,
379
+ getMemberExpressionPropertyName,
380
+ depth + 1,
381
+ );
382
+ const consequentValue = resolveStaticValue(
383
+ astNode.consequent,
384
+ staticValueByName,
385
+ getLiteralStringValue,
386
+ getMemberExpressionPropertyName,
387
+ depth + 1,
388
+ );
389
+ const alternateValue = resolveStaticValue(
390
+ astNode.alternate,
391
+ staticValueByName,
392
+ getLiteralStringValue,
393
+ getMemberExpressionPropertyName,
394
+ depth + 1,
395
+ );
396
+ if (typeof testValue === "boolean") {
397
+ return testValue ? consequentValue : alternateValue;
398
+ }
399
+ return mergeResolvedValues(consequentValue, alternateValue);
400
+ }
401
+ if (astNode.type === "LogicalExpression") {
402
+ const leftValue = resolveStaticValue(
403
+ astNode.left,
404
+ staticValueByName,
405
+ getLiteralStringValue,
406
+ getMemberExpressionPropertyName,
407
+ depth + 1,
408
+ );
409
+ const rightValue = resolveStaticValue(
410
+ astNode.right,
411
+ staticValueByName,
412
+ getLiteralStringValue,
413
+ getMemberExpressionPropertyName,
414
+ depth + 1,
415
+ );
416
+ if (astNode.operator === "||") {
417
+ if (leftValue === undefined) {
418
+ return rightValue;
419
+ }
420
+ if (hasOnlyResolvedValues(leftValue, (candidate) => Boolean(candidate))) {
421
+ return leftValue;
422
+ }
423
+ if (hasOnlyResolvedValues(leftValue, (candidate) => !candidate)) {
424
+ return rightValue;
425
+ }
426
+ return mergeResolvedValues(
427
+ filterResolvedValues(leftValue, (candidate) => Boolean(candidate)),
428
+ rightValue,
429
+ );
430
+ }
431
+ if (astNode.operator === "??") {
432
+ if (leftValue === undefined) {
433
+ return rightValue;
434
+ }
435
+ if (
436
+ hasOnlyResolvedValues(
437
+ leftValue,
438
+ (candidate) => candidate !== null && candidate !== undefined,
439
+ )
440
+ ) {
441
+ return leftValue;
442
+ }
443
+ if (
444
+ hasOnlyResolvedValues(
445
+ leftValue,
446
+ (candidate) => candidate === null || candidate === undefined,
447
+ )
448
+ ) {
449
+ return rightValue;
450
+ }
451
+ return mergeResolvedValues(
452
+ filterResolvedValues(
453
+ leftValue,
454
+ (candidate) => candidate !== null && candidate !== undefined,
455
+ ),
456
+ rightValue,
457
+ );
458
+ }
459
+ if (astNode.operator === "&&") {
460
+ if (leftValue === undefined) {
461
+ return undefined;
462
+ }
463
+ if (hasOnlyResolvedValues(leftValue, (candidate) => !candidate)) {
464
+ return leftValue;
465
+ }
466
+ if (hasOnlyResolvedValues(leftValue, (candidate) => Boolean(candidate))) {
467
+ return rightValue;
468
+ }
469
+ return mergeResolvedValues(
470
+ filterResolvedValues(leftValue, (candidate) => !candidate),
471
+ rightValue,
472
+ );
473
+ }
474
+ }
475
+ if (astNode.type === "ObjectExpression") {
476
+ const objectValue = {};
477
+ for (const property of astNode.properties || []) {
478
+ if (property.type !== "ObjectProperty") {
479
+ continue;
480
+ }
481
+ const keyName = getMemberExpressionPropertyName(property.key);
482
+ if (!keyName) {
483
+ continue;
484
+ }
485
+ const resolvedValue = resolveStaticValue(
486
+ property.value,
487
+ staticValueByName,
488
+ getLiteralStringValue,
489
+ getMemberExpressionPropertyName,
490
+ depth + 1,
491
+ );
492
+ if (resolvedValue !== undefined) {
493
+ objectValue[keyName] = resolvedValue;
494
+ }
495
+ }
496
+ return Object.keys(objectValue).length ? objectValue : undefined;
497
+ }
498
+ if (
499
+ astNode.type === "MemberExpression" ||
500
+ astNode.type === "OptionalMemberExpression"
501
+ ) {
502
+ const objectValue = resolveStaticValue(
503
+ astNode.object,
504
+ staticValueByName,
505
+ getLiteralStringValue,
506
+ getMemberExpressionPropertyName,
507
+ depth + 1,
508
+ );
509
+ const propertyName = getMemberExpressionPropertyName(astNode.property);
510
+ if (!propertyName) {
511
+ return undefined;
512
+ }
513
+ return getStaticObjectProperty(objectValue, propertyName);
514
+ }
515
+ if (astNode.type === "CallExpression") {
516
+ const callee = astNode.callee;
517
+ if (
518
+ callee?.type !== "MemberExpression" &&
519
+ callee?.type !== "OptionalMemberExpression"
520
+ ) {
521
+ return undefined;
522
+ }
523
+ const methodName = getMemberExpressionPropertyName(callee.property);
524
+ if (!methodName) {
525
+ return undefined;
526
+ }
527
+ const targetValue = resolveStaticValue(
528
+ callee.object,
529
+ staticValueByName,
530
+ getLiteralStringValue,
531
+ getMemberExpressionPropertyName,
532
+ depth + 1,
533
+ );
534
+ if (["toLowerCase", "toUpperCase", "trim"].includes(methodName)) {
535
+ if ((astNode.arguments || []).length) {
536
+ return undefined;
537
+ }
538
+ const transform =
539
+ methodName === "toLowerCase"
540
+ ? (value) => value.toLowerCase()
541
+ : methodName === "toUpperCase"
542
+ ? (value) => value.toUpperCase()
543
+ : (value) => value.trim();
544
+ return applyStringTransformToResolvedValue(targetValue, transform);
545
+ }
546
+ if (["replace", "replaceAll"].includes(methodName)) {
547
+ const searchValue = resolveStaticValue(
548
+ astNode.arguments?.[0],
549
+ staticValueByName,
550
+ getLiteralStringValue,
551
+ getMemberExpressionPropertyName,
552
+ depth + 1,
553
+ );
554
+ const replacementValue = resolveStaticValue(
555
+ astNode.arguments?.[1],
556
+ staticValueByName,
557
+ getLiteralStringValue,
558
+ getMemberExpressionPropertyName,
559
+ depth + 1,
560
+ );
561
+ if (
562
+ typeof searchValue !== "string" ||
563
+ typeof replacementValue !== "string"
564
+ ) {
565
+ return undefined;
566
+ }
567
+ return applyStringTransformToResolvedValue(targetValue, (value) =>
568
+ methodName === "replaceAll"
569
+ ? value.replaceAll(searchValue, replacementValue)
570
+ : value.replace(searchValue, replacementValue),
571
+ );
572
+ }
573
+ }
574
+ return undefined;
575
+ };
576
+
577
+ const statementDefinitelyAbrupt = (astNode) => {
578
+ if (!astNode) {
579
+ return false;
580
+ }
581
+ if (
582
+ [
583
+ "BreakStatement",
584
+ "ContinueStatement",
585
+ "ReturnStatement",
586
+ "ThrowStatement",
587
+ ].includes(astNode.type)
588
+ ) {
589
+ return true;
590
+ }
591
+ if (astNode.type === "BlockStatement") {
592
+ return statementListFallsThrough(astNode.body || []) === false;
593
+ }
594
+ if (astNode.type === "IfStatement") {
595
+ return (
596
+ statementDefinitelyAbrupt(astNode.consequent) &&
597
+ statementDefinitelyAbrupt(astNode.alternate)
598
+ );
599
+ }
600
+ return false;
601
+ };
602
+
603
+ const statementListFallsThrough = (statements) => {
604
+ const safeStatements = Array.isArray(statements) ? statements : [];
605
+ if (!safeStatements.length) {
606
+ return true;
607
+ }
608
+ return !statementDefinitelyAbrupt(safeStatements[safeStatements.length - 1]);
609
+ };
610
+
611
+ const getSwitchDiscriminantIdentifier = (astNode) => {
612
+ if (!astNode) {
613
+ return undefined;
614
+ }
615
+ if (
616
+ [
617
+ "ParenthesizedExpression",
618
+ "TSAsExpression",
619
+ "TSNonNullExpression",
620
+ "TSSatisfiesExpression",
621
+ "TypeCastExpression",
622
+ ].includes(astNode.type)
623
+ ) {
624
+ return getSwitchDiscriminantIdentifier(astNode.expression);
625
+ }
626
+ return astNode.type === "Identifier" ? astNode.name : undefined;
627
+ };
628
+
629
+ const isStaticPrimitiveResolvedValue = (value) => {
630
+ return (
631
+ ["boolean", "number", "string"].includes(typeof value) || value === null
632
+ );
633
+ };
634
+
635
+ const hasOnlyStaticPrimitiveResolvedValues = (value) => {
636
+ return hasOnlyResolvedValues(value, isStaticPrimitiveResolvedValue);
637
+ };
638
+
639
+ /**
640
+ * Derive narrowed identifier-to-value bindings from a switch-case node by
641
+ * inspecting the switch discriminant and fall-through case chain.
642
+ *
643
+ * @param {object} switchCaseNode The `SwitchCase` AST node currently in scope.
644
+ * @param {object} switchStatementNode The enclosing `SwitchStatement` AST node.
645
+ * @param {Map<string, *>} staticValueByName Map of identifier name to known static value.
646
+ * @param {(node: object) => (string|undefined)} getLiteralStringValue Function to extract a literal string from an AST node.
647
+ * @param {(node: object) => (string|undefined)} getMemberExpressionPropertyName Function to extract the property name from a member-expression node.
648
+ * @returns {Map<string, *>|undefined} Map of discriminant identifier name to narrowed value, or undefined.
649
+ */
650
+ export const deriveStaticNarrowingsFromSwitchCase = (
651
+ switchCaseNode,
652
+ switchStatementNode,
653
+ staticValueByName,
654
+ getLiteralStringValue,
655
+ getMemberExpressionPropertyName,
656
+ ) => {
657
+ if (!switchCaseNode || !switchStatementNode) {
658
+ return undefined;
659
+ }
660
+ const identifierName = getSwitchDiscriminantIdentifier(
661
+ switchStatementNode.discriminant,
662
+ );
663
+ if (!identifierName) {
664
+ return undefined;
665
+ }
666
+ const switchCases = switchStatementNode.cases || [];
667
+ const currentCaseIndex = switchCases.indexOf(switchCaseNode);
668
+ if (currentCaseIndex === -1) {
669
+ return undefined;
670
+ }
671
+ if (switchCaseNode.test === null) {
672
+ const knownDiscriminantValue = staticValueByName.get(identifierName);
673
+ if (!hasOnlyStaticPrimitiveResolvedValues(knownDiscriminantValue)) {
674
+ return undefined;
675
+ }
676
+ const explicitCaseValues = [];
677
+ for (const caseNode of switchCases) {
678
+ if (caseNode.test === null) {
679
+ continue;
680
+ }
681
+ const caseValue = resolveStaticValue(
682
+ caseNode.test,
683
+ staticValueByName,
684
+ getLiteralStringValue,
685
+ getMemberExpressionPropertyName,
686
+ );
687
+ if (!hasOnlyStaticPrimitiveResolvedValues(caseValue)) {
688
+ return undefined;
689
+ }
690
+ explicitCaseValues.push(...toResolvedValueArray(caseValue));
691
+ }
692
+ const explicitCaseKeys = new Set(
693
+ explicitCaseValues.map((value) => resolvedValueKey(value)),
694
+ );
695
+ const remainingValues = toResolvedValueArray(knownDiscriminantValue).filter(
696
+ (value) => !explicitCaseKeys.has(resolvedValueKey(value)),
697
+ );
698
+ const narrowedValue = mergeResolvedValues(...remainingValues);
699
+ return createStaticNarrowingMap(identifierName, narrowedValue);
700
+ }
701
+ let chainStartIndex = currentCaseIndex;
702
+ for (
703
+ let caseIndex = currentCaseIndex - 1;
704
+ caseIndex >= 0 &&
705
+ statementListFallsThrough(switchCases[caseIndex].consequent);
706
+ caseIndex -= 1
707
+ ) {
708
+ chainStartIndex = caseIndex;
709
+ }
710
+ const caseValues = [];
711
+ for (
712
+ let caseIndex = chainStartIndex;
713
+ caseIndex <= currentCaseIndex;
714
+ caseIndex += 1
715
+ ) {
716
+ const caseNode = switchCases[caseIndex];
717
+ if (caseNode.test === null) {
718
+ return undefined;
719
+ }
720
+ const caseValue = resolveStaticValue(
721
+ caseNode.test,
722
+ staticValueByName,
723
+ getLiteralStringValue,
724
+ getMemberExpressionPropertyName,
725
+ );
726
+ if (!hasOnlyStaticPrimitiveResolvedValues(caseValue)) {
727
+ return undefined;
728
+ }
729
+ caseValues.push(caseValue);
730
+ }
731
+ const narrowedValue = mergeResolvedValues(...caseValues);
732
+ return createStaticNarrowingMap(identifierName, narrowedValue);
733
+ };
734
+
735
+ /**
736
+ * Build a name-to-value map for a Babel path by starting from the provided
737
+ * static values and applying narrowing derived from ancestor if-statements
738
+ * and switch-cases.
739
+ *
740
+ * @param {object} path Babel traversal path whose ancestors are inspected.
741
+ * @param {Map<string, *>} staticValueByName Initial map of identifier name to known static value.
742
+ * @param {(node: object) => (string|undefined)} getLiteralStringValue Function to extract a literal string from an AST node.
743
+ * @param {(node: object) => (string|undefined)} getMemberExpressionPropertyName Function to extract the property name from a member-expression node.
744
+ * @returns {Map<string, *>} Scoped name-to-value map including ancestor narrowings.
745
+ */
746
+ export const getScopedStaticValueByName = (
747
+ path,
748
+ staticValueByName,
749
+ getLiteralStringValue,
750
+ getMemberExpressionPropertyName,
751
+ ) => {
752
+ const scopedStaticValueByName = new Map(staticValueByName);
753
+ const ancestorNarrowingContexts = [];
754
+ let currentPath = path;
755
+ while (currentPath?.parentPath) {
756
+ const parentPath = currentPath.parentPath;
757
+ if (parentPath.node?.type === "IfStatement") {
758
+ const branchTaken =
759
+ currentPath.key === "consequent"
760
+ ? true
761
+ : currentPath.key === "alternate"
762
+ ? false
763
+ : undefined;
764
+ if (branchTaken !== undefined) {
765
+ ancestorNarrowingContexts.push({
766
+ branchTaken,
767
+ test: parentPath.node.test,
768
+ type: "if",
769
+ });
770
+ }
771
+ }
772
+ if (
773
+ parentPath.node?.type === "SwitchCase" &&
774
+ parentPath.parentPath?.node?.type === "SwitchStatement"
775
+ ) {
776
+ ancestorNarrowingContexts.push({
777
+ switchCaseNode: parentPath.node,
778
+ switchStatementNode: parentPath.parentPath.node,
779
+ type: "switch-case",
780
+ });
781
+ }
782
+ currentPath = parentPath;
783
+ }
784
+ ancestorNarrowingContexts.reverse().forEach((context) => {
785
+ const narrowedValues =
786
+ context.type === "if"
787
+ ? deriveStaticNarrowingsFromCondition(
788
+ context.test,
789
+ context.branchTaken,
790
+ getLiteralStringValue,
791
+ )
792
+ : deriveStaticNarrowingsFromSwitchCase(
793
+ context.switchCaseNode,
794
+ context.switchStatementNode,
795
+ scopedStaticValueByName,
796
+ getLiteralStringValue,
797
+ getMemberExpressionPropertyName,
798
+ );
799
+ if (!narrowedValues?.size) {
800
+ return;
801
+ }
802
+ narrowedValues.forEach((value, identifierName) => {
803
+ scopedStaticValueByName.set(identifierName, value);
804
+ });
805
+ });
806
+ return scopedStaticValueByName;
807
+ };