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/frenchy/www/french-american.org/current/node_modules/dotnet-deps-parser/dist/parsers/index.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var parseXML = require("xml2js");
var _ = require("lodash");
var errors_1 = require("../errors");
var DepType;
(function (DepType) {
    DepType["prod"] = "prod";
    DepType["dev"] = "dev";
})(DepType = exports.DepType || (exports.DepType = {}));
var ProjectJsonDepType;
(function (ProjectJsonDepType) {
    ProjectJsonDepType["build"] = "build";
    ProjectJsonDepType["project"] = "project";
    ProjectJsonDepType["platform"] = "platform";
    ProjectJsonDepType["default"] = "default";
})(ProjectJsonDepType = exports.ProjectJsonDepType || (exports.ProjectJsonDepType = {}));
function getDependencyTreeFromProjectJson(manifestFile, includeDev) {
    if (includeDev === void 0) { includeDev = false; }
    var depTree = {
        dependencies: {},
        hasDevDependencies: false,
        name: '',
        version: '',
    };
    for (var depName in manifestFile.dependencies) {
        if (!manifestFile.dependencies.hasOwnProperty(depName)) {
            continue;
        }
        var depValue = manifestFile.dependencies[depName];
        var version = depValue.version || depValue;
        var isDev = depValue.type === 'build';
        depTree.hasDevDependencies = depTree.hasDevDependencies || isDev;
        if (isDev && !includeDev) {
            continue;
        }
        depTree.dependencies[depName] = buildSubTreeFromProjectJson(depName, version, isDev);
    }
    return depTree;
}
exports.getDependencyTreeFromProjectJson = getDependencyTreeFromProjectJson;
function buildSubTreeFromProjectJson(name, version, isDev) {
    var depSubTree = {
        depType: isDev ? DepType.dev : DepType.prod,
        dependencies: {},
        name: name,
        version: version,
    };
    return depSubTree;
}
function getDependencyTreeFromPackagesConfig(manifestFile, includeDev) {
    if (includeDev === void 0) { includeDev = false; }
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        var depTree, packageList, _i, packageList_1, dep, depName, isDev;
        return tslib_1.__generator(this, function (_a) {
            depTree = {
                dependencies: {},
                hasDevDependencies: false,
                name: '',
                version: '',
            };
            packageList = _.get(manifestFile, 'packages.package', []);
            for (_i = 0, packageList_1 = packageList; _i < packageList_1.length; _i++) {
                dep = packageList_1[_i];
                depName = dep.$.id;
                isDev = !!dep.$.developmentDependency;
                depTree.hasDevDependencies = depTree.hasDevDependencies || isDev;
                if (isDev && !includeDev) {
                    continue;
                }
                depTree.dependencies[depName] = buildSubTreeFromPackagesConfig(dep, isDev);
            }
            return [2 /*return*/, depTree];
        });
    });
}
exports.getDependencyTreeFromPackagesConfig = getDependencyTreeFromPackagesConfig;
function buildSubTreeFromPackagesConfig(dep, isDev) {
    var depSubTree = {
        depType: isDev ? DepType.dev : DepType.prod,
        dependencies: {},
        name: dep.$.id,
        version: dep.$.version,
    };
    if (dep.$.targetFramework) {
        depSubTree.targetFrameworks = [dep.$.targetFramework];
    }
    return depSubTree;
}
function getDependencyTreeFromProjectFile(manifestFile, includeDev) {
    if (includeDev === void 0) { includeDev = false; }
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        var nameProperty, name, packageReferenceDeps, referenceIncludeDeps, depTree;
        return tslib_1.__generator(this, function (_a) {
            switch (_a.label) {
                case 0:
                    nameProperty = _.get(manifestFile, 'Project.PropertyGroup', [])
                        .find(function (propertyGroup) {
                        return _.has(propertyGroup, 'PackageId')
                            || _.has(propertyGroup, 'AssemblyName');
                    }) || {};
                    name = (nameProperty.PackageId && nameProperty.PackageId[0])
                        || (nameProperty.AssemblyName && nameProperty.AssemblyName[0])
                        || '';
                    return [4 /*yield*/, getDependenciesFromPackageReference(manifestFile, includeDev)];
                case 1:
                    packageReferenceDeps = _a.sent();
                    return [4 /*yield*/, getDependenciesFromReferenceInclude(manifestFile, includeDev)];
                case 2:
                    referenceIncludeDeps = _a.sent();
                    depTree = {
                        dependencies: tslib_1.__assign({}, referenceIncludeDeps.dependencies, packageReferenceDeps.dependencies),
                        hasDevDependencies: packageReferenceDeps.hasDevDependencies || referenceIncludeDeps.hasDevDependencies,
                        name: name,
                        version: '',
                    };
                    if (packageReferenceDeps.dependenciesWithUnknownVersions) {
                        depTree.dependenciesWithUnknownVersions = packageReferenceDeps.dependenciesWithUnknownVersions;
                    }
                    return [2 /*return*/, depTree];
            }
        });
    });
}
exports.getDependencyTreeFromProjectFile = getDependencyTreeFromProjectFile;
function getDependenciesFromPackageReference(manifestFile, includeDev) {
    if (includeDev === void 0) { includeDev = false; }
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        var dependenciesResult, packageList, targetFrameworks, _i, _a, dep, depName, isDev, subDep;
        return tslib_1.__generator(this, function (_b) {
            dependenciesResult = {
                dependencies: {},
                hasDevDependencies: false,
            };
            packageList = _.get(manifestFile, 'Project.ItemGroup', [])
                .find(function (itemGroup) { return _.has(itemGroup, 'PackageReference'); });
            if (!packageList) {
                return [2 /*return*/, dependenciesResult];
            }
            targetFrameworks = _.get(packageList, '$.Condition', false) ?
                getConditionalFrameworks(packageList.$.Condition) : [];
            for (_i = 0, _a = packageList.PackageReference; _i < _a.length; _i++) {
                dep = _a[_i];
                depName = dep.$.Include;
                isDev = !!dep.$.developmentDependency;
                dependenciesResult.hasDevDependencies = dependenciesResult.hasDevDependencies || isDev;
                if (isDev && !includeDev) {
                    continue;
                }
                subDep = buildSubTreeFromPackageReference(dep, isDev, manifestFile, targetFrameworks);
                if (subDep.withoutVersion) {
                    dependenciesResult.dependenciesWithUnknownVersions = dependenciesResult.dependenciesWithUnknownVersions || [];
                    dependenciesResult.dependenciesWithUnknownVersions.push(subDep.name);
                }
                else {
                    dependenciesResult.dependencies[depName] = subDep;
                }
            }
            return [2 /*return*/, dependenciesResult];
        });
    });
}
function getDependenciesFromReferenceInclude(manifestFile, includeDev) {
    if (includeDev === void 0) { includeDev = false; }
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        var referenceIncludeResult, referenceIncludeList, targetFrameworks, _i, _a, item, propertiesList, depName, depInfoArray, depInfo, _b, depInfoArray_1, itemValue, propertyValuePair, dependency;
        return tslib_1.__generator(this, function (_c) {
            referenceIncludeResult = {
                dependencies: {},
                hasDevDependencies: false,
            };
            referenceIncludeList = _.get(manifestFile, 'Project.ItemGroup', [])
                .find(function (itemGroup) { return _.has(itemGroup, 'Reference'); });
            if (!referenceIncludeList) {
                return [2 /*return*/, referenceIncludeResult];
            }
            targetFrameworks = _.get(referenceIncludeList, '$.Condition', false) ?
                getConditionalFrameworks(referenceIncludeList.$.Condition) : [];
            for (_i = 0, _a = referenceIncludeList.Reference; _i < _a.length; _i++) {
                item = _a[_i];
                propertiesList = item.$.Include.split(',').map(function (i) { return i.trim(); });
                depName = propertiesList[0], depInfoArray = propertiesList.slice(1);
                depInfo = {};
                for (_b = 0, depInfoArray_1 = depInfoArray; _b < depInfoArray_1.length; _b++) {
                    itemValue = depInfoArray_1[_b];
                    propertyValuePair = itemValue.split('=');
                    depInfo[propertyValuePair[0]] = propertyValuePair[1];
                }
                dependency = {
                    // TODO: correctly identify what makes the dep be dev only
                    depType: DepType.prod,
                    dependencies: {},
                    name: depName,
                    version: depInfo.Version || '',
                };
                if (targetFrameworks.length) {
                    dependency.targetFrameworks = targetFrameworks;
                }
                referenceIncludeResult.dependencies[depName] = dependency;
            }
            return [2 /*return*/, referenceIncludeResult];
        });
    });
}
function buildSubTreeFromPackageReference(dep, isDev, manifestFile, targetFrameworks) {
    var version = extractDependencyVersion(dep, manifestFile);
    if (version !== null) {
        var depSubTree = {
            depType: isDev ? DepType.dev : DepType.prod,
            dependencies: {},
            name: dep.$.Include,
            // Version could be in attributes or as child node.
            version: version,
        };
        if (targetFrameworks.length) {
            depSubTree.targetFrameworks = targetFrameworks;
        }
        return depSubTree;
    }
    else {
        return { name: dep.$.Include, withoutVersion: true };
    }
}
function extractDependencyVersion(dep, manifestFile) {
    var VARS_MATCHER = /^\$\((.*?)\)/;
    var version = dep.$.Version || _.get(dep, 'Version.0');
    var variableVersion = version && version.match(VARS_MATCHER);
    if (!variableVersion) {
        return version;
    }
    // version is a variable, extract it from manifest
    var propertyName = variableVersion[1];
    var versionProperty = _.get(manifestFile, 'Project.PropertyGroup', [])
        .find(function (propertyGroup) { return _.has(propertyGroup, propertyName); });
    return _.get(versionProperty, propertyName + ".0", null);
}
function getConditionalFrameworks(condition) {
    var regexp = /\(TargetFramework\)'\s?==\s? '((\w|\d|\.)*)'/g;
    var frameworks = [];
    var match = regexp.exec(condition);
    while (match !== null) {
        frameworks.push(match[1]);
        match = regexp.exec(condition);
    }
    return frameworks;
}
function parseManifestFile(manifestFileContents) {
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        return tslib_1.__generator(this, function (_a) {
            return [2 /*return*/, new Promise(function (resolve, reject) {
                    parseXML
                        .parseString(manifestFileContents, function (err, result) {
                        if (err) {
                            var e = new errors_1.InvalidUserInputError('manifest parsing failed');
                            return reject(e);
                        }
                        return resolve(result);
                    });
                })];
        });
    });
}
exports.parseManifestFile = parseManifestFile;
function getTargetFrameworksFromProjectFile(manifestFile) {
    var targetFrameworksResult = [];
    var projectPropertyGroup = _.get(manifestFile, 'Project.PropertyGroup', []);
    if (!projectPropertyGroup) {
        return targetFrameworksResult;
    }
    var propertyList = projectPropertyGroup
        .find(function (propertyGroup) {
        return _.has(propertyGroup, 'TargetFramework')
            || _.has(propertyGroup, 'TargetFrameworks')
            || _.has(propertyGroup, 'TargetFrameworkVersion');
    }) || {};
    if (_.isEmpty(propertyList)) {
        return targetFrameworksResult;
    }
    // TargetFrameworks is expected to be a list ; separated
    if (propertyList.TargetFrameworks) {
        for (var _i = 0, _a = propertyList.TargetFrameworks; _i < _a.length; _i++) {
            var item = _a[_i];
            targetFrameworksResult = targetFrameworksResult.concat(item.split(';'));
        }
    }
    // TargetFrameworkVersion is expected to be a string containing only one item
    // TargetFrameworkVersion also implies .NETFramework, for convenience
    // return longer version
    if (propertyList.TargetFrameworkVersion) {
        targetFrameworksResult.push(".NETFramework,Version=" + propertyList.TargetFrameworkVersion[0]);
    }
    // TargetFrameworks is expected to be a string
    if (propertyList.TargetFramework) {
        targetFrameworksResult = targetFrameworksResult.concat(propertyList.TargetFramework);
    }
    return _.uniq(targetFrameworksResult);
}
exports.getTargetFrameworksFromProjectFile = getTargetFrameworksFromProjectFile;
function getTargetFrameworksFromProjectConfig(manifestFile) {
    var targetFrameworksResult = [];
    var packages = _.get(manifestFile, 'packages.package', []);
    for (var _i = 0, packages_1 = packages; _i < packages_1.length; _i++) {
        var item = packages_1[_i];
        var targetFramework = item.$.targetFramework;
        if (!targetFramework) {
            continue;
        }
        if (!_.includes(targetFrameworksResult, targetFramework)) {
            targetFrameworksResult.push(targetFramework);
        }
    }
    return targetFrameworksResult;
}
exports.getTargetFrameworksFromProjectConfig = getTargetFrameworksFromProjectConfig;
function getTargetFrameworksFromProjectJson(manifestFile) {
    return Object.keys(_.get(manifestFile, 'frameworks', {}));
}
exports.getTargetFrameworksFromProjectJson = getTargetFrameworksFromProjectJson;
function getTargetFrameworksFromProjectAssetsJson(manifestFile) {
    return Object.keys(_.get(manifestFile, 'targets', {}));
}
exports.getTargetFrameworksFromProjectAssetsJson = getTargetFrameworksFromProjectAssetsJson;
//# sourceMappingURL=index.js.map