express-react-pdf
Version:
Middleware generator for react-pdf in express
38 lines • 1.99 kB
JavaScript
;
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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.pdfMiddlewareBuilder = void 0;
const pdfWrapper_1 = require("./pdfWrapper");
/**
* Builds pdf middleware using the provided root node and data extractor
* Sets up the correct headers and returns data from the pdf wrapper
* @param Root Root node
* @param rootDataExtractor Extracts data needed for the root node from the request
* @returns pdf generator middleware
*/
const pdfMiddlewareBuilder = (Root, rootDataExtractor) => {
return (Content, contentDataExtractor, fileName = "export.pdf") => {
return (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
const result = yield (0, pdfWrapper_1.pdfWrapper)({ Content, contentData: contentDataExtractor(req) }, {
Root,
rootData: rootDataExtractor(req),
});
// Setting up the response headers
res.setHeader("Content-Type", "application/pdf");
res.setHeader("Content-Disposition", `attachment; filename=${fileName}`);
// Streaming our resulting pdf back to the user
result.pipe(res);
next();
});
};
};
exports.pdfMiddlewareBuilder = pdfMiddlewareBuilder;
//# sourceMappingURL=pdfMiddlewareBuilder.js.map