@shopify/hydrogen-react 2022.10.5 → 2022.10.6

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 (43) hide show
  1. package/dist/browser-dev/CartProvider.mjs +5 -109
  2. package/dist/browser-dev/CartProvider.mjs.map +1 -1
  3. package/dist/browser-dev/cart-queries.mjs +207 -59
  4. package/dist/browser-dev/cart-queries.mjs.map +1 -1
  5. package/dist/browser-dev/useCartAPIStateMachine.mjs +6 -3
  6. package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
  7. package/dist/browser-prod/CartProvider.mjs +5 -109
  8. package/dist/browser-prod/CartProvider.mjs.map +1 -1
  9. package/dist/browser-prod/cart-queries.mjs +207 -59
  10. package/dist/browser-prod/cart-queries.mjs.map +1 -1
  11. package/dist/browser-prod/useCartAPIStateMachine.mjs +6 -3
  12. package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
  13. package/dist/node-dev/CartProvider.js +6 -110
  14. package/dist/node-dev/CartProvider.js.map +1 -1
  15. package/dist/node-dev/CartProvider.mjs +5 -109
  16. package/dist/node-dev/CartProvider.mjs.map +1 -1
  17. package/dist/node-dev/cart-queries.js +206 -58
  18. package/dist/node-dev/cart-queries.js.map +1 -1
  19. package/dist/node-dev/cart-queries.mjs +207 -59
  20. package/dist/node-dev/cart-queries.mjs.map +1 -1
  21. package/dist/node-dev/useCartAPIStateMachine.js +6 -3
  22. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  23. package/dist/node-dev/useCartAPIStateMachine.mjs +6 -3
  24. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
  25. package/dist/node-prod/CartProvider.js +6 -110
  26. package/dist/node-prod/CartProvider.js.map +1 -1
  27. package/dist/node-prod/CartProvider.mjs +5 -109
  28. package/dist/node-prod/CartProvider.mjs.map +1 -1
  29. package/dist/node-prod/cart-queries.js +206 -58
  30. package/dist/node-prod/cart-queries.js.map +1 -1
  31. package/dist/node-prod/cart-queries.mjs +207 -59
  32. package/dist/node-prod/cart-queries.mjs.map +1 -1
  33. package/dist/node-prod/useCartAPIStateMachine.js +6 -3
  34. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  35. package/dist/node-prod/useCartAPIStateMachine.mjs +6 -3
  36. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
  37. package/dist/types/CartProvider.d.ts +0 -1
  38. package/dist/types/cart-queries.d.ts +1 -1
  39. package/dist/umd/hydrogen-react.dev.js +216 -170
  40. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  41. package/dist/umd/hydrogen-react.prod.js +195 -148
  42. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  43. package/package.json +3 -8
@@ -1,104 +1,251 @@
1
1
  const CartLineAdd = (cartFragment) => `
2
- mutation CartLineAdd($cartId: ID!, $lines: [CartLineInput!]!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {
3
- cartLinesAdd(cartId: $cartId, lines: $lines) {
4
- cart {
5
- ...CartFragment
2
+ mutation CartLineAdd(
3
+ $cartId: ID!
4
+ $lines: [CartLineInput!]!
5
+ $numCartLines: Int = 250
6
+ $country: CountryCode = ZZ
7
+ ) @inContext(country: $country) {
8
+ cartLinesAdd(cartId: $cartId, lines: $lines) {
9
+ cart {
10
+ ...CartFragment
11
+ }
6
12
  }
7
13
  }
8
- }
9
14
 
10
- ${cartFragment}
15
+ ${cartFragment}
11
16
  `;
12
17
  const CartCreate = (cartFragment) => `
13
- mutation CartCreate($input: CartInput!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {
14
- cartCreate(input: $input) {
15
- cart {
16
- ...CartFragment
18
+ mutation CartCreate(
19
+ $input: CartInput!
20
+ $numCartLines: Int = 250
21
+ $country: CountryCode = ZZ
22
+ ) @inContext(country: $country) {
23
+ cartCreate(input: $input) {
24
+ cart {
25
+ ...CartFragment
26
+ }
17
27
  }
18
28
  }
19
- }
20
29
 
21
- ${cartFragment}
30
+ ${cartFragment}
22
31
  `;
23
32
  const CartLineRemove = (cartFragment) => `
24
- mutation CartLineRemove($cartId: ID!, $lines: [ID!]!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {
25
- cartLinesRemove(cartId: $cartId, lineIds: $lines) {
26
- cart {
27
- ...CartFragment
33
+ mutation CartLineRemove(
34
+ $cartId: ID!
35
+ $lines: [ID!]!
36
+ $numCartLines: Int = 250
37
+ $country: CountryCode = ZZ
38
+ ) @inContext(country: $country) {
39
+ cartLinesRemove(cartId: $cartId, lineIds: $lines) {
40
+ cart {
41
+ ...CartFragment
42
+ }
28
43
  }
29
44
  }
30
- }
31
45
 
32
- ${cartFragment}
46
+ ${cartFragment}
33
47
  `;
34
48
  const CartLineUpdate = (cartFragment) => `
35
- mutation CartLineUpdate($cartId: ID!, $lines: [CartLineUpdateInput!]!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {
36
- cartLinesUpdate(cartId: $cartId, lines: $lines) {
37
- cart {
38
- ...CartFragment
49
+ mutation CartLineUpdate(
50
+ $cartId: ID!
51
+ $lines: [CartLineUpdateInput!]!
52
+ $numCartLines: Int = 250
53
+ $country: CountryCode = ZZ
54
+ ) @inContext(country: $country) {
55
+ cartLinesUpdate(cartId: $cartId, lines: $lines) {
56
+ cart {
57
+ ...CartFragment
58
+ }
39
59
  }
40
60
  }
41
- }
42
61
 
43
- ${cartFragment}
62
+ ${cartFragment}
44
63
  `;
45
64
  const CartNoteUpdate = (cartFragment) => `
46
- mutation CartNoteUpdate($cartId: ID!, $note: String, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {
47
- cartNoteUpdate(cartId: $cartId, note: $note) {
48
- cart {
49
- ...CartFragment
65
+ mutation CartNoteUpdate(
66
+ $cartId: ID!
67
+ $note: String
68
+ $numCartLines: Int = 250
69
+ $country: CountryCode = ZZ
70
+ ) @inContext(country: $country) {
71
+ cartNoteUpdate(cartId: $cartId, note: $note) {
72
+ cart {
73
+ ...CartFragment
74
+ }
50
75
  }
51
76
  }
52
- }
53
77
 
54
- ${cartFragment}
78
+ ${cartFragment}
55
79
  `;
56
80
  const CartBuyerIdentityUpdate = (cartFragment) => `
57
- mutation CartBuyerIdentityUpdate(
58
- $cartId: ID!
59
- $buyerIdentity: CartBuyerIdentityInput!
60
- $numCartLines: Int = 250
61
- $country: CountryCode = ZZ
62
- ) @inContext(country: $country) {
63
- cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {
64
- cart {
65
- ...CartFragment
81
+ mutation CartBuyerIdentityUpdate(
82
+ $cartId: ID!
83
+ $buyerIdentity: CartBuyerIdentityInput!
84
+ $numCartLines: Int = 250
85
+ $country: CountryCode = ZZ
86
+ ) @inContext(country: $country) {
87
+ cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {
88
+ cart {
89
+ ...CartFragment
90
+ }
66
91
  }
67
92
  }
68
- }
69
93
 
70
- ${cartFragment}
94
+ ${cartFragment}
71
95
  `;
72
96
  const CartAttributesUpdate = (cartFragment) => `
73
- mutation CartAttributesUpdate($attributes: [AttributeInput!]!, $cartId: ID!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {
74
- cartAttributesUpdate(attributes: $attributes, cartId: $cartId) {
75
- cart {
76
- ...CartFragment
97
+ mutation CartAttributesUpdate(
98
+ $attributes: [AttributeInput!]!
99
+ $cartId: ID!
100
+ $numCartLines: Int = 250
101
+ $country: CountryCode = ZZ
102
+ ) @inContext(country: $country) {
103
+ cartAttributesUpdate(attributes: $attributes, cartId: $cartId) {
104
+ cart {
105
+ ...CartFragment
106
+ }
77
107
  }
78
108
  }
79
- }
80
109
 
81
- ${cartFragment}
110
+ ${cartFragment}
82
111
  `;
83
112
  const CartDiscountCodesUpdate = (cartFragment) => `
84
- mutation CartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!], $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {
85
- cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {
86
- cart {
87
- ...CartFragment
113
+ mutation CartDiscountCodesUpdate(
114
+ $cartId: ID!
115
+ $discountCodes: [String!]
116
+ $numCartLines: Int = 250
117
+ $country: CountryCode = ZZ
118
+ ) @inContext(country: $country) {
119
+ cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {
120
+ cart {
121
+ ...CartFragment
122
+ }
88
123
  }
89
124
  }
90
- }
91
125
 
92
- ${cartFragment}
126
+ ${cartFragment}
93
127
  `;
94
128
  const CartQuery = (cartFragment) => `
95
- query CartQuery($id: ID!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {
96
- cart(id: $id) {
97
- ...CartFragment
129
+ query CartQuery(
130
+ $id: ID!
131
+ $numCartLines: Int = 250
132
+ $country: CountryCode = ZZ
133
+ ) @inContext(country: $country) {
134
+ cart(id: $id) {
135
+ ...CartFragment
136
+ }
98
137
  }
99
- }
100
138
 
101
- ${cartFragment}
139
+ ${cartFragment}
140
+ `;
141
+ const defaultCartFragment = `
142
+ fragment CartFragment on Cart {
143
+ id
144
+ checkoutUrl
145
+ totalQuantity
146
+ buyerIdentity {
147
+ countryCode
148
+ customer {
149
+ id
150
+ email
151
+ firstName
152
+ lastName
153
+ displayName
154
+ }
155
+ email
156
+ phone
157
+ }
158
+ lines(first: $numCartLines) {
159
+ edges {
160
+ node {
161
+ id
162
+ quantity
163
+ attributes {
164
+ key
165
+ value
166
+ }
167
+ cost {
168
+ totalAmount {
169
+ amount
170
+ currencyCode
171
+ }
172
+ compareAtAmountPerQuantity {
173
+ amount
174
+ currencyCode
175
+ }
176
+ }
177
+ merchandise {
178
+ ... on ProductVariant {
179
+ id
180
+ availableForSale
181
+ compareAtPrice {
182
+ ...MoneyFragment
183
+ }
184
+ # @deprecated remove in next major
185
+ compareAtPriceV2 {
186
+ ...MoneyFragment
187
+ }
188
+ price {
189
+ ...MoneyFragment
190
+ }
191
+ # @deprecated remove in next major
192
+ priceV2 {
193
+ ...MoneyFragment
194
+ }
195
+ requiresShipping
196
+ title
197
+ image {
198
+ ...ImageFragment
199
+ }
200
+ product {
201
+ handle
202
+ title
203
+ id
204
+ }
205
+ selectedOptions {
206
+ name
207
+ value
208
+ }
209
+ }
210
+ }
211
+ }
212
+ }
213
+ }
214
+ cost {
215
+ subtotalAmount {
216
+ ...MoneyFragment
217
+ }
218
+ totalAmount {
219
+ ...MoneyFragment
220
+ }
221
+ totalDutyAmount {
222
+ ...MoneyFragment
223
+ }
224
+ totalTaxAmount {
225
+ ...MoneyFragment
226
+ }
227
+ }
228
+ note
229
+ attributes {
230
+ key
231
+ value
232
+ }
233
+ discountCodes {
234
+ code
235
+ }
236
+ }
237
+
238
+ fragment MoneyFragment on MoneyV2 {
239
+ currencyCode
240
+ amount
241
+ }
242
+ fragment ImageFragment on Image {
243
+ id
244
+ url
245
+ altText
246
+ width
247
+ height
248
+ }
102
249
  `;
103
250
  export {
104
251
  CartAttributesUpdate,
@@ -109,6 +256,7 @@ export {
109
256
  CartLineRemove,
110
257
  CartLineUpdate,
111
258
  CartNoteUpdate,
112
- CartQuery
259
+ CartQuery,
260
+ defaultCartFragment
113
261
  };
114
262
  //# sourceMappingURL=cart-queries.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"cart-queries.mjs","sources":["../../src/cart-queries.ts"],"sourcesContent":["export const CartLineAdd = (cartFragment: string) => `\nmutation CartLineAdd($cartId: ID!, $lines: [CartLineInput!]!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cartLinesAdd(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n}\n\n${cartFragment}\n`;\n\nexport const CartCreate = (cartFragment: string) => `\nmutation CartCreate($input: CartInput!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cartCreate(input: $input) {\n cart {\n ...CartFragment\n }\n }\n}\n\n${cartFragment}\n`;\n\nexport const CartLineRemove = (cartFragment: string) => `\nmutation CartLineRemove($cartId: ID!, $lines: [ID!]!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cartLinesRemove(cartId: $cartId, lineIds: $lines) {\n cart {\n ...CartFragment\n }\n }\n}\n\n${cartFragment}\n`;\n\nexport const CartLineUpdate = (cartFragment: string) => `\nmutation CartLineUpdate($cartId: ID!, $lines: [CartLineUpdateInput!]!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cartLinesUpdate(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n}\n\n${cartFragment}\n`;\n\nexport const CartNoteUpdate = (cartFragment: string) => `\nmutation CartNoteUpdate($cartId: ID!, $note: String, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cartNoteUpdate(cartId: $cartId, note: $note) {\n cart {\n ...CartFragment\n }\n }\n}\n\n${cartFragment}\n`;\n\nexport const CartBuyerIdentityUpdate = (cartFragment: string) => `\nmutation CartBuyerIdentityUpdate(\n $cartId: ID!\n $buyerIdentity: CartBuyerIdentityInput!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n) @inContext(country: $country) {\n cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {\n cart {\n ...CartFragment\n }\n }\n}\n\n${cartFragment}\n`;\n\nexport const CartAttributesUpdate = (cartFragment: string) => `\nmutation CartAttributesUpdate($attributes: [AttributeInput!]!, $cartId: ID!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cartAttributesUpdate(attributes: $attributes, cartId: $cartId) {\n cart {\n ...CartFragment\n }\n }\n}\n\n${cartFragment}\n`;\n\nexport const CartDiscountCodesUpdate = (cartFragment: string) => `\nmutation CartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!], $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {\n cart {\n ...CartFragment\n }\n }\n}\n\n${cartFragment}\n`;\n\nexport const CartQuery = (cartFragment: string) => `\nquery CartQuery($id: ID!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cart(id: $id) {\n ...CartFragment\n }\n}\n\n${cartFragment}\n`;\n\nexport const defaultCartFragment = `\nfragment CartFragment on Cart {\n id\n checkoutUrl\n totalQuantity\n buyerIdentity {\n countryCode\n customer {\n id\n email\n firstName\n lastName\n displayName\n }\n email\n phone\n }\n lines(first: $numCartLines) {\n edges {\n node {\n id\n quantity\n attributes {\n key\n value\n }\n cost {\n totalAmount {\n amount\n currencyCode\n }\n compareAtAmountPerQuantity {\n amount\n currencyCode\n }\n }\n merchandise {\n ... on ProductVariant {\n id\n availableForSale\n compareAtPriceV2 {\n ...MoneyFragment\n }\n priceV2 {\n ...MoneyFragment\n }\n requiresShipping\n title\n image {\n ...ImageFragment\n }\n product {\n handle\n title\n id\n }\n selectedOptions {\n name\n value\n }\n }\n }\n }\n }\n }\n cost {\n subtotalAmount {\n ...MoneyFragment\n }\n totalAmount {\n ...MoneyFragment\n }\n totalDutyAmount {\n ...MoneyFragment\n }\n totalTaxAmount {\n ...MoneyFragment\n }\n }\n note\n attributes {\n key\n value\n }\n discountCodes {\n code\n }\n}\n\nfragment MoneyFragment on MoneyV2 {\n currencyCode\n amount\n}\nfragment ImageFragment on Image {\n id\n url\n altText\n width\n height\n}\n`;\n"],"names":[],"mappings":"AAAa,MAAA,cAAc,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASnD;AAAA;AAGW,MAAA,aAAa,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASlD;AAAA;AAGW,MAAA,iBAAiB,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStD;AAAA;AAGW,MAAA,iBAAiB,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStD;AAAA;AAGW,MAAA,iBAAiB,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStD;AAAA;AAGW,MAAA,0BAA0B,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc/D;AAAA;AAGW,MAAA,uBAAuB,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS5D;AAAA;AAGW,MAAA,0BAA0B,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS/D;AAAA;AAGW,MAAA,YAAY,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjD;AAAA;"}
1
+ {"version":3,"file":"cart-queries.mjs","sources":["../../src/cart-queries.ts"],"sourcesContent":["export const CartLineAdd = (cartFragment: string) => /* GraphQL */ `\n mutation CartLineAdd(\n $cartId: ID!\n $lines: [CartLineInput!]!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartLinesAdd(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartCreate = (cartFragment: string) => /* GraphQL */ `\n mutation CartCreate(\n $input: CartInput!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartCreate(input: $input) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartLineRemove = (cartFragment: string) => /* GraphQL */ `\n mutation CartLineRemove(\n $cartId: ID!\n $lines: [ID!]!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartLinesRemove(cartId: $cartId, lineIds: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartLineUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartLineUpdate(\n $cartId: ID!\n $lines: [CartLineUpdateInput!]!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartLinesUpdate(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartNoteUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartNoteUpdate(\n $cartId: ID!\n $note: String\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartNoteUpdate(cartId: $cartId, note: $note) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartBuyerIdentityUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartBuyerIdentityUpdate(\n $cartId: ID!\n $buyerIdentity: CartBuyerIdentityInput!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartAttributesUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartAttributesUpdate(\n $attributes: [AttributeInput!]!\n $cartId: ID!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartAttributesUpdate(attributes: $attributes, cartId: $cartId) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartDiscountCodesUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartDiscountCodesUpdate(\n $cartId: ID!\n $discountCodes: [String!]\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartQuery = (cartFragment: string) => /* GraphQL */ `\n query CartQuery(\n $id: ID!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cart(id: $id) {\n ...CartFragment\n }\n }\n\n ${cartFragment}\n`;\n\nexport const defaultCartFragment = /* GraphQL */ `\n fragment CartFragment on Cart {\n id\n checkoutUrl\n totalQuantity\n buyerIdentity {\n countryCode\n customer {\n id\n email\n firstName\n lastName\n displayName\n }\n email\n phone\n }\n lines(first: $numCartLines) {\n edges {\n node {\n id\n quantity\n attributes {\n key\n value\n }\n cost {\n totalAmount {\n amount\n currencyCode\n }\n compareAtAmountPerQuantity {\n amount\n currencyCode\n }\n }\n merchandise {\n ... on ProductVariant {\n id\n availableForSale\n compareAtPrice {\n ...MoneyFragment\n }\n # @deprecated remove in next major\n compareAtPriceV2 {\n ...MoneyFragment\n }\n price {\n ...MoneyFragment\n }\n # @deprecated remove in next major\n priceV2 {\n ...MoneyFragment\n }\n requiresShipping\n title\n image {\n ...ImageFragment\n }\n product {\n handle\n title\n id\n }\n selectedOptions {\n name\n value\n }\n }\n }\n }\n }\n }\n cost {\n subtotalAmount {\n ...MoneyFragment\n }\n totalAmount {\n ...MoneyFragment\n }\n totalDutyAmount {\n ...MoneyFragment\n }\n totalTaxAmount {\n ...MoneyFragment\n }\n }\n note\n attributes {\n key\n value\n }\n discountCodes {\n code\n }\n }\n\n fragment MoneyFragment on MoneyV2 {\n currencyCode\n amount\n }\n fragment ImageFragment on Image {\n id\n url\n altText\n width\n height\n }\n`;\n"],"names":[],"mappings":"AAAa,MAAA,cAAc,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc/D;AAAA;AAGS,MAAA,aAAa,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAa9D;AAAA;AAGS,MAAA,iBAAiB,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAclE;AAAA;AAGS,MAAA,iBAAiB,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAclE;AAAA;AAGS,MAAA,iBAAiB,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAclE;AAAA;AAGS,MAAA,0BAA0B,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc3E;AAAA;AAGS,MAAA,uBAAuB,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcxE;AAAA;AAGS,MAAA,0BAA0B,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc3E;AAAA;AAGS,MAAA,YAAY,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAW7D;AAAA;AAGG,MAAM,sBAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -5,12 +5,14 @@ import { useCartActions } from "./useCartActions.mjs";
5
5
  import { useMemo } from "react";
6
6
  function invokeCart(action, options) {
7
7
  return {
8
- entry: [...(options == null ? void 0 : options.entryActions) || [], "onCartActionEntry", "onCartActionOptimisticUI", action],
8
+ entry: [...(options == null ? void 0 : options.entryActions) || [], i({
9
+ lastValidCart: (context) => context == null ? void 0 : context.cart
10
+ }), "onCartActionEntry", "onCartActionOptimisticUI", action],
9
11
  on: {
10
12
  RESOLVE: {
11
13
  target: (options == null ? void 0 : options.resolveTarget) || "idle",
12
14
  actions: [i({
13
- prevCart: (context) => context == null ? void 0 : context.cart,
15
+ prevCart: (context) => context == null ? void 0 : context.lastValidCart,
14
16
  cart: (_, event) => {
15
17
  var _a;
16
18
  return (_a = event == null ? void 0 : event.payload) == null ? void 0 : _a.cart;
@@ -25,7 +27,7 @@ function invokeCart(action, options) {
25
27
  ERROR: {
26
28
  target: (options == null ? void 0 : options.errorTarget) || "error",
27
29
  actions: [i({
28
- prevCart: (context) => context == null ? void 0 : context.cart,
30
+ prevCart: (context) => context == null ? void 0 : context.lastValidCart,
29
31
  cart: (context) => context == null ? void 0 : context.lastValidCart,
30
32
  errors: (_, event) => {
31
33
  var _a;
@@ -39,6 +41,7 @@ function invokeCart(action, options) {
39
41
  prevCart: (_) => void 0,
40
42
  cart: (_) => void 0,
41
43
  lastValidCart: (_) => void 0,
44
+ rawCartResult: (_) => void 0,
42
45
  errors: (_) => void 0
43
46
  })
44
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useCartAPIStateMachine.mjs","sources":["../../src/useCartAPIStateMachine.tsx"],"sourcesContent":["import {useMachine} from '@xstate/react/fsm';\nimport {createMachine, assign, StateMachine} from '@xstate/fsm';\nimport {\n Cart,\n CartMachineActionEvent,\n CartMachineActions,\n CartMachineContext,\n CartMachineEvent,\n CartMachineFetchResultEvent,\n CartMachineTypeState,\n} from './cart-types.js';\nimport {flattenConnection} from './flatten-connection.js';\nimport {useCartActions} from './useCartActions.js';\nimport {useMemo} from 'react';\nimport {InitEvent} from '@xstate/fsm/lib/types.js';\nimport {CountryCode, Cart as CartType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nfunction invokeCart(\n action: keyof CartMachineActions,\n options?: {\n entryActions?: [keyof CartMachineActions];\n resolveTarget?: CartMachineTypeState['value'];\n errorTarget?: CartMachineTypeState['value'];\n exitActions?: [keyof CartMachineActions];\n }\n): StateMachine.Config<CartMachineContext, CartMachineEvent>['states']['on'] {\n return {\n entry: [\n ...(options?.entryActions || []),\n 'onCartActionEntry',\n 'onCartActionOptimisticUI',\n action,\n ],\n on: {\n RESOLVE: {\n target: options?.resolveTarget || 'idle',\n actions: [\n assign({\n prevCart: (context) => context?.cart,\n cart: (_, event) => event?.payload?.cart,\n rawCartResult: (_, event) => event?.payload?.rawCartResult,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n errors: (_) => undefined,\n }),\n ],\n },\n ERROR: {\n target: options?.errorTarget || 'error',\n actions: [\n assign({\n prevCart: (context) => context?.cart,\n cart: (context) => context?.lastValidCart,\n errors: (_, event) => event?.payload?.errors,\n }),\n ],\n },\n CART_COMPLETED: {\n target: 'cartCompleted',\n actions: assign({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n prevCart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n cart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n lastValidCart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n errors: (_) => undefined,\n }),\n },\n },\n exit: ['onCartActionComplete', ...(options?.exitActions || [])],\n };\n}\n\nconst INITIALIZING_CART_EVENTS: StateMachine.Machine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n>['config']['states']['uninitialized']['on'] = {\n CART_FETCH: {\n target: 'cartFetching',\n },\n CART_CREATE: {\n target: 'cartCreating',\n },\n CART_SET: {\n target: 'idle',\n actions: [\n assign({\n rawCartResult: (_, event) => event.payload.cart,\n cart: (_, event) => cartFromGraphQL(event.payload.cart),\n }),\n ],\n },\n};\n\nconst UPDATING_CART_EVENTS: StateMachine.Machine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n>['config']['states']['idle']['on'] = {\n CARTLINE_ADD: {\n target: 'cartLineAdding',\n },\n CARTLINE_UPDATE: {\n target: 'cartLineUpdating',\n },\n CARTLINE_REMOVE: {\n target: 'cartLineRemoving',\n },\n NOTE_UPDATE: {\n target: 'noteUpdating',\n },\n BUYER_IDENTITY_UPDATE: {\n target: 'buyerIdentityUpdating',\n },\n CART_ATTRIBUTES_UPDATE: {\n target: 'cartAttributesUpdating',\n },\n DISCOUNT_CODES_UPDATE: {\n target: 'discountCodesUpdating',\n },\n};\n\nfunction createCartMachine(\n initialCart?: PartialDeep<CartType, {recurseIntoArrays: true}>\n) {\n return createMachine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n >({\n id: 'Cart',\n initial: initialCart ? 'idle' : 'uninitialized',\n context: {\n cart: initialCart && cartFromGraphQL(initialCart),\n },\n states: {\n uninitialized: {\n on: INITIALIZING_CART_EVENTS,\n },\n cartCompleted: {\n on: INITIALIZING_CART_EVENTS,\n },\n initializationError: {\n on: INITIALIZING_CART_EVENTS,\n },\n idle: {\n on: {...INITIALIZING_CART_EVENTS, ...UPDATING_CART_EVENTS},\n },\n error: {\n on: {...INITIALIZING_CART_EVENTS, ...UPDATING_CART_EVENTS},\n },\n cartFetching: invokeCart('cartFetchAction', {\n errorTarget: 'initializationError',\n }),\n cartCreating: invokeCart('cartCreateAction', {\n errorTarget: 'initializationError',\n }),\n cartLineRemoving: invokeCart('cartLineRemoveAction'),\n cartLineUpdating: invokeCart('cartLineUpdateAction'),\n cartLineAdding: invokeCart('cartLineAddAction'),\n noteUpdating: invokeCart('noteUpdateAction'),\n buyerIdentityUpdating: invokeCart('buyerIdentityUpdateAction'),\n cartAttributesUpdating: invokeCart('cartAttributesUpdateAction'),\n discountCodesUpdating: invokeCart('discountCodesUpdateAction'),\n },\n });\n}\n\nexport function useCartAPIStateMachine({\n numCartLines,\n onCartActionEntry,\n onCartActionOptimisticUI,\n onCartActionComplete,\n data: cart,\n cartFragment,\n countryCode,\n}: {\n /** Maximum number of cart lines to fetch. Defaults to 250 cart lines. */\n numCartLines?: number;\n /** A callback that is invoked just before a Cart API action executes. */\n onCartActionEntry?: (\n context: CartMachineContext,\n event: CartMachineActionEvent\n ) => void;\n /** A callback that is invoked after executing the entry actions for optimistic UI changes. */\n onCartActionOptimisticUI?: (\n context: CartMachineContext,\n event: CartMachineEvent\n ) => Partial<CartMachineContext>;\n /** A callback that is invoked after a Cart API completes. */\n onCartActionComplete?: (\n context: CartMachineContext,\n event: CartMachineFetchResultEvent\n ) => void;\n /** An object with fields that correspond to the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart). */\n data?: PartialDeep<CartType, {recurseIntoArrays: true}>;\n /** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart) for all queries and mutations. A default value is used if no argument is provided. */\n cartFragment: string;\n /** The ISO country code for i18n. */\n countryCode?: CountryCode;\n}) {\n const {\n cartFetch,\n cartCreate,\n cartLineAdd,\n cartLineUpdate,\n cartLineRemove,\n noteUpdate,\n buyerIdentityUpdate,\n cartAttributesUpdate,\n discountCodesUpdate,\n } = useCartActions({\n numCartLines,\n cartFragment,\n countryCode,\n });\n\n const cartMachine = useMemo(() => createCartMachine(cart), [cart]);\n\n const [state, send, service] = useMachine(cartMachine, {\n actions: {\n cartFetchAction: async (_, event): Promise<void> => {\n if (event.type !== 'CART_FETCH') return;\n\n const {data, errors} = await cartFetch(event?.payload?.cartId);\n const resultEvent = eventFromFetchResult(event, data?.cart, errors);\n send(resultEvent);\n },\n cartCreateAction: async (_, event): Promise<void> => {\n if (event.type !== 'CART_CREATE') return;\n\n const {data, errors} = await cartCreate(event?.payload);\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartCreate?.cart,\n errors\n );\n send(resultEvent);\n },\n cartLineAddAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_ADD' || !context?.cart?.id) return;\n\n const {data, errors} = await cartLineAdd(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesAdd?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartLineUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_UPDATE' || !context?.cart?.id) return;\n const {data, errors} = await cartLineUpdate(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartLineRemoveAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_REMOVE' || !context?.cart?.id) return;\n const {data, errors} = await cartLineRemove(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesRemove?.cart,\n errors\n );\n\n send(resultEvent);\n },\n noteUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'NOTE_UPDATE' || !context?.cart?.id) return;\n const {data, errors} = await noteUpdate(\n context.cart.id,\n event.payload.note\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartNoteUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n buyerIdentityUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'BUYER_IDENTITY_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await buyerIdentityUpdate(\n context.cart.id,\n event.payload.buyerIdentity\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartBuyerIdentityUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartAttributesUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'CART_ATTRIBUTES_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await cartAttributesUpdate(\n context.cart.id,\n event.payload.attributes\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartAttributesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n discountCodesUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'DISCOUNT_CODES_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await discountCodesUpdate(\n context.cart.id,\n event.payload.discountCodes\n );\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartDiscountCodesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n ...(onCartActionEntry && {\n onCartActionEntry: (context, event) => {\n if (isCartActionEvent(event)) {\n onCartActionEntry(context, event);\n }\n },\n }),\n ...(onCartActionOptimisticUI && {\n onCartActionOptimisticUI: assign((context, event) => {\n return onCartActionOptimisticUI(context, event);\n }),\n }),\n ...(onCartActionComplete && {\n onCartActionComplete: (context, event) => {\n if (isCartFetchResultEvent(event)) {\n onCartActionComplete(context, event);\n }\n },\n }),\n } as CartMachineActions,\n });\n\n return useMemo(() => [state, send, service] as const, [state, send, service]);\n}\n\nexport function cartFromGraphQL(\n cart: PartialDeep<CartType, {recurseIntoArrays: true}>\n): Cart {\n return {\n ...cart,\n lines: flattenConnection(cart?.lines),\n note: cart.note ?? undefined,\n };\n}\n\nfunction eventFromFetchResult(\n cartActionEvent: CartMachineActionEvent,\n cart?: PartialDeep<CartType, {recurseIntoArrays: true}> | null,\n errors?: unknown\n): CartMachineFetchResultEvent {\n if (errors) {\n return {type: 'ERROR', payload: {errors, cartActionEvent}};\n }\n\n if (!cart) {\n return {\n type: 'CART_COMPLETED',\n payload: {\n cartActionEvent,\n },\n };\n }\n\n return {\n type: 'RESOLVE',\n payload: {\n cart: cartFromGraphQL(cart),\n rawCartResult: cart,\n cartActionEvent,\n },\n };\n}\n\nfunction isCartActionEvent(\n event: CartMachineEvent | InitEvent\n): event is CartMachineActionEvent {\n return (\n event.type === 'CART_CREATE' ||\n event.type === 'CARTLINE_ADD' ||\n event.type === 'CARTLINE_UPDATE' ||\n event.type === 'CARTLINE_REMOVE' ||\n event.type === 'NOTE_UPDATE' ||\n event.type === 'BUYER_IDENTITY_UPDATE' ||\n event.type === 'CART_ATTRIBUTES_UPDATE' ||\n event.type === 'DISCOUNT_CODES_UPDATE'\n );\n}\n\nfunction isCartFetchResultEvent(\n event: CartMachineEvent | InitEvent\n): event is CartMachineFetchResultEvent {\n return (\n event.type === 'RESOLVE' ||\n event.type === 'ERROR' ||\n event.type === 'CART_COMPLETED'\n );\n}\n"],"names":["invokeCart","action","options","entry","entryActions","on","RESOLVE","target","resolveTarget","actions","assign","prevCart","context","cart","_","event","payload","rawCartResult","errors","undefined","ERROR","errorTarget","lastValidCart","CART_COMPLETED","exit","exitActions","INITIALIZING_CART_EVENTS","CART_FETCH","CART_CREATE","CART_SET","cartFromGraphQL","UPDATING_CART_EVENTS","CARTLINE_ADD","CARTLINE_UPDATE","CARTLINE_REMOVE","NOTE_UPDATE","BUYER_IDENTITY_UPDATE","CART_ATTRIBUTES_UPDATE","DISCOUNT_CODES_UPDATE","createCartMachine","initialCart","createMachine","id","initial","states","uninitialized","cartCompleted","initializationError","idle","error","cartFetching","cartCreating","cartLineRemoving","cartLineUpdating","cartLineAdding","noteUpdating","buyerIdentityUpdating","cartAttributesUpdating","discountCodesUpdating","useCartAPIStateMachine","numCartLines","onCartActionEntry","onCartActionOptimisticUI","onCartActionComplete","data","cartFragment","countryCode","cartFetch","cartCreate","cartLineAdd","cartLineUpdate","cartLineRemove","noteUpdate","buyerIdentityUpdate","cartAttributesUpdate","discountCodesUpdate","useCartActions","cartMachine","useMemo","state","send","service","useMachine","cartFetchAction","type","cartId","resultEvent","eventFromFetchResult","cartCreateAction","cartLineAddAction","lines","cartLinesAdd","cartLineUpdateAction","cartLinesUpdate","cartLineRemoveAction","cartLinesRemove","noteUpdateAction","note","cartNoteUpdate","buyerIdentityUpdateAction","buyerIdentity","cartBuyerIdentityUpdate","cartAttributesUpdateAction","attributes","discountCodesUpdateAction","discountCodes","cartDiscountCodesUpdate","isCartActionEvent","isCartFetchResultEvent","flattenConnection","cartActionEvent"],"mappings":"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"}
1
+ {"version":3,"file":"useCartAPIStateMachine.mjs","sources":["../../src/useCartAPIStateMachine.tsx"],"sourcesContent":["import {useMachine} from '@xstate/react/fsm';\nimport {createMachine, assign, StateMachine} from '@xstate/fsm';\nimport {\n Cart,\n CartMachineActionEvent,\n CartMachineActions,\n CartMachineContext,\n CartMachineEvent,\n CartMachineFetchResultEvent,\n CartMachineTypeState,\n} from './cart-types.js';\nimport {flattenConnection} from './flatten-connection.js';\nimport {useCartActions} from './useCartActions.js';\nimport {useMemo} from 'react';\nimport {InitEvent} from '@xstate/fsm/lib/types.js';\nimport {CountryCode, Cart as CartType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nfunction invokeCart(\n action: keyof CartMachineActions,\n options?: {\n entryActions?: [keyof CartMachineActions];\n resolveTarget?: CartMachineTypeState['value'];\n errorTarget?: CartMachineTypeState['value'];\n exitActions?: [keyof CartMachineActions];\n }\n): StateMachine.Config<CartMachineContext, CartMachineEvent>['states']['on'] {\n return {\n entry: [\n ...(options?.entryActions || []),\n assign({\n lastValidCart: (context) => context?.cart,\n }),\n 'onCartActionEntry',\n 'onCartActionOptimisticUI',\n action,\n ],\n on: {\n RESOLVE: {\n target: options?.resolveTarget || 'idle',\n actions: [\n assign({\n prevCart: (context) => context?.lastValidCart,\n cart: (_, event) => event?.payload?.cart,\n rawCartResult: (_, event) => event?.payload?.rawCartResult,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n errors: (_) => undefined,\n }),\n ],\n },\n ERROR: {\n target: options?.errorTarget || 'error',\n actions: [\n assign({\n prevCart: (context) => context?.lastValidCart,\n cart: (context) => context?.lastValidCart,\n errors: (_, event) => event?.payload?.errors,\n }),\n ],\n },\n CART_COMPLETED: {\n target: 'cartCompleted',\n actions: assign({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n prevCart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n cart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n lastValidCart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n rawCartResult: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n errors: (_) => undefined,\n }),\n },\n },\n exit: ['onCartActionComplete', ...(options?.exitActions || [])],\n };\n}\n\nconst INITIALIZING_CART_EVENTS: StateMachine.Machine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n>['config']['states']['uninitialized']['on'] = {\n CART_FETCH: {\n target: 'cartFetching',\n },\n CART_CREATE: {\n target: 'cartCreating',\n },\n CART_SET: {\n target: 'idle',\n actions: [\n assign({\n rawCartResult: (_, event) => event.payload.cart,\n cart: (_, event) => cartFromGraphQL(event.payload.cart),\n }),\n ],\n },\n};\n\nconst UPDATING_CART_EVENTS: StateMachine.Machine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n>['config']['states']['idle']['on'] = {\n CARTLINE_ADD: {\n target: 'cartLineAdding',\n },\n CARTLINE_UPDATE: {\n target: 'cartLineUpdating',\n },\n CARTLINE_REMOVE: {\n target: 'cartLineRemoving',\n },\n NOTE_UPDATE: {\n target: 'noteUpdating',\n },\n BUYER_IDENTITY_UPDATE: {\n target: 'buyerIdentityUpdating',\n },\n CART_ATTRIBUTES_UPDATE: {\n target: 'cartAttributesUpdating',\n },\n DISCOUNT_CODES_UPDATE: {\n target: 'discountCodesUpdating',\n },\n};\n\nfunction createCartMachine(\n initialCart?: PartialDeep<CartType, {recurseIntoArrays: true}>\n) {\n return createMachine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n >({\n id: 'Cart',\n initial: initialCart ? 'idle' : 'uninitialized',\n context: {\n cart: initialCart && cartFromGraphQL(initialCart),\n },\n states: {\n uninitialized: {\n on: INITIALIZING_CART_EVENTS,\n },\n cartCompleted: {\n on: INITIALIZING_CART_EVENTS,\n },\n initializationError: {\n on: INITIALIZING_CART_EVENTS,\n },\n idle: {\n on: {...INITIALIZING_CART_EVENTS, ...UPDATING_CART_EVENTS},\n },\n error: {\n on: {...INITIALIZING_CART_EVENTS, ...UPDATING_CART_EVENTS},\n },\n cartFetching: invokeCart('cartFetchAction', {\n errorTarget: 'initializationError',\n }),\n cartCreating: invokeCart('cartCreateAction', {\n errorTarget: 'initializationError',\n }),\n cartLineRemoving: invokeCart('cartLineRemoveAction'),\n cartLineUpdating: invokeCart('cartLineUpdateAction'),\n cartLineAdding: invokeCart('cartLineAddAction'),\n noteUpdating: invokeCart('noteUpdateAction'),\n buyerIdentityUpdating: invokeCart('buyerIdentityUpdateAction'),\n cartAttributesUpdating: invokeCart('cartAttributesUpdateAction'),\n discountCodesUpdating: invokeCart('discountCodesUpdateAction'),\n },\n });\n}\n\nexport function useCartAPIStateMachine({\n numCartLines,\n onCartActionEntry,\n onCartActionOptimisticUI,\n onCartActionComplete,\n data: cart,\n cartFragment,\n countryCode,\n}: {\n /** Maximum number of cart lines to fetch. Defaults to 250 cart lines. */\n numCartLines?: number;\n /** A callback that is invoked just before a Cart API action executes. */\n onCartActionEntry?: (\n context: CartMachineContext,\n event: CartMachineActionEvent\n ) => void;\n /** A callback that is invoked after executing the entry actions for optimistic UI changes. */\n onCartActionOptimisticUI?: (\n context: CartMachineContext,\n event: CartMachineEvent\n ) => Partial<CartMachineContext>;\n /** A callback that is invoked after a Cart API completes. */\n onCartActionComplete?: (\n context: CartMachineContext,\n event: CartMachineFetchResultEvent\n ) => void;\n /** An object with fields that correspond to the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart). */\n data?: PartialDeep<CartType, {recurseIntoArrays: true}>;\n /** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart) for all queries and mutations. A default value is used if no argument is provided. */\n cartFragment: string;\n /** The ISO country code for i18n. */\n countryCode?: CountryCode;\n}) {\n const {\n cartFetch,\n cartCreate,\n cartLineAdd,\n cartLineUpdate,\n cartLineRemove,\n noteUpdate,\n buyerIdentityUpdate,\n cartAttributesUpdate,\n discountCodesUpdate,\n } = useCartActions({\n numCartLines,\n cartFragment,\n countryCode,\n });\n\n const cartMachine = useMemo(() => createCartMachine(cart), [cart]);\n\n const [state, send, service] = useMachine(cartMachine, {\n actions: {\n cartFetchAction: async (_, event): Promise<void> => {\n if (event.type !== 'CART_FETCH') return;\n\n const {data, errors} = await cartFetch(event?.payload?.cartId);\n const resultEvent = eventFromFetchResult(event, data?.cart, errors);\n send(resultEvent);\n },\n cartCreateAction: async (_, event): Promise<void> => {\n if (event.type !== 'CART_CREATE') return;\n\n const {data, errors} = await cartCreate(event?.payload);\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartCreate?.cart,\n errors\n );\n send(resultEvent);\n },\n cartLineAddAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_ADD' || !context?.cart?.id) return;\n\n const {data, errors} = await cartLineAdd(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesAdd?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartLineUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_UPDATE' || !context?.cart?.id) return;\n const {data, errors} = await cartLineUpdate(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartLineRemoveAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_REMOVE' || !context?.cart?.id) return;\n const {data, errors} = await cartLineRemove(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesRemove?.cart,\n errors\n );\n\n send(resultEvent);\n },\n noteUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'NOTE_UPDATE' || !context?.cart?.id) return;\n const {data, errors} = await noteUpdate(\n context.cart.id,\n event.payload.note\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartNoteUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n buyerIdentityUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'BUYER_IDENTITY_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await buyerIdentityUpdate(\n context.cart.id,\n event.payload.buyerIdentity\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartBuyerIdentityUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartAttributesUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'CART_ATTRIBUTES_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await cartAttributesUpdate(\n context.cart.id,\n event.payload.attributes\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartAttributesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n discountCodesUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'DISCOUNT_CODES_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await discountCodesUpdate(\n context.cart.id,\n event.payload.discountCodes\n );\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartDiscountCodesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n ...(onCartActionEntry && {\n onCartActionEntry: (context, event) => {\n if (isCartActionEvent(event)) {\n onCartActionEntry(context, event);\n }\n },\n }),\n ...(onCartActionOptimisticUI && {\n onCartActionOptimisticUI: assign((context, event) => {\n return onCartActionOptimisticUI(context, event);\n }),\n }),\n ...(onCartActionComplete && {\n onCartActionComplete: (context, event) => {\n if (isCartFetchResultEvent(event)) {\n onCartActionComplete(context, event);\n }\n },\n }),\n } as CartMachineActions,\n });\n\n return useMemo(() => [state, send, service] as const, [state, send, service]);\n}\n\nexport function cartFromGraphQL(\n cart: PartialDeep<CartType, {recurseIntoArrays: true}>\n): Cart {\n return {\n ...cart,\n lines: flattenConnection(cart?.lines),\n note: cart.note ?? undefined,\n };\n}\n\nfunction eventFromFetchResult(\n cartActionEvent: CartMachineActionEvent,\n cart?: PartialDeep<CartType, {recurseIntoArrays: true}> | null,\n errors?: unknown\n): CartMachineFetchResultEvent {\n if (errors) {\n return {type: 'ERROR', payload: {errors, cartActionEvent}};\n }\n\n if (!cart) {\n return {\n type: 'CART_COMPLETED',\n payload: {\n cartActionEvent,\n },\n };\n }\n\n return {\n type: 'RESOLVE',\n payload: {\n cart: cartFromGraphQL(cart),\n rawCartResult: cart,\n cartActionEvent,\n },\n };\n}\n\nfunction isCartActionEvent(\n event: CartMachineEvent | InitEvent\n): event is CartMachineActionEvent {\n return (\n event.type === 'CART_CREATE' ||\n event.type === 'CARTLINE_ADD' ||\n event.type === 'CARTLINE_UPDATE' ||\n event.type === 'CARTLINE_REMOVE' ||\n event.type === 'NOTE_UPDATE' ||\n event.type === 'BUYER_IDENTITY_UPDATE' ||\n event.type === 'CART_ATTRIBUTES_UPDATE' ||\n event.type === 'DISCOUNT_CODES_UPDATE'\n );\n}\n\nfunction isCartFetchResultEvent(\n event: CartMachineEvent | InitEvent\n): event is CartMachineFetchResultEvent {\n return (\n event.type === 'RESOLVE' ||\n event.type === 'ERROR' ||\n event.type === 'CART_COMPLETED'\n );\n}\n"],"names":["invokeCart","action","options","entry","entryActions","assign","lastValidCart","context","cart","on","RESOLVE","target","resolveTarget","actions","prevCart","_","event","payload","rawCartResult","errors","undefined","ERROR","errorTarget","CART_COMPLETED","exit","exitActions","INITIALIZING_CART_EVENTS","CART_FETCH","CART_CREATE","CART_SET","cartFromGraphQL","UPDATING_CART_EVENTS","CARTLINE_ADD","CARTLINE_UPDATE","CARTLINE_REMOVE","NOTE_UPDATE","BUYER_IDENTITY_UPDATE","CART_ATTRIBUTES_UPDATE","DISCOUNT_CODES_UPDATE","createCartMachine","initialCart","createMachine","id","initial","states","uninitialized","cartCompleted","initializationError","idle","error","cartFetching","cartCreating","cartLineRemoving","cartLineUpdating","cartLineAdding","noteUpdating","buyerIdentityUpdating","cartAttributesUpdating","discountCodesUpdating","useCartAPIStateMachine","numCartLines","onCartActionEntry","onCartActionOptimisticUI","onCartActionComplete","data","cartFragment","countryCode","cartFetch","cartCreate","cartLineAdd","cartLineUpdate","cartLineRemove","noteUpdate","buyerIdentityUpdate","cartAttributesUpdate","discountCodesUpdate","useCartActions","cartMachine","useMemo","state","send","service","useMachine","cartFetchAction","type","cartId","resultEvent","eventFromFetchResult","cartCreateAction","cartLineAddAction","lines","cartLinesAdd","cartLineUpdateAction","cartLinesUpdate","cartLineRemoveAction","cartLinesRemove","noteUpdateAction","note","cartNoteUpdate","buyerIdentityUpdateAction","buyerIdentity","cartBuyerIdentityUpdate","cartAttributesUpdateAction","attributes","discountCodesUpdateAction","discountCodes","cartDiscountCodesUpdate","isCartActionEvent","isCartFetchResultEvent","flattenConnection","cartActionEvent"],"mappings":"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"}