@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
53 lines • 2.84 kB
JavaScript
import { escapeRegExp } from "./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.
export const ImageFileTypes = ["png", "jpg", "jpeg", "gif", "bmp", "svg", "webp"];
export const DocumentFileTypes = ["docx", "doc", "pdf", "txt", "rtf", "odt"];
export const VideoFileTypes = ["mp4", "mov", "wmv", "avi", "mkv", "flv", "webm"];
export const OfficeFileTypes = ["docx", "doc", "xlsx", "xls", "pptx", "ppt", "csv"];
function _getRegexCollection() {
return {
IllegalCharsRegex: new RegExp("[" + escapeRegExp(`"*:<>?/\\|`) + "]", "gi"),
IllegalCharsExtraRegex: new RegExp("[" + escapeRegExp(`~"#%&*:<>?/\\|`) + "]", "gi"),
IllegalNamesRegex: /^(\.lock|CON|PRN|AUX|NUL|COM\d|LPT\d|.*_VTI_.*|~\$.*)$/gi,
IsDesktopIni: /^desktop\.ini$/gi
};
}
export 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
};
}
export 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
};
}
export 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;
}
//# sourceMappingURL=file.js.map