human-filetypes
Version:
Human-friendly taxonomy for file types
63 lines • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMimeTypes = exports.fromMime = void 0;
const data_1 = require("./data");
const fromMime = (input) => {
if (!input)
return data_1.FileKind.Unknown;
const mime = `${input}`.toLowerCase().trim();
// human readable mime types image/ video/ audio/ font/
const [type] = mime.split('/');
switch (type) {
case 'image':
return data_1.FileKind.Image;
case 'video':
return data_1.FileKind.Video;
case 'audio':
return data_1.FileKind.Audio;
case 'font':
return data_1.FileKind.Font;
}
// non-human readable types: application/ text/
const match = data_1.mimeData[mime];
if (match) {
return match.kind;
}
return data_1.FileKind.Unknown;
};
exports.fromMime = fromMime;
const getMimeTypes = (fileType) => {
if (!fileType)
return [];
const fileKind = `${fileType}`.toLowerCase().trim();
// human readable file Kinds image/ video/ audio/ font/
switch (fileKind) {
case 'image':
return getAllowedMimeTypes(data_1.FileKind.Image);
case 'video':
return getAllowedMimeTypes(data_1.FileKind.Video);
case 'audio':
return getAllowedMimeTypes(data_1.FileKind.Audio);
case 'font':
return getAllowedMimeTypes(data_1.FileKind.Font);
case 'archive':
return getAllowedMimeTypes(data_1.FileKind.Archive);
case 'presentation':
return getAllowedMimeTypes(data_1.FileKind.Presentation);
case 'text':
return getAllowedMimeTypes(data_1.FileKind.Text);
case 'spreadsheet':
return getAllowedMimeTypes(data_1.FileKind.Spreadsheet);
case 'document':
return getAllowedMimeTypes(data_1.FileKind.Document);
case 'application':
return getAllowedMimeTypes(data_1.FileKind.Application);
}
return [];
};
exports.getMimeTypes = getMimeTypes;
const getAllowedMimeTypes = (fileKind) => {
var _a;
return (_a = Object.keys(data_1.mimeData)) === null || _a === void 0 ? void 0 : _a.filter((key) => data_1.mimeData[key].kind === fileKind);
};
//# sourceMappingURL=mime.js.map