UNPKG

@kwiz/common

Version:

KWIZ common utilities and helpers for M365 platform

68 lines 3.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OfficeFileTypes = exports.VideoFileTypes = exports.DocumentFileTypes = exports.ImageFileTypes = void 0; exports.validateFilename = validateFilename; exports.validateFoldername = validateFoldername; exports.validateAndSetFilename = validateAndSetFilename; exports.getFileExtension = getFileExtension; const strings_1 = require("./strings"); const typecheckers_1 = require("./typecheckers"); //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 }; } 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 }; } 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; } function getFileExtension(fileName, options) { const lastDot = fileName.lastIndexOf('.'); if (lastDot >= 0) return fileName.slice(lastDot + 1).toLowerCase(); //no dot ? return empty, or fileName? return !(0, typecheckers_1.isNullOrUndefined)(options) && options.emptyIfMissing === true ? "" : fileName; } //# sourceMappingURL=file.js.map