@propeller-commerce/propeller-sdk-v2 0.18.0 → 0.19.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 (86) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/client/GraphQLClient.d.ts +22 -0
  4. package/dist/cjs/client/GraphQLClient.js +24 -3
  5. package/dist/cjs/client/index.d.ts +1 -1
  6. package/dist/cjs/generated/operations/cart.js +4 -0
  7. package/dist/cjs/generated/operations/cartAcceptPurchaseAuthorizationRequest.js +4 -0
  8. package/dist/cjs/generated/operations/cartAddActionCode.js +4 -0
  9. package/dist/cjs/generated/operations/cartAddBundle.js +4 -0
  10. package/dist/cjs/generated/operations/cartAddItem.js +4 -0
  11. package/dist/cjs/generated/operations/cartDeleteItem.js +4 -0
  12. package/dist/cjs/generated/operations/cartRemoveActionCode.js +4 -0
  13. package/dist/cjs/generated/operations/cartSetContact.js +4 -0
  14. package/dist/cjs/generated/operations/cartSetCustomer.js +4 -0
  15. package/dist/cjs/generated/operations/cartStart.js +4 -0
  16. package/dist/cjs/generated/operations/cartUpdate.js +4 -0
  17. package/dist/cjs/generated/operations/cartUpdateAddress.js +4 -0
  18. package/dist/cjs/generated/operations/cartUpdateItem.js +4 -0
  19. package/dist/cjs/generated/operations/order.js +2 -0
  20. package/dist/cjs/generated/operations/orderCreate.js +2 -0
  21. package/dist/cjs/generated/operations/orderItemCreate.js +1 -0
  22. package/dist/cjs/generated/operations/orderItemUpdate.js +1 -0
  23. package/dist/cjs/generated/operations/orderRevision.js +2 -0
  24. package/dist/cjs/generated/operations/orderRevisionRestore.js +2 -0
  25. package/dist/cjs/generated/operations/orderRevisions.js +2 -0
  26. package/dist/cjs/generated/operations/orderUpdate.js +2 -0
  27. package/dist/cjs/generated/operations/orders.js +1 -0
  28. package/dist/cjs/generated/operations/tender.js +2 -0
  29. package/dist/cjs/generated/operations/tenderAddItems.js +2 -0
  30. package/dist/cjs/generated/operations/tenderApplyIncentives.js +2 -0
  31. package/dist/cjs/generated/operations/tenderDeleteBonusItem.js +2 -0
  32. package/dist/cjs/generated/operations/tenderDeleteItem.js +2 -0
  33. package/dist/cjs/generated/operations/tenderStart.js +2 -0
  34. package/dist/cjs/generated/operations/tenderUpdate.js +2 -0
  35. package/dist/cjs/generated/operations/tenderUpdateAddress.js +2 -0
  36. package/dist/cjs/generated/operations/tenderUpdateDiscount.js +2 -0
  37. package/dist/cjs/generated/operations/tenderUpdateInvoiceUser.js +2 -0
  38. package/dist/cjs/generated/operations/tenderUpdateItem.js +2 -0
  39. package/dist/cjs/generated/operations/tenderUpdatePayment.js +2 -0
  40. package/dist/cjs/generated/operations/tenderUpdatePostage.js +2 -0
  41. package/dist/cjs/type/CartItemSurcharge.d.ts +6 -1
  42. package/dist/cjs/type/CartPaymentData.d.ts +6 -1
  43. package/dist/cjs/type/CartPostageData.d.ts +6 -1
  44. package/dist/cjs/type/CartTaxLevel.d.ts +6 -1
  45. package/dist/cjs/type/ITenderBaseItem.d.ts +2 -0
  46. package/dist/cjs/type/OrderItem.d.ts +6 -1
  47. package/dist/cjs/type/OrderTotalTaxPercentage.d.ts +6 -1
  48. package/dist/cjs/type/TenderBaseItem.d.ts +6 -1
  49. package/dist/cjs/type/TenderMainItem.d.ts +6 -1
  50. package/dist/esm/client/GraphQLClient.js +24 -3
  51. package/dist/esm/generated/operations/cart.js +4 -0
  52. package/dist/esm/generated/operations/cartAcceptPurchaseAuthorizationRequest.js +4 -0
  53. package/dist/esm/generated/operations/cartAddActionCode.js +4 -0
  54. package/dist/esm/generated/operations/cartAddBundle.js +4 -0
  55. package/dist/esm/generated/operations/cartAddItem.js +4 -0
  56. package/dist/esm/generated/operations/cartDeleteItem.js +4 -0
  57. package/dist/esm/generated/operations/cartRemoveActionCode.js +4 -0
  58. package/dist/esm/generated/operations/cartSetContact.js +4 -0
  59. package/dist/esm/generated/operations/cartSetCustomer.js +4 -0
  60. package/dist/esm/generated/operations/cartStart.js +4 -0
  61. package/dist/esm/generated/operations/cartUpdate.js +4 -0
  62. package/dist/esm/generated/operations/cartUpdateAddress.js +4 -0
  63. package/dist/esm/generated/operations/cartUpdateItem.js +4 -0
  64. package/dist/esm/generated/operations/order.js +2 -0
  65. package/dist/esm/generated/operations/orderCreate.js +2 -0
  66. package/dist/esm/generated/operations/orderItemCreate.js +1 -0
  67. package/dist/esm/generated/operations/orderItemUpdate.js +1 -0
  68. package/dist/esm/generated/operations/orderRevision.js +2 -0
  69. package/dist/esm/generated/operations/orderRevisionRestore.js +2 -0
  70. package/dist/esm/generated/operations/orderRevisions.js +2 -0
  71. package/dist/esm/generated/operations/orderUpdate.js +2 -0
  72. package/dist/esm/generated/operations/orders.js +1 -0
  73. package/dist/esm/generated/operations/tender.js +2 -0
  74. package/dist/esm/generated/operations/tenderAddItems.js +2 -0
  75. package/dist/esm/generated/operations/tenderApplyIncentives.js +2 -0
  76. package/dist/esm/generated/operations/tenderDeleteBonusItem.js +2 -0
  77. package/dist/esm/generated/operations/tenderDeleteItem.js +2 -0
  78. package/dist/esm/generated/operations/tenderStart.js +2 -0
  79. package/dist/esm/generated/operations/tenderUpdate.js +2 -0
  80. package/dist/esm/generated/operations/tenderUpdateAddress.js +2 -0
  81. package/dist/esm/generated/operations/tenderUpdateDiscount.js +2 -0
  82. package/dist/esm/generated/operations/tenderUpdateInvoiceUser.js +2 -0
  83. package/dist/esm/generated/operations/tenderUpdateItem.js +2 -0
  84. package/dist/esm/generated/operations/tenderUpdatePayment.js +2 -0
  85. package/dist/esm/generated/operations/tenderUpdatePostage.js +2 -0
  86. package/package.json +1 -1
@@ -188,6 +188,7 @@ fragment OrderTotalsFields on OrderTotals {
188
188
  discountValue
189
189
  taxPercentages {
190
190
  percentage
191
+ percentageDecimal
191
192
  total
192
193
  }
193
194
  }
@@ -218,6 +219,7 @@ fragment OrderItemFields on OrderItem {
218
219
  discount
219
220
  tax
220
221
  taxPercentage
222
+ taxPercentageDecimal
221
223
  taxCode
222
224
  isBonus
223
225
  minimumQuantity
@@ -188,6 +188,7 @@ fragment OrderTotalsFields on OrderTotals {
188
188
  discountValue
189
189
  taxPercentages {
190
190
  percentage
191
+ percentageDecimal
191
192
  total
192
193
  }
193
194
  }
@@ -218,6 +219,7 @@ fragment OrderItemFields on OrderItem {
218
219
  discount
219
220
  tax
220
221
  taxPercentage
222
+ taxPercentageDecimal
221
223
  taxCode
222
224
  isBonus
223
225
  minimumQuantity
@@ -68,6 +68,7 @@ fragment OrderTotalsFields on OrderTotals {
68
68
  discountValue
69
69
  taxPercentages {
70
70
  percentage
71
+ percentageDecimal
71
72
  total
72
73
  }
73
74
  }
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -103,6 +103,7 @@ fragment TenderFields on Tender {
103
103
  totalPriceNet
104
104
  taxCode
105
105
  taxPercentage
106
+ taxPercentageDecimal
106
107
  customerDiscountPercentage
107
108
  discountPercentage
108
109
  totalDiscountPercentage
@@ -149,6 +150,7 @@ fragment TenderFields on Tender {
149
150
  totalPriceNet
150
151
  taxCode
151
152
  taxPercentage
153
+ taxPercentageDecimal
152
154
  customerDiscountPercentage
153
155
  discountPercentage
154
156
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -92,6 +92,7 @@ exports.document = `fragment TenderFields on Tender {
92
92
  totalPriceNet
93
93
  taxCode
94
94
  taxPercentage
95
+ taxPercentageDecimal
95
96
  customerDiscountPercentage
96
97
  discountPercentage
97
98
  totalDiscountPercentage
@@ -138,6 +139,7 @@ exports.document = `fragment TenderFields on Tender {
138
139
  totalPriceNet
139
140
  taxCode
140
141
  taxPercentage
142
+ taxPercentageDecimal
141
143
  customerDiscountPercentage
142
144
  discountPercentage
143
145
  totalDiscountPercentage
@@ -14,8 +14,13 @@ export interface CartItemSurcharge {
14
14
  value: number;
15
15
  /** Tax code */
16
16
  taxCode: TaxCode;
17
- /** Tax percentage */
17
+ /**
18
+ * Tax percentage
19
+ * @deprecated Rounded to a whole number (8.1 becomes 8). Use `taxPercentageDecimal` for the exact rate.
20
+ */
18
21
  taxPercentage?: number;
22
+ /** Tax percentage, with decimals (e.g. 8.1) */
23
+ taxPercentageDecimal?: number;
19
24
  /** Quantity */
20
25
  quantity?: number;
21
26
  /** Price */
@@ -13,8 +13,13 @@ export interface CartPaymentData {
13
13
  priceMode?: PriceMode;
14
14
  /** Tax associated with the selected paymethod on this cart. */
15
15
  tax: number;
16
- /** Tax percentage associated with the selected paymethod on this cart. */
16
+ /**
17
+ * Tax percentage associated with the selected paymethod on this cart.
18
+ * @deprecated Rounded to a whole number (8.1 becomes 8). Use `taxPercentageDecimal` for the exact rate.
19
+ */
17
20
  taxPercentage?: number;
21
+ /** Tax percentage associated with the selected paymethod on this cart, with decimals (e.g. 8.1). */
22
+ taxPercentageDecimal?: number;
18
23
  /** Payment status */
19
24
  status?: string;
20
25
  /** Payment status date */
@@ -7,8 +7,13 @@ import { Warehouse } from './Warehouse';
7
7
  export interface CartPostageData {
8
8
  /** Selected shipping method for this cart. Defaults to DELIVERY. */
9
9
  method: string;
10
- /** Tax percentage */
10
+ /**
11
+ * Tax percentage
12
+ * @deprecated Rounded to a whole number (8.1 becomes 8). Use `taxPercentageDecimal` for the exact rate.
13
+ */
11
14
  taxPercentage?: number;
15
+ /** Tax percentage, with decimals (e.g. 8.1) */
16
+ taxPercentageDecimal?: number;
12
17
  /** Preferred delivery date for this order as requested by the user. */
13
18
  requestDate?: string;
14
19
  /** Costs associated with the selected shipping method and business rules that apply to this cart. Excluding VAT. */
@@ -2,8 +2,13 @@
2
2
  Object class for CartTaxLevel
3
3
  */
4
4
  export interface CartTaxLevel {
5
- /** Tax level's percentage */
5
+ /**
6
+ * Tax level's percentage
7
+ * @deprecated Rounded to a whole number (8.1 becomes 8). Use `taxPercentageDecimal` for the exact rate.
8
+ */
6
9
  taxPercentage: number;
10
+ /** Tax level's percentage, with decimals (e.g. 8.1) */
11
+ taxPercentageDecimal: number;
7
12
  /** Total tax added for to the cart for the tax level's tax code */
8
13
  price: number;
9
14
  /** Total discount for the tax level's code */
@@ -10,4 +10,6 @@ export interface ITenderBaseItem {
10
10
  quantity: number;
11
11
  /** Item price */
12
12
  price: number;
13
+ /** The tax percentage for this tender/order item, with decimals (e.g. 8.1) */
14
+ taxPercentageDecimal: number;
13
15
  }
@@ -55,8 +55,13 @@ export interface OrderItem {
55
55
  discount?: number;
56
56
  /** The total tax of the OrderItem */
57
57
  tax?: number;
58
- /** The tax percentage of the OrderItem */
58
+ /**
59
+ * The tax percentage of the OrderItem
60
+ * @deprecated Rounded to a whole number (8.1 becomes 8). Use `taxPercentageDecimal` for the exact rate.
61
+ */
59
62
  taxPercentage: number;
63
+ /** The tax percentage of the OrderItem, with decimals (e.g. 8.1) */
64
+ taxPercentageDecimal: number;
60
65
  /** The tax code of the OrderItem */
61
66
  taxCode: TaxCode;
62
67
  /** Is the OrderItem a bonusItem? */
@@ -2,8 +2,13 @@
2
2
  Object class for OrderTotalTaxPercentage
3
3
  */
4
4
  export interface OrderTotalTaxPercentage {
5
- /** The tax percentage */
5
+ /**
6
+ * The tax percentage
7
+ * @deprecated Rounded to a whole number (8.1 becomes 8). Use `percentageDecimal` for the exact rate.
8
+ */
6
9
  percentage: number;
10
+ /** The tax percentage, with decimals (e.g. 8.1) */
11
+ percentageDecimal: number;
7
12
  /** The total for the tax percentage */
8
13
  total: number;
9
14
  }
@@ -31,8 +31,13 @@ export interface TenderBaseItem {
31
31
  totalPriceNet: number;
32
32
  /** The tax code for this tender/order item */
33
33
  taxCode: TaxCode;
34
- /** The tax percentage for this tender/order item */
34
+ /**
35
+ * The tax percentage for this tender/order item
36
+ * @deprecated Rounded to a whole number (8.1 becomes 8). Use `taxPercentageDecimal` for the exact rate.
37
+ */
35
38
  taxPercentage: number;
39
+ /** The tax percentage for this tender/order item, with decimals (e.g. 8.1) */
40
+ taxPercentageDecimal: number;
36
41
  /** Customer discount (%) */
37
42
  customerDiscountPercentage: number;
38
43
  /** Sales discount (%) */
@@ -35,8 +35,13 @@ export interface TenderMainItem extends ITenderBaseItem {
35
35
  totalPriceNet: number;
36
36
  /** The tax code for this tender/order item */
37
37
  taxCode: TaxCode;
38
- /** The tax percentage for this tender/order item */
38
+ /**
39
+ * The tax percentage for this tender/order item
40
+ * @deprecated Rounded to a whole number (8.1 becomes 8). Use `taxPercentageDecimal` for the exact rate.
41
+ */
39
42
  taxPercentage: number;
43
+ /** The tax percentage for this tender/order item, with decimals (e.g. 8.1) */
44
+ taxPercentageDecimal: number;
40
45
  /** Customer discount (%) */
41
46
  customerDiscountPercentage: number;
42
47
  /** Sales discount (%) */
@@ -1,5 +1,6 @@
1
- // Note: This client uses the built-in fetch API available in Node.js 18+.
2
- // For older runtimes, install a fetch polyfill.
1
+ // Note: This client uses the built-in fetch API available in Node.js 18+
2
+ // unless `config.fetch` supplies another implementation. For older runtimes,
3
+ // install a fetch polyfill.
3
4
  import { GraphQLOperationError } from './GraphQLOperationError.js';
4
5
  const DEFAULT_TOKEN_STORAGE_KEY = 'access_token';
5
6
  const DEFAULT_ORDER_EDITOR_MUTATIONS = [
@@ -8,6 +9,10 @@ const DEFAULT_ORDER_EDITOR_MUTATIONS = [
8
9
  'triggerQuoteSendRequest',
9
10
  'triggerOrderSendConfirm',
10
11
  ];
12
+ // The `mutation` keyword at the start of any line. Generated documents put
13
+ // their fragments first, so "the document starts with `mutation`" would miss
14
+ // most mutations — and a missed mutation is one that gets sent twice.
15
+ const MUTATION_DOCUMENT = /^\s*mutation\b/m;
11
16
  function defaultAccessTokenProvider() {
12
17
  if (typeof window !== 'undefined' && window.localStorage) {
13
18
  return window.localStorage.getItem(DEFAULT_TOKEN_STORAGE_KEY) || undefined;
@@ -176,6 +181,9 @@ export class GraphQLClient {
176
181
  * who want to inspect partial responses can do so. The higher-level
177
182
  * `query()` / `mutate()` helpers and the `runOperation` helper used by
178
183
  * services throw `GraphQLOperationError` when `errors` is non-empty.
184
+ *
185
+ * A query whose connection drops (`fetch failed`) is sent once more, within
186
+ * the same `timeout`, before the error is thrown. Mutations are never resent.
179
187
  */
180
188
  async execute(operation) {
181
189
  const { query, variables = {}, operationName, fetchOptions } = operation;
@@ -193,7 +201,8 @@ export class GraphQLClient {
193
201
  const controller = new AbortController();
194
202
  const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
195
203
  try {
196
- const response = await fetch(this.getEndpoint(), {
204
+ const fetchImpl = this.config.fetch ?? fetch;
205
+ const send = () => fetchImpl(this.getEndpoint(), {
197
206
  method: 'POST',
198
207
  headers,
199
208
  body,
@@ -207,6 +216,18 @@ export class GraphQLClient {
207
216
  next: fetchOptions?.next,
208
217
  signal: controller.signal,
209
218
  });
219
+ // A dropped connection rejects fetch() with a TypeError (the fetch spec's
220
+ // network error). A timeout rejects with an AbortError and an HTTP error
221
+ // status resolves, so neither is retried. Matched by name, not
222
+ // `instanceof`, so a TypeError from another realm (Jest, a vm sandbox)
223
+ // still counts. A mutation is never sent twice: the server may have
224
+ // applied it before the connection dropped. The retry shares the timeout.
225
+ const response = await send().catch((error) => {
226
+ if (error?.name !== 'TypeError' || MUTATION_DOCUMENT.test(query))
227
+ throw error;
228
+ this.debugLog(`Connection dropped (${error.message}), retrying ${actualOperationName ?? 'query'} once`);
229
+ return send();
230
+ });
210
231
  clearTimeout(timeoutId);
211
232
  if (!response.ok) {
212
233
  const bodyText = await response.text().catch(() => '');
@@ -101,6 +101,7 @@ fragment CartPaymentDataFields on CartPaymentData {
101
101
  priceMode
102
102
  tax
103
103
  taxPercentage
104
+ taxPercentageDecimal
104
105
  status
105
106
  statusDate
106
107
  }
@@ -108,6 +109,7 @@ fragment CartPaymentDataFields on CartPaymentData {
108
109
  fragment CartPostageDataFields on CartPostageData {
109
110
  method
110
111
  taxPercentage
112
+ taxPercentageDecimal
111
113
  requestDate
112
114
  price
113
115
  priceNet
@@ -364,6 +366,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
364
366
  value
365
367
  taxCode
366
368
  taxPercentage
369
+ taxPercentageDecimal
367
370
  quantity
368
371
  price
369
372
  totalPrice
@@ -423,6 +426,7 @@ fragment CartAddressFields on CartAddress {
423
426
 
424
427
  fragment CartTaxLevelFields on CartTaxLevel {
425
428
  taxPercentage
429
+ taxPercentageDecimal
426
430
  price
427
431
  discount
428
432
  }
@@ -101,6 +101,7 @@ fragment CartPaymentDataFields on CartPaymentData {
101
101
  priceMode
102
102
  tax
103
103
  taxPercentage
104
+ taxPercentageDecimal
104
105
  status
105
106
  statusDate
106
107
  }
@@ -108,6 +109,7 @@ fragment CartPaymentDataFields on CartPaymentData {
108
109
  fragment CartPostageDataFields on CartPostageData {
109
110
  method
110
111
  taxPercentage
112
+ taxPercentageDecimal
111
113
  requestDate
112
114
  price
113
115
  priceNet
@@ -364,6 +366,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
364
366
  value
365
367
  taxCode
366
368
  taxPercentage
369
+ taxPercentageDecimal
367
370
  quantity
368
371
  price
369
372
  totalPrice
@@ -423,6 +426,7 @@ fragment CartAddressFields on CartAddress {
423
426
 
424
427
  fragment CartTaxLevelFields on CartTaxLevel {
425
428
  taxPercentage
429
+ taxPercentageDecimal
426
430
  price
427
431
  discount
428
432
  }
@@ -101,6 +101,7 @@ fragment CartPaymentDataFields on CartPaymentData {
101
101
  priceMode
102
102
  tax
103
103
  taxPercentage
104
+ taxPercentageDecimal
104
105
  status
105
106
  statusDate
106
107
  }
@@ -108,6 +109,7 @@ fragment CartPaymentDataFields on CartPaymentData {
108
109
  fragment CartPostageDataFields on CartPostageData {
109
110
  method
110
111
  taxPercentage
112
+ taxPercentageDecimal
111
113
  requestDate
112
114
  price
113
115
  priceNet
@@ -364,6 +366,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
364
366
  value
365
367
  taxCode
366
368
  taxPercentage
369
+ taxPercentageDecimal
367
370
  quantity
368
371
  price
369
372
  totalPrice
@@ -423,6 +426,7 @@ fragment CartAddressFields on CartAddress {
423
426
 
424
427
  fragment CartTaxLevelFields on CartTaxLevel {
425
428
  taxPercentage
429
+ taxPercentageDecimal
426
430
  price
427
431
  discount
428
432
  }
@@ -101,6 +101,7 @@ fragment CartPaymentDataFields on CartPaymentData {
101
101
  priceMode
102
102
  tax
103
103
  taxPercentage
104
+ taxPercentageDecimal
104
105
  status
105
106
  statusDate
106
107
  }
@@ -108,6 +109,7 @@ fragment CartPaymentDataFields on CartPaymentData {
108
109
  fragment CartPostageDataFields on CartPostageData {
109
110
  method
110
111
  taxPercentage
112
+ taxPercentageDecimal
111
113
  requestDate
112
114
  price
113
115
  priceNet
@@ -364,6 +366,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
364
366
  value
365
367
  taxCode
366
368
  taxPercentage
369
+ taxPercentageDecimal
367
370
  quantity
368
371
  price
369
372
  totalPrice
@@ -423,6 +426,7 @@ fragment CartAddressFields on CartAddress {
423
426
 
424
427
  fragment CartTaxLevelFields on CartTaxLevel {
425
428
  taxPercentage
429
+ taxPercentageDecimal
426
430
  price
427
431
  discount
428
432
  }
@@ -101,6 +101,7 @@ fragment CartPaymentDataFields on CartPaymentData {
101
101
  priceMode
102
102
  tax
103
103
  taxPercentage
104
+ taxPercentageDecimal
104
105
  status
105
106
  statusDate
106
107
  }
@@ -108,6 +109,7 @@ fragment CartPaymentDataFields on CartPaymentData {
108
109
  fragment CartPostageDataFields on CartPostageData {
109
110
  method
110
111
  taxPercentage
112
+ taxPercentageDecimal
111
113
  requestDate
112
114
  price
113
115
  priceNet
@@ -364,6 +366,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
364
366
  value
365
367
  taxCode
366
368
  taxPercentage
369
+ taxPercentageDecimal
367
370
  quantity
368
371
  price
369
372
  totalPrice
@@ -423,6 +426,7 @@ fragment CartAddressFields on CartAddress {
423
426
 
424
427
  fragment CartTaxLevelFields on CartTaxLevel {
425
428
  taxPercentage
429
+ taxPercentageDecimal
426
430
  price
427
431
  discount
428
432
  }
@@ -101,6 +101,7 @@ fragment CartPaymentDataFields on CartPaymentData {
101
101
  priceMode
102
102
  tax
103
103
  taxPercentage
104
+ taxPercentageDecimal
104
105
  status
105
106
  statusDate
106
107
  }
@@ -108,6 +109,7 @@ fragment CartPaymentDataFields on CartPaymentData {
108
109
  fragment CartPostageDataFields on CartPostageData {
109
110
  method
110
111
  taxPercentage
112
+ taxPercentageDecimal
111
113
  requestDate
112
114
  price
113
115
  priceNet
@@ -364,6 +366,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
364
366
  value
365
367
  taxCode
366
368
  taxPercentage
369
+ taxPercentageDecimal
367
370
  quantity
368
371
  price
369
372
  totalPrice
@@ -423,6 +426,7 @@ fragment CartAddressFields on CartAddress {
423
426
 
424
427
  fragment CartTaxLevelFields on CartTaxLevel {
425
428
  taxPercentage
429
+ taxPercentageDecimal
426
430
  price
427
431
  discount
428
432
  }
@@ -101,6 +101,7 @@ fragment CartPaymentDataFields on CartPaymentData {
101
101
  priceMode
102
102
  tax
103
103
  taxPercentage
104
+ taxPercentageDecimal
104
105
  status
105
106
  statusDate
106
107
  }
@@ -108,6 +109,7 @@ fragment CartPaymentDataFields on CartPaymentData {
108
109
  fragment CartPostageDataFields on CartPostageData {
109
110
  method
110
111
  taxPercentage
112
+ taxPercentageDecimal
111
113
  requestDate
112
114
  price
113
115
  priceNet
@@ -364,6 +366,7 @@ fragment CartItemSurchargeFields on CartItemSurcharge {
364
366
  value
365
367
  taxCode
366
368
  taxPercentage
369
+ taxPercentageDecimal
367
370
  quantity
368
371
  price
369
372
  totalPrice
@@ -423,6 +426,7 @@ fragment CartAddressFields on CartAddress {
423
426
 
424
427
  fragment CartTaxLevelFields on CartTaxLevel {
425
428
  taxPercentage
429
+ taxPercentageDecimal
426
430
  price
427
431
  discount
428
432
  }