wasm4
Version:
Build retro games using WebAssembly for a fantasy console.
36 lines (28 loc) • 974 B
JavaScript
const fs = require('fs').promises;
const path = require('path');
const mapSupportedFileExtensionToMimeType = {
png: 'image/png',
ico: 'image/x-icon',
svg: 'image/svg+xml',
};
function supportedIconExtensions() {
return Object.keys(mapSupportedFileExtensionToMimeType);
}
/**
* Acquires image from file, then returns it as data url.
* @param {string} filePath
* @returns {string}
*/
async function iconToBase64DataUrl(filePath) {
const fileExt = path.extname(filePath).toLowerCase().replace(/\W+/g, '');
const mimeType = mapSupportedFileExtensionToMimeType[fileExt];
if (!fileExt || !mimeType) {
throw new TypeError(
`icon: unsupported file ext "${fileExt}". Filepath: "${filePath}"`
);
}
const buffer = await fs.readFile(filePath);
const asBase64 = buffer.toString('base64');
return `data:${mimeType};base64,${asBase64}`;
}
module.exports = { iconToBase64DataUrl, supportedIconExtensions };