@tiledev/sdk-shopify 0.9.0 → 0.10.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.
Files changed (143) hide show
  1. package/README.md +650 -50
  2. package/dist/alertSettings.d.ts.map +1 -1
  3. package/dist/alertSettings.js +2 -0
  4. package/dist/alertSettings.js.map +1 -1
  5. package/dist/attribution.d.ts +21 -0
  6. package/dist/attribution.d.ts.map +1 -1
  7. package/dist/attribution.js +17 -0
  8. package/dist/attribution.js.map +1 -1
  9. package/dist/auth/pkce.d.ts +30 -0
  10. package/dist/auth/pkce.d.ts.map +1 -0
  11. package/dist/auth/pkce.js +128 -0
  12. package/dist/auth/pkce.js.map +1 -0
  13. package/dist/auth/session.d.ts +118 -0
  14. package/dist/auth/session.d.ts.map +1 -0
  15. package/dist/auth/session.js +896 -0
  16. package/dist/auth/session.js.map +1 -0
  17. package/dist/auth/storeCredit.d.ts +64 -0
  18. package/dist/auth/storeCredit.d.ts.map +1 -0
  19. package/dist/auth/storeCredit.js +274 -0
  20. package/dist/auth/storeCredit.js.map +1 -0
  21. package/dist/cart.d.ts +25 -1
  22. package/dist/cart.d.ts.map +1 -1
  23. package/dist/cart.js +95 -2
  24. package/dist/cart.js.map +1 -1
  25. package/dist/cartPolicy.js +4 -4
  26. package/dist/checkout.d.ts +123 -0
  27. package/dist/checkout.d.ts.map +1 -0
  28. package/dist/checkout.js +205 -0
  29. package/dist/checkout.js.map +1 -0
  30. package/dist/customer.d.ts.map +1 -1
  31. package/dist/customer.js +8 -0
  32. package/dist/customer.js.map +1 -1
  33. package/dist/index.d.ts +12 -4
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +74 -2
  36. package/dist/index.js.map +1 -1
  37. package/dist/messages.d.ts.map +1 -1
  38. package/dist/messages.js +2 -0
  39. package/dist/messages.js.map +1 -1
  40. package/dist/money.d.ts +16 -0
  41. package/dist/money.d.ts.map +1 -1
  42. package/dist/money.js +55 -0
  43. package/dist/money.js.map +1 -1
  44. package/dist/orders.d.ts +99 -0
  45. package/dist/orders.d.ts.map +1 -0
  46. package/dist/orders.js +439 -0
  47. package/dist/orders.js.map +1 -0
  48. package/dist/productPage.d.ts +100 -0
  49. package/dist/productPage.d.ts.map +1 -0
  50. package/dist/productPage.js +298 -0
  51. package/dist/productPage.js.map +1 -0
  52. package/dist/productStore.d.ts +1 -1
  53. package/dist/productStore.d.ts.map +1 -1
  54. package/dist/productStore.js +63 -5
  55. package/dist/productStore.js.map +1 -1
  56. package/dist/products.d.ts.map +1 -1
  57. package/dist/products.js +15 -3
  58. package/dist/products.js.map +1 -1
  59. package/dist/purchaseRules.d.ts +74 -0
  60. package/dist/purchaseRules.d.ts.map +1 -0
  61. package/dist/purchaseRules.js +73 -0
  62. package/dist/purchaseRules.js.map +1 -0
  63. package/dist/queries.d.ts +15 -13
  64. package/dist/queries.d.ts.map +1 -1
  65. package/dist/queries.js +43 -7
  66. package/dist/queries.js.map +1 -1
  67. package/dist/react/ShopifyProvider.d.ts +167 -25
  68. package/dist/react/ShopifyProvider.d.ts.map +1 -1
  69. package/dist/react/ShopifyProvider.js +352 -207
  70. package/dist/react/ShopifyProvider.js.map +1 -1
  71. package/dist/react/appForeground.d.ts +6 -0
  72. package/dist/react/appForeground.d.ts.map +1 -0
  73. package/dist/react/appForeground.js +19 -0
  74. package/dist/react/appForeground.js.map +1 -0
  75. package/dist/react/appForeground.native.d.ts +2 -0
  76. package/dist/react/appForeground.native.d.ts.map +1 -0
  77. package/dist/react/appForeground.native.js +23 -0
  78. package/dist/react/appForeground.native.js.map +1 -0
  79. package/dist/react/index.d.ts +7 -1
  80. package/dist/react/index.d.ts.map +1 -1
  81. package/dist/react/index.js +23 -1
  82. package/dist/react/index.js.map +1 -1
  83. package/dist/react/tileCreditClient.d.ts +4 -0
  84. package/dist/react/tileCreditClient.d.ts.map +1 -0
  85. package/dist/react/tileCreditClient.js +27 -0
  86. package/dist/react/tileCreditClient.js.map +1 -0
  87. package/dist/react/useAppDiscountCode.d.ts +19 -0
  88. package/dist/react/useAppDiscountCode.d.ts.map +1 -0
  89. package/dist/react/useAppDiscountCode.js +44 -0
  90. package/dist/react/useAppDiscountCode.js.map +1 -0
  91. package/dist/react/useCartStoreCredit.d.ts +25 -0
  92. package/dist/react/useCartStoreCredit.d.ts.map +1 -0
  93. package/dist/react/useCartStoreCredit.js +292 -0
  94. package/dist/react/useCartStoreCredit.js.map +1 -0
  95. package/dist/react/useOrders.d.ts +104 -0
  96. package/dist/react/useOrders.d.ts.map +1 -0
  97. package/dist/react/useOrders.js +287 -0
  98. package/dist/react/useOrders.js.map +1 -0
  99. package/dist/react/useProduct.d.ts.map +1 -1
  100. package/dist/react/useProduct.js +1 -9
  101. package/dist/react/useProduct.js.map +1 -1
  102. package/dist/react/useProductPage.d.ts +148 -0
  103. package/dist/react/useProductPage.d.ts.map +1 -0
  104. package/dist/react/useProductPage.js +178 -0
  105. package/dist/react/useProductPage.js.map +1 -0
  106. package/dist/react/useProductRecommendations.d.ts +27 -0
  107. package/dist/react/useProductRecommendations.d.ts.map +1 -0
  108. package/dist/react/useProductRecommendations.js +76 -0
  109. package/dist/react/useProductRecommendations.js.map +1 -0
  110. package/dist/react/useStoreCredit.d.ts +58 -0
  111. package/dist/react/useStoreCredit.d.ts.map +1 -0
  112. package/dist/react/useStoreCredit.js +209 -0
  113. package/dist/react/useStoreCredit.js.map +1 -0
  114. package/dist/react/useTileCredit.d.ts +4 -3
  115. package/dist/react/useTileCredit.d.ts.map +1 -1
  116. package/dist/react/useTileCredit.js +63 -55
  117. package/dist/react/useTileCredit.js.map +1 -1
  118. package/dist/shopify.d.ts.map +1 -1
  119. package/dist/shopify.js +2 -0
  120. package/dist/shopify.js.map +1 -1
  121. package/dist/storedList.d.ts +27 -0
  122. package/dist/storedList.d.ts.map +1 -0
  123. package/dist/storedList.js +152 -0
  124. package/dist/storedList.js.map +1 -0
  125. package/dist/tileCredit.d.ts +25 -10
  126. package/dist/tileCredit.d.ts.map +1 -1
  127. package/dist/tileCredit.js +97 -45
  128. package/dist/tileCredit.js.map +1 -1
  129. package/dist/types.d.ts +407 -34
  130. package/dist/types.d.ts.map +1 -1
  131. package/dist/types.js +1 -2
  132. package/dist/types.js.map +1 -1
  133. package/dist/variants.d.ts.map +1 -1
  134. package/dist/variants.js +4 -3
  135. package/dist/variants.js.map +1 -1
  136. package/dist/waitlist.d.ts +4 -0
  137. package/dist/waitlist.d.ts.map +1 -0
  138. package/dist/waitlist.js +213 -0
  139. package/dist/waitlist.js.map +1 -0
  140. package/dist/wishlist.d.ts.map +1 -1
  141. package/dist/wishlist.js +70 -47
  142. package/dist/wishlist.js.map +1 -1
  143. package/package.json +2 -2
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LATEST_ORDER_READ_AGAIN_SECONDS = exports.ORDERS_PAGE_SIZE = void 0;
4
+ exports.useShopper = useShopper;
5
+ exports.useOrders = useOrders;
6
+ exports.useLatestOrderSince = useLatestOrderSince;
7
+ exports.useOrder = useOrder;
8
+ /**
9
+ * The signed-in shopper's orders: `useOrders` for the list, `useOrder` for one order with Buy again.
10
+ * Either sign-in: Shopify's reads the Customer Account API, email and password the Storefront API
11
+ * (`orders.ts`). Signed out, both are empty, with no error, and send nothing.
12
+ *
13
+ * Fixed from production Amber (the audit's §3.13–3.14):
14
+ * - The list pages by cursor; production stopped at 25 and ignored `hasNextPage`.
15
+ * - A refresh keeps what is on screen, and a failed one keeps it and sets `error`; production
16
+ * replaced the list with a spinner on every visit.
17
+ * - A refresh asked for while a read is on its way joins it, so a screen that refreshes on focus
18
+ * doesn't read twice on mount (production did).
19
+ * - Buy again keeps to the stock the store has left (production ignored it).
20
+ *
21
+ * `useLatestOrderSince` (SDK move 6) is the order just placed, for an Order Confirmed page.
22
+ */
23
+ const react_1 = require("react");
24
+ const shopify_1 = require("../shopify");
25
+ const orders_1 = require("../orders");
26
+ const productPage_1 = require("../productPage");
27
+ const ShopifyProvider_1 = require("./ShopifyProvider");
28
+ /** Orders per page, unless `useOrders({ pageSize })` says otherwise. */
29
+ exports.ORDERS_PAGE_SIZE = 25;
30
+ function sourceFor(customer) {
31
+ return customer.sessionKind === 'shopify'
32
+ ? (0, orders_1.customerAccountOrders)(customer.request)
33
+ : (0, orders_1.storefrontOrders)(customer.getAccessToken);
34
+ }
35
+ const toError = (error) => (error instanceof Error ? error : new Error(String(error)));
36
+ /**
37
+ * Whose orders these are: a new value for each session, and for a different customer within one.
38
+ * Null when signed out. The profile arriving after the session began (app open, sign-in) is the same
39
+ * shopper, so it doesn't count; keying on the profile would read everything twice. Also keys
40
+ * `useStoreCreditHistory`.
41
+ */
42
+ function useShopper(customer) {
43
+ var _a, _b;
44
+ const seen = (0, react_1.useRef)({ kind: null, id: null, count: 0 });
45
+ const kind = customer.loggedIn ? customer.sessionKind : null;
46
+ const id = (_b = (_a = customer.customer) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null;
47
+ const last = seen.current;
48
+ if (kind !== last.kind) {
49
+ last.kind = kind;
50
+ last.id = id;
51
+ last.count += 1;
52
+ }
53
+ else if (id !== null && last.id !== null && id !== last.id) {
54
+ last.id = id;
55
+ last.count += 1;
56
+ }
57
+ else if (id !== null) {
58
+ last.id = id;
59
+ }
60
+ return kind ? `${kind}:${last.count}` : null;
61
+ }
62
+ const emptyList = (owner) => ({
63
+ owner, orders: [], endCursor: null, hasMore: false, answered: false, loadingMore: false, error: null,
64
+ });
65
+ /** The signed-in shopper's orders, newest first, a page at a time. */
66
+ function useOrders(options = {}) {
67
+ var _a;
68
+ const customer = (0, ShopifyProvider_1.useCustomer)();
69
+ const owner = useShopper(customer);
70
+ const customerRef = (0, react_1.useRef)(customer);
71
+ customerRef.current = customer;
72
+ const ownerRef = (0, react_1.useRef)(owner);
73
+ ownerRef.current = owner;
74
+ const pageSizeRef = (0, react_1.useRef)(exports.ORDERS_PAGE_SIZE);
75
+ pageSizeRef.current = Math.max(1, Math.floor((_a = options.pageSize) !== null && _a !== void 0 ? _a : exports.ORDERS_PAGE_SIZE)) || exports.ORDERS_PAGE_SIZE;
76
+ const [stored, setStored] = (0, react_1.useState)(() => emptyList(owner));
77
+ // Another shopper's orders never show, not even for the render before the effect below clears them.
78
+ const shown = stored.owner === owner ? stored : emptyList(owner);
79
+ const shownRef = (0, react_1.useRef)(shown);
80
+ shownRef.current = shown;
81
+ const firstPage = (0, react_1.useRef)(null);
82
+ const nextPage = (0, react_1.useRef)(null);
83
+ const update = (0, react_1.useCallback)((forOwner, change) => {
84
+ setStored((state) => (state.owner === forOwner ? { ...state, ...change(state) } : state));
85
+ }, []);
86
+ const readFirstPage = (0, react_1.useCallback)(() => {
87
+ const forOwner = ownerRef.current;
88
+ if (!forOwner)
89
+ return Promise.resolve();
90
+ const running = firstPage.current;
91
+ if ((running === null || running === void 0 ? void 0 : running.owner) === forOwner)
92
+ return running.done;
93
+ // The list's start is about to change, so a next page still on its way would land on the wrong list.
94
+ nextPage.current = null;
95
+ const source = sourceFor(customerRef.current);
96
+ const flight = { owner: forOwner, done: Promise.resolve() };
97
+ flight.done = (async () => {
98
+ try {
99
+ const page = await source.list(pageSizeRef.current, null);
100
+ update(forOwner, (state) => ({
101
+ ...(0, orders_1.withFreshFirstPage)(state, page), answered: true, loadingMore: false, error: null,
102
+ }));
103
+ }
104
+ catch (error) {
105
+ update(forOwner, () => ({ answered: true, loadingMore: false, error: toError(error) }));
106
+ }
107
+ finally {
108
+ if (firstPage.current === flight)
109
+ firstPage.current = null;
110
+ }
111
+ })();
112
+ firstPage.current = flight;
113
+ return flight.done;
114
+ }, [update]);
115
+ const loadMore = (0, react_1.useCallback)(() => {
116
+ var _a, _b;
117
+ const forOwner = ownerRef.current;
118
+ const now = shownRef.current;
119
+ if (!forOwner || !now.answered || !now.hasMore || !now.endCursor)
120
+ return;
121
+ if (((_a = firstPage.current) === null || _a === void 0 ? void 0 : _a.owner) === forOwner || ((_b = nextPage.current) === null || _b === void 0 ? void 0 : _b.owner) === forOwner)
122
+ return;
123
+ const flight = { owner: forOwner };
124
+ nextPage.current = flight;
125
+ const source = sourceFor(customerRef.current);
126
+ const after = now.endCursor;
127
+ update(forOwner, () => ({ loadingMore: true }));
128
+ void (async () => {
129
+ try {
130
+ const page = await source.list(pageSizeRef.current, after);
131
+ if (nextPage.current !== flight)
132
+ return;
133
+ update(forOwner, (state) => ({ ...(0, orders_1.withNextPage)(state, page), loadingMore: false, error: null }));
134
+ }
135
+ catch (error) {
136
+ if (nextPage.current !== flight)
137
+ return;
138
+ update(forOwner, () => ({ loadingMore: false, error: toError(error) }));
139
+ }
140
+ finally {
141
+ if (nextPage.current === flight)
142
+ nextPage.current = null;
143
+ }
144
+ })();
145
+ }, [update]);
146
+ // A new shopper (or none) starts from nothing; signed out, nothing is read.
147
+ (0, react_1.useEffect)(() => {
148
+ setStored((state) => (state.owner === owner ? state : emptyList(owner)));
149
+ if (owner)
150
+ void readFirstPage();
151
+ }, [owner, readFirstPage]);
152
+ const restoring = customer.restoring && owner === null;
153
+ const loading = restoring || (owner !== null && !shown.answered);
154
+ return (0, react_1.useMemo)(() => ({
155
+ orders: shown.orders,
156
+ loading,
157
+ loadingMore: shown.loadingMore,
158
+ error: shown.error,
159
+ hasMore: shown.hasMore,
160
+ loadMore,
161
+ refresh: readFirstPage,
162
+ }), [shown.orders, loading, shown.loadingMore, shown.error, shown.hasMore, loadMore, readFirstPage]);
163
+ }
164
+ // ── useLatestOrderSince ────────────────────────────────────────────────────
165
+ /**
166
+ * Shopify can take a few seconds to list a new order: until it does, the newest order is read again
167
+ * after these many seconds.
168
+ */
169
+ exports.LATEST_ORDER_READ_AGAIN_SECONDS = [3, 8];
170
+ /**
171
+ * The order the shopper just placed, for an Order Confirmed page: the newest order, but only once it
172
+ * was placed at or after `since` (when checkout opened, on the phone's clock). Until then the newest
173
+ * is the order before, which production showed. While it isn't listed yet, the newest is read again
174
+ * after 3 and 8 seconds. Signed out, nothing is read and `order` is null (a guest's order isn't known
175
+ * here). `since` left out takes the newest order, whatever its date.
176
+ */
177
+ function useLatestOrderSince(since, options = {}) {
178
+ var _a, _b;
179
+ const customer = (0, ShopifyProvider_1.useCustomer)();
180
+ const { orders, refresh } = useOrders({ pageSize: 1 });
181
+ const newest = orders[0];
182
+ const isTheNewOrder = !!newest && (0, orders_1.placedSince)(newest, since, (_a = options.clockLeewayMs) !== null && _a !== void 0 ? _a : orders_1.ORDER_CLOCK_LEEWAY_MS);
183
+ const readAgainAfterSeconds = (_b = options.readAgainAfterSeconds) !== null && _b !== void 0 ? _b : exports.LATEST_ORDER_READ_AGAIN_SECONDS;
184
+ const readAgainRef = (0, react_1.useRef)(readAgainAfterSeconds);
185
+ readAgainRef.current = readAgainAfterSeconds;
186
+ // By value, so a list written inline doesn't start the timers again on every render.
187
+ const readAgainKey = readAgainAfterSeconds.join(',');
188
+ (0, react_1.useEffect)(() => {
189
+ if (!customer.loggedIn || isTheNewOrder)
190
+ return;
191
+ const timers = readAgainRef.current.map((seconds) => setTimeout(() => void refresh(), seconds * 1000));
192
+ return () => timers.forEach(clearTimeout);
193
+ }, [customer.loggedIn, isTheNewOrder, refresh, readAgainKey]);
194
+ return { order: customer.loggedIn && isTheNewOrder ? newest : null };
195
+ }
196
+ const emptyOrder = (owner) => ({ owner, order: null, answered: false, notFound: false, error: null });
197
+ /** One of the signed-in shopper's orders, by the `id` `useOrders` gave. Nothing is read without an id. */
198
+ function useOrder(id) {
199
+ const customer = (0, ShopifyProvider_1.useCustomer)();
200
+ const cart = (0, ShopifyProvider_1.useCart)();
201
+ const shopper = useShopper(customer);
202
+ const owner = shopper && id ? `${shopper}|${id}` : null;
203
+ const customerRef = (0, react_1.useRef)(customer);
204
+ customerRef.current = customer;
205
+ const cartRef = (0, react_1.useRef)(cart);
206
+ cartRef.current = cart;
207
+ const ownerRef = (0, react_1.useRef)(owner);
208
+ ownerRef.current = owner;
209
+ const idRef = (0, react_1.useRef)(id);
210
+ idRef.current = id;
211
+ const [stored, setStored] = (0, react_1.useState)(() => emptyOrder(owner));
212
+ const shown = stored.owner === owner ? stored : emptyOrder(owner);
213
+ const shownRef = (0, react_1.useRef)(shown);
214
+ shownRef.current = shown;
215
+ const reading = (0, react_1.useRef)(null);
216
+ const read = (0, react_1.useCallback)(() => {
217
+ const forOwner = ownerRef.current;
218
+ const orderId = idRef.current;
219
+ if (!forOwner || !orderId)
220
+ return Promise.resolve();
221
+ const running = reading.current;
222
+ if ((running === null || running === void 0 ? void 0 : running.owner) === forOwner)
223
+ return running.done;
224
+ const source = sourceFor(customerRef.current);
225
+ const flight = { owner: forOwner, done: Promise.resolve() };
226
+ const update = (change) => setStored((state) => (state.owner === forOwner ? { ...state, ...change } : state));
227
+ flight.done = (async () => {
228
+ try {
229
+ const order = await source.get(orderId);
230
+ update({ order, answered: true, notFound: order === null, error: null });
231
+ }
232
+ catch (error) {
233
+ update({ answered: true, error: toError(error) });
234
+ }
235
+ finally {
236
+ if (reading.current === flight)
237
+ reading.current = null;
238
+ }
239
+ })();
240
+ reading.current = flight;
241
+ return flight.done;
242
+ }, []);
243
+ (0, react_1.useEffect)(() => {
244
+ setStored((state) => (state.owner === owner ? state : emptyOrder(owner)));
245
+ if (owner)
246
+ void read();
247
+ }, [owner, read]);
248
+ const buyAgain = (0, react_1.useCallback)(async (options = {}) => {
249
+ var _a, _b;
250
+ const lines = (_b = (_a = shownRef.current.order) === null || _a === void 0 ? void 0 : _a.lineItems) !== null && _b !== void 0 ? _b : [];
251
+ if (lines.length === 0)
252
+ return { added: 0, skipped: 0 };
253
+ try {
254
+ const variantIds = [...new Set(lines.map((line) => line.variantId).filter((v) => !!v))];
255
+ const variants = variantIds.length > 0 ? await shopify_1.shopify.variants.byIds(variantIds) : [];
256
+ // The cart as it is now, after the stock read: the ref follows every render.
257
+ const { cart: before, addLines } = cartRef.current;
258
+ const plan = (0, orders_1.planBuyAgain)(lines, variants, before, { skipVariant: options.skipVariant });
259
+ if (plan.inputs.length === 0)
260
+ return { added: 0, skipped: lines.length };
261
+ // Quiet: the caller shows one summary for the whole order, not a message per refused line.
262
+ const after = await addLines(plan.inputs, { quiet: true });
263
+ if (!after)
264
+ return { added: 0, skipped: lines.length };
265
+ // `addLines` keeps the lines Shopify accepted and drops the rest, so a line landed if its variant
266
+ // grew. A line the guard cut (Cart Hold taking only the units still free) grew too: it counts as
267
+ // added, and the cut isn't reported.
268
+ const added = plan.inputs.filter((input) => (0, productPage_1.quantityInCart)(after, input.merchandiseId) > (0, productPage_1.quantityInCart)(before, input.merchandiseId)).length;
269
+ return { added, skipped: lines.length - added };
270
+ }
271
+ catch (error) {
272
+ console.warn('[sdk-shopify] buy again failed', error);
273
+ return { added: 0, skipped: lines.length };
274
+ }
275
+ }, []);
276
+ const restoring = customer.restoring && shopper === null;
277
+ const loading = restoring || (owner !== null && !shown.answered);
278
+ return (0, react_1.useMemo)(() => ({
279
+ order: shown.order,
280
+ loading,
281
+ error: shown.error,
282
+ notFound: shown.notFound,
283
+ refresh: read,
284
+ buyAgain,
285
+ }), [shown.order, loading, shown.error, shown.notFound, read, buyAgain]);
286
+ }
287
+ //# sourceMappingURL=useOrders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOrders.js","sourceRoot":"","sources":["../../src/react/useOrders.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useProduct.d.ts","sourceRoot":"","sources":["../../src/react/useProduct.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAIpF,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7E;AAED,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,0FAA0F;IAC1F,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,mFAAmF;IACnF,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,KAAK,EAAE,OAAO,CAAC;IACf,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,iEAAiE;IACjE,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA0BD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAgF/G"}
1
+ {"version":3,"file":"useProduct.d.ts","sourceRoot":"","sources":["../../src/react/useProduct.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAkD,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInG,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7E;AAED,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,0FAA0F;IAC1F,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,mFAAmF;IACnF,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,KAAK,EAAE,OAAO,CAAC;IACf,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,iEAAiE;IACjE,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA0BD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAyE/G"}
@@ -82,7 +82,6 @@ function useProduct(handle, options = {}) {
82
82
  shopify_1.shopify.products
83
83
  .byHandle(handle, { fresh, imageTransform: transformRef.current })
84
84
  .then((product) => {
85
- var _a, _b;
86
85
  if (requestId.current !== id)
87
86
  return;
88
87
  if (!product) {
@@ -91,14 +90,7 @@ function useProduct(handle, options = {}) {
91
90
  }
92
91
  setState({
93
92
  product,
94
- preview: {
95
- id: product.id,
96
- handle: product.handle,
97
- title: product.title,
98
- featuredImage: (_a = product.featuredImage) !== null && _a !== void 0 ? _a : null,
99
- priceRange: product.priceRange,
100
- compareAtPriceRange: (_b = product.compareAtPriceRange) !== null && _b !== void 0 ? _b : null,
101
- },
93
+ preview: (0, productStore_1.toProductBase)(product),
102
94
  level: 'full',
103
95
  loading: false,
104
96
  refreshing: false,
@@ -1 +1 @@
1
- {"version":3,"file":"useProduct.js","sourceRoot":"","sources":["../../src/react/useProduct.ts"],"names":[],"mappings":";;AA8EA,gCAgFC;AA9JD;;;;;;;;;;;;;GAaG;AACH,iCAAiE;AACjE,sCAAyC;AACzC,kDAAoF;AACpF,wCAAqC;AACrC,uDAA+C;AAC/C,qDAAuD;AAmCvD,MAAM,KAAK,GAAoB;IAC7B,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF,SAAS,SAAS,CAAC,KAA2B,EAAE,OAAgB;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK,CAAC,IAAI;QACnB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC7B,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,OAAO;QACnB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU,CAAC,MAAiC,EAAE,UAA6B,EAAE;IAC3F,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAU,GAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,KAAK,IAAI,IAAA,qBAAY,GAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,YAAY,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACpD,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAE9C,2EAA2E;IAC3E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAkB,GAAG,EAAE,CACvD,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,IAAA,0BAAW,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CACvE,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAEhC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3B,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC;YACvB,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;QAChC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,0BAAW,EAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,KAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,oCAAmB,EAAE,CAAC;YAC/E,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE;YACnB,IAAI,MAAM;gBAAE,OAAO,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3C,mEAAmE;YACnE,IAAI,KAAK,IAAI,OAAO,CAAC,OAAO;gBAAE,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACpF,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,iBAAO,CAAC,QAAQ;aACb,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;aACjE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;;YAChB,IAAI,SAAS,CAAC,OAAO,KAAK,EAAE;gBAAE,OAAO;YACrC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,QAAQ,CAAC;gBACP,OAAO;gBACP,OAAO,EAAE;oBACP,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,aAAa,EAAE,MAAA,OAAO,CAAC,aAAa,mCAAI,IAAI;oBAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,mBAAmB,EAAE,MAAA,OAAO,CAAC,mBAAmB,mCAAI,IAAI;iBACzD;gBACD,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;;YAChB,MAAA,UAAU,CAAC,OAAO,2DAAG,MAAM,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,IAAI,SAAS,CAAC,OAAO,KAAK,EAAE;gBAAE,OAAO;YACrC,oEAAoE;YACpE,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QACL,oFAAoF;QACpF,uDAAuD;IACzD,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAEhD,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC/B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"useProduct.js","sourceRoot":"","sources":["../../src/react/useProduct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ import { type DescriptionBlock, type OptionSelection, type OptionState, type ProductLike, type VariantPrice } from '../productPage';
2
+ import type { AttributionSource } from '../attribution';
3
+ import type { CartLineAttribute, CartWriteResult, ImageTransform, Product, ProductMedia, ProductOption, ProductVariant } from '../types';
4
+ import { type UseProductResult } from './useProduct';
5
+ import { type ProductRecommendations, type UseProductRecommendationsOptions } from './useProductRecommendations';
6
+ export interface UseVariantSelectionOptions {
7
+ /** Option names in display order (default Color, Colour, Size, then the rest). */
8
+ optionOrder?: readonly string[];
9
+ /** Keep an option as a selector (default: all but Shopify's "Default Title" placeholder). */
10
+ includeOption?: (option: ProductOption) => boolean;
11
+ /** The selection to start on (default: the first purchasable variant, else the first). */
12
+ initialSelection?: (variants: ProductVariant[]) => OptionSelection;
13
+ /** Start on this variant (e.g. a link to one), when it exists. Wins over `initialSelection`. */
14
+ initialVariantId?: string | null;
15
+ /** Can't be bought now (default: missing, not for sale, or 0 left). */
16
+ isUnavailable?: (variant: ProductVariant | null) => boolean;
17
+ /** Units across the product at or below which `lowStock` is true; null turns it off. Default 10. */
18
+ lowStockThreshold?: number | null;
19
+ /** Between values in `label` (default " / "). */
20
+ separator?: string;
21
+ /** The selection starts over when this changes (default: the product's id). */
22
+ resetKey?: string | null;
23
+ }
24
+ export interface VariantSelection {
25
+ /** The options shown as selectors, in display order. */
26
+ options: ProductOption[];
27
+ /** Each option with every value's state: selected, available, units left, the variant it picks. */
28
+ optionStates: OptionState[];
29
+ selection: OptionSelection;
30
+ setOption: (name: string, value: string) => void;
31
+ selectVariant: (variantId: string) => void;
32
+ /** Back to the initial selection. */
33
+ reset: () => void;
34
+ /** The variant the selection names; null while variants are unknown or for a combination not sold. */
35
+ variant: ProductVariant | null;
36
+ /** "Ivory / L". */
37
+ label: string;
38
+ /** Variants are known (always for a full product; for a preview since sdk-shopify 0.9). */
39
+ known: boolean;
40
+ /** The variant's price; without one, the product's lowest. */
41
+ price: VariantPrice;
42
+ /** The chosen variant can't be bought now (only meaningful when `known`). */
43
+ unavailable: boolean;
44
+ lowStock: boolean;
45
+ }
46
+ export declare function useVariantSelection(product: ProductLike | null | undefined, options?: UseVariantSelectionOptions): VariantSelection;
47
+ /** Why an add didn't land: the SDK's reasons, or `no-variant` (nothing chosen / not sold). */
48
+ export type AddToCartReason = NonNullable<CartWriteResult['reason']> | 'no-variant';
49
+ export interface AddToCartResult extends Omit<CartWriteResult, 'reason'> {
50
+ reason?: AddToCartReason;
51
+ /** Shopify refused the write; already reported as `cart:outOfStock`. */
52
+ error?: unknown;
53
+ }
54
+ export interface AddToCartInput {
55
+ quantity?: number;
56
+ attributes?: CartLineAttribute[];
57
+ sellingPlanId?: string | null;
58
+ /**
59
+ * Where the units came from (a live show, a replay), for the provider's `attribution`
60
+ * (`_apptile_attribution`). Passed on to `addLine`, never to Shopify. Left out: the app's own
61
+ * (`{ type: 'app' }`). Given to `useProductPage` / `useAddToCart`, it is every add's (SDK move 6).
62
+ */
63
+ source?: AttributionSource;
64
+ }
65
+ export interface UseAddToCartOptions extends AddToCartInput {
66
+ /** The most of the variant the cart may hold (default: its stock, `stockCeiling`). null: no ceiling. */
67
+ maxQuantity?: (variant: ProductVariant) => number | null;
68
+ onAdded?: (result: AddToCartResult) => void;
69
+ /** Every refusal, including ones the SDK already raised an alert for (`stock`, `limit`, `outOfStock`). */
70
+ onRefused?: (result: AddToCartResult) => void;
71
+ }
72
+ export interface AddToCart {
73
+ /** Add the variant (overrides apply to this add only). Never throws. */
74
+ add: (input?: AddToCartInput) => Promise<AddToCartResult>;
75
+ adding: boolean;
76
+ /** Units of the variant already in the cart, across lines. */
77
+ inCart: number;
78
+ /** One more fits under the ceiling. */
79
+ canAddMore: boolean;
80
+ }
81
+ export declare function useAddToCart(variant: ProductVariant | null | undefined, options?: UseAddToCartOptions): AddToCart;
82
+ export interface UseProductPageOptions extends UseVariantSelectionOptions, UseAddToCartOptions {
83
+ /** For every image of the product read (e.g. `{ maxWidth: 1080 }` for a full-width gallery). */
84
+ imageTransform?: ImageTransform;
85
+ onError?: (error: unknown, context: {
86
+ at: string;
87
+ handle: string;
88
+ }) => void;
89
+ /** Open the gallery on the first video. */
90
+ playVideo?: boolean;
91
+ /** The product can't be bought at all (e.g. live in an auction): `status: 'blocked'`. */
92
+ isBlocked?: (product: ProductLike) => boolean;
93
+ /**
94
+ * Parse the description: true (default), false to wait (e.g. until after the screen's
95
+ * transition), or your own parser.
96
+ */
97
+ parseDescription?: boolean | ((html: string) => DescriptionBlock[]);
98
+ /** Called once per product, when the full product is in hand (e.g. a productView event). */
99
+ onView?: (product: Product) => void;
100
+ /** For the share link's fallback (default: the configured store). */
101
+ storeDomain?: string;
102
+ /**
103
+ * "You may also like": Shopify's related products, read when this is true (or options). Below the
104
+ * fold, so a page usually passes it once settled. Leaves out the product itself and anything
105
+ * `isBlocked` says can't be bought, unless `exclude` is given. Unset: nothing is read.
106
+ */
107
+ recommendations?: boolean | UseProductRecommendationsOptions;
108
+ }
109
+ /**
110
+ * - `loading`: nothing known yet. `available` / `unavailable`: the chosen variant can or can't be
111
+ * bought (unavailable is the waitlist case). `blocked`: `isBlocked` said no. `unknown`: a preview
112
+ * from before sdk-shopify 0.9, without variants, until the full product lands.
113
+ */
114
+ export type ProductPageStatus = 'loading' | 'unknown' | 'available' | 'unavailable' | 'blocked';
115
+ export interface ProductPage extends Omit<UseProductResult, 'product' | 'preview'> {
116
+ /** The full product, once read. */
117
+ product: Product | null;
118
+ /** The store's preview (card keys, variants, description): render it while `product` is null. */
119
+ preview: UseProductResult['preview'];
120
+ /** `product ?? preview`: what to render now. */
121
+ shown: ProductLike | null;
122
+ status: ProductPageStatus;
123
+ selection: VariantSelection;
124
+ cart: AddToCart;
125
+ media: {
126
+ /** The gallery (from the full product; empty until then). */
127
+ items: ProductMedia[];
128
+ /** The slide to open on. */
129
+ initialIndex: number;
130
+ /** The first still image, for a thumbnail (the preview's featured image until the full product). */
131
+ firstImageUrl: string | null;
132
+ /** The image the device already has (the card's): draw it first. */
133
+ previewImageUrl: string | null;
134
+ };
135
+ description: {
136
+ html: string;
137
+ blocks: DescriptionBlock[];
138
+ };
139
+ favorite: {
140
+ isFavorite: boolean;
141
+ toggle: () => Promise<boolean>;
142
+ };
143
+ shareUrl: string | null;
144
+ /** "You may also like" (empty unless `recommendations` asked for them). */
145
+ recommendations: ProductRecommendations;
146
+ }
147
+ export declare function useProductPage(handle: string | null | undefined, options?: UseProductPageOptions): ProductPage;
148
+ //# sourceMappingURL=useProductPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProductPage.d.ts","sourceRoot":"","sources":["../../src/react/useProductPage.ts"],"names":[],"mappings":"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"}