@cdxgen/cdxgen 0.0.1 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +921 -87
- package/bin/audit.js +239 -0
- package/bin/cdxgen.js +2335 -0
- package/bin/convert.js +220 -0
- package/bin/evinse.js +353 -0
- package/bin/hbom.js +504 -0
- package/bin/repl.js +2224 -0
- package/bin/sign.js +195 -0
- package/bin/tracebom.js +303 -0
- package/bin/validate.js +268 -0
- package/bin/verify.js +189 -0
- package/data/README.md +307 -0
- package/data/bom-1.4.schema.json +1605 -0
- package/data/bom-1.5.schema.json +3660 -0
- package/data/bom-1.6.schema.json +5511 -0
- package/data/bom-1.7.schema.json +6700 -0
- package/data/cbomosdb-queries.json +68 -0
- package/data/component-tags.json +339 -0
- package/data/container-knowledge-index.json +125 -0
- package/data/cosdb-queries.json +17 -0
- package/data/crypto-oid.json +1998 -0
- package/data/cryptography-defs.json +3793 -0
- package/data/cryptography-defs.schema.json +576 -0
- package/data/cyclonedx-2.0-bundled.schema.json +7182 -0
- package/data/frameworks-list.json +219 -0
- package/data/glibc-stdlib.json +117 -0
- package/data/gtfobins-index.json +6296 -0
- package/data/helpers/init.gradle +71 -0
- package/data/jsf-0.82.schema.json +211 -0
- package/data/known-licenses.json +82 -0
- package/data/lic-mapping.json +338 -0
- package/data/license-aliases.json +6624 -0
- package/data/license-db.json +39059 -0
- package/data/license-deprecations.json +302 -0
- package/data/lolbas-index.json +150 -0
- package/data/predictive-audit-allowlist.json +11 -0
- package/data/pypi-pkg-aliases.json +1199 -0
- package/data/python-stdlib.json +308 -0
- package/data/queries-darwin.json +193 -0
- package/data/queries-win.json +257 -0
- package/data/queries.json +268 -0
- package/data/ruby-known-modules.json +281 -0
- package/data/rules/ai-agent-governance.yaml +323 -0
- package/data/rules/ai-bom.yaml +268 -0
- package/data/rules/ai-oversight.yaml +186 -0
- package/data/rules/ai-provenance.yaml +92 -0
- package/data/rules/asar-archives.yaml +150 -0
- package/data/rules/cbom-security.yaml +165 -0
- package/data/rules/chrome-extensions.yaml +248 -0
- package/data/rules/ci-permissions.yaml +802 -0
- package/data/rules/container-risk.yaml +353 -0
- package/data/rules/dependency-sources.yaml +236 -0
- package/data/rules/golem-go.yaml +229 -0
- package/data/rules/hbom-compliance.yaml +325 -0
- package/data/rules/hbom-performance.yaml +307 -0
- package/data/rules/hbom-security.yaml +248 -0
- package/data/rules/host-topology.yaml +165 -0
- package/data/rules/mcp-servers.yaml +388 -0
- package/data/rules/obom-runtime.yaml +1776 -0
- package/data/rules/package-integrity.yaml +364 -0
- package/data/rules/rootfs-hardening.yaml +179 -0
- package/data/rules/vscode-extensions.yaml +237 -0
- package/data/spdx-export.schema.json +6794 -0
- package/data/spdx-license-list.json +7449 -0
- package/data/spdx-licenses.json +759 -0
- package/data/spdx.schema.json +819 -0
- package/data/templates/README.md +3 -0
- package/data/templates/asvs-4.0.3.cdx.json +2943 -0
- package/data/templates/asvs-5.0.cdx.json +3046 -0
- package/data/templates/bsimm-v13.cdx.json +1008 -0
- package/data/templates/masvs-2.0.0.cdx.json +225 -0
- package/data/templates/nist-ssdf-1.1.cdx.json +828 -0
- package/data/templates/pcissc-secure-slc-1.1.cdx.json +1027 -0
- package/data/templates/scvs-1.0.0.cdx.json +813 -0
- package/data/templates/ssaf-DRAFT-2023-11.cdx.json +127 -0
- package/data/vendor-alias.json +41967 -0
- package/data/wrapdb-releases.json +4227 -0
- package/index.cjs +15 -0
- package/lib/audit/index.js +2800 -0
- package/lib/audit/progress.js +114 -0
- package/lib/audit/reporters.js +937 -0
- package/lib/audit/scoring.js +560 -0
- package/lib/audit/targets.js +798 -0
- package/lib/cli/bomAssembly.js +1882 -0
- package/lib/cli/cliOptions.js +543 -0
- package/lib/cli/index.js +2759 -0
- package/lib/cli/jsBom.js +2087 -0
- package/lib/cli/jvmBom.js +1858 -0
- package/lib/cli/managedBom.js +2083 -0
- package/lib/cli/nativeBom.js +2125 -0
- package/lib/core/activity.js +1087 -0
- package/lib/core/env.js +719 -0
- package/lib/core/fs.js +1058 -0
- package/lib/core/httpClient.js +730 -0
- package/lib/core/logger.js +280 -0
- package/lib/core/parallel.js +323 -0
- package/lib/core/paths.js +70 -0
- package/lib/core/projectConfig.js +122 -0
- package/lib/core/propertySanitizer.js +174 -0
- package/lib/core/spdx.js +5 -0
- package/lib/core/state.js +59 -0
- package/lib/core/text.js +207 -0
- package/lib/core/ui.js +920 -0
- package/lib/core/urls.js +84 -0
- package/lib/ecosystems/asarutils.js +1636 -0
- package/lib/ecosystems/bunutils.js +402 -0
- package/lib/ecosystems/caxa.js +77 -0
- package/lib/ecosystems/chromextutils.js +1174 -0
- package/lib/ecosystems/cmakeResolver.js +587 -0
- package/lib/ecosystems/cppEvidence.js +305 -0
- package/lib/ecosystems/denoutils.js +1094 -0
- package/lib/ecosystems/dotnetutils.js +132 -0
- package/lib/ecosystems/ecosystems.js +2772 -0
- package/lib/ecosystems/golem.js +1807 -0
- package/lib/ecosystems/gradleutils.js +1048 -0
- package/lib/ecosystems/jsEvidence.js +317 -0
- package/lib/ecosystems/npmutils.js +586 -0
- package/lib/ecosystems/parsers-bazel.js +875 -0
- package/lib/ecosystems/parsers-dotnet.js +1430 -0
- package/lib/ecosystems/parsers-gleam.js +302 -0
- package/lib/ecosystems/parsers-go.js +818 -0
- package/lib/ecosystems/parsers-js.js +4222 -0
- package/lib/ecosystems/parsers-jvm.js +948 -0
- package/lib/ecosystems/parsers-misc.js +3191 -0
- package/lib/ecosystems/parsers-python.js +2070 -0
- package/lib/ecosystems/parsers-rust.js +1294 -0
- package/lib/ecosystems/parsers-zig.js +861 -0
- package/lib/ecosystems/pep770.js +341 -0
- package/lib/ecosystems/pylockutils.js +427 -0
- package/lib/ecosystems/pythonutils.js +1281 -0
- package/lib/ecosystems/registryProvenance.js +1003 -0
- package/lib/ecosystems/remote/huggingface.js +1343 -0
- package/lib/ecosystems/rubyutils.js +1629 -0
- package/lib/ecosystems/rusi.js +820 -0
- package/lib/ecosystems/sbtutils.js +972 -0
- package/lib/ecosystems/tea.js +607 -0
- package/lib/ecosystems/utils.js +583 -0
- package/lib/ecosystems/zigResolver.js +410 -0
- package/lib/evinser/db.js +145 -0
- package/lib/evinser/evinser.js +2362 -0
- package/lib/evinser/scalasem.js +65 -0
- package/lib/evinser/swiftsem.js +767 -0
- package/lib/helpers/annotationFormatter.js +84 -0
- package/lib/helpers/bomSigner.js +312 -0
- package/lib/helpers/exportUtils.js +160 -0
- package/lib/helpers/remote/dependency-track.js +117 -0
- package/lib/helpers/versutils.js +202 -0
- package/lib/helpers/vsixutils.js +1069 -0
- package/lib/inventory/agentFormulationParser.js +322 -0
- package/lib/inventory/aiCollector.js +2140 -0
- package/lib/inventory/aiInventory.js +414 -0
- package/lib/inventory/aiModelVariants.js +121 -0
- package/lib/inventory/aiOversightCollector.js +661 -0
- package/lib/inventory/aiProvenanceCollector.js +822 -0
- package/lib/inventory/analyzer.js +6089 -0
- package/lib/inventory/analyzerScope.js +807 -0
- package/lib/inventory/astWorker.js +20 -0
- package/lib/inventory/atomUtils.js +1092 -0
- package/lib/inventory/auditCategories.js +192 -0
- package/lib/inventory/bomUtils.js +369 -0
- package/lib/inventory/cacheCommands.js +182 -0
- package/lib/inventory/cacheDir.js +104 -0
- package/lib/inventory/cbomutils.js +590 -0
- package/lib/inventory/cdxrs.js +434 -0
- package/lib/inventory/ciParsers/azurePipelines.js +295 -0
- package/lib/inventory/ciParsers/circleCi.js +286 -0
- package/lib/inventory/ciParsers/common.js +24 -0
- package/lib/inventory/ciParsers/githubActions.js +2434 -0
- package/lib/inventory/ciParsers/gitlabCi.js +213 -0
- package/lib/inventory/ciParsers/jenkins.js +180 -0
- package/lib/inventory/citations.js +234 -0
- package/lib/inventory/communityAiConfigParser.js +756 -0
- package/lib/inventory/containerRisk.js +204 -0
- package/lib/inventory/cryptoAlgorithmFamily.js +258 -0
- package/lib/inventory/deps.js +807 -0
- package/lib/inventory/depsUtils.js +588 -0
- package/lib/inventory/display.js +2128 -0
- package/lib/inventory/dosai.js +601 -0
- package/lib/inventory/dosaiParsers.js +154 -0
- package/lib/inventory/dynamic.js +145 -0
- package/lib/inventory/envcontext.js +1793 -0
- package/lib/inventory/evidenceUtils.js +774 -0
- package/lib/inventory/fetchBatch.js +779 -0
- package/lib/inventory/fetchRate.js +255 -0
- package/lib/inventory/forgeEnricher.js +300 -0
- package/lib/inventory/formulationParsers.js +422 -0
- package/lib/inventory/gtfobins.js +339 -0
- package/lib/inventory/hbom.js +719 -0
- package/lib/inventory/hbomAnalysis.js +310 -0
- package/lib/inventory/hbomLoader.js +35 -0
- package/lib/inventory/hostTopology.js +835 -0
- package/lib/inventory/inventoryStats.js +100 -0
- package/lib/inventory/jsonLike.js +121 -0
- package/lib/inventory/licenseEnhancer.js +918 -0
- package/lib/inventory/lolbas.js +285 -0
- package/lib/inventory/mcp.js +253 -0
- package/lib/inventory/mcpConfigParser.js +683 -0
- package/lib/inventory/mcpDiscovery.js +112 -0
- package/lib/inventory/mcpPinning.js +209 -0
- package/lib/inventory/osPackageResolver.js +493 -0
- package/lib/inventory/osinfo.js +383 -0
- package/lib/inventory/osqueryTransform.js +274 -0
- package/lib/inventory/plugins.js +466 -0
- package/lib/inventory/protobom.js +231 -0
- package/lib/inventory/protobomLoader.js +43 -0
- package/lib/inventory/provenanceUtils.js +224 -0
- package/lib/inventory/purl.js +749 -0
- package/lib/inventory/rustFormulationParser.js +339 -0
- package/lib/inventory/sbomDocument.js +340 -0
- package/lib/inventory/source.js +1488 -0
- package/lib/inventory/spdx.js +361 -0
- package/lib/inventory/spdxExpression.js +512 -0
- package/lib/inventory/spdxUtils.js +107 -0
- package/lib/inventory/table.js +267 -0
- package/lib/inventory/traceRunner.js +439 -0
- package/lib/inventory/unicodeScan.js +147 -0
- package/lib/managers/binary.js +3459 -0
- package/lib/managers/containerutils.js +125 -0
- package/lib/managers/docker.js +2145 -0
- package/lib/managers/dockerConnection.js +162 -0
- package/lib/managers/oci.js +704 -0
- package/lib/managers/piptree.js +267 -0
- package/lib/parsers/cmakeCache.js +199 -0
- package/lib/parsers/gguf.js +492 -0
- package/lib/parsers/gitAiNotes.js +233 -0
- package/lib/parsers/gitmodules.js +239 -0
- package/lib/parsers/htmlExtract.js +610 -0
- package/lib/parsers/huggingfaceManifest.js +551 -0
- package/lib/parsers/huggingfaceUtils.js +506 -0
- package/lib/parsers/iri.js +618 -0
- package/lib/parsers/npmrc.js +99 -0
- package/lib/parsers/ollama.js +101 -0
- package/lib/parsers/xml.js +841 -0
- package/lib/server/openapi.yaml +433 -0
- package/lib/server/server.js +616 -0
- package/lib/stages/postgen/annotator.js +977 -0
- package/lib/stages/postgen/auditBom.js +468 -0
- package/lib/stages/postgen/postgen.js +1239 -0
- package/lib/stages/postgen/ruleEngine.js +731 -0
- package/lib/stages/postgen/sortBom.js +195 -0
- package/lib/stages/postgen/spdxConverter.js +796 -0
- package/lib/stages/postgen/specVersionCompat.js +703 -0
- package/lib/stages/pregen/envAudit.js +388 -0
- package/lib/stages/pregen/pregen.js +637 -0
- package/lib/third-party/README.md +9 -0
- package/lib/third-party/arborist/CHANGELOG.md +1109 -0
- package/lib/third-party/arborist/LICENSE.md +20 -0
- package/lib/third-party/arborist/README.md +315 -0
- package/lib/third-party/arborist/lib/arborist/index.js +258 -0
- package/lib/third-party/arborist/lib/arborist/load-actual.js +605 -0
- package/lib/third-party/arborist/lib/arborist/load-virtual.js +300 -0
- package/lib/third-party/arborist/lib/bin-links.js +120 -0
- package/lib/third-party/arborist/lib/calc-dep-flags.js +130 -0
- package/lib/third-party/arborist/lib/case-insensitive-map.js +51 -0
- package/lib/third-party/arborist/lib/consistent-resolve.js +42 -0
- package/lib/third-party/arborist/lib/debug.js +50 -0
- package/lib/third-party/arborist/lib/dep-valid.js +190 -0
- package/lib/third-party/arborist/lib/edge.js +417 -0
- package/lib/third-party/arborist/lib/from-path.js +36 -0
- package/lib/third-party/arborist/lib/gather-dep-set.js +43 -0
- package/lib/third-party/arborist/lib/index.js +22 -0
- package/lib/third-party/arborist/lib/inventory.js +138 -0
- package/lib/third-party/arborist/lib/link.js +169 -0
- package/lib/third-party/arborist/lib/node.js +1673 -0
- package/lib/third-party/arborist/lib/npm-extension.js +45 -0
- package/lib/third-party/arborist/lib/override-resolves.js +11 -0
- package/lib/third-party/arborist/lib/override-set.js +319 -0
- package/lib/third-party/arborist/lib/package-extensions.js +289 -0
- package/lib/third-party/arborist/lib/printable.js +210 -0
- package/lib/third-party/arborist/lib/proc-log.js +30 -0
- package/lib/third-party/arborist/lib/realpath.js +100 -0
- package/lib/third-party/arborist/lib/relpath.js +4 -0
- package/lib/third-party/arborist/lib/shrinkwrap.js +1291 -0
- package/lib/third-party/arborist/lib/spec-from-lock.js +34 -0
- package/lib/third-party/arborist/lib/tree-check.js +165 -0
- package/lib/third-party/arborist/lib/validate-npm-package-name.js +107 -0
- package/lib/third-party/arborist/lib/version-from-tgz.js +51 -0
- package/lib/third-party/arborist/lib/yarn-lock.js +397 -0
- package/lib/validator/bomValidator.js +985 -0
- package/lib/validator/complianceEngine.js +241 -0
- package/lib/validator/complianceRules.js +1680 -0
- package/lib/validator/generated/runtime.mjs +17 -0
- package/lib/validator/generated/validate-1.6.mjs +21258 -0
- package/lib/validator/generated/validate-1.7.mjs +24803 -0
- package/lib/validator/generated/validate-2.0.mjs +22931 -0
- package/lib/validator/index.js +246 -0
- package/lib/validator/reporters/annotations.js +142 -0
- package/lib/validator/reporters/console.js +160 -0
- package/lib/validator/reporters/index.js +41 -0
- package/lib/validator/reporters/json.js +37 -0
- package/lib/validator/reporters/sarif.js +184 -0
- package/package.json +209 -26
- package/types/bin/audit.d.ts +3 -0
- package/types/bin/audit.d.ts.map +1 -0
- package/types/bin/cdxgen.d.ts +3 -0
- package/types/bin/cdxgen.d.ts.map +1 -0
- package/types/bin/convert.d.ts +3 -0
- package/types/bin/convert.d.ts.map +1 -0
- package/types/bin/evinse.d.ts +3 -0
- package/types/bin/evinse.d.ts.map +1 -0
- package/types/bin/hbom.d.ts +3 -0
- package/types/bin/hbom.d.ts.map +1 -0
- package/types/bin/repl.d.ts +3 -0
- package/types/bin/repl.d.ts.map +1 -0
- package/types/bin/sign.d.ts +3 -0
- package/types/bin/sign.d.ts.map +1 -0
- package/types/bin/tracebom.d.ts +3 -0
- package/types/bin/tracebom.d.ts.map +1 -0
- package/types/bin/validate.d.ts +14 -0
- package/types/bin/validate.d.ts.map +1 -0
- package/types/bin/verify.d.ts +3 -0
- package/types/bin/verify.d.ts.map +1 -0
- package/types/lib/audit/index.d.ts +153 -0
- package/types/lib/audit/index.d.ts.map +1 -0
- package/types/lib/audit/progress.d.ts +31 -0
- package/types/lib/audit/progress.d.ts.map +1 -0
- package/types/lib/audit/reporters.d.ts +62 -0
- package/types/lib/audit/reporters.d.ts.map +1 -0
- package/types/lib/audit/scoring.d.ts +36 -0
- package/types/lib/audit/scoring.d.ts.map +1 -0
- package/types/lib/audit/targets.d.ts +77 -0
- package/types/lib/audit/targets.d.ts.map +1 -0
- package/types/lib/cli/bomAssembly.d.ts +329 -0
- package/types/lib/cli/bomAssembly.d.ts.map +1 -0
- package/types/lib/cli/cliOptions.d.ts +156 -0
- package/types/lib/cli/cliOptions.d.ts.map +1 -0
- package/types/lib/cli/index.d.ts +107 -0
- package/types/lib/cli/index.d.ts.map +1 -0
- package/types/lib/cli/jsBom.d.ts +94 -0
- package/types/lib/cli/jsBom.d.ts.map +1 -0
- package/types/lib/cli/jvmBom.d.ts +54 -0
- package/types/lib/cli/jvmBom.d.ts.map +1 -0
- package/types/lib/cli/managedBom.d.ts +105 -0
- package/types/lib/cli/managedBom.d.ts.map +1 -0
- package/types/lib/cli/nativeBom.d.ts +143 -0
- package/types/lib/cli/nativeBom.d.ts.map +1 -0
- package/types/lib/core/activity.d.ts +178 -0
- package/types/lib/core/activity.d.ts.map +1 -0
- package/types/lib/core/env.d.ts +192 -0
- package/types/lib/core/env.d.ts.map +1 -0
- package/types/lib/core/fs.d.ts +158 -0
- package/types/lib/core/fs.d.ts.map +1 -0
- package/types/lib/core/httpClient.d.ts +149 -0
- package/types/lib/core/httpClient.d.ts.map +1 -0
- package/types/lib/core/logger.d.ts +50 -0
- package/types/lib/core/logger.d.ts.map +1 -0
- package/types/lib/core/parallel.d.ts +95 -0
- package/types/lib/core/parallel.d.ts.map +1 -0
- package/types/lib/core/paths.d.ts +36 -0
- package/types/lib/core/paths.d.ts.map +1 -0
- package/types/lib/core/projectConfig.d.ts +23 -0
- package/types/lib/core/projectConfig.d.ts.map +1 -0
- package/types/lib/core/propertySanitizer.d.ts +23 -0
- package/types/lib/core/propertySanitizer.d.ts.map +1 -0
- package/types/lib/core/spdx.d.ts +5 -0
- package/types/lib/core/spdx.d.ts.map +1 -0
- package/types/lib/core/state.d.ts +20 -0
- package/types/lib/core/state.d.ts.map +1 -0
- package/types/lib/core/text.d.ts +78 -0
- package/types/lib/core/text.d.ts.map +1 -0
- package/types/lib/core/ui.d.ts +87 -0
- package/types/lib/core/ui.d.ts.map +1 -0
- package/types/lib/core/urls.d.ts +43 -0
- package/types/lib/core/urls.d.ts.map +1 -0
- package/types/lib/ecosystems/asarutils.d.ts +71 -0
- package/types/lib/ecosystems/asarutils.d.ts.map +1 -0
- package/types/lib/ecosystems/bunutils.d.ts +38 -0
- package/types/lib/ecosystems/bunutils.d.ts.map +1 -0
- package/types/lib/ecosystems/caxa.d.ts +8 -0
- package/types/lib/ecosystems/caxa.d.ts.map +1 -0
- package/types/lib/ecosystems/chromextutils.d.ts +97 -0
- package/types/lib/ecosystems/chromextutils.d.ts.map +1 -0
- package/types/lib/ecosystems/cmakeResolver.d.ts +176 -0
- package/types/lib/ecosystems/cmakeResolver.d.ts.map +1 -0
- package/types/lib/ecosystems/cppEvidence.d.ts +35 -0
- package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -0
- package/types/lib/ecosystems/denoutils.d.ts +76 -0
- package/types/lib/ecosystems/denoutils.d.ts.map +1 -0
- package/types/lib/ecosystems/dotnetutils.d.ts +45 -0
- package/types/lib/ecosystems/dotnetutils.d.ts.map +1 -0
- package/types/lib/ecosystems/ecosystems.d.ts +279 -0
- package/types/lib/ecosystems/ecosystems.d.ts.map +1 -0
- package/types/lib/ecosystems/golem.d.ts +60 -0
- package/types/lib/ecosystems/golem.d.ts.map +1 -0
- package/types/lib/ecosystems/gradleutils.d.ts +139 -0
- package/types/lib/ecosystems/gradleutils.d.ts.map +1 -0
- package/types/lib/ecosystems/jsEvidence.d.ts +17 -0
- package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -0
- package/types/lib/ecosystems/npmutils.d.ts +183 -0
- package/types/lib/ecosystems/npmutils.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-bazel.d.ts +36 -0
- package/types/lib/ecosystems/parsers-bazel.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-dotnet.d.ts +116 -0
- package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-gleam.d.ts +33 -0
- package/types/lib/ecosystems/parsers-gleam.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-go.d.ts +92 -0
- package/types/lib/ecosystems/parsers-go.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-js.d.ts +242 -0
- package/types/lib/ecosystems/parsers-js.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-jvm.d.ts +100 -0
- package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-misc.d.ts +450 -0
- package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-python.d.ts +145 -0
- package/types/lib/ecosystems/parsers-python.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-rust.d.ts +56 -0
- package/types/lib/ecosystems/parsers-rust.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-zig.d.ts +83 -0
- package/types/lib/ecosystems/parsers-zig.d.ts.map +1 -0
- package/types/lib/ecosystems/pep770.d.ts +38 -0
- package/types/lib/ecosystems/pep770.d.ts.map +1 -0
- package/types/lib/ecosystems/pylockutils.d.ts +68 -0
- package/types/lib/ecosystems/pylockutils.d.ts.map +1 -0
- package/types/lib/ecosystems/pythonutils.d.ts +70 -0
- package/types/lib/ecosystems/pythonutils.d.ts.map +1 -0
- package/types/lib/ecosystems/registryProvenance.d.ts +26 -0
- package/types/lib/ecosystems/registryProvenance.d.ts.map +1 -0
- package/types/lib/ecosystems/remote/huggingface.d.ts +31 -0
- package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -0
- package/types/lib/ecosystems/rubyutils.d.ts +182 -0
- package/types/lib/ecosystems/rubyutils.d.ts.map +1 -0
- package/types/lib/ecosystems/rusi.d.ts +40 -0
- package/types/lib/ecosystems/rusi.d.ts.map +1 -0
- package/types/lib/ecosystems/sbtutils.d.ts +179 -0
- package/types/lib/ecosystems/sbtutils.d.ts.map +1 -0
- package/types/lib/ecosystems/tea.d.ts +180 -0
- package/types/lib/ecosystems/tea.d.ts.map +1 -0
- package/types/lib/ecosystems/utils.d.ts +41 -0
- package/types/lib/ecosystems/utils.d.ts.map +1 -0
- package/types/lib/ecosystems/zigResolver.d.ts +70 -0
- package/types/lib/ecosystems/zigResolver.d.ts.map +1 -0
- package/types/lib/evinser/db.d.ts +17 -0
- package/types/lib/evinser/db.d.ts.map +1 -0
- package/types/lib/evinser/evinser.d.ts +354 -0
- package/types/lib/evinser/evinser.d.ts.map +1 -0
- package/types/lib/evinser/scalasem.d.ts +15 -0
- package/types/lib/evinser/scalasem.d.ts.map +1 -0
- package/types/lib/evinser/swiftsem.d.ts +103 -0
- package/types/lib/evinser/swiftsem.d.ts.map +1 -0
- package/types/lib/helpers/annotationFormatter.d.ts +23 -0
- package/types/lib/helpers/annotationFormatter.d.ts.map +1 -0
- package/types/lib/helpers/bomSigner.d.ts +28 -0
- package/types/lib/helpers/bomSigner.d.ts.map +1 -0
- package/types/lib/helpers/exportUtils.d.ts +52 -0
- package/types/lib/helpers/exportUtils.d.ts.map +1 -0
- package/types/lib/helpers/remote/dependency-track.d.ts +23 -0
- package/types/lib/helpers/remote/dependency-track.d.ts.map +1 -0
- package/types/lib/helpers/versutils.d.ts +8 -0
- package/types/lib/helpers/versutils.d.ts.map +1 -0
- package/types/lib/helpers/vsixutils.d.ts +130 -0
- package/types/lib/helpers/vsixutils.d.ts.map +1 -0
- package/types/lib/inventory/agentFormulationParser.d.ts +21 -0
- package/types/lib/inventory/agentFormulationParser.d.ts.map +1 -0
- package/types/lib/inventory/aiCollector.d.ts +61 -0
- package/types/lib/inventory/aiCollector.d.ts.map +1 -0
- package/types/lib/inventory/aiInventory.d.ts +103 -0
- package/types/lib/inventory/aiInventory.d.ts.map +1 -0
- package/types/lib/inventory/aiModelVariants.d.ts +31 -0
- package/types/lib/inventory/aiModelVariants.d.ts.map +1 -0
- package/types/lib/inventory/aiOversightCollector.d.ts +28 -0
- package/types/lib/inventory/aiOversightCollector.d.ts.map +1 -0
- package/types/lib/inventory/aiProvenanceCollector.d.ts +13 -0
- package/types/lib/inventory/aiProvenanceCollector.d.ts.map +1 -0
- package/types/lib/inventory/analyzer.d.ts +157 -0
- package/types/lib/inventory/analyzer.d.ts.map +1 -0
- package/types/lib/inventory/analyzerScope.d.ts +106 -0
- package/types/lib/inventory/analyzerScope.d.ts.map +1 -0
- package/types/lib/inventory/astWorker.d.ts +9 -0
- package/types/lib/inventory/astWorker.d.ts.map +1 -0
- package/types/lib/inventory/atomUtils.d.ts +159 -0
- package/types/lib/inventory/atomUtils.d.ts.map +1 -0
- package/types/lib/inventory/auditCategories.d.ts +80 -0
- package/types/lib/inventory/auditCategories.d.ts.map +1 -0
- package/types/lib/inventory/bomUtils.d.ts +145 -0
- package/types/lib/inventory/bomUtils.d.ts.map +1 -0
- package/types/lib/inventory/cacheCommands.d.ts +28 -0
- package/types/lib/inventory/cacheCommands.d.ts.map +1 -0
- package/types/lib/inventory/cacheDir.d.ts +55 -0
- package/types/lib/inventory/cacheDir.d.ts.map +1 -0
- package/types/lib/inventory/cbomutils.d.ts +37 -0
- package/types/lib/inventory/cbomutils.d.ts.map +1 -0
- package/types/lib/inventory/cdxrs.d.ts +90 -0
- package/types/lib/inventory/cdxrs.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/azurePipelines.d.ts +27 -0
- package/types/lib/inventory/ciParsers/azurePipelines.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/circleCi.d.ts +27 -0
- package/types/lib/inventory/ciParsers/circleCi.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/common.d.ts +11 -0
- package/types/lib/inventory/ciParsers/common.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/githubActions.d.ts +38 -0
- package/types/lib/inventory/ciParsers/githubActions.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/gitlabCi.d.ts +26 -0
- package/types/lib/inventory/ciParsers/gitlabCi.d.ts.map +1 -0
- package/types/lib/inventory/ciParsers/jenkins.d.ts +26 -0
- package/types/lib/inventory/ciParsers/jenkins.d.ts.map +1 -0
- package/types/lib/inventory/citations.d.ts +90 -0
- package/types/lib/inventory/citations.d.ts.map +1 -0
- package/types/lib/inventory/communityAiConfigParser.d.ts +14 -0
- package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -0
- package/types/lib/inventory/containerRisk.d.ts +20 -0
- package/types/lib/inventory/containerRisk.d.ts.map +1 -0
- package/types/lib/inventory/cryptoAlgorithmFamily.d.ts +37 -0
- package/types/lib/inventory/cryptoAlgorithmFamily.d.ts.map +1 -0
- package/types/lib/inventory/deps.d.ts +140 -0
- package/types/lib/inventory/deps.d.ts.map +1 -0
- package/types/lib/inventory/depsUtils.d.ts +74 -0
- package/types/lib/inventory/depsUtils.d.ts.map +1 -0
- package/types/lib/inventory/display.d.ts +227 -0
- package/types/lib/inventory/display.d.ts.map +1 -0
- package/types/lib/inventory/dosai.d.ts +130 -0
- package/types/lib/inventory/dosai.d.ts.map +1 -0
- package/types/lib/inventory/dosaiParsers.d.ts +59 -0
- package/types/lib/inventory/dosaiParsers.d.ts.map +1 -0
- package/types/lib/inventory/dynamic.d.ts +25 -0
- package/types/lib/inventory/dynamic.d.ts.map +1 -0
- package/types/lib/inventory/envcontext.d.ts +377 -0
- package/types/lib/inventory/envcontext.d.ts.map +1 -0
- package/types/lib/inventory/evidenceUtils.d.ts +74 -0
- package/types/lib/inventory/evidenceUtils.d.ts.map +1 -0
- package/types/lib/inventory/fetchBatch.d.ts +127 -0
- package/types/lib/inventory/fetchBatch.d.ts.map +1 -0
- package/types/lib/inventory/fetchRate.d.ts +118 -0
- package/types/lib/inventory/fetchRate.d.ts.map +1 -0
- package/types/lib/inventory/forgeEnricher.d.ts +31 -0
- package/types/lib/inventory/forgeEnricher.d.ts.map +1 -0
- package/types/lib/inventory/formulationParsers.d.ts +50 -0
- package/types/lib/inventory/formulationParsers.d.ts.map +1 -0
- package/types/lib/inventory/gtfobins.d.ts +27 -0
- package/types/lib/inventory/gtfobins.d.ts.map +1 -0
- package/types/lib/inventory/hbom.d.ts +58 -0
- package/types/lib/inventory/hbom.d.ts.map +1 -0
- package/types/lib/inventory/hbomAnalysis.d.ts +56 -0
- package/types/lib/inventory/hbomAnalysis.d.ts.map +1 -0
- package/types/lib/inventory/hbomLoader.d.ts +7 -0
- package/types/lib/inventory/hbomLoader.d.ts.map +1 -0
- package/types/lib/inventory/hostTopology.d.ts +47 -0
- package/types/lib/inventory/hostTopology.d.ts.map +1 -0
- package/types/lib/inventory/inventoryStats.d.ts +42 -0
- package/types/lib/inventory/inventoryStats.d.ts.map +1 -0
- package/types/lib/inventory/jsonLike.d.ts +23 -0
- package/types/lib/inventory/jsonLike.d.ts.map +1 -0
- package/types/lib/inventory/licenseEnhancer.d.ts +70 -0
- package/types/lib/inventory/licenseEnhancer.d.ts.map +1 -0
- package/types/lib/inventory/lolbas.d.ts +16 -0
- package/types/lib/inventory/lolbas.d.ts.map +1 -0
- package/types/lib/inventory/mcp.d.ts +29 -0
- package/types/lib/inventory/mcp.d.ts.map +1 -0
- package/types/lib/inventory/mcpConfigParser.d.ts +20 -0
- package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -0
- package/types/lib/inventory/mcpDiscovery.d.ts +33 -0
- package/types/lib/inventory/mcpDiscovery.d.ts.map +1 -0
- package/types/lib/inventory/mcpPinning.d.ts +11 -0
- package/types/lib/inventory/mcpPinning.d.ts.map +1 -0
- package/types/lib/inventory/osPackageResolver.d.ts +49 -0
- package/types/lib/inventory/osPackageResolver.d.ts.map +1 -0
- package/types/lib/inventory/osinfo.d.ts +201 -0
- package/types/lib/inventory/osinfo.d.ts.map +1 -0
- package/types/lib/inventory/osqueryTransform.d.ts +84 -0
- package/types/lib/inventory/osqueryTransform.d.ts.map +1 -0
- package/types/lib/inventory/plugins.d.ts +58 -0
- package/types/lib/inventory/plugins.d.ts.map +1 -0
- package/types/lib/inventory/protobom.d.ts +71 -0
- package/types/lib/inventory/protobom.d.ts.map +1 -0
- package/types/lib/inventory/protobomLoader.d.ts +17 -0
- package/types/lib/inventory/protobomLoader.d.ts.map +1 -0
- package/types/lib/inventory/provenanceUtils.d.ts +98 -0
- package/types/lib/inventory/provenanceUtils.d.ts.map +1 -0
- package/types/lib/inventory/purl.d.ts +313 -0
- package/types/lib/inventory/purl.d.ts.map +1 -0
- package/types/lib/inventory/rustFormulationParser.d.ts +17 -0
- package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -0
- package/types/lib/inventory/sbomDocument.d.ts +59 -0
- package/types/lib/inventory/sbomDocument.d.ts.map +1 -0
- package/types/lib/inventory/source.d.ts +163 -0
- package/types/lib/inventory/source.d.ts.map +1 -0
- package/types/lib/inventory/spdx.d.ts +66 -0
- package/types/lib/inventory/spdx.d.ts.map +1 -0
- package/types/lib/inventory/spdxExpression.d.ts +58 -0
- package/types/lib/inventory/spdxExpression.d.ts.map +1 -0
- package/types/lib/inventory/spdxUtils.d.ts +12 -0
- package/types/lib/inventory/spdxUtils.d.ts.map +1 -0
- package/types/lib/inventory/table.d.ts +22 -0
- package/types/lib/inventory/table.d.ts.map +1 -0
- package/types/lib/inventory/traceRunner.d.ts +80 -0
- package/types/lib/inventory/traceRunner.d.ts.map +1 -0
- package/types/lib/inventory/unicodeScan.d.ts +46 -0
- package/types/lib/inventory/unicodeScan.d.ts.map +1 -0
- package/types/lib/managers/binary.d.ts +147 -0
- package/types/lib/managers/binary.d.ts.map +1 -0
- package/types/lib/managers/containerutils.d.ts +30 -0
- package/types/lib/managers/containerutils.d.ts.map +1 -0
- package/types/lib/managers/docker.d.ts +157 -0
- package/types/lib/managers/docker.d.ts.map +1 -0
- package/types/lib/managers/dockerConnection.d.ts +42 -0
- package/types/lib/managers/dockerConnection.d.ts.map +1 -0
- package/types/lib/managers/oci.d.ts +21 -0
- package/types/lib/managers/oci.d.ts.map +1 -0
- package/types/lib/managers/piptree.d.ts +13 -0
- package/types/lib/managers/piptree.d.ts.map +1 -0
- package/types/lib/parsers/cmakeCache.d.ts +70 -0
- package/types/lib/parsers/cmakeCache.d.ts.map +1 -0
- package/types/lib/parsers/gguf.d.ts +39 -0
- package/types/lib/parsers/gguf.d.ts.map +1 -0
- package/types/lib/parsers/gitAiNotes.d.ts +15 -0
- package/types/lib/parsers/gitAiNotes.d.ts.map +1 -0
- package/types/lib/parsers/gitmodules.d.ts +88 -0
- package/types/lib/parsers/gitmodules.d.ts.map +1 -0
- package/types/lib/parsers/htmlExtract.d.ts +34 -0
- package/types/lib/parsers/htmlExtract.d.ts.map +1 -0
- package/types/lib/parsers/huggingfaceManifest.d.ts +153 -0
- package/types/lib/parsers/huggingfaceManifest.d.ts.map +1 -0
- package/types/lib/parsers/huggingfaceUtils.d.ts +155 -0
- package/types/lib/parsers/huggingfaceUtils.d.ts.map +1 -0
- package/types/lib/parsers/iri.d.ts +68 -0
- package/types/lib/parsers/iri.d.ts.map +1 -0
- package/types/lib/parsers/npmrc.d.ts +33 -0
- package/types/lib/parsers/npmrc.d.ts.map +1 -0
- package/types/lib/parsers/ollama.d.ts +22 -0
- package/types/lib/parsers/ollama.d.ts.map +1 -0
- package/types/lib/parsers/xml.d.ts +47 -0
- package/types/lib/parsers/xml.d.ts.map +1 -0
- package/types/lib/server/server.d.ts +51 -0
- package/types/lib/server/server.d.ts.map +1 -0
- package/types/lib/stages/postgen/annotator.d.ts +36 -0
- package/types/lib/stages/postgen/annotator.d.ts.map +1 -0
- package/types/lib/stages/postgen/auditBom.d.ts +92 -0
- package/types/lib/stages/postgen/auditBom.d.ts.map +1 -0
- package/types/lib/stages/postgen/postgen.d.ts +59 -0
- package/types/lib/stages/postgen/postgen.d.ts.map +1 -0
- package/types/lib/stages/postgen/ruleEngine.d.ts +18 -0
- package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -0
- package/types/lib/stages/postgen/sortBom.d.ts +34 -0
- package/types/lib/stages/postgen/sortBom.d.ts.map +1 -0
- package/types/lib/stages/postgen/spdxConverter.d.ts +11 -0
- package/types/lib/stages/postgen/spdxConverter.d.ts.map +1 -0
- package/types/lib/stages/postgen/specVersionCompat.d.ts +71 -0
- package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -0
- package/types/lib/stages/pregen/envAudit.d.ts +14 -0
- package/types/lib/stages/pregen/envAudit.d.ts.map +1 -0
- package/types/lib/stages/pregen/pregen.d.ts +59 -0
- package/types/lib/stages/pregen/pregen.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/arborist/index.d.ts +47 -0
- package/types/lib/third-party/arborist/lib/arborist/index.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts +4 -0
- package/types/lib/third-party/arborist/lib/arborist/load-actual.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts +4 -0
- package/types/lib/third-party/arborist/lib/arborist/load-virtual.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/bin-links.d.ts +18 -0
- package/types/lib/third-party/arborist/lib/bin-links.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/calc-dep-flags.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts +9 -0
- package/types/lib/third-party/arborist/lib/case-insensitive-map.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/consistent-resolve.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/debug.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/debug.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/dep-valid.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/dep-valid.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/edge.d.ts +46 -0
- package/types/lib/third-party/arborist/lib/edge.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/from-path.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/from-path.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/gather-dep-set.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/index.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/index.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/inventory.d.ts +14 -0
- package/types/lib/third-party/arborist/lib/inventory.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/link.d.ts +18 -0
- package/types/lib/third-party/arborist/lib/link.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/node.d.ts +112 -0
- package/types/lib/third-party/arborist/lib/node.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/npm-extension.d.ts +18 -0
- package/types/lib/third-party/arborist/lib/npm-extension.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/override-resolves.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/override-resolves.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/override-set.d.ts +27 -0
- package/types/lib/third-party/arborist/lib/override-set.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/package-extensions.d.ts +36 -0
- package/types/lib/third-party/arborist/lib/package-extensions.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/printable.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/printable.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/proc-log.d.ts +20 -0
- package/types/lib/third-party/arborist/lib/proc-log.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/realpath.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/realpath.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/relpath.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/relpath.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts +54 -0
- package/types/lib/third-party/arborist/lib/shrinkwrap.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/spec-from-lock.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/tree-check.d.ts +3 -0
- package/types/lib/third-party/arborist/lib/tree-check.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts +13 -0
- package/types/lib/third-party/arborist/lib/validate-npm-package-name.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts +6 -0
- package/types/lib/third-party/arborist/lib/version-from-tgz.d.ts.map +1 -0
- package/types/lib/third-party/arborist/lib/yarn-lock.d.ts +35 -0
- package/types/lib/third-party/arborist/lib/yarn-lock.d.ts.map +1 -0
- package/types/lib/validator/bomValidator.d.ts +40 -0
- package/types/lib/validator/bomValidator.d.ts.map +1 -0
- package/types/lib/validator/complianceEngine.d.ts +72 -0
- package/types/lib/validator/complianceEngine.d.ts.map +1 -0
- package/types/lib/validator/complianceRules.d.ts +61 -0
- package/types/lib/validator/complianceRules.d.ts.map +1 -0
- package/types/lib/validator/index.d.ts +101 -0
- package/types/lib/validator/index.d.ts.map +1 -0
- package/types/lib/validator/reporters/annotations.d.ts +37 -0
- package/types/lib/validator/reporters/annotations.d.ts.map +1 -0
- package/types/lib/validator/reporters/console.d.ts +34 -0
- package/types/lib/validator/reporters/console.d.ts.map +1 -0
- package/types/lib/validator/reporters/index.d.ts +30 -0
- package/types/lib/validator/reporters/index.d.ts.map +1 -0
- package/types/lib/validator/reporters/json.d.ts +11 -0
- package/types/lib/validator/reporters/json.d.ts.map +1 -0
- package/types/lib/validator/reporters/sarif.d.ts +22 -0
- package/types/lib/validator/reporters/sarif.d.ts.map +1 -0
- package/mod.d.ts +0 -7
- package/mod.js +0 -22
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEBUG_MODE,
|
|
3
|
+
isSecureMode,
|
|
4
|
+
readEnvironmentVariable,
|
|
5
|
+
recordSensitiveFileRead,
|
|
6
|
+
} from "../core/activity.js";
|
|
7
|
+
import { safeExistsSync } from "../core/fs.js";
|
|
8
|
+
import { fallbackBomRef } from "../inventory/purl.js";
|
|
9
|
+
import { parseBuildZigZon, parseBuildZigZonContent } from "./parsers-zig.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Zig transitive dependency resolver.
|
|
13
|
+
*
|
|
14
|
+
* Zig has no central registry. A dependency is a content-addressed archive
|
|
15
|
+
* whose identity is its `.hash`. The same hash string is used as a filesystem
|
|
16
|
+
* lookup key across every Zig version — only the container differs (in-tree
|
|
17
|
+
* `zig-pkg/` directory, extracted cache directory, or cache `.tar.gz`
|
|
18
|
+
* archive). This module walks the full dependency graph by locating each
|
|
19
|
+
* dependency's `build.zig.zon` through those containers, then emits a flat
|
|
20
|
+
* component list plus a CycloneDX `dependencies[]` edge list.
|
|
21
|
+
*
|
|
22
|
+
* Resolution is a pure filesystem walk keyed on hashes already present in the
|
|
23
|
+
* manifests. No subprocess, no network, no toolchain. Populating the cache
|
|
24
|
+
* (`zig build --fetch`) is the user's job.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Hash validation — path-traversal guard
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Validate a Zig `.hash` string against the two known encodings before it is
|
|
33
|
+
* used to build a filesystem path.
|
|
34
|
+
*
|
|
35
|
+
* A `.hash` is attacker-controlled data from a manifest. Joining it blindly
|
|
36
|
+
* into `<cache>/p/<hash>/build.zig.zon` would let a `../` in the hash escape
|
|
37
|
+
* the cache directory. The two legal encodings never contain path separators
|
|
38
|
+
* or `..` segments, so any hash that does not match one of them is refused
|
|
39
|
+
* before the filesystem is touched.
|
|
40
|
+
*
|
|
41
|
+
* The two forms are:
|
|
42
|
+
* 1. 0.14+ — `<name>-<version>-<base64url digest>` where the digest uses
|
|
43
|
+
* `[A-Za-z0-9_-]`.
|
|
44
|
+
* 2. Pre-0.14 — hex multihash, all hex digits (at least 4 characters).
|
|
45
|
+
*
|
|
46
|
+
* @param {string|undefined} hash Hash field value from the manifest
|
|
47
|
+
* @returns {boolean} `true` only when the hash matches a known Zig encoding
|
|
48
|
+
*/
|
|
49
|
+
export function isValidZigHash(hash) {
|
|
50
|
+
if (!hash || typeof hash !== "string") {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
// Reject any path separator or parent-directory sequence regardless of the
|
|
54
|
+
// regex below — a doubled safety net that costs nothing.
|
|
55
|
+
if (hash.includes("/") || hash.includes("\\") || hash.includes("..")) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
// 0.14+ form: <identifier>-<version>-<base64url digest>
|
|
59
|
+
if (/^[A-Za-z_][A-Za-z0-9_]*-\d[^-]*-[A-Za-z0-9_-]+$/.test(hash)) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
// Pre-0.14 hex multihash (all hex digits, at least 4)
|
|
63
|
+
if (/^[0-9a-fA-F]{4,}$/.test(hash)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
// Global cache resolution
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Resolve the Zig global package cache directory.
|
|
75
|
+
*
|
|
76
|
+
* Order: `ZIG_GLOBAL_CACHE_DIR`, then `$XDG_CACHE_HOME/zig`, then
|
|
77
|
+
* `~/.cache/zig` on Linux **and macOS** (macOS uses `~/.cache/zig`, *not*
|
|
78
|
+
* `Library/Caches` — confirmed empirically), then `%LOCALAPPDATA%\zig` on
|
|
79
|
+
* Windows.
|
|
80
|
+
*
|
|
81
|
+
* @returns {string|null} Absolute cache directory path, or null when it cannot
|
|
82
|
+
* be determined
|
|
83
|
+
*/
|
|
84
|
+
export function getZigGlobalCacheDir() {
|
|
85
|
+
const explicit = readEnvironmentVariable("ZIG_GLOBAL_CACHE_DIR");
|
|
86
|
+
if (explicit) {
|
|
87
|
+
return explicit;
|
|
88
|
+
}
|
|
89
|
+
if (process.platform === "win32") {
|
|
90
|
+
const localAppData = readEnvironmentVariable("LOCALAPPDATA");
|
|
91
|
+
if (localAppData) {
|
|
92
|
+
return `${localAppData}\\zig`;
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const xdgCache = readEnvironmentVariable("XDG_CACHE_HOME");
|
|
97
|
+
if (xdgCache) {
|
|
98
|
+
return `${xdgCache}/zig`;
|
|
99
|
+
}
|
|
100
|
+
const home = readEnvironmentVariable("HOME");
|
|
101
|
+
if (home) {
|
|
102
|
+
return `${home}/.cache/zig`;
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
// Manifest location
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Attempt to read a dependency's manifest from the in-tree
|
|
113
|
+
* `zig-pkg/<hash>/build.zig.zon` directory.
|
|
114
|
+
*
|
|
115
|
+
* This is the Zig 0.16+ layout and is preferred because it lives inside the
|
|
116
|
+
* scan root — no home-directory access, no `recordSensitiveFileRead`, and it
|
|
117
|
+
* works under secure mode.
|
|
118
|
+
*
|
|
119
|
+
* @param {string} hash Validated package hash
|
|
120
|
+
* @param {string} projectRoot The project scan root
|
|
121
|
+
* @returns {{ path: string, content: null } | null}
|
|
122
|
+
*/
|
|
123
|
+
function tryInTreeManifest(hash, projectRoot) {
|
|
124
|
+
const candidate = `${projectRoot}/zig-pkg/${hash}/build.zig.zon`;
|
|
125
|
+
if (safeExistsSync(candidate)) {
|
|
126
|
+
return { path: candidate, content: null };
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Attempt to locate a dependency's manifest in the extracted global cache
|
|
133
|
+
* directory `<cache>/p/<hash>/build.zig.zon`.
|
|
134
|
+
*
|
|
135
|
+
* This is the Zig 0.14/0.15 layout. Reads leave the scan root, so the path is
|
|
136
|
+
* recorded via `recordSensitiveFileRead`.
|
|
137
|
+
*
|
|
138
|
+
* @param {string} hash Validated package hash
|
|
139
|
+
* @param {string} cacheDir Global cache directory
|
|
140
|
+
* @returns {{ path: string, content: null } | null}
|
|
141
|
+
*/
|
|
142
|
+
function tryCacheDirManifest(hash, cacheDir) {
|
|
143
|
+
if (!cacheDir) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const candidate = `${cacheDir}/p/${hash}/build.zig.zon`;
|
|
147
|
+
if (!safeExistsSync(candidate)) {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
recordSensitiveFileRead(candidate, {
|
|
151
|
+
label: "Zig global cache manifest (extracted directory)",
|
|
152
|
+
});
|
|
153
|
+
return { path: candidate, content: null };
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Read the `build.zig.zon` entry from a `.tar.gz` cache archive by streaming
|
|
158
|
+
* the single entry, never extracting the whole archive to disk.
|
|
159
|
+
*
|
|
160
|
+
* This is the Zig 0.16 global-cache archive form. The entry lives at
|
|
161
|
+
* `<hash>/build.zig.zon` inside the archive.
|
|
162
|
+
*
|
|
163
|
+
* @param {string} hash Validated package hash
|
|
164
|
+
* @param {string} cacheDir Global cache directory
|
|
165
|
+
* @returns {Promise<{ path: null, content: string } | null>}
|
|
166
|
+
*/
|
|
167
|
+
async function tryArchiveManifest(hash, cacheDir) {
|
|
168
|
+
if (!cacheDir) {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
const archivePath = `${cacheDir}/p/${hash}.tar.gz`;
|
|
172
|
+
if (!safeExistsSync(archivePath)) {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
recordSensitiveFileRead(archivePath, {
|
|
176
|
+
label: "Zig global cache archive",
|
|
177
|
+
});
|
|
178
|
+
// Archives are packed either with the hash directory as the single root
|
|
179
|
+
// entry or with the manifest at the archive root, and tar writers vary on
|
|
180
|
+
// whether they prefix paths with `./`. Matching on the trailing path rather
|
|
181
|
+
// than one exact string covers all of those without extracting anything.
|
|
182
|
+
const isManifestEntry = (entryPath) =>
|
|
183
|
+
entryPath.replace(/^\.\//, "") === "build.zig.zon" ||
|
|
184
|
+
entryPath.endsWith("/build.zig.zon");
|
|
185
|
+
try {
|
|
186
|
+
const { t: listTarEntries } = await import("tar");
|
|
187
|
+
const content = await new Promise((resolve, reject) => {
|
|
188
|
+
let result = null;
|
|
189
|
+
listTarEntries({
|
|
190
|
+
file: archivePath,
|
|
191
|
+
gzip: true,
|
|
192
|
+
filter: (p) => result === null && isManifestEntry(p),
|
|
193
|
+
onentry: (entry) => {
|
|
194
|
+
const chunks = [];
|
|
195
|
+
entry.on("data", (chunk) => chunks.push(chunk));
|
|
196
|
+
entry.on("end", () => {
|
|
197
|
+
result = Buffer.concat(chunks).toString("utf-8");
|
|
198
|
+
});
|
|
199
|
+
},
|
|
200
|
+
})
|
|
201
|
+
.then(() => resolve(result))
|
|
202
|
+
.catch(reject);
|
|
203
|
+
});
|
|
204
|
+
if (content) {
|
|
205
|
+
return { path: null, content };
|
|
206
|
+
}
|
|
207
|
+
return null;
|
|
208
|
+
} catch (err) {
|
|
209
|
+
if (DEBUG_MODE) {
|
|
210
|
+
console.warn(
|
|
211
|
+
`Failed to read build.zig.zon from ${archivePath}: ${err.message}`,
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Locate a dependency's `build.zig.zon` by trying, in order, the in-tree
|
|
220
|
+
* `zig-pkg/` directory, the extracted cache directory, and the cache archive.
|
|
221
|
+
*
|
|
222
|
+
* The in-tree path is tried first because it is inside the scan root and
|
|
223
|
+
* needs no sensitive-file recording or secure-mode bypass. Global-cache
|
|
224
|
+
* reads are skipped under secure mode; the caller degrades to direct-only
|
|
225
|
+
* output with the component still present.
|
|
226
|
+
*
|
|
227
|
+
* @param {string} hash Validated package hash
|
|
228
|
+
* @param {string} projectRoot The project scan root
|
|
229
|
+
* @param {string|null} cacheDir Global cache directory (null when unresolved)
|
|
230
|
+
* @returns {Promise<{ path: string|null, content: string|null } | null>}
|
|
231
|
+
*/
|
|
232
|
+
async function findManifestForHash(hash, projectRoot, cacheDir) {
|
|
233
|
+
// 1. In-tree zig-pkg/ — always tried, works under secure mode.
|
|
234
|
+
const inTree = tryInTreeManifest(hash, projectRoot);
|
|
235
|
+
if (inTree) {
|
|
236
|
+
return inTree;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Global-cache reads leave the scan root.
|
|
240
|
+
if (isSecureMode) {
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// 2. Extracted cache directory (0.14/0.15).
|
|
245
|
+
const cacheDirResult = tryCacheDirManifest(hash, cacheDir);
|
|
246
|
+
if (cacheDirResult) {
|
|
247
|
+
return cacheDirResult;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// 3. Cache archive (0.16 global-cache form).
|
|
251
|
+
const archiveResult = await tryArchiveManifest(hash, cacheDir);
|
|
252
|
+
return archiveResult;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// ---------------------------------------------------------------------------
|
|
256
|
+
// Component helpers
|
|
257
|
+
// ---------------------------------------------------------------------------
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Extract the `cdx:zig:hash` property value from a parsed component.
|
|
261
|
+
*
|
|
262
|
+
* @param {object} pkg Component built by `buildZigPackage`
|
|
263
|
+
* @returns {string|undefined} The raw hash string, or undefined
|
|
264
|
+
*/
|
|
265
|
+
function getHashFromComponent(pkg) {
|
|
266
|
+
const prop = pkg.properties?.find((p) => p.name === "cdx:zig:hash");
|
|
267
|
+
return prop?.value;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Parse a manifest from a file path or raw ZON content.
|
|
272
|
+
*
|
|
273
|
+
* @param {{ path: string|null, content: string|null }} location
|
|
274
|
+
* @returns {{ pkgList: object[] } | null}
|
|
275
|
+
*/
|
|
276
|
+
function parseManifestAt(location) {
|
|
277
|
+
if (!location) {
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
if (typeof location.content === "string") {
|
|
281
|
+
return parseBuildZigZonContent(location.content);
|
|
282
|
+
}
|
|
283
|
+
if (location.path) {
|
|
284
|
+
return parseBuildZigZon(location.path);
|
|
285
|
+
}
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// ---------------------------------------------------------------------------
|
|
290
|
+
// Public API
|
|
291
|
+
// ---------------------------------------------------------------------------
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Walk the full Zig dependency graph starting from a root `build.zig.zon`,
|
|
295
|
+
* returning a flat component list and a CycloneDX `dependencies[]` edge list.
|
|
296
|
+
*
|
|
297
|
+
* For each dependency carrying a `.hash`, the resolver locates the
|
|
298
|
+
* dependency's own `build.zig.zon` and recurses. Hashes are memoised so
|
|
299
|
+
* diamond dependencies do not re-read manifests.
|
|
300
|
+
*
|
|
301
|
+
* Unresolvable hashes (cache not populated) degrade gracefully: the component
|
|
302
|
+
* still appears with no outgoing edges, and the count is returned so callers
|
|
303
|
+
* can report a partial graph.
|
|
304
|
+
*
|
|
305
|
+
* @param {string} rootZonFile Absolute path to the root `build.zig.zon`
|
|
306
|
+
* @param {string} projectRoot The project scan root
|
|
307
|
+
* @param {object} [_options] CLI options (reserved for future use)
|
|
308
|
+
* @returns {Promise<{ pkgList: object[], dependencies: object[], parentComponent: object, unresolvedCount: number }>}
|
|
309
|
+
*/
|
|
310
|
+
export async function resolveZigGraph(rootZonFile, projectRoot, _options = {}) {
|
|
311
|
+
const cacheDir = getZigGlobalCacheDir();
|
|
312
|
+
|
|
313
|
+
// hash → the dependency components declared by the manifest that hash
|
|
314
|
+
// resolved to, or null when no container held it. Memoised in both
|
|
315
|
+
// directions so a diamond dependency reads its manifest once and an
|
|
316
|
+
// unpopulated cache is probed once per hash rather than once per edge.
|
|
317
|
+
const hashToPkgs = new Map();
|
|
318
|
+
|
|
319
|
+
// Component map: bom-ref → component. Deduplicates across the graph.
|
|
320
|
+
const components = new Map();
|
|
321
|
+
|
|
322
|
+
// Edge map: bom-ref → Set<bom-ref>. Keys are parents; values are their
|
|
323
|
+
// direct dependencies' bom-refs.
|
|
324
|
+
const edges = new Map();
|
|
325
|
+
|
|
326
|
+
// Hashes whose manifest could not be located in any container.
|
|
327
|
+
const unresolvedHashes = new Set();
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Record a set of dependency components and walk each one's own hash,
|
|
331
|
+
* returning their bom-refs so the caller can attach an edge.
|
|
332
|
+
*
|
|
333
|
+
* @param {object[]} pkgs Dependency components from one manifest
|
|
334
|
+
* @returns {Promise<string[]>} Their bom-refs, in declaration order
|
|
335
|
+
*/
|
|
336
|
+
async function walkDeps(pkgs) {
|
|
337
|
+
const refs = [];
|
|
338
|
+
for (const pkg of pkgs) {
|
|
339
|
+
const ref = pkg["bom-ref"];
|
|
340
|
+
refs.push(ref);
|
|
341
|
+
if (!components.has(ref)) {
|
|
342
|
+
components.set(ref, pkg);
|
|
343
|
+
}
|
|
344
|
+
if (edges.has(ref)) {
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
// Claim the edge before recursing. A manifest graph is content-addressed
|
|
348
|
+
// and so cannot legitimately contain a cycle, but a hand-written or
|
|
349
|
+
// tampered cache can, and an unclaimed edge would recurse forever.
|
|
350
|
+
edges.set(ref, new Set());
|
|
351
|
+
const hash = getHashFromComponent(pkg);
|
|
352
|
+
if (!hash) {
|
|
353
|
+
continue;
|
|
354
|
+
}
|
|
355
|
+
if (!isValidZigHash(hash)) {
|
|
356
|
+
unresolvedHashes.add(hash);
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
const transitives = await resolveHash(hash);
|
|
360
|
+
if (transitives === null) {
|
|
361
|
+
unresolvedHashes.add(hash);
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
364
|
+
edges.set(ref, new Set(await walkDeps(transitives)));
|
|
365
|
+
}
|
|
366
|
+
return refs;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Locate and parse the manifest a hash names, returning the dependency
|
|
371
|
+
* components it declares.
|
|
372
|
+
*
|
|
373
|
+
* @param {string} hash Validated package hash
|
|
374
|
+
* @returns {Promise<object[]|null>} Declared dependencies, or null when the
|
|
375
|
+
* manifest cannot be found in any container
|
|
376
|
+
*/
|
|
377
|
+
async function resolveHash(hash) {
|
|
378
|
+
if (hashToPkgs.has(hash)) {
|
|
379
|
+
return hashToPkgs.get(hash);
|
|
380
|
+
}
|
|
381
|
+
const location = await findManifestForHash(hash, projectRoot, cacheDir);
|
|
382
|
+
const parsed = location ? parseManifestAt(location) : null;
|
|
383
|
+
const pkgs = parsed ? parsed.pkgList : location ? [] : null;
|
|
384
|
+
hashToPkgs.set(hash, pkgs);
|
|
385
|
+
return pkgs;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
const { pkgList: rootPkgs, parentComponent } = parseBuildZigZon(rootZonFile);
|
|
389
|
+
|
|
390
|
+
// The parent component reaches the BOM through `metadata.component`, which
|
|
391
|
+
// carries no purl, so the graph needs a ref derived the same way the rest of
|
|
392
|
+
// the pipeline derives one for a purl-less component.
|
|
393
|
+
parentComponent["bom-ref"] = fallbackBomRef(parentComponent);
|
|
394
|
+
|
|
395
|
+
const rootDepRefs = await walkDeps(rootPkgs);
|
|
396
|
+
edges.set(parentComponent["bom-ref"], new Set(rootDepRefs));
|
|
397
|
+
|
|
398
|
+
const pkgList = Array.from(components.values());
|
|
399
|
+
const dependencies = Array.from(edges.entries()).map(([ref, deps]) => ({
|
|
400
|
+
ref,
|
|
401
|
+
dependsOn: Array.from(deps),
|
|
402
|
+
}));
|
|
403
|
+
|
|
404
|
+
return {
|
|
405
|
+
pkgList,
|
|
406
|
+
dependencies,
|
|
407
|
+
parentComponent,
|
|
408
|
+
unresolvedCount: unresolvedHashes.size,
|
|
409
|
+
};
|
|
410
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
class Model {
|
|
2
|
+
constructor(tableName) {
|
|
3
|
+
this.tableName = tableName;
|
|
4
|
+
this.store = new Map();
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
async init() {
|
|
8
|
+
this.store.clear();
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
async findByPk(purl) {
|
|
12
|
+
if (this.store.has(purl)) {
|
|
13
|
+
const record = this.store.get(purl);
|
|
14
|
+
let parsedData;
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
parsedData = JSON.parse(record.dataStr);
|
|
18
|
+
} catch (_e) {
|
|
19
|
+
parsedData = record.dataStr;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
purl: record.purl,
|
|
24
|
+
data: parsedData,
|
|
25
|
+
createdAt: record.createdAt,
|
|
26
|
+
updatedAt: record.updatedAt,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async findOrCreate(options) {
|
|
34
|
+
const { where, defaults } = options;
|
|
35
|
+
const existing = await this.findByPk(where.purl);
|
|
36
|
+
|
|
37
|
+
if (existing) {
|
|
38
|
+
return [existing, false];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let dataStr;
|
|
42
|
+
if (typeof defaults.data === "string") {
|
|
43
|
+
dataStr = defaults.data;
|
|
44
|
+
} else {
|
|
45
|
+
dataStr = JSON.stringify(defaults.data);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const now = new Date().toISOString();
|
|
49
|
+
const searchStr = dataStr.toLowerCase();
|
|
50
|
+
|
|
51
|
+
const record = {
|
|
52
|
+
purl: defaults.purl,
|
|
53
|
+
dataStr: dataStr,
|
|
54
|
+
searchStr: searchStr,
|
|
55
|
+
createdAt: now,
|
|
56
|
+
updatedAt: now,
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
this.store.set(defaults.purl, record);
|
|
60
|
+
|
|
61
|
+
let parsedData;
|
|
62
|
+
try {
|
|
63
|
+
parsedData = JSON.parse(record.dataStr);
|
|
64
|
+
} catch (_e) {
|
|
65
|
+
parsedData = record.dataStr;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const instance = {
|
|
69
|
+
purl: record.purl,
|
|
70
|
+
data: parsedData,
|
|
71
|
+
createdAt: record.createdAt,
|
|
72
|
+
updatedAt: record.updatedAt,
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
return [instance, true];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async findAll(options) {
|
|
79
|
+
const results = [];
|
|
80
|
+
let searchTerm = null;
|
|
81
|
+
|
|
82
|
+
if (options?.where?.data?.like) {
|
|
83
|
+
searchTerm = options.where.data.like.replace(/%/g, "").toLowerCase();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
for (const record of this.store.values()) {
|
|
87
|
+
let matches = true;
|
|
88
|
+
|
|
89
|
+
if (searchTerm) {
|
|
90
|
+
if (!record.searchStr.includes(searchTerm)) {
|
|
91
|
+
matches = false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (matches) {
|
|
96
|
+
let parsedData;
|
|
97
|
+
try {
|
|
98
|
+
parsedData = JSON.parse(record.dataStr);
|
|
99
|
+
} catch (_e) {
|
|
100
|
+
parsedData = record.dataStr;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
results.push({
|
|
104
|
+
purl: record.purl,
|
|
105
|
+
data: parsedData,
|
|
106
|
+
createdAt: record.createdAt,
|
|
107
|
+
updatedAt: record.updatedAt,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return results;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Create or load the in-memory Namespaces, Usages, and DataFlows models.
|
|
118
|
+
*
|
|
119
|
+
* Initialises each model and returns a sequelize-like handle along with the
|
|
120
|
+
* model references used by evinse for persisting slice evidence.
|
|
121
|
+
*
|
|
122
|
+
* @returns {Promise<{ sequelize: { close: () => boolean }, Namespaces: Object, Usages: Object, DataFlows: Object }>}
|
|
123
|
+
*/
|
|
124
|
+
export const createOrLoad = async () => {
|
|
125
|
+
const Namespaces = new Model("Namespaces");
|
|
126
|
+
const Usages = new Model("Usages");
|
|
127
|
+
const DataFlows = new Model("DataFlows");
|
|
128
|
+
|
|
129
|
+
await Namespaces.init();
|
|
130
|
+
await Usages.init();
|
|
131
|
+
await DataFlows.init();
|
|
132
|
+
|
|
133
|
+
const sequelize = {
|
|
134
|
+
close: () => {
|
|
135
|
+
return true;
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
return {
|
|
140
|
+
sequelize,
|
|
141
|
+
Namespaces,
|
|
142
|
+
Usages,
|
|
143
|
+
DataFlows,
|
|
144
|
+
};
|
|
145
|
+
};
|