@cdxgen/cdxgen 13.5.0 → 13.7.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 (380) hide show
  1. package/README.md +17 -10
  2. package/bin/audit.js +7 -4
  3. package/bin/cdxgen.js +260 -37
  4. package/bin/convert.js +146 -22
  5. package/bin/evinse.js +28 -3
  6. package/bin/repl.js +47 -3
  7. package/bin/sign.js +211 -34
  8. package/bin/tracebom.js +18 -6
  9. package/bin/validate.js +24 -3
  10. package/bin/verify.js +113 -5
  11. package/data/behavior-taxonomy.schema.json +1491 -0
  12. package/data/cyclonedx-2.0-bundled.schema.json +18606 -5528
  13. package/data/cyclonedx-2.0-cryptography-defs.schema.json +857 -0
  14. package/data/license-aliases.json +24 -2
  15. package/data/pqc-migration.json +239 -0
  16. package/data/remediations.json +176 -0
  17. package/data/rules/ai-bom.yaml +1 -1
  18. package/data/rules/brotli-decoder.yaml +107 -0
  19. package/data/rules/cbom-security.yaml +4 -3
  20. package/data/rules/package-integrity.yaml +28 -0
  21. package/data/rules/vscode-extensions.yaml +75 -0
  22. package/data/spdx-license-list.json +121 -7
  23. package/data/spdx-licenses.json +69 -0
  24. package/data/spdx.schema.json +845 -2
  25. package/lib/audit/index.js +25 -3
  26. package/lib/cli/bomAssembly.js +172 -4
  27. package/lib/cli/cliOptions.js +121 -17
  28. package/lib/cli/index.js +720 -902
  29. package/lib/cli/jsBom.js +156 -64
  30. package/lib/cli/jvmBom.js +602 -86
  31. package/lib/cli/managedBom.js +161 -19
  32. package/lib/cli/nativeBom.js +52 -5
  33. package/lib/core/boundedFile.js +344 -0
  34. package/lib/core/brotliProbe.js +182 -0
  35. package/lib/core/env.js +34 -0
  36. package/lib/core/fs.js +138 -3
  37. package/lib/core/globPatterns.js +218 -0
  38. package/lib/core/httpClient.js +98 -1
  39. package/lib/core/lockPaths.js +38 -0
  40. package/lib/core/paths.js +24 -1
  41. package/lib/core/processTree.js +100 -8
  42. package/lib/core/projectConfig.js +332 -25
  43. package/lib/core/toolRegistry.js +184 -0
  44. package/lib/ecosystems/cppEvidence.js +263 -106
  45. package/lib/ecosystems/cppIncludeResolver.js +16 -5
  46. package/lib/ecosystems/denoutils.js +2 -2
  47. package/lib/ecosystems/ecosystems.js +25 -10
  48. package/lib/ecosystems/gemHostProbe.js +301 -0
  49. package/lib/ecosystems/golem.js +3 -8
  50. package/lib/ecosystems/gradleutils.js +1909 -229
  51. package/lib/ecosystems/jsEvidence.js +90 -38
  52. package/lib/ecosystems/kosi.js +3 -5
  53. package/lib/ecosystems/npmVersionResolution.js +376 -0
  54. package/lib/ecosystems/parsers-bazel.js +107 -6
  55. package/lib/ecosystems/parsers-js.js +505 -22
  56. package/lib/ecosystems/parsers-misc.js +209 -20
  57. package/lib/ecosystems/parsers-python.js +178 -30
  58. package/lib/ecosystems/parsers-rust.js +117 -15
  59. package/lib/ecosystems/pythonutils.js +128 -2
  60. package/lib/ecosystems/remote/huggingface.js +22 -0
  61. package/lib/ecosystems/rubyutils.js +538 -31
  62. package/lib/ecosystems/rusi.js +2 -4
  63. package/lib/ecosystems/scalacliutils.js +2 -0
  64. package/lib/ecosystems/scalasem.js +798 -152
  65. package/lib/ecosystems/vendoredCode.js +237 -3
  66. package/lib/ecosystems/venvProbe.js +360 -0
  67. package/lib/evinser/evinser.js +536 -71
  68. package/lib/evinser/scalasem.js +5 -1
  69. package/lib/helpers/agenticToolutils.js +525 -94
  70. package/lib/helpers/bomSigner.js +43 -9
  71. package/lib/helpers/jssSigner.js +1276 -0
  72. package/lib/helpers/vsixutils.js +1574 -315
  73. package/lib/inventory/agentBlueprint.js +193 -0
  74. package/lib/inventory/agentToolNames.js +145 -0
  75. package/lib/inventory/aiCollector.js +153 -7
  76. package/lib/inventory/aiInventory.js +44 -8
  77. package/lib/inventory/aiProviders.js +324 -0
  78. package/lib/inventory/atomUtils.js +77 -0
  79. package/lib/inventory/bomUtils.js +8 -1
  80. package/lib/inventory/brotliDecoder.js +142 -0
  81. package/lib/inventory/buildToolRateLimit.js +1 -1
  82. package/lib/inventory/cbomutils.js +56 -7
  83. package/lib/inventory/ciParsers/githubActionsLock.js +821 -0
  84. package/lib/inventory/citations.js +31 -2
  85. package/lib/inventory/communityAiConfigParser.js +978 -80
  86. package/lib/inventory/cyclonedx20.js +152 -0
  87. package/lib/inventory/cyclonedx20Common.js +286 -0
  88. package/lib/inventory/cyclonedx20Derived.js +159 -0
  89. package/lib/inventory/cyclonedx20Parties.js +552 -0
  90. package/lib/inventory/cyclonedx20Read.js +768 -0
  91. package/lib/inventory/cyclonedx20ReadCommon.js +374 -0
  92. package/lib/inventory/cyclonedx20ReadComponents.js +692 -0
  93. package/lib/inventory/cyclonedx20ReadContext.js +380 -0
  94. package/lib/inventory/cyclonedx20ReadEvidence.js +466 -0
  95. package/lib/inventory/cyclonedx20ReadSections.js +599 -0
  96. package/lib/inventory/cyclonedx20Render.js +766 -0
  97. package/lib/inventory/cyclonedx20RenderComponents.js +716 -0
  98. package/lib/inventory/cyclonedx20RenderDefinitions.js +405 -0
  99. package/lib/inventory/cyclonedx20RenderEvidence.js +726 -0
  100. package/lib/inventory/cyclonedx20RenderHardware.js +203 -0
  101. package/lib/inventory/cyclonedx20RenderPatents.js +174 -0
  102. package/lib/inventory/cyclonedx20RenderRefIds.js +314 -0
  103. package/lib/inventory/cyclonedx20RenderSections.js +499 -0
  104. package/lib/inventory/cyclonedx20Tables.js +594 -0
  105. package/lib/inventory/deps.js +141 -13
  106. package/lib/inventory/dosai.js +375 -6
  107. package/lib/inventory/dosaiParsers.js +3 -6
  108. package/lib/inventory/dotnetRuntime.js +367 -0
  109. package/lib/inventory/ecosystemFormulationParsers.js +979 -0
  110. package/lib/inventory/envcontext.js +436 -48
  111. package/lib/inventory/evidenceUtils.js +13 -1
  112. package/lib/inventory/fetchBatch.js +1 -1
  113. package/lib/inventory/formulationParsers.js +124 -14
  114. package/lib/inventory/gtfobins.js +13 -0
  115. package/lib/inventory/hbom.js +45 -6
  116. package/lib/inventory/hbomLoader.js +166 -0
  117. package/lib/inventory/hostRuntimeProbe.js +686 -0
  118. package/lib/inventory/jvmLocalRepos.js +9 -2
  119. package/lib/inventory/jvmToolEnv.js +29 -0
  120. package/lib/inventory/licenseEnhancer.js +12 -0
  121. package/lib/inventory/mavenCentralMirror.js +534 -0
  122. package/lib/inventory/mcpConfigParser.js +5 -0
  123. package/lib/inventory/nodeBuildInfo.js +218 -0
  124. package/lib/inventory/nodeHostProbe.js +202 -0
  125. package/lib/inventory/occurrenceKey.js +90 -0
  126. package/lib/inventory/osPackageResolver.js +182 -0
  127. package/lib/inventory/phpBuildInfo.js +10 -59
  128. package/lib/inventory/phpHostProbe.js +32 -488
  129. package/lib/inventory/pqcMigration.js +426 -0
  130. package/lib/inventory/rubyBuildInfo.js +972 -0
  131. package/lib/inventory/rubyHostProbe.js +218 -0
  132. package/lib/inventory/rustFormulationParser.js +21 -10
  133. package/lib/inventory/scalaCoords.js +4 -3
  134. package/lib/inventory/scalaDedupe.js +440 -0
  135. package/lib/inventory/source.js +114 -8
  136. package/lib/managers/binary.js +337 -3
  137. package/lib/managers/docker.js +79 -0
  138. package/lib/parsers/huggingfaceManifest.js +9 -1
  139. package/lib/parsers/huggingfaceUtils.js +18 -0
  140. package/lib/parsers/kiroPermissions.js +166 -0
  141. package/lib/parsers/largeJson.js +28 -11
  142. package/lib/parsers/vscodeExtensionId.js +183 -0
  143. package/lib/server/server.js +48 -35
  144. package/lib/stages/postgen/postgen.js +41 -1
  145. package/lib/stages/postgen/ruleEngine.js +13 -5
  146. package/lib/stages/postgen/specVersionCompat.js +76 -0
  147. package/lib/stages/pregen/envAudit.js +1 -0
  148. package/lib/stages/pregen/pregen.js +114 -57
  149. package/lib/validator/bomValidator.js +14 -2
  150. package/lib/validator/complianceEngine.js +30 -3
  151. package/lib/validator/complianceRules.js +1416 -4
  152. package/lib/validator/generated/validate-1.6.mjs +1 -1
  153. package/lib/validator/generated/validate-1.7.mjs +1 -1
  154. package/lib/validator/generated/validate-2.0.mjs +57554 -13851
  155. package/lib/validator/index.js +49 -8
  156. package/lib/validator/reporters/json.js +6 -0
  157. package/package.json +11 -10
  158. package/types/bin/repl.d.ts.map +1 -1
  159. package/types/lib/audit/index.d.ts +6 -2
  160. package/types/lib/audit/index.d.ts.map +1 -1
  161. package/types/lib/cli/bomAssembly.d.ts +29 -1
  162. package/types/lib/cli/bomAssembly.d.ts.map +1 -1
  163. package/types/lib/cli/cliOptions.d.ts +6 -0
  164. package/types/lib/cli/cliOptions.d.ts.map +1 -1
  165. package/types/lib/cli/index.d.ts.map +1 -1
  166. package/types/lib/cli/jsBom.d.ts +3 -18
  167. package/types/lib/cli/jsBom.d.ts.map +1 -1
  168. package/types/lib/cli/jvmBom.d.ts +15 -0
  169. package/types/lib/cli/jvmBom.d.ts.map +1 -1
  170. package/types/lib/cli/managedBom.d.ts.map +1 -1
  171. package/types/lib/cli/nativeBom.d.ts.map +1 -1
  172. package/types/lib/core/boundedFile.d.ts +100 -0
  173. package/types/lib/core/boundedFile.d.ts.map +1 -0
  174. package/types/lib/core/brotliProbe.d.ts +37 -0
  175. package/types/lib/core/brotliProbe.d.ts.map +1 -0
  176. package/types/lib/core/env.d.ts +14 -0
  177. package/types/lib/core/env.d.ts.map +1 -1
  178. package/types/lib/core/fs.d.ts +4 -0
  179. package/types/lib/core/fs.d.ts.map +1 -1
  180. package/types/lib/core/globPatterns.d.ts +70 -0
  181. package/types/lib/core/globPatterns.d.ts.map +1 -0
  182. package/types/lib/core/httpClient.d.ts +24 -0
  183. package/types/lib/core/httpClient.d.ts.map +1 -1
  184. package/types/lib/core/lockPaths.d.ts +19 -0
  185. package/types/lib/core/lockPaths.d.ts.map +1 -0
  186. package/types/lib/core/paths.d.ts +9 -0
  187. package/types/lib/core/paths.d.ts.map +1 -1
  188. package/types/lib/core/processTree.d.ts +17 -4
  189. package/types/lib/core/processTree.d.ts.map +1 -1
  190. package/types/lib/core/projectConfig.d.ts +47 -8
  191. package/types/lib/core/projectConfig.d.ts.map +1 -1
  192. package/types/lib/core/toolRegistry.d.ts +36 -0
  193. package/types/lib/core/toolRegistry.d.ts.map +1 -0
  194. package/types/lib/ecosystems/cppEvidence.d.ts +40 -13
  195. package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -1
  196. package/types/lib/ecosystems/cppIncludeResolver.d.ts +2 -1
  197. package/types/lib/ecosystems/cppIncludeResolver.d.ts.map +1 -1
  198. package/types/lib/ecosystems/ecosystems.d.ts.map +1 -1
  199. package/types/lib/ecosystems/gemHostProbe.d.ts +28 -0
  200. package/types/lib/ecosystems/gemHostProbe.d.ts.map +1 -0
  201. package/types/lib/ecosystems/golem.d.ts.map +1 -1
  202. package/types/lib/ecosystems/gradleutils.d.ts +294 -20
  203. package/types/lib/ecosystems/gradleutils.d.ts.map +1 -1
  204. package/types/lib/ecosystems/jsEvidence.d.ts +14 -1
  205. package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -1
  206. package/types/lib/ecosystems/kosi.d.ts.map +1 -1
  207. package/types/lib/ecosystems/npmVersionResolution.d.ts +119 -0
  208. package/types/lib/ecosystems/npmVersionResolution.d.ts.map +1 -0
  209. package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -1
  210. package/types/lib/ecosystems/parsers-js.d.ts +17 -20
  211. package/types/lib/ecosystems/parsers-js.d.ts.map +1 -1
  212. package/types/lib/ecosystems/parsers-misc.d.ts +19 -0
  213. package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -1
  214. package/types/lib/ecosystems/parsers-python.d.ts +10 -0
  215. package/types/lib/ecosystems/parsers-python.d.ts.map +1 -1
  216. package/types/lib/ecosystems/parsers-rust.d.ts.map +1 -1
  217. package/types/lib/ecosystems/pythonutils.d.ts +19 -1
  218. package/types/lib/ecosystems/pythonutils.d.ts.map +1 -1
  219. package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -1
  220. package/types/lib/ecosystems/rubyutils.d.ts +144 -12
  221. package/types/lib/ecosystems/rubyutils.d.ts.map +1 -1
  222. package/types/lib/ecosystems/rusi.d.ts.map +1 -1
  223. package/types/lib/ecosystems/scalacliutils.d.ts.map +1 -1
  224. package/types/lib/ecosystems/scalasem.d.ts +58 -16
  225. package/types/lib/ecosystems/scalasem.d.ts.map +1 -1
  226. package/types/lib/ecosystems/vendoredCode.d.ts +26 -0
  227. package/types/lib/ecosystems/vendoredCode.d.ts.map +1 -1
  228. package/types/lib/ecosystems/venvProbe.d.ts +40 -0
  229. package/types/lib/ecosystems/venvProbe.d.ts.map +1 -0
  230. package/types/lib/evinser/evinser.d.ts +120 -13
  231. package/types/lib/evinser/evinser.d.ts.map +1 -1
  232. package/types/lib/evinser/scalasem.d.ts.map +1 -1
  233. package/types/lib/helpers/agenticToolutils.d.ts +53 -19
  234. package/types/lib/helpers/agenticToolutils.d.ts.map +1 -1
  235. package/types/lib/helpers/bomSigner.d.ts +20 -3
  236. package/types/lib/helpers/bomSigner.d.ts.map +1 -1
  237. package/types/lib/helpers/jssSigner.d.ts +288 -0
  238. package/types/lib/helpers/jssSigner.d.ts.map +1 -0
  239. package/types/lib/helpers/vsixutils.d.ts +303 -19
  240. package/types/lib/helpers/vsixutils.d.ts.map +1 -1
  241. package/types/lib/inventory/agentBlueprint.d.ts +70 -0
  242. package/types/lib/inventory/agentBlueprint.d.ts.map +1 -0
  243. package/types/lib/inventory/agentToolNames.d.ts +51 -0
  244. package/types/lib/inventory/agentToolNames.d.ts.map +1 -0
  245. package/types/lib/inventory/aiCollector.d.ts.map +1 -1
  246. package/types/lib/inventory/aiInventory.d.ts.map +1 -1
  247. package/types/lib/inventory/aiProviders.d.ts +85 -0
  248. package/types/lib/inventory/aiProviders.d.ts.map +1 -0
  249. package/types/lib/inventory/atomUtils.d.ts +19 -0
  250. package/types/lib/inventory/atomUtils.d.ts.map +1 -1
  251. package/types/lib/inventory/bomUtils.d.ts.map +1 -1
  252. package/types/lib/inventory/brotliDecoder.d.ts +58 -0
  253. package/types/lib/inventory/brotliDecoder.d.ts.map +1 -0
  254. package/types/lib/inventory/cbomutils.d.ts +17 -0
  255. package/types/lib/inventory/cbomutils.d.ts.map +1 -1
  256. package/types/lib/inventory/ciParsers/githubActionsLock.d.ts +101 -0
  257. package/types/lib/inventory/ciParsers/githubActionsLock.d.ts.map +1 -0
  258. package/types/lib/inventory/citations.d.ts +5 -0
  259. package/types/lib/inventory/citations.d.ts.map +1 -1
  260. package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -1
  261. package/types/lib/inventory/cyclonedx20.d.ts +99 -0
  262. package/types/lib/inventory/cyclonedx20.d.ts.map +1 -0
  263. package/types/lib/inventory/cyclonedx20Common.d.ts +102 -0
  264. package/types/lib/inventory/cyclonedx20Common.d.ts.map +1 -0
  265. package/types/lib/inventory/cyclonedx20Derived.d.ts +74 -0
  266. package/types/lib/inventory/cyclonedx20Derived.d.ts.map +1 -0
  267. package/types/lib/inventory/cyclonedx20Parties.d.ts +91 -0
  268. package/types/lib/inventory/cyclonedx20Parties.d.ts.map +1 -0
  269. package/types/lib/inventory/cyclonedx20Read.d.ts +51 -0
  270. package/types/lib/inventory/cyclonedx20Read.d.ts.map +1 -0
  271. package/types/lib/inventory/cyclonedx20ReadCommon.d.ts +69 -0
  272. package/types/lib/inventory/cyclonedx20ReadCommon.d.ts.map +1 -0
  273. package/types/lib/inventory/cyclonedx20ReadComponents.d.ts +77 -0
  274. package/types/lib/inventory/cyclonedx20ReadComponents.d.ts.map +1 -0
  275. package/types/lib/inventory/cyclonedx20ReadContext.d.ts +118 -0
  276. package/types/lib/inventory/cyclonedx20ReadContext.d.ts.map +1 -0
  277. package/types/lib/inventory/cyclonedx20ReadEvidence.d.ts +40 -0
  278. package/types/lib/inventory/cyclonedx20ReadEvidence.d.ts.map +1 -0
  279. package/types/lib/inventory/cyclonedx20ReadSections.d.ts +45 -0
  280. package/types/lib/inventory/cyclonedx20ReadSections.d.ts.map +1 -0
  281. package/types/lib/inventory/cyclonedx20Render.d.ts +53 -0
  282. package/types/lib/inventory/cyclonedx20Render.d.ts.map +1 -0
  283. package/types/lib/inventory/cyclonedx20RenderComponents.d.ts +73 -0
  284. package/types/lib/inventory/cyclonedx20RenderComponents.d.ts.map +1 -0
  285. package/types/lib/inventory/cyclonedx20RenderDefinitions.d.ts +29 -0
  286. package/types/lib/inventory/cyclonedx20RenderDefinitions.d.ts.map +1 -0
  287. package/types/lib/inventory/cyclonedx20RenderEvidence.d.ts +110 -0
  288. package/types/lib/inventory/cyclonedx20RenderEvidence.d.ts.map +1 -0
  289. package/types/lib/inventory/cyclonedx20RenderHardware.d.ts +42 -0
  290. package/types/lib/inventory/cyclonedx20RenderHardware.d.ts.map +1 -0
  291. package/types/lib/inventory/cyclonedx20RenderPatents.d.ts +26 -0
  292. package/types/lib/inventory/cyclonedx20RenderPatents.d.ts.map +1 -0
  293. package/types/lib/inventory/cyclonedx20RenderRefIds.d.ts +55 -0
  294. package/types/lib/inventory/cyclonedx20RenderRefIds.d.ts.map +1 -0
  295. package/types/lib/inventory/cyclonedx20RenderSections.d.ts +45 -0
  296. package/types/lib/inventory/cyclonedx20RenderSections.d.ts.map +1 -0
  297. package/types/lib/inventory/cyclonedx20Tables.d.ts +134 -0
  298. package/types/lib/inventory/cyclonedx20Tables.d.ts.map +1 -0
  299. package/types/lib/inventory/deps.d.ts +35 -2
  300. package/types/lib/inventory/deps.d.ts.map +1 -1
  301. package/types/lib/inventory/dosai.d.ts +36 -1
  302. package/types/lib/inventory/dosai.d.ts.map +1 -1
  303. package/types/lib/inventory/dosaiParsers.d.ts.map +1 -1
  304. package/types/lib/inventory/dotnetRuntime.d.ts +91 -0
  305. package/types/lib/inventory/dotnetRuntime.d.ts.map +1 -0
  306. package/types/lib/inventory/ecosystemFormulationParsers.d.ts +73 -0
  307. package/types/lib/inventory/ecosystemFormulationParsers.d.ts.map +1 -0
  308. package/types/lib/inventory/envcontext.d.ts +74 -12
  309. package/types/lib/inventory/envcontext.d.ts.map +1 -1
  310. package/types/lib/inventory/evidenceUtils.d.ts.map +1 -1
  311. package/types/lib/inventory/formulationParsers.d.ts.map +1 -1
  312. package/types/lib/inventory/gtfobins.d.ts.map +1 -1
  313. package/types/lib/inventory/hbom.d.ts +11 -0
  314. package/types/lib/inventory/hbom.d.ts.map +1 -1
  315. package/types/lib/inventory/hbomLoader.d.ts +54 -0
  316. package/types/lib/inventory/hbomLoader.d.ts.map +1 -1
  317. package/types/lib/inventory/hostRuntimeProbe.d.ts +44 -0
  318. package/types/lib/inventory/hostRuntimeProbe.d.ts.map +1 -0
  319. package/types/lib/inventory/jvmLocalRepos.d.ts +5 -1
  320. package/types/lib/inventory/jvmLocalRepos.d.ts.map +1 -1
  321. package/types/lib/inventory/jvmToolEnv.d.ts +12 -0
  322. package/types/lib/inventory/jvmToolEnv.d.ts.map +1 -1
  323. package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -1
  324. package/types/lib/inventory/mavenCentralMirror.d.ts +170 -0
  325. package/types/lib/inventory/mavenCentralMirror.d.ts.map +1 -0
  326. package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -1
  327. package/types/lib/inventory/nodeBuildInfo.d.ts +95 -0
  328. package/types/lib/inventory/nodeBuildInfo.d.ts.map +1 -0
  329. package/types/lib/inventory/nodeHostProbe.d.ts +15 -0
  330. package/types/lib/inventory/nodeHostProbe.d.ts.map +1 -0
  331. package/types/lib/inventory/occurrenceKey.d.ts +52 -0
  332. package/types/lib/inventory/occurrenceKey.d.ts.map +1 -0
  333. package/types/lib/inventory/osPackageResolver.d.ts +38 -0
  334. package/types/lib/inventory/osPackageResolver.d.ts.map +1 -1
  335. package/types/lib/inventory/phpBuildInfo.d.ts.map +1 -1
  336. package/types/lib/inventory/phpHostProbe.d.ts.map +1 -1
  337. package/types/lib/inventory/pqcMigration.d.ts +84 -0
  338. package/types/lib/inventory/pqcMigration.d.ts.map +1 -0
  339. package/types/lib/inventory/rubyBuildInfo.d.ts +271 -0
  340. package/types/lib/inventory/rubyBuildInfo.d.ts.map +1 -0
  341. package/types/lib/inventory/rubyHostProbe.d.ts +47 -0
  342. package/types/lib/inventory/rubyHostProbe.d.ts.map +1 -0
  343. package/types/lib/inventory/rustFormulationParser.d.ts +7 -2
  344. package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -1
  345. package/types/lib/inventory/scalaCoords.d.ts.map +1 -1
  346. package/types/lib/inventory/scalaDedupe.d.ts +43 -0
  347. package/types/lib/inventory/scalaDedupe.d.ts.map +1 -0
  348. package/types/lib/inventory/source.d.ts +25 -0
  349. package/types/lib/inventory/source.d.ts.map +1 -1
  350. package/types/lib/managers/binary.d.ts.map +1 -1
  351. package/types/lib/managers/docker.d.ts +12 -0
  352. package/types/lib/managers/docker.d.ts.map +1 -1
  353. package/types/lib/parsers/huggingfaceManifest.d.ts +10 -1
  354. package/types/lib/parsers/huggingfaceManifest.d.ts.map +1 -1
  355. package/types/lib/parsers/huggingfaceUtils.d.ts +12 -0
  356. package/types/lib/parsers/huggingfaceUtils.d.ts.map +1 -1
  357. package/types/lib/parsers/kiroPermissions.d.ts +62 -0
  358. package/types/lib/parsers/kiroPermissions.d.ts.map +1 -0
  359. package/types/lib/parsers/largeJson.d.ts +4 -3
  360. package/types/lib/parsers/largeJson.d.ts.map +1 -1
  361. package/types/lib/parsers/vscodeExtensionId.d.ts +48 -0
  362. package/types/lib/parsers/vscodeExtensionId.d.ts.map +1 -0
  363. package/types/lib/server/server.d.ts.map +1 -1
  364. package/types/lib/stages/postgen/postgen.d.ts +7 -0
  365. package/types/lib/stages/postgen/postgen.d.ts.map +1 -1
  366. package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -1
  367. package/types/lib/stages/postgen/specVersionCompat.d.ts +25 -0
  368. package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -1
  369. package/types/lib/stages/pregen/envAudit.d.ts.map +1 -1
  370. package/types/lib/stages/pregen/pregen.d.ts +12 -8
  371. package/types/lib/stages/pregen/pregen.d.ts.map +1 -1
  372. package/types/lib/validator/bomValidator.d.ts +5 -1
  373. package/types/lib/validator/bomValidator.d.ts.map +1 -1
  374. package/types/lib/validator/complianceEngine.d.ts +4 -4
  375. package/types/lib/validator/complianceEngine.d.ts.map +1 -1
  376. package/types/lib/validator/complianceRules.d.ts +14 -2
  377. package/types/lib/validator/complianceRules.d.ts.map +1 -1
  378. package/types/lib/validator/index.d.ts +10 -0
  379. package/types/lib/validator/index.d.ts.map +1 -1
  380. package/types/lib/validator/reporters/json.d.ts.map +1 -1
@@ -0,0 +1,99 @@
1
+ /**
2
+ * CycloneDX 2.0 rendering and reading.
3
+ *
4
+ * cdxgen assembles every BOM in the CycloneDX 1.x shape and converts to the
5
+ * requested spec version at the end of the pipeline (see
6
+ * lib/stages/postgen/specVersionCompat.js). The 2.0 draft is a structural
7
+ * rewrite rather than an additive change, so the conversion lives here, as two
8
+ * pure functions plus small helpers, instead of inside the compat walker:
9
+ *
10
+ * - `renderCycloneDx20(internalBom, context)` turns the 1.x-shaped internal
11
+ * model into a 2.0 document. It never mutates its input, and its output
12
+ * depends only on the model and the optional context (the cdx-hbom
13
+ * hardware mapper, see hbomLoader.js: hardwareRenderContext).
14
+ * `renderCycloneDx20WithReport(internalBom, context)` does the same and
15
+ * also returns the counts of everything the render could not carry.
16
+ * - `readCycloneDx20(bom20)` turns a 2.0 document into the internal 1.x-shaped
17
+ * model, reporting everything it could not carry in `losses`.
18
+ * - `loadBomForAnalysis(bomJson)` is the single entry point every BOM reader
19
+ * uses; it returns the document as is for 1.x and calls readCycloneDx20 for
20
+ * 2.0, so no reader learns the 2.0 shape.
21
+ * - `getInternalBom(bomNSData)` and `refreshRenderedBom(bomNSData, options)`
22
+ * are the generation-side half: postProcess keeps the 1.x model on
23
+ * `bomNSData.internalBomJson` at 2.0, and the writer re-renders once after
24
+ * the last mutation.
25
+ *
26
+ * Every field name below is quoted from the pinned draft schema
27
+ * (data/cyclonedx-2.0-bundled.schema.json, CycloneDX/specification 2.0-dev at
28
+ * ea8c3605829d1da13339a0790b6da73548e42a6b); citations give the `$defs` path.
29
+ */
30
+ export { readCycloneDx20 } from "./cyclonedx20Read.js";
31
+ export { renderCycloneDx20, renderCycloneDx20WithReport, } from "./cyclonedx20Render.js";
32
+ export { CDX20_INTERNAL_SECTIONS_KEY, CDXGEN_PARTY_REF_ID, DEPENDENCY_TRACK_CDX20_ERROR, } from "./cyclonedx20Tables.js";
33
+ /**
34
+ * Load any CycloneDX BOM for analysis: the document as is for 1.x, the
35
+ * internal 1.x-shaped model for 2.0.
36
+ *
37
+ * A document whose specVersion is 2.0 or later, or which has a specFormat, is
38
+ * read as 2.0, and the reader reports stray 1.x members such as
39
+ * `components` as losses. A model the 2.0 reader or the 2.0 compatibility
40
+ * pass produced carries the internal model mark (markInternalModel) and is
41
+ * returned as is; cdxgen hands that model to the evidence analysis in memory
42
+ * (evinse's `inputBomJson`), because the mark does not survive JSON. The
43
+ * internal sections key is never trusted on a 1.x document: the returned
44
+ * copy leaves it out, so it cannot reach a 2.0 render.
45
+ *
46
+ * @param {object} bomJson Parsed CycloneDX BOM
47
+ * @returns {{internalBom: object, specVersion: string, losses: Array<{pointer: string, reason: string}>}}
48
+ * @throws {Error} With a short message when the 2.0 reader fails on the
49
+ * document
50
+ */
51
+ export declare function loadBomForAnalysis(bomJson: object): {
52
+ internalBom: object;
53
+ specVersion: string;
54
+ losses: Array<{
55
+ pointer: string;
56
+ reason: string;
57
+ }>;
58
+ };
59
+ /**
60
+ * The one-line notice a reader prints when loading a 2.0 document lost
61
+ * data: the number of losses, with the details left to thoughtLog.
62
+ *
63
+ * @param {Array<{pointer: string, reason: string}>} losses Reader losses
64
+ * @returns {string} The notice
65
+ */
66
+ export declare function formatReadLossNotice(losses: Array<{
67
+ pointer: string;
68
+ reason: string;
69
+ }>): string;
70
+ /**
71
+ * Return the 1.x-shaped model of a generation run. At 1.x the rendered BOM is
72
+ * the internal model, so this always yields something readers can walk.
73
+ *
74
+ * @param {{bomJson?: object, internalBomJson?: object}} bomNSData
75
+ * @returns {object} The 1.x-shaped BOM
76
+ */
77
+ export declare function getInternalBom(bomNSData: {
78
+ bomJson?: object;
79
+ internalBomJson?: object;
80
+ }): object;
81
+ /**
82
+ * Re-render the 2.0 document after a post-postProcess mutation of the
83
+ * internal model, with the render context postProcess used
84
+ * (`bomNSData.renderContext`). A no-op at 1.x, which keeps those versions
85
+ * byte-identical.
86
+ *
87
+ * @param {{bomJson?: object, internalBomJson?: object, renderContext?: object}} bomNSData
88
+ * @param {object} options CLI options carrying `specVersion`
89
+ * @returns {{bomJson?: object, internalBomJson?: object}} The same bomNSData
90
+ */
91
+ export declare function refreshRenderedBom(bomNSData: {
92
+ bomJson?: object;
93
+ internalBomJson?: object;
94
+ renderContext?: object;
95
+ }, options: object): {
96
+ bomJson?: object;
97
+ internalBomJson?: object;
98
+ };
99
+ //# sourceMappingURL=cyclonedx20.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclonedx20.d.ts","sourceRoot":"","sources":["../../../lib/inventory/cyclonedx20.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAUH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAL/B,MAK+B,GAJ7B;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC,CAuCxG;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAHhC,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAGP,GAF9B,MAAM,CAKlB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAH7B;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAGd,GAF3B,MAAM,CAIlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAJjC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAIlC,EAAE,OAAO,EAH1C,MAG0C,GAFxC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAC,CAgBxD"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Small shared helpers for the CycloneDX 2.0 renderer and reader: type
3
+ * guards, cloning, render counters and the environment-variable shape change.
4
+ */
5
+ /** True for a plain object (not null, not an array). */
6
+ export declare const isObjectRecord: (value: any) => boolean;
7
+ /** True for a string with at least one character. */
8
+ export declare const isNonEmptyString: (value: any) => boolean;
9
+ /** structuredClone that passes `undefined` through. */
10
+ export declare const clone: (value: any) => any;
11
+ export declare const isBomLink: (value: any) => boolean;
12
+ /**
13
+ * A fresh, empty set of render counters.
14
+ *
15
+ * @param {object} [shadows] 2.0 originals kept by readCycloneDx20 (see
16
+ * takeShadow)
17
+ * @param {{toolRefId?: string, timestamp?: string}} [claims] What identity
18
+ * claims are attributed with (see identityClaimContext)
19
+ * @returns {object} Render counters
20
+ */
21
+ export declare function createRenderStats(shadows?: object, claims?: {
22
+ toolRefId?: string;
23
+ timestamp?: string;
24
+ }): object;
25
+ /**
26
+ * The key a 1.x value is shadowed under: the SHA-256 of its JSON. The
27
+ * reader and the renderer serialize the same object the same way, so an
28
+ * unchanged value finds its 2.0 original again.
29
+ *
30
+ * @param {*} value 1.x value
31
+ * @returns {string} Hex digest
32
+ */
33
+ export declare function shadowKey(value: any): string;
34
+ /**
35
+ * The 2.0 original readCycloneDx20 kept for this unchanged 1.x value, as a
36
+ * fresh clone, or undefined. Identical 1.x values kept for several originals
37
+ * get them back in document order. Never mutates the stored shadows.
38
+ *
39
+ * @param {object} stats Render counters from createRenderStats
40
+ * @param {string} kind Shadow namespace (component, metadata, …)
41
+ * @param {*} value 1.x value about to be rendered
42
+ * @returns {*} The 2.0 original or undefined
43
+ */
44
+ export declare function takeShadow(stats: object, kind: string, value: any): any;
45
+ /**
46
+ * The single 2.0 original readCycloneDx20 kept for this unchanged 1.x value,
47
+ * as a fresh clone, or undefined. Unlike takeShadow nothing is consumed: the
48
+ * reader registers a key here only when every entry it read under that key
49
+ * had the same original, so the lookup does not depend on render order.
50
+ *
51
+ * @param {object} stats Render counters from createRenderStats
52
+ * @param {string} kind Shadow namespace (identity)
53
+ * @param {*} value 1.x value about to be rendered
54
+ * @returns {*} The 2.0 original or undefined
55
+ */
56
+ export declare function peekShadow(stats: object, kind: string, value: any): any;
57
+ /** Count one dropped or rewritten value under a stable label. */
58
+ export declare function countDrop(stats: any, label: any, count?: number): void;
59
+ /**
60
+ * Count one value the render rewrote without losing data (a duplicate refId
61
+ * turned into a reference, a retargeted annotation subject).
62
+ */
63
+ export declare function countRewrite(stats: any, label: any, count?: number): void;
64
+ /**
65
+ * Count a 1.x JSF `signature` the render leaves out: it signs the 1.x
66
+ * serialization, so it cannot verify over the re-rendered 2.0 document, and
67
+ * 2.0 `signatures` hold JSS signatures
68
+ * (#/$defs/cyclonedx-common-2.0/$defs/signatures).
69
+ */
70
+ export declare function countSignatureDrop(stats: any, path: any): void;
71
+ /** Count every defined key of `source` that `handled` does not list. */
72
+ export declare function countUnmapped(stats: any, prefix: any, source: any, handled: any): void;
73
+ /** Clone the listed fields of `source` that are defined onto `target`. */
74
+ export declare function copyDefined(target: any, source: any, fields: any): void;
75
+ /** Remove duplicate entries (by JSON value) for `uniqueItems` arrays. */
76
+ export declare function uniqueByValue(values: any): any[];
77
+ /** Split a 1.x `author` string the way specVersionCompat does. */
78
+ export declare function authorStringToNames(authorValue: any): string[];
79
+ /** A 1.x scalar-or-array identifier field as a list of strings. */
80
+ export declare function identifierValues(value: any): any[];
81
+ /** Assign `value` to `out[key]` unless it is undefined. */
82
+ export declare function setDefined(out: any, key: any, value: any): void;
83
+ /**
84
+ * Convert a 1.x `environmentVars` array of {name, value} entries into the 2.0
85
+ * map of names to values
86
+ * (#/$defs/cyclonedx-formulation-2.0/$defs/environmentVars). Reverse for read.
87
+ * Entries the map cannot hold are counted when `stats` is given.
88
+ */
89
+ export declare function convertEnvironmentVars(value: any, stats: any): any;
90
+ /** Turn a 2.0 environmentVars map back into the 1.x {name, value} array. */
91
+ export declare function reverseEnvironmentVars(value: any): any;
92
+ /** Every refId string declared anywhere under the given roots. */
93
+ export declare function collectDeclaredRefIds(roots: any): Set<any>;
94
+ /**
95
+ * True when any `party` member (a refId string or a partyReference) or any
96
+ * `ref` member below `node` names `refId`. Restored 2.0 originals reference
97
+ * a derived party (see derivedPartyDeclarations) without passing through the
98
+ * converters, so its declaration follows the rendered document rather than a
99
+ * render flag.
100
+ */
101
+ export declare function referencesParty(node: any, refId: any): any;
102
+ //# sourceMappingURL=cyclonedx20Common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclonedx20Common.d.ts","sourceRoot":"","sources":["../../../lib/inventory/cyclonedx20Common.js"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wDAAwD;AACxD,eAAO,MAAM,cAAc,yBAC2C,CAAC;AAEvE,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,yBACkB,CAAC;AAEhD,uDAAuD;AACvD,eAAO,MAAM,KAAK,qBACwC,CAAC;AAI3D,eAAO,MAAM,SAAS,yBACqC,CAAC;AAE5D;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,AANtC,CAEA,EAFQ,MAM8B,EAAE,MAAM,AAJ9C,CAEA,EAFQ;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAID,GAFpC,MAAM,CAclB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAHpB,GAGoB,GAFlB,MAAM,CAIlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EALrB,MAKqB,EAAE,IAAI,EAJ3B,MAI2B,EAAE,KAAK,EAHlC,GAGkC,GAFhC,GAAC,CAmBb;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,KAAK,EALrB,MAKqB,EAAE,IAAI,EAJ3B,MAI2B,EAAE,KAAK,EAHlC,GAGkC,GAFhC,GAAC,CAWb;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA,EAAE,KAAK,SAAI,QAEhD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA,EAAE,KAAK,SAAI,QAEnD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,KAAA,EAAE,IAAI,KAAA,QAK7C;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,KAAK,KAAA,EAAE,MAAM,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAA,QAM3D;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA,EAAE,MAAM,KAAA,QAMjD;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,MAAM,KAAA,SAWnC;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,WAAW,KAAA,YAQ9C;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,KAAK,KAAA,SAKrC;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,KAAK,KAAA,QAIzC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA,OAoBlD;AAQD,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,KAAK,KAAA,OAQ3C;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CAAC,KAAK,KAAA,YAmB1C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA,OAiB1C"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The 2.0 sections the renderer derives from the 1.x-shaped internal model
3
+ * rather than converts: post-quantum migration risks (pqcMigration.js,
4
+ * #4592), and the coding-agent parties and behavioral blueprint
5
+ * (agentBlueprint.js, #4593).
6
+ *
7
+ * A model read from 2.0 carries its 2.0-only sections (risks, blueprints,
8
+ * parties) for 2.0 output. Derived entries in them are recognised by refId
9
+ * (`risk-pqc-*`, `blueprint-declared-agents`, agent parties `party-agent-*`
10
+ * of system kind `agent`). The renderer drops carried derived entries and
11
+ * derives them again from the model, so they follow edits to the model and
12
+ * are never declared twice. Every other carried entry is kept, first, and a
13
+ * derived entry never replaces a carried entry with the same refId.
14
+ *
15
+ * Only cdxgen's own analysis is derived: the sections are derived only when
16
+ * the model's `metadata.tools` lists cdxgen with a bom-ref, the rule
17
+ * identityClaimContext applies to cdxgen's identity claims. Another tool's
18
+ * BOM converted with `cdx-convert --to 2.0` gets no derived section.
19
+ */
20
+ /** A risk entry renderCycloneDx20 derives (see collectPqcRisks). */
21
+ export declare const isDerivedRisk: (risk: any) => boolean;
22
+ /** The blueprint renderCycloneDx20 derives (see collectAgentBehaviour). */
23
+ export declare const isDerivedBlueprint: (blueprint: any) => boolean;
24
+ /** An agent party renderCycloneDx20 derives (see collectAgentBehaviour). */
25
+ export declare const isDerivedAgentParty: (party: any) => boolean;
26
+ /**
27
+ * Does the model's `metadata.tools` list cdxgen with a bom-ref? The same
28
+ * test decides whether cdxgen's identity claims are written.
29
+ *
30
+ * @param {object} internalBom The 1.x-shaped internal model
31
+ * @returns {boolean} True when cdxgen is a listed tool
32
+ */
33
+ export declare function isCdxgenListedTool(internalBom: object): boolean;
34
+ /**
35
+ * Derive the 2.0 sections of an internal model; all empty unless cdxgen is a
36
+ * listed tool (isCdxgenListedTool).
37
+ *
38
+ * @param {object} internalBom The 1.x-shaped internal model
39
+ * @returns {{risks: object[], agentParties: object[], blueprints: object[]}}
40
+ */
41
+ export declare function deriveCycloneDx20Sections(internalBom: object): {
42
+ risks: object[];
43
+ agentParties: object[];
44
+ blueprints: object[];
45
+ };
46
+ /**
47
+ * Add the derived risks and blueprint to a rendered document whose carried
48
+ * 2.0 sections are already in place, and return the parties to declare: the
49
+ * carried parties without derived agent parties, then the derived ones.
50
+ *
51
+ * @param {object} out The document being rendered
52
+ * @param {object[]} carriedParties Parties carried from a 2.0 read
53
+ * @param {object} internalBom The internal model the document renders
54
+ * @returns {object[]} The parties to declare before the cdxgen party
55
+ */
56
+ export declare function appendDerivedSections(out: object, carriedParties: object[], internalBom: object): object[];
57
+ /**
58
+ * Split the derived entries out of a list read from 2.0. An entry that is
59
+ * what the renderer derives again from the read model is dropped without a
60
+ * loss; a derived-looking entry that differs is dropped too (the renderer
61
+ * would replace it), and its index is returned so the reader reports the
62
+ * loss.
63
+ *
64
+ * @param {object[]} entries The 2.0 list (risks, blueprints, parties)
65
+ * @param {object[]} derived What the renderer derives from the read model
66
+ * @param {Function} isDerived Recogniser for derived entries
67
+ * @returns {{kept: object[], differing: number[]}} The entries to carry, and
68
+ * the indexes of dropped entries that differ from the derivation
69
+ */
70
+ export declare function splitDerivedEntries(entries: object[], derived: object[], isDerived: Function): {
71
+ kept: object[];
72
+ differing: number[];
73
+ };
74
+ //# sourceMappingURL=cyclonedx20Derived.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclonedx20Derived.d.ts","sourceRoot":"","sources":["../../../lib/inventory/cyclonedx20Derived.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAgBH,oEAAoE;AACpE,eAAO,MAAM,aAAa,wBACuB,CAAC;AAElD,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,6BACc,CAAC;AAE9C,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,yBAEC,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAHnC,MAGmC,GAFjC,OAAO,CAInB;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAH1C,MAG0C,GAFxC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAC,CAY3E;AAWD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAL9B,MAK8B,EAAE,cAAc,EAJ9C,MAAM,EAIwC,EAAE,WAAW,EAH3D,MAG2D,GAFzD,MAAM,EAAE,CAqCpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EANhC,MAAM,EAM0B,EAAE,OAAO,EALzC,MAAM,EAKmC,EAAE,SAAS,UAAA,GAHlD;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAC,CAejD"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Conversions between the 1.x organizational entities and contacts and the
3
+ * CycloneDX 2.0 parties (#/$defs/cyclonedx-party-2.0) and common entities
4
+ * (#/$defs/cyclonedx-common-2.0).
5
+ */
6
+ /**
7
+ * A person party playing `role` for a 1.x contact. The contact's `bom-ref`
8
+ * is the party's refId (#/$defs/cyclonedx-party-2.0/$defs/party).
9
+ *
10
+ * @param {object|string} contact 1.x organizationalContact
11
+ * @param {string} role Predefined role
12
+ * @param {object} stats Render counters
13
+ * @returns {object|undefined} 2.0 party
14
+ */
15
+ export declare function contactToParty(contact: object | string, role: string, stats: object): object | undefined;
16
+ /**
17
+ * Convert a 1.x organizationalEntity into 2.0 parties playing `role`
18
+ * (#/$defs/cyclonedx-party-2.0/$defs/party, required `[roles]`, exactly one
19
+ * identity sub-shape). The organization
20
+ * (#/$defs/cyclonedx-party-2.0/$defs/organization) takes `url` as
21
+ * `[{url}]` and `addresses` as an array and has no `bom-ref` or `contact`, so
22
+ * every 1.x contact becomes its own person party with the same role.
23
+ */
24
+ export declare function entityToParties(entity: any, role: any, stats: any): object[];
25
+ /**
26
+ * Convert a 1.x organizationalContact to the 2.0 common organizationalContact
27
+ * (#/$defs/cyclonedx-common-2.0/$defs/organizationalContact), which renames
28
+ * `bom-ref` to `refId`. Used by metadata authors and annotators.
29
+ */
30
+ export declare function toCommonContact(contact: any, stats: any): {
31
+ name: any;
32
+ } | {
33
+ refId: any;
34
+ } | undefined;
35
+ /**
36
+ * Convert a 1.x organizationalEntity to the 2.0 common organizationalEntity
37
+ * (#/$defs/cyclonedx-common-2.0/$defs/organizationalEntity), used by
38
+ * metadata.supplier, metadata.manufacturer and annotator.organization. It
39
+ * keeps `url` strings and `contact`, and renames `bom-ref` to `refId`.
40
+ */
41
+ export declare function toCommonEntity(entity: any, stats: any): {
42
+ refId: any;
43
+ name: any;
44
+ address: {
45
+ refId: any;
46
+ };
47
+ url: any[];
48
+ contact: any;
49
+ } | undefined;
50
+ /**
51
+ * Convert the 1.x party-ish component fields into `parties`
52
+ * (#/$defs/cyclonedx-party-2.0/$defs/party). `author` strings and `authors`
53
+ * contacts become persons with the `author` role, `publisher` an organization
54
+ * with the `publisher` role, and supplier/manufacturer organizations keep
55
+ * their roles.
56
+ */
57
+ export declare function collectParties(component: any, stats: any): object[];
58
+ /**
59
+ * Read 2.0 component or service `parties` into the 1.x fields
60
+ * (`supplier`, `manufacturer`, `authors`, `publisher`, `provider`). A person
61
+ * playing the supplier, manufacturer or provider role becomes a contact of
62
+ * that organization, the inverse of entityToParties. Party references resolve
63
+ * against definitions.parties. Everything else is a loss.
64
+ *
65
+ * @param {object} ctx Reader context
66
+ * @param {Array} parties 2.0 parties
67
+ * @param {string} pointer JSON pointer of `parties`
68
+ * @param {object} roleFields Roles to read (subset of PARTY_ROLE_FIELDS_1X)
69
+ * @returns {object} 1.x fields by name
70
+ */
71
+ export declare function reverseParties(ctx: object, parties: any[], pointer: string, roleFields: object): object;
72
+ /**
73
+ * Read one 2.0 party (inline or a partyReference) whose roles `roleFields`
74
+ * lists: its roles, the 1.x organization or contact it describes, and the
75
+ * pointer of the party object. Unlisted roles and members are losses.
76
+ *
77
+ * @param {object} ctx Reader context
78
+ * @param {object} entry 2.0 party or partyReference
79
+ * @param {string} pointer JSON pointer of `entry`
80
+ * @param {object} roleFields Role names to read, as keys
81
+ * @returns {{roles: string[], identity: {kind: string, identity: object}, pointer: string}|undefined}
82
+ */
83
+ export declare function readParty(ctx: object, entry: object, pointer: string, roleFields: object): {
84
+ roles: string[];
85
+ identity: {
86
+ kind: string;
87
+ identity: object;
88
+ };
89
+ pointer: string;
90
+ } | undefined;
91
+ //# sourceMappingURL=cyclonedx20Parties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclonedx20Parties.d.ts","sourceRoot":"","sources":["../../../lib/inventory/cyclonedx20Parties.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAoFH;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAL3B,MAAM,GAAC,MAKoB,EAAE,IAAI,EAJjC,MAIiC,EAAE,KAAK,EAHxC,MAGwC,GAFtC,MAAM,GAAC,SAAS,CAc5B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,KAAK,KAAA,YA4DlD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;;cAwB7C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,KAAA,EAAE,KAAK,KAAA;;;;;;;;cAiC3C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,KAAA,EAAE,KAAK,KAAA,YA0B9C;AAiND;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,GAAG,EANvB,MAMuB,EAAE,OAAO,OAAA,EAAE,OAAO,EAJzC,MAIyC,EAAE,UAAU,EAHrD,MAGqD,GAFnD,MAAM,CAqBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,GAAG,EANlB,MAMkB,EAAE,KAAK,EALzB,MAKyB,EAAE,OAAO,EAJlC,MAIkC,EAAE,UAAU,EAH9C,MAG8C,GAF5C;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GAAC,SAAS,CAapG"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Read a CycloneDX 2.0 document into the 1.x-shaped internal model. The
3
+ * public entry point is re-exported from cyclonedx20.js.
4
+ *
5
+ * Where definitions.components entries go (2.0 records no membership, so the
6
+ * rule is fixed and deterministic, applied in document order):
7
+ *
8
+ * 0. An entry whose refId a formula lists in its
9
+ * `cdx:formulation:componentRefs` property (a JSON array of refIds, which
10
+ * renderCycloneDx20 writes for a subject-less document) is a component of
11
+ * every formula that lists it.
12
+ * 1. An entry whose refId a formula references (a `ref` member, such as a
13
+ * resource reference, anywhere in its tree) is a component of the first
14
+ * such formula. Other strings that happen to equal the refId, such as a
15
+ * task type, do not count.
16
+ * 2. In a document with inventories, an entry a componentReference the
17
+ * reader resolves points to (from an inventory, a tool, an annotator, a
18
+ * vulnerability or another definitions component) stays in definitions
19
+ * (kept for 2.0 output); its content reaches 1.x through the referencing
20
+ * entries.
21
+ * 3. In a document with inventories, any other entry is a formula component
22
+ * when the document has a formulation (the renderer moves 1.x
23
+ * formula.components there), and otherwise stays in definitions with a
24
+ * loss: 1.x has no home for it.
25
+ * 4. In a document without inventories (the renderer puts a subject-less
26
+ * document's components there), any other entry is a root component.
27
+ * Entries without a refId follow the same rules and are never dropped.
28
+ * 5. Before all of these, an entry whose type 1.x does not have (`material`)
29
+ * stays in definitions with a loss.
30
+ */
31
+ /**
32
+ * Read a 2.0 document into the internal 1.x-shaped model. Never throws on a
33
+ * schema-valid 2.0 document. Objects nested deeper than MAX_READ_DEPTH are
34
+ * left out, each with a loss. The returned model carries the internal model
35
+ * mark (markInternalModel), which loadBomForAnalysis checks. Every member the reader sees but cannot carry
36
+ * into 1.x is reported in `losses` as `{pointer, reason}`, where `pointer` is
37
+ * an RFC 6901 JSON pointer into the input. Objects whose 1.x form would not
38
+ * render back to the same 2.0 object are kept under the internal sections
39
+ * key, so renderCycloneDx20 restores them while they are unchanged.
40
+ *
41
+ * @param {object} bom20 BOM in the 2.0 shape
42
+ * @returns {{internalBom: object, losses: Array<{pointer: string, reason: string}>}}
43
+ */
44
+ export declare function readCycloneDx20(bom20: object): {
45
+ internalBom: object;
46
+ losses: Array<{
47
+ pointer: string;
48
+ reason: string;
49
+ }>;
50
+ };
51
+ //# sourceMappingURL=cyclonedx20Read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclonedx20Read.d.ts","sourceRoot":"","sources":["../../../lib/inventory/cyclonedx20Read.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAmGH;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAH1B,MAG0B,GAFxB;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC,CA2CnF"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Reader converters for the CycloneDX 2.0 common objects
3
+ * (#/$defs/cyclonedx-common-2.0, #/$defs/cyclonedx-license-2.0,
4
+ * #/$defs/cyclonedx-release-notes-2.0) back to their 1.x shapes. Each frozen
5
+ * spec is the allowlist of the members 1.x carries; anything else is a loss.
6
+ */
7
+ /** hash (#/$defs/cyclonedx-common-2.0/$defs/hash) → 1.x hash. */
8
+ export declare function reverseHash(ctx: any, value: any, pointer: any): object | undefined;
9
+ /** A list of hashes. */
10
+ export declare const HASHES_RULE: Readonly<{
11
+ to: any;
12
+ convert: (ctx: any, value: any, pointer: any) => any[] | undefined;
13
+ }>;
14
+ /** property (#/$defs/cyclonedx-common-2.0/$defs/property) → 1.x property. */
15
+ export declare function reverseProperty(ctx: any, value: any, pointer: any): object | undefined;
16
+ /** A list of properties. */
17
+ export declare const PROPERTIES_RULE: Readonly<{
18
+ to: any;
19
+ convert: (ctx: any, value: any, pointer: any) => any[] | undefined;
20
+ }>;
21
+ /** externalReference → 1.x externalReference. */
22
+ export declare function reverseExternalReference(ctx: any, value: any, pointer: any): object | undefined;
23
+ /** A list of external references. */
24
+ export declare const EXTERNAL_REFERENCES_RULE: Readonly<{
25
+ to: any;
26
+ convert: (ctx: any, value: any, pointer: any) => any[] | undefined;
27
+ }>;
28
+ /** attachment: `mediaType` is the 1.x `contentType`. */
29
+ export declare function reverseAttachment(ctx: any, value: any, pointer: any): object | undefined;
30
+ /** An attachment-valued member. */
31
+ export declare const ATTACHMENT_RULE: Readonly<{
32
+ convert: typeof reverseAttachment;
33
+ }>;
34
+ /** postalAddress (common or party) → 1.x postalAddress. */
35
+ export declare function reverseAddress(ctx: any, value: any, pointer: any): object | undefined;
36
+ /** organizationalContact → 1.x organizationalContact. */
37
+ export declare function reverseContact(ctx: any, value: any, pointer: any): object | undefined;
38
+ /** organizationalEntity (common) → 1.x organizationalEntity. */
39
+ export declare function reverseEntity(ctx: any, value: any, pointer: any): object | undefined;
40
+ /**
41
+ * One licenseChoice entry. A licenseReference (`{ref}`) resolves against
42
+ * definitions.licenses; 1.x has no license references, so the declaration
43
+ * is inlined and the reference itself reported.
44
+ */
45
+ export declare function reverseLicenseChoice(ctx: any, value: any, pointer: any): object | undefined;
46
+ /** A licenses member. */
47
+ export declare const LICENSES_RULE: Readonly<{
48
+ to: any;
49
+ convert: (ctx: any, value: any, pointer: any) => any[] | undefined;
50
+ }>;
51
+ /**
52
+ * Issues a patch or release resolves. 1.x lists issues only; a reference to a
53
+ * weakness, vulnerability or requirement has no 1.x form.
54
+ */
55
+ export declare const RESOLVES_RULE: Readonly<{
56
+ to: any;
57
+ convert: (ctx: any, value: any, pointer: any) => any[] | undefined;
58
+ }>;
59
+ /**
60
+ * releaseNotes, inline or a releaseNotesReference resolved against
61
+ * definitions.releaseNotes (1.x has no reference form).
62
+ */
63
+ export declare function reverseReleaseNotes(ctx: any, value: any, pointer: any): object | undefined;
64
+ /** A patentAssertions member; 1.x requires `asserter` and `assertionType`. */
65
+ export declare const PATENT_ASSERTIONS_RULE: Readonly<{
66
+ to: any;
67
+ convert: (ctx: any, value: any, pointer: any) => any[] | undefined;
68
+ }>;
69
+ //# sourceMappingURL=cyclonedx20ReadCommon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclonedx20ReadCommon.d.ts","sourceRoot":"","sources":["../../../lib/inventory/cyclonedx20ReadCommon.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,KAAA,sBAE9C;AAED,wBAAwB;AACxB,eAAO,MAAM,WAAW;;;EAAsB,CAAC;AAI/C,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,KAAA,sBAElD;AAED,4BAA4B;AAC5B,eAAO,MAAM,eAAe;;;EAA0B,CAAC;AA0BvD,iDAAiD;AACjD,wBAAgB,wBAAwB,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,KAAA,sBAQ3D;AAED,qCAAqC;AACrC,eAAO,MAAM,wBAAwB;;;EAAmC,CAAC;AAQzE,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,KAAA,sBAEpD;AAED,mCAAmC;AACnC,eAAO,MAAM,eAAe;;EAAgD,CAAC;AAY7E,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,KAAA,sBAEjD;AASD,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,KAAA,sBAQjD;AAUD,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,KAAA,sBAQhD;AAyDD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,KAAA,sBAwCvD;AAED,yBAAyB;AACzB,eAAO,MAAM,aAAa;;;EAA+B,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,aAAa;;;EAMxB,CAAC;AAoBH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,KAAA,sBA2BtD;AA+CD,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB;;;EAajC,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Reader converters for CycloneDX 2.0 components
3
+ * (#/$defs/cyclonedx-component-2.0/$defs/component) back to 1.x components
4
+ * and, for `type: service`, 1.x services. Each frozen spec is the allowlist
5
+ * of the members 1.x carries; everything else is reported as a loss.
6
+ */
7
+ /**
8
+ * A 2.0 component (not a service) → a 1.x component, or undefined when its
9
+ * type has no 1.x equivalent (a loss).
10
+ *
11
+ * @param {object} ctx Reader context
12
+ * @param {object} component 2.0 component
13
+ * @param {string} pointer JSON pointer of `component`
14
+ * @returns {object|undefined} 1.x component
15
+ */
16
+ export declare function reverseComponent(ctx: object, component: object, pointer: string): object | undefined;
17
+ /**
18
+ * A 2.0 component of type `service` → a 1.x service.
19
+ *
20
+ * @param {object} ctx Reader context
21
+ * @param {object} component 2.0 service component
22
+ * @param {string} pointer JSON pointer of `component`
23
+ * @returns {object} 1.x service
24
+ */
25
+ export declare function reverseService(ctx: object, component: object, pointer: string): object;
26
+ /**
27
+ * Resolve a componentEntry (component, componentReference or
28
+ * component-choice) to a concrete component. A reference resolves against
29
+ * every declared component; a choice keeps its first resolvable member.
30
+ *
31
+ * @param {object} ctx Reader context (with `componentIndex`)
32
+ * @param {object} entry 2.0 componentEntry
33
+ * @param {string} pointer JSON pointer of `entry`
34
+ * @returns {{component: object, pointer: string}|undefined}
35
+ */
36
+ export declare function resolveComponentEntry(ctx: object, entry: object, pointer: string, depth?: number): {
37
+ component: object;
38
+ pointer: string;
39
+ } | undefined;
40
+ /**
41
+ * Read one top-level component entry (an inventory entry, subject, tool,
42
+ * definitions component, formula component or annotator) into 1.x, as a
43
+ * component or a service. `needsShadow` is set when the 1.x value does not
44
+ * render back to the same 2.0 entry; a caller that keeps the entry passes the
45
+ * result to keepComponentShadow.
46
+ *
47
+ * @param {object} ctx Reader context
48
+ * @param {object} entry 2.0 componentEntry
49
+ * @param {string} pointer JSON pointer of `entry`
50
+ * @returns {{internal: object, isService: boolean, refId?: string, entry: object, needsShadow: boolean}|undefined}
51
+ */
52
+ export declare function readComponentEntry(ctx: object, entry: object, pointer: string): {
53
+ internal: object;
54
+ isService: boolean;
55
+ refId?: string;
56
+ entry: object;
57
+ needsShadow: boolean;
58
+ } | undefined;
59
+ /**
60
+ * Note a kept component entry for the shadows. Entries read inside a section
61
+ * entry that is itself restored whole (annotations, vulnerabilities) are not
62
+ * noted, since the renderer never converts them.
63
+ *
64
+ * @param {object} ctx Reader context
65
+ * @param {object} read Result of readComponentEntry
66
+ */
67
+ export declare function keepComponentShadow(ctx: object, read: object): void;
68
+ /**
69
+ * Register the component shadows. Kept entries whose 1.x values are
70
+ * identical share a key; when any of them needs a shadow, all of them are
71
+ * registered in document order, which is the order the renderer converts
72
+ * them in, so each gets its own original back.
73
+ *
74
+ * @param {object} ctx Reader context
75
+ */
76
+ export declare function flushComponentShadows(ctx: object): void;
77
+ //# sourceMappingURL=cyclonedx20ReadComponents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclonedx20ReadComponents.d.ts","sourceRoot":"","sources":["../../../lib/inventory/cyclonedx20ReadComponents.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2aH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EALzB,MAKyB,EAAE,SAAS,EAJpC,MAIoC,EAAE,OAAO,EAH7C,MAG6C,GAF3C,MAAM,GAAC,SAAS,CAY5B;AA8FD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EALvB,MAKuB,EAAE,SAAS,EAJlC,MAIkC,EAAE,OAAO,EAH3C,MAG2C,GAFzC,MAAM,CAIlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAL9B,MAK8B,EAAE,KAAK,EAJrC,MAIqC,EAAE,OAAO,EAH9C,MAG8C,EAAE,KAAK,SAAI,GAFvD;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GAAC,SAAS,CA+C1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAL3B,MAK2B,EAAE,KAAK,EAJlC,MAIkC,EAAE,OAAO,EAH3C,MAG2C,GAFzC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAC,GAAC,SAAS,CA2BjH;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAH5B,MAG4B,EAAE,IAAI,EAFlC,MAEkC,QAS5C;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAF9B,MAE8B,QAWxC"}