UNPKG

@shipengine/connect

Version:

The official developer tooling for building ShipEngine connect apps

50 lines 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDocumentsRenderer = void 0; const tslib_1 = require("tslib"); const fs_1 = tslib_1.__importDefault(require("fs")); const connect_runtime_1 = require("@shipengine/connect-runtime"); function getDocumentsRenderer(getApiClient) { return async (request, template) => { if (template === undefined) { throw new Error(`Document template or template path must be defined`); } let documentTemplate; if (typeof template == 'string') { documentTemplate = readFromFile(template); } else { documentTemplate = template; } return await getDocumentsCall(request, documentTemplate, await getApiClient()); }; } exports.getDocumentsRenderer = getDocumentsRenderer; function getDummyResponse(request) { return Promise.resolve({ transaction_id: request.transaction_id }); } const getDocumentsCall = async (request, template, apiClient) => { if (!apiClient) { return getDummyResponse(request); } let response; try { response = await apiClient.documents.getDocuments(request, template); } catch (error) { connect_runtime_1.logger.error(error); connect_runtime_1.logger.warn('Rendering documents not available. Demo response return instead.'); return getDummyResponse(request); } if (!response) { throw new Error(`Rendering service response: [204] No document generated for documents filter '${request.documentNames?.join()}'`); } return { ...(({ template, ...properties }) => properties)(response) }; }; function readFromFile(templatePath) { if (fs_1.default.existsSync(templatePath)) { return JSON.parse(fs_1.default.readFileSync(templatePath, 'utf8')); } throw new Error(`File ${templatePath} not exists`); } //# sourceMappingURL=get-documents.js.map