@cdxgen/cdxgen 13.3.0 → 13.4.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.
- package/README.md +9 -6
- package/bin/cdxgen.js +90 -26
- package/bin/evinse.js +18 -1
- package/bin/repl.js +86 -0
- package/bin/sign.js +45 -15
- package/bin/tracebom.js +5 -1
- package/bin/validate.js +84 -18
- package/bin/verify.js +155 -86
- package/data/helpers/init.gradle +46 -21
- package/data/remediations.json +61 -0
- package/data/rules/dependency-sources.yaml +67 -0
- package/data/rules/scala-evidence.yaml +115 -0
- package/lib/audit/index.js +38 -6
- package/lib/cli/index.js +113 -54
- package/lib/cli/jsBom.js +50 -29
- package/lib/cli/jvmBom.js +665 -138
- package/lib/cli/managedBom.js +320 -200
- package/lib/cli/nativeBom.js +139 -30
- package/lib/core/activity.js +12 -0
- package/lib/core/env.js +17 -9
- package/lib/core/fs.js +3 -2
- package/lib/core/httpClient.js +159 -24
- package/lib/core/pluginRun.js +184 -0
- package/lib/core/processTree.js +100 -0
- package/lib/core/runState.js +39 -0
- package/lib/core/toml.js +72 -0
- package/lib/ecosystems/asarutils.js +4 -2
- package/lib/ecosystems/bunutils.js +5 -7
- package/lib/ecosystems/cargoCache.js +231 -8
- package/lib/ecosystems/cmakeResolver.js +10 -21
- package/lib/ecosystems/cppBuildContext.js +631 -0
- package/lib/ecosystems/cppEvidence.js +337 -22
- package/lib/ecosystems/cppIncludeResolver.js +294 -0
- package/lib/ecosystems/denoutils.js +93 -66
- package/lib/ecosystems/ecosystems.js +1967 -788
- package/lib/ecosystems/golem.js +28 -12
- package/lib/ecosystems/gradleutils.js +314 -30
- package/lib/ecosystems/jsEvidence.js +85 -24
- package/lib/ecosystems/kosi.js +21 -4
- package/lib/ecosystems/npmutils.js +64 -0
- package/lib/ecosystems/parsers-dotnet.js +567 -151
- package/lib/ecosystems/parsers-elm.js +46 -28
- package/lib/ecosystems/parsers-gleam.js +3 -4
- package/lib/ecosystems/parsers-go.js +324 -61
- package/lib/ecosystems/parsers-js.js +92 -26
- package/lib/ecosystems/parsers-julia.js +2 -3
- package/lib/ecosystems/parsers-jvm.js +204 -12
- package/lib/ecosystems/parsers-misc.js +182 -55
- package/lib/ecosystems/parsers-python.js +141 -10
- package/lib/ecosystems/parsers-rust.js +4 -4
- package/lib/ecosystems/parsers-terraform.js +1573 -19
- package/lib/ecosystems/pythonutils.js +102 -6
- package/lib/ecosystems/remote/huggingface.js +3 -0
- package/lib/ecosystems/rubyutils.js +67 -17
- package/lib/ecosystems/rusi.js +22 -9
- package/lib/ecosystems/sbtutils.js +243 -187
- package/lib/ecosystems/scalacliutils.js +342 -0
- package/lib/ecosystems/scalasem.js +2618 -0
- package/lib/ecosystems/terraformRegistry.js +288 -0
- package/lib/ecosystems/utils.js +2 -0
- package/lib/ecosystems/vendoredCode.js +156 -0
- package/lib/evinser/evinser.js +578 -69
- package/lib/helpers/agenticToolutils.js +2 -2
- package/lib/helpers/bomSigner.js +576 -128
- package/lib/inventory/aiCollector.js +4 -1
- package/lib/inventory/analyzer.js +110 -127
- package/lib/inventory/atomUtils.js +171 -48
- package/lib/inventory/auditCategories.js +7 -0
- package/lib/inventory/buildToolRateLimit.js +144 -0
- package/lib/inventory/cacheCommands.js +2 -1
- package/lib/inventory/cmakeBuildDirs.js +254 -0
- package/lib/inventory/deps.js +501 -124
- package/lib/inventory/dosai.js +248 -44
- package/lib/inventory/dosaiParsers.js +310 -15
- package/lib/inventory/dynamic.js +52 -6
- package/lib/inventory/evidenceUtils.js +154 -109
- package/lib/inventory/fetchBatch.js +574 -38
- package/lib/inventory/fetchDiskCache.js +597 -0
- package/lib/inventory/forgeEnricher.js +14 -5
- package/lib/inventory/jvmLocalRepos.js +917 -0
- package/lib/inventory/mcpConfigParser.js +2 -3
- package/lib/inventory/parentSelection.js +146 -0
- package/lib/inventory/rustFormulationParser.js +3 -4
- package/lib/inventory/scalaCoords.js +153 -0
- package/lib/inventory/source.js +8 -8
- package/lib/inventory/spdx.js +101 -0
- package/lib/inventory/traceRunner.js +88 -7
- package/lib/inventory/tracedCrypto.js +294 -0
- package/lib/managers/docker.js +33 -32
- package/lib/managers/oci.js +24 -2
- package/lib/parsers/cmakeCache.js +69 -0
- package/lib/parsers/cmakeLists.js +16 -2
- package/lib/parsers/cmakePresets.js +400 -0
- package/lib/parsers/compileCommands.js +557 -0
- package/lib/parsers/strictJson.js +322 -0
- package/lib/parsers/terraformConfig.js +1073 -0
- package/lib/parsers/terraformSource.js +652 -0
- package/lib/server/server.js +23 -0
- package/lib/stages/postgen/introspection/markers.js +1 -1
- package/lib/stages/postgen/postgen.js +15 -1
- package/lib/stages/postgen/specVersionCompat.js +32 -0
- package/lib/validator/index.js +25 -10
- package/lib/validator/reporters/json.js +1 -0
- package/package.json +21 -21
- package/types/lib/audit/index.d.ts.map +1 -1
- package/types/lib/cli/index.d.ts.map +1 -1
- package/types/lib/cli/jsBom.d.ts.map +1 -1
- package/types/lib/cli/jvmBom.d.ts +24 -1
- package/types/lib/cli/jvmBom.d.ts.map +1 -1
- package/types/lib/cli/managedBom.d.ts +7 -4
- package/types/lib/cli/managedBom.d.ts.map +1 -1
- package/types/lib/cli/nativeBom.d.ts +3 -1
- package/types/lib/cli/nativeBom.d.ts.map +1 -1
- package/types/lib/core/activity.d.ts.map +1 -1
- package/types/lib/core/env.d.ts +9 -0
- package/types/lib/core/env.d.ts.map +1 -1
- package/types/lib/core/fs.d.ts.map +1 -1
- package/types/lib/core/httpClient.d.ts +13 -8
- package/types/lib/core/httpClient.d.ts.map +1 -1
- package/types/lib/core/pluginRun.d.ts +97 -0
- package/types/lib/core/pluginRun.d.ts.map +1 -0
- package/types/lib/core/processTree.d.ts +36 -0
- package/types/lib/core/processTree.d.ts.map +1 -0
- package/types/lib/core/runState.d.ts +29 -0
- package/types/lib/core/runState.d.ts.map +1 -0
- package/types/lib/core/toml.d.ts +20 -0
- package/types/lib/core/toml.d.ts.map +1 -0
- package/types/lib/ecosystems/asarutils.d.ts.map +1 -1
- package/types/lib/ecosystems/bunutils.d.ts.map +1 -1
- package/types/lib/ecosystems/cargoCache.d.ts +12 -0
- package/types/lib/ecosystems/cargoCache.d.ts.map +1 -1
- package/types/lib/ecosystems/cmakeResolver.d.ts +5 -3
- package/types/lib/ecosystems/cmakeResolver.d.ts.map +1 -1
- package/types/lib/ecosystems/cppBuildContext.d.ts +55 -0
- package/types/lib/ecosystems/cppBuildContext.d.ts.map +1 -0
- package/types/lib/ecosystems/cppEvidence.d.ts +18 -2
- package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -1
- package/types/lib/ecosystems/cppIncludeResolver.d.ts +92 -0
- package/types/lib/ecosystems/cppIncludeResolver.d.ts.map +1 -0
- package/types/lib/ecosystems/denoutils.d.ts +9 -3
- package/types/lib/ecosystems/denoutils.d.ts.map +1 -1
- package/types/lib/ecosystems/ecosystems.d.ts +62 -13
- package/types/lib/ecosystems/ecosystems.d.ts.map +1 -1
- package/types/lib/ecosystems/golem.d.ts.map +1 -1
- package/types/lib/ecosystems/gradleutils.d.ts +50 -0
- package/types/lib/ecosystems/gradleutils.d.ts.map +1 -1
- package/types/lib/ecosystems/jsEvidence.d.ts.map +1 -1
- package/types/lib/ecosystems/kosi.d.ts.map +1 -1
- package/types/lib/ecosystems/npmutils.d.ts +15 -0
- package/types/lib/ecosystems/npmutils.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-dotnet.d.ts +118 -4
- package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-elm.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-gleam.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-go.d.ts +44 -2
- package/types/lib/ecosystems/parsers-go.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-js.d.ts +6 -1
- package/types/lib/ecosystems/parsers-js.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-julia.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-jvm.d.ts +46 -1
- package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-misc.d.ts +3 -1
- package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-python.d.ts +53 -3
- package/types/lib/ecosystems/parsers-python.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-terraform.d.ts +38 -21
- package/types/lib/ecosystems/parsers-terraform.d.ts.map +1 -1
- package/types/lib/ecosystems/pythonutils.d.ts +27 -2
- package/types/lib/ecosystems/pythonutils.d.ts.map +1 -1
- package/types/lib/ecosystems/remote/huggingface.d.ts.map +1 -1
- package/types/lib/ecosystems/rubyutils.d.ts +21 -1
- package/types/lib/ecosystems/rubyutils.d.ts.map +1 -1
- package/types/lib/ecosystems/rusi.d.ts.map +1 -1
- package/types/lib/ecosystems/sbtutils.d.ts +88 -2
- package/types/lib/ecosystems/sbtutils.d.ts.map +1 -1
- package/types/lib/ecosystems/scalacliutils.d.ts +56 -0
- package/types/lib/ecosystems/scalacliutils.d.ts.map +1 -0
- package/types/lib/ecosystems/scalasem.d.ts +311 -0
- package/types/lib/ecosystems/scalasem.d.ts.map +1 -0
- package/types/lib/ecosystems/terraformRegistry.d.ts +9 -0
- package/types/lib/ecosystems/terraformRegistry.d.ts.map +1 -0
- package/types/lib/ecosystems/utils.d.ts +2 -2
- package/types/lib/ecosystems/utils.d.ts.map +1 -1
- package/types/lib/ecosystems/vendoredCode.d.ts +32 -0
- package/types/lib/ecosystems/vendoredCode.d.ts.map +1 -0
- package/types/lib/evinser/evinser.d.ts +75 -8
- package/types/lib/evinser/evinser.d.ts.map +1 -1
- package/types/lib/helpers/bomSigner.d.ts +80 -4
- package/types/lib/helpers/bomSigner.d.ts.map +1 -1
- package/types/lib/inventory/aiCollector.d.ts.map +1 -1
- package/types/lib/inventory/analyzer.d.ts.map +1 -1
- package/types/lib/inventory/atomUtils.d.ts +82 -10
- package/types/lib/inventory/atomUtils.d.ts.map +1 -1
- package/types/lib/inventory/auditCategories.d.ts +3 -0
- package/types/lib/inventory/auditCategories.d.ts.map +1 -1
- package/types/lib/inventory/buildToolRateLimit.d.ts +38 -0
- package/types/lib/inventory/buildToolRateLimit.d.ts.map +1 -0
- package/types/lib/inventory/cacheCommands.d.ts +2 -1
- package/types/lib/inventory/cacheCommands.d.ts.map +1 -1
- package/types/lib/inventory/cmakeBuildDirs.d.ts +58 -0
- package/types/lib/inventory/cmakeBuildDirs.d.ts.map +1 -0
- package/types/lib/inventory/deps.d.ts +59 -1
- package/types/lib/inventory/deps.d.ts.map +1 -1
- package/types/lib/inventory/dosai.d.ts +57 -8
- package/types/lib/inventory/dosai.d.ts.map +1 -1
- package/types/lib/inventory/dosaiParsers.d.ts +53 -7
- package/types/lib/inventory/dosaiParsers.d.ts.map +1 -1
- package/types/lib/inventory/dynamic.d.ts +10 -0
- package/types/lib/inventory/dynamic.d.ts.map +1 -1
- package/types/lib/inventory/evidenceUtils.d.ts +19 -4
- package/types/lib/inventory/evidenceUtils.d.ts.map +1 -1
- package/types/lib/inventory/fetchBatch.d.ts +83 -14
- package/types/lib/inventory/fetchBatch.d.ts.map +1 -1
- package/types/lib/inventory/fetchDiskCache.d.ts +169 -0
- package/types/lib/inventory/fetchDiskCache.d.ts.map +1 -0
- package/types/lib/inventory/forgeEnricher.d.ts.map +1 -1
- package/types/lib/inventory/jvmLocalRepos.d.ts +178 -0
- package/types/lib/inventory/jvmLocalRepos.d.ts.map +1 -0
- package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -1
- package/types/lib/inventory/parentSelection.d.ts +34 -0
- package/types/lib/inventory/parentSelection.d.ts.map +1 -0
- package/types/lib/inventory/rustFormulationParser.d.ts.map +1 -1
- package/types/lib/inventory/scalaCoords.d.ts +80 -0
- package/types/lib/inventory/scalaCoords.d.ts.map +1 -0
- package/types/lib/inventory/source.d.ts.map +1 -1
- package/types/lib/inventory/spdx.d.ts +9 -0
- package/types/lib/inventory/spdx.d.ts.map +1 -1
- package/types/lib/inventory/traceRunner.d.ts +12 -0
- package/types/lib/inventory/traceRunner.d.ts.map +1 -1
- package/types/lib/inventory/tracedCrypto.d.ts +42 -0
- package/types/lib/inventory/tracedCrypto.d.ts.map +1 -0
- package/types/lib/managers/docker.d.ts.map +1 -1
- package/types/lib/managers/oci.d.ts +3 -1
- package/types/lib/managers/oci.d.ts.map +1 -1
- package/types/lib/parsers/cmakeCache.d.ts +16 -0
- package/types/lib/parsers/cmakeCache.d.ts.map +1 -1
- package/types/lib/parsers/cmakeLists.d.ts +2 -1
- package/types/lib/parsers/cmakeLists.d.ts.map +1 -1
- package/types/lib/parsers/cmakePresets.d.ts +78 -0
- package/types/lib/parsers/cmakePresets.d.ts.map +1 -0
- package/types/lib/parsers/compileCommands.d.ts +115 -0
- package/types/lib/parsers/compileCommands.d.ts.map +1 -0
- package/types/lib/parsers/strictJson.d.ts +46 -0
- package/types/lib/parsers/strictJson.d.ts.map +1 -0
- package/types/lib/parsers/terraformConfig.d.ts +70 -0
- package/types/lib/parsers/terraformConfig.d.ts.map +1 -0
- package/types/lib/parsers/terraformSource.d.ts +66 -0
- package/types/lib/parsers/terraformSource.d.ts.map +1 -0
- package/types/lib/server/server.d.ts.map +1 -1
- package/types/lib/stages/postgen/postgen.d.ts.map +1 -1
- package/types/lib/stages/postgen/specVersionCompat.d.ts.map +1 -1
- package/types/lib/validator/index.d.ts +8 -0
- package/types/lib/validator/index.d.ts.map +1 -1
- package/types/lib/validator/reporters/json.d.ts.map +1 -1
- package/lib/third-party/arborist/snapshots/calc-dep-flags.test.cjs +0 -462
|
@@ -5,13 +5,10 @@ import process from "node:process";
|
|
|
5
5
|
|
|
6
6
|
import semver from "semver";
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
cdxgenAgent,
|
|
10
|
-
DEBUG_MODE,
|
|
11
|
-
readEnvironmentVariable,
|
|
12
|
-
} from "../core/activity.js";
|
|
8
|
+
import { DEBUG_MODE, readEnvironmentVariable } from "../core/activity.js";
|
|
13
9
|
import { safeExistsSync } from "../core/fs.js";
|
|
14
10
|
import {
|
|
11
|
+
gatedGet,
|
|
15
12
|
prefetchEnabled,
|
|
16
13
|
prefetchedResponse,
|
|
17
14
|
prefetchJson,
|
|
@@ -689,13 +686,28 @@ export function isRegistryCrawlable(name) {
|
|
|
689
686
|
*/
|
|
690
687
|
export async function getElmMetadata(pkgList, dependencies) {
|
|
691
688
|
const registry = elmRegistryUrl();
|
|
689
|
+
// The two documents are asked for separately, each only when a field it
|
|
690
|
+
// supplies is still missing after the local cache: the manifest carries
|
|
691
|
+
// the licence, the summary and the package's own dependencies, the
|
|
692
|
+
// endpoint the distribution URL and its hash. Neither carries
|
|
693
|
+
// provenance, so a provenance fetch, as under --bom-audit, asks for
|
|
694
|
+
// nothing more.
|
|
695
|
+
const refsWithoutEdges = new Set(
|
|
696
|
+
(dependencies || [])
|
|
697
|
+
.filter((edge) => !edge.dependsOn?.length)
|
|
698
|
+
.map((edge) => edge.ref),
|
|
699
|
+
);
|
|
700
|
+
const needsManifest = (pkg) =>
|
|
701
|
+
!pkg.license || !pkg.description || refsWithoutEdges.has(pkg["bom-ref"]);
|
|
702
|
+
const needsEndpoint = (pkg) => !pkg.distribution?.url || !pkg.hashes?.length;
|
|
692
703
|
const targets = pkgList.filter(
|
|
693
704
|
(pkg) =>
|
|
694
705
|
pkg.group &&
|
|
695
706
|
pkg.version &&
|
|
696
707
|
semver.valid(pkg.version) &&
|
|
697
708
|
splitElmName(`${pkg.group}/${pkg.name}`) &&
|
|
698
|
-
isRegistryCrawlable(`${pkg.group}/${pkg.name}`)
|
|
709
|
+
isRegistryCrawlable(`${pkg.group}/${pkg.name}`) &&
|
|
710
|
+
(needsManifest(pkg) || needsEndpoint(pkg)),
|
|
699
711
|
);
|
|
700
712
|
if (!targets.length) {
|
|
701
713
|
return pkgList;
|
|
@@ -706,10 +718,12 @@ export async function getElmMetadata(pkgList, dependencies) {
|
|
|
706
718
|
`${registry}/packages/${pkg.group}/${pkg.name}/${pkg.version}/endpoint.json`;
|
|
707
719
|
const prefetched = await prefetchJson(
|
|
708
720
|
prefetchEnabled()
|
|
709
|
-
? targets
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
721
|
+
? targets
|
|
722
|
+
.flatMap((pkg) => [
|
|
723
|
+
needsManifest(pkg) ? { url: manifestUrl(pkg) } : undefined,
|
|
724
|
+
needsEndpoint(pkg) ? { url: endpointUrl(pkg) } : undefined,
|
|
725
|
+
])
|
|
726
|
+
.filter(Boolean)
|
|
713
727
|
: [],
|
|
714
728
|
);
|
|
715
729
|
const manifests = new Map();
|
|
@@ -717,25 +731,29 @@ export async function getElmMetadata(pkgList, dependencies) {
|
|
|
717
731
|
if (DEBUG_MODE) {
|
|
718
732
|
console.log(`Querying ${registry} for ${pkg.group}/${pkg.name}`);
|
|
719
733
|
}
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
pkg.license
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
pkg.description
|
|
734
|
+
if (needsManifest(pkg)) {
|
|
735
|
+
const manifest = await fetchJson(manifestUrl(pkg), prefetched);
|
|
736
|
+
if (manifest) {
|
|
737
|
+
manifests.set(pkg["bom-ref"], manifest);
|
|
738
|
+
if (!pkg.license && typeof manifest.license === "string") {
|
|
739
|
+
pkg.license = manifest.license;
|
|
740
|
+
}
|
|
741
|
+
if (!pkg.description && typeof manifest.summary === "string") {
|
|
742
|
+
pkg.description = manifest.summary;
|
|
743
|
+
}
|
|
728
744
|
}
|
|
729
745
|
}
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
746
|
+
if (needsEndpoint(pkg)) {
|
|
747
|
+
const endpoint = await fetchJson(endpointUrl(pkg), prefetched);
|
|
748
|
+
if (typeof endpoint?.url === "string") {
|
|
749
|
+
pkg.distribution = { url: endpoint.url };
|
|
750
|
+
}
|
|
751
|
+
if (/^[a-f0-9]{40}$/i.test(endpoint?.hash || "")) {
|
|
752
|
+
// The compiler streams the archive and compares this digest against the
|
|
753
|
+
// SHA-1 of the bytes it received, so it is a content hash of the
|
|
754
|
+
// distribution rather than a revision identifier.
|
|
755
|
+
pkg.hashes = [{ alg: "SHA-1", content: endpoint.hash.toLowerCase() }];
|
|
756
|
+
}
|
|
739
757
|
}
|
|
740
758
|
}
|
|
741
759
|
if (dependencies?.length && manifests.size) {
|
|
@@ -790,7 +808,7 @@ async function fetchJson(url, prefetched) {
|
|
|
790
808
|
try {
|
|
791
809
|
const res =
|
|
792
810
|
prefetchedResponse(prefetched, url) ||
|
|
793
|
-
(await
|
|
811
|
+
(await gatedGet(url, { responseType: "json" }));
|
|
794
812
|
return res?.body;
|
|
795
813
|
} catch (err) {
|
|
796
814
|
if (DEBUG_MODE) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
|
|
3
|
+
import { parseToml } from "../core/toml.js";
|
|
5
4
|
import { tryBuildPurl } from "../inventory/purl.js";
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -35,7 +34,7 @@ import { tryBuildPurl } from "../inventory/purl.js";
|
|
|
35
34
|
export function parseGleamProject(gleamTomlFile, manifestTomlFile) {
|
|
36
35
|
let manifest;
|
|
37
36
|
try {
|
|
38
|
-
manifest =
|
|
37
|
+
manifest = parseToml(readFileSync(gleamTomlFile, "utf-8"));
|
|
39
38
|
} catch (error) {
|
|
40
39
|
console.warn(`Failed to parse ${gleamTomlFile}: ${error.message}`);
|
|
41
40
|
return { pkgList: [], dependencies: [], parentComponent: {} };
|
|
@@ -70,7 +69,7 @@ export function parseGleamProject(gleamTomlFile, manifestTomlFile) {
|
|
|
70
69
|
let lock;
|
|
71
70
|
if (manifestTomlFile) {
|
|
72
71
|
try {
|
|
73
|
-
lock =
|
|
72
|
+
lock = parseToml(readFileSync(manifestTomlFile, "utf-8"));
|
|
74
73
|
} catch (error) {
|
|
75
74
|
console.warn(`Failed to parse ${manifestTomlFile}: ${error.message}`);
|
|
76
75
|
lock = undefined;
|