dokkie
Version:
Create good looking documentation from your Readme
135 lines • 5.73 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.download = exports.getPageTitle = exports.writeThatFile = exports.createFolder = exports.makeFileName = exports.makePath = exports.makeRoute = exports.asyncForEach = void 0;
const { writeFile, mkdir } = require("fs").promises;
const fs_1 = require("fs");
const https_1 = __importDefault(require("https"));
const path_1 = require("path");
const markdown_1 = require("./markdown");
const log = __importStar(require("cli-block"));
const node_fetch_1 = __importDefault(require("node-fetch"));
const kleur_1 = require("kleur");
exports.asyncForEach = (array, callback) => __awaiter(void 0, void 0, void 0, function* () {
for (let index = 0; index < array.length; index++) {
yield callback(array[index], index, array);
}
});
exports.makeRoute = (file, settings) => {
const pre = path_1.join(process.cwd()).replace(/\/$/, "");
const post = path_1.dirname(file.path).replace(pre, "");
let route = path_1.join(post, exports.makeFileName(file));
if (settings.input !== ".") {
settings.strip.push(settings.input);
}
if (settings.strip)
settings.strip.forEach((ignoredPath) => {
route = route.replace("/" + ignoredPath, "");
});
route = route.charAt(0) === "/" ? route : "/" + route;
return route;
};
exports.makePath = (file, settings) => {
const pre = process.cwd().replace(/\/$/, "");
const post = path_1.dirname(file.path).replace(pre, "");
let route = path_1.join(pre, settings.output, post);
if (settings.strip)
settings.strip.forEach((ignoredPath) => {
route = route.replace("/" + ignoredPath, "");
});
return route;
};
exports.makeFileName = (file) => {
const filename = file.name === "README" || file.name === "Readme" || file.name === "readme"
? "index"
: file.name.toLowerCase() + "/index";
return filename + ".html";
};
exports.createFolder = (folder) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield mkdir(folder, { recursive: true }, () => {
return;
});
}
catch (err) {
throw Error(err);
}
});
exports.writeThatFile = (file, contents, settings, simple = false) => __awaiter(void 0, void 0, void 0, function* () {
try {
const filePath = path_1.join(file.destpath, file.filename).toLowerCase();
yield exports.createFolder(path_1.dirname(filePath));
yield writeFile(filePath, contents);
!settings.logging.includes("silent") && log.BLOCK_LINE_SUCCESS(file.title);
if (!simple) {
!settings.logging.includes("silent") &&
log.BLOCK_LINE(`→ ${kleur_1.blue(file.route)}`);
settings.logging.includes("debug") &&
log.BLOCK_LINE(`→ ${kleur_1.blue(filePath)}`);
!settings.logging.includes("silent") && log.BLOCK_LINE();
}
}
catch (err) {
throw Error(err);
}
});
exports.getPageTitle = (file) => {
if (file.meta && file.meta.title) {
return file.meta.title;
}
else if (file.ext === ".md" && markdown_1.getTitleFromMD(file.data)) {
return markdown_1.getTitleFromMD(file.data);
}
else {
return file.name;
}
};
exports.download = (url, destination) => __awaiter(void 0, void 0, void 0, function* () {
const agent = new https_1.default.Agent({
rejectUnauthorized: false,
});
const res = yield node_fetch_1.default(url, { agent });
yield exports.createFolder(path_1.dirname(destination));
yield new Promise((resolve, reject) => {
var _a, _b;
const fileStream = fs_1.createWriteStream(destination);
(_a = res.body) === null || _a === void 0 ? void 0 : _a.pipe(fileStream);
(_b = res.body) === null || _b === void 0 ? void 0 : _b.on("error", (err) => {
reject(err);
});
fileStream.on("finish", () => {
resolve();
});
});
});
//# sourceMappingURL=files.js.map