UNPKG

@digimuza/pdf-tools

Version:

PDF generation library & generation utilities

94 lines (93 loc) 3.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.servePDF = exports.root = void 0; const tslib_1 = require("tslib"); const Jet = (0, tslib_1.__importStar)(require("fs-jetpack")); const path_1 = (0, tslib_1.__importStar)(require("path")), Path = path_1; const P = (0, tslib_1.__importStar)(require("ts-prime")); const chokidar_1 = (0, tslib_1.__importDefault)(require("chokidar")); const live_server_1 = (0, tslib_1.__importDefault)(require("live-server")); const internal_1 = require("@digimuza/pdf-components/lib/internal"); const yargs_1 = (0, tslib_1.__importDefault)(require("yargs")); const helpers_1 = require("yargs/helpers"); const ts_node_1 = require("ts-node"); const pdf_1 = require("../pdf"); (0, ts_node_1.register)(); function packageJson() { let path = 'package.json'; for (const index of P.range(1, 50)) { const r = Jet.exists(path); if (r) { return path; } const f = P.range(0, index) .map(() => '../') .join(''); path = Path.resolve(f, 'package.json'); } throw new Error('Failed to find package.json'); } function root() { return path_1.default.dirname(packageJson()); } exports.root = root; async function servePDF() { const args = await (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv)) .option('file', { type: 'string', }) .option('watch', { type: 'boolean', default: false, }) .option('out', { alias: 'o', type: 'string', }) .parse(process.argv); if (args.file == null) { console.log(`Please provide file argument: pdf-tools {file.tsx} [options]`); process.exit(1); } const file = path_1.default.resolve(args.file); if (args.watch) { process.env.LIVE_SERVER = 'true'; const tmpFolder = `/tmp/${P.uuidv4()}/`; await Jet.dir(tmpFolder); const run = async () => { const files = Object.keys(require.cache).filter((q) => !q.includes('node_modules')); for (const x of files) { delete require.cache[x]; } const component = require(file); await Jet.writeAsync(Path.resolve(tmpFolder, 'index.html'), (0, internal_1.generatePdfBase)(component.default)); }; const debounced = P.debounce(run, 100); const watcher = chokidar_1.default.watch(Path.resolve(root(), 'src'), { ignored: /^\./, persistent: true, }); watcher.on('add', debounced).on('change', run); live_server_1.default.start({ wait: 500, port: 8181, host: '0.0.0.0', root: tmpFolder, open: true, file: 'index.html', // When set, serve this file (server root relative) for every 404 (useful for single-page applications) }); return; } const component = require(file); const x = component.default; const zxc = x.map((e) => { return Object.assign(Object.assign({}, e), { content: (0, internal_1.generatePdfBase)([e]) }); }); const pdf = await (0, pdf_1.generate)({ content: zxc, output: args.out, logger: console, }); } exports.servePDF = servePDF; servePDF();