@rsc-labs/medusa-documents
Version:
Generate documents from Medusa
56 lines (55 loc) • 2.62 kB
JavaScript
;
/*
* Copyright 2024 RSC-Labs, https://rsoftcon.com/
*
* MIT License
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateInput = void 0;
const pdfkit_1 = __importDefault(require("pdfkit"));
const customer_info_1 = require("./parts/customer-info");
const table_1 = require("./parts/table");
const invoice_info_1 = require("./parts/invoice-info");
const header_for_logo_1 = require("./parts/header-for-logo");
const header_logo_1 = require("./parts/header-logo");
const path_1 = __importDefault(require("path"));
function validateInput(settings) {
if (settings && settings.store_address && settings.store_address.company &&
settings.store_address.address_1 &&
settings.store_address.city &&
settings.store_address.postal_code &&
settings.store_logo_source)
return [true, ''];
return [false, `Not all settings are defined to generate template. Following settings are checked: company, address, city, postal code, logo`];
}
exports.validateInput = validateInput;
exports.default = async (settings, invoice, order) => {
var doc = new pdfkit_1.default();
doc.registerFont('Regular', path_1.default.resolve(__dirname, '../../../../assets/fonts/IBMPlexSans-Regular.ttf'));
doc.registerFont('Bold', path_1.default.resolve(__dirname, '../../../../assets/fonts/IBMPlexSans-Bold.ttf'));
doc.font('Regular');
const buffers = [];
doc.on("data", buffers.push.bind(buffers));
const endHeader = (0, header_for_logo_1.generateHeaderForLogo)(doc, 50, settings);
await (0, header_logo_1.generateHeaderLogo)(doc, 50, settings.store_logo_source);
const endInvoice = (0, invoice_info_1.generateInvoiceInformation)(doc, endHeader, invoice);
const endDetails = (0, customer_info_1.generateCustomerInformation)(doc, endInvoice, order);
(0, table_1.generateInvoiceTable)(doc, endDetails, order, order.items);
doc.end();
const bufferPromise = new Promise(resolve => {
doc.on("end", () => {
const pdfData = Buffer.concat(buffers);
resolve(pdfData);
});
});
return await bufferPromise;
};