@personizely/shopify-hydrogen 1.0.0 → 1.0.1

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 (73) hide show
  1. package/dist/index.cjs +386 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +342 -0
  4. package/dist/index.d.cts.map +1 -0
  5. package/dist/index.d.mts +342 -0
  6. package/dist/index.d.mts.map +1 -0
  7. package/dist/index.mjs +264 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/package.json +13 -4
  10. package/dist/classes/Adapter.d.ts +0 -33
  11. package/dist/classes/Adapter.d.ts.map +0 -1
  12. package/dist/classes/Adapter.js +0 -126
  13. package/dist/classes/Adapter.js.map +0 -1
  14. package/dist/classes/Cart.d.ts +0 -29
  15. package/dist/classes/Cart.d.ts.map +0 -1
  16. package/dist/classes/Cart.js +0 -272
  17. package/dist/classes/Cart.js.map +0 -1
  18. package/dist/components/PersonizelyProvider.d.ts +0 -36
  19. package/dist/components/PersonizelyProvider.d.ts.map +0 -1
  20. package/dist/components/PersonizelyProvider.js +0 -118
  21. package/dist/components/PersonizelyProvider.js.map +0 -1
  22. package/dist/graphql/queries/cart.d.ts +0 -7
  23. package/dist/graphql/queries/cart.d.ts.map +0 -1
  24. package/dist/graphql/queries/cart.js +0 -142
  25. package/dist/graphql/queries/cart.js.map +0 -1
  26. package/dist/graphql/queries/customer.d.ts +0 -5
  27. package/dist/graphql/queries/customer.d.ts.map +0 -1
  28. package/dist/graphql/queries/customer.js +0 -72
  29. package/dist/graphql/queries/customer.js.map +0 -1
  30. package/dist/graphql/queries/product.d.ts +0 -5
  31. package/dist/graphql/queries/product.d.ts.map +0 -1
  32. package/dist/graphql/queries/product.js +0 -114
  33. package/dist/graphql/queries/product.js.map +0 -1
  34. package/dist/hooks/useCartAdd.d.ts +0 -3
  35. package/dist/hooks/useCartAdd.d.ts.map +0 -1
  36. package/dist/hooks/useCartAdd.js +0 -18
  37. package/dist/hooks/useCartAdd.js.map +0 -1
  38. package/dist/hooks/useCheckout.d.ts +0 -2
  39. package/dist/hooks/useCheckout.d.ts.map +0 -1
  40. package/dist/hooks/useCheckout.js +0 -12
  41. package/dist/hooks/useCheckout.js.map +0 -1
  42. package/dist/hooks/usePageContext.d.ts +0 -3
  43. package/dist/hooks/usePageContext.d.ts.map +0 -1
  44. package/dist/hooks/usePageContext.js +0 -6
  45. package/dist/hooks/usePageContext.js.map +0 -1
  46. package/dist/hooks/usePersonizely.d.ts +0 -3
  47. package/dist/hooks/usePersonizely.d.ts.map +0 -1
  48. package/dist/hooks/usePersonizely.js +0 -11
  49. package/dist/hooks/usePersonizely.js.map +0 -1
  50. package/dist/index.d.ts +0 -10
  51. package/dist/index.d.ts.map +0 -1
  52. package/dist/index.js +0 -8
  53. package/dist/index.js.map +0 -1
  54. package/dist/types/index.d.ts +0 -170
  55. package/dist/types/index.d.ts.map +0 -1
  56. package/dist/types/index.js +0 -2
  57. package/dist/types/index.js.map +0 -1
  58. package/dist/types/interfaces.d.ts +0 -35
  59. package/dist/types/interfaces.d.ts.map +0 -1
  60. package/dist/types/interfaces.js +0 -2
  61. package/dist/types/interfaces.js.map +0 -1
  62. package/dist/utils/cookies.d.ts +0 -4
  63. package/dist/utils/cookies.d.ts.map +0 -1
  64. package/dist/utils/cookies.js +0 -33
  65. package/dist/utils/cookies.js.map +0 -1
  66. package/dist/utils/id.d.ts +0 -3
  67. package/dist/utils/id.d.ts.map +0 -1
  68. package/dist/utils/id.js +0 -7
  69. package/dist/utils/id.js.map +0 -1
  70. package/dist/utils/storefront-client.d.ts +0 -15
  71. package/dist/utils/storefront-client.d.ts.map +0 -1
  72. package/dist/utils/storefront-client.js +0 -39
  73. package/dist/utils/storefront-client.js.map +0 -1
@@ -0,0 +1,342 @@
1
+ import React, { ReactNode } from "react";
2
+ import { CartReturn } from "@shopify/hydrogen";
3
+
4
+ //#region src/types/interfaces.d.ts
5
+ interface ICart {
6
+ isSynced(): boolean;
7
+ onChange(callback: (cart: CartData) => void): () => void;
8
+ fetch(force?: boolean): Promise<CartData | null>;
9
+ update(action: string, data: any): Promise<void>;
10
+ buy(variantId: string, quantity?: number): void;
11
+ get(property?: string): any;
12
+ getToken(): string | null;
13
+ getItemsIds(): string[];
14
+ getValue(currency?: string): number;
15
+ getSize(distinct?: boolean): number;
16
+ fetchCollections(force?: boolean): Promise<any>;
17
+ applyCoupon(code: string, expiresIn?: number): Promise<void>;
18
+ getCoupon(): string | null;
19
+ }
20
+ interface IShopifyAdapter {
21
+ fetchProduct(handle: string): Promise<ProductData>;
22
+ fetchProductCollections(handle: string, productId: number): Promise<any>;
23
+ fetchRecommendations(productId: number, intent: string): Promise<{
24
+ products: ProductData[];
25
+ intent: string;
26
+ }>;
27
+ buildProductPath(params: {
28
+ handle: string;
29
+ }): string;
30
+ convertToBaseCurrency(amount: number): number;
31
+ convertFromBaseCurrency(amount: number): number;
32
+ formatMoney(amount: number, includeDecimals: boolean): string;
33
+ getCustomer(): Promise<Customer | null>;
34
+ getPageContext(): PageContext;
35
+ getVisitorId(): string | null;
36
+ getMarket(): string | null;
37
+ }
38
+ //#endregion
39
+ //#region src/types/index.d.ts
40
+ type ProductData = {
41
+ id: number;
42
+ handle: string;
43
+ title: string;
44
+ available: boolean;
45
+ requires_selling_plan: boolean;
46
+ images: string[];
47
+ variants: ProductDataVariant[];
48
+ };
49
+ type ProductDataVariant = {
50
+ id: number;
51
+ title: string;
52
+ available: boolean;
53
+ price: number;
54
+ compare_at_price: number | null;
55
+ featured_image: {
56
+ src: string;
57
+ } | null;
58
+ selling_plan_allocations: Array<{
59
+ selling_plan_id: string;
60
+ }>;
61
+ };
62
+ type Product = {
63
+ id: string;
64
+ handle: string;
65
+ title: string;
66
+ description: string;
67
+ descriptionHtml: string;
68
+ variants: {
69
+ nodes: Variant[];
70
+ };
71
+ images: {
72
+ nodes: Image[];
73
+ };
74
+ featuredImage?: Image | null;
75
+ priceRange: PriceRange;
76
+ tags: string[];
77
+ productType: string;
78
+ vendor: string;
79
+ collections: {
80
+ nodes: Collection[];
81
+ };
82
+ requiresSellingPlan: boolean;
83
+ availableForSale: boolean;
84
+ options: ProductOption[];
85
+ };
86
+ type Variant = {
87
+ id: string;
88
+ title: string;
89
+ price: Money;
90
+ compareAtPrice?: Money | null;
91
+ availableForSale: boolean;
92
+ sellingPlanAllocations: {
93
+ edges: Array<{
94
+ node: {
95
+ sellingPlan: {
96
+ id: string;
97
+ };
98
+ };
99
+ }>;
100
+ };
101
+ selectedOptions: SelectedOption[];
102
+ image?: Image | null;
103
+ sku?: string | null;
104
+ quantityAvailable?: number;
105
+ };
106
+ type Image = {
107
+ id?: string;
108
+ url: string;
109
+ altText?: string | null;
110
+ width?: number;
111
+ height?: number;
112
+ };
113
+ type Money = {
114
+ amount: string;
115
+ currencyCode: string;
116
+ };
117
+ type PriceRange = {
118
+ minVariantPrice: Money;
119
+ maxVariantPrice: Money;
120
+ };
121
+ type ProductOption = {
122
+ id?: string;
123
+ name: string;
124
+ values: string[];
125
+ };
126
+ type SelectedOption = {
127
+ name: string;
128
+ value: string;
129
+ };
130
+ type Collection = {
131
+ id: string;
132
+ handle: string;
133
+ title: string;
134
+ description?: string;
135
+ };
136
+ type CartData = {
137
+ token: string;
138
+ item_count: number;
139
+ items: CartDataItem[];
140
+ total_price: number;
141
+ discount_codes?: DiscountCode[];
142
+ attributes?: Record<string, any>;
143
+ note?: string | null;
144
+ };
145
+ type CartDataItem = {
146
+ id: number;
147
+ quantity: number;
148
+ product_id: number;
149
+ variant_id: number;
150
+ price: number;
151
+ };
152
+ type DiscountCode = {
153
+ code: string;
154
+ applicable: boolean;
155
+ };
156
+ type Customer = {
157
+ id: string;
158
+ email?: string | null;
159
+ phone?: string | null;
160
+ firstName?: string | null;
161
+ lastName?: string | null;
162
+ displayName: string;
163
+ hasAccount: boolean;
164
+ tags: string[];
165
+ };
166
+ type PageContext = {
167
+ pageType?: string | number;
168
+ product?: {
169
+ handle: string;
170
+ id: number;
171
+ tags?: string[];
172
+ } | null;
173
+ collection?: {
174
+ id: number;
175
+ } | null;
176
+ };
177
+ type CartAddProduct = {
178
+ id: string | number;
179
+ variantId: string | number;
180
+ price?: string | number;
181
+ quantity?: number;
182
+ handle?: string;
183
+ properties?: Record<string, string>;
184
+ };
185
+ type PersonizelyConfigMethods = {
186
+ formatMoney: (amount: number, includeDecimals: boolean) => string;
187
+ builtProductPath?: ({
188
+ handle
189
+ }: {
190
+ handle: string;
191
+ }) => string;
192
+ };
193
+ type PersonizelyConfig = {
194
+ locale?: string;
195
+ currency?: {
196
+ rate?: number;
197
+ active?: string;
198
+ base?: string;
199
+ };
200
+ market?: string;
201
+ methods?: PersonizelyConfigMethods;
202
+ };
203
+ type HydrogenConfig = {
204
+ cart: ICart;
205
+ adapter: IShopifyAdapter;
206
+ onCartAdd: (callback: (product: CartAddProduct) => Promise<boolean>) => () => void;
207
+ onCheckout: (callback: () => Promise<boolean>) => () => void;
208
+ };
209
+ //#endregion
210
+ //#region src/utils/storefront-client.d.ts
211
+ type StorefrontClientConfig = {
212
+ storefrontAccessToken: string;
213
+ shopDomain: string;
214
+ apiVersion?: string;
215
+ };
216
+ declare class StorefrontClient {
217
+ private storefrontAccessToken;
218
+ private shopDomain;
219
+ private apiVersion;
220
+ private endpoint;
221
+ constructor(config: StorefrontClientConfig);
222
+ query<T = any>(query: string, variables?: Record<string, any>): Promise<T>;
223
+ mutate<T = any>(mutation: string, variables?: Record<string, any>): Promise<T>;
224
+ }
225
+ //#endregion
226
+ //#region src/classes/Cart.d.ts
227
+ declare class Cart implements ICart {
228
+ private storefrontClient;
229
+ private listeners;
230
+ private cart;
231
+ private cartPromise;
232
+ private revalidate?;
233
+ constructor(cartPromise: Promise<CartReturn>, storefrontClient: StorefrontClient, revalidate?: () => void);
234
+ updateCartData(cart: CartReturn): void;
235
+ notifyListeners(): void;
236
+ isSynced(): boolean;
237
+ onChange(callback: (cart: CartData) => void): () => void;
238
+ fetch(force?: boolean): Promise<CartData | null>;
239
+ update(action: string, data: any): Promise<void>;
240
+ buy(_variantId: string, _quantity?: number): Promise<void>;
241
+ get(property?: string): any;
242
+ getToken(): string | null;
243
+ getItemsIds(): string[];
244
+ getCurrency(): string;
245
+ getValue(_currency?: string): number;
246
+ getSize(distinct?: boolean): number;
247
+ fetchCollections(_force?: boolean): Promise<any>;
248
+ applyCoupon(code: string, expiresIn?: number): Promise<void>;
249
+ getCoupon(): string | null;
250
+ private toCartData;
251
+ }
252
+ //#endregion
253
+ //#region src/classes/Adapter.d.ts
254
+ declare class Adapter implements IShopifyAdapter {
255
+ private client;
256
+ private currency;
257
+ private market;
258
+ private locale;
259
+ private pageContext;
260
+ private methods?;
261
+ private customerAccessToken;
262
+ constructor(config: PersonizelyConfig, storefrontClient: StorefrontClient);
263
+ setCustomerAccessToken(token: string | null): void;
264
+ fetchProduct(handle: string): Promise<ProductData>;
265
+ fetchProductCollections(handle: string, productId: number): Promise<number[]>;
266
+ fetchRecommendations(productId: number, intent: string): Promise<{
267
+ products: ProductData[];
268
+ intent: string;
269
+ }>;
270
+ buildProductPath(product: {
271
+ handle: string;
272
+ }): string;
273
+ convertToBaseCurrency(amount: number): number;
274
+ convertFromBaseCurrency(amount: number): number;
275
+ formatMoney(amount: number, includeDecimals?: boolean): string;
276
+ getCustomer(): Promise<Customer | null>;
277
+ getPageContext(): PageContext;
278
+ setPageContext(context: Partial<PageContext>): void;
279
+ getVisitorId(): string | null;
280
+ getMarket(): string | null;
281
+ getCurrencyRate(): number;
282
+ toProductData(product: Product): ProductData;
283
+ }
284
+ //#endregion
285
+ //#region src/components/PersonizelyProvider.d.ts
286
+ declare global {
287
+ interface Window {
288
+ __PLY_HYDROGEN_CONFIG__?: HydrogenConfig;
289
+ }
290
+ }
291
+ type PersonizelyContextType = {
292
+ cart: Cart;
293
+ adapter: Adapter;
294
+ websiteApiKey: string;
295
+ triggerCartAdd: (product: CartAddProduct) => Promise<boolean>;
296
+ triggerCheckout: () => Promise<boolean>;
297
+ };
298
+ type PersonizelyProviderProps = {
299
+ websiteApiKey: string;
300
+ storefrontAccessToken: string;
301
+ shopDomain: string;
302
+ apiVersion?: string;
303
+ scriptBaseUrl?: string;
304
+ locale?: string;
305
+ currency?: {
306
+ rate: number;
307
+ active: string;
308
+ base: string;
309
+ };
310
+ market?: string;
311
+ methods?: PersonizelyConfigMethods;
312
+ children: ReactNode;
313
+ customerAccessToken?: string | null;
314
+ };
315
+ declare function PersonizelyProvider({
316
+ websiteApiKey,
317
+ storefrontAccessToken,
318
+ shopDomain,
319
+ locale,
320
+ currency,
321
+ market,
322
+ apiVersion,
323
+ scriptBaseUrl,
324
+ methods,
325
+ children,
326
+ customerAccessToken
327
+ }: PersonizelyProviderProps): React.JSX.Element;
328
+ //#endregion
329
+ //#region src/hooks/usePersonizely.d.ts
330
+ declare function usePersonizely(): PersonizelyContextType;
331
+ //#endregion
332
+ //#region src/hooks/useCartAdd.d.ts
333
+ declare function useCartAdd(): (product: CartAddProduct) => Promise<boolean>;
334
+ //#endregion
335
+ //#region src/hooks/useCheckout.d.ts
336
+ declare function useCheckout(): () => Promise<boolean>;
337
+ //#endregion
338
+ //#region src/hooks/usePageContext.d.ts
339
+ declare function usePageContext(context: Partial<PageContext>): void;
340
+ //#endregion
341
+ export { Adapter, Cart, type CartAddProduct, type HydrogenConfig, type ICart, type IShopifyAdapter, type PageContext, type PersonizelyConfig, type PersonizelyContextType, PersonizelyProvider, type PersonizelyProviderProps, useCartAdd, useCheckout, usePageContext, usePersonizely };
342
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types/interfaces.ts","../src/types/index.ts","../src/utils/storefront-client.ts","../src/classes/Cart.ts","../src/classes/Adapter.ts","../src/components/PersonizelyProvider.tsx","../src/hooks/usePersonizely.ts","../src/hooks/useCartAdd.ts","../src/hooks/useCheckout.ts","../src/hooks/usePageContext.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,342 @@
1
+ import React, { ReactNode } from "react";
2
+ import { CartReturn } from "@shopify/hydrogen";
3
+
4
+ //#region src/types/interfaces.d.ts
5
+ interface ICart {
6
+ isSynced(): boolean;
7
+ onChange(callback: (cart: CartData) => void): () => void;
8
+ fetch(force?: boolean): Promise<CartData | null>;
9
+ update(action: string, data: any): Promise<void>;
10
+ buy(variantId: string, quantity?: number): void;
11
+ get(property?: string): any;
12
+ getToken(): string | null;
13
+ getItemsIds(): string[];
14
+ getValue(currency?: string): number;
15
+ getSize(distinct?: boolean): number;
16
+ fetchCollections(force?: boolean): Promise<any>;
17
+ applyCoupon(code: string, expiresIn?: number): Promise<void>;
18
+ getCoupon(): string | null;
19
+ }
20
+ interface IShopifyAdapter {
21
+ fetchProduct(handle: string): Promise<ProductData>;
22
+ fetchProductCollections(handle: string, productId: number): Promise<any>;
23
+ fetchRecommendations(productId: number, intent: string): Promise<{
24
+ products: ProductData[];
25
+ intent: string;
26
+ }>;
27
+ buildProductPath(params: {
28
+ handle: string;
29
+ }): string;
30
+ convertToBaseCurrency(amount: number): number;
31
+ convertFromBaseCurrency(amount: number): number;
32
+ formatMoney(amount: number, includeDecimals: boolean): string;
33
+ getCustomer(): Promise<Customer | null>;
34
+ getPageContext(): PageContext;
35
+ getVisitorId(): string | null;
36
+ getMarket(): string | null;
37
+ }
38
+ //#endregion
39
+ //#region src/types/index.d.ts
40
+ type ProductData = {
41
+ id: number;
42
+ handle: string;
43
+ title: string;
44
+ available: boolean;
45
+ requires_selling_plan: boolean;
46
+ images: string[];
47
+ variants: ProductDataVariant[];
48
+ };
49
+ type ProductDataVariant = {
50
+ id: number;
51
+ title: string;
52
+ available: boolean;
53
+ price: number;
54
+ compare_at_price: number | null;
55
+ featured_image: {
56
+ src: string;
57
+ } | null;
58
+ selling_plan_allocations: Array<{
59
+ selling_plan_id: string;
60
+ }>;
61
+ };
62
+ type Product = {
63
+ id: string;
64
+ handle: string;
65
+ title: string;
66
+ description: string;
67
+ descriptionHtml: string;
68
+ variants: {
69
+ nodes: Variant[];
70
+ };
71
+ images: {
72
+ nodes: Image[];
73
+ };
74
+ featuredImage?: Image | null;
75
+ priceRange: PriceRange;
76
+ tags: string[];
77
+ productType: string;
78
+ vendor: string;
79
+ collections: {
80
+ nodes: Collection[];
81
+ };
82
+ requiresSellingPlan: boolean;
83
+ availableForSale: boolean;
84
+ options: ProductOption[];
85
+ };
86
+ type Variant = {
87
+ id: string;
88
+ title: string;
89
+ price: Money;
90
+ compareAtPrice?: Money | null;
91
+ availableForSale: boolean;
92
+ sellingPlanAllocations: {
93
+ edges: Array<{
94
+ node: {
95
+ sellingPlan: {
96
+ id: string;
97
+ };
98
+ };
99
+ }>;
100
+ };
101
+ selectedOptions: SelectedOption[];
102
+ image?: Image | null;
103
+ sku?: string | null;
104
+ quantityAvailable?: number;
105
+ };
106
+ type Image = {
107
+ id?: string;
108
+ url: string;
109
+ altText?: string | null;
110
+ width?: number;
111
+ height?: number;
112
+ };
113
+ type Money = {
114
+ amount: string;
115
+ currencyCode: string;
116
+ };
117
+ type PriceRange = {
118
+ minVariantPrice: Money;
119
+ maxVariantPrice: Money;
120
+ };
121
+ type ProductOption = {
122
+ id?: string;
123
+ name: string;
124
+ values: string[];
125
+ };
126
+ type SelectedOption = {
127
+ name: string;
128
+ value: string;
129
+ };
130
+ type Collection = {
131
+ id: string;
132
+ handle: string;
133
+ title: string;
134
+ description?: string;
135
+ };
136
+ type CartData = {
137
+ token: string;
138
+ item_count: number;
139
+ items: CartDataItem[];
140
+ total_price: number;
141
+ discount_codes?: DiscountCode[];
142
+ attributes?: Record<string, any>;
143
+ note?: string | null;
144
+ };
145
+ type CartDataItem = {
146
+ id: number;
147
+ quantity: number;
148
+ product_id: number;
149
+ variant_id: number;
150
+ price: number;
151
+ };
152
+ type DiscountCode = {
153
+ code: string;
154
+ applicable: boolean;
155
+ };
156
+ type Customer = {
157
+ id: string;
158
+ email?: string | null;
159
+ phone?: string | null;
160
+ firstName?: string | null;
161
+ lastName?: string | null;
162
+ displayName: string;
163
+ hasAccount: boolean;
164
+ tags: string[];
165
+ };
166
+ type PageContext = {
167
+ pageType?: string | number;
168
+ product?: {
169
+ handle: string;
170
+ id: number;
171
+ tags?: string[];
172
+ } | null;
173
+ collection?: {
174
+ id: number;
175
+ } | null;
176
+ };
177
+ type CartAddProduct = {
178
+ id: string | number;
179
+ variantId: string | number;
180
+ price?: string | number;
181
+ quantity?: number;
182
+ handle?: string;
183
+ properties?: Record<string, string>;
184
+ };
185
+ type PersonizelyConfigMethods = {
186
+ formatMoney: (amount: number, includeDecimals: boolean) => string;
187
+ builtProductPath?: ({
188
+ handle
189
+ }: {
190
+ handle: string;
191
+ }) => string;
192
+ };
193
+ type PersonizelyConfig = {
194
+ locale?: string;
195
+ currency?: {
196
+ rate?: number;
197
+ active?: string;
198
+ base?: string;
199
+ };
200
+ market?: string;
201
+ methods?: PersonizelyConfigMethods;
202
+ };
203
+ type HydrogenConfig = {
204
+ cart: ICart;
205
+ adapter: IShopifyAdapter;
206
+ onCartAdd: (callback: (product: CartAddProduct) => Promise<boolean>) => () => void;
207
+ onCheckout: (callback: () => Promise<boolean>) => () => void;
208
+ };
209
+ //#endregion
210
+ //#region src/utils/storefront-client.d.ts
211
+ type StorefrontClientConfig = {
212
+ storefrontAccessToken: string;
213
+ shopDomain: string;
214
+ apiVersion?: string;
215
+ };
216
+ declare class StorefrontClient {
217
+ private storefrontAccessToken;
218
+ private shopDomain;
219
+ private apiVersion;
220
+ private endpoint;
221
+ constructor(config: StorefrontClientConfig);
222
+ query<T = any>(query: string, variables?: Record<string, any>): Promise<T>;
223
+ mutate<T = any>(mutation: string, variables?: Record<string, any>): Promise<T>;
224
+ }
225
+ //#endregion
226
+ //#region src/classes/Cart.d.ts
227
+ declare class Cart implements ICart {
228
+ private storefrontClient;
229
+ private listeners;
230
+ private cart;
231
+ private cartPromise;
232
+ private revalidate?;
233
+ constructor(cartPromise: Promise<CartReturn>, storefrontClient: StorefrontClient, revalidate?: () => void);
234
+ updateCartData(cart: CartReturn): void;
235
+ notifyListeners(): void;
236
+ isSynced(): boolean;
237
+ onChange(callback: (cart: CartData) => void): () => void;
238
+ fetch(force?: boolean): Promise<CartData | null>;
239
+ update(action: string, data: any): Promise<void>;
240
+ buy(_variantId: string, _quantity?: number): Promise<void>;
241
+ get(property?: string): any;
242
+ getToken(): string | null;
243
+ getItemsIds(): string[];
244
+ getCurrency(): string;
245
+ getValue(_currency?: string): number;
246
+ getSize(distinct?: boolean): number;
247
+ fetchCollections(_force?: boolean): Promise<any>;
248
+ applyCoupon(code: string, expiresIn?: number): Promise<void>;
249
+ getCoupon(): string | null;
250
+ private toCartData;
251
+ }
252
+ //#endregion
253
+ //#region src/classes/Adapter.d.ts
254
+ declare class Adapter implements IShopifyAdapter {
255
+ private client;
256
+ private currency;
257
+ private market;
258
+ private locale;
259
+ private pageContext;
260
+ private methods?;
261
+ private customerAccessToken;
262
+ constructor(config: PersonizelyConfig, storefrontClient: StorefrontClient);
263
+ setCustomerAccessToken(token: string | null): void;
264
+ fetchProduct(handle: string): Promise<ProductData>;
265
+ fetchProductCollections(handle: string, productId: number): Promise<number[]>;
266
+ fetchRecommendations(productId: number, intent: string): Promise<{
267
+ products: ProductData[];
268
+ intent: string;
269
+ }>;
270
+ buildProductPath(product: {
271
+ handle: string;
272
+ }): string;
273
+ convertToBaseCurrency(amount: number): number;
274
+ convertFromBaseCurrency(amount: number): number;
275
+ formatMoney(amount: number, includeDecimals?: boolean): string;
276
+ getCustomer(): Promise<Customer | null>;
277
+ getPageContext(): PageContext;
278
+ setPageContext(context: Partial<PageContext>): void;
279
+ getVisitorId(): string | null;
280
+ getMarket(): string | null;
281
+ getCurrencyRate(): number;
282
+ toProductData(product: Product): ProductData;
283
+ }
284
+ //#endregion
285
+ //#region src/components/PersonizelyProvider.d.ts
286
+ declare global {
287
+ interface Window {
288
+ __PLY_HYDROGEN_CONFIG__?: HydrogenConfig;
289
+ }
290
+ }
291
+ type PersonizelyContextType = {
292
+ cart: Cart;
293
+ adapter: Adapter;
294
+ websiteApiKey: string;
295
+ triggerCartAdd: (product: CartAddProduct) => Promise<boolean>;
296
+ triggerCheckout: () => Promise<boolean>;
297
+ };
298
+ type PersonizelyProviderProps = {
299
+ websiteApiKey: string;
300
+ storefrontAccessToken: string;
301
+ shopDomain: string;
302
+ apiVersion?: string;
303
+ scriptBaseUrl?: string;
304
+ locale?: string;
305
+ currency?: {
306
+ rate: number;
307
+ active: string;
308
+ base: string;
309
+ };
310
+ market?: string;
311
+ methods?: PersonizelyConfigMethods;
312
+ children: ReactNode;
313
+ customerAccessToken?: string | null;
314
+ };
315
+ declare function PersonizelyProvider({
316
+ websiteApiKey,
317
+ storefrontAccessToken,
318
+ shopDomain,
319
+ locale,
320
+ currency,
321
+ market,
322
+ apiVersion,
323
+ scriptBaseUrl,
324
+ methods,
325
+ children,
326
+ customerAccessToken
327
+ }: PersonizelyProviderProps): React.JSX.Element;
328
+ //#endregion
329
+ //#region src/hooks/usePersonizely.d.ts
330
+ declare function usePersonizely(): PersonizelyContextType;
331
+ //#endregion
332
+ //#region src/hooks/useCartAdd.d.ts
333
+ declare function useCartAdd(): (product: CartAddProduct) => Promise<boolean>;
334
+ //#endregion
335
+ //#region src/hooks/useCheckout.d.ts
336
+ declare function useCheckout(): () => Promise<boolean>;
337
+ //#endregion
338
+ //#region src/hooks/usePageContext.d.ts
339
+ declare function usePageContext(context: Partial<PageContext>): void;
340
+ //#endregion
341
+ export { Adapter, Cart, type CartAddProduct, type HydrogenConfig, type ICart, type IShopifyAdapter, type PageContext, type PersonizelyConfig, type PersonizelyContextType, PersonizelyProvider, type PersonizelyProviderProps, useCartAdd, useCheckout, usePageContext, usePersonizely };
342
+ //# sourceMappingURL=index.d.mts.map