UNPKG

@devx-commerce/plugin-product-reviews

Version:
63 lines 5.56 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.downloadAndParseCsvStep = exports.downloadAndParseCsvStepId = void 0; const workflows_sdk_1 = require("@medusajs/workflows-sdk"); const utils_1 = require("@medusajs/utils"); const csv_parse_1 = require("csv-parse"); const axios_1 = __importDefault(require("axios")); exports.downloadAndParseCsvStepId = "download-and-parse-csv"; exports.downloadAndParseCsvStep = (0, workflows_sdk_1.createStep)(exports.downloadAndParseCsvStepId, async (input) => { try { // Download the CSV file const response = await axios_1.default.get(input.csv_url, { responseType: "text", timeout: 10000, // 10 seconds timeout }); if (!response.data) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Downloaded CSV file is empty"); } // Parse CSV data using promise const records = await new Promise((resolve, reject) => { const results = []; const parser = (0, csv_parse_1.parse)(response.data, { columns: true, // Treat first line as headers skip_empty_lines: true, trim: true, }) .on("error", (error) => reject(error)) .on("end", () => resolve(results)); // If we only want headers, we'll just read the first row if (input.headersOnly) { parser.on("headers", (headers) => { // Create an empty record with all headers const emptyRecord = {}; headers.forEach((header) => { emptyRecord[header] = ""; }); results.push(emptyRecord); // Stop parsing after headers parser.end(); }); } else { // Normal processing for full CSV parser.on("data", (data) => results.push(data)); } }); console.log("records: ", records); return new workflows_sdk_1.StepResponse(records); } catch (error) { if (error instanceof utils_1.MedusaError) { throw error; } if (axios_1.default.isAxiosError(error)) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Failed to download CSV: ${error.message}`); } throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Failed to parse CSV: ${error.message}`); } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtYW5kLXBhcnNlLWNzdi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcHJvZHVjdC1yZXZpZXdzL3N0ZXBzL2Rvd25sb2FkLWFuZC1wYXJzZS1jc3YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkRBQW1FO0FBQ25FLDJDQUE4QztBQUM5Qyx5Q0FBa0M7QUFDbEMsa0RBQTBCO0FBSWIsUUFBQSx5QkFBeUIsR0FBRyx3QkFBd0IsQ0FBQztBQUVyRCxRQUFBLHVCQUF1QixHQUFHLElBQUEsMEJBQVUsRUFDL0MsaUNBQXlCLEVBQ3pCLEtBQUssRUFBRSxLQUFpRCxFQUFFLEVBQUU7SUFDMUQsSUFBSSxDQUFDO1FBQ0gsd0JBQXdCO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQzlDLFlBQVksRUFBRSxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxLQUFLLEVBQUUscUJBQXFCO1NBQ3RDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsOEJBQThCLENBQy9CLENBQUM7UUFDSixDQUFDO1FBRUQsK0JBQStCO1FBQy9CLE1BQU0sT0FBTyxHQUFtQixNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3BFLE1BQU0sT0FBTyxHQUFtQixFQUFFLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBQSxpQkFBSyxFQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsOEJBQThCO2dCQUM3QyxnQkFBZ0IsRUFBRSxJQUFJO2dCQUN0QixJQUFJLEVBQUUsSUFBSTthQUNYLENBQUM7aUJBQ0MsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNyQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBRXJDLHlEQUF5RDtZQUN6RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDL0IsMENBQTBDO29CQUMxQyxNQUFNLFdBQVcsR0FBaUIsRUFBRSxDQUFDO29CQUNyQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUU7d0JBQ2pDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzNCLENBQUMsQ0FBQyxDQUFDO29CQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQzFCLDZCQUE2QjtvQkFDN0IsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNmLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGlDQUFpQztnQkFDakMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVsQyxPQUFPLElBQUksNEJBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLG1CQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLGVBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwyQkFBMkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUMzQyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHdCQUF3QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQ3hDLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUMifQ==