@tagadapay/headless-sdk 1.0.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 (79) hide show
  1. package/README.md +110 -0
  2. package/dist/core/client.d.ts +48 -0
  3. package/dist/core/client.d.ts.map +1 -0
  4. package/dist/core/client.js +61 -0
  5. package/dist/core/client.js.map +1 -0
  6. package/dist/core/errors.d.ts +46 -0
  7. package/dist/core/errors.d.ts.map +1 -0
  8. package/dist/core/errors.js +57 -0
  9. package/dist/core/errors.js.map +1 -0
  10. package/dist/core/http.d.ts +27 -0
  11. package/dist/core/http.d.ts.map +1 -0
  12. package/dist/core/http.js +116 -0
  13. package/dist/core/http.js.map +1 -0
  14. package/dist/core/index.d.ts +10 -0
  15. package/dist/core/index.d.ts.map +1 -0
  16. package/dist/core/index.js +9 -0
  17. package/dist/core/index.js.map +1 -0
  18. package/dist/core/modules/analytics.d.ts +79 -0
  19. package/dist/core/modules/analytics.d.ts.map +1 -0
  20. package/dist/core/modules/analytics.js +265 -0
  21. package/dist/core/modules/analytics.js.map +1 -0
  22. package/dist/core/modules/checkout.d.ts +67 -0
  23. package/dist/core/modules/checkout.d.ts.map +1 -0
  24. package/dist/core/modules/checkout.js +164 -0
  25. package/dist/core/modules/checkout.js.map +1 -0
  26. package/dist/core/modules/customer.d.ts +33 -0
  27. package/dist/core/modules/customer.d.ts.map +1 -0
  28. package/dist/core/modules/customer.js +53 -0
  29. package/dist/core/modules/customer.js.map +1 -0
  30. package/dist/core/modules/offers.d.ts +43 -0
  31. package/dist/core/modules/offers.d.ts.map +1 -0
  32. package/dist/core/modules/offers.js +56 -0
  33. package/dist/core/modules/offers.js.map +1 -0
  34. package/dist/core/modules/payment.d.ts +123 -0
  35. package/dist/core/modules/payment.d.ts.map +1 -0
  36. package/dist/core/modules/payment.js +279 -0
  37. package/dist/core/modules/payment.js.map +1 -0
  38. package/dist/core/types.d.ts +276 -0
  39. package/dist/core/types.d.ts.map +1 -0
  40. package/dist/core/types.js +5 -0
  41. package/dist/core/types.js.map +1 -0
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +2 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/react/hooks/useAnalytics.d.ts +59 -0
  47. package/dist/react/hooks/useAnalytics.d.ts.map +1 -0
  48. package/dist/react/hooks/useAnalytics.js +49 -0
  49. package/dist/react/hooks/useAnalytics.js.map +1 -0
  50. package/dist/react/hooks/useCheckout.d.ts +45 -0
  51. package/dist/react/hooks/useCheckout.d.ts.map +1 -0
  52. package/dist/react/hooks/useCheckout.js +113 -0
  53. package/dist/react/hooks/useCheckout.js.map +1 -0
  54. package/dist/react/hooks/useCustomer.d.ts +28 -0
  55. package/dist/react/hooks/useCustomer.d.ts.map +1 -0
  56. package/dist/react/hooks/useCustomer.js +77 -0
  57. package/dist/react/hooks/useCustomer.js.map +1 -0
  58. package/dist/react/hooks/useOffers.d.ts +45 -0
  59. package/dist/react/hooks/useOffers.d.ts.map +1 -0
  60. package/dist/react/hooks/useOffers.js +88 -0
  61. package/dist/react/hooks/useOffers.js.map +1 -0
  62. package/dist/react/hooks/usePayment.d.ts +63 -0
  63. package/dist/react/hooks/usePayment.d.ts.map +1 -0
  64. package/dist/react/hooks/usePayment.js +114 -0
  65. package/dist/react/hooks/usePayment.js.map +1 -0
  66. package/dist/react/index.d.ts +14 -0
  67. package/dist/react/index.d.ts.map +1 -0
  68. package/dist/react/index.js +7 -0
  69. package/dist/react/index.js.map +1 -0
  70. package/dist/react/provider.d.ts +31 -0
  71. package/dist/react/provider.d.ts.map +1 -0
  72. package/dist/react/provider.js +32 -0
  73. package/dist/react/provider.js.map +1 -0
  74. package/dist/tagada-headless-react.min.js +8 -0
  75. package/dist/tagada-headless-react.min.js.map +7 -0
  76. package/dist/tagada-headless.js +1093 -0
  77. package/dist/tagada-headless.min.js +8 -0
  78. package/dist/tagada-headless.min.js.map +7 -0
  79. package/package.json +72 -0
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Analytics and pixel tracking -- page views, checkout steps, conversions.
3
+ *
4
+ * Automatically loads pixel scripts (Meta, TikTok, Snapchat, GTM, GA)
5
+ * from your store's configuration in the CRM, then fires events to all active pixels.
6
+ */
7
+ export class AnalyticsModule {
8
+ constructor(http, storeId) {
9
+ this.http = http;
10
+ this.storeId = storeId;
11
+ this.pixels = { loaded: false };
12
+ this.eventQueue = [];
13
+ this.dedupeSet = new Set();
14
+ }
15
+ /**
16
+ * Initialize analytics by loading pixel configuration from the store.
17
+ * Call this once on page load. Events fired before init completes are queued.
18
+ */
19
+ async init(opts) {
20
+ if (this.pixels.loaded)
21
+ return;
22
+ let config = opts?.pixelConfig;
23
+ if (!config) {
24
+ try {
25
+ const res = await this.http.get('/api/v1/checkout/config', { params: { storeId: this.storeId } });
26
+ config = res.pixels;
27
+ }
28
+ catch {
29
+ // graceful degradation -- analytics just won't fire pixels
30
+ }
31
+ }
32
+ this.pixels = { loaded: true, config };
33
+ if (typeof window !== 'undefined' && config) {
34
+ this.loadPixelScripts(config);
35
+ }
36
+ this.flushQueue();
37
+ }
38
+ // ---------------------------------------------------------------------------
39
+ // Standard e-commerce events
40
+ // ---------------------------------------------------------------------------
41
+ trackPageView(page) {
42
+ this.fireEvent('PageView', { page: page ?? this.getCurrentPath() });
43
+ }
44
+ trackViewContent(data) {
45
+ this.fireEvent('ViewContent', data);
46
+ }
47
+ trackAddToCart(data) {
48
+ this.fireEvent('AddToCart', data);
49
+ }
50
+ trackInitiateCheckout(data) {
51
+ this.fireEvent('InitiateCheckout', data ?? {});
52
+ }
53
+ trackAddPaymentInfo(data) {
54
+ this.fireEvent('AddPaymentInfo', data ?? {});
55
+ }
56
+ trackPurchase(data) {
57
+ this.fireEvent('Purchase', data, true);
58
+ }
59
+ trackCustomEvent(event, data) {
60
+ this.fireEvent(event, data ?? {});
61
+ }
62
+ /** Track a funnel step (maps to Tagada's funnel tracking endpoint). */
63
+ trackStep(data) {
64
+ this.fireEvent('FunnelStep', data);
65
+ this.http
66
+ .post('/api/v1/funnel-tracking/step', {
67
+ storeId: this.storeId,
68
+ ...data,
69
+ })
70
+ .catch(() => {
71
+ // best-effort -- don't block the UI
72
+ });
73
+ }
74
+ trackConversion(data) {
75
+ this.fireEvent('Conversion', data, true);
76
+ }
77
+ // ---------------------------------------------------------------------------
78
+ // Internals
79
+ // ---------------------------------------------------------------------------
80
+ fireEvent(event, data, dedupe = false) {
81
+ if (dedupe) {
82
+ const key = `${event}:${JSON.stringify(data)}`;
83
+ if (this.dedupeSet.has(key))
84
+ return;
85
+ this.dedupeSet.add(key);
86
+ }
87
+ if (!this.pixels.loaded) {
88
+ this.eventQueue.push({ event, data });
89
+ return;
90
+ }
91
+ this.sendToMeta(event, data);
92
+ this.sendToTikTok(event, data);
93
+ this.sendToSnapchat(event, data);
94
+ this.sendToGTM(event, data);
95
+ this.sendToGA(event, data);
96
+ }
97
+ flushQueue() {
98
+ const queue = [...this.eventQueue];
99
+ this.eventQueue = [];
100
+ for (const { event, data } of queue) {
101
+ this.fireEvent(event, data);
102
+ }
103
+ }
104
+ getCurrentPath() {
105
+ return typeof window !== 'undefined' ? window.location.pathname : '/';
106
+ }
107
+ // ---------------------------------------------------------------------------
108
+ // Pixel script loaders
109
+ // ---------------------------------------------------------------------------
110
+ loadPixelScripts(config) {
111
+ if (config.metaPixelId)
112
+ this.loadMetaPixel(config.metaPixelId);
113
+ if (config.tiktokPixelId)
114
+ this.loadTikTokPixel(config.tiktokPixelId);
115
+ if (config.snapchatPixelId)
116
+ this.loadSnapchatPixel(config.snapchatPixelId);
117
+ if (config.gtmId)
118
+ this.loadGTM(config.gtmId);
119
+ if (config.gaId)
120
+ this.loadGA(config.gaId);
121
+ }
122
+ loadMetaPixel(pixelId) {
123
+ if (typeof window === 'undefined')
124
+ return;
125
+ const w = window;
126
+ if (w.fbq)
127
+ return;
128
+ const n = (w.fbq = function (...args) {
129
+ n.callMethod
130
+ ? n.callMethod(...args)
131
+ : n.queue.push(args);
132
+ });
133
+ n.queue = [];
134
+ n.loaded = true;
135
+ n.version = '2.0';
136
+ this.injectScript('https://connect.facebook.net/en_US/fbevents.js');
137
+ w.fbq('init', pixelId);
138
+ }
139
+ loadTikTokPixel(pixelId) {
140
+ if (typeof window === 'undefined')
141
+ return;
142
+ const w = window;
143
+ if (w.ttq)
144
+ return;
145
+ const ttq = {};
146
+ ttq.methods = ['page', 'track', 'identify', 'instances', 'debug', 'on', 'off', 'once', 'ready', 'alias', 'group', 'enableCookie', 'disableCookie'];
147
+ ttq.setAndDefer = function (t, e) {
148
+ t[e] = function (...args) {
149
+ t.push([e, ...args]);
150
+ };
151
+ };
152
+ w.ttq = ttq;
153
+ this.injectScript('https://analytics.tiktok.com/i18n/pixel/events.js?sdkid=' + pixelId);
154
+ }
155
+ loadSnapchatPixel(pixelId) {
156
+ if (typeof window === 'undefined')
157
+ return;
158
+ const w = window;
159
+ if (w.snaptr)
160
+ return;
161
+ w.snaptr = function (...args) {
162
+ w.snaptr.handleRequest
163
+ ? w.snaptr.handleRequest(...args)
164
+ : w.snaptr.queue.push(args);
165
+ };
166
+ w.snaptr.queue = [];
167
+ this.injectScript('https://sc-static.net/scevent.min.js');
168
+ w.snaptr('init', pixelId);
169
+ }
170
+ loadGTM(gtmId) {
171
+ if (typeof window === 'undefined')
172
+ return;
173
+ const w = window;
174
+ w.dataLayer = w.dataLayer ?? [];
175
+ w.dataLayer.push({ 'gtm.start': Date.now(), event: 'gtm.js' });
176
+ this.injectScript(`https://www.googletagmanager.com/gtm.js?id=${gtmId}`);
177
+ }
178
+ loadGA(gaId) {
179
+ if (typeof window === 'undefined')
180
+ return;
181
+ this.injectScript(`https://www.googletagmanager.com/gtag/js?id=${gaId}`);
182
+ const w = window;
183
+ w.dataLayer = w.dataLayer ?? [];
184
+ w.gtag = function (...args) {
185
+ w.dataLayer.push(args);
186
+ };
187
+ w.gtag('js', new Date());
188
+ w.gtag('config', gaId);
189
+ }
190
+ injectScript(src) {
191
+ if (typeof document === 'undefined')
192
+ return;
193
+ const s = document.createElement('script');
194
+ s.async = true;
195
+ s.src = src;
196
+ document.head.appendChild(s);
197
+ }
198
+ // ---------------------------------------------------------------------------
199
+ // Event dispatchers per pixel
200
+ // ---------------------------------------------------------------------------
201
+ sendToMeta(event, data) {
202
+ const w = typeof window !== 'undefined' ? window : null;
203
+ const fbq = w?.fbq;
204
+ if (!fbq)
205
+ return;
206
+ const metaEventMap = {
207
+ PageView: 'PageView',
208
+ ViewContent: 'ViewContent',
209
+ AddToCart: 'AddToCart',
210
+ InitiateCheckout: 'InitiateCheckout',
211
+ AddPaymentInfo: 'AddPaymentInfo',
212
+ Purchase: 'Purchase',
213
+ };
214
+ const mapped = metaEventMap[event];
215
+ if (mapped) {
216
+ fbq('track', mapped, data);
217
+ }
218
+ else {
219
+ fbq('trackCustom', event, data);
220
+ }
221
+ }
222
+ sendToTikTok(event, data) {
223
+ const w = typeof window !== 'undefined' ? window : null;
224
+ const ttq = w?.ttq;
225
+ if (!ttq)
226
+ return;
227
+ if (event === 'PageView') {
228
+ ttq.page?.();
229
+ }
230
+ else {
231
+ ttq.track?.(event, data);
232
+ }
233
+ }
234
+ sendToSnapchat(event, data) {
235
+ const w = typeof window !== 'undefined' ? window : null;
236
+ const snaptr = w?.snaptr;
237
+ if (!snaptr)
238
+ return;
239
+ const snapEventMap = {
240
+ PageView: 'PAGE_VIEW',
241
+ ViewContent: 'VIEW_CONTENT',
242
+ AddToCart: 'ADD_CART',
243
+ InitiateCheckout: 'START_CHECKOUT',
244
+ Purchase: 'PURCHASE',
245
+ };
246
+ const mapped = snapEventMap[event];
247
+ if (mapped)
248
+ snaptr('track', mapped, data);
249
+ }
250
+ sendToGTM(event, data) {
251
+ const w = typeof window !== 'undefined' ? window : null;
252
+ const dataLayer = w?.dataLayer;
253
+ if (!dataLayer)
254
+ return;
255
+ dataLayer.push({ event, ...data });
256
+ }
257
+ sendToGA(event, data) {
258
+ const w = typeof window !== 'undefined' ? window : null;
259
+ const gtag = w?.gtag;
260
+ if (!gtag)
261
+ return;
262
+ gtag('event', event, data);
263
+ }
264
+ }
265
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../src/core/modules/analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { HttpClient } from '../http.js';
2
+ import type { CheckoutSession, LineItem, ShippingRate, Address, CheckoutCustomer } from '../types.js';
3
+ /**
4
+ * Manages checkout sessions -- load, update cart, apply promo codes, handle shipping.
5
+ *
6
+ * All methods talk to the TagadaPay REST API and return typed data.
7
+ * No local state is kept; the server is the source of truth.
8
+ */
9
+ export declare class CheckoutModule {
10
+ private readonly http;
11
+ private readonly storeId;
12
+ private readonly onTokenChange?;
13
+ private sessionToken;
14
+ constructor(http: HttpClient, storeId: string, onTokenChange?: ((token: string) => void) | undefined);
15
+ /**
16
+ * Load an existing checkout session by its checkout token.
17
+ *
18
+ * @param checkoutToken The checkout token (from URL param `checkoutToken`).
19
+ * @param sessionToken The JWT session token (from URL param `token`). Required for auth.
20
+ *
21
+ * Both values come from the redirect URL returned by `createSession()`.
22
+ * Example URL: `/checkout?checkoutToken=abc123&token=eyJ...`
23
+ */
24
+ loadSession(checkoutToken: string, sessionToken?: string): Promise<CheckoutSession>;
25
+ /**
26
+ * Create a new checkout session.
27
+ *
28
+ * Returns a `checkoutToken` and `sessionToken` (JWT) needed for all subsequent calls.
29
+ * Also returns a `checkoutUrl` (the full Tagada-hosted checkout URL, for reference).
30
+ */
31
+ createSession(opts: {
32
+ items: LineItem[];
33
+ currency?: string;
34
+ returnUrl?: string;
35
+ customerEmail?: string;
36
+ customerFirstName?: string;
37
+ customerLastName?: string;
38
+ }): Promise<{
39
+ checkoutUrl: string;
40
+ checkoutToken: string;
41
+ sessionToken: string;
42
+ customerId: string;
43
+ }>;
44
+ /** Replace the cart items for an existing session. */
45
+ updateCart(sessionId: string, items: LineItem[]): Promise<CheckoutSession>;
46
+ /** Update customer information on the session. */
47
+ updateCustomer(sessionId: string, customer: Partial<CheckoutCustomer>): Promise<CheckoutSession>;
48
+ /** Update shipping and/or billing address on the session. */
49
+ updateAddress(sessionId: string, addresses: {
50
+ shippingAddress?: Address;
51
+ billingAddress?: Address;
52
+ }): Promise<CheckoutSession>;
53
+ /** Apply a promotion code to the session. */
54
+ applyPromoCode(sessionId: string, code: string): Promise<CheckoutSession>;
55
+ /** Remove the currently applied promotion code. */
56
+ removePromoCode(sessionId: string): Promise<CheckoutSession>;
57
+ /** Fetch available shipping rates for the session's address. */
58
+ getShippingRates(sessionId: string): Promise<ShippingRate[]>;
59
+ /** Select a shipping rate for the session. */
60
+ selectShippingRate(sessionId: string, rateId: string): Promise<CheckoutSession>;
61
+ /**
62
+ * Normalize the raw v2 API response into a cleaner CheckoutSession shape.
63
+ * The raw response has nested `checkoutSession` + `summary` -- we flatten it.
64
+ */
65
+ private normalizeSession;
66
+ }
67
+ //# sourceMappingURL=checkout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../../src/core/modules/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IALjC,OAAO,CAAC,YAAY,CAAqB;gBAGtB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,aAAA;IAG1D;;;;;;;;OAQG;IACG,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAiBzF;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE;QACxB,KAAK,EAAE,QAAQ,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IA0CrG,sDAAsD;IAChD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAQhF,kDAAkD;IAC5C,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAClC,OAAO,CAAC,eAAe,CAAC;IAQ3B,6DAA6D;IACvD,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GACjE,OAAO,CAAC,eAAe,CAAC;IAQ3B,6CAA6C;IACvC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ/E,mDAAmD;IAC7C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAMlE,gEAAgE;IAC1D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAQlE,8CAA8C;IACxC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQrF;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAwDzB"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Manages checkout sessions -- load, update cart, apply promo codes, handle shipping.
3
+ *
4
+ * All methods talk to the TagadaPay REST API and return typed data.
5
+ * No local state is kept; the server is the source of truth.
6
+ */
7
+ export class CheckoutModule {
8
+ constructor(http, storeId, onTokenChange) {
9
+ this.http = http;
10
+ this.storeId = storeId;
11
+ this.onTokenChange = onTokenChange;
12
+ }
13
+ /**
14
+ * Load an existing checkout session by its checkout token.
15
+ *
16
+ * @param checkoutToken The checkout token (from URL param `checkoutToken`).
17
+ * @param sessionToken The JWT session token (from URL param `token`). Required for auth.
18
+ *
19
+ * Both values come from the redirect URL returned by `createSession()`.
20
+ * Example URL: `/checkout?checkoutToken=abc123&token=eyJ...`
21
+ */
22
+ async loadSession(checkoutToken, sessionToken) {
23
+ if (sessionToken) {
24
+ this.sessionToken = sessionToken;
25
+ this.onTokenChange?.(sessionToken);
26
+ }
27
+ const raw = await this.http.get(`/api/v1/checkout-sessions/${checkoutToken}/v2`, {
28
+ params: { skipAsyncWait: 'false' },
29
+ token: this.sessionToken,
30
+ });
31
+ return this.normalizeSession(raw);
32
+ }
33
+ /**
34
+ * Create a new checkout session.
35
+ *
36
+ * Returns a `checkoutToken` and `sessionToken` (JWT) needed for all subsequent calls.
37
+ * Also returns a `checkoutUrl` (the full Tagada-hosted checkout URL, for reference).
38
+ */
39
+ async createSession(opts) {
40
+ const lineItems = opts.items.map((i) => ({
41
+ variantId: i.variantId,
42
+ priceId: i.priceId,
43
+ quantity: i.quantity,
44
+ }));
45
+ const body = {
46
+ storeId: this.storeId,
47
+ lineItems,
48
+ };
49
+ if (opts.currency)
50
+ body.currency = opts.currency;
51
+ if (opts.returnUrl)
52
+ body.returnUrl = opts.returnUrl;
53
+ if (opts.customerEmail) {
54
+ body.customer = {
55
+ email: opts.customerEmail,
56
+ firstName: opts.customerFirstName,
57
+ lastName: opts.customerLastName,
58
+ currency: opts.currency,
59
+ };
60
+ }
61
+ const res = await this.http.post('/api/v1/checkout/session/init', body);
62
+ // Extract the JWT token from the checkoutUrl query params
63
+ const url = new URL(res.checkoutUrl);
64
+ const sessionToken = url.searchParams.get('token') ?? '';
65
+ this.sessionToken = sessionToken;
66
+ if (sessionToken)
67
+ this.onTokenChange?.(sessionToken);
68
+ return {
69
+ checkoutUrl: res.checkoutUrl,
70
+ checkoutToken: res.checkoutToken,
71
+ sessionToken,
72
+ customerId: res.customerId,
73
+ };
74
+ }
75
+ /** Replace the cart items for an existing session. */
76
+ async updateCart(sessionId, items) {
77
+ return this.http.post(`/api/v1/checkout-sessions/${sessionId}/items`, { items }, { token: this.sessionToken });
78
+ }
79
+ /** Update customer information on the session. */
80
+ async updateCustomer(sessionId, customer) {
81
+ return this.http.patch(`/api/v1/checkout-sessions/${sessionId}/customer`, { data: customer }, { token: this.sessionToken });
82
+ }
83
+ /** Update shipping and/or billing address on the session. */
84
+ async updateAddress(sessionId, addresses) {
85
+ return this.http.post(`/api/v1/checkout-sessions/${sessionId}/address`, { data: addresses }, { token: this.sessionToken });
86
+ }
87
+ /** Apply a promotion code to the session. */
88
+ async applyPromoCode(sessionId, code) {
89
+ return this.http.post(`/api/v1/checkout-sessions/${sessionId}/promo`, { code }, { token: this.sessionToken });
90
+ }
91
+ /** Remove the currently applied promotion code. */
92
+ async removePromoCode(sessionId) {
93
+ return this.http.delete(`/api/v1/checkout-sessions/${sessionId}/promo`, {
94
+ token: this.sessionToken,
95
+ });
96
+ }
97
+ /** Fetch available shipping rates for the session's address. */
98
+ async getShippingRates(sessionId) {
99
+ const res = await this.http.get(`/api/v1/checkout-sessions/${sessionId}/shipping-rates`, { token: this.sessionToken });
100
+ return res.rates;
101
+ }
102
+ /** Select a shipping rate for the session. */
103
+ async selectShippingRate(sessionId, rateId) {
104
+ return this.http.post(`/api/v1/checkout-sessions/${sessionId}/shipping-rates`, { rateId }, { token: this.sessionToken });
105
+ }
106
+ /**
107
+ * Normalize the raw v2 API response into a cleaner CheckoutSession shape.
108
+ * The raw response has nested `checkoutSession` + `summary` -- we flatten it.
109
+ */
110
+ normalizeSession(raw) {
111
+ const cs = raw.checkoutSession;
112
+ const orderSummaries = (cs.orderSummaries ?? []);
113
+ const summary = (raw.summary ?? cs.summary ?? orderSummaries[0] ?? {});
114
+ const lineItems = (cs.sessionLineItems ?? []);
115
+ const customer = cs.customer;
116
+ const items = lineItems.map((li) => {
117
+ const price = li.price;
118
+ const variant = (price?.variant ?? {});
119
+ const product = (variant.product ?? {});
120
+ const currencyOpts = (price?.currencyOptions ?? {});
121
+ const usd = currencyOpts.USD ?? currencyOpts[Object.keys(currencyOpts)[0]];
122
+ return {
123
+ id: li.id,
124
+ variantId: li.variantId,
125
+ priceId: li.priceId,
126
+ productName: (product.name ?? ''),
127
+ variantName: (variant.name ?? ''),
128
+ quantity: (li.quantity ?? 1),
129
+ unitAmount: usd?.amount ?? 0,
130
+ totalAmount: (usd?.amount ?? 0) * (li.quantity ?? 1),
131
+ currency: (cs.selectedPresentmentCurrency ?? 'USD'),
132
+ imageUrl: (variant.imageUrl ?? ''),
133
+ };
134
+ });
135
+ const summaryItems = (summary.items ?? []);
136
+ return {
137
+ id: cs.id,
138
+ storeId: cs.storeId,
139
+ checkoutToken: cs.checkoutToken,
140
+ currency: (cs.selectedPresentmentCurrency ?? 'USD'),
141
+ items,
142
+ totals: {
143
+ subtotal: (summary.subtotalAmount ?? 0),
144
+ discount: (summary.totalPromotionAmount ?? 0),
145
+ shipping: (summary.shippingCost ?? 0),
146
+ tax: (summary.totalTaxAmount ?? 0),
147
+ total: (summary.totalAmount ?? summaryItems.reduce((s, i) => s + (i.amount ?? 0), 0)),
148
+ currency: (summary.currency ?? cs.selectedPresentmentCurrency ?? 'USD'),
149
+ },
150
+ customer: customer
151
+ ? {
152
+ id: customer.id,
153
+ email: customer.email,
154
+ firstName: customer.firstName,
155
+ lastName: customer.lastName,
156
+ }
157
+ : undefined,
158
+ shippingAddress: cs.shippingAddress,
159
+ billingAddress: cs.billingAddress,
160
+ metadata: cs.metadata,
161
+ };
162
+ }
163
+ }
164
+ //# sourceMappingURL=checkout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../../src/core/modules/checkout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { HttpClient } from '../http.js';
2
+ import type { Customer, Order, Subscription } from '../types.js';
3
+ /**
4
+ * Customer data -- profile, orders, subscriptions.
5
+ *
6
+ * Requires either an API key or a session token for authentication.
7
+ */
8
+ export declare class CustomerModule {
9
+ private readonly http;
10
+ private readonly storeId;
11
+ constructor(http: HttpClient, storeId: string);
12
+ /** Get customer profile by ID. */
13
+ getProfile(customerId: string): Promise<Customer>;
14
+ /** Get customer profile by email. */
15
+ getByEmail(email: string): Promise<Customer | null>;
16
+ /** Update customer profile fields. */
17
+ updateProfile(customerId: string, data: Partial<Pick<Customer, 'email' | 'firstName' | 'lastName' | 'phone' | 'metadata'>>): Promise<Customer>;
18
+ /** List orders for a customer. */
19
+ getOrders(customerId: string, opts?: {
20
+ limit?: number;
21
+ offset?: number;
22
+ }): Promise<{
23
+ orders: Order[];
24
+ total: number;
25
+ }>;
26
+ /** Get a single order by ID. */
27
+ getOrder(orderId: string): Promise<Order>;
28
+ /** List subscriptions for a customer. */
29
+ getSubscriptions(customerId: string): Promise<Subscription[]>;
30
+ /** Get a single subscription by ID. */
31
+ getSubscription(subscriptionId: string): Promise<Subscription>;
32
+ }
33
+ //# sourceMappingURL=customer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../../src/core/modules/customer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjE;;;;GAIG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM;IAGlC,kCAAkC;IAC5B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQvD,qCAAqC;IAC/B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAYzD,sCAAsC;IAChC,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC,CAAC,GACvF,OAAO,CAAC,QAAQ,CAAC;IAQpB,kCAAkC;IAC5B,SAAS,CACb,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACzC,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAO9C,gCAAgC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAO/C,yCAAyC;IACnC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAQnE,uCAAuC;IACjC,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAOrE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Customer data -- profile, orders, subscriptions.
3
+ *
4
+ * Requires either an API key or a session token for authentication.
5
+ */
6
+ export class CustomerModule {
7
+ constructor(http, storeId) {
8
+ this.http = http;
9
+ this.storeId = storeId;
10
+ }
11
+ /** Get customer profile by ID. */
12
+ async getProfile(customerId) {
13
+ const res = await this.http.get(`/api/v1/customers/${customerId}`, { params: { storeId: this.storeId } });
14
+ return res.customer;
15
+ }
16
+ /** Get customer profile by email. */
17
+ async getByEmail(email) {
18
+ try {
19
+ const res = await this.http.get('/api/v1/customers/by-email', { params: { email, storeId: this.storeId } });
20
+ return res.customer;
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ /** Update customer profile fields. */
27
+ async updateProfile(customerId, data) {
28
+ const res = await this.http.patch(`/api/v1/customers/${customerId}`, { storeId: this.storeId, ...data });
29
+ return res.customer;
30
+ }
31
+ /** List orders for a customer. */
32
+ async getOrders(customerId, opts) {
33
+ return this.http.get(`/api/v1/customers/${customerId}/orders`, { params: { storeId: this.storeId, limit: opts?.limit, offset: opts?.offset } });
34
+ }
35
+ /** Get a single order by ID. */
36
+ async getOrder(orderId) {
37
+ const res = await this.http.get(`/api/v1/orders/${orderId}`, {
38
+ params: { storeId: this.storeId },
39
+ });
40
+ return res.order;
41
+ }
42
+ /** List subscriptions for a customer. */
43
+ async getSubscriptions(customerId) {
44
+ const res = await this.http.get(`/api/v1/customers/${customerId}/subscriptions`, { params: { storeId: this.storeId } });
45
+ return res.subscriptions;
46
+ }
47
+ /** Get a single subscription by ID. */
48
+ async getSubscription(subscriptionId) {
49
+ const res = await this.http.get(`/api/v1/subscriptions/${subscriptionId}`, { params: { storeId: this.storeId } });
50
+ return res.subscription;
51
+ }
52
+ }
53
+ //# sourceMappingURL=customer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customer.js","sourceRoot":"","sources":["../../../src/core/modules/customer.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACzB,YACmB,IAAgB,EAChB,OAAe;QADf,SAAI,GAAJ,IAAI,CAAY;QAChB,YAAO,GAAP,OAAO,CAAQ;IAC/B,CAAC;IAEJ,kCAAkC;IAClC,KAAK,CAAC,UAAU,CAAC,UAAkB;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7B,qBAAqB,UAAU,EAAE,EACjC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CACtC,CAAC;QACF,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,UAAU,CAAC,KAAa;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7B,4BAA4B,EAC5B,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAC7C,CAAC;YACF,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,IAAwF;QAExF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAC/B,qBAAqB,UAAU,EAAE,EACjC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CACnC,CAAC;QACF,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,SAAS,CACb,UAAkB,EAClB,IAA0C;QAE1C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,qBAAqB,UAAU,SAAS,EACxC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAChF,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,kBAAkB,OAAO,EAAE,EAAE;YAC7E,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;SAClC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACvC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7B,qBAAqB,UAAU,gBAAgB,EAC/C,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CACtC,CAAC;QACF,OAAO,GAAG,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7B,yBAAyB,cAAc,EAAE,EACzC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CACtC,CAAC;QACF,OAAO,GAAG,CAAC,YAAY,CAAC;IAC1B,CAAC;CACF"}