medusa-import-product-plugin 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -63,4 +63,4 @@ function toMedusaProductInput(p, handle, categoryIds, imageMapping) {
63
63
  };
64
64
  return input;
65
65
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbXBvcnQvdHlwZXMvd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQ0Esb0RBMkVDO0FBM0VELFNBQWdCLG9CQUFvQixDQUNsQyxDQUFvQyxFQUNwQyxNQUFjLEVBQ2QsV0FBc0IsRUFDdEIsWUFBcUM7SUFFckMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO0lBRWxDLE1BQU0sVUFBVSxHQUEwQyxFQUFFLENBQUM7SUFDN0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSTtZQUFFLFNBQVM7UUFDeEIsTUFBTSxNQUFNLEdBQUc7WUFDYixHQUFHLElBQUksR0FBRyxDQUNSLFFBQVE7aUJBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUssQ0FBQyxDQUFDO2lCQUN4QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbkM7U0FDRixDQUFDO1FBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUErQixXQUFXLENBQUM7SUFFdkQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNO1FBQ25DLENBQUMsQ0FB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
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbXBvcnQvdHlwZXMvd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQ0Esb0RBMkVDO0FBM0VELFNBQWdCLG9CQUFvQixDQUNsQyxDQUFvQyxFQUNwQyxNQUFjLEVBQ2QsV0FBc0IsRUFDdEIsWUFBcUM7SUFFckMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO0lBRWxDLE1BQU0sVUFBVSxHQUEwQyxFQUFFLENBQUM7SUFDN0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSTtZQUFFLFNBQVM7UUFDeEIsTUFBTSxNQUFNLEdBQUc7WUFDYixHQUFHLElBQUksR0FBRyxDQUNSLFFBQVE7aUJBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUssQ0FBQyxDQUFDO2lCQUN4QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbkM7U0FDRixDQUFDO1FBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUErQixXQUFXLENBQUM7SUFFdkQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNO1FBQ25DLENBQUMsQ0FB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
@@ -16,6 +16,7 @@ const list_category_attributes_by_labels_step_1 = require("./steps/list-category
16
16
  const create_category_attributes_step_1 = require("./steps/create-category-attributes.step");
17
17
  const set_product_attributes_step_1 = require("./steps/set-product-attributes.step");
18
18
  const find_or_create_category_step_1 = require("./steps/find-or-create-category.step");
19
+ const find_or_create_collection_step_1 = require("./steps/find-or-create-collection.step");
19
20
  const update_variant_prices_step_1 = require("./steps/update-variant-prices.step");
20
21
  const create_variant_price_sets_step_1 = require("./steps/create-variant-price-sets.step");
21
22
  const refetch_products_by_handle_step_1 = require("./steps/refetch-products-by-handle.step");
@@ -69,6 +70,12 @@ exports.processImportWorkflow = (0, workflows_sdk_1.createWorkflow)({
69
70
  });
70
71
  const hasCategories = (0, workflows_sdk_1.transform)(uniqueCategoryNames, (names) => names.length > 0);
71
72
  const categoryNameToId = (0, find_or_create_category_step_1.findOrCreateCategoryStep)((0, workflows_sdk_1.transform)({ uniqueCategoryNames, hasCategories }, ({ uniqueCategoryNames: n, hasCategories: h }) => h ? n : []));
73
+ // 2c. Collections — find or create
74
+ const uniqueCollectionNames = (0, workflows_sdk_1.transform)(products, (prods) => [
75
+ ...new Set(prods.map((p) => p.collection_name).filter((v) => !!v)),
76
+ ]);
77
+ const hasCollections = (0, workflows_sdk_1.transform)(uniqueCollectionNames, (names) => names.length > 0);
78
+ const collectionNameToId = (0, find_or_create_collection_step_1.findOrCreateCollectionStep)((0, workflows_sdk_1.transform)({ uniqueCollectionNames, hasCollections }, ({ uniqueCollectionNames: n, hasCollections: h }) => h ? n : []));
72
79
  // 3. Products — find existing by handle AND by variant SKU, split into create/update
73
80
  const handles = (0, workflows_sdk_1.transform)(products, (prods) => [
74
81
  ...new Set(prods.map((p) => (0, utils_1.toHandle)(p.title))),
@@ -90,7 +97,7 @@ exports.processImportWorkflow = (0, workflows_sdk_1.createWorkflow)({
90
97
  }
91
98
  return map;
92
99
  });
93
- const { createList, updateList } = (0, workflows_sdk_1.transform)({ products, tagMap, existingByHandle, skuToProduct, categoryNameToId, imageMapping }, ({ products: prods, tagMap: tags, existingByHandle: existing, skuToProduct: skuMap, categoryNameToId: catMap, imageMapping: imgMap, }) => {
100
+ const { createList, updateList } = (0, workflows_sdk_1.transform)({ products, tagMap, existingByHandle, skuToProduct, categoryNameToId, collectionNameToId, imageMapping }, ({ products: prods, tagMap: tags, existingByHandle: existing, skuToProduct: skuMap, categoryNameToId: catMap, collectionNameToId: colMap, imageMapping: imgMap, }) => {
94
101
  const createList = [];
95
102
  const updateList = [];
96
103
  for (const csvProduct of prods) {
@@ -102,6 +109,9 @@ exports.processImportWorkflow = (0, workflows_sdk_1.createWorkflow)({
102
109
  if (csvProduct.brand_tag && tags[csvProduct.brand_tag]) {
103
110
  input.tag_ids = [tags[csvProduct.brand_tag]];
104
111
  }
112
+ if (csvProduct.collection_name && colMap[csvProduct.collection_name]) {
113
+ input.collection_id = colMap[csvProduct.collection_name];
114
+ }
105
115
  const mappedImages = input.images;
106
116
  const exByHandle = existing[handle];
107
117
  if (exByHandle) {
@@ -114,6 +124,7 @@ exports.processImportWorkflow = (0, workflows_sdk_1.createWorkflow)({
114
124
  subtitle: input.subtitle,
115
125
  tag_ids: input.tag_ids,
116
126
  category_ids: input.category_ids,
127
+ collection_id: input.collection_id,
117
128
  ...(mappedImages?.length
118
129
  ? { thumbnail: input.thumbnail, images: mappedImages }
119
130
  : {}),
@@ -134,6 +145,7 @@ exports.processImportWorkflow = (0, workflows_sdk_1.createWorkflow)({
134
145
  subtitle: input.subtitle,
135
146
  tag_ids: input.tag_ids,
136
147
  category_ids: input.category_ids,
148
+ collection_id: input.collection_id,
137
149
  ...(mappedImages?.length
138
150
  ? { thumbnail: input.thumbnail, images: mappedImages }
139
151
  : {}),
@@ -401,4 +413,4 @@ exports.processImportWorkflow = (0, workflows_sdk_1.createWorkflow)({
401
413
  }));
402
414
  return new workflows_sdk_1.WorkflowResponse(result);
403
415
  });
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1pbXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3Byb2Nlc3MtaW1wb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUkyQztBQUMzQyxxREFTOEI7QUFDOUIscURBQXFEO0FBRXJELDJEQUFzRDtBQUN0RCxtREFBK0Q7QUFFL0QsNkZBQXFGO0FBQ3JGLHVGQUFnRjtBQUNoRixpR0FBeUY7QUFDekYsK0ZBQXVGO0FBQ3ZGLHFHQUE4RjtBQUM5RixxR0FBOEY7QUFDOUYsNkdBQXFHO0FBQ3JHLDZGQUF1RjtBQUN2RixxRkFBK0U7QUFDL0UsdUZBQWdGO0FBQ2hGLG1GQUE2RTtBQUM3RSwyRkFBb0Y7QUFDcEYsNkZBQXNGO0FBQ3RGLDZGQUFzRjtBQVN6RSxRQUFBLHFCQUFxQixHQUFHLElBQUEsOEJBQWMsRUFDakQ7SUFDRSxJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLEtBQUssRUFBRSxJQUFJO0lBQ1gsYUFBYSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7Q0FDaEMsRUFDRCxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFzRjtJQUM1SSxlQUFlO0lBQ2YsTUFBTSxRQUFRLEdBQUcsSUFBQSw2QkFBWSxFQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUU1QyxrRUFBa0U7SUFDbEUsTUFBTSxlQUFlLEdBQUcsSUFBQSx5QkFBUyxFQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDckQsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMs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
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1pbXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3Byb2Nlc3MtaW1wb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUkyQztBQUMzQyxxREFTOEI7QUFDOUIscURBQXFEO0FBRXJELDJEQUFzRDtBQUN0RCxtREFBK0Q7QUFFL0QsNkZBQXFGO0FBQ3JGLHVGQUFnRjtBQUNoRixpR0FBeUY7QUFDekYsK0ZBQXVGO0FBQ3ZGLHFHQUE4RjtBQUM5RixxR0FBOEY7QUFDOUYsNkdBQXFHO0FBQ3JHLDZGQUF1RjtBQUN2RixxRkFBK0U7QUFDL0UsdUZBQWdGO0FBQ2hGLDJGQUFvRjtBQUNwRixtRkFBNkU7QUFDN0UsMkZBQW9GO0FBQ3BGLDZGQUFzRjtBQUN0Riw2RkFBc0Y7QUFTekUsUUFBQSxxQkFBcUIsR0FBRyxJQUFBLDhCQUFjLEVBQ2pEO0lBQ0UsSUFBSSxFQUFFLGdCQUFnQjtJQUN0QixLQUFLLEVBQUUsSUFBSTtJQUNYLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0NBQ2hDLEVBQ0QsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBc0Y7SUFDNUksZUFBZTtJQUNmLE1BQU0sUUFBUSxHQUFHLElBQUEsNkJBQVksRUFBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFFNUMsa0VBQWtFO0lBQ2xFLE1BQU0sZUFBZSxHQUFHLElBQUEseUJBQVMsRUFBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3JELEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQWlCLEVBQUUsQ0FBQyxDQUFDLENB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
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findOrCreateCollectionStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ exports.findOrCreateCollectionStep = (0, workflows_sdk_1.createStep)("find-or-create-collection", async (names, { container }) => {
7
+ if (!names.length)
8
+ return new workflows_sdk_1.StepResponse({});
9
+ const productSvc = container.resolve(utils_1.Modules.PRODUCT);
10
+ const handles = names.map((n) => (0, utils_1.toHandle)(n));
11
+ const existing = await productSvc.listProductCollections({ handle: handles }, { select: ["id", "handle", "title"] });
12
+ const existingByHandle = {};
13
+ for (const col of existing) {
14
+ if (col.handle)
15
+ existingByHandle[col.handle] = col.id;
16
+ }
17
+ const toCreate = names.filter((n) => !existingByHandle[(0, utils_1.toHandle)(n)]);
18
+ let created = [];
19
+ if (toCreate.length) {
20
+ created = await productSvc.createProductCollections(toCreate.map((name) => ({
21
+ title: name,
22
+ handle: (0, utils_1.toHandle)(name),
23
+ })));
24
+ }
25
+ const nameToId = { ...existingByHandle };
26
+ for (const col of created) {
27
+ if (col.handle)
28
+ nameToId[col.handle] = col.id;
29
+ }
30
+ const result = {};
31
+ for (const name of names) {
32
+ const id = nameToId[(0, utils_1.toHandle)(name)];
33
+ if (id)
34
+ result[name] = id;
35
+ }
36
+ console.log(`[findOrCreateCollectionStep] ${existing.length} existing, ${created.length} created`);
37
+ return new workflows_sdk_1.StepResponse(result);
38
+ });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1vci1jcmVhdGUtY29sbGVjdGlvbi5zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9maW5kLW9yLWNyZWF0ZS1jb2xsZWN0aW9uLnN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTZFO0FBQzdFLHFEQUE4RDtBQUdqRCxRQUFBLDBCQUEwQixHQUFHLElBQUEsMEJBQVUsRUFDbEQsMkJBQTJCLEVBQzNCLEtBQUssRUFBRSxLQUFlLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtRQUFFLE9BQU8sSUFBSSw0QkFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQ2xDLGVBQU8sQ0FBQyxPQUFPLENBQ2hCLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLGdCQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5QyxNQUFNLFFBQVEsR0FBRyxNQUFNLFVBQVUsQ0FBQyxzQkFBc0IsQ0FDdEQsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQ25CLEVBQUUsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUN0QyxDQUFDO0lBRUYsTUFBTSxnQkFBZ0IsR0FBMkIsRUFBRSxDQUFDO0lBQ3BELEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxHQUFHLENBQUMsTUFBTTtZQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUEsZ0JBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFckUsSUFBSSxPQUFPLEdBQXFELEVBQUUsQ0FBQztJQUNuRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUMsd0JBQXdCLENBQ2pELFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEIsS0FBSyxFQUFFLElBQUk7WUFDWCxNQUFNLEVBQUUsSUFBQSxnQkFBUSxFQUFDLElBQUksQ0FBQztTQUN2QixDQUFDLENBQUMsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sUUFBUSxHQUEyQixFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUNqRSxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzFCLElBQUksR0FBRyxDQUFDLE1BQU07WUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUEyQixFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBQSxnQkFBUSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxFQUFFO1lBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxnQ0FBZ0MsUUFBUSxDQUFDLE1BQU0sY0FBYyxPQUFPLENBQUMsTUFBTSxVQUFVLENBQ3RGLENBQUM7SUFFRixPQUFPLElBQUksNEJBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQ0YsQ0FBQyJ9
package/README.md CHANGED
@@ -1,64 +1,196 @@
1
- <p align="center">
2
- <a href="https://www.medusajs.com">
3
- <picture>
4
- <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg">
5
- <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
6
- <img alt="Medusa logo" src="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
7
- </picture>
8
- </a>
9
- </p>
10
- <h1 align="center">
11
- Medusa Plugin Starter
12
- </h1>
13
-
14
- <h4 align="center">
15
- <a href="https://docs.medusajs.com">Documentation</a> |
16
- <a href="https://www.medusajs.com">Website</a>
17
- </h4>
18
-
19
- <p align="center">
20
- Building blocks for digital commerce
21
- </p>
22
- <p align="center">
23
- <a href="https://github.com/medusajs/medusa/blob/master/CONTRIBUTING.md">
24
- <img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat" alt="PRs welcome!" />
25
- </a>
26
- <a href="https://www.producthunt.com/posts/medusa"><img src="https://img.shields.io/badge/Product%20Hunt-%231%20Product%20of%20the%20Day-%23DA552E" alt="Product Hunt"></a>
27
- <a href="https://discord.gg/xpCwq3Kfn8">
28
- <img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Discord Chat" />
29
- </a>
30
- <a href="https://twitter.com/intent/follow?screen_name=medusajs">
31
- <img src="https://img.shields.io/twitter/follow/medusajs.svg?label=Follow%20@medusajs" alt="Follow @medusajs" />
32
- </a>
33
- </p>
34
-
35
- ## Compatibility
36
-
37
- This starter is compatible with versions >= 2.4.0 of `@medusajs/medusa`.
38
-
39
- ## Getting Started
40
-
41
- Visit the [Quickstart Guide](https://docs.medusajs.com/learn/installation) to set up a server.
42
-
43
- Visit the [Plugins documentation](https://docs.medusajs.com/learn/fundamentals/plugins) to learn more about plugins and how to create them.
44
-
45
- Visit the [Docs](https://docs.medusajs.com/learn/installation#get-started) to learn more about our system requirements.
46
-
47
- ## What is Medusa
48
-
49
- Medusa is a set of commerce modules and tools that allow you to build rich, reliable, and performant commerce applications without reinventing core commerce logic. The modules can be customized and used to build advanced ecommerce stores, marketplaces, or any product that needs foundational commerce primitives. All modules are open-source and freely available on npm.
50
-
51
- Learn more about [Medusa’s architecture](https://docs.medusajs.com/learn/introduction/architecture) and [commerce modules](https://docs.medusajs.com/learn/fundamentals/modules/commerce-modules) in the Docs.
52
-
53
- ## Community & Contributions
54
-
55
- The community and core team are available in [GitHub Discussions](https://github.com/medusajs/medusa/discussions), where you can ask for support, discuss roadmap, and share ideas.
56
-
57
- Join our [Discord server](https://discord.com/invite/medusajs) to meet other community members.
58
-
59
- ## Other channels
60
-
61
- - [GitHub Issues](https://github.com/medusajs/medusa/issues)
62
- - [Twitter](https://twitter.com/medusajs)
63
- - [LinkedIn](https://www.linkedin.com/company/medusajs)
64
- - [Medusa Blog](https://medusajs.com/blog/)
1
+ # Medusa Import Product Plugin
2
+
3
+ A Medusa v2 plugin for bulk CSV-based product import with support for images, variants, inventory, pricing, categories, collections, tags, and custom attributes.
4
+
5
+ ## Features
6
+
7
+ - **CSV Upload** — Drag-and-drop UI or direct API upload
8
+ - **Idempotent Import** — Matches products by handle/SKU; creates new or updates existing
9
+ - **Variants** — Multi-variant products from a single CSV row per variant
10
+ - **Images** — Downloads external image URLs and uploads to Medusa's file service
11
+ - **Categories & Collections** — Auto-creates missing categories and collections
12
+ - **Tags** — Auto-creates missing product tags (from `brand_tag` column)
13
+ - **Custom Attributes** — Supports product attributes via `@empty-complete-org/medusa-product-attributes`
14
+ - **Inventory** — Creates inventory items, levels, and attaches to variants
15
+ - **Pricing** — Sets base prices (currency: INR) and optional dealer prices via a price list
16
+ - **Sales Channel** — Optionally links all imported products to a sales channel
17
+ - **Job Management** — View import history, track progress, pause/resume/delete jobs
18
+ - **Admin UI** — Full admin pages for uploading and monitoring imports
19
+
20
+ ## Installation
21
+
22
+ ```bash
23
+ npm install medusa-import-product-plugin
24
+ ```
25
+
26
+ ## Configuration
27
+
28
+ Add the plugin to your `medusa-config.ts`:
29
+
30
+ ```ts
31
+ import { defineConfig } from "@medusajs/framework/utils";
32
+
33
+ export default defineConfig({
34
+ plugins: [
35
+ {
36
+ resolve: "medusa-import-product-plugin",
37
+ options: {
38
+ upload_dir: "./uploads", // default: "./uploads"
39
+ price_list_id: "pl_xxx", // required for dealer prices
40
+ sales_channel_id: "sc_xxx", // optional sales channel link
41
+ },
42
+ },
43
+ ],
44
+ });
45
+ ```
46
+
47
+ ### Options
48
+
49
+ | Option | Type | Required | Default | Description |
50
+ |--------|------|----------|---------|-------------|
51
+ | `upload_dir` | `string` | No | `"./uploads"` | Directory for uploaded CSV files |
52
+ | `price_list_id` | `string` | No | — | Medusa price list ID for dealer prices |
53
+ | `sales_channel_id` | `string` | No | — | Sales channel to link imported products |
54
+
55
+ ## CSV Format
56
+
57
+ The CSV should contain one row per variant. Below is the expected column structure:
58
+
59
+ | Column | Required | Description |
60
+ |--------|----------|-------------|
61
+ | `title` | Yes | Product title |
62
+ | `description` | No | Product description |
63
+ | `subtitle` | No | Product subtitle |
64
+ | `category` | No | Comma-separated category names |
65
+ | `brand_tag` | No | Brand tag value (auto-created) |
66
+ | `images` | No | Space or comma-separated image URLs |
67
+ | `option_1_name`, `option_1_value` | No | Variant option (repeat for option_2, etc.) |
68
+ | `variant_sku` | Yes | Variant SKU |
69
+ | `variant_title` | No | Variant title |
70
+ | `price` | Yes | Base price (currency: INR) |
71
+ | `dealer_price` | No | Dealer price (requires `price_list_id` option) |
72
+ | `inventory_quantity` | No | Stock quantity (default: 0) |
73
+ | `attribute_1_name`, `attribute_1_value` | No | Custom attributes (repeat for attribute_2, etc.) |
74
+
75
+ ## Usage
76
+
77
+ ### Admin UI
78
+
79
+ Navigate to **Import Products** in the Medusa admin panel:
80
+
81
+ 1. **Upload** — Drag & drop a CSV file or click to select
82
+ 2. **Start Import** — Click "Start Import" to begin processing
83
+ 3. **Monitor** — View progress bars, row-level status, and stats
84
+ 4. **Pause/Resume/Delete** — Manage active or completed jobs
85
+
86
+ ### API Endpoints
87
+
88
+ #### `GET /admin/import`
89
+ List all import jobs.
90
+
91
+ | Query | Type | Default | Description |
92
+ |-------|------|---------|-------------|
93
+ | `page` | number | 1 | Page number |
94
+ | `limit` | number | 20 | Items per page (max 100) |
95
+
96
+ #### `POST /admin/import`
97
+ Create a new import job. Accepts multipart form data with a `file` field (CSV, max 10MB).
98
+
99
+ #### `GET /admin/import/:id`
100
+ Get import job details including row-level results.
101
+
102
+ #### `DELETE /admin/import/:id`
103
+ Delete an import job (must be paused if currently processing).
104
+
105
+ #### `POST /admin/import/:id/pause`
106
+ Pause a running import job.
107
+
108
+ #### `POST /admin/import/:id/resume`
109
+ Resume a paused import job (re-runs the full workflow idempotently).
110
+
111
+ ## Architecture
112
+
113
+ ```
114
+ Upload CSV → API (multer) → Save to disk → Emit event
115
+
116
+ product-import.start
117
+
118
+ Subscriber runs
119
+ processImportWorkflow
120
+
121
+ ┌───────────┼───────────┐
122
+ ▼ ▼ ▼
123
+ Parse CSV Download Find or Create
124
+ Images Categories, Tags,
125
+ Collections
126
+ │ │ │
127
+ └───────────┼───────────┘
128
+
129
+ ┌───────────────────────┐
130
+ │ Create / Update │
131
+ │ Products + Variants │
132
+ └───────────────────────┘
133
+
134
+ ┌───────────┼───────────┐
135
+ ▼ ▼ ▼
136
+ Custom Inventory Price Sets
137
+ Attributes & Levels & Dealer Prices
138
+ ```
139
+
140
+ ### Workflow Steps
141
+
142
+ The import is orchestrated by the `processImportWorkflow` (defined in `src/workflows/process-import.ts`) with these steps:
143
+
144
+ 1. **Parse CSV** — Read and validate the uploaded CSV file
145
+ 2. **Download Images** — Fetch external URLs and upload to Medusa
146
+ 3. **Resolve Tags** — Find or create brand tags
147
+ 4. **Find or Create Categories** — Resolve category IDs
148
+ 5. **Find or Create Collections** — Resolve collection IDs
149
+ 6. **Match Existing Products** — Look up by handle and variant SKU
150
+ 7. **Create/Update Products** — Idempotent upsert
151
+ 8. **Re-fetch Products** — Get full data with relations
152
+ 9. **Link to Sales Channel** — If configured
153
+ 10. **Set Custom Attributes** — Create definitions and set values
154
+ 11. **Manage Inventory** — Create items, levels, attach to variants
155
+ 12. **Set Prices** — Create price sets and set base + dealer prices
156
+
157
+ ## Types
158
+
159
+ ### ImportJobStatus
160
+
161
+ | Status | Description |
162
+ |--------|-------------|
163
+ | `pending` | Job created, awaiting processing |
164
+ | `processing` | Workflow is actively running |
165
+ | `paused` | Workflow paused by user |
166
+ | `done` | Completed successfully |
167
+ | `failed` | Encountered an error |
168
+
169
+ ### ImportRowStatus
170
+
171
+ | Status | Description |
172
+ |--------|-------------|
173
+ | `created` | Product was created |
174
+ | `updated` | Product was updated |
175
+ | `skipped` | Row was skipped |
176
+ | `failed` | Row encountered an error |
177
+
178
+ ## Development
179
+
180
+ ```bash
181
+ # Build the plugin
182
+ npm run build
183
+
184
+ # Development mode
185
+ npm run dev
186
+ ```
187
+
188
+ ## Requirements
189
+
190
+ - Node.js >= 20
191
+ - Medusa >= 2.4.0
192
+ - `@empty-complete-org/medusa-product-attributes` (peer dependency for custom attributes)
193
+
194
+ ## License
195
+
196
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "medusa-import-product-plugin",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",