@shipengine/connect
Version:
The official developer tooling for building ShipEngine connect apps
50 lines • 1.94 kB
JavaScript
;
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