@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
59 lines • 3.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateAndSetFilename = exports.validateFoldername = exports.validateFilename = exports.OfficeFileTypes = exports.VideoFileTypes = exports.DocumentFileTypes = exports.ImageFileTypes = void 0;
const strings_1 = require("./strings");
//https://support.microsoft.com/en-gb/office/restrictions-and-limitations-in-onedrive-and-sharepoint-64883a5d-228e-48f5-b3d2-eb39e07630fa
//These names aren't allowed for files or folders: .lock, CON, PRN, AUX, NUL, COM0 - COM9, LPT0 - LPT9, _vti_,
//desktop.ini, any filename starting with ~$. "_vti_" can't appear anywhere in a file name.
exports.ImageFileTypes = ["png", "jpg", "jpeg", "gif", "bmp", "svg", "webp"];
exports.DocumentFileTypes = ["docx", "doc", "pdf", "txt", "rtf", "odt"];
exports.VideoFileTypes = ["mp4", "mov", "wmv", "avi", "mkv", "flv", "webm"];
exports.OfficeFileTypes = ["docx", "doc", "xlsx", "xls", "pptx", "ppt", "csv"];
function _getRegexCollection() {
return {
IllegalCharsRegex: new RegExp("[" + (0, strings_1.escapeRegExp)(`"*:<>?/\\|`) + "]", "gi"),
IllegalCharsExtraRegex: new RegExp("[" + (0, strings_1.escapeRegExp)(`~"#%&*:<>?/\\|`) + "]", "gi"),
IllegalNamesRegex: /^(\.lock|CON|PRN|AUX|NUL|COM\d|LPT\d|.*_VTI_.*|~\$.*)$/gi,
IsDesktopIni: /^desktop\.ini$/gi
};
}
function validateFilename(fileNameWithExtension) {
let filenameWithOutExtension = fileNameWithExtension;
let split = filenameWithOutExtension.split(".");
split.pop();
filenameWithOutExtension = split.join(".");
let regexCollection = _getRegexCollection();
let hasIllegalCharacter = regexCollection.IllegalCharsRegex.test(filenameWithOutExtension);
let hasIllegalName = regexCollection.IllegalNamesRegex.test(filenameWithOutExtension) || regexCollection.IsDesktopIni.test(fileNameWithExtension);
return {
hasIllegalCharacter,
hasIllegalName,
valid: !hasIllegalCharacter && !hasIllegalName
};
}
exports.validateFilename = validateFilename;
function validateFoldername(folderName) {
let regexCollection = _getRegexCollection();
let hasIllegalCharacter = regexCollection.IllegalCharsRegex.test(folderName);
let hasIllegalName = regexCollection.IllegalNamesRegex.test(folderName) || regexCollection.IsDesktopIni.test(folderName);
return {
hasIllegalCharacter,
hasIllegalName,
valid: !hasIllegalCharacter && !hasIllegalName
};
}
exports.validateFoldername = validateFoldername;
function validateAndSetFilename(fileNameWithExtension) {
let regexCollection = _getRegexCollection();
let validateFilenameChk = validateFilename(fileNameWithExtension);
if (!validateFilenameChk.valid || regexCollection.IllegalCharsExtraRegex.test(fileNameWithExtension)) {
fileNameWithExtension =
fileNameWithExtension.replace(regexCollection.IllegalCharsRegex, "")
.replace(regexCollection.IllegalCharsExtraRegex, "")
.replace(regexCollection.IllegalNamesRegex, "")
.replace(regexCollection.IsDesktopIni, "");
}
return fileNameWithExtension;
}
exports.validateAndSetFilename = validateAndSetFilename;
//# sourceMappingURL=file.js.map