@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.
- package/README.md +650 -50
- package/dist/alertSettings.d.ts.map +1 -1
- package/dist/alertSettings.js +2 -0
- package/dist/alertSettings.js.map +1 -1
- package/dist/attribution.d.ts +21 -0
- package/dist/attribution.d.ts.map +1 -1
- package/dist/attribution.js +17 -0
- package/dist/attribution.js.map +1 -1
- package/dist/auth/pkce.d.ts +30 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +128 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/session.d.ts +118 -0
- package/dist/auth/session.d.ts.map +1 -0
- package/dist/auth/session.js +896 -0
- package/dist/auth/session.js.map +1 -0
- package/dist/auth/storeCredit.d.ts +64 -0
- package/dist/auth/storeCredit.d.ts.map +1 -0
- package/dist/auth/storeCredit.js +274 -0
- package/dist/auth/storeCredit.js.map +1 -0
- package/dist/cart.d.ts +25 -1
- package/dist/cart.d.ts.map +1 -1
- package/dist/cart.js +95 -2
- package/dist/cart.js.map +1 -1
- package/dist/cartPolicy.js +4 -4
- package/dist/checkout.d.ts +123 -0
- package/dist/checkout.d.ts.map +1 -0
- package/dist/checkout.js +205 -0
- package/dist/checkout.js.map +1 -0
- package/dist/customer.d.ts.map +1 -1
- package/dist/customer.js +8 -0
- package/dist/customer.js.map +1 -1
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +74 -2
- package/dist/index.js.map +1 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +2 -0
- package/dist/messages.js.map +1 -1
- package/dist/money.d.ts +16 -0
- package/dist/money.d.ts.map +1 -1
- package/dist/money.js +55 -0
- package/dist/money.js.map +1 -1
- package/dist/orders.d.ts +99 -0
- package/dist/orders.d.ts.map +1 -0
- package/dist/orders.js +439 -0
- package/dist/orders.js.map +1 -0
- package/dist/productPage.d.ts +100 -0
- package/dist/productPage.d.ts.map +1 -0
- package/dist/productPage.js +298 -0
- package/dist/productPage.js.map +1 -0
- package/dist/productStore.d.ts +1 -1
- package/dist/productStore.d.ts.map +1 -1
- package/dist/productStore.js +63 -5
- package/dist/productStore.js.map +1 -1
- package/dist/products.d.ts.map +1 -1
- package/dist/products.js +15 -3
- package/dist/products.js.map +1 -1
- package/dist/purchaseRules.d.ts +74 -0
- package/dist/purchaseRules.d.ts.map +1 -0
- package/dist/purchaseRules.js +73 -0
- package/dist/purchaseRules.js.map +1 -0
- package/dist/queries.d.ts +15 -13
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +43 -7
- package/dist/queries.js.map +1 -1
- package/dist/react/ShopifyProvider.d.ts +167 -25
- package/dist/react/ShopifyProvider.d.ts.map +1 -1
- package/dist/react/ShopifyProvider.js +352 -207
- package/dist/react/ShopifyProvider.js.map +1 -1
- package/dist/react/appForeground.d.ts +6 -0
- package/dist/react/appForeground.d.ts.map +1 -0
- package/dist/react/appForeground.js +19 -0
- package/dist/react/appForeground.js.map +1 -0
- package/dist/react/appForeground.native.d.ts +2 -0
- package/dist/react/appForeground.native.d.ts.map +1 -0
- package/dist/react/appForeground.native.js +23 -0
- package/dist/react/appForeground.native.js.map +1 -0
- package/dist/react/index.d.ts +7 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +23 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/tileCreditClient.d.ts +4 -0
- package/dist/react/tileCreditClient.d.ts.map +1 -0
- package/dist/react/tileCreditClient.js +27 -0
- package/dist/react/tileCreditClient.js.map +1 -0
- package/dist/react/useAppDiscountCode.d.ts +19 -0
- package/dist/react/useAppDiscountCode.d.ts.map +1 -0
- package/dist/react/useAppDiscountCode.js +44 -0
- package/dist/react/useAppDiscountCode.js.map +1 -0
- package/dist/react/useCartStoreCredit.d.ts +25 -0
- package/dist/react/useCartStoreCredit.d.ts.map +1 -0
- package/dist/react/useCartStoreCredit.js +292 -0
- package/dist/react/useCartStoreCredit.js.map +1 -0
- package/dist/react/useOrders.d.ts +104 -0
- package/dist/react/useOrders.d.ts.map +1 -0
- package/dist/react/useOrders.js +287 -0
- package/dist/react/useOrders.js.map +1 -0
- package/dist/react/useProduct.d.ts.map +1 -1
- package/dist/react/useProduct.js +1 -9
- package/dist/react/useProduct.js.map +1 -1
- package/dist/react/useProductPage.d.ts +148 -0
- package/dist/react/useProductPage.d.ts.map +1 -0
- package/dist/react/useProductPage.js +178 -0
- package/dist/react/useProductPage.js.map +1 -0
- package/dist/react/useProductRecommendations.d.ts +27 -0
- package/dist/react/useProductRecommendations.d.ts.map +1 -0
- package/dist/react/useProductRecommendations.js +76 -0
- package/dist/react/useProductRecommendations.js.map +1 -0
- package/dist/react/useStoreCredit.d.ts +58 -0
- package/dist/react/useStoreCredit.d.ts.map +1 -0
- package/dist/react/useStoreCredit.js +209 -0
- package/dist/react/useStoreCredit.js.map +1 -0
- package/dist/react/useTileCredit.d.ts +4 -3
- package/dist/react/useTileCredit.d.ts.map +1 -1
- package/dist/react/useTileCredit.js +63 -55
- package/dist/react/useTileCredit.js.map +1 -1
- package/dist/shopify.d.ts.map +1 -1
- package/dist/shopify.js +2 -0
- package/dist/shopify.js.map +1 -1
- package/dist/storedList.d.ts +27 -0
- package/dist/storedList.d.ts.map +1 -0
- package/dist/storedList.js +152 -0
- package/dist/storedList.js.map +1 -0
- package/dist/tileCredit.d.ts +25 -10
- package/dist/tileCredit.d.ts.map +1 -1
- package/dist/tileCredit.js +97 -45
- package/dist/tileCredit.js.map +1 -1
- package/dist/types.d.ts +407 -34
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/dist/variants.d.ts.map +1 -1
- package/dist/variants.js +4 -3
- package/dist/variants.js.map +1 -1
- package/dist/waitlist.d.ts +4 -0
- package/dist/waitlist.d.ts.map +1 -0
- package/dist/waitlist.js +213 -0
- package/dist/waitlist.js.map +1 -0
- package/dist/wishlist.d.ts.map +1 -1
- package/dist/wishlist.js +70 -47
- package/dist/wishlist.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,95 +2,103 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useTileCredit = useTileCredit;
|
|
4
4
|
/**
|
|
5
|
-
* useTileCredit — customer wallet + redeem hook.
|
|
5
|
+
* useTileCredit — customer wallet + redeem hook, for a caller that holds the token itself.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
7
|
+
* @deprecated For the cart use `useCartStoreCredit()`, and for a balance `useStoreCredit()`: both read
|
|
8
|
+
* the provider's session (the token fresh for every request, renewed once on a 401) and need no token
|
|
9
|
+
* passed in. Kept for existing callers.
|
|
10
|
+
*
|
|
11
|
+
* Fixed 2026-10-05:
|
|
12
|
+
* - **Another shopper's wallet never shows.** What was read is held with the token it was read for, and
|
|
13
|
+
* a new token reads again; it used to keep shopper A's wallet for shopper B (re-reading only when
|
|
14
|
+
* the token went from none to some).
|
|
15
|
+
* - `redeemAndApply` adds the card through the provider's cart queue (`useCart().addGiftCardCodes`),
|
|
16
|
+
* keeping the cart's other gift cards and its buyer; it used to replace both. `removeAppliedGiftCards`
|
|
17
|
+
* goes through the queue too.
|
|
12
18
|
*/
|
|
13
19
|
const react_1 = require("react");
|
|
14
20
|
const shopify_1 = require("../shopify");
|
|
15
21
|
const tileCredit_1 = require("../tileCredit");
|
|
22
|
+
const types_1 = require("../types");
|
|
16
23
|
const ShopifyProvider_1 = require("./ShopifyProvider");
|
|
17
24
|
function useTileCredit(opts) {
|
|
18
25
|
const { baseUrl = tileCredit_1.DEFAULT_TILE_CREDIT_BASE_URL, customerAccessToken, shopDomain, autoLoad = true } = opts;
|
|
19
26
|
const cartState = (0, ShopifyProvider_1.useCart)();
|
|
20
|
-
const
|
|
21
|
-
const [
|
|
22
|
-
const [
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
setConfigured(true);
|
|
34
|
-
}, [baseUrl, customerAccessToken, shopDomain]);
|
|
27
|
+
const token = customerAccessToken || null;
|
|
28
|
+
const [read, setRead] = (0, react_1.useState)({ token: null, wallet: null, config: null, error: null });
|
|
29
|
+
const [loadingFor, setLoadingFor] = (0, react_1.useState)(null);
|
|
30
|
+
const current = read.token === token ? read : { token, wallet: null, config: null, error: null };
|
|
31
|
+
const tokenRef = (0, react_1.useRef)(token);
|
|
32
|
+
tokenRef.current = token;
|
|
33
|
+
// The client for the current token; also configured as the shared one, as before.
|
|
34
|
+
const client = (0, react_1.useMemo)(() => {
|
|
35
|
+
if (!token)
|
|
36
|
+
return null;
|
|
37
|
+
shopify_1.shopify.tileCredit.configure({ baseUrl, customerAccessToken: token, shopDomain });
|
|
38
|
+
return new tileCredit_1.TileCreditClient({ baseUrl, customerAccessToken: token, shopDomain });
|
|
39
|
+
}, [baseUrl, token, shopDomain]);
|
|
35
40
|
const refresh = (0, react_1.useCallback)(async () => {
|
|
36
|
-
if (!
|
|
37
|
-
return;
|
|
38
|
-
const client = shopify_1.shopify.tileCredit.client();
|
|
39
|
-
if (!client)
|
|
41
|
+
if (!client || !token)
|
|
40
42
|
return;
|
|
41
|
-
|
|
42
|
-
setError(null);
|
|
43
|
+
setLoadingFor(token);
|
|
43
44
|
try {
|
|
44
45
|
const [w, c] = await Promise.all([client.getWallet(), client.getConfig()]);
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
if (tokenRef.current === token)
|
|
47
|
+
setRead({ token, wallet: w, config: c, error: null });
|
|
47
48
|
}
|
|
48
49
|
catch (e) {
|
|
49
|
-
|
|
50
|
+
if (tokenRef.current === token) {
|
|
51
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
52
|
+
setRead((before) => (before.token === token ? { ...before, error } : { token, wallet: null, config: null, error }));
|
|
53
|
+
}
|
|
50
54
|
}
|
|
51
55
|
finally {
|
|
52
|
-
|
|
56
|
+
setLoadingFor((now) => (now === token ? null : now));
|
|
53
57
|
}
|
|
54
|
-
}, [
|
|
58
|
+
}, [client, token]);
|
|
55
59
|
(0, react_1.useEffect)(() => {
|
|
56
|
-
if (autoLoad &&
|
|
60
|
+
if (autoLoad && client)
|
|
57
61
|
void refresh();
|
|
58
|
-
}, [autoLoad,
|
|
62
|
+
}, [autoLoad, client, refresh]);
|
|
59
63
|
const redeemAndApply = (0, react_1.useCallback)(async (amountCents, o = {}) => {
|
|
60
|
-
|
|
61
|
-
if (!
|
|
64
|
+
var _a;
|
|
65
|
+
if (!cartState.cart)
|
|
62
66
|
throw new Error('useTileCredit.redeemAndApply: no cart loaded');
|
|
63
|
-
|
|
64
|
-
|
|
67
|
+
if (!client)
|
|
68
|
+
throw new types_1.TileCreditError('unauthorized', 'No signed-in customer');
|
|
69
|
+
const redeemed = await client.redeem({
|
|
65
70
|
amountCents,
|
|
66
71
|
idempotencyKey: o.idempotencyKey,
|
|
67
|
-
reason: o.reason,
|
|
68
|
-
countryFallback: o.countryFallback,
|
|
72
|
+
reason: (_a = o.reason) !== null && _a !== void 0 ? _a : 'Wallet redemption',
|
|
69
73
|
});
|
|
70
|
-
|
|
74
|
+
let cart;
|
|
75
|
+
try {
|
|
76
|
+
cart = await cartState.addGiftCardCodes([redeemed.code]);
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
throw new types_1.TileCreditError('cart_refused', e instanceof Error ? e.message : String(e));
|
|
80
|
+
}
|
|
81
|
+
if (!cart)
|
|
82
|
+
throw new types_1.TileCreditError('cart_refused', 'There is no cart to put the credit on');
|
|
71
83
|
void refresh();
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
await cartState.refresh();
|
|
75
|
-
return result;
|
|
76
|
-
}, [cartState, refresh]);
|
|
84
|
+
return { redeemed, cart };
|
|
85
|
+
}, [cartState, client, refresh]);
|
|
77
86
|
const removeAppliedGiftCards = (0, react_1.useCallback)(async (ids) => {
|
|
78
|
-
const
|
|
79
|
-
if (!
|
|
87
|
+
const next = await cartState.removeGiftCards(ids);
|
|
88
|
+
if (!next)
|
|
80
89
|
throw new Error('useTileCredit.removeAppliedGiftCards: no cart loaded');
|
|
81
|
-
const next = await shopify_1.shopify.cart.removeGiftCardCodes(currentCart.id, ids);
|
|
82
|
-
await cartState.refresh();
|
|
83
90
|
return next;
|
|
84
91
|
}, [cartState]);
|
|
92
|
+
const loading = loadingFor !== null && loadingFor === token;
|
|
85
93
|
return (0, react_1.useMemo)(() => ({
|
|
86
|
-
ready:
|
|
87
|
-
wallet,
|
|
88
|
-
config,
|
|
94
|
+
ready: !!token && !loading && (current.wallet !== null || current.error !== null),
|
|
95
|
+
wallet: current.wallet,
|
|
96
|
+
config: current.config,
|
|
89
97
|
loading,
|
|
90
|
-
error,
|
|
98
|
+
error: current.error,
|
|
91
99
|
refresh,
|
|
92
100
|
redeemAndApply,
|
|
93
101
|
removeAppliedGiftCards,
|
|
94
|
-
}), [
|
|
102
|
+
}), [token, loading, current.wallet, current.config, current.error, refresh, redeemAndApply, removeAppliedGiftCards]);
|
|
95
103
|
}
|
|
96
104
|
//# sourceMappingURL=useTileCredit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTileCredit.js","sourceRoot":"","sources":["../../src/react/useTileCredit.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useTileCredit.js","sourceRoot":"","sources":["../../src/react/useTileCredit.ts"],"names":[],"mappings":";;AAkEA,sCAmFC;AArJD;;;;;;;;;;;;;;GAcG;AACH,iCAA0E;AAC1E,wCAAqC;AACrC,8CAA+E;AAC/E,oCAA2C;AAC3C,uDAA4C;AA+C5C,SAAgB,aAAa,CAAC,IAA0B;IACtD,MAAM,EAAE,OAAO,GAAG,yCAA4B,EAAE,mBAAmB,EAAE,UAAU,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC1G,MAAM,SAAS,GAAG,IAAA,yBAAO,GAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,mBAAmB,IAAI,IAAI,CAAC;IAE1C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjG,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAgB,IAAI,CAAC,CAAC;IAClE,MAAM,OAAO,GAAS,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACvG,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAEzB,kFAAkF;IAClF,MAAM,MAAM,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,iBAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,6BAAgB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACnF,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;YAAE,OAAO;QAC9B,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC3E,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK;gBAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACtH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,QAAQ,IAAI,MAAM;YAAE,KAAK,OAAO,EAAE,CAAC;IACzC,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEhC,MAAM,cAAc,GAAG,IAAA,mBAAW,EAChC,KAAK,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE;;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,uBAAe,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,WAAW;YACX,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,MAAM,EAAE,MAAA,CAAC,CAAC,MAAM,mCAAI,mBAAmB;SACxC,CAAC,CAAC;QACH,IAAI,IAAiB,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,uBAAe,CAAC,cAAc,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,uBAAe,CAAC,cAAc,EAAE,uCAAuC,CAAC,CAAC;QAC9F,KAAK,OAAO,EAAE,CAAC;QACf,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC,EACD,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAC7B,CAAC;IAEF,MAAM,sBAAsB,GAAG,IAAA,mBAAW,EACxC,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,MAAM,OAAO,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,KAAK,CAAC;IAC5D,OAAO,IAAA,eAAO,EACZ,GAAG,EAAE,CAAC,CAAC;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;QACjF,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO;QACP,cAAc;QACd,sBAAsB;KACvB,CAAC,EACF,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,sBAAsB,CAAC,CACjH,CAAC;AACJ,CAAC"}
|
package/dist/shopify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify.d.ts","sourceRoot":"","sources":["../src/shopify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shopify.d.ts","sourceRoot":"","sources":["../src/shopify.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAiB,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEjE,eAAO,MAAM,OAAO,EAAE,kBAmCrB,CAAC"}
|
package/dist/shopify.js
CHANGED
|
@@ -11,6 +11,7 @@ const customer_1 = require("./customer");
|
|
|
11
11
|
const products_1 = require("./products");
|
|
12
12
|
const variants_1 = require("./variants");
|
|
13
13
|
const wishlist_1 = require("./wishlist");
|
|
14
|
+
const waitlist_1 = require("./waitlist");
|
|
14
15
|
const client_1 = require("./client");
|
|
15
16
|
const money_1 = require("./money");
|
|
16
17
|
const cartPolicy_1 = require("./cartPolicy");
|
|
@@ -37,6 +38,7 @@ exports.shopify = {
|
|
|
37
38
|
customer: customer_1.customer,
|
|
38
39
|
blogs: blogs_1.blogs,
|
|
39
40
|
wishlist: wishlist_1.wishlist,
|
|
41
|
+
waitlist: waitlist_1.waitlist,
|
|
40
42
|
shop: money_1.shop,
|
|
41
43
|
formatMoney: money_1.formatMoney,
|
|
42
44
|
alerts: {
|
package/dist/shopify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../src/shopify.ts"],"names":[],"mappings":";;;AAAA,gFAAgF;AAChF,6EAA6E;AAC7E,mFAAmF;AACnF,mCAAgC;AAChC,iCAA8B;AAC9B,+CAA4C;AAC5C,yCAAsC;AACtC,yCAAsC;AACtC,yCAAsC;AACtC,yCAAsC;AACtC,qCAAmD;AACnD,mCAA4C;AAC5C,6CAA6C;AAC7C,yCAAqF;AACrF,6CAA8F;AAGjF,QAAA,OAAO,GAAuB;IACzC,KAAK,CAAC,IAAI,CAAC,MAAqB;QAC9B,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;QAClB,sEAAsE;QACtE,wEAAwE;QACxE,IAAA,sBAAW,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAA,6BAAkB,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,IAAA,0BAAa,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,YAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IACD,OAAO;QACL,OAAO,IAAA,qBAAY,GAAE,CAAC;IACxB,CAAC;IACD,MAAM,EAAE,KAAK;IACb,QAAQ,EAAR,mBAAQ;IACR,QAAQ,EAAR,mBAAQ;IACR,WAAW,EAAX,yBAAW;IACX,IAAI,EAAJ,WAAI;IACJ,QAAQ,EAAR,mBAAQ;IACR,KAAK,EAAL,aAAK;IACL,QAAQ,EAAR,mBAAQ;IACR,IAAI,EAAJ,YAAI;IACJ,WAAW,EAAX,mBAAW;IACX,MAAM,EAAE;QACN,OAAO,EAAP,kBAAO;QACP,WAAW,EAAX,sBAAW;QACX,aAAa,EAAb,wBAAa;QACb,SAAS,EAAE,0BAAa;KACzB;IACD,UAAU,EAAE;QACV,SAAS,EAAE,gCAAmB;QAC9B,MAAM,EAAE,gCAAmB;QAC3B,oBAAoB,EAApB,iCAAoB;KACrB;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../src/shopify.ts"],"names":[],"mappings":";;;AAAA,gFAAgF;AAChF,6EAA6E;AAC7E,mFAAmF;AACnF,mCAAgC;AAChC,iCAA8B;AAC9B,+CAA4C;AAC5C,yCAAsC;AACtC,yCAAsC;AACtC,yCAAsC;AACtC,yCAAsC;AACtC,yCAAsC;AACtC,qCAAmD;AACnD,mCAA4C;AAC5C,6CAA6C;AAC7C,yCAAqF;AACrF,6CAA8F;AAGjF,QAAA,OAAO,GAAuB;IACzC,KAAK,CAAC,IAAI,CAAC,MAAqB;QAC9B,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;QAClB,sEAAsE;QACtE,wEAAwE;QACxE,IAAA,sBAAW,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAA,6BAAkB,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,IAAA,0BAAa,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,YAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IACD,OAAO;QACL,OAAO,IAAA,qBAAY,GAAE,CAAC;IACxB,CAAC;IACD,MAAM,EAAE,KAAK;IACb,QAAQ,EAAR,mBAAQ;IACR,QAAQ,EAAR,mBAAQ;IACR,WAAW,EAAX,yBAAW;IACX,IAAI,EAAJ,WAAI;IACJ,QAAQ,EAAR,mBAAQ;IACR,KAAK,EAAL,aAAK;IACL,QAAQ,EAAR,mBAAQ;IACR,QAAQ,EAAR,mBAAQ;IACR,IAAI,EAAJ,YAAI;IACJ,WAAW,EAAX,mBAAW;IACX,MAAM,EAAE;QACN,OAAO,EAAP,kBAAO;QACP,WAAW,EAAX,sBAAW;QACX,aAAa,EAAb,wBAAa;QACb,SAAS,EAAE,0BAAa;KACzB;IACD,UAAU,EAAE;QACV,SAAS,EAAE,gCAAmB;QAC9B,MAAM,EAAE,gCAAmB;QAC3B,oBAAoB,EAApB,iCAAoB;KACrB;CACF,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { WishlistStorageAdapter } from './types';
|
|
2
|
+
/** Characters of stored details per list. See the note above. */
|
|
3
|
+
export declare const STORED_DETAILS_BUDGET = 1000000;
|
|
4
|
+
export interface StoredListCodec<T> {
|
|
5
|
+
/** The item's id, unique in the list. */
|
|
6
|
+
idOf(item: T): string;
|
|
7
|
+
/** When it was added (ms epoch, 0 when unknown), to order a merge. */
|
|
8
|
+
addedAt(item: T): number;
|
|
9
|
+
/** One stored entry, in any shape the key has held. Null when it names nothing. */
|
|
10
|
+
read(v: unknown): T | null;
|
|
11
|
+
/** The entry to store. `details` is what `detailsOf` returned, or undefined when over the budget. */
|
|
12
|
+
write(item: T, details: unknown): Record<string, unknown>;
|
|
13
|
+
/** The details to store with the item (trimmed as wanted), undefined when it has none. */
|
|
14
|
+
detailsOf(item: T): unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface StoredList<T> {
|
|
17
|
+
/** Points the list at a storage and key. Nothing is read until `load`. */
|
|
18
|
+
open(storage: WishlistStorageAdapter | null, key: string): void;
|
|
19
|
+
/** The stored items; `[]` when there are none. A list that failed to read is `[]` and never written. */
|
|
20
|
+
load(): Promise<T[]>;
|
|
21
|
+
/** Merges each of `keys` not merged yet into `items`, newest first, and stores the result. */
|
|
22
|
+
mergeOnce(items: T[], keys: string[]): Promise<T[]>;
|
|
23
|
+
save(items: T[]): Promise<boolean>;
|
|
24
|
+
clear(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export declare function createStoredList<T>(codec: StoredListCodec<T>): StoredList<T>;
|
|
27
|
+
//# sourceMappingURL=storedList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storedList.d.ts","sourceRoot":"","sources":["../src/storedList.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,iEAAiE;AACjE,eAAO,MAAM,qBAAqB,UAAY,CAAC;AAE/C,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,yCAAyC;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IACtB,sEAAsE;IACtE,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IACzB,mFAAmF;IACnF,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3B,qGAAqG;IACrG,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1D,0FAA0F;IAC1F,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,0EAA0E;IAC1E,IAAI,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAChE,wGAAwG;IACxG,IAAI,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACrB,8FAA8F;IAC9F,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAqI5E"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.STORED_DETAILS_BUDGET = void 0;
|
|
4
|
+
exports.createStoredList = createStoredList;
|
|
5
|
+
/** Characters of stored details per list. See the note above. */
|
|
6
|
+
exports.STORED_DETAILS_BUDGET = 1000000;
|
|
7
|
+
function createStoredList(codec) {
|
|
8
|
+
let storage = null;
|
|
9
|
+
let key = '';
|
|
10
|
+
/** False once the stored list failed to read: writing then would replace a list we never saw. */
|
|
11
|
+
let writable = true;
|
|
12
|
+
/** The entries under `k`, de-duplicated; `null` when it could not be read at all. */
|
|
13
|
+
async function readList(k) {
|
|
14
|
+
if (!storage)
|
|
15
|
+
return [];
|
|
16
|
+
let raw;
|
|
17
|
+
try {
|
|
18
|
+
raw = await Promise.resolve(storage.getItem(k));
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
if (!raw)
|
|
24
|
+
return [];
|
|
25
|
+
let parsed;
|
|
26
|
+
try {
|
|
27
|
+
parsed = JSON.parse(raw);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
parsed = undefined;
|
|
31
|
+
}
|
|
32
|
+
if (!Array.isArray(parsed)) {
|
|
33
|
+
try {
|
|
34
|
+
const backup = `${k}:unreadable`;
|
|
35
|
+
if (!(await Promise.resolve(storage.getItem(backup))))
|
|
36
|
+
await Promise.resolve(storage.setItem(backup, raw));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
/* best effort */
|
|
40
|
+
}
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
const seen = new Set();
|
|
44
|
+
const out = [];
|
|
45
|
+
for (const v of parsed) {
|
|
46
|
+
const item = codec.read(v);
|
|
47
|
+
if (!item)
|
|
48
|
+
continue;
|
|
49
|
+
const id = codec.idOf(item);
|
|
50
|
+
if (seen.has(id))
|
|
51
|
+
continue;
|
|
52
|
+
seen.add(id);
|
|
53
|
+
out.push(item);
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
function serialize(items) {
|
|
58
|
+
let budget = exports.STORED_DETAILS_BUDGET;
|
|
59
|
+
return JSON.stringify(items.map((item) => {
|
|
60
|
+
const details = codec.detailsOf(item);
|
|
61
|
+
if (details == null)
|
|
62
|
+
return codec.write(item, details);
|
|
63
|
+
const size = JSON.stringify(details).length;
|
|
64
|
+
if (size > budget)
|
|
65
|
+
return codec.write(item, undefined);
|
|
66
|
+
budget -= size;
|
|
67
|
+
return codec.write(item, details);
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
async function save(items) {
|
|
71
|
+
if (!storage || !writable)
|
|
72
|
+
return false;
|
|
73
|
+
try {
|
|
74
|
+
await Promise.resolve(storage.setItem(key, serialize(items)));
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Storage full or unavailable: the list in memory stays correct regardless.
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
open(nextStorage, nextKey) {
|
|
84
|
+
storage = nextStorage;
|
|
85
|
+
key = nextKey;
|
|
86
|
+
writable = true;
|
|
87
|
+
},
|
|
88
|
+
async load() {
|
|
89
|
+
const items = await readList(key);
|
|
90
|
+
writable = items !== null;
|
|
91
|
+
return items !== null && items !== void 0 ? items : [];
|
|
92
|
+
},
|
|
93
|
+
async mergeOnce(items, keys) {
|
|
94
|
+
if (!storage || !writable || keys.length === 0)
|
|
95
|
+
return items;
|
|
96
|
+
const markerKey = `${key}:merged`;
|
|
97
|
+
let merged = [];
|
|
98
|
+
try {
|
|
99
|
+
const raw = await Promise.resolve(storage.getItem(markerKey));
|
|
100
|
+
const parsed = raw ? JSON.parse(raw) : [];
|
|
101
|
+
if (Array.isArray(parsed))
|
|
102
|
+
merged = parsed.filter((k) => typeof k === 'string');
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return items;
|
|
106
|
+
}
|
|
107
|
+
const pending = keys.filter((k) => k !== key && !merged.includes(k));
|
|
108
|
+
if (pending.length === 0)
|
|
109
|
+
return items;
|
|
110
|
+
const seen = new Set(items.map(codec.idOf));
|
|
111
|
+
const next = items.slice();
|
|
112
|
+
for (const k of pending) {
|
|
113
|
+
const found = await readList(k);
|
|
114
|
+
if (found === null)
|
|
115
|
+
return items;
|
|
116
|
+
for (const item of found) {
|
|
117
|
+
const id = codec.idOf(item);
|
|
118
|
+
if (seen.has(id))
|
|
119
|
+
continue;
|
|
120
|
+
seen.add(id);
|
|
121
|
+
next.push(item);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (next.length > items.length) {
|
|
125
|
+
// Newest first across the lists; entries without a date keep their order, last.
|
|
126
|
+
next.sort((a, b) => codec.addedAt(b) - codec.addedAt(a));
|
|
127
|
+
// Not recorded if it couldn't be stored: merged again next launch, which skips what's there.
|
|
128
|
+
if (!(await save(next)))
|
|
129
|
+
return next;
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
await Promise.resolve(storage.setItem(markerKey, JSON.stringify([...merged, ...pending])));
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
/* merged again next launch: entries already saved are skipped */
|
|
136
|
+
}
|
|
137
|
+
return next;
|
|
138
|
+
},
|
|
139
|
+
save,
|
|
140
|
+
async clear() {
|
|
141
|
+
if (!storage || !writable)
|
|
142
|
+
return;
|
|
143
|
+
try {
|
|
144
|
+
await Promise.resolve(storage.removeItem(key));
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
/* ignore */
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=storedList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storedList.js","sourceRoot":"","sources":["../src/storedList.ts"],"names":[],"mappings":"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"}
|
package/dist/tileCredit.d.ts
CHANGED
|
@@ -8,12 +8,22 @@ export declare function moneyToCents(money: string | number): number;
|
|
|
8
8
|
export declare const DEFAULT_TILE_CREDIT_BASE_URL = "https://tile-credit.apptile.io";
|
|
9
9
|
export declare class TileCreditClient implements TileCreditAPI {
|
|
10
10
|
private readonly baseUrl;
|
|
11
|
-
private readonly
|
|
11
|
+
private readonly getAccessToken;
|
|
12
|
+
private readonly renewAccessToken;
|
|
12
13
|
private readonly shopDomain;
|
|
13
14
|
private readonly signal?;
|
|
14
15
|
private readonly timeoutMs;
|
|
15
16
|
constructor(config: TileCreditConfig);
|
|
17
|
+
/**
|
|
18
|
+
* One request with a token read just now. A 401 renews the token once (`renewAccessToken`) and sends
|
|
19
|
+
* the request again; a second 401, or no new token, is `unauthorized`. Nothing here signs anyone out:
|
|
20
|
+
* the service also answers 401 for a shop it doesn't know.
|
|
21
|
+
*/
|
|
16
22
|
private call;
|
|
23
|
+
/** A token from `source`, or `unauthorized` (signed out) / `network` (couldn't be renewed). */
|
|
24
|
+
private tokenOrThrow;
|
|
25
|
+
private send;
|
|
26
|
+
private read;
|
|
17
27
|
getWallet(): Promise<TileCreditWallet>;
|
|
18
28
|
getLedger(opts?: {
|
|
19
29
|
limit?: number;
|
|
@@ -24,7 +34,7 @@ export declare class TileCreditClient implements TileCreditAPI {
|
|
|
24
34
|
}>;
|
|
25
35
|
getConfig(): Promise<TileCreditPublicConfig>;
|
|
26
36
|
/**
|
|
27
|
-
* Ledger + gift-cards joined into one history feed
|
|
37
|
+
* Ledger + gift-cards joined into one history feed. Each redeem
|
|
28
38
|
* row gets `.card` populated with the masked info (last4 / status / expiry)
|
|
29
39
|
* so you can render "•••• adf7 · depleted" in one pass. Non-redeem rows
|
|
30
40
|
* pass through unchanged with `card: null`.
|
|
@@ -39,17 +49,21 @@ export declare class TileCreditClient implements TileCreditAPI {
|
|
|
39
49
|
}): Promise<TileCreditHistoryPage>;
|
|
40
50
|
redeem(input: TileCreditRedeemInput): Promise<TileCreditRedeemResult>;
|
|
41
51
|
}
|
|
42
|
-
/** Configure the
|
|
43
|
-
*
|
|
44
|
-
* customer (`token` is baked in for the lifetime of the instance). */
|
|
52
|
+
/** Configure the shared client. Safe to call multiple times — it replaces the instance. With a fixed
|
|
53
|
+
* `customerAccessToken`, configure again for each new token; with `getAccessToken` it stays fresh. */
|
|
45
54
|
export declare function configureTileCredit(config: TileCreditConfig): TileCreditAPI;
|
|
46
55
|
export declare function getTileCreditClient(): TileCreditAPI | null;
|
|
47
56
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
57
|
+
* @deprecated Use `useCartStoreCredit()` in a React app: it allows one Apply at a time, finds its card
|
|
58
|
+
* on the cart, and writes through the provider's cart queue (this writes to the cart directly, so the
|
|
59
|
+
* provider's cart state is stale until it reads the cart again). Kept for callers without React.
|
|
60
|
+
*
|
|
61
|
+
* Mints a gift card with the shared client and adds it to the cart, keeping the cart's other gift
|
|
62
|
+
* cards (`cartGiftCardCodesAdd`; this used `cartGiftCardCodesUpdate`, which took them off). The cart's
|
|
63
|
+
* country is set only when it has none (`countryFallback`, else the shop's), keeping its email, and the
|
|
64
|
+
* shopper when `customerAccessToken` is passed; it used to replace the identity with the country alone,
|
|
65
|
+
* which dropped both. Throws `TileCreditError('cart_refused')` when Shopify didn't put the card on the
|
|
66
|
+
* cart; the card then only holds the credit (nothing is charged), and the next redeem disables it.
|
|
53
67
|
*/
|
|
54
68
|
export declare function redeemAndApplyToCart(opts: {
|
|
55
69
|
cartId: string;
|
|
@@ -57,6 +71,7 @@ export declare function redeemAndApplyToCart(opts: {
|
|
|
57
71
|
idempotencyKey?: string;
|
|
58
72
|
reason?: string;
|
|
59
73
|
countryFallback?: string;
|
|
74
|
+
customerAccessToken?: string;
|
|
60
75
|
}): Promise<{
|
|
61
76
|
redeemed: TileCreditRedeemResult;
|
|
62
77
|
cart: Cart;
|
package/dist/tileCredit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tileCredit.d.ts","sourceRoot":"","sources":["../src/tileCredit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tileCredit.d.ts","sourceRoot":"","sources":["../src/tileCredit.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EACb,gBAAgB,EAIhB,qBAAqB,EACrB,wBAAwB,EAExB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAOjB;yDACyD;AACzD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAI3D;AAmCD,+EAA+E;AAC/E,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAE7E,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwC;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,gBAAgB;IAepC;;;;OAIG;YACW,IAAI;IAclB,+FAA+F;YACjF,YAAY;YAYZ,IAAI;IAuClB,OAAO,CAAC,IAAI;IAWN,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAYtC,SAAS,CAAC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;IASxF,aAAa,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,wBAAwB,EAAE,CAAA;KAAE,CAAC;IAKnE,SAAS,IAAI,OAAO,CAAC,sBAAsB,CAAC;IASlD;;;;;;;;;OASG;IACG,UAAU,CAAC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAuB1F,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAW5E;AAQD;uGACuG;AACvG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAG3E;AAED,wBAAgB,mBAAmB,IAAI,aAAa,GAAG,IAAI,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,sBAAsB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CA2B5D"}
|