@jytextiles/medusa-plugin-faire-store-sync 0.2.4 → 0.2.6

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.
Files changed (26) hide show
  1. package/.medusa/server/src/__tests__/faire-client.spec.js +27 -7
  2. package/.medusa/server/src/__tests__/ingest-faire-order-support.spec.js +61 -1
  3. package/.medusa/server/src/admin/index.js +182 -132
  4. package/.medusa/server/src/admin/index.mjs +184 -134
  5. package/.medusa/server/src/lib/faire-client.js +100 -18
  6. package/.medusa/server/src/lib/types.js +6 -2
  7. package/.medusa/server/src/modules/faire-sync/migrations/Migration20260709161201.js +14 -0
  8. package/.medusa/server/src/modules/faire-sync/models/faire-sync-account.js +5 -1
  9. package/.medusa/server/src/modules/faire-sync/service.js +33 -14
  10. package/.medusa/server/src/workflows/ingest-faire-order-support.js +81 -28
  11. package/.medusa/server/src/workflows/ingest-faire-orders-bulk.js +2 -2
  12. package/.medusa/server/src/workflows/sync-product-to-faire.js +109 -37
  13. package/package.json +1 -1
  14. package/src/__tests__/faire-client.spec.ts +28 -6
  15. package/src/__tests__/ingest-faire-order-support.spec.ts +63 -0
  16. package/src/admin/routes/settings/faire/[id]/page.tsx +56 -61
  17. package/src/admin/routes/settings/faire/page.tsx +78 -8
  18. package/src/lib/faire-client.ts +112 -16
  19. package/src/lib/types.ts +57 -18
  20. package/src/modules/faire-sync/migrations/.snapshot-medusa-faire-sync.json +19 -0
  21. package/src/modules/faire-sync/migrations/Migration20260709161201.ts +13 -0
  22. package/src/modules/faire-sync/models/faire-sync-account.ts +4 -0
  23. package/src/modules/faire-sync/service.ts +42 -16
  24. package/src/workflows/ingest-faire-order-support.ts +96 -29
  25. package/src/workflows/ingest-faire-orders-bulk.ts +1 -1
  26. package/src/workflows/sync-product-to-faire.ts +143 -41
@@ -22,13 +22,53 @@ const splitName = (name) => {
22
22
  return { first: parts[0], last: "" };
23
23
  return { first: parts[0], last: parts.slice(1).join(" ") };
24
24
  };
25
+ // Faire ExternalMoneyV2 = { amount_minor, currency }. Returns integer minor
26
+ // units + ISO currency, or null when the field is absent/not a money object.
27
+ const moneyOf = (m) => m && typeof m === "object" && m.amount_minor != null
28
+ ? { minor: Number(m.amount_minor) || 0, currency: String(m.currency || "") }
29
+ : null;
30
+ // Faire order addresses carry ISO-3 `country_code` ("CAN") + a full `country`
31
+ // name ("Canada"); Medusa wants a lowercase ISO-2. Map the ISO-3 codes for the
32
+ // regions Faire operates in; pass through anything already 2-letter.
33
+ const ISO3_TO_ISO2 = {
34
+ USA: "us", CAN: "ca", GBR: "gb", AUS: "au", NZL: "nz", DEU: "de", FRA: "fr",
35
+ ITA: "it", ESP: "es", PRT: "pt", NLD: "nl", BEL: "be", LUX: "lu", AUT: "at",
36
+ IRL: "ie", CHE: "ch", SWE: "se", DNK: "dk", FIN: "fi", NOR: "no", POL: "pl",
37
+ CZE: "cz", GRC: "gr", HUN: "hu", ROU: "ro", BGR: "bg", HRV: "hr", SVK: "sk",
38
+ SVN: "si", EST: "ee", LVA: "lv", LTU: "lt", CYP: "cy", MLT: "mt",
39
+ };
40
+ const faireCountryToIso2 = (raw) => {
41
+ const s = String(raw ?? "").trim();
42
+ if (!s)
43
+ return undefined;
44
+ if (s.length === 2)
45
+ return s.toLowerCase();
46
+ const iso2 = ISO3_TO_ISO2[s.toUpperCase()];
47
+ return iso2 ?? undefined; // full country names ("Canada") can't be mapped safely
48
+ };
25
49
  function mapFaireOrderToOrder(order) {
26
50
  const orderToken = String(order?.order_token ?? order?.id ?? order?.token ?? "");
27
51
  const address = order?.address ?? order?.shipping_address ?? {};
28
- const currency = String(order?.currency ?? order?.currency_code ?? "usd").toLowerCase();
29
- const buyerName = order?.buyer_name ??
30
- order?.customer_name ??
31
- [address?.first_name, address?.last_name].filter(Boolean).join(" ");
52
+ const items = Array.isArray(order?.items) ? order.items : [];
53
+ // ExternalOrderV2 has NO top-level currency/total. Currency comes off any
54
+ // item's ExternalMoneyV2 `price` (fall back to the payout currency, then the
55
+ // legacy top-level fields for back-compat). See docs verified 2026-07-09.
56
+ const itemMoney = items.map((it) => moneyOf(it?.price)).find(Boolean);
57
+ const currency = String(itemMoney?.currency ||
58
+ moneyOf(order?.payout_costs?.total_payout)?.currency ||
59
+ order?.currency ||
60
+ order?.currency_code ||
61
+ "usd").toLowerCase();
62
+ // Buyer name: ExternalOrderV2.customer { first_name, last_name }, else the
63
+ // recipient name on the address. (`address.company_name`/`retailer_id` is the
64
+ // wholesale store, not the person.) Legacy fields kept as fallbacks.
65
+ const customer = order?.customer ?? {};
66
+ const buyerName = [customer?.first_name, customer?.last_name].filter(Boolean).join(" ") ||
67
+ address?.name ||
68
+ order?.buyer_name ||
69
+ order?.customer_name ||
70
+ [address?.first_name, address?.last_name].filter(Boolean).join(" ") ||
71
+ "";
32
72
  const { first, last } = splitName(buyerName);
33
73
  // Faire usually does NOT expose the retailer's email via API — fall back to a
34
74
  // synthetic, non-deliverable address keyed by order token so the guest
@@ -36,41 +76,54 @@ function mapFaireOrderToOrder(order) {
36
76
  const email = (typeof order?.buyer_email === "string" && order.buyer_email) ||
37
77
  (typeof order?.email === "string" && order.email) ||
38
78
  `faire+${orderToken}@marketplace.invalid`;
39
- const items = Array.isArray(order?.items) ? order.items : [];
40
- const mappedItems = items.map((it) => {
41
- const unitCents = Number(it?.wholesale_price_cents ?? it?.unit_price_cents ?? 0);
42
- return {
43
- title: String(it?.product_name ?? it?.name ?? it?.title ?? "Faire item").slice(0, 250),
44
- quantity: Math.max(1, Number(it?.quantity ?? it?.qty) || 1),
45
- unit_price: (0, exports.faireMoney)(unitCents),
46
- metadata: {
47
- faire_order_token: orderToken,
48
- faire_item_id: it?.id != null ? String(it.id) : null,
49
- faire_product_token: it?.product_token != null ? String(it.product_token) : null,
50
- faire_sku: it?.sku ?? null,
51
- faire_variant_id: it?.variant_id != null ? String(it.variant_id) : null,
52
- },
53
- };
54
- });
79
+ const unitMinorOf = (it) => {
80
+ const m = moneyOf(it?.price);
81
+ return m
82
+ ? m.minor
83
+ : Number(it?.price_cents ?? it?.wholesale_price_cents ?? it?.unit_price_cents ?? 0);
84
+ };
85
+ const mappedItems = items.map((it) => ({
86
+ title: String(it?.product_name ?? it?.name ?? it?.title ?? "Faire item").slice(0, 250),
87
+ quantity: Math.max(1, Number(it?.quantity ?? it?.qty) || 1),
88
+ unit_price: (0, exports.faireMoney)(unitMinorOf(it)),
89
+ metadata: {
90
+ faire_order_token: orderToken,
91
+ faire_item_id: it?.id != null ? String(it.id) : null,
92
+ faire_product_token: it?.product_id != null
93
+ ? String(it.product_id)
94
+ : it?.product_token != null
95
+ ? String(it.product_token)
96
+ : null,
97
+ faire_sku: it?.sku ?? null,
98
+ faire_variant_id: it?.variant_id != null ? String(it.variant_id) : null,
99
+ },
100
+ }));
101
+ // No order-level total exists — sum line values (unit price × qty). Honour an
102
+ // explicit total_cents/grand_total_cents if a caller ever supplies one.
103
+ const explicitTotalCents = order?.total_cents ?? order?.grand_total_cents;
104
+ const total = explicitTotalCents != null
105
+ ? (0, exports.faireMoney)(explicitTotalCents)
106
+ : (0, exports.faireMoney)(items.reduce((sum, it) => sum + unitMinorOf(it) * Math.max(1, Number(it?.quantity ?? it?.qty) || 1), 0));
55
107
  const shipping_address = {
56
108
  first_name: address?.first_name ?? first,
57
109
  last_name: address?.last_name ?? last,
58
- address_1: address?.street1 ?? address?.address1 ?? address?.address_1 ?? "",
59
- address_2: address?.street2 ?? address?.address2 ?? address?.address_2 ?? "",
110
+ company: address?.company_name ?? undefined,
111
+ address_1: address?.address1 ?? address?.address_1 ?? address?.street1 ?? "",
112
+ address_2: address?.address2 ?? address?.address_2 ?? address?.street2 ?? "",
60
113
  city: address?.city ?? "",
61
- province: address?.state ?? address?.province ?? "",
62
- postal_code: address?.zip ?? address?.postal_code ?? "",
63
- country_code: String(address?.country ?? address?.country_code ?? "").toLowerCase() || undefined,
64
- phone: address?.phone ?? undefined,
114
+ province: address?.state_code ?? address?.state ?? address?.province ?? "",
115
+ postal_code: address?.postal_code ?? address?.zip ?? "",
116
+ country_code: faireCountryToIso2(address?.country_code ?? address?.country),
117
+ phone: address?.phone_number ?? address?.phone ?? undefined,
65
118
  };
66
119
  return {
67
120
  order_token: orderToken,
68
121
  email,
69
122
  buyer_name: buyerName || null,
70
123
  currency_code: currency,
71
- total: (0, exports.faireMoney)(order?.total_cents ?? order?.grand_total_cents),
124
+ total,
72
125
  shipping_address,
73
126
  items: mappedItems,
74
127
  };
75
128
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5nZXN0LWZhaXJlLW9yZGVyLXN1cHBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2luZ2VzdC1mYWlyZS1vcmRlci1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwRUFBMEU7QUFDMUUsc0VBQXNFOzs7QUFrQ3RFLG9EQTREQztBQTVGRCx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0Usa0NBQWtDO0FBQzNCLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUU7SUFDbkQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLENBQUMsQ0FBQTtBQUhZLFFBQUEsVUFBVSxjQUd0QjtBQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBYSxFQUFtQyxFQUFFO0lBQ25FLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUE7SUFDM0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVB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
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5nZXN0LWZhaXJlLW9yZGVyLXN1cHBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2luZ2VzdC1mYWlyZS1vcmRlci1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwRUFBMEU7QUFDMUUsc0VBQXNFOzs7QUEyRHRFLG9EQXNHQztBQS9KRCx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0Usa0NBQWtDO0FBQzNCLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUU7SUFDbkQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLENBQUMsQ0FBQTtBQUhZLFFBQUEsVUFBVSxjQUd0QjtBQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBYSxFQUFtQyxFQUFFO0lBQ25FLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUE7SUFDM0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUE7QUFDNUQsQ0FBQyxDQUFBO0FBRUQsNEVBQTRFO0FBQzVFLDZFQUE2RTtBQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQU0sRUFBOEMsRUFBRSxDQUNyRSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSTtJQUNsRCxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQzVFLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFFViw4RUFBOEU7QUFDOUUsK0VBQStFO0FBQy9FLHFFQUFxRTtBQUNyRSxNQUFNLFlBQVksR0FBMkI7SUFDM0MsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDM0UsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDM0UsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDM0UsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVB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
@@ -36,7 +36,7 @@ const openBatchStep = (0, workflows_sdk_1.createStep)("faire-ingest-orders-open-
36
36
  const processBatchStep = (0, workflows_sdk_1.createStep)("faire-ingest-orders-process-batch-step", async (input, { container }) => {
37
37
  const service = container.resolve(faire_sync_1.FAIRE_SYNC_MODULE);
38
38
  const account = await service.ensureFreshToken();
39
- const client = service.getClient();
39
+ const client = service.getClient(account.auth_mode);
40
40
  // Resolve the incremental window. Precedence:
41
41
  // explicit input > persisted high-water mark > full backfill (undefined).
42
42
  let updatedAtMin;
@@ -140,4 +140,4 @@ exports.ingestFaireOrdersBulkWorkflow = (0, workflows_sdk_1.createWorkflow)(expo
140
140
  }))).config({ async: true, backgroundExecution: true });
141
141
  return new workflows_sdk_1.WorkflowResponse({ batch_id: opened.batch_id });
142
142
  });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5nZXN0LWZhaXJlLW9yZGVycy1idWxrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9pbmdlc3QtZmFpcmUtb3JkZXJzLWJ1bGsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBTzBDO0FBQzFDLHNEQUF5RDtBQUV6RCw2REFBK0Q7QUFFbEQsUUFBQSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQTtBQVVsRSw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSx5QkFBeUI7QUFDekIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFBO0FBQ3pCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQTtBQUMzQixNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUE7QUFDeEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO0FBRXBCLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRW5FLDhFQUE4RTtBQUU5RSxNQUFNLGFBQWEsR0FBRyxJQUFBLDBCQUFVLEVBQzlCLHFDQUFxQyxFQUNyQyxLQUFLLEVBQ0gsTUFBa0MsRUFDbEMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQ3VCLEVBQUU7SUFDL0MsTUFBTSxPQUFPLEdBQXFCLFNBQVMsQ0FBQyxPQUFPLENBQUMsOEJBQWlCLENBQUMsQ0FBQTtJQUV0RSxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0lBQ2hELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsc0JBQXNCLENBQUM7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
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5nZXN0LWZhaXJlLW9yZGVycy1idWxrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9pbmdlc3QtZmFpcmUtb3JkZXJzLWJ1bGsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBTzBDO0FBQzFDLHNEQUF5RDtBQUV6RCw2REFBK0Q7QUFFbEQsUUFBQSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQTtBQVVsRSw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSx5QkFBeUI7QUFDekIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFBO0FBQ3pCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQTtBQUMzQixNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUE7QUFDeEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO0FBRXBCLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRW5FLDhFQUE4RTtBQUU5RSxNQUFNLGFBQWEsR0FBRyxJQUFBLDBCQUFVLEVBQzlCLHFDQUFxQyxFQUNyQyxLQUFLLEVBQ0gsTUFBa0MsRUFDbEMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQ3VCLEVBQUU7SUFDL0MsTUFBTSxPQUFPLEdBQXFCLFNBQVMsQ0FBQyxPQUFPLENBQUMsOEJBQWlCLENBQUMsQ0FBQTtJQUV0RSxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0lBQ2hELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsc0JBQXNCLENBQUM7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
@@ -16,6 +16,27 @@ const productDisplayUrl = (product) => {
16
16
  return null;
17
17
  return `https://www.faire.com/brand/products/${product.product_token}`;
18
18
  };
19
+ /**
20
+ * Faire variant prices are geo-scoped (`geo_constraint`). Derive a sensible
21
+ * default from the brand's currency (and country when known). Eurozone brands
22
+ * map to the EUROPEAN_UNION country_group; otherwise scope to a single country.
23
+ */
24
+ const geoForCurrency = (currency, country) => {
25
+ switch (currency) {
26
+ case "EUR":
27
+ return { country_group: "EUROPEAN_UNION" };
28
+ case "GBP":
29
+ return { country: "GB" };
30
+ case "USD":
31
+ return { country: "US" };
32
+ case "CAD":
33
+ return { country: "CA" };
34
+ case "AUD":
35
+ return { country: "AU" };
36
+ default:
37
+ return country ? { country } : { country_group: "EUROPEAN_UNION" };
38
+ }
39
+ };
19
40
  // ── Step 1: resolve account (fresh token) + settings ─────────────────────
20
41
  const resolveFaireConfigStep = (0, workflows_sdk_1.createStep)("faire-resolve-config-step", async (_, { container }) => {
21
42
  const service = container.resolve(faire_sync_1.FAIRE_SYNC_MODULE);
@@ -25,7 +46,9 @@ const resolveFaireConfigStep = (0, workflows_sdk_1.createStep)("faire-resolve-co
25
46
  account_id: account.id,
26
47
  brand_id: account.brand_id,
27
48
  access_token: account.access_token,
49
+ auth_mode: account.auth_mode ?? "oauth",
28
50
  currency: account.currency ?? null,
51
+ country: account.country ?? null,
29
52
  settings,
30
53
  });
31
54
  });
@@ -45,6 +68,8 @@ const prepareProductStep = (0, workflows_sdk_1.createStep)("faire-prepare-produc
45
68
  "tags.*",
46
69
  "variants.*",
47
70
  "variants.prices.*",
71
+ "variants.options.*",
72
+ "variants.options.option.*",
48
73
  "variants.inventory_items.*",
49
74
  "images.*",
50
75
  "variants.sku",
@@ -74,53 +99,94 @@ const prepareProductStep = (0, workflows_sdk_1.createStep)("faire-prepare-produc
74
99
  const settings = input.settings;
75
100
  const metadata = product.metadata || {};
76
101
  const variants = product.variants || [];
77
- // Medusa v2 stores money as a whole decimal in the price's currency (NOT
78
- // minor units). Faire wants integer cents, so round to cents.
79
- const toCents = (amount) => Math.round(Number(amount || 0) * 100);
102
+ // ── Currency + geo constraint (Faire prices are geo-scoped) ────────────
103
+ // Prefer the brand's own currency; fall back to the price currency Medusa
104
+ // stored, then EUR. Currency picks the price row + drives the geo default.
105
+ const currency = String(metadata.faire_currency ||
106
+ input.currency ||
107
+ (variants.flatMap((v) => v.prices || [])[0]?.currency_code ?? "EUR")).toUpperCase();
108
+ const geoConstraint = metadata.faire_geo_constraint && typeof metadata.faire_geo_constraint === "object"
109
+ ? metadata.faire_geo_constraint
110
+ : geoForCurrency(currency, input.country);
111
+ // Medusa v2 stores money as a whole decimal in the price's currency; Faire
112
+ // wants integer minor units (cents), so round.
113
+ const toMinor = (amount) => Math.round(Number(amount || 0) * 100);
80
114
  const markupPercent = Number(metadata.faire_wholesale_markup_percent ?? settings.default_wholesale_markup_percent) ||
81
115
  0;
82
- const buildVariant = (v) => {
83
- const prices = v.prices || [];
84
- const retail = prices[0] ?? prices.find(Boolean);
85
- const retailCents = retail ? toCents(retail.amount) : 0;
86
- const wholesaleCents = markupPercent > 0
87
- ? Math.round((retailCents * (100 - markupPercent)) / 100)
88
- : retailCents;
116
+ // Pick the price row matching the chosen currency (fall back to first).
117
+ const pickPrice = (prices) => prices.find((p) => String(p.currency_code || "").toUpperCase() === currency) ??
118
+ prices[0] ??
119
+ null;
120
+ const buildVariant = (v, idx) => {
121
+ const retail = pickPrice(v.prices || []);
122
+ const retailMinor = retail ? toMinor(retail.amount) : 0;
123
+ const wholesaleMinor = markupPercent > 0
124
+ ? Math.round((retailMinor * (100 - markupPercent)) / 100)
125
+ : retailMinor;
126
+ const sku = v.sku || v.id;
127
+ const options = (v.options || [])
128
+ .map((o) => ({
129
+ name: String(o.option?.title || o.title || "Option"),
130
+ value: String(o.value ?? ""),
131
+ }))
132
+ .filter((o) => o.value) || [];
89
133
  return {
90
- sku: v.sku || v.id,
91
- name: v.title || undefined,
92
- retail_price_cents: retailCents || undefined,
93
- wholesale_price_cents: wholesaleCents || undefined,
94
- inventory_count: Number(v.inventory_quantity) || 0,
134
+ sku,
135
+ name: v.title || sku,
136
+ idempotence_token: `${product.id}:${v.id || sku}`,
137
+ options: options.length ? options : undefined,
138
+ available_quantity: Number(v.inventory_quantity) || 0,
139
+ prices: retailMinor > 0
140
+ ? [
141
+ {
142
+ geo_constraint: geoConstraint,
143
+ wholesale_price: { amount_minor: wholesaleMinor, currency },
144
+ retail_price: { amount_minor: retailMinor, currency },
145
+ },
146
+ ]
147
+ : undefined,
95
148
  };
96
149
  };
97
- // Aggregate retail/wholesale from min-variant for the product-level price.
98
- const allPrices = variants.flatMap((v) => v.prices || []);
99
- const minRetail = allPrices
100
- .map((p) => toCents(p.amount))
101
- .filter((a) => a > 0)
102
- .sort((a, b) => a - b)[0] ?? 0;
103
- const minWholesale = markupPercent > 0
104
- ? Math.round((minRetail * (100 - markupPercent)) / 100)
105
- : minRetail;
106
- const tags = (product.tags || [])
107
- .map((t) => t.value)
108
- .filter(Boolean);
109
150
  const images = (product.images || [])
110
151
  .map((img) => ({ url: img.url }))
111
152
  .filter((i) => i.url);
153
+ // Resolve taxonomy_type.id — REQUIRED by Faire create. Priority:
154
+ // product.metadata.faire_taxonomy_type_id (tt_… or a category name)
155
+ // → settings.default_category (id or name) → error.
156
+ const client = service.getClient(input.auth_mode);
157
+ const categoryHint = metadata.faire_taxonomy_type_id ||
158
+ metadata.faire_category ||
159
+ settings.default_category ||
160
+ "";
161
+ const taxonomyTypeId = await client.resolveTaxonomyTypeId(input.access_token, String(categoryHint));
162
+ if (!taxonomyTypeId) {
163
+ throw new Error("Faire requires a product category (taxonomy_type). Set a Faire " +
164
+ "category in sync settings (default_category) or on the product " +
165
+ "(metadata.faire_taxonomy_type_id — a `tt_…` id or a category name).");
166
+ }
167
+ const lifecycle_state = settings.follow_product_status !== false && product.status === "published"
168
+ ? "PUBLISHED"
169
+ : "DRAFT";
170
+ const builtVariants = (variants.length ? variants : [null]).map((v, i) => v
171
+ ? buildVariant(v, i)
172
+ : {
173
+ // Single-variant fallback for products with no explicit variants.
174
+ sku: product.id,
175
+ name: product.title || "Default",
176
+ idempotence_token: `${product.id}:default`,
177
+ available_quantity: 0,
178
+ });
112
179
  const product_input = {
113
- brand_id: input.brand_id,
114
180
  name: (product.title || "Untitled Product").slice(0, 140),
181
+ idempotence_token: product.id,
182
+ lifecycle_state,
183
+ taxonomy_type: { id: taxonomyTypeId },
115
184
  description: product.description || "",
116
- wholesale_price_cents: minWholesale || undefined,
117
- retail_price_cents: minRetail || undefined,
118
- images,
119
- variants: variants.length ? variants.map(buildVariant) : undefined,
120
- tags,
121
185
  short_description: typeof metadata.faire_short_description === "string"
122
186
  ? metadata.faire_short_description
123
187
  : undefined,
188
+ images,
189
+ variants: builtVariants,
124
190
  };
125
191
  return new workflows_sdk_1.StepResponse({
126
192
  product_id: input.product_id,
@@ -133,7 +199,7 @@ const prepareProductStep = (0, workflows_sdk_1.createStep)("faire-prepare-produc
133
199
  // ── Step 3: create/update product + push inventory ───────────────────────
134
200
  const syncProductStep = (0, workflows_sdk_1.createStep)("faire-sync-product-step", async (input, { container }) => {
135
201
  const service = container.resolve(faire_sync_1.FAIRE_SYNC_MODULE);
136
- const client = service.getClient();
202
+ const client = service.getClient(input.config.auth_mode);
137
203
  const { access_token, settings } = input.config;
138
204
  const { product_input, existing_product_token, product_status } = input.prepared;
139
205
  const warnings = [];
@@ -143,9 +209,11 @@ const syncProductStep = (0, workflows_sdk_1.createStep)("faire-sync-product-step
143
209
  product = await client.updateProduct(access_token, existing_product_token, {
144
210
  name: product_input.name,
145
211
  description: product_input.description,
212
+ short_description: product_input.short_description,
213
+ lifecycle_state: product_input.lifecycle_state,
214
+ taxonomy_type: product_input.taxonomy_type,
146
215
  images: product_input.images,
147
216
  variants: product_input.variants,
148
- tags: product_input.tags,
149
217
  });
150
218
  }
151
219
  else {
@@ -162,7 +230,7 @@ const syncProductStep = (0, workflows_sdk_1.createStep)("faire-sync-product-step
162
230
  try {
163
231
  const levels = product_input.variants.map((v) => ({
164
232
  sku: v.sku,
165
- current_count: v.inventory_count ?? 0,
233
+ on_hand_quantity: v.available_quantity ?? 0,
166
234
  }));
167
235
  await client.updateInventory(access_token, levels);
168
236
  }
@@ -241,6 +309,10 @@ exports.syncProductToFaireWorkflow = (0, workflows_sdk_1.createWorkflow)(exports
241
309
  product_id: data.input.product_id,
242
310
  settings: data.config.settings,
243
311
  brand_id: data.config.brand_id,
312
+ currency: data.config.currency,
313
+ country: data.config.country,
314
+ access_token: data.config.access_token,
315
+ auth_mode: data.config.auth_mode,
244
316
  })));
245
317
  const result = syncProductStep((0, workflows_sdk_1.transform)({ config, prepared }, (data) => ({
246
318
  config: data.config,
@@ -259,4 +331,4 @@ exports.syncProductToFaireWorkflow = (0, workflows_sdk_1.createWorkflow)(exports
259
331
  warnings: result.warnings,
260
332
  });
261
333
  });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1wcm9kdWN0LXRvLWZhaXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zeW5jLXByb2R1Y3QtdG8tZmFpcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBTzBDO0FBQzFDLHFEQUE4RTtBQUc5RSxzREFBeUQ7QUFPNUMsUUFBQSxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQTtBQTRCekQ7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQXdCLEVBQWlCLEVBQUU7SUFDcEUsSUFBSSxPQUFPLENBQUMsR0FBRztRQUFFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQTtJQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUN2QyxPQUFPLHdDQUF3QyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUE7QUFDeEUsQ0FBQyxDQUFBO0FBRUQsNEVBQTRFO0FBRTVFLE1BQU0sc0JBQXNCLEdBQUcsSUFBQSwwQkFBVSxFQUN2QywyQkFBMkIsRUFDM0IsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUF5QyxFQUFFO0lBQ2hFLE1BQU0sT0FBTyxHQUFxQixTQUFTLENBQUMsT0FBTyxDQUFDLDhCQUFpQixDQUFDLENBQUE7SUFDdEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtJQUNoRCxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM1QyxPQUFPLElBQUksNEJBQVksQ0FBQztRQUN0QixVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQzFCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtRQUNsQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJO1FBQ2xDLFFBQVE7S0FD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
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1wcm9kdWN0LXRvLWZhaXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zeW5jLXByb2R1Y3QtdG8tZmFpcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBTzBDO0FBQzFDLHFEQUE4RTtBQUc5RSxzREFBeUQ7QUFPNUMsUUFBQSxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQTtBQThCekQ7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQXdCLEVBQWlCLEVBQUU7SUFDcEUsSUFBSSxPQUFPLENBQUMsR0FBRztRQUFFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQTtJQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUN2QyxPQUFPLHdDQUF3QyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUE7QUFDeEUsQ0FBQyxDQUFBO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQ3JCLFFBQWdCLEVBQ2hCLE9BQXNCLEVBQ3dCLEVBQUU7SUFDaEQsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLEtBQUs7WUFDUixPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLENBQUE7UUFDNUMsS0FBSyxLQUFLO1lBQ1IsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQixLQUFLLEtBQUs7WUFDUixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFBO1FBQzFCLEtBQUssS0FBSztZQUNSLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUE7UUFDMUIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQjtZQUNFLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jytextiles/medusa-plugin-faire-store-sync",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"
@@ -30,7 +30,7 @@ describe("FaireClient — issue #952 corrections", () => {
30
30
  it("uses the verified base / auth / token URLs by default", () => {
31
31
  const c = new FaireClient({})
32
32
  // defaults are exported from types and consumed verbatim
33
- expect(DEFAULT_API_BASE).toBe("https://faire.com/external-api/v2")
33
+ expect(DEFAULT_API_BASE).toBe("https://www.faire.com/external-api/v2")
34
34
  expect(DEFAULT_AUTH_URL).toBe("https://faire.com/oauth2/authorize")
35
35
  expect(DEFAULT_TOKEN_URL).toBe("https://www.faire.com/api/external-api-oauth2/token")
36
36
  })
@@ -94,23 +94,45 @@ describe("FaireClient — issue #952 corrections", () => {
94
94
 
95
95
  it("pushes inventory via PATCH /product-inventory/by-skus (not GET /inventory)", async () => {
96
96
  const c = new FaireClient(oauthOpts)
97
- await c.updateInventory("t", [{ sku: "S1", current_count: 7 }])
97
+ await c.updateInventory("t", [{ sku: "S1", on_hand_quantity: 7 }])
98
98
  expect(lastInit.method).toBe("PATCH")
99
99
  expect(lastUrl).toBe(`${DEFAULT_API_BASE}/product-inventory/by-skus`)
100
100
  expect(JSON.parse(lastInit.body)).toEqual({
101
- inventories: [{ sku: "S1", current_count: 7 }],
101
+ inventories: [{ sku: "S1", on_hand_quantity: 7 }],
102
102
  })
103
103
  })
104
104
 
105
- it("lists orders with cursor page + updated_at_min", async () => {
105
+ it("lists orders with numeric page + updated_at_min", async () => {
106
106
  const c = new FaireClient(oauthOpts)
107
- await c.listOrders("t", { page: "cursor-xyz", updated_at_min: "2026-01-01T00:00:00Z" })
107
+ await c.listOrders("t", { page: "2", updated_at_min: "2026-01-01T00:00:00Z" })
108
108
  const url = new URL(lastUrl)
109
109
  expect(url.pathname).toBe("/external-api/v2/orders")
110
- expect(url.searchParams.get("page")).toBe("cursor-xyz")
110
+ expect(url.searchParams.get("page")).toBe("2")
111
111
  expect(url.searchParams.get("updated_at_min")).toBe("2026-01-01T00:00:00Z")
112
112
  })
113
113
 
114
+ it("derives next_page from numeric page (Faire returns no cursor)", async () => {
115
+ const c = new FaireClient(oauthOpts)
116
+ const page = (rows: number) => ({
117
+ ok: true,
118
+ status: 200,
119
+ headers: new Map(),
120
+ text: async () =>
121
+ JSON.stringify({
122
+ page: undefined,
123
+ orders: Array.from({ length: rows }, (_, i) => ({ id: `bo_${i}` })),
124
+ }),
125
+ })
126
+ // A full page (rows === limit) → there may be more → next_page = current+1.
127
+ fetchMock.mockImplementationOnce(async () => page(2) as any)
128
+ const full = await c.listOrders("t", { limit: 2, page: "1" })
129
+ expect(full.next_page).toBe("2")
130
+ // A short page → last page → no next_page.
131
+ fetchMock.mockImplementationOnce(async () => page(1) as any)
132
+ const short = await c.listOrders("t", { limit: 2, page: "2" })
133
+ expect(short.next_page).toBeUndefined()
134
+ })
135
+
114
136
  it("posts order processing (PUT) and shipments (POST) on the right paths", async () => {
115
137
  const c = new FaireClient(oauthOpts)
116
138
  await c.setOrderProcessing("t", "o_1", { accepted: true })
@@ -66,6 +66,69 @@ describe("mapFaireOrderToOrder", () => {
66
66
  expect(mapped.items).toEqual([])
67
67
  })
68
68
 
69
+ it("maps a real ExternalOrderV2 (customer/address/item.price, no top-level total)", () => {
70
+ const order = {
71
+ id: "bo_bxdmjbwxid",
72
+ state: "NEW",
73
+ customer: { first_name: "John", last_name: "Smith" },
74
+ address: {
75
+ name: "John Smith",
76
+ company_name: "Faire Wholesale, Inc",
77
+ address1: "41 King Street West",
78
+ address2: "3rd Floor",
79
+ city: "Kitchener",
80
+ state: "Ontario",
81
+ state_code: "ON",
82
+ postal_code: "N2G 1A1",
83
+ country: "Canada",
84
+ country_code: "CAN",
85
+ phone_number: "555-123-4567",
86
+ },
87
+ items: [
88
+ {
89
+ id: "oi_bq425ju5vh",
90
+ product_id: "p_fccaefnahr",
91
+ variant_id: "po_3745tjzrpc",
92
+ sku: "goldenretriever",
93
+ quantity: 2,
94
+ product_name: "Golden Dog",
95
+ price: { amount_minor: 4999, currency: "USD" },
96
+ },
97
+ ],
98
+ payout_costs: { total_payout: { amount_minor: 8000, currency: "USD" } },
99
+ }
100
+
101
+ const mapped = mapFaireOrderToOrder(order)
102
+
103
+ expect(mapped.order_token).toBe("bo_bxdmjbwxid")
104
+ expect(mapped.currency_code).toBe("usd")
105
+ // no order-level total → sum of line values: 49.99 × 2
106
+ expect(mapped.total).toBe(99.98)
107
+ expect(mapped.buyer_name).toBe("John Smith")
108
+ expect(mapped.shipping_address).toMatchObject({
109
+ first_name: "John",
110
+ last_name: "Smith",
111
+ company: "Faire Wholesale, Inc",
112
+ address_1: "41 King Street West",
113
+ address_2: "3rd Floor",
114
+ city: "Kitchener",
115
+ province: "ON",
116
+ postal_code: "N2G 1A1",
117
+ country_code: "ca", // ISO-3 CAN → ISO-2 ca
118
+ phone: "555-123-4567",
119
+ })
120
+ expect(mapped.items[0]).toMatchObject({
121
+ title: "Golden Dog",
122
+ quantity: 2,
123
+ unit_price: 49.99,
124
+ })
125
+ expect(mapped.items[0].metadata).toMatchObject({
126
+ faire_product_token: "p_fccaefnahr",
127
+ faire_variant_id: "po_3745tjzrpc",
128
+ faire_sku: "goldenretriever",
129
+ })
130
+ })
131
+
69
132
  it("uses buyer email when provided", () => {
70
133
  const mapped = mapFaireOrderToOrder({
71
134
  order_token: "o_2",