UNPKG

@argdown/node

Version:

Async Argdown application for node.js

58 lines 2.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GenerateDataUrlsPlugin = void 0; const core_1 = require("@argdown/core"); const is_svg_1 = __importDefault(require("is-svg")); const image_type_1 = __importDefault(require("image-type")); const utils_1 = require("./utils"); const path_1 = __importDefault(require("path")); class GenerateDataUrlsPlugin { constructor() { this.name = "GenerateDataUrlsPlugin"; this.runAsync = async (request, _response, _logger) => { if (!request.images || !request.images.files || !request.images.convertToDataUrls) { return; } for (let image of Object.values(request.images.files)) { if (!image.path) { return; } try { const baseDir = request.inputPath && !!path_1.default.extname(request.inputPath) ? path_1.default.dirname(request.inputPath) : request.inputPath || ""; const buffer = await utils_1.imageUtils.getImage(image.path, baseDir); let mimeType = ""; if (buffer) { if ((0, is_svg_1.default)(buffer)) { mimeType = "svg+xml"; } else { const imageTypeResult = (0, image_type_1.default)(buffer); if (imageTypeResult) { mimeType = imageTypeResult.mime; } else { throw new Error("File is not an image."); } } const dataUrl = `data:${mimeType};base64,${buffer.toString("base64")}`; image.dataUrl = dataUrl; } } catch (err) { if (err instanceof Error) { throw new core_1.ArgdownPluginError(this.name, "inline-image-generation-failed", `'Generating inline image of '${image.path}' failed. ${err.message}`); } } } }; } } exports.GenerateDataUrlsPlugin = GenerateDataUrlsPlugin; //# sourceMappingURL=GenerateDataUrlsPlugin.js.map