@curless/shopify-adapter 0.7.0 → 0.9.0
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.
- package/dist/catalog.d.ts +2 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +13 -3
- package/dist/catalog.js.map +1 -1
- package/dist/checkout.d.ts +15 -1
- package/dist/checkout.d.ts.map +1 -1
- package/dist/checkout.js +8 -1
- package/dist/checkout.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/catalog.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ type AdminVariant = {
|
|
|
5
5
|
price: string;
|
|
6
6
|
};
|
|
7
7
|
type AdminProduct = {
|
|
8
|
+
handle: string;
|
|
8
9
|
title: string;
|
|
9
10
|
description: string;
|
|
10
11
|
productType: string;
|
|
@@ -18,7 +19,7 @@ type AdminProduct = {
|
|
|
18
19
|
nodes: AdminVariant[];
|
|
19
20
|
};
|
|
20
21
|
};
|
|
21
|
-
export declare const productsToItems: (products: AdminProduct[], currencyCode: string, warn?: (msg: string) => void) => CatalogItem[];
|
|
22
|
+
export declare const productsToItems: (products: AdminProduct[], currencyCode: string, warn?: (msg: string) => void, storefront?: string) => CatalogItem[];
|
|
22
23
|
export declare const fetchShopifyCatalog: (config: ShopifyConfig, fetchImpl?: typeof fetch, warn?: (msg: string) => void) => Promise<CatalogItem[]>;
|
|
23
24
|
export {};
|
|
24
25
|
//# sourceMappingURL=catalog.d.ts.map
|
package/dist/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI7D,KAAK,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAGpB,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE;QAAE,QAAQ,CAAC,EAAE;YAAE,WAAW,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,KAAK,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;CAC1E,CAAC;AAUF,eAAO,MAAM,eAAe,GAC1B,UAAU,YAAY,EAAE,EACxB,cAAc,MAAM,EACpB,OAAM,CAAC,GAAG,EAAE,MAAM,KAAK,IAA4C,
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI7D,KAAK,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAGpB,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE;QAAE,QAAQ,CAAC,EAAE;YAAE,WAAW,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,KAAK,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;CAC1E,CAAC;AAUF,eAAO,MAAM,eAAe,GAC1B,UAAU,YAAY,EAAE,EACxB,cAAc,MAAM,EACpB,OAAM,CAAC,GAAG,EAAE,MAAM,KAAK,IAA4C,EAKnE,aAAa,MAAM,KAClB,WAAW,EAyCb,CAAC;AAkCF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,aAAa,EACrB,YAAW,OAAO,KAAa,EAC/B,OAAM,CAAC,GAAG,EAAE,MAAM,KAAK,IAA4C,KAClE,OAAO,CAAC,WAAW,EAAE,CAoBvB,CAAC"}
|
package/dist/catalog.js
CHANGED
|
@@ -10,7 +10,13 @@ const VARIANT_PAGE_SIZE = 250;
|
|
|
10
10
|
// Flatten products→variants into CatalogItems in the store's own currency.
|
|
11
11
|
// Carries whatever currency the store uses (a real merchant isn't necessarily
|
|
12
12
|
// EUR/USD). Only a missing SKU drops a variant.
|
|
13
|
-
export const productsToItems = (products, currencyCode, warn = (m) => console.warn(`[shopify] ${m}`)
|
|
13
|
+
export const productsToItems = (products, currencyCode, warn = (m) => console.warn(`[shopify] ${m}`),
|
|
14
|
+
// The shop's own domain, as Shopify hands it over: a URL, not a hostname.
|
|
15
|
+
// Fourth and optional rather than earlier in the list so existing callers
|
|
16
|
+
// keep working — a shop with no primary domain set simply gets no item.url,
|
|
17
|
+
// and the consumer falls back to the myshopify host it already had.
|
|
18
|
+
storefront) => {
|
|
19
|
+
const base = (storefront ?? '').trim().replace(/\/+$/, '');
|
|
14
20
|
const items = [];
|
|
15
21
|
for (const p of products) {
|
|
16
22
|
// Loud, not silent: a >250-variant product had its tail dropped by the query.
|
|
@@ -44,6 +50,7 @@ export const productsToItems = (products, currencyCode, warn = (m) => console.wa
|
|
|
44
50
|
// permalink needs.
|
|
45
51
|
variantId: v.id.split('/').pop(),
|
|
46
52
|
productType: p.productType,
|
|
53
|
+
...(base && p.handle ? { url: `${base}/products/${p.handle}` } : {}),
|
|
47
54
|
});
|
|
48
55
|
}
|
|
49
56
|
}
|
|
@@ -53,10 +60,11 @@ export const productsToItems = (products, currencyCode, warn = (m) => console.wa
|
|
|
53
60
|
// `sku`/`price` are the mapped fields; `featuredImage` is the optional image.
|
|
54
61
|
const PRODUCTS_QUERY = `
|
|
55
62
|
query CatalogProducts($cursor: String) {
|
|
56
|
-
shop { currencyCode }
|
|
63
|
+
shop { currencyCode primaryDomain { url } }
|
|
57
64
|
products(first: 100, after: $cursor) {
|
|
58
65
|
pageInfo { hasNextPage endCursor }
|
|
59
66
|
nodes {
|
|
67
|
+
handle
|
|
60
68
|
title
|
|
61
69
|
description
|
|
62
70
|
productType
|
|
@@ -75,14 +83,16 @@ export const fetchShopifyCatalog = async (config, fetchImpl = fetch, warn = (m)
|
|
|
75
83
|
const token = await exchangeToken(config, fetchImpl);
|
|
76
84
|
const products = [];
|
|
77
85
|
let currencyCode = 'USD';
|
|
86
|
+
let storefront;
|
|
78
87
|
let cursor = null;
|
|
79
88
|
do {
|
|
80
89
|
const page = await shopifyGraphql(config, token, PRODUCTS_QUERY, { cursor }, fetchImpl);
|
|
81
90
|
if (page.shop?.currencyCode)
|
|
82
91
|
currencyCode = page.shop.currencyCode;
|
|
92
|
+
storefront = page.shop?.primaryDomain?.url ?? storefront;
|
|
83
93
|
products.push(...page.products.nodes);
|
|
84
94
|
cursor = page.products.pageInfo.hasNextPage ? page.products.pageInfo.endCursor : null;
|
|
85
95
|
} while (cursor);
|
|
86
|
-
return productsToItems(products, currencyCode, warn);
|
|
96
|
+
return productsToItems(products, currencyCode, warn, storefront);
|
|
87
97
|
};
|
|
88
98
|
//# sourceMappingURL=catalog.js.map
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yEAAyE;AACzE,6EAA6E;AAC7E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/checkout.d.ts
CHANGED
|
@@ -4,7 +4,21 @@ export type CartLine = {
|
|
|
4
4
|
variantId: string;
|
|
5
5
|
quantity: number;
|
|
6
6
|
};
|
|
7
|
-
export declare const cartPermalink: (config: Pick<ShopifyConfig, "shopDomain"
|
|
7
|
+
export declare const cartPermalink: (config: Pick<ShopifyConfig, "shopDomain"> & {
|
|
8
|
+
/**
|
|
9
|
+
* The shop's OWN domain, when it has one — `shop.primaryDomain` rather than
|
|
10
|
+
* `<handle>.myshopify.com`. Preferred whenever it is known.
|
|
11
|
+
*
|
|
12
|
+
* Both work: Shopify 301s the myshopify host to the primary domain and the
|
|
13
|
+
* buyer ends up in the same checkout either way. But the link is a thing a
|
|
14
|
+
* BUYER reads, and often the only thing an assistant shows them before they
|
|
15
|
+
* click. `rqxbft-fw.myshopify.com` is an internal handle nobody recognises,
|
|
16
|
+
* arriving in a message that claims to be from a shop with a name — which
|
|
17
|
+
* is exactly the shape of a link people are told not to click. Using the
|
|
18
|
+
* shop's own domain also drops a redirect from the path to payment.
|
|
19
|
+
*/
|
|
20
|
+
storefrontDomain?: string;
|
|
21
|
+
}, lines: CartLine[], opts?: {
|
|
8
22
|
discountCode?: string;
|
|
9
23
|
note?: string;
|
|
10
24
|
/**
|
package/dist/checkout.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAQF,eAAO,MAAM,aAAa,GACxB,QAAQ,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAQF,eAAO,MAAM,aAAa,GACxB,QAAQ,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG;IAC1C;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,EACD,OAAO,QAAQ,EAAE,EACjB,OAAM;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,KACL,MA2BF,CAAC"}
|
package/dist/checkout.js
CHANGED
|
@@ -24,6 +24,13 @@ export const cartPermalink = (config, lines, opts = {}) => {
|
|
|
24
24
|
qs.set(`attributes[${k}]`, v);
|
|
25
25
|
}
|
|
26
26
|
const query = qs.toString();
|
|
27
|
-
|
|
27
|
+
// A bare hostname either way: `primaryDomain` arrives from Shopify as a URL
|
|
28
|
+
// (`https://shop.example/`), and interpolating that whole would produce
|
|
29
|
+
// `https://https://shop.example//cart/…`.
|
|
30
|
+
const host = (config.storefrontDomain ?? '')
|
|
31
|
+
.trim()
|
|
32
|
+
.replace(/^https?:\/\//, '')
|
|
33
|
+
.replace(/\/+$/, '');
|
|
34
|
+
return `https://${host || config.shopDomain}/cart/${path}${query ? `?${query}` : ''}`;
|
|
28
35
|
};
|
|
29
36
|
//# sourceMappingURL=checkout.js.map
|
package/dist/checkout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AAeA,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AAeA,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAcC,EACD,KAAiB,EACjB,OAaI,EAAE,EACE,EAAE;IACV,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAClG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,IAAI,GAAG,MAAM;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;SACvE,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,IAAI,IAAI,CAAC,YAAY;QAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC;YAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,wEAAwE;IACxE,0CAA0C;IAC1C,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;SACzC,IAAI,EAAE;SACN,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvB,OAAO,WAAW,IAAI,IAAI,MAAM,CAAC,UAAU,SAAS,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACxF,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -13,6 +13,16 @@ export type CatalogItem = {
|
|
|
13
13
|
variantId?: string;
|
|
14
14
|
/** Shopify `productType`, passed through so the consumer can map it to its own taxonomy. */
|
|
15
15
|
productType?: string;
|
|
16
|
+
/**
|
|
17
|
+
* The product's page on the shop's OWN domain, when the shop has set one —
|
|
18
|
+
* `https://shop.example/products/handle` rather than the `<handle>.myshopify.com`
|
|
19
|
+
* one. Absent when no primary domain is configured.
|
|
20
|
+
*
|
|
21
|
+
* Also the honest source for a checkout host: pass `new URL(item.url).host` to
|
|
22
|
+
* `cartPermalink` as `storefrontDomain` and the Buy link lands on the same
|
|
23
|
+
* domain as the product page the buyer was looking at.
|
|
24
|
+
*/
|
|
25
|
+
url?: string;
|
|
16
26
|
};
|
|
17
27
|
export type ShopifyConfig = {
|
|
18
28
|
/** e.g. "your-store.myshopify.com" */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IACxB,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IACxB,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAcF,MAAM,MAAM,aAAa,GAAG;IAC1B,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAKF,MAAM,MAAM,cAAc,GAAG;IAC3B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAO1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAavC,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACpC,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAOF,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@curless/shopify-adapter",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Use a Shopify store as an agentbank catalog source, and record agent-settled sales back as paid Shopify orders. Maps Shopify Admin products
|
|
3
|
+
"version": "0.9.0",
|
|
4
|
+
"description": "Use a Shopify store as an agentbank catalog source, and record agent-settled sales back as paid Shopify orders. Maps Shopify Admin products → a generic CatalogItem your merchant backend prices from, writes an order back after an agent pays through agentbank, and records the reversal when that sale is refunded. Zero runtime dependencies (uses the platform fetch).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|