@argdown/node
Version:
Async Argdown application for node.js
67 lines • 2.85 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CopyDefaultCssPlugin = void 0;
let fs = require("fs");
let path = require("path");
let mkdirp = require("mkdirp");
const lodash_defaultsdeep_1 = __importDefault(require("lodash.defaultsdeep"));
class CopyDefaultCssPlugin {
constructor(config) {
this.name = "CopyDefaultCssPlugin";
this.getSettings = (request) => {
if (!request.copyDefaultCss) {
request.copyDefaultCss = {};
}
return request.copyDefaultCss;
};
this.prepare = request => {
const settings = this.getSettings(request);
(0, lodash_defaultsdeep_1.default)(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;
}
};
this.runAsync = async (request, _response, logger) => {
const settings = this.getSettings(request);
let rootPath = request.rootPath || process.cwd();
let outputDir = request.outputPath
? path.dirname(request.outputPath)
: settings.outputDir;
let absoluteOutputDir = path.resolve(rootPath, outputDir);
await mkdirp(absoluteOutputDir);
let 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);
}
}
};
this.defaults = (0, lodash_defaultsdeep_1.default)({}, config, {
outputDir: "./html"
});
}
}
exports.CopyDefaultCssPlugin = CopyDefaultCssPlugin;
//# sourceMappingURL=CopyDefaultCssPlugin.js.map