UNPKG

@medusajs/core-flows

Version:

Set of workflow definitions for Medusa

51 lines 2.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseProductCsvStep = exports.parseProductCsvStepId = void 0; const utils_1 = require("@medusajs/framework/utils"); const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk"); const normalize_for_import_1 = require("../helpers/normalize-for-import"); const normalize_v1_import_1 = require("../helpers/normalize-v1-import"); const utils_2 = require("../utils"); exports.parseProductCsvStepId = "parse-product-csv"; /** * This step parses a CSV file holding products to import, returning the products as * objects that can be imported. * * @example * const data = parseProductCsvStep("products.csv") */ exports.parseProductCsvStep = (0, workflows_sdk_1.createStep)(exports.parseProductCsvStepId, async (fileContent, { container }) => { const regionService = container.resolve(utils_1.Modules.REGION); const productService = container.resolve(utils_1.Modules.PRODUCT); const salesChannelService = container.resolve(utils_1.Modules.SALES_CHANNEL); const fulfillmentService = container.resolve(utils_1.Modules.FULFILLMENT); const csvProducts = (0, utils_2.convertCsvToJson)(fileContent); const [productTypes, productCollections, salesChannels, shippingProfiles] = await Promise.all([ productService.listProductTypes({}, {}), productService.listProductCollections({}, {}), salesChannelService.listSalesChannels({}, {}), fulfillmentService.listShippingProfiles({}, {}), ]); const v1Normalized = (0, normalize_v1_import_1.normalizeV1Products)(csvProducts, { productTypes, productCollections, salesChannels, shippingProfiles, }); // We use the handle to group products and variants correctly. v1Normalized.forEach((product) => { if (!product["Product Handle"]) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Product handle is required when importing products"); } }); const [allRegions, allTags] = await Promise.all([ regionService.listRegions({}, { select: ["id", "name", "currency_code"] }), productService.listProductTags({}, { select: ["id", "value"] }), ]); const normalizedData = (0, normalize_for_import_1.normalizeForImport)(v1Normalized, { regions: allRegions, tags: allTags, }); return new workflows_sdk_1.StepResponse(normalizedData); }); //# sourceMappingURL=parse-product-csv.js.map