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
};
}