HEX
Server: Apache
System: Linux webd004.cluster130.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: frenchy (106757)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/f/r/e/frenchy/www/french-american.org/current/node_modules/snyk-go-parser/dist/parser.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var toml = require("toml");
var errors_1 = require("./errors/");
// TODO(kyegupov): split into go-dep-parser and go-vendor-parser files
function parseGoPkgConfig(manifestFileContents, lockFileContents) {
    if (!manifestFileContents && !lockFileContents) {
        throw new errors_1.InvalidUserInputError('Gopkg.lock and Gopkg.toml file contents are empty');
    }
    if (!lockFileContents) {
        throw new errors_1.InvalidUserInputError('Gopkg.lock is empty, cannot proceed parsing');
    }
    var lockedVersions = parseDepLockContents(lockFileContents);
    var ignoredPkgs = [];
    if (manifestFileContents) {
        var manifest = parseDepManifestContents(manifestFileContents);
        ignoredPkgs = manifest.ignored;
    }
    return { lockedVersions: lockedVersions, ignoredPkgs: ignoredPkgs };
}
exports.parseGoPkgConfig = parseGoPkgConfig;
function parseGoVendorConfig(manifestFileContents) {
    if (!manifestFileContents) {
        throw new errors_1.InvalidUserInputError('vendor.json file contents are empty');
    }
    return parseGovendorJsonContents(manifestFileContents);
}
exports.parseGoVendorConfig = parseGoVendorConfig;
function parseDepLockContents(lockFileString) {
    try {
        var lockJson = toml.parse(lockFileString);
        var deps_1 = {};
        if (lockJson.projects) {
            lockJson.projects.forEach(function (proj) {
                var version = proj.version || ('#' + proj.revision);
                proj.packages.forEach(function (subpackageName) {
                    var name = (subpackageName === '.' ?
                        proj.name :
                        proj.name + '/' + subpackageName);
                    var dep = {
                        name: name,
                        version: version,
                    };
                    deps_1[dep.name] = dep;
                });
            });
        }
        return deps_1;
    }
    catch (e) {
        throw new errors_1.InvalidUserInputError('Gopkg.lock parsing failed with error ' + e.message);
    }
}
function parseDepManifestContents(manifestToml) {
    try {
        var manifestJson = toml.parse(manifestToml) || {};
        manifestJson.ignored = manifestJson.ignored || [];
        return manifestJson;
    }
    catch (e) {
        throw new errors_1.InvalidUserInputError('Gopkg.toml parsing failed with error ' + e.message);
    }
}
// TODO: branch, old Version can be a tag too?
function parseGovendorJsonContents(jsonStr) {
    try {
        var gvJson = JSON.parse(jsonStr);
        var goProjectConfig_1 = {
            ignoredPkgs: [],
            lockedVersions: {},
            packageName: gvJson.rootPath,
        };
        var packages = (gvJson.package || gvJson.Package);
        if (packages) {
            packages.forEach(function (pkg) {
                var revision = pkg.revision || pkg.Revision || pkg.version || pkg.Version;
                var version = pkg.versionExact || ('#' + revision);
                var dep = {
                    name: pkg.path,
                    version: version,
                };
                goProjectConfig_1.lockedVersions[dep.name] = dep;
            });
        }
        var ignores = gvJson.ignore || '';
        ignores.split(/\s/).filter(function (s) {
            // otherwise it's a build-tag rather than a pacakge
            return s.indexOf('/') !== -1;
        }).forEach(function (pkgName) {
            pkgName = pkgName.replace(/\/+$/, ''); // remove trailing /
            goProjectConfig_1.ignoredPkgs.push(pkgName);
            goProjectConfig_1.ignoredPkgs.push(pkgName + '/*');
        });
        return goProjectConfig_1;
    }
    catch (e) {
        throw new errors_1.InvalidUserInputError('vendor.json parsing failed with error ' + e.message);
    }
}
exports.parseGovendorJsonContents = parseGovendorJsonContents;
//# sourceMappingURL=parser.js.map