function getFilename()

in tools/subResourceIntegrity/generateIntegrityFile.js [11:101]


function getFilename(inputFile, packageVersion) {
    var filename = inputFile;
    var path = "";
    var pos = inputFile.lastIndexOf("/");
    if (pos == -1) {
        pos = inputFile.lastIndexOf("\\");
    }

    if (pos != -1) {
        path = inputFile.substring(0, pos);
        filename = inputFile.substring(pos + 1);
    }

    var match = null;
    var module = filename;
    var matchType = "";

    var verIdx = filename.indexOf("." + packageVersion);
    if (verIdx != -1) {
        verIdx += (packageVersion.length + 1);
        matchType = "Package version";
        // This was added to specific handle package versions with pre-release and version (eg ai.xxx-nightly.20210802)
        module = filename.substring(0, verIdx);
        match = [
            inputFile,                  // Raw original file
            path + "/" + module,        // IntFile group [1]
            packageVersion,             // Version group [2]
            filename.substring(verIdx + 1) // format group (extension) [5]
        ];
    } else {
        // General Regex match
        matchType = "RegEx";
        var versioned = isVersioned.exec(inputFile);
        if (versioned) {
            match = extractFilename.exec(inputFile);
        } else if (filename.endsWith(".js")) {
            matchType = "Extension";
            // Handle files with no version eg. applicationinsights-core-js, etc
            var idx = filename.indexOf(".");
            if (idx != -1) {
                module = filename.substring(0, idx);
                match = [
                    inputFile,                  // Raw original file
                    path + "/" + module,        // IntFile group
                    packageVersion,             // Version group
                    filename.substring(idx + 1) // format group (extension)
                ];
            }
        }
    }

    if (match) {
        console.log("Loading - " + inputFile + "  (" + matchType + ") => (" + JSON.stringify(match) + ")");

        var intFile = match[1];
        var version = match[2];
        var format = match[3];

        if (version) {
            if (version.startsWith(".")) {
                version = version.substring(1);
            }

            if (version == packageVersion) {

                var idx = filename.lastIndexOf("." + version);
                if (idx != -1) {
                    module = filename.substring(0, idx);
                }
        
                if (format.startsWith(".")) {
                    format = format.substring(1);
                }
        
                var data = {
                    name: filename,
                    module: module,
                    version: version,
                    format: format,
                    intFile: intFile + ".integrity.json"
                };

                return data;
            }
        }
    }

    return {
        name: filename
    };
}