UNPKG

@argdown/node

Version:

Async Argdown application for node.js

63 lines 2.38 kB
import * as fs from "fs"; import * as path from "path"; import { createRequire } from "module"; import mkdirp from "mkdirp"; import defaultsDeep from "lodash.defaultsdeep"; const require = createRequire(import.meta.url); export class CopyDefaultCssPlugin { name = "CopyDefaultCssPlugin"; defaults; constructor(config) { this.defaults = defaultsDeep({}, config, { outputDir: "./html" }); } getSettings = (request) => { if (!request.copyDefaultCss) { request.copyDefaultCss = {}; } return request.copyDefaultCss; }; prepare = (request) => { const settings = this.getSettings(request); defaultsDeep(settings, this.defaults); if (request.html && request.html.outputDir) { settings.outputDir = request.html.outputDir; } else if (request.saveAs && request.saveAs.outputDir) { settings.outputDir = request.saveAs.outputDir; } }; runAsync = async (request, _response, logger) => { const settings = this.getSettings(request); const rootPath = request.rootPath || process.cwd(); const outputDir = request.outputPath ? path.dirname(request.outputPath) : (settings.outputDir ?? ""); const absoluteOutputDir = path.resolve(rootPath, outputDir); await mkdirp(absoluteOutputDir); const pathToDefaultCssFile = require.resolve("@argdown/core/dist/plugins/argdown.css"); logger.log("verbose", "Copying default argdown.css to folder: " + absoluteOutputDir); const { COPYFILE_EXCL } = fs.constants; try { await new Promise((resolve, reject) => { fs.copyFile(pathToDefaultCssFile, path.resolve(absoluteOutputDir, "argdown.css"), COPYFILE_EXCL, (err) => { if (err) { reject(err); } resolve(); }); }); } catch (error) { if (error instanceof Error && error.code !== "EEXIST") { throw error; } else { logger.log("verbose", "Did not copy default argdown.css, because file already exists: " + absoluteOutputDir); } } }; } //# sourceMappingURL=CopyDefaultCssPlugin.js.map